zhanghua
2022-10-26 c889c9e4792506e0a7f457560c0d4110645fae93
Merge branch 'master' of http://42.193.1.25:9521/r/sccg_ui
7个文件已修改
3个文件已添加
13076 ■■■■■ 已修改文件
package-lock.json 11757 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/operate/management.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/detail/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/filePictrue/index.vue 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/createUser/index.vue 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/index.vue 626 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/updateUser/index.vue 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/viewRole/index.vue 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/management/message/index.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/management/myIndex/index.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
Diff too large
src/api/operate/management.js
@@ -6,7 +6,7 @@
}
export default {
    // 获取短信审核列表
    getMessageList: (data) => axios({
    getMessageAuditList: (data) => axios({
        method: 'post',
        url: baseUrl+'/list',
        headers:{...token},
src/components/detail/index.vue
@@ -125,7 +125,7 @@
            <div class="show-item">
                <div class="show-wrap">
                    <MyProcess v-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess>
                    <MyFilePicture v-else-if="activeIndex === 2" :filesPictureVo="filesPictureVo" ></MyFilePicture>
                    <MyFilePicture v-else-if="activeIndex === 2" :filesPictureVo="filesPictureVo" :mycode='mycode'></MyFilePicture>
                    <MySovleProblem v-else-if="activeIndex === 3" :baseCase="baseCase" :handlePassVo="handlePassVo"></MySovleProblem>
                    <MyScene v-else :currentSitVo="currentSitVo" :baseCase="baseCase"></MyScene>
                </div>
@@ -189,7 +189,7 @@
            this.activeIndex = index;
        },
    },
    props: ['info']
    props: ['info','mycode']
}
</script>
<style lang="scss" scoped>
src/components/filePictrue/index.vue
@@ -2,50 +2,51 @@
    <div class="file-picture">
        <div class="file-tell">
            <div class="tell-title">上报</div>
            <div class="tell-show">
                <div class="my-demo">
                    <!-- <img src="https://axure-file.lanhuapp.com/90466432-c999-4bf0-80b8-ee3f96a2099e__ef98ada722c616eccb097d1352880862.svg"
                            alt=""> -->
                    <img class="img" :src="imgSource[0].url" alt="">
                    <div class="tip">
                        <div>【图片类型】上报</div>
                        <div>【上报时间】2022-09-08 14:23:34</div>
            <div class="tell-show" v-for="item in imgSource" :key="item.id">
                <div v-if="item.type == '01'" style="display:flex">
                    <div class="my-demo" v-for="childer in item.url">
                        <img class="img" :src="childer" alt="">
                        <div class="tip">
                            <!-- <div>【图片类型】上报</div> -->
                            <div>【上传时间】{{ changeTime(item.createTime) }}</div>
                        </div>
                    </div>
                </div>
                <img src="https://axure-file.lanhuapp.com/90466432-c999-4bf0-80b8-ee3f96a2099e__ef98ada722c616eccb097d1352880862.svg"
                    alt="">
            </div>
        </div>
        <div class="file-deal">
            <div class="tell-title">处置</div>
            <div class="tell-show">
                <div class="my-demo">
                    <!-- <img src="https://axure-file.lanhuapp.com/90466432-c999-4bf0-80b8-ee3f96a2099e__ef98ada722c616eccb097d1352880862.svg"
                        alt=""> -->
                    <img class="img" :src="imgSource[1].url" alt="">
                    <div class="tip">
                        <div>【图片类型】处置</div>
                        <div>【上报时间】2022-09-08 14:23:34</div>
            <div class="tell-show" v-for="item in imgSource" :key="item.id">
                <div v-if="item.type == '02'" style="display:flex">
                    <div class="my-demo" v-for="childer in item.url">
                        <img class="img" :src="childer" alt="">
                        <div class="tip">
                            <!-- <div>【图片类型】处置</div> -->
                            <div>【上传时间】{{ changeTime(item.createTime) }}</div>
                        </div>
                    </div>
                </div>
                <img src="https://axure-file.lanhuapp.com/90466432-c999-4bf0-80b8-ee3f96a2099e__ef98ada722c616eccb097d1352880862.svg"
                    alt="">
                <!-- <img src="https://axure-file.lanhuapp.com/90466432-c999-4bf0-80b8-ee3f96a2099e__ef98ada722c616eccb097d1352880862.svg"
                    alt=""> -->
            </div>
        </div>
    </div>
</template>
<script>
import { parseTime } from "@/utils/index"
export default {
    data() {
        return {
            imgSource: []
        }
    },
    props: ['filesPictureVo'],
    props: ['filesPictureVo', 'mycode'],
    created() {
        console.log(this.filesPictureVo);
        const { filesPictureVo: { imageResources: mysource } } = this;
        this.imgSource = mysource;
        // this.imgSource =this.filesPictureVo
        const { filesPictureVo: { imageResources: imgList } } = this
        // this.createTime=this.filesPictureVo.imageResources[0].createTime;
        // console.log(this.imgSource);
        this.getEventInfo(this.mycode);
    },
    methods: {
        // 获取token
@@ -55,7 +56,28 @@
            if (token && tokenHead) {
                return { Authorization: tokenHead + token };
            }
        }
        },
        changeTime(time) {
            if (time) {
                return parseTime(time)
            }
        },
        getEventInfo(mycode) {
            this.$axios({
                method: 'get',
                url: `sccg/base_case/baseCaseDetail/${mycode}`
            })
                .then(res => {
                    console.log(res);
                    this.info = res.data;
                    this.dialogView = true;
                    let pic = res.data.filesPictureVo.imageResources;
                    pic.forEach(item => {
                        item.url = item.url.split(',')
                    })
                    this.imgSource = pic;
                })
        },
    }
}
</script>
src/views/operate/car/createUser/index.vue
New file
@@ -0,0 +1,190 @@
<template>
    <div class="createUser">
        <main>
            <div class="mainContent">
                <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules"
                    label-position="right">
                    <!-- 角色名称 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 角色类型 -->
                    <el-form-item class="optionItems" label="角色类型:" prop="status">
                        <el-input v-model="role.type" placeholder="请选择角色类型"></el-input>
                        <!-- <el-select v-model="role.type" placeholder="请选择角色类型">
                            <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"
                                :disabled="item.disabled">
                            </el-option>
                        </el-select> -->
                    </el-form-item>
                    <!-- 角色描述 -->
                    <el-form-item class="optionItem" label="角色描述:" prop="description">
                        <el-input type="textarea" v-model="role.description" placeholder="请输入描述内容200字以内"></el-input>
                    </el-form-item>
                    <el-form-item>
                        <div class="optionBtn">
                            <el-button class="btn cancel" @click="handleStop">取消</el-button>
                            <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">提交
                            </el-button>
                        </div>
                    </el-form-item>
                </el-form>
            </div>
        </main>
    </div>
