zhanghua
2024-03-12 a3b4eb017a0f948348ef7732267c7ed0d4bca8c0
src/views/operate/message/myIndex/index.vue
@@ -3,26 +3,30 @@
        <header>
            <div class="header-nav">
                <span class="nav-left">数据筛选</span>
                <span class="nav-right" @click="showMoreParamsDialog">高级搜索</span>
            </div>
            <div class="header-content">
                <div class="search">
                    <span>输入查询:</span>
                    <el-input placeholder="消息标题" v-model="context"></el-input>
                </div>
                <div class="message-status">
                <div class="search">
                    <span>消息状态:</span>
                    <el-select v-model="messageStatus" placeholder="请选择消息状态">
                        <el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value">
                        </el-option>
                    </el-select>
                </div>
                <div class="message-kind">
                <div class="search">
                    <span>消息分类:</span>
                    <el-select v-model="messageType" placeholder="请选择消息分类">
                        <el-option v-for="item in typeList" :key="item.id" :label="item.columnName" :value="item.id">
                        </el-option>
                    </el-select>
                </div>
                <div class="search">
                    <span>创建时间:</span>
                    <el-date-picker style="width: 200px" type="datetimerange" v-model="datetime"
                        value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
                </div>
                <div class="find">
                    <el-button type="primary" icon="el-icon-search" @click="handleSearch">查询</el-button>
@@ -34,13 +38,16 @@
            <div class="mainContent">
                <div class="main-nav">
                    <span>数据列表</span>
                    <el-button type="primary" icon="el-icon-plus" @click="dialogCreate = true">添加</el-button>
                    <el-button class="button-addition" type="primary" icon="el-icon-plus"
                        @click="handleOpera(null, 'create')">添加</el-button>
                </div>
                <!-- 数据展示 -->
                <el-table ref="multipleTable"
                    :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}"
                    :data="tableData" style="width: 100%" :row-class-name="tableRowClassName"
                    @selection-change="tableChange">
                <el-table
                    border
                    stripe
                    ref="multipleTable"
                    :header-cell-style="{  'background':'#F5F5F5', 'font-weight': '650', 'line-height': '45px' }" :data="tableData"
                    style="width: 100%" :row-class-name="tableRowClassName" @selection-change="tableChange">
                    <el-table-column type="selection" min-width="5">
                    </el-table-column>
                    <el-table-column label="ID" min-width="5">
@@ -48,28 +55,24 @@
                    </el-table-column>
                    <el-table-column prop="head" label="标题" min-width="10">
                    </el-table-column>
                    <el-table-column prop="updateTime" label="修改时间" min-width="10">
                        <template slot-scope="scope">
                            <span>{{changeTime(scope.row)}}</span>
                        </template>
                    <el-table-column prop="createTime" label="创建时间" min-width="10">
                    </el-table-column>
                    <el-table-column prop="targetFrom" label="发布人员" min-width="15">
                    </el-table-column>
                    <el-table-column prop="channelCode" label="消息分类" min-width="10">
                        <template slot-scope="scope">
                            <span>{{ getMessageType(scope.row.channelCode) }}</span>
                        </template>
                    <el-table-column prop="messageTypeName" label="消息栏目" min-width="10">
                    </el-table-column>
                    <el-table-column prop="status" label="发布状态" min-width="5">
                        <template slot-scope="scope">
                            {{scope.row.status === 0 ? '未发布' :'已发布'}}
                            {{ scope.row.status == 0 ? '未发布' : '已发布' }}
                        </template>
                    </el-table-column>
                    <el-table-column prop="operation" label="操作" min-width="15">
                        <template slot-scope="scope">
                            <div class="operation">
                                <el-link icon="el-icon-view" :underline="false" @click="handleView(scope.row)">查看</el-link>
                                <el-link icon="el-icon-edit" class="leftPx" :underline="false" @click="handleEdit(scope.row)">编辑</el-link>
                                <el-link icon="el-icon-view" :underline="false"
                                    @click="handleOpera(scope.row, 'view')">查看</el-link>
                                <el-link icon="el-icon-edit" class="leftPx" :underline="false"
                                    @click="handleOpera(scope.row, 'update')">编辑</el-link>
                                <el-link class="leftPx" icon="el-icon-delete-solid" :underline="false"
                                    @click="handleDelete([scope.row.id])">删除</el-link>
                            </div>
@@ -77,24 +80,15 @@
                    </el-table-column>
                </el-table>
                <!-- 新建消息 -->
                <el-dialog title="新建消息" :visible.sync="dialogCreate" width="80%"
                    :before-close="handleConfirmClose">
                    <MyEdit @closeMyDialog="closeDialog" :type="'create'" :myDataRow="null"></MyEdit>
                </el-dialog>
                <!-- 消息详情 -->
                <el-dialog title="消息详情" :visible.sync="dialogView" v-if="dialogView" width="45%"
                    :before-close="handleClose">
                    <MyView @closeDialog="closeDialog" :myDataRow="tableRowData">></MyView>
                </el-dialog>
                <!-- 编辑页面 -->
                <el-dialog title="编辑消息" :visible.sync="dialogEdit" width="80%"
                    :before-close="handleClose">
                    <MyEdit  @closeDialog="closeDialog" :myDataRow="tableRowData" :type="'update'"></MyEdit>
                <el-dialog :destroy-on-close="true" :key="dialogType" :title="getDialogTitle"
                    :visible.sync="isShowDialog" width="80%">
                    <my-edit v-if="isShowDialog" @closeMyDialog="closeDialog" :type="dialogType"
                        :myDataRow="tableRowData"></my-edit>
                </el-dialog>
                <!-- tools -->
                <div class="tools">
                    <div class="funs">
                        <div class="funsItem funs-sp">
                        <div class="funsItem funs-sp funs-first">
                            <el-checkbox v-model="all" @change="selectAll()">全选</el-checkbox>
                        </div>
                        <div class="funsItem funs-sp">
@@ -115,34 +109,39 @@
                    </div>
                </div>
            </div>
            <el-dialog
                title="高级参数"
                :visible.sync="isShowMoreParams"
                width="30%"
                :before-close="handleClose">
            </el-dialog>
        </main>
    </div>
</template>
<script>
import helper from '@/utils/mydate'
import MyView from './myview'
import MyEdit from './update'
import { deleteMessage, getMessageById, getMessageList } from "@/api/operate/messageManagement";
import {SUCCESS_CODE} from "@/utils";
export default {
    components: { MyView, MyEdit },
    computed: {
        getDialogTitle() {
            if (this.dialogType === 'create') {
                return '创建';
            }
            if (this.dialogType === 'update') {
                return '更新';
            }
            if (this.dialogType === 'view') {
                return '查看';
            }
        }
    },
    data() {
        return {
            tableData: [],
            tableRowData: null,
            isShowMoreParams: false,
            context: '',
            dialogEdit: false,
            dialogCreate: false,
            dialogView: false,
            context: null,
            isShowDialog: false,
            dialogType: false,
            totalNum: null,
            pageSize: 10,
            currentPage: 1,
@@ -150,20 +149,21 @@
            unsame: false,
            myIdx: 0,
            preMyIdx: 0,
            datetime: null,
            options: [
                {
                    value: 0,
                    label: '批量操作',
                    disabled: true,
                },
                {
                    value: 1,
                    label: '批量启用',
                },
                {
                    value: 2,
                    label: '批量禁用',
                },
                // {
                //     value: 1,
                //     label: '批量启用',
                // },
                // {
                //     value: 2,
                //     label: '批量禁用',
                // },
                {
                    value: 3,
                    label: '批量删除',
@@ -188,86 +188,83 @@
            ],
            typeList: [
                {
                    id:'00',
                    columnName:'全部',
                    id: '00',
                    columnName: '全部',
                },
                {
                    id:'01',
                    columnName:'站内信',
                    id: '01',
                    columnName: '站内信',
                },
                {
                    id:'02',
                    columnName:'邮件',
                    id: '03',
                    columnName: '邮件',
                },
                {
                    id:'03',
                    columnName:'短信',
                    id: '02',
                    columnName: '短信',
                }
            ]
        }
    },
    created() {
      this.getMessageList();
        this.getMessageList();
    },
    methods: {
        // 查询
        handleSearch(){
        handleSearch() {
            this.getMessageList();
        },
        // 重置
        handleReset(){
          this.messageStatus = 2;
          this.messageType = '00';
          this.context = '';
        handleReset() {
            this.messageStatus = 2;
            this.messageType = '00';
            this.context = '';
            this.getMessageList();
        },
        // 查看
        handleView(data){
        handleOpera(data, type) {
            this.tableRowData = data;
            this.dialogView = true;
        },
         // 编辑
        handleEdit(data){
            this.tableRowData = data;
            this.dialogEdit = true;
            this.dialogType = type;
            this.isShowDialog = true;
        },
        // 删除信息
        handleDelete(idarr) {
            this.$confirm('确认删除?')
                .then(() => {
                  deleteMessage(idarr)
                      .then(({ code, message }) => {
                        if (code === SUCCESS_CODE) {
                          this.getMessageList();
                          this.$message({ type: 'success', message });
                        } else {
                          this.$message({ type: 'error', message });
                        }
                      })
                      .catch(err => { this.$message({ type: 'error', message: err }) });
                    deleteMessage({ ids: idarr.join(',') })
                        .then(() => {
                            this.getMessageList();
                            this.$message.success('操作成功');
                        })
                        .catch(err => { this.$message({ type: 'error', message: err }) });
                })
        },
        // 获取消息数据
        getMessageList() {
          const messageParam = {
            current: this.currentPage,
            size: this.pageSize,
            channelCode: this.messageType,
            status: this.messageStatus,
            head: this.context
          }
          getMessageList(messageParam)
              .then(({ data }) => {
                this.tableData = [];
              })
              .catch(err => {
                this.$message({ type: 'error', message: err });
              });
            const messageParam = {
                current: this.currentPage,
                pageSize: this.pageSize,
                channelCode: this.messageType === '00' ? null : this.messageType,
                status: this.messageStatus === 2 ? null : this.messageStatus,
                head: this.context,
                startTime: this.datetime ? this.datetime[0] : null,
                endTime: this.datetime ? this.datetime[1] : null
            }
            getMessageList(messageParam)
                .then(({ records, total, size }) => {
                    this.tableData = records;
                    this.totalNum = total;
                    this.pageSize = size;
                })
                .catch(err => {
                    this.$message({ type: 'error', message: err });
                });
        },
        // 批量下拉框操作
@@ -314,7 +311,7 @@
                            }
                        })
                })
                .catch(err => {  })
                .catch(err => { })
        },
        // 表格监听
@@ -325,12 +322,6 @@
            })
            this.all = list.length === this.tableData.length;
        },
        // 修改时间格式
        changeTime({ updateTime }) {
            return helper(updateTime);
        },
        // 全选
        selectAll() {
            this.$refs.multipleTable.toggleAllSelection();
@@ -358,37 +349,10 @@
            this.getMessageList();
        },
        showMoreParamsDialog() {
          this.isShowMoreParams = true;
        },
        // 关闭弹窗
        handleClose(done) {
            done();
        },
        // 确认关闭弹窗
        handleConfirmClose(done) {
            this.$confirm('确认关闭?')
                .then(_ => {
                    done();
                })
                .catch(err => {
                })
        },
        // 自定义关闭弹窗
        closeDialog({ flag, index }) {
            this.dialogCreate = flag;
            this.dialogView = flag;
            if (index === 1) {
                this.getMessageList();
            }
        },
        getMessageType(id) {
          const result = this.typeList.find(item => item.id === id);
          return result.columnName;
        closeDialog() {
            this.isShowDialog = false;
            this.getMessageList();
        }
    }
}
@@ -396,32 +360,31 @@
<style lang="scss" scoped>
.userList {
    text-align: left;
    margin: 10px 20px;
    color: #4b9bb7;
    padding: 10px 20px;
    color: #606266;
  border: 1px solid #ccc;
    header {
        background-color: #09152f;
        background-color: white;
        .header-nav {
            line-height: 40px;
            padding: 0 30px;
            //padding: 0 30px;
            display: flex;
            justify-content: space-between;
            font-weight: 650;
        }
        .header-content {
            padding: 0 40px;
            padding: 0;
            display: flex;
            line-height: 100px;
            justify-content: space-between;
            align-items: center;
            .search,
            .message-status,
            .message-kind {
          flex-wrap: wrap;
            .search {
                display: flex;
                justify-content: flex-start;
                justify-content: space-between;
                align-items: center;
                span {
                    flex: 1;
@@ -432,8 +395,8 @@
                    color: #1d3f57;
                    &::v-deep .el-input__inner {
                        background-color: #09152f;
                        border: 1px solid #17324c;
                        //background-color: #09152f;
                        //border: 1px solid #17324c;
                    }
                }
@@ -455,7 +418,7 @@
    }
    main {
        background-color: #09152f;
        background-color: white;
        margin-top: 20px;
        padding-bottom: 50px;
@@ -482,20 +445,22 @@
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0 20px;
            //padding: 0 20px;
            .funs {
                display: flex;
                .funs-first{
                  margin-left: 0!important;
                }
                .funs-sp {
                    border: 1px solid #17324c;
                  //border: 1px solid #DCDFE6;
                }
                .funsItem {
                    line-height: 28px;
                    display: flex;
                    align-items: center;
                  border: 1px solid #DCDFE6;
                    border-radius: 4px;
                    font-size: 12px;
                    margin-left: 10px;
@@ -511,7 +476,7 @@
                    &::v-deep .el-input__inner {
                        border: none;
                        background-color: #09152f;
                        //background-color: #09152f;
                    }
                    &:hover {
@@ -531,29 +496,29 @@
                line-height: 50px;
                justify-content: center;
                .el-pagination {
                    &::v-deep li,
                    &::v-deep .btn-prev,
                    &::v-deep .btn-next {
                        background-color: #071f39;
                        color: #4b9bb7;
                    }
                    &::v-deep .active {
                        background-color: #409eff;
                        color: #fff;
                    }
                }
                //.el-pagination {
                //
                //    &::v-deep li,
                //    &::v-deep .btn-prev,
                //    &::v-deep .btn-next {
                //        background-color: #071f39;
                //        color: #4b9bb7;
                //    }
                //
                //    &::v-deep .active {
                //        background-color: #409eff;
                //        color: #fff;
                //    }
                //}
            }
        }
        .el-table {
            color: #4b9bb7;
            font-size: 10px;
            // color: #606266;
            // font-size: 10px;
            &::v-deep .el-table__empty-block {
                background-color: #09152f;
                //background-color: #09152f;
            }
            &::v-deep .el-table__empty-block {
@@ -566,7 +531,7 @@
                .line {
                    padding: 0 5px;
                }
                color: var(--operation-color);
                span:hover {
                    cursor: pointer;
                }
@@ -574,11 +539,11 @@
        }
        .el-table::v-deep .warning-row {
            background: #06122c;
            //background: #06122c;
        }
        .el-table::v-deep .success-row {
            background: #071f39;
            //background: #071f39;
        }
        &::v-deep .switchStyle .el-switch__label {
@@ -613,7 +578,7 @@
    &::v-deep .el-dialog__header,
    &::v-deep .el-dialog__body {
        background-color: #06122c;
        //background-color: #06122c;
    }
    &::v-deep .el-dialog__header {
@@ -625,17 +590,20 @@
    }
    &::v-deep .el-dialog__title {
        color: #4b9bb7;
        color: #606266;
    }
    &::v-deep .el-dialog__close {
        width: 20px;
        height: 20px;
        // color: #fff;
    }
    &::v-deep .el-dialog__body {
        padding: 0;
    }
    :deep(.el-range-input) {
        //background-color: #09152f;
    }
}
</style>
</style>