Преглед изворни кода

Merge branch 'master' of http://119.23.210.103:3000/wy/zdqy_firm_former

liujiayin пре 2 година
родитељ
комит
786ca09226

+ 13 - 5
src/business/platform/data/constants/buttons.js

@@ -41,10 +41,18 @@ const buttons = {
         scope: ['manage'],
         contextmenu: 'sub'
     },
+    // 原明细
+    // 'detail': {
+    //     label: '明细',
+    //     type: 'info',
+    //     icon: 'ibps-icon-detail',
+    //     scope: ['manage'],
+    //     contextmenu: 'sub'
+    // },
     'detail': {
-        label: '明细',
-        type: 'info',
-        icon: 'ibps-icon-detail',
+        label: '查阅',
+        type: 'primary',
+        icon: 'ibps-icon-eye',
         scope: ['manage'],
         contextmenu: 'sub'
     },
@@ -92,9 +100,9 @@ const buttons = {
         contextmenu: 'all'
     },
     'consult': {
-        label: '查阅',
+        label: '表单',
         type: 'primary',
-        icon: 'ibps-icon-eye',
+        icon: 'ibps-icon-table',
         scope: ['manage'],
         contextmenu: 'sub'
     },

+ 10 - 1
src/business/platform/form/formrender/dynamic-form/dynamic-form-field.vue

@@ -189,6 +189,7 @@
                 :filterable="allowCreate"
                 :allow-create="allowCreate"
                 v-on="$listeners"
+                @change="selectLinkageChange"
             >
                 <el-option v-for="o in dataOptions" :key="o.val" :label="o.label" :value="o.val" />
             </el-select>
@@ -663,7 +664,8 @@
                 selectModel: [],
                 watchKey: false,
                 inputKey: '',
-                dict_add: false
+                dict_add: false,
+                selectDataResult: []
             }
         },
         computed: {
@@ -1032,6 +1034,7 @@
                 queryDataTable(this.getValuesourceParams(template, this.dataTemplate)).then(resp => {
                     const data = resp.data || {}
                     const dataResult = data.dataResult || []
+                    this.selectDataResult = dataResult
                     const options = dataResult.map(item => {
                         return {
                             val: item[this.valueKey],
@@ -1069,6 +1072,12 @@
                     }
                 }
             },
+            selectLinkageChange(value){
+                let dataValue = this.selectDataResult.find(item => item.id_ === value)
+                if(dataValue){
+                    this.handleLinkageData(value, dataValue)
+                }
+            },
             // 联动数据
             handleLinkageData(value, data) {
                 if (this.multipleString) {

+ 2 - 1
src/business/platform/form/utils/formUtil.js

@@ -938,7 +938,8 @@ const FormUtil = {
                         if (Array.isArray(data)) {
                             val = data[code] && data[code][row] ? data[code][row][changeName] : (data[changeName] || '')
                         } else {
-                            val = (data[changeName] || '')
+                            // val = (data[changeName] || '')
+                            val = data[code][row][changeName]
                         }
                     } else { // 弹窗模式
                         const changeCode = changeObj[changeObj.length - 2]

+ 4 - 4
src/components/ibps-toolbar/index.vue

@@ -32,7 +32,7 @@
           :disabled="handleActionDisabled(button.disabled)"
           @click="emitEventHandler('action-event',button,position,data,index)"
         >
-          {{ button.label }}
+        {{ `&nbsp;${button.label}` }}
         </el-link>
         <el-divider v-if="(actions.length == 2 && index == 0) || (actions.length == 3 && index != 2)" :key="index" direction="vertical" />
       </template>
@@ -46,7 +46,7 @@
               :disabled="handleActionDisabled(button.disabled)"
               @click="emitEventHandler('action-event',button,position,data,index)"
             >
-              {{ button.label }}
+              {{ `&nbsp;${button.label}` }}
             </el-link>
         </p>
       </template>
@@ -59,10 +59,10 @@
             @command="(action)=> { emitEventHandler('action-event',action,position,data,index) }"
           >
             <span v-if="button.buttonType==='link'" class="el-dropdown-link">
-              {{ button.label }}<i v-if="hasRighticon(button.rightIcon)" class="el-icon-arrow-down el-icon--right" />
+              {{ `&nbsp;${button.label}` }}<i v-if="hasRighticon(button.rightIcon)" class="el-icon-arrow-down el-icon--right" />
             </span>
             <el-button v-else :type="getType(button)" size="mini" :icon="getIcon(button)">
-              {{ button.label }}<i v-if="hasRighticon(button.rightIcon)" class="el-icon-arrow-down el-icon--right" />
+              {{ `&nbsp;${button.label}` }}<i v-if="hasRighticon(button.rightIcon)" class="el-icon-arrow-down el-icon--right" />
             </el-button>
             <el-dropdown-menu v-if="button.menus && button.menus.length >0" slot="dropdown">
               <el-dropdown-item

+ 1 - 1
src/store/modules/ibps/modules/user.js

@@ -185,7 +185,7 @@ export default {
         getDeptList ({ state, dispatch }, { first, second }) {
             const params = second ? ` and (pe.path_ like '%${second}%' or pe.id_ = '${first}')` : first ? ` and pe.path_ like '%${first}%'` : ''
             // const sql = `select id_ as positionId, name_ as positionName, path_ as path, depth_ as depth, sn_ as sn from ibps_party_entity where party_type_ = 'position'${params} order by depth_ asc, sn_ asc`
-            const sql = `select pe.id_ as positionId, pe.name_ as positionName, pe.path_ as path, pe.depth_ as depth, pe.sn_ as sn, ifnull(r.name_, '') as manager, ifnull(r.id_, '') as managerId from ibps_party_entity as pe left join (select em.id_, em.positions_, em.name_ from ibps_party_employee as em left join ibps_party_user_role as ur on em.id_ = ur.user_id_ left join ibps_party_role as pr on pr.id_ = ur.role_id_ where role_alias_ in ('zhsfzr', 'syszr', 'zhglzzc')) as r on find_in_set(pe.id_, r.positions_) > 0 where pe.party_type_ = 'position'${params} order by pe.depth_ asc, pe.sn_ asc`
+            const sql = `select pe.id_ as positionId, pe.name_ as positionName, pe.path_ as path, pe.depth_ as depth, pe.sn_ as sn, ifnull(r.name_, '') as manager, ifnull(r.id_, '') as managerId from ibps_party_entity as pe left join (select em.id_, em.positions_, em.name_ from ibps_party_employee as em left join ibps_party_user_role as ur on em.id_ = ur.user_id_ left join ibps_party_role as pr on pr.id_ = ur.role_id_ where role_alias_ in ('zhsfzr', 'syszr', 'zhglzzc')) as r on find_in_set(pe.id_, r.positions_) > 0 where pe.party_type_ = 'position'${params} group by pe.id_ order by pe.depth_ asc, pe.sn_ asc`
             common.request('sql', sql).then(res => {
                 const { data = [] } = res.variables || {}
                 dispatch('ibps/param/setDeptList', data, {

+ 1 - 0
src/views/platform/data/dataTemplate/list.vue

@@ -37,6 +37,7 @@
                                 <el-option label="模版名称" value="Q^name_^SL" />
                                 <el-option label="模版key" value="Q^key_^SL" />
                                 <el-option label="数据集key" value="Q^dataset_key_^SL" />
+                                <el-option label="模板类型" value="Q^type_^SL" />
                             </el-select>
                             <el-button slot="append" icon="el-icon-search" @click="search" />
                         </el-input>

+ 24 - 21
src/views/platform/message/inner/receive.vue

@@ -50,6 +50,9 @@
                     <i class="ibps-icon-paperclip" />
                 </el-tooltip>
             </template>
+            <template slot="file" slot-scope="v">
+                <span> {{ v.fileMsg ? '有' : '无' }}</span>
+            </template>
         </ibps-crud>
         <!-- 明细 -->
         <detail
@@ -138,13 +141,13 @@ export default {
                 },
                 // 表格字段配置
                 columns: [
-                    {
-                        prop: 'stateIcon',
-                        label: '',
-                        slotName: 'handIcon',
-                        width: '60',
-                        renderHeader: renderHeader
-                    },
+                    // {
+                    //     prop: 'stateIcon',
+                    //     label: '',
+                    //     slotName: 'handIcon',
+                    //     width: '60',
+                    //     renderHeader: renderHeader
+                    // },
                     {
                         prop: 'subject',
                         sortBy: 'SUBJECT_',
@@ -153,10 +156,11 @@ export default {
                         sortable: 'custom',
                         width: '150'
                     },
-                    { prop: 'ownerName', label: '发送人', width: '100' },
+                    { prop: 'ownerName', label: '发送人', width: '90' },
                     { prop: 'messageType', label: '消息类型', tags: typeOptions, width: '100' },
                     { prop: 'content', label: '消息描述', minWidth: '200' },
-                    { prop: 'createTime', label: '发送时间', dateFormat: 'yyyy-MM-dd HH:mm:ss', width: '150' }
+                    { prop: 'fileMsg', label: '有无附件', slotName: 'file', width: '90' },
+                    { prop: 'createTime', label: '发送时间', sortable: 'custom', dateFormat: 'yyyy-MM-dd HH:mm:ss', width: '150' }
                 ],
                 rowHandle: {
                     actions: [
@@ -241,11 +245,10 @@ export default {
             this.loadData()
         },
         handleLinkClick (data, columns) {
-            console.log('data', data)
             this.handleEdit(data.id, true)
             this.tableId = data.tableId
             this.tableName = data.tableName
-            this.title = '息明细'
+            this.title = '息明细'
         },
         /**
          * 处理按钮事件
@@ -262,29 +265,29 @@ export default {
                     //     // this.isEnvelope = false
                     // }).catch(() => { })
                     try {
-                        if(data == undefined){
+                        if (data === undefined) {
                             throw new Error('请选择数据再标记已读。')
                         }
-                        let fitDatas=[]
+                        const fitDatas = []
                         data.forEach(el => {
-                            if(el.subject !=='文件发放通知'){
+                            if (el.subject !== '文件发放通知') {
                                 fitDatas.push(el.id)
                             }
-                        });
-                        if(fitDatas.length !== data.length){
+                        })
+                        if (fitDatas.length !== data.length) {
                             const comfirm = confirm('文件发放通知并不会被标记为已读')
-                            if(comfirm){
+                            if (comfirm) {
                                 ActionUtils.selectedMultiRecord(fitDatas).then(id => {
-                                this.handleAlreadyRead(id)
+                                    this.handleAlreadyRead(id)
                                 }).catch(() => { })
                             }
-                        }else{
+                        } else {
                             ActionUtils.selectedMultiRecord(fitDatas).then(id => {
-                            this.handleAlreadyRead(id)
+                                this.handleAlreadyRead(id)
                             }).catch(() => { })
                         }
                     } catch (error) {
-                        ActionUtils.warning(error.message) 
+                        ActionUtils.warning(error.message)
                     }
                     break
                 case 'reply': // 回复

+ 1 - 1
src/views/platform/org/employee/edit/basic-info.vue

@@ -84,7 +84,7 @@
                 <el-form-item>
                     <template slot="label">
                         用户类型
-                        <help-tip prop="formAsterisk" />
+                        <help-tip :title="formAsterisk.title" :content="formAsterisk.content"/>
                     </template>
                     <el-radio-group v-if="!readonly" v-model="formData.jiNengZhiCheng">
                         <el-radio label="inside">内部用户</el-radio>

+ 2 - 1
src/views/platform/org/employee/edit/index.vue

@@ -160,7 +160,8 @@ export default {
                 roleItemList: [],
                 userGroupItemList: [],
                 orgItem: {}, // 组织全部信息
-                wxyhId: ''
+                wxyhId: '',
+                jiNengZhiCheng: 'inside'
             },
             employee: {},
             toolbars: [

+ 1 - 1
src/views/platform/system/news/detail.vue

@@ -28,7 +28,7 @@
                 <el-row>
                     <el-col :span="8">
                         <el-form-item label="发布人:" prop="author">
-                            <el-input v-model="form.author" />
+                            <el-input v-model="form.author || form.userName" />
                         </el-form-item>
                     </el-col>
                     <el-col :span="8">

+ 2 - 0
src/views/platform/system/news/list.vue

@@ -8,6 +8,7 @@
             :search-form="listConfig.searchForm"
             :pk-key="pkKey"
             :columns="listConfig.columns"
+            display-field="通知公告"
             :row-handle="listConfig.rowHandle"
             :pagination="pagination"
             :loading="loading"
@@ -81,6 +82,7 @@ export default {
                     forms: [
                         { prop: 'Q^TITLE_^SL', label: '标题' },
                         { prop: 'Q^USER_NAME_^SL', label: '发布人' },
+                        { prop: 'Q^DEP_NAME_^SL', label: '发布部门' },
                         { prop: ['Q^PUBLIC_DATE_^DL', 'Q^PUBLIC_DATE_^DG'], label: '发布时间', fieldType: 'daterange' },
                         { prop: 'Q^STATUS_^SL', label: '发布状态', fieldType: 'select', options: typeOptions }
                     ]

+ 1 - 1
src/views/system/dashboard/components/workbench.vue

@@ -701,7 +701,7 @@ export default {
                     addList.push(obj)
                     const msg = {
                         subject: msgTitle[item.workType],
-                        content: `<p>事务【${item.workName}】${msgContent[item.workType]}<p>`,
+                        content: `事务【${item.workName}】${msgContent[item.workType]}`,
                         receiverId: userId,
                         canreply: '0',
                         taskId: item.taskId

+ 7 - 1
src/views/system/jbdScan/approve/approve.vue

@@ -26,7 +26,7 @@
                             />
                         </div>
                         <div style="display: flex;justify-content: space-between;width: 100%;">
-                            <div v-if="activeIndex != 5" style="width: 100%">
+                            <!-- <div v-if="activeIndex != 5" style="width: 100%">
                                 <div ref="Echart" class="chart" />
                             </div>
                             <div v-if="activeIndex == 5" style="width:40%;position: relative;">
@@ -34,6 +34,12 @@
                             </div>
                             <div v-if="activeIndex == 5" style="width: 60%;position: relative;">
                                 <div ref="Echart2" class="chart" />
+                            </div> -->
+                            <div style="width:40%;position: relative;">
+                                <div ref="Echart" class="chart" />
+                            </div>
+                            <div style="width: 60%;position: relative;">
+                                <div ref="Echart2" class="chart" />
                             </div>
 
                         </div>

+ 101 - 73
src/views/system/jbdScan/approve/approveJS.js

@@ -79,6 +79,8 @@ export default {
                     if (index === 4) {
                         this.getBuFuHeXiangMu(id)
                         this.getBuFuHeTuBiao(id)
+                    } else {
+                        this.getHeChaList(id)
                     }
                 }
             })
@@ -140,19 +142,25 @@ export default {
                     accept.setOption(JSON.parse(JSON.stringify(this.barData(list1, list2))))
                 }
             })
-            // this.$common.request('sql', sql).then(res => {
-            //     const { data = [] } = res.variables || {}
-            //     if (data.length > 0) {
-            //         // this.buTableData = data
-            //         const list = []
-            //         data.forEach(item => {
-            //             list.push(item.name)
-            //         })
-            //         const dt = this.getColorRe(data)
-            //         const accept = echarts.init(this.$refs.Echart2)
-            //         accept.setOption(JSON.parse(JSON.stringify(this.barData(list, dt.res, dt.colorList))))
-            //     }
-            // })
+        },
+        getHeChaList (id) {
+            const second = this.$store.getters.level.second
+            const sql1 = `select a.NAME_ as name,COALESCE(COUNT(b.id_), 0) AS value FROM ibps_party_entity a LEFT JOIN t_rkzztkhcjhzb b ON a.ID_ = b.bu_men_ AND b.parent_id_ = '${id}' WHERE a.party_type_ = 'position' AND a.PATH_ LIKE '%${second}%' AND a.DEPTH_ = '4' GROUP BY a.NAME_ order by a.ID_ desc`
+            const sql2 = `select a.NAME_ as name,COALESCE(COUNT(b.id_), 0) AS value FROM ibps_party_entity a LEFT JOIN t_rkzztkhcjhzb b ON a.ID_ = b.bu_men_ AND b.parent_id_ = '${id}' and (b.shi_fou_guo_shen_ = '待审核' or b.shi_fou_guo_shen_ = '待确认' or b.shi_fou_guo_shen_ = '已结束') WHERE a.party_type_ = 'position' AND a.PATH_ LIKE '%${second}%' AND a.DEPTH_ = '4' GROUP BY a.NAME_ order by a.ID_ desc`
+            const sql3 = `select a.NAME_ as name,COALESCE(COUNT(b.id_), 0) AS value FROM ibps_party_entity a LEFT JOIN t_rkzztkhcjhzb b ON a.ID_ = b.bu_men_ AND b.parent_id_ = '${id}' and (b.shi_fou_guo_shen_ = '待分配' or b.shi_fou_guo_shen_ = '待核查') WHERE a.party_type_ = 'position' AND a.PATH_ LIKE '%${second}%' AND a.DEPTH_ = '4' GROUP BY a.NAME_ order by a.ID_ desc`
+
+            Promise.all([this.$common.request('sql', sql1), this.$common.request('sql', sql2), this.$common.request('sql', sql3)]).then(res => {
+                if (res.length > 0) {
+                    const data1 = res[0].variables.data
+                    const data2 = res[1].variables.data
+                    const data3 = res[2].variables.data
+                    const list1 = data1.map(item => item.value)
+                    const list2 = data2.map(item => item.value)
+                    const list3 = data3.map(item => item.value)
+                    const accept = echarts.init(this.$refs.Echart2)
+                    accept.setOption(JSON.parse(JSON.stringify(this.barDataPlan(list1, list2, list3))))
+                }
+            })
         },
         linHeg (value) {
             // rowMAx 控制一行多少字
@@ -288,71 +296,91 @@ export default {
                     },
                     data: data1
                 }],
-                color: ['#64C7BF', '#73A0FA'],
+                color: ['#64C7BF', '#fd666d'],
+                tooltip: {
+                    show: true,
+                    trigger: 'axis'
+                }
+            }
+            return barDataTy
+        },
+        barDataPlan (data1, data2, data3) {
+            const barDataTy = {
+                // 图例设置
+                legend: {
+                    textStyle: {
+                        fontSize: 12,
+                        color: '#333'
+                    }
+                },
+                title: {
+                    show: true,
+                    text: '核查进度',
+                    textStyle: {
+                        // color: '#fff',
+                        fontSize: 20,
+                        fontWeight: '600'
+                    },
+                    textAlign: 'center',
+                    left: '50%',
+                    top: '20px'
+                },
+                xAxis: {
+                    name: '部门',
+                    type: 'category',
+                    data: this.positionList,
+                    axisTick: {
+                        alignWithLabel: true
+                    },
+                    axisLabel: {
+                        rotate: 30,
+                        interval: 0,
+                        margin: 10
+                    }
+                },
+                yAxis: {
+                    type: 'value',
+                    name: '数量(项目)',
+                    minInterval: 1,
+                    nameTextStyle: {
+                        fontSize: 14
+                    },
+                    splitLine: {
+                        show: false
+                    }
+                },
+                series: [{
+                    name: '总数',
+                    type: 'bar',
+                    barGap: 0,
+                    emphasis: {
+                        focus: 'series'
+                    },
+                    data: data1
+                },
+                {
+                    name: '已核查',
+                    type: 'bar',
+                    barGap: 0,
+                    emphasis: {
+                        focus: 'series'
+                    },
+                    data: data2
+                }, {
+                    name: '未核查',
+                    type: 'bar',
+                    barGap: 0,
+                    emphasis: {
+                        focus: 'series'
+                    },
+                    data: data3
+                }],
+                color: ['#037ef3', '#7552cc', '#0cb9c1'],
                 tooltip: {
                     show: true,
                     trigger: 'axis'
                 }
             }
-            // const barData = {
-            //     title: {
-            //         show: true,
-            //         text: '不符合条款清单比例',
-            //         textStyle: {
-            //             color: '#000000',
-            //             fontSize: 20,
-            //             fontWeight: '600'
-            //         },
-            //         textAlign: 'center',
-            //         left: '50%',
-            //         top: '10px'
-            //     },
-            //     legend: {
-            //         orient: 'horizontal',
-            //         show: true,
-            //         left: 'center',
-            //         bottom: 10,
-            //         z: 3,
-            //         // itemWidth: 25,
-            //         // itemHeight: 14,
-            //         // itemGap: 10,
-            //         data: legendData
-            //     },
-            //     series: [
-            //         {
-            //             name: '',
-            //             type: 'pie',
-            //             radius: '60%',
-            //             center: ['50%', '50%'],
-            //             data: seriesData,
-            //             itemStyle: {
-            //                 emphasis: {
-            //                     shadowBlur: 10,
-            //                     shadowOffsetX: 0,
-            //                     shadowColor: 'rgba(0, 0, 0, 0.5)'
-            //                 },
-            //                 normal: {
-            //                     label: {
-            //                         show: true,
-            //                         position: 'outer',
-            //                         // formatter: `占比:{d}%\n\n\r{b}:{c}`,
-            //                         formatter: `{b}:{c}\n占比:{d}%`,
-            //                         fontSize: 14
-            //                     },
-            //                     labelLine: {
-            //                         show: true
-            //                     }
-            //                 }
-            //             }
-            //         }
-            //     ],
-            //     color,
-            //     tooltip: {
-            //         show: true,
-            //         trigger: 'item',
-            //         formatter: '不符合条款清单<br/>{b}:{c}<br/>占比:{d}%'
-            //     }
-            // }
             return barDataTy
         }
     }

+ 1 - 1
src/views/system/jbdScan/approve/compnent/appComOne.vue

@@ -15,7 +15,7 @@
                         {{ scope.row['zuZhangName'] || scope.row['yuanZuZhangName'] }}
                     </div>
                     <div v-else-if="item.value == 'zuYuanPosiName'">
-                        {{ scope.row['zuYuanPosiName'] || scope.row['yuanZuZhangName'] }}
+                        {{ scope.row['zuYuanPosiName'] || scope.row['yuanZuZhangBuMen'] }}
                     </div>
                     <div v-else>{{ scope.row[item.value] }}</div>
                 </template>