</template>
<script>
export default {
    data() {
        const validateNickname = (rule, value, callback) => {
            if (!value) {
                callback(new Error("请填写角色名称"));
            } else {
                callback();
            }
        };
        const validatePass = (rule, value, callback) => {
            if (!value) {
                callback();
            } else {
                // const rep = /^\w+$/;
                // if (!rep.test(value)) {
                //     callback(new Error("密码只能是以数字、26个英文字母或者下划线组成的字符串"));
                // }
                callback();
            }
        };
        const validateTruename = (rule, value, callback) => {
            if (value) {
                callback();
            } else {
                // const rep = /^[\u4E00-\u9FA5]{2,4}$/;
                // if (!rep.test(value)) {
                //     callback("请输入正确的用户姓名");
                // }
                callback();
            }
        };
        return {
            role: {
                name: '',
                type: '',
                description: '',
            },
            createRoleRules: {
                name: [
                    { required: true, trigger: "blur", validator: validateNickname },
                ],
                type: [
                    { required: false, trigger: "blur", validator: validatePass },
                ],
                description: [
                    { required: false, trigger: "blur", validator: validateTruename },
                ],
            },
        }
    },
    created() {
        const that = this;
        // 获取角色列表
        // this.$axios.get('')
        // 获取用户类型列表
        // this.$axios.get('sccg/admin/list',{userType:0}).then(res=>{
        //     console.log(res);
        // })
        // 获取全部部门列表
        // this.$axios.get('sccg/depart/page').then(res => {
        //     that.typeList = res.data.records;
        // })
    },
    methods: {
        handleUser() {
            this.$refs['user'].validate((valid) => {
                console.log(valid);
                if (valid) {
                    const { role } = this;
                    console.log(role);
                    this.$axios.post('sccg/role/create', {
                        description: role.description, name: role.name, type: role.type
                    }).then(res => {
                        if (res.code === 200) {
                            this.refresh();
                        }
                    })
                } else {
                    return false;
                }
            })
        },
        handleStop(){
            this.refresh();
        }
    },
    props: ['refresh']
}
</script>
<style lang="scss" scoped>
.createUser {
    border-radius: 1px;
    background-color: #09152f;
    main {
        text-align: left;
        padding: 0 55px;
        background-color: #09152f;
        padding-bottom: 50px;
        .mainContent {
            display: flex;
            justify-content: center;
            padding-top: 50px;
            &::v-deep .el-form-item__label {
                color: #4b9bb7;
            }
            &::v-deep .el-input__inner {
                background-color: #09152f;
                border: 1px solid #17324c;
            }
            &::v-deep .el-textarea__inner {
                background-color: #09152f;
                border: 1px solid #17324c;
            }
            .el-form-item__content {
                width: 400px;
                .el-select {
                    width: 100%;
                }
            }
            .optionHandleSp {
                display: flex;
                .areaNumber,
                .moreNumber {
                    flex: 1;
                }
                .telNumber {
                    flex: 2;
                }
            }
            .optionBtn {
                display: flex;
                margin-top: 20px;
                .btn {
                    padding: 12px 50px;
                }
            }
        }
    }
}
</style>
src/views/operate/car/index.vue
@@ -1,3 +1,625 @@
<template>
<router-view></router-view>
</template>
    <div class="userList">
        <header>
            <div class="headerContent">
                <div class="search">
                    <span>筛选条件:</span>
                    <el-input placeholder="请输入内容" v-model="context"></el-input>
                    <div class="findBtn">
                        <el-button type="primary" @click="search">查询</el-button>
                    </div>
                </div>
                <div class="addUser">
                    <el-button class="addBtn" type="primary" @click="dialogCreate = true">新建角色</el-button>
                    <el-dialog :visible.sync="dialogCreate" title="新增角色" width="45%" v-if="dialogCreate"
                        :before-close="handleClose">
                        <createUser :refresh="context==='' ? getUserList : search" />
                    </el-dialog>
                </div>
            </div>
        </header>
        <main>
            <div class="mainContent">
                <div class="type-nav">
                    <div @click="changeTypeChecked(index)" v-for="(item,index) in typeList" :key="item.name"
                        :class="[item.checked ? 'is-active':'','type-item']">{{item.name}}</div>
                </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-column type="selection" min-width="5">
                    </el-table-column>
                    <!-- <el-table-column label="用户ID" min-width="5">
                        <template slot-scope="scope">{{ scope.row.id }}</template>
                    </el-table-column> -->
                    <el-table-column prop="name" label="车牌号" min-width="10">
                    </el-table-column>
                    <el-table-column prop="sort" label="车主姓名" min-width="10">
                    </el-table-column>
                    <el-table-column prop="adminCount" label="默认角色" min-width="10">
                    </el-table-column>
                    <el-table-column prop="description" label="备注" min-width="10">
                    </el-table-column>
                    <el-table-column prop="status" label="启用" min-width="5">
                        <template slot-scope="scope">
                            <el-switch class="switchStyle" v-model="scope.row.status" active-text="开" inactive-text="关"
                                active-color="#3fef9a" inactive-color="#000212" @change="handleChangeStatus(scope.row)">
                            </el-switch>
                        </template>
                    </el-table-column>
                    <el-table-column prop="operation" label="操作" min-width="15">
                        <template slot-scope="scope">
                            <div class="operation">
                                <!-- <span @click="handleChangeRole(scope.row)">修改角色</span> -->
                                <span @click="handleFind(scope.row)">查看</span>
                                <span class="line">|</span>
                                <!-- <span>修改密码</span> -->
                                <!-- <span>删除</span> -->
                                <span @click="handleUpdate(scope.row)">权限设置</span>
                                <span class="line">|</span>
                                <span @click="handleStop(scope.row)">停用</span>
                                <span class="line">|</span>
                                <span @click="handleDelete([scope.row.id])">删除</span>
                            </div>
                        </template>
                    </el-table-column>
                </el-table>
                <!-- 修改页面 -->
                <el-dialog :visible.sync="dialogUpdate" width="45%" :title="updateFlag ? '权限设置' :'查看角色信息'"
                    v-if="dialogUpdate" :before-close="handleClose">
                    <updateUser :updateFlag="updateFlag" :userInfo=userInfo
                        :getUserList=" context ? getUserList : getUserList" @changeDialog="changeDialog" />
                </el-dialog>
                <!-- 查看页面 -->
                <el-dialog :visible.sync="dialogView" width="45%" title="查看角色信息"
                    v-if="dialogView" :before-close="handleClose">
                    <MyView :userInfo=userInfo @changeDialog="changeDialog" />
                </el-dialog>
                <!-- tools -->
                <div class="tools">
                    <div class="funs">
                        <div class="funsItem">
                            <el-checkbox v-model="all" @change="selectAll()">全选</el-checkbox>
                        </div>
                        <div class="funsItem">
                            <el-checkbox v-model="unsame" @change="disSame(tableData)">反选</el-checkbox>
                        </div>
                        <div class="funsItem">
                            <el-select v-model="myIdx" placeholder="批量操作" @change="selectChange">
                                <el-option v-for="item in options" :key="item.value" :label="item.label"
                                    :value="item.value" :disabled="item.disabled">
                                </el-option>
                            </el-select>
                        </div>
                    </div>
                    <div class="pagination">
                        <el-pagination background :current-page="currentPage" layout="prev, pager, next"
                            :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage"
                            @prev-click="handlePrev" @next-click="handleNext">
                        </el-pagination>
                    </div>
                </div>
            </div>
        </main>
    </div>
</template>
<script>
import createUser from "./createUser"
import updateUser from "./updateUser"
import helper from "@/utils/mydate.js"
import MyView from './viewRole'
export default {
    components: {
        createUser, updateUser,MyView
    },
    data() {
        return {
            tableData: [],
            context: "",
            dialogCreate: false,
            dialogUpdate: false,
            dialogView:false,
            updateFlag: false,
            userInfo: '',
            totalNum: null,
            pageSize: 10,
            currentPage: 1,
            all: false,
            unsame: false,
            myIdx: 0,
            preMyIdx: 0,
            options: [
                {
                    value: 0,
                    label: '批量操作',
                    disabled: true,
                },
                {
                    value: 1,
                    label: '批量启用',
                },
                {
                    value: 2,
                    label: '批量禁用',
                },
                {
                    value: 3,
                    label: '批量删除',
                }
            ],
            tempList: [],
            typeList: [
                {
                    name: '违规',
                    value: 1,
                    checked: true
                },
                {
                    name: '违建',
                    value: 2,
                    checked: false,
                },
            ],
        }
    },
    created() {
        this.getUserList();
    },
    methods: {
        async selectChange(list) {
            console.log(this.tempList);
            if (this.tempList.length !== 0) {
                this.preMyIdx = list;
                if (list === 3) {
                    await this.handleDelete(this.tempList);
                } else if (list === 2) {
                    await this.mulUpdateStatus(this.tempList, 0);
                } else {
                    await this.mulUpdateStatus(this.tempList, 1);
                }
                this.myIdx = 0;
            } else {
                this.myIdx = this.preMyIdx;
                this.$message({
                    type: 'warning',
                    message: '您还没选中任何数据',
                })
            }
        },
        mulUpdateStatus(idArr, flag) {
            this.$confirm(flag === 1 ? "您确定要进行批量启用角色吗?" : '您确定要进行批量禁用角色吗?')
                .then(_ => {
                    this.$axios({
                        method: 'post',
                        url: 'sccg/role/updateStatusBatch?ids=' + idArr + '&status=' + flag,
                    })
                        .then(res => {
                            if (res.code === 200) {
                                this.$message({
                                    type: 'success',
                                    message: '更改用户状态成功',
                                })
                                this.getUserList();
                            } else {
                                this.$message({
                                    type: 'error',
                                    message: res.message
                                })
                            }
                            console.log(res);
                        })
                })
                .catch(err => { console.log(err) })
        },
        tableChange(list) {
            this.tempList = [];
            list.forEach(item => {
                this.tempList.push(item.id);
            })
            if (list.length === this.tableData.length) {
                this.all = true;
            } else {
                this.all = false
            }
        },
        changeTime({ createTime }) {
            return helper(createTime);
        },
        selectAll() {
            this.$refs.multipleTable.toggleAllSelection();
        },
        disSame(list) {
            list.forEach(row => {
                this.$refs.multipleTable.toggleRowSelection(row)
            })
        },
        handleDelete(id) {
            const that = this;
            // let arr = [];
            // arr.push(id);
            this.$confirm('确认删除?')
                .then(_ => {
                    that.$axios({
                        method: 'post',
                        url: 'sccg/role/delete?ids=' + id,
                    })
                        .then(res => {
                            this.myIdx = 0;
                            this.preMyIdx = 0;
                            console.log(res);
                            this.$message({
                                type: 'success',
                                message: res.message
                            })
                            this.getUserList();
                        })
                })
                .catch(_ => { });
        },
        // 修改角色
        handleChangeRole(obj) {
            this.dialogUpdate = true
            this.user = obj;
            // console.log(obj)
        },
        // 修改用户状态
        handleChangeStatus(obj) {
            let { id, status } = obj;
            status == true ? status = 1 : status = 0;
            console.log(id, status);
            this.$axios.post(`/sccg/role/updateStatus/` + id + '?status=' + status).then(res => {
                console.log(res);
            })
        },
        handleStop(obj) {
            // let { id, status } = obj;
            // status == true ? status = 1 : status = 0;
            // console.log(id, status);
            // this.$axios.post(`/sccg/role/updateStatus/` + id + '?status=' + status).then(res => {
            //     this.getUserList();
            // })
        },
        // 获取用户列表
        getUserList() {
            const that = this;
            this.dialogCreate = false;
            // 获取所有用户信息
            this.$axios.get('sccg/role/listAll').then(res => {
                this.totalNum = res.data.length;
                this.search();
            })
        },
        search() {
            const that = this;
            const { currentPage, pageSize, context } = this;
            this.dialogCreate = false;
            // 获取所有用户信息
            if (context == '') {
                this.$axios.get('sccg/role/list?keyword=' + '&pageNum=' + currentPage + '&pageSize=' + pageSize).then(res => {
                    if (res.code === 200) {
                        console.log(res);
                        res.data.list.forEach(item => {
                            // item.createTime = helper(item.createTime);
                            item.status == 1 ? item.status = true : item.status = false;
                        })
                        that.tableData = res.data.list;
                        this.totalNum = res.data.list.length;
                    }
                })
            } else {
                this.$axios({
                    method: 'get',
                    url: 'sccg/role/list?keyword=' + context + '&pageNum=' + currentPage + '&pageSize=' + pageSize,
                }).then(res => {
                    if (res.code === 200) {
                        res.data.list.forEach(item => {
                            item.status == 1 ? item.status = true : item.status = false;
                        })
                        that.tableData = res.data.list
                        this.totalNum = res.data.list.length;
                    }
                })
            }
        },
        // 设置表格斑马纹
        tableRowClassName({ row, rowIndex }) {
            if ((rowIndex + 1) % 2 == 0) {
                return 'warning-row';
            } else {
                return 'success-row';
            }
            return '';
        },
        // 查看用户信息(不可修改)
        handleFind(rowData) {
            this.dialogView = true;
            this.userInfo = rowData;
        },
        // 修改用户部门信息
        handleUpdate(rowData) {
            this.dialogUpdate = true;
            this.updateFlag = true;
            this.userInfo = rowData
        },
        // 当前页改变触发事件
        changeCurrentPage(page) {
            this.currentPage = page;
            this.search();
        },
        // 上一页点击事件
        handlePrev(page) {
            this.currentPage = page;
            this.search();
        },
        // 下一页点击事件
        handleNext(page) {
            this.currentPage = page;
            this.search();
        },
        changeDialog({flag}) {
            this.dialogUpdate = flag;
            this.dialogCreate = flag;
            this.dialogView = flag;
        },
        handleClose(done) {
            this.$confirm('确认关闭?')
                .then(_ => {
                    this.dialogUpdate = false;
                    this.dialogCreate = false;
                    done();
                })
                .catch(_ => { });
        }
    }
}
</script>
<style lang="scss" scoped>
.userList {
    text-align: left;
    margin: 10px 20px;
    color: #4b9bb7;
    header {
        background-color: #09152f;
        border: 1pox solid #fff;
        .headerContent {
            padding: 0 40px;
            display: flex;
            line-height: 100px;
            justify-content: space-between;
            align-items: center;
            .search {
                display: flex;
                justify-content: flex-start;
                span {
                    flex: 1;
                }
                .el-input {
                    flex: 2;
                    color: #1d3f57;
                    &::v-deep .el-input__inner {
                        background-color: #09152f;
                        border: 1px solid #17324c;
                    }
                }
            }
            .findBtn {
                line-height: 100px;
                margin-left: 15px;
                display: flex;
                align-items: center;
                margin-top: -2px;
                .el-button {
                    padding: 12px 25px;
                    border-radius: 20px;
                }
            }
            .addBtn {
                background-color: #eb5d01;
                border: none;
                border-radius: 20px;
                padding: 12px 30px;
            }
        }
    }
    main {
        background-color: #09152f;
        margin-top: 20px;
        padding-bottom: 50px;
        border: 1pox solid #fff;
        .type-nav {
            display: flex;
            line-height: 40px;
            margin-left: 30px;
            padding-top: 10px;
            margin-bottom: 10px;
            .type-item {
                width: 80px;
                text-align: center;
                &:hover {
                    cursor: pointer;
                }
            }
            .is-active {
                background-color: #070f22;
                border-radius: 4px;
                color: #fff;
            }
        }
        .mainTitle {
            line-height: 60px;
        }
        .tools {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0 20px;
            .funs {
                display: flex;
                .funsItem {
                    line-height: 28px;
                    display: flex;
                    align-items: center;
                    border: 1px solid #17324c;
                    border-radius: 4px;
                    font-size: 12px;
                    margin-left: 10px;
                    .el-checkbox {
                        width: 80px;
                        padding: 0 10px;
                    }
                    .el-select {
                        width: 120px;
                    }
                    &::v-deep .el-input__inner {
                        border: none;
                        background-color: #09152f;
                    }
                    &:hover {
                        border: 1px solid #4b9bb7;
                    }
                    &:hover .el-checkbox {
                        color: #4b9bb7;
                    }
                }
            }
            .pagination {
                margin-top: 50px;
                display: flex;
                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-table {
            color: #4b9bb7;
            font-size: 10px;
            &::v-deep .el-table__empty-block {
                background-color: #09152f;
            }
            &::v-deep .el-table__empty-block {
                color: #4b9bb7;
            }
            .operation {
                display: flex;
                .line {
                    padding: 0 5px;
                }
                span:hover {
                    cursor: pointer;
                }
            }
        }
        .el-table::v-deep .warning-row {
            background: #06122c;
        }
        .el-table::v-deep .success-row {
            background: #071f39;
        }
        &::v-deep .switchStyle .el-switch__label {
            position: absolute;
            display: none;
            color: #fff;
        }
        &::v-deep .el-switch__core {
            background-color: rgba(166, 166, 166, 1);
        }
        &::v-deep .switchStyle .el-switch__label--left {
            z-index: 9;
            left: 20px;
        }
        &::v-deep .switchStyle .el-switch__label--right {
            z-index: 9;
            left: 4px;
        }
        &::v-deep .switchStyle .el-switch__label.is-active {
            display: block;
        }
        &::v-deep .switchStyle.el-switch .el-switch__core,
        &::v-deep .el-switch .el-switch__label {
            width: 50px !important;
        }
    }
    &::v-deep .el-dialog__header,
    &::v-deep .el-dialog__body {
        background-color: #06122c;
    }
    &::v-deep .el-dialog__header {
        display: flex;
        align-items: center;
        background-color: #fff;
        padding: 20px;
        line-height: 60px;
    }
    &::v-deep .el-dialog__title {
        color: #4b9bb7;
    }
    &::v-deep .el-dialog__close {
        width: 20px;
        height: 20px;
        // color: #fff;
    }
    &::v-deep .el-dialog__body {
        padding: 0;
    }
}
</style>
src/views/operate/car/updateUser/index.vue
New file
@@ -0,0 +1,209 @@
<template>
    <div class="updateUser">
        <main>
            <div class="mainContent">
                <div class="my-tree">
                    <div class="my-tree__wrap">
                        <el-tree ref="tree" :data="roleList" :props="defaultProps"  show-checkbox
                            @check="handleCheck" :default-checked-keys="checkedIds" default-expand-all node-key="id">
                        </el-tree>
                    </div>
                    <div class="my-tree__bottom"></div>
                    <div class="my-tree__right"></div>
                </div>
                <div class="selection">
                    <el-button class="cancel" @click="resetRole">取消</el-button>
                    <el-button class="save" @click="saveRole">保存</el-button>
                </div>
            </div>
        </main>
    </div>
</template>
<script>
export default {
    data() {
        return {
            role: {
                name: '',
                sort: '',
                description: '',
            },
            roleList: [],
            defaultProps: {
                children: 'children',
                label: 'title'
            },
            treeLabel: '',
            treeId: 23,
            checkedIds: [],
            resCheckedIds: [],
        }
    },
    created() {
        const that = this;
        this.getRoleMenus(this.userInfo.id);
        this.getMenuList();
    },
    methods: {
        handleUser() {
            this.$refs.user.validate((valid) => {
                if (valid) {
                    const { role } = this;
                    console.log(role);
                    this.$axios.post('/sccg/role/update/' + role.id, {
                        id: role.id,
                        status: role.status,
                        description: role.description,
                        name: role.name,
                        sort: 0
                    }).then(res => {
                        this.$emit('changeDialog', { dialogUpdate: false });
                        this.getUserList();
                    })
                } else {
                    return false;
                }
            })
        },
        // 获取系统菜单
        getMenuList() {
            this.$axios({
                method: 'get',
                url: 'sccg/menu/treeList',
            })
                .then(res => {
                    this.roleList = res.data;
                })
        },
        // 点击树节点
        handleNodeClick({ title, id }) {
            // console.log(obj);
            this.role.sort = title;
            this.treeLabel = title;
            this.treeId = id;
        },
        // 树形控件复选框点击事件
        handleCheck(data, checked) {
            console.log(checked.checkedKeys);
            this.checkedIds = checked.checkedKeys;
            console.log(this.checkedIds);
        },
        // 保存role
        saveRole() {
            this.resCheckedIds = [];
            const {userInfo} = this;
            this.resCheckedIds = this.checkedIds;
            this.$axios({
                method:'post',
                url:'sccg/role/allocMenu?roleId='+userInfo.id + '&menuIds=' + this.checkedIds,
            })
            .then(res=>{
                if(res.code === 200){
                    this.$message({
                        type:'success',
                        message:'修改角色权限成功',
                    })
                    this.getRoleMenus(userInfo.id);
                }else{
                    this.$message({
                        type:'warning',
                        message:res.message
                    })
                }
            })
            // this.$emit('changeDialog',{dialogUpdate:false});
        },
        // 消除role
        resetRole() {
            this.resCheckedIds = [];
            this.$emit('changeDialog',{dialogUpdate:false});
        },
        // 获取角色菜单
        getRoleMenus(roleId){
            this.$axios({
                method:'get',
                url:`sccg/role/listMenu/${roleId}`
            })
            .then(res=>{
                this.checkedIds = [];
                res.data.forEach(item=>{
                    this.checkedIds.push(item.id);
                })
            })
        }
    },
    props: ['userInfo', 'updateFlag', 'getUserList', 'changeDialog']
}
</script>
<style lang="scss" scoped>
.updateUser {
    border-radius: 1px;
    background-color: #09152f;
    main {
        text-align: left;
        padding: 50px 55px;
        background-color: #09152f;
        .mainContent {
            .my-tree {
                height: 200px;
                overflow: hidden;
                background-color: #17324c;
                position: relative;
                border-radius: 4px;
                .my-tree__wrap{
                    overflow: scroll;
                    height: 200px;
                }
                .my-tree__bottom{
                    position: absolute;
                    left: 0px;
                    bottom: 0px;
                    background-color: #09152f;
                    width: 100%;
                    height: 20px;
                    border-bottom-left-radius: 4px;
                }
                .my-tree__right{
                    position: absolute;
                    right: 0px;
                    top: 0px;
                    background-color: #09152f;
                    width: 20px;
                    height: 100%;
                }
            }
        }
    }
    &::v-deep .el-textarea__inner {
        background-color: #09152f;
        border: 1px solid #17324c;
    }
    ::v-deep .el-input__inner {
        background-color: #09152f;
        border: 1px solid #17324c;
    }
}
.selection {
    margin-top: 10px;
    display: flex;
    justify-content: space-between;
    .el-button {
        padding: 10px 20px;
        border-radius: 4px;
    }
    .save {
        background-color: #409eff;
        color: #fff;
    }
    .cancel {
        background-color: #09152f;
        color: #4b9bb7;
    }
}
</style>
src/views/operate/car/viewRole/index.vue
New file
@@ -0,0 +1,107 @@
<template>
    <div class="createUser">
        <main>
            <div class="mainContent">
                <el-form ref="user" label-width="140px" autoComplete="on" :model="role" :rules="createRoleRules"
                    label-position="right">
                    <!-- 角色名称 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称" disabled></el-input>
                    </el-form-item>
                    <!-- 角色描述 -->
                    <el-form-item class="optionItem" label="角色描述:" prop="description">
                        <el-input type="textarea" v-model="role.description" placeholder="请输入描述内容200字以内" disabled></el-input>
                    </el-form-item>
                </el-form>
            </div>
        </main>
    </div>
</template>
<script>
export default {
    data() {
        return {
            role: {
                name: '',
                type: '',
                description: '',
            },
            createRoleRules: {
            }
        }
    },
    created() {
        this.role = this.userInfo;
        console.log(this.userInfo);
    },
    methods: {
    },
    props: ['userInfo', 'changeDialog']
}
</script>
<style lang="scss" scoped>
.createUser {
    border-radius: 1px;
    background-color: #09152f;
    main {
        text-align: left;
        padding: 0 55px;
        background-color: #09152f;
        padding-bottom: 50px;
        .mainContent {
            display: flex;
            justify-content: center;
            padding-top: 50px;
            &::v-deep .el-form-item__label {
                color: #4b9bb7;
            }
            &::v-deep .el-input__inner {
                background-color: #09152f;
                border: 1px solid #17324c;
            }
            &::v-deep .el-textarea__inner {
                background-color: #09152f;
                border: 1px solid #17324c;
            }
            .el-form-item__content {
                width: 400px;
                .el-select {
                    width: 100%;
                }
            }
            .optionHandleSp {
                display: flex;
                .areaNumber,
                .moreNumber {
                    flex: 1;
                }
                .telNumber {
                    flex: 2;
                }
            }
            .optionBtn {
                display: flex;
                margin-top: 20px;
                .btn {
                    padding: 12px 50px;
                }
            }
        }
    }
}
</style>
src/views/operate/management/message/index.vue
@@ -15,7 +15,7 @@
                    </el-radio-group>
                </div>
                <div class="btns">
                    <el-button type="primary" icon="el-icon-search">查询</el-button>
                    <el-button type="primary" icon="el-icon-search" @click="handleSearch">查询</el-button>
                    <el-button icon="el-icon-delete-solid">重置</el-button>
                </div>
            </div>
@@ -24,13 +24,32 @@
            <div class="main-content">
                <div class="main-title">
                    数据列表
                </div>
                </div>
                <!-- 数据展示 -->
                <MyTable :tableOption="tableOption" :tableData="list" :pageShow="false">
                <MyTable :tableOption="tableOption" :tableData="tableData" :pageShow="false">
                    <template #operation="info">
                        <el-link :underline="false" style="color:#4b9bb7">编辑</el-link>
                    </template>
                </MyTable>
                <div class="tools">
                    <div class="funs">
                        <div class="funsItem funs-sp">
                        </div>
                        <div class="funsItem funs-sp">
                        </div>
                        <div class="funsItem">
                        </div>
                    </div>
                    <div class="pagination">
                        <el-pagination background :current-page="currentPage" layout="prev, pager, next"
                            :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage"
                            >
                        </el-pagination>
                    </div>
                </div>
            </div>
        </main>
        <footer>
@@ -39,32 +58,23 @@
    </div>
</template>
<script>
import MyTable from '@/components/Table'
import { myDownLoad } from '@/utils/helper'
import MyTable from '@/components/Table';
import { myDownLoad } from '@/utils/helper';
import { createNamespacedHelpers } from "vuex";
const { mapActions } = createNamespacedHelpers("shortMessage");
export default {
    components: {
        MyTable,
        MyTable
    },
    data() {
        return {
            context: '',
            tableData: [],
            totalNum: null,
            context: "",
            status:0,
            options: [
                {
                    value: 0,
                    label: '离线',
                },
                {
                    value: 1,
                    label: '在线',
                }
            ],
            list: [],
            current: 1,
            pageSize: 10,
            total:1,
            currentPage: 1,
            tableOption: {
                group: [
                    {
@@ -92,6 +102,12 @@
                        'min-width':10
                    },
                    {
                        label: '审核状态',
                        type: 'text',
                        prop: 'auditStatus',
                        'min-width':12
                    },
                    {
                        label: '更新时间',
                        type: 'time',
                        prop: 'updateTime',
@@ -100,7 +116,7 @@
                    {
                        label: '更新人',
                        type: 'text',
                        prop: 'updateUser',
                        prop: 'auditText',
                        'min-width':8
                    },
                    {
@@ -112,12 +128,41 @@
                ]
            },
        }
    },
    },
    created() {
        const { setTableData } = this;
        setTableData();
    },
    methods: {
    },
    methods: {
    handleSearch(){
            const {setTableData} = this
            setTableData();
     },
     // 设置表格数据
     async setTableData() {
            const arr = await this.getMessageAuditList();
            this.tableData = arr.records;
            this.totalNum = arr.total;
        },
        // 获取消息数据
        async getMessageAuditList() {
            let arr = [];
            const { currentPage, pageSize,context,status} = this;
            await this.$axios({
                method: 'post',
                url: 'sccg/message_audit/list',
                data: {
                    messageId: context,
                    auditStatus:status,
                    current: currentPage,
                    pageSize: pageSize
                }
            })
                .then(res => {
                    arr = res.data;
                })
            return arr;
        },
        // 弹窗关闭
        handleClose(done) {
            this.$confirm('确认关闭?')
@@ -126,14 +171,10 @@
                })
        },
        ...mapActions(['getMessageList']),
        // 设置tableData
        async setTableData() {
            const { current, pageSize, context } = this;
            let arr = await this.getMessageList({
                current,pageSize,messageId:parseFloat(context)
            })
            this.list = arr.data.data.records
            this.total = arr.data.data.total
         // 当前页改变触发事件
         changeCurrentPage(page) {
            this.currentPage = page;
            this.setTableData();
        },
    }
}
src/views/operate/management/myIndex/index.vue
@@ -84,8 +84,8 @@
                <!-- 详情页面 -->
                <el-dialog :visible.sync="dialogView" width="80%" title="基础信息(人工)" v-if="dialogView"
                    :before-close="handleNoClose">
                    <MyDetail :info=info v-if="myproblem==1 ? true:false"></MyDetail>
                    <MyIllDetail :info=info v-else></MyIllDetail>
                    <MyDetail :info=info v-if="myproblem==1 ? true:false" :mycode = 'code'></MyDetail>
                    <MyIllDetail :info=info v-else :mycode="code"></MyIllDetail>
                </el-dialog>
                <!-- tools -->
                <div class="tools">
@@ -176,6 +176,7 @@
            caseId: '',
            myproblem: 1,
            instatus: 7,
            code:''
        }
    },
    created() {
@@ -303,6 +304,7 @@
            done();
        },
        async JumpView(data) {
            this.code = data.code
            await this.getEventInfo(data.code);
        },
        // 获取案件信息