“dzb”
2022-10-21 a598d935a61fea27312fc57becd80e23bf09f788
修改bug
10个文件已修改
1个文件已添加
364 ■■■■ 已修改文件
src/api/logs.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/solveProblem/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/create/soil/index.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/car/myIndex/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/fivepack/shop/components/createUser/index.vue 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/fivepack/shop/components/header/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/log/index.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/management/myIndex/index.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/myIndex/createUser/index.vue 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/myIndex/index.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/myIndex/messageView/index.vue 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/logs.js
@@ -23,6 +23,7 @@
        method:'post',
        url:baseUrl+'/export',
        headers:{...token},
        params:data
        params:data,
        responseType: 'arraybuffer',
    })
};  
src/components/solveProblem/index.vue
@@ -9,13 +9,13 @@
                <el-timeline-item :color="mycolor" v-for="item in list" :key="item.id">
                    <div class="title">
                        <div class="title-left">【{{item.name}}】处理人: {{item.disposeRecords && item.disposeRecords.length
                        != 0 ? item.disposeRecords[0].handlerText:''}} {{item.disposeRecords && item.disposeRecords.length}}
                        != 0 ? item.disposeRecords[0].handlerText:''}}
                        </div>
                        <div class="title-right">{{item.disposeRecords.length !==0 ?
                        filterTime(item.disposeRecords[0].endTime):''}}
                        </div>
                    </div>
                    <div class="message">{{filterPerson(item.name)}}</div>
                    <div class="message">{{filterPerson(item.name)}} {{item.disposeRecords && item.disposeRecords.length !=0 ? item.disposeRecords[0].result:''}}</div>
                </el-timeline-item>
            </el-timeline>
        </div>
src/views/operate/car/myIndex/create/soil/index.vue
@@ -17,16 +17,16 @@
                        </el-select>
                    </el-form-item>
                    <!-- 车主姓名 -->
                    <el-form-item class="optionItem" label="车主姓名:" prop="carUser">
                        <el-input v-model="car.ownerName" placeholder="请输入车主姓名"></el-input>
                    <el-form-item class="optionItem" label="车主姓名:" prop="carOwner">
                        <el-input v-model="car.carOwner" placeholder="请输入车主姓名"></el-input>
                    </el-form-item>
                    <!-- 车辆使用人员 -->
                    <el-form-item class="optionItem" label="车辆使用人员:" prop="vehicleUser">
                        <el-input v-model="car.vehicleUser" placeholder="请输入车辆使用人员"></el-input>
                    <el-form-item class="optionItem" label="车辆使用人员:" prop="carUser">
                        <el-input v-model="car.carUser" placeholder="请输入车辆使用人员"></el-input>
                    </el-form-item>
                    <!-- 联系方式 -->
                    <el-form-item class="optionItem" label="联系方式:" prop="contact">
                        <el-input v-model="car.contact" placeholder="请输入车主手机号码"></el-input>
                    <el-form-item class="optionItem" label="联系方式:" prop="phone">
                        <el-input v-model="car.phone" placeholder="请输入车主手机号码"></el-input>
                    </el-form-item>
                    <!-- 施工单位 -->
                    <el-form-item class="optionItems" label="施工单位:" prop="constructionOrg">
@@ -123,13 +123,12 @@
        return {
            car: {
                carNumber: "",
                contact: "",
                belong: "",
                // id: 0,
                ownerName: "",
                phone: "",
                carOwner: "",
                trajectory: "",
                vehicleUser: "",
                carUser: "",
                constructionOrg: '',
                geographicPosition:'',
            },
            createCarRules: {
                carNumber: [
@@ -142,18 +141,18 @@
                        required: true, trigger:'change',validator: checkCarModel
                    }
                ],
                contact: [
                phone: [
                    {
                        required: true,trigger:'blur', validator: checkPhone
                    }
                ],
                // id: 0,
                ownerName: [
                carOwner: [
                    {
                        required: true,trigger:'blur', validator: checkName
                    }
                ],
                vehicleUser: [
                carUser: [
                    {
                        required: true, trigger:'blur',validator: checkUser
                    }
@@ -201,14 +200,12 @@
                            carNumber: car.carNumber,
                            carModel:car.carModel,
                            carPhoto:'',
                            carUser:car.carUser,
                            phone:car.phone,
                            carOwner:car.carOwner,
                            constructionOrg:car.constructionOrg,
                            geographicPosition:car.geographicPosition,
                            // contact: car.contact,
                            // belong: car.belong,
                            // id: 0,
                            // ownerName: car.ownerName,
                            trajectory: car.trajectory,
                            // vehicleUser: car.vehicleUser,
                        }
                    })
                        .then(res => {
src/views/operate/car/myIndex/index.vue
@@ -30,11 +30,11 @@
                    </el-table-column>
                    <el-table-column prop="carModel" label="车型" min-width="10" v-if="mystatus===2">
                    </el-table-column>
                    <el-table-column prop="ownerName" label="车主姓名" min-width="10">
                    <el-table-column :prop="mystatus ===1 ? 'ownerName':'carOwner'" label="车主姓名" min-width="10">
                    </el-table-column>
                    <el-table-column prop="vehicleUser" label="车辆使用人员" min-width="10">
                    <el-table-column :prop="mystatus ===1 ? 'vehicleUser' : 'carUser'" label="车辆使用人员" min-width="10">
                    </el-table-column>
                    <el-table-column prop="contact" label="联系方式" min-width="10">
                    <el-table-column :prop="mystatus ===1 ? 'contact' : 'phone' " label="联系方式" min-width="10">
                    </el-table-column>
                    <el-table-column :prop="mystatus===1 ? 'belong' : 'geographicPosition'" :label="mystatus === 1 ? '所属部门':'施工地址'" min-width="10">
                    </el-table-column>
src/views/operate/fivepack/shop/components/createUser/index.vue
@@ -6,8 +6,11 @@
                    label-position="right">
                    <!-- 店铺类型 -->
                    <el-form-item class="optionItem" label="店铺类型:" prop="storetype">
                        <el-select v-model="store.storetype" placeholder="选择店铺/门店类型">
                            <el-option v-for="item in shopTypeList" :key="item.name" :label="item.name" :value="item.value">
                        <el-select v-model="store.storetype" placeholder="请选择店铺类型">
                            <el-option value="1">
                                <el-tree ref="tree" :check-strictly="true" :data="shopTypeList" :props="defaultProps"
                                    show-checkbox @check-change="handleCheck" default-expand-all node-key="id">
                                </el-tree>
                            </el-option>
                        </el-select>
                    </el-form-item>
@@ -39,12 +42,13 @@
        <footer>
            <div class="optionBtn">
                <el-button class="btn reset" @click="handleBack">取消</el-button>
                <el-button type="primary" class="btn submit" @click="handleUser">确定</el-button>
                <el-button type="primary" class="btn submit" @click="handleStore">确定</el-button>
            </div>
        </footer>
    </div>
</template>
<script>
import { getCodeList } from '@/utils/helper'
export default {
    data() {
        const validateNickname = (rule, value, callback) => {
@@ -139,15 +143,26 @@
            shopTypeList: [
                { name: '类型1', value: 1 }, { name: '类型2', value: 2 }
            ],
            defaultProps: {
                children: 'children',
                label: 'name',
                disabled: (data, node) => {
                    if (node.level === 1 && node.childNodes.length !== 0) {
                        return !data.leaf
                    }
                }
            },
            selectOrg: {
                orgsid: []
            },
        }
    },
    created() {
        this.getCodeList();
        this.getShopTypeList();
    },
    methods: {
        handleUser() {
        handleStore() {
            const { store } = this;
            console.log('in');
            this.$refs.user.validate((valid)=>{
                console.log(valid);
                if(valid){
@@ -186,15 +201,58 @@
            this.$emit('sendDialog',{flag:false})
        },
        // 获取字典
        getCodeList(){
            this.$axios({
                method:'get',
                url:'sccg/dict/queryByCode?code='+"03"
        async getShopTypeList() {
            let arr = await getCodeList('16');
            this.shopTypeList = this.createShopTypeTree(arr);
        },
        // 创建商铺类型树
        createShopTypeTree(arr) {
            if (arr.length && arr.length !== 0) {
                // 获取顶级菜单
                let treeRoot = arr.filter(item => {
                    return item.parentId === 0
            })
            .then(res=>{
                console.log(res);
            })
                console.log(treeRoot);
                // 添加child
                treeRoot.forEach(item => {
                    item.children = []
                    arr.forEach(child => {
                        if (child.parentId === item.id) {
                            item.children.push(child)
        }
                    })
                })
                return treeRoot;
            }
        },
        handleCheck(data, checked) {
            this.store.storetype = data.name;
            // 获取当前选择的id在数组中的索引
            const indexs = this.selectOrg.orgsid.indexOf(data.id)
            // 如果不存在数组中,并且数组中已经有一个id并且checked为true的时候,代表不能再次选择。
            if (indexs < 0 && this.selectOrg.orgsid.length === 1 && checked) {
                this.$message({
                    message: '只能选择一个部门!',
                    type: 'warning',
                    showClose: true
                })
                // 设置已选择的节点为false 很重要
                this.$refs.tree.setChecked(data, false)
            } else if (this.selectOrg.orgsid.length === 0 && checked) {
                // 发现数组为空 并且是已选择
                // 防止数组有值,首先清空,再push
                this.selectOrg.orgsid = []
                this.selectOrg.orgsid.push(data.id)
            } else if (
                indexs >= 0 &&
                this.selectOrg.orgsid.length === 1 &&
                !checked
            ) {
                // 再次直接进行赋值为空操作
                this.selectOrg.orgsid = []
                this.store.storetype = ''
            }
        },
    },
    props: ['sendDialog']
}
src/views/operate/fivepack/shop/components/header/index.vue
@@ -65,7 +65,7 @@
        // 清空search
        clearSearch(){
            this.search = '';
            // this.$emit('getSearch',{text:this.search});
            this.$emit('getSearch',{text:this.search});
        },
    },
    props: ['setDialog', 'getSearch', 'flag'],
src/views/operate/log/index.vue
@@ -23,11 +23,10 @@
                    <el-date-picker v-model="mytime" type="daterange" range-separator="-" start-placeholder="开始日期"
                        end-placeholder="结束日期">
                    </el-date-picker>
                    <!-- <el-input placeholder="选择时间范围" v-model="timeArea"></el-input> -->
                </div>
                <div class="find">
                    <el-button type="primary" icon="el-icon-search" @click="setTableData">查询</el-button>
                    <el-button icon="el-icon-delete-solid">重置</el-button>
                    <el-button icon="el-icon-delete-solid" @click="resetTableData">重置</el-button>
                </div>
            </div>
        </header>
@@ -93,6 +92,7 @@
</template>
<script>
import helper from '@/utils/mydate'
import {parseTime} from '@/utils/index'
import { createNamespacedHelpers } from "vuex";
const { mapActions } = createNamespacedHelpers("logs");
export default {
@@ -117,10 +117,9 @@
            ],
            mysort: 0,
            tempList: [],
            timeArea: '',
            operationType: '全部',
            operationTypeList: [],
            mytime: '',
            mytime: ['',''],
        }
    },
    created() {
@@ -129,6 +128,14 @@
    },
    methods: {
        ...mapActions(["getLogsList", 'getLogsOperationType', 'exportLogs']),
        // 重置
        resetTableData(){
            const {setTableData} = this
            this.operationType = '全部'
            this.mytime = ['','']
            this.context = ''
            setTableData();
        },
        // 导出日志
        async handleExport() {
            const { currentPage, pageSize, context, operationType } = this;
@@ -211,16 +218,17 @@
        },
        // 获取日志数据
        async getLogList() {
            const { currentPage, pageSize, context, operationType, mysort } = this;
            const { currentPage, pageSize, context, operationType, mysort,mytime } = this;
            console.log(mytime)
            let arr = await this.getLogsList({
                content: context,
                current: currentPage,
                endTime: '',
                endTime: mytime[1] !==''?parseTime(mytime[1]):'',
                id: '',
                operationType: operationType === '全部' ? '' : operationType,
                portEquipment: '',
                size: pageSize,
                startTime: '',
                startTime: mytime[0] !==''?parseTime(mytime[0]):'',
                sort: mysort
            })
            console.log(arr)
src/views/operate/management/myIndex/index.vue
@@ -83,7 +83,7 @@
                </el-dialog>
                <!-- 详情页面 -->
                <el-dialog :visible.sync="dialogView" width="80%" title="基础信息(人工)" v-if="dialogView"
                    :before-close="handleClose">
                    :before-close="handleNoClose">
                    <MyDetail :info=info v-if="myproblem==1 ? true:false"></MyDetail>
                    <MyIllDetail :info=info v-else></MyIllDetail>
                </el-dialog>
@@ -299,6 +299,9 @@
                })
                .catch(_ => { });
        },
        handleNoClose(done) {
            done();
        },
        async JumpView(data) {
            await this.getEventInfo(data.code);
        },
src/views/operate/message/myIndex/createUser/index.vue
@@ -28,8 +28,8 @@
                        <div class="message-item__left">
                            <el-select v-model="role.targetTo" placeholder="请选择接收对象">
                                <el-option :value="role.targetTo">
                                    <el-tree ref="tree" check-strictly :data="departList" :props="defaultProps"
                                        show-checkbox @check="handleCheck" default-expand-all node-key="id">
                                    <el-tree ref="tree" :data="departList" :props="defaultProps" show-checkbox
                                        @check="handleCheck" default-expand-all node-key="id">
                                    </el-tree>
                                </el-option>
                            </el-select>
@@ -51,11 +51,11 @@
                    </el-form-item>
                    <el-form-item>
                        <div class="optionBtn">
                            <el-button type="primary" class="btn save">保存
                            <el-button type="primary" @click.native.prevent="handleSubmit(0)" class="btn save">保存
                            </el-button>
                            <el-button type="primary" @click.native.prevent="handleSubmit" class="btn submit">发布
                            <el-button type="primary" @click.native.prevent="handleSubmit(1)" class="btn submit">发布
                            </el-button>
                            <el-button type="primary" class="btn submit">预览
                            <el-button type="primary" @click.native.prevent="handleView" class="btn submit">预览
                            </el-button>
                            <el-button class="btn cancel" @click.native.prevent="handleReset">重置</el-button>
                        </div>
@@ -66,6 +66,11 @@
                    :before-close="handleConfirmClose" append-to-body>
                    <MyColumnAdd @closeDialog="closeDialog"></MyColumnAdd>
                </el-dialog>
                <!-- 预览消息 -->
                <el-dialog title="消息预览" :visible.sync="dialogView" v-if="dialogView" width="60%"
                    :before-close="handleConfirmClose" append-to-body>
                    <MyColView  :info="info" @closeDialog="closeDialog"></MyColView>
                </el-dialog>
            </div>
        </main>
    </div>
@@ -73,8 +78,9 @@
<script>
import MyEditor from '@/components/edit'
import MyColumnAdd from '@/views/operate/message/mycontrol/createUser'
import MyColView from '../messageView'
export default {
    components: { MyEditor, MyColumnAdd },
    components: { MyEditor, MyColumnAdd,MyColView },
    data() {
        const validateNickname = (rule, value, callback) => {
            if (!value) {
@@ -121,16 +127,20 @@
            departList: [],
            typeList: [],
            dialogCreate: false,
            dialogView: false,
            defaultProps: {
                children: 'children',
                label: 'departName',
                disabled: function (data, node) {
                    if (data.createTime) {
                        return !data.leaf
                    }
                }
                // disabled: function (data, node) {
                //     if (data.createTime) {
                //         return !data.leaf
                //     }
                // }
            },
            checkedList: []
            checkedList: [],
            tempNameArr:[],
            info:{},
            sendUser:""
        }
    },
    created() {
@@ -216,17 +226,25 @@
        },
        // 选中id
        handleCheck(data, node) {
            console.log(data, node);
            this.checkedList = node.checkedKeys;
            this.role.targetTo = node.checkedKeys.length + '人';
            let arr = [],nameArr = []
            console.log(node.checkedNodes)
            node.checkedNodes.forEach(item => {
                if(!item.hasOwnProperty('departType')){
                    arr.push(item.id)
                    nameArr.push(item.departName)
                }
            })
            this.checkedList = arr
            this.tempNameArr = nameArr
            console.log(this.tempNameArr)
            this.role.targetTo = arr.length + '人'
        },
        // 新建消息
        handleSubmit() {
            console.log(this.role);
        // 新建/保存消息(1:新建,0保存消息)
        handleSubmit(mystatus) {
            this.$refs.user.validate((valid) => {
                console.log(valid)
                if (valid) {
                    const {role,checkedList} = this;
                    console.log(checkedList);
                    this.$axios({
                        method: 'post',
                        url: 'sccg/message/sendMessage',
@@ -238,14 +256,14 @@
                            sendTime: new Date(),
                            targetTo: checkedList.join(','),
                            targetFrom:`${role.targetFrom}`,
                            status:1,
                            status: mystatus,
                        }
                    })
                    .then(res=>{
                        if(res.code === 200){
                            this.$message({
                                type:'success',
                                message:'发送成功',
                                    message: mystatus === 1 ? '发送成功' : '保存成功',
                            })
                            this.$emit('closeMyDialog',{flag:false,index:1});
                        }
@@ -276,7 +294,38 @@
            })
            .then(res=>{
                this.role.targetFrom = res.data.userId
                    this.sendUser = res.data.username
            })
        },
        // 消息预览
        handleView() {
            this.$refs.user.validate((valid) => {
                if (valid) {
                    const { role,getColText,tempNameArr,sendUser } = this
                    this.dialogView = true;
                    let info = {}
                    // 获得栏目消息
                    info.channelCode = role.channelCode === '01'? '站内信': role.channelCode === '02' ? '邮件':'短信'
                    info.messageType = getColText(role.messageType)
                    info.body = role.body
                    info.head = role.head
                    info.targetTo = tempNameArr
                    info.targetFrom = sendUser
                    this.info = info
                } else {
                    return false
                }
            })
        },
        // 获得栏目消息
        getColText(id){
            console.log(id)
            const {colList} = this
            let str = ''
            colList.forEach(item=>{
                item.id === id ? str = item.columnName : ''
            })
            return str
        }
    },
    props: ['closeMyDialog']
@@ -297,7 +346,9 @@
            display: flex;
            justify-content: center;
            padding-top: 50px;
            &:deep(.el-dialog__title) {
                color: #4b9bb7;
            }
            &::v-deep .el-form-item__label {
                color: #4b9bb7;
            }
src/views/operate/message/myIndex/index.vue
@@ -231,15 +231,15 @@
                data: {
                    body: "",
                    channelCode: "",
                    createUser: 0,
                    createUser: '',
                    current: currentPage,
                    head: "",
                    messageType: 0,
                    messageType: "",
                    pageSize: pageSize,
                    randomCode: "",
                    remark: "",
                    sendTime: "",
                    status: 0,
                    status: '',
                    targetFrom: "",
                    targetTo: ""
                }
src/views/operate/message/myIndex/messageView/index.vue
New file
@@ -0,0 +1,102 @@
<template>
    <div class="updateUser">
        <main>
            <div class="mainContent">
                <el-form ref="user" label-width="140px" autoComplete="on" :model="message" label-position="right">
                    <!-- 标题 -->
                    <el-form-item class="optionItem" label="标题:">
                        <el-input v-model="message.head" disabled></el-input>
                    </el-form-item>
                    <!-- 类型 -->
                    <el-form-item class="optionItem" label="栏目类型:">
                        <el-input v-model="message.messageType" disabled></el-input>
                    </el-form-item>
                    <!-- 发送人 -->
                    <el-form-item class="optionItem" label="发送人:">
                        <el-input v-model="message.targetFrom" disabled></el-input>
                    </el-form-item>
                    <!-- 接收对象 -->
                    <el-form-item class="optionItem" label="接收对象:">
                        <el-input type="textarea" v-model="message.targetTo" disabled></el-input>
                    </el-form-item>
                    <!-- 消息内容 -->
                    <el-form-item class="optionItem" label="消息内容:">
                        <el-input type="textarea" :rows="5" disabled v-html="message.body"></el-input>
                    </el-form-item>
                    <!-- 提醒方式 -->
                    <el-form-item class="optionItem" label="方式:">
                        <el-input v-model="message.channelCode" disabled></el-input>
                    </el-form-item>
                </el-form>
            </div>
        </main>
    </div>
</template>
<script>
export default {
    data() {
        return {
            message: {
            },
        }
    },
    created() {
        this.message = JSON.parse(JSON.stringify(this.info))
        this.message.targetTo = this.message.targetTo.join(',')
    },
    methods: {
    },
    props: ['info', 'closeDialog']
}
</script>
<style lang="scss" scoped>
.updateUser {
    border-radius: 1px;
    background-color: #09152f;
    :deep(.el-tag) {
        background-color: #09152f;
    }
    .el-select-dropdown.is-multiple .el-select-dropdown__item.selected {
        background-color: #09152f;
        color: #4b9bb7;
    }
    main {
        text-align: left;
        padding: 0 55px;
        background-color: #09152f;
        padding-bottom: 50px;
        .mainContent {
            display: flex;
            justify-content: center;
            padding-top: 50px;
            .el-form-item__content {
                width: 400px;
                .el-select {
                    width: 100%;
                }
            }
            &:deep(.el-textarea__inner) {
                background-color: #09152f;
                border: 1px solid #17324c;
            }
        }
    }
}
.updateUser::v-deep .el-form-item__label {
    color: #4b9bb7;
}
.updateUser::v-deep .el-input__inner {
    background-color: #09152f;
    border: 1px solid #17324c;
}
</style>