Commit 5a14192c09b910d8f47b2a60e3b0a9138636927a

Authored by monkeyhouyi
1 parent 9dc3fc10

1

src/api/common.js
... ... @@ -27,3 +27,11 @@ export function getDownloadUrl(type, fileName) {
27 27 })
28 28 }
29 29  
  30 +// 获取特殊备案类型
  31 +export function getSpecialRecordType() {
  32 + return request({
  33 + url: `/system/DictionaryData/590018069787575557`,
  34 + method: 'get'
  35 + })
  36 + }
  37 +
... ...
src/assets/style/common.scss
... ... @@ -31,7 +31,7 @@ body,
31 31 }
32 32  
33 33 .common-info-box {
34   - height: calc(100vh - 200px);
  34 + height: calc(100vh - 150px);
35 35 }
36 36 .item-box {
37 37 width: 100%;
... ... @@ -69,7 +69,7 @@ a {
69 69 justify-content: flex-start;
70 70 align-items: center;
71 71 flex-direction: row;
72   - color: #C0C4CC;
  72 + color: #757678;
73 73 line-height: 30px;
74 74 .label {
75 75 color: #000;
... ...
src/components/InfoForm/index.vue
... ... @@ -45,7 +45,7 @@
45 45 </el-select>
46 46 </el-form-item>
47 47 </el-col>
48   - <el-col :span="12">
  48 + <el-col :span="4">
49 49 <companyForm />
50 50 </el-col>
51 51 </el-col>
... ... @@ -85,6 +85,47 @@
85 85 </el-radio-group>
86 86 </el-form-item>
87 87 </el-col>
  88 + <el-col :span="24" v-show="isFilings">
  89 + <el-col :span="12">
  90 + <el-form-item label="特殊备案类型" prop="specialRecordType">
  91 + <el-select v-model="infoForm.specialRecordType" placeholder="请选择特殊备案类型" style="width: 100%;">
  92 + <el-option v-for="v in specialRecordTypeOption" :key="v.id" :label="v.fullName" :value="v.id" />
  93 + </el-select>
  94 + </el-form-item>
  95 + </el-col>
  96 + <el-col :span="24">
  97 + <el-form-item label="特殊备案内容" prop="specialRecordContent">
  98 + <el-input
  99 + v-model="infoForm.specialRecordContent"
  100 + placeholder="请输入"
  101 + show-word-limit
  102 + :style="{ width: '100%' }"
  103 + type="textarea"
  104 + :autosize="{ minRows: 4, maxRows: 4 }"
  105 + >
  106 + </el-input>
  107 + </el-form-item>
  108 + </el-col>
  109 + <el-col :span="12">
  110 + <el-form-item label="特殊备案号" prop="specialRecordNumber">
  111 + <el-input
  112 + v-model="infoForm.specialRecordNumber"
  113 + placeholder="请输入特殊备案号"
  114 + maxlength="200"
  115 + ></el-input>
  116 + </el-form-item>
  117 + </el-col>
  118 + <el-col :span="12">
  119 + <el-form-item label="特殊备案时间" prop="specialRecordTime">
  120 + <el-date-picker
  121 + v-model="infoForm.specialRecordTime"
  122 + type="date"
  123 + placeholder="特殊备案时间"
  124 + style="width: 100%;">
  125 + </el-date-picker>
  126 + </el-form-item>
  127 + </el-col>
  128 + </el-col>
88 129 <el-col :span="12">
89 130 <el-form-item label="系统名称" prop="systemName">
90 131 <el-input
... ... @@ -267,6 +308,10 @@ export default {
267 308 officeAddress: "",
268 309 systemIcon: "",
269 310 areaId: "",
  311 + specialRecordType: '',
  312 + specialRecordContent: '',
  313 + specialRecordNumber: '',
  314 + specialRecordTime: '',
270 315 },
271 316 infoRules: {
272 317 systemName: {
... ... @@ -311,8 +356,10 @@ export default {
311 356 companyInfo: {},
312 357 systemTypeOptions: [],
313 358 systemClassOptions: [],
  359 + specialRecordTypeOption: [],
314 360 areaOptions: [],
315 361 btnLoading: false,
  362 + isFilings: false,
316 363 };
317 364 },
318 365 watch: {},
... ... @@ -367,22 +414,25 @@ export default {
367 414 },
368 415 async openDialog() {
369 416 this.visible = true;
  417 + this.isFilings = false;
370 418 this.reset();
371 419 this.infoForm_loading = true;
372 420 await this.initCompanyList();
373 421 await this.initSystemTypeList();
374 422 await this.initAreaTypeList();
  423 + await this.initSpecialRecordTypeOption();
375 424 this.type == "edit" && (await this.initForm());
376 425 this.infoForm_loading = false;
377 426 },
378 427 async initForm() {
379 428 let { data } = await getSystemDetail(this.systemId);
380 429 this.infoForm = data;
381   - this.initSystemClassList(data.systemType);
  430 + this.handleSystemTypeChange(data.systemType);
382 431 await this.companyChange(data.companyId);
383 432 this.$forceUpdate();
384 433 },
385 434 handleSystemTypeChange(val) {
  435 + this.isFilings = Boolean(val != '580634746028033285');
386 436 this.infoForm.systemClass = "";
387 437 this.initSystemClassList(val);
388 438 },
... ...
src/filters/index.js
... ... @@ -168,11 +168,11 @@ export function dynamicTextUP(value, options) {
168 168 if (!options || !Array.isArray(options)) return value.join()
169 169 let textList = []
170 170 for (let i = 0; i < value.length; i++) {
171   - let item = options.filter(o => o.id == value[i])[0]
172   - if (!item || !item.fullName) {
  171 + let item = options.filter(o => o.Id == value[i])[0]
  172 + if (!item || !item.FullName) {
173 173 textList.push(value[i])
174 174 } else {
175   - textList.push(item.fullName)
  175 + textList.push(item.FullName)
176 176 }
177 177 }
178 178 return textList.join()
... ... @@ -182,6 +182,26 @@ export function dynamicTextUP(value, options) {
182 182 if (!item || !item.FullName) return value
183 183 return item.FullName
184 184 }
  185 +export function dynamicTextClassName(value, options) {
  186 + if (!value) return ''
  187 + if (Array.isArray(value)) {
  188 + if (!options || !Array.isArray(options)) return value.join()
  189 + let textList = []
  190 + for (let i = 0; i < value.length; i++) {
  191 + let item = options.filter(o => o.Id == value[i])[0]
  192 + if (!item || !item.ClassName) {
  193 + textList.push(value[i])
  194 + } else {
  195 + textList.push(item.ClassName)
  196 + }
  197 + }
  198 + return textList.join()
  199 + }
  200 + if (!options || !Array.isArray(options)) return value
  201 + let item = options.filter(o => o.Id == value)[0]
  202 + if (!item || !item.ClassName) return value
  203 + return item.ClassName
  204 +}
185 205 // 代码生成器数据匹配 Code
186 206 export function dynamicTextCode(value, options) {
187 207  
... ...
src/mixins/info.js
... ... @@ -4,7 +4,8 @@ export default {
4 4 return {
5 5 systemTypeOptions: [],
6 6 areaOptions: [],
7   - systemClassOptions: []
  7 + systemClassOptions: [],
  8 + specialRecordTypeOption: [],
8 9 }
9 10 },
10 11 created() {},
... ... @@ -24,6 +25,11 @@ export default {
24 25 !list && (list = await this.$store.dispatch('getSystemType', val));
25 26 this.systemClassOptions = list;
26 27 },
  28 + async initSpecialRecordTypeOption() {
  29 + let list = this.$store.state.meta.specialRecordTypeList;
  30 + !list && (list = await this.$store.dispatch('getTypeListByCode', 'specialRecordType'));
  31 + this.specialRecordTypeOption = list;
  32 + },
27 33  
28 34 },
29 35 }
30 36 \ No newline at end of file
... ...
src/store/modules/meta.js
1 1 // 下拉字段配置
2 2 import { register } from "@/api";
3 3 // 系统类型
4   -import { getSystemTypeList } from "@/api/common";
  4 +import { getSystemTypeList, getSpecialRecordType } from "@/api/common";
5 5 // 所属区县
6 6 import { getAreaSelect } from "@/api/baseData/area";
7 7 // 系统分类
... ... @@ -15,6 +15,7 @@ const meta = {
15 15 area: '', // 系统类型
16 16 systemClass: {},
17 17 externalAssistanceList: '', // 外协
  18 + specialRecordTypeList: '', // 特殊备案
18 19 },
19 20  
20 21 mutations: {
... ... @@ -30,6 +31,9 @@ const meta = {
30 31 SET_EXTERNALASSISTANCE_CLASS: (state, data) => {
31 32 state.externalAssistanceList = data;
32 33 },
  34 + SET_SPECIALRECORDTYPELIST_CLASS: (state, data) => {
  35 + state.specialRecordTypeList = data;
  36 + },
33 37 },
34 38  
35 39 actions: {
... ... @@ -54,6 +58,12 @@ const meta = {
54 58 resolve(res.data)
55 59 }).catch(error => { reject(error) })
56 60 break;
  61 + case 'specialRecordType':
  62 + getSpecialRecordType().then(res => {
  63 + commit('SET_SPECIALRECORDTYPELIST_CLASS', res.data.list)
  64 + resolve(res.data.list)
  65 + }).catch(error => { reject(error) })
  66 + break;
57 67  
58 68 default:
59 69 break;
... ...
src/utils/define.js
1 1 // 开发环境接口配置
2 2 // JAVA Boot版本对应后端接口地址
3 3 // JAVA Cloud对应网关地址
4   -const APIURl = 'http://localhost:8080'
  4 +const APIURl = 'http://8.130.38.56:8043'
5 5  
6 6 module.exports = {
7 7 APIURl: APIURl,
8 8 timeout: process.env.NODE_ENV === 'development' ? 10000 : 1000000,
9   - WebSocketUrl: process.env.NODE_ENV === 'development' ? APIURl.replace('http', 'ws') + '/websocket' : process.env.VUE_APP_BASE_WSS,
10   - // WebSocketUrl: process.env.NODE_ENV === 'development' ? APIURl.replace('http', 'ws') + '/api/message/websocket' : process.env.VUE_APP_BASE_WSS,
  9 + // WebSocketUrl: process.env.NODE_ENV === 'development' ? APIURl.replace('http', 'ws') + '/websocket' : process.env.VUE_APP_BASE_WSS,
  10 + WebSocketUrl: process.env.NODE_ENV === 'development' ? APIURl.replace('http', 'ws') + '/api/message/websocket' : process.env.VUE_APP_BASE_WSS,
11 11 comUploadUrl: process.env.VUE_APP_BASE_API + '/api/file/Uploader',
12 12 comUrl: process.env.VUE_APP_BASE_API,
13 13 // 本地文件预览
... ...
src/utils/ncc.js
... ... @@ -218,6 +218,21 @@ const ncc = {
218 218 if (!cellValue) return ''
219 219 return dayjs(cellValue).format(format)
220 220 },
  221 + timeDeadLine(time){
  222 + let date = (new Date()).getTime();
  223 + let timeDiff = time - date;
  224 +
  225 + if(timeDiff < 0) {
  226 + // 超时
  227 + return 'danger'
  228 + } else if(timeDiff / (1000 * 60 * 60 * 24) < 3) {
  229 + // 小于三天警告即将超时
  230 + return 'warning'
  231 + } else {
  232 + // 未超时
  233 + return 'primary'
  234 + }
  235 + },
221 236 storageSet(obj) {
222 237 for (let i in obj) {
223 238 cacheItem(i, obj[i])
... ...
src/views/DisposalSuggestions/Form.vue
... ... @@ -74,8 +74,8 @@
74 74 </el-form-item>
75 75 </el-col>
76 76 <el-col :span="24">
77   - <el-form-item label="截止时间" prop="endTime">
78   - <el-date-picker v-model="suggestionForm.endTime" type="date" placeholder="选择日期"></el-date-picker>
  77 + <el-form-item label="截止时间" prop="deadline">
  78 + <el-date-picker v-model="suggestionForm.deadline" type="date" placeholder="选择日期"></el-date-picker>
79 79 </el-form-item>
80 80 </el-col>
81 81 </el-form>
... ... @@ -122,7 +122,7 @@
122 122 disposalSuggestions: "", //处置建议
123 123 judgmentOpinions: "", //判断意见
124 124 judgmentClass: "", //判断分类
125   - endTime: '',
  125 + deadline: '',
126 126 }
127 127 }
128 128 },
... ...
src/views/DisposalSuggestions/index.vue
... ... @@ -203,8 +203,5 @@
203 203 height: calc(100% - 47px);
204 204 overflow-y: scroll;
205 205 }
206   - .item-body {
207   - height: calc(100% - 35px);
208   - }
209 206 }
210 207 </style>
211 208 \ No newline at end of file
... ...
src/views/baseCaseHandling/index.vue
... ... @@ -354,8 +354,5 @@ export default {
354 354 height: calc(100% - 47px);
355 355 overflow-y: scroll;
356 356 }
357   - .item-body {
358   - height: calc(100% - 35px);
359   - }
360 357 }
361 358 </style>
... ...
src/views/baseInspectionReport/Form.vue
... ... @@ -42,13 +42,6 @@
42 42 <el-col :span="23">
43 43 <el-form-item label="平台名称" prop="platformName">
44 44 <SelsctLoad v-model="dataForm.platformName"/>
45   - <!-- <el-input
46   - v-model="dataForm.platformName"
47   - placeholder="请输入"
48   - clearable
49   - :style="{ width: '100%' }"
50   - >
51   - </el-input> -->
52 45 </el-form-item>
53 46 </el-col>
54 47 <el-col :span="23">
... ... @@ -78,19 +71,13 @@
78 71 </el-col>
79 72 <el-col :span="23">
80 73 <el-form-item label="关键词" prop="questionClass">
81   - <el-select
  74 + <el-input
82 75 v-model="dataForm.questionClass"
83   - placeholder="请选择"
  76 + placeholder="请输入关键词"
84 77 clearable
85 78 :style="{ width: '100%' }"
86 79 >
87   - <el-option
88   - v-for="(item, index) in questionClassOptions"
89   - :key="index"
90   - :label="item.fullName"
91   - :value="item.id"
92   - ></el-option>
93   - </el-select>
  80 + </el-input>
94 81 </el-form-item>
95 82 </el-col>
96 83 <el-col :span="23">
... ...
src/views/baseSpecialAction/Form.vue
... ... @@ -5,7 +5,7 @@
5 5 :visible.sync="visible"
6 6 class="NCC-dialog NCC-dialog_center"
7 7 lock-scroll
8   - width="70%"
  8 + width="50%"
9 9 >
10 10 <el-row :gutter="15" style="padding-top: 10px">
11 11 <el-form
... ... @@ -59,6 +59,38 @@
59 59 </NCC-UploadFz>
60 60 </el-form-item>
61 61 </el-col>
  62 + <el-col :span="23" v-if="ncc.hasFormP('recordCommunicationArea') && !dataForm.id">
  63 + <el-form-item label="台账区域" prop="recordCommunicationArea">
  64 + <el-checkbox-group v-model="dataForm.recordCommunicationArea" :style="{}">
  65 + <el-checkbox
  66 + v-for="(item, index) in areaOptions"
  67 + :key="index"
  68 + :label="item.id"
  69 + >{{ item.fullName }}</el-checkbox
  70 + >
  71 + </el-checkbox-group>
  72 + <div style="margin-top: 10px">
  73 + <el-button size="mini" @click="selectAreaAll('area')">全选</el-button>
  74 + <el-button size="mini" @click="closeAreaAll('area')">反选</el-button>
  75 + </div>
  76 + </el-form-item>
  77 + </el-col>
  78 + <el-col :span="23" v-if="ncc.hasFormP('recordCommunicationOut') && !dataForm.id">
  79 + <el-form-item label="台账外协" prop="recordCommunicationOut">
  80 + <el-checkbox-group v-model="dataForm.recordCommunicationOut" :style="{}">
  81 + <el-checkbox
  82 + v-for="(item, index) in communicationOutOptions"
  83 + :key="index"
  84 + :label="item.id"
  85 + >{{ item.fullName }}</el-checkbox
  86 + >
  87 + </el-checkbox-group>
  88 + <div style="margin-top: 10px">
  89 + <el-button size="mini" @click="selectAreaAll">全选</el-button>
  90 + <el-button size="mini" @click="closeAreaAll">反选</el-button>
  91 + </div>
  92 + </el-form-item>
  93 + </el-col>
62 94 <el-col :span="23" v-if="ncc.hasFormP('communicationArea') && dataForm.id">
63 95 <el-form-item label="传达区域" prop="communicationArea">
64 96 <el-checkbox-group v-model="dataForm.communicationArea" :style="{}">
... ... @@ -145,6 +177,8 @@ export default {
145 177 title: undefined,
146 178 content: undefined,
147 179 releaseTime: undefined,
  180 + recordCommunicationOut: [],
  181 + recordCommunicationArea: [],
148 182 annex: [],
149 183 communicationArea: [],
150 184 communicationOut: [],
... ...
src/views/baseSpecialAction/index.vue
... ... @@ -39,7 +39,11 @@
39 39 <NCC-table v-loading="listLoading" :data="list">
40 40 <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip/>
41 41 <el-table-column prop="title" label="标题" align="left" show-overflow-tooltip/>
42   - <el-table-column prop="state" label="状态" align="left" show-overflow-tooltip/>
  42 + <el-table-column prop="state" label="状态" align="left" show-overflow-tooltip width="80">
  43 + <template slot-scope="scope">
  44 + <el-tag :type="scope.row.state == '已发布' ? 'success' : 'warning'">{{scope.row.state}}</el-tag>
  45 + </template>
  46 + </el-table-column>
43 47 <el-table-column prop="creatorTime" label="发布时间" align="left" :formatter="ncc.tableDateFormat" show-overflow-tooltip/>
44 48 <el-table-column label="传达区域" prop="communicationArea" align="left" show-overflow-tooltip>
45 49 <template slot-scope="scope">{{ JSON.parse(scope.row.communicationArea) | dynamicText(communicationAreaOptions) }}</template>
... ... @@ -47,7 +51,11 @@
47 51 <el-table-column label="传达外协" prop="communicationOut" align="left" show-overflow-tooltip>
48 52 <template slot-scope="scope">{{ JSON.parse(scope.row.communicationOut) | dynamicText(communicationOutOptions) }}</template>
49 53 </el-table-column>
50   - <el-table-column prop="deadline" label="截止日期" align="left" :formatter="ncc.tableDateFormat" show-overflow-tooltip/>
  54 + <el-table-column prop="deadline" label="截止日期" align="left" :formatter="ncc.tableDateFormat" show-overflow-tooltip>
  55 + <template slot-scope="scope">
  56 + <el-tag v-if="scope.row.deadline" :type="ncc.timeDeadLine(scope.row.deadline)">{{ ncc.tableDateFormat(scope.row, 'deadline', scope.row.deadline) }}</el-tag>
  57 + </template>
  58 + </el-table-column>
51 59 <el-table-column prop="creatorUserId" show-overflow-tooltip label="创建用户" align="left"/>
52 60 <el-table-column label="操作" fixed="right" width="100">
53 61 <template slot-scope="scope">
... ...
src/views/baseSpecialhandle/index.vue
... ... @@ -34,12 +34,19 @@
34 34 <NCC-table v-loading="listLoading" :data="list">
35 35 <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip />
36 36 <el-table-column prop="title" label="标题" align="left" show-overflow-tooltip />
37   - <el-table-column prop="state" label="状态" align="left" show-overflow-tooltip />
38   - <el-table-column prop="deadline" label="截止日期" align="left" :formatter="ncc.tableDateFormat"
39   - show-overflow-tooltip />
  37 + <el-table-column prop="state" label="状态" align="left" show-overflow-tooltip >
  38 + <template slot-scope="scope">
  39 + <el-tag :type="scope.row.state == '已填写' ? 'success' : 'warning'">{{ scope.row.state }}</el-tag>
  40 + </template>
  41 + </el-table-column>
  42 + <el-table-column prop="deadline" label="截止日期" align="left" :formatter="ncc.tableDateFormat" show-overflow-tooltip>
  43 + <template slot-scope="scope">
  44 + <el-tag v-if="scope.row.deadline" :type="ncc.timeDeadLine(scope.row.deadline)">{{ ncc.tableDateFormat(scope.row, 'deadline', scope.row.deadline) }}</el-tag>
  45 + </template>
  46 + </el-table-column>
40 47 <el-table-column label="操作" fixed="right" width="130">
41 48 <template slot-scope="scope">
42   - <el-button type="text" @click="toFillForm(scope.row)">{{scope.row.state == '已填写' ? '修改' : '处理'}}</el-button>
  49 + <el-button type="text" @click="toFillForm(scope.row)" :disabled="ncc.timeDeadLine(scope.row.deadline) == 'danger' && scope.row.state == '已填写'">{{scope.row.state == '已填写' ? '修改' : '处理'}}</el-button>
43 50 <!-- <el-button type="text" @click="toFillForm(scope.row)" v-if="scope.row.state == '已填写'">详情</el-button> -->
44 51 </template>
45 52 </el-table-column>
... ...
src/views/baseSystemInfo/DetailForm.vue 0 → 100644
  1 +<template>
  2 + <el-dialog
  3 + title="详情"
  4 + :close-on-click-modal="false"
  5 + :visible.sync="visible"
  6 + class="NCC-dialog NCC-dialog_center systemInfoDialog"
  7 + lock-scroll
  8 + width="70%"
  9 + >
  10 + <el-row :gutter="15" style="height: 65vh" v-loading="loading">
  11 + <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
  12 + <el-tab-pane label="应用信息" name="1">
  13 + <div class="system-info">
  14 + <el-col :span="12">
  15 + <div class="form-item">
  16 + <div class="label w-100">主体企业:</div>
  17 + {{ dataForm.companyName || "--" }}
  18 + </div>
  19 + </el-col>
  20 + <el-col :span="12">
  21 + <div class="form-item">
  22 + <div class="label w-100">系统类型:</div>
  23 + {{ dataForm.systemType | dynamicTextUP(systemTypeOptions) }}
  24 + </div>
  25 + </el-col>
  26 + <template
  27 + v-if="
  28 + dataForm.systemType &&
  29 + dataForm.systemType != '580634746028033285'
  30 + "
  31 + >
  32 + <el-col :span="12">
  33 + <div class="form-item">
  34 + <div class="label w-100">特殊备案类型:</div>
  35 + {{ dataForm.systemType || "--" }}
  36 + </div>
  37 + </el-col>
  38 + <el-col :span="24">
  39 + <div class="form-item">
  40 + <div class="label w-100">特殊备案内容:</div>
  41 + {{ dataForm.systemType || "--" }}
  42 + </div>
  43 + </el-col>
  44 + <el-col :span="12">
  45 + <div class="form-item">
  46 + <div class="label w-100">特殊备案号:</div>
  47 + {{ dataForm.systemType || "--" }}
  48 + </div>
  49 + </el-col>
  50 + <el-col :span="12">
  51 + <div class="form-item">
  52 + <div class="label w-100">特殊备案时间:</div>
  53 + {{ dataForm.systemType || "--" }}
  54 + </div>
  55 + </el-col>
  56 + </template>
  57 + <el-col :span="12">
  58 + <div class="form-item">
  59 + <div class="label w-100">系统名称:</div>
  60 + {{ dataForm.systemName || "--" }}
  61 + </div>
  62 + </el-col>
  63 + <el-col :span="12">
  64 + <div class="form-item">
  65 + <div class="label w-100">系统分类:</div>
  66 + {{ dataForm.systemClass | dynamicTextClassName(systemClassOptions) }}
  67 + </div>
  68 + </el-col>
  69 + <el-col :span="12">
  70 + <div class="form-item">
  71 + <div class="label w-100">备案许可证:</div>
  72 + {{ dataForm.recordLicense || "--" }}
  73 + </div>
  74 + </el-col>
  75 + <el-col :span="12">
  76 + <div class="form-item">
  77 + <div class="label w-100">归属平台:</div>
  78 + {{ dataForm.platform || "--" }}
  79 + </div>
  80 + </el-col>
  81 + <el-col :span="24">
  82 + <div class="form-item">
  83 + <div class="label w-100">域名:</div>
  84 + {{ dataForm.domain || "--" }}
  85 + </div>
  86 + </el-col>
  87 + <el-col :span="12">
  88 + <div class="form-item">
  89 + <div class="label w-100">下载量:</div>
  90 + {{ dataForm.systemDownloadVolume || "--" }}
  91 + </div>
  92 + </el-col>
  93 + <el-col :span="12">
  94 + <div class="form-item">
  95 + <div class="label w-100">版本:</div>
  96 + {{ dataForm.version || "--" }}
  97 + </div>
  98 + </el-col>
  99 + <el-col :span="12">
  100 + <div class="form-item">
  101 + <div class="label w-100">负责人姓名:</div>
  102 + {{ dataForm.principalName || "--" }}
  103 + </div>
  104 + </el-col>
  105 + <el-col :span="12">
  106 + <div class="form-item">
  107 + <div class="label w-100">负责人电话:</div>
  108 + {{ dataForm.principalPhone || "--" }}
  109 + </div>
  110 + </el-col>
  111 + <el-col :span="24">
  112 + <div class="form-item">
  113 + <div class="label w-100">办公地址:</div>
  114 + {{ dataForm.officeAddress || "--" }}
  115 + </div>
  116 + </el-col>
  117 + <el-col :span="24">
  118 + <div class="form-item">
  119 + <div class="label w-100">系统图标:</div>
  120 + {{ dataForm.systemIcon || "--" }}
  121 + </div>
  122 + </el-col>
  123 + </div>
  124 + </el-tab-pane>
  125 + <el-tab-pane label="公司信息" name="2">
  126 + <div class="company-info">
  127 + <el-col :span="12">
  128 + <div class="form-item">
  129 + <div class="label w-100">公司名称:</div>
  130 + {{ companyForm.companyName || "--" }}
  131 + </div>
  132 + </el-col>
  133 + <el-col :span="12">
  134 + <div class="form-item">
  135 + <div class="label w-100">社会信用代:</div>
  136 + {{ companyForm.socialCreditAgency || "--" }}
  137 + </div>
  138 + </el-col>
  139 + <el-col :span="12">
  140 + <div class="form-item">
  141 + <div class="label w-100">公司法人:</div>
  142 + {{ companyForm.legalPerson || "--" }}
  143 + </div>
  144 + </el-col>
  145 + <el-col :span="12">
  146 + <div class="form-item">
  147 + <div class="label w-100">公司地址:</div>
  148 + {{ companyForm.address || "--" }}
  149 + </div>
  150 + </el-col>
  151 + <el-col :span="12">
  152 + <div class="form-item">
  153 + <div class="label w-100">联系人:</div>
  154 + {{ companyForm.contactUser || "--" }}
  155 + </div>
  156 + </el-col>
  157 + <el-col :span="12">
  158 + <div class="form-item">
  159 + <div class="label w-100">联系方式:</div>
  160 + {{ companyForm.contactPhone || "--" }}
  161 + </div>
  162 + </el-col>
  163 + <el-col :span="12">
  164 + <div class="form-item">
  165 + <div class="label w-100">所属区县:</div>
  166 + {{ companyForm.areaName || "--" }}
  167 + </div>
  168 + </el-col>
  169 + <el-col :span="24">
  170 + <div class="form-item">
  171 + <div class="label w-100">其他信息:</div>
  172 + <div v-html="companyForm.otherInfo"></div>
  173 + </div>
  174 + </el-col>
  175 + </div>
  176 + </el-tab-pane>
  177 + <el-tab-pane label="核查处置记录" name="3">核查处置记录</el-tab-pane>
  178 + <el-tab-pane label="网信执法记录" name="4">网信执法记录</el-tab-pane>
  179 + <el-tab-pane label="数据日志" name="5">
  180 + <div class="infinite-list-wrapper" style="overflow:auto;height: calc(65vh - 45px);">
  181 + <el-timeline class="list" v-infinite-scroll="initInfoRecord" :infinite-scroll-disabled="record_disabled">
  182 + <el-timeline-item
  183 + placement="top"
  184 + v-for="(v, i) in updataRecordList"
  185 + :key="i"
  186 + >
  187 + <el-card>
  188 + <h4 v-if="v.content">
  189 + <!-- <p v-for="(item, index) in v.updataList" :key="index">
  190 + 将“{{ item.PropertyName }}”从“{{
  191 + item.OldValue
  192 + }}”改为“{{ item.NewValue }}”
  193 + </p> -->
  194 + <p v-for="(item, index) in v.changeRecord" :key="index">{{ item }}</p>
  195 + </h4>
  196 + <h4 v-else>
  197 + <p>{{ v.describe }}</p>
  198 + </h4>
  199 + <p>{{ v.creatorUserId }} 提交于 {{ v.updataTime }}</p>
  200 + </el-card>
  201 + </el-timeline-item>
  202 + </el-timeline>
  203 + <p v-if="record_loading">加载中...</p>
  204 + <p v-if="updataRecordList.length && record_noMore">没有更多了</p>
  205 + <el-empty v-if="!updataRecordList.length && !record_loading" description="暂无数据"></el-empty>
  206 + </div>
  207 + </el-tab-pane>
  208 + </el-tabs>
  209 + </el-row>
  210 + <span slot="footer" class="dialog-footer">
  211 + <el-button @click="visible = false">取 消</el-button>
  212 + </span>
  213 + </el-dialog>
  214 +</template>
  215 +<script>
  216 +import request from "@/utils/request";
  217 +import { getSystemDetail, getUpdataRecord } from "@/api/baseData/info";
  218 +import { getCompanyInfoById } from "@/api/baseData/company";
  219 +export default {
  220 + components: {},
  221 + props: [],
  222 + data() {
  223 + return {
  224 + loading: false,
  225 + visible: false,
  226 +
  227 + activeName: "1",
  228 +
  229 + // 应用信息
  230 + dataForm: {
  231 + id: undefined,
  232 + questionFrom: undefined,
  233 + platformName: undefined,
  234 + platformType: undefined,
  235 + questionType: undefined,
  236 + questionClass: undefined,
  237 + questionContent: undefined,
  238 + link: undefined,
  239 + obtainEvidence: [],
  240 + annex: [],
  241 + },
  242 + systemTypeOptions: [],
  243 + systemClassOptions: [],
  244 +
  245 + // 公司信息
  246 + companyForm: {},
  247 +
  248 + // 数据日志
  249 + record_loading: false,
  250 + queryList: {
  251 + pageIndex: 1,
  252 + pageSize: 10,
  253 + },
  254 + updataRecordList: [],
  255 + record_total: ''
  256 + };
  257 + },
  258 + computed: {
  259 + record_noMore() {
  260 + return this.updataRecordList.length >= this.record_total;
  261 + },
  262 + record_disabled () {
  263 + return this.record_loading || this.record_noMore;
  264 + }
  265 + },
  266 + watch: {},
  267 + created() {
  268 + this.initSystemTypeList();
  269 + },
  270 + mounted() {},
  271 + methods: {
  272 + init(row) {
  273 + this.visible = true;
  274 + this.dataForm.id = row.Id;
  275 + this.activeName = '1'
  276 + this.$nextTick(() => {
  277 + this.initSystemForm(this.dataForm.id, row.companyName)
  278 + });
  279 + },
  280 + handleClick(e) {
  281 + console.log(e);
  282 +
  283 + switch (e.index) {
  284 + case '1':
  285 + // 公司信息
  286 + this.initCompanyForm();
  287 +
  288 + break;
  289 + case '4':
  290 + this.updataRecordList = [];
  291 + this.queryList = {
  292 + pageIndex: 1,
  293 + pageSize: 10,
  294 + };
  295 + // 数据日志
  296 + this.initInfoRecord();
  297 + break;
  298 +
  299 + default:
  300 + break;
  301 + }
  302 +
  303 + },
  304 +
  305 + // 初始化应用信息
  306 + async initSystemForm(id, companyName) {
  307 + this.loading = true;
  308 + let { data } = await getSystemDetail(id);
  309 + await this.initSystemClassList(data.systemType);
  310 + this.dataForm = data;
  311 + this.dataForm.companyName = companyName;
  312 + this.loading = false;
  313 + },
  314 + async initSystemTypeList() {
  315 + let list = this.$store.state.meta.system;
  316 + !list &&
  317 + (list = await this.$store.dispatch("getTypeListByCode", "system"));
  318 + this.systemTypeOptions = list;
  319 + },
  320 +
  321 + async initSystemClassList(val) {
  322 + let list = this.$store.state.meta.systemClass[val];
  323 + !list && (list = await this.$store.dispatch('getSystemType', val));
  324 + this.systemClassOptions = list;
  325 + },
  326 +
  327 + // 初始化公司信息
  328 + async initCompanyForm() {
  329 + this.loading = true;
  330 + let res = await getCompanyInfoById(this.dataForm.companyId);
  331 + this.companyForm = res.data;
  332 + this.loading = false;
  333 + },
  334 +
  335 + // 数据日志
  336 + async initInfoRecord() {
  337 + this.record_loading = true;
  338 + await getUpdataRecord({
  339 + id: this.dataForm.id,
  340 + ...this.queryList,
  341 + }).then(({ data }) => {
  342 + data.list.forEach((item) => {
  343 + let date = new Date(item.creatorTime * 1000);
  344 + item.updataTime = this.$m(date).format("YYYY-MM-DD HH:mm:ss");
  345 + item.updataList = JSON.parse(item.content);
  346 + item.changeRecord = item.content ? JSON.parse(item.describe) : item.describe;
  347 + });
  348 + this.record_total = data.pagination.total
  349 + this.updataRecordList = [...this.updataRecordList, ...data.list];
  350 + this.record_loading = false;
  351 + this.queryList.pageIndex += 1;
  352 + });
  353 + },
  354 +
  355 + goBack() {
  356 + this.$emit("refresh");
  357 + },
  358 +
  359 + },
  360 +};
  361 +</script>
  362 +<style lang="scss" scoped>
  363 +.systemInfoDialog {
  364 + :deep(.el-dialog__body) {
  365 + overflow: unset !important;
  366 + :deep(.el-tabs__content) {
  367 + height: calc(65vh - 45px);
  368 + }
  369 + }
  370 +}
  371 +</style>
... ...
src/views/baseSystemInfo/index.vue
... ... @@ -123,9 +123,6 @@
123 123 <el-table-column label="操作" width="250">
124 124 <!-- 查看,修改,归属地变更,上报 -->
125 125 <template slot-scope="scope">
126   - <InfoEditRecord class="btn_dialog" :systemId="scope.row.Id">
127   - <el-button size="mini" type="text">查看</el-button>
128   - </InfoEditRecord>
129 126 <infoForm
130 127 class="btn_dialog"
131 128 type="edit"
... ... @@ -134,6 +131,7 @@
134 131 >
135 132 <el-button size="mini" type="text">修改</el-button>
136 133 </infoForm>
  134 + <el-button size="mini" type="text" @click="toDetail(scope.row)">查看</el-button>
137 135 <el-button
138 136 size="mini"
139 137 type="text"
... ... @@ -146,12 +144,12 @@
146 144 @click="toInspection(scope.row)"
147 145 >上报</el-button
148 146 >
149   - <el-button
  147 + <!-- <el-button
150 148 size="mini"
151 149 type="text"
152 150 @click="toChangeRecord(scope.row)"
153 151 >整改清单</el-button
154   - >
  152 + > -->
155 153 </template>
156 154 </el-table-column>
157 155 </NCC-table>
... ... @@ -215,6 +213,7 @@
215 213 @refresh="refresh"
216 214 />
217 215 <ChangeRecord v-if="ChangeRecordVisible" ref="ChangeRecord"/>
  216 + <DetailForm v-if="DetailFormVisible" ref="DetailForm"/>
218 217 </div>
219 218 </div>
220 219 </div>
... ... @@ -225,14 +224,13 @@ import { getInfoList } from &quot;@/api/baseData/info&quot;;
225 224 import { applnyChageArea } from "@/api/baseData/info";
226 225 import infoMixin from "@/mixins/info";
227 226 import InspectionForm from "./InspectForm.vue";
  227 +import DetailForm from './DetailForm.vue'
228 228 import ChangeRecord from "./ChangeRecord.vue";
229 229  
230 230 export default {
231 231 name: "SystemInfo",
232 232 mixins: [infoMixin],
233   - components: {
234   - InspectionForm, ChangeRecord
235   - },
  233 + components: { InspectionForm, ChangeRecord, DetailForm },
236 234 data() {
237 235 return {
238 236 loading: false,
... ... @@ -274,6 +272,9 @@ export default {
274 272 InspectionFormVisible: false,
275 273 ChangeRecordVisible: false,
276 274 btnLoading: false,
  275 +
  276 + // 详情
  277 + DetailFormVisible: false,
277 278 };
278 279 },
279 280 created() {
... ... @@ -345,6 +346,14 @@ export default {
345 346 this.loading = false;
346 347 });
347 348 },
  349 + toDetail(row) {
  350 + console.log(row);
  351 +
  352 + this.DetailFormVisible = true;
  353 + this.$nextTick(() => {
  354 + this.$refs.DetailForm.init(row);
  355 + });
  356 + },
348 357 // 上报
349 358 toInspection(row) {
350 359 this.InspectionFormVisible = true;
... ...
src/views/homePage/HomePage.vue
... ... @@ -22,9 +22,6 @@
22 22 <infoForm type="add" @reInit="toSearchInfoList">
23 23 <el-button type="success">新增</el-button>
24 24 </infoForm>
25   - <el-button type="text" style="color: #fff; margin-left: 10px"
26   - >更多</el-button
27   - >
28 25 </div>
29 26 <div class="info">
30 27 <router-view ref="info"></router-view>
... ...
src/views/homePage/components/Header.vue
... ... @@ -88,7 +88,7 @@ header {
88 88 .user {
89 89 position: absolute;
90 90 right: 33px;
91   - top: 25px;
  91 + top: 13px;
92 92 display: flex;
93 93 align-items: center;
94 94 flex-direction: row;
... ...
src/views/homePage/components/news/NewsDialog.vue
... ... @@ -158,7 +158,7 @@ export default {
158 158 flex-direction: row;
159 159 justify-content: space-between;
160 160 align-items: center;
161   - color: #ccc;
  161 + color: #454040;
162 162 font-size: 12px;
163 163 line-height: 30px;
164 164 }
... ...
src/views/homePage/components/news/index.vue
... ... @@ -44,6 +44,7 @@ export default {
44 44 methods: {
45 45 changeMagNum(val) {
46 46 this.isHaveMsg = val ? true : false;
  47 + this.messageCount = val;
47 48 },
48 49 initWebSocket() {
49 50 console.log("1");
... ... @@ -69,8 +70,6 @@ export default {
69 70 let data = JSON.parse(event.data);
70 71 console.log(data, "event.data");
71 72 if (data.method == "initMessage") {
72   - this.messageCount =
73   - data.unreadMessageCount + data.unreadNoticeCount;
74 73 this.isTwinkle = !!data.unreadNums.length;
75 74 this.$refs.MessageDialog.init();
76 75 }
... ... @@ -82,9 +81,12 @@ export default {
82 81 }
83 82 //消息推送(消息公告用的)
84 83 if (data.method == "messagePush") {
85   - console.log("messagePush", "消息推送(消息公告用的)", data);
86   - this.messageCount += data.unreadNoticeCount;
87   - if (this.$refs.MessageList.visible) this.$refs.MessageList.init();
  84 + this.$refs.MessageDialog.init();
  85 + this.$notify({
  86 + title: '消息推送',
  87 + message: data.title,
  88 + position: 'bottom-right'
  89 + });
88 90 }
89 91 //用户过期
90 92 if (data.method == "logout") {
... ...
src/views/homePage/homePage.scss
... ... @@ -7,7 +7,7 @@
7 7 background-repeat: no-repeat; /* 不重复背景图片 */
8 8 }
9 9 .content {
10   - margin-top: 56px;
  10 + margin-top: 13px;
11 11 position: relative;
12 12 .navs {
13 13 position: absolute;
... ...
src/views/overView/Overview.vue
... ... @@ -20,7 +20,11 @@
20 20 <el-table-column prop="taskType" label="任务类型" show-overflow-tooltip width="100"/>
21 21 <el-table-column prop="taskState" label="状态" show-overflow-tooltip width="80"/>
22 22 <el-table-column prop="taskContent" label="任务内容" show-overflow-tooltip />
23   - <el-table-column prop="deadLine" label="任务期限" show-overflow-tooltip :formatter="ncc.tableDateFormat" width="130"/>
  23 + <el-table-column prop="deadLine" label="任务期限" show-overflow-tooltip :formatter="ncc.tableDateFormat" width="140">
  24 + <template slot-scope="scope">
  25 + <el-tag :type="ncc.timeDeadLine(scope.row.deadLine)">{{ ncc.tableDateFormat(scope.row, 'deadLine', scope.row.deadLine) }}</el-tag>
  26 + </template>
  27 + </el-table-column>
24 28 <el-table-column label="操作" width="100">
25 29 <template slot-scope="scope">
26 30 <el-button type="primary" size="small" @click="handleTask(scope.row)">处理</el-button>
... ... @@ -119,7 +123,7 @@
119 123 </div>
120 124 </el-col>
121 125 </el-row>
122   - <MsgForm v-if="MsgFormVisible" ref="MsgForm" @refreshDataList="msgRefresh"/>
  126 + <MsgForm v-if="MsgFormVisible" ref="MsgForm" @refresh="msgRefresh"/>
123 127 <HandleInspectForm v-if="HandleInspectFormVisible" ref="HandleInspectForm" @refresh="(val) => {taskRefresh('HandleInspectFormVisible', val)}"/>
124 128 <NCC-Form v-if="formVisible" ref="NCCForm" @refreshDataList="(val) => {taskRefresh('formVisible', val)}" />
125 129 </div>
... ... @@ -200,6 +204,8 @@ export default {
200 204 this.msgList = res.data.list;
201 205 this.msgTotal = res.data.pagination.total;
202 206 this.msgLoading = false;
  207 + }).catch(() => {
  208 + this.msgLoading = false;
203 209 });
204 210 },
205 211 resetMsg() {
... ... @@ -252,6 +258,8 @@ export default {
252 258 this.taskList = res.data.list;
253 259 this.taskTotal = res.data.pagination.total;
254 260 this.taskLoading = false;
  261 + }).catch(() => {
  262 + this.taskLoading = false;
255 263 });
256 264 },
257 265 resetTask() {
... ... @@ -310,7 +318,7 @@ export default {
310 318 background-color: rgba(244, 244, 245, 0.38);
311 319 margin-bottom: 15px;
312 320 &.todo {
313   - height: calc(100vh - 210px);
  321 + height: calc(100vh - 160px);
314 322 }
315 323 //&.earmarked {
316 324 // height: calc(50vh - 115px);
... ... @@ -320,7 +328,7 @@ export default {
320 328 // height: calc(50vh - 60px);
321 329 // }
322 330 &.msg {
323   - height: calc(100vh - 200px);
  331 + height: calc(100vh - 160px);
324 332 margin-bottom: 0;
325 333 }
326 334 .item-title {
... ...
src/views/overView/msgForm.vue
1 1 <template>
2   - <el-dialog
3   - :title="isDetail ? '通知详情' : '发布通知'"
4   - :close-on-click-modal="false"
5   - :visible.sync="visible"
6   - class="NCC-dialog NCC-dialog_center msg-dialog"
7   - lock-scroll
8   - width="50%"
  2 + <el-dialog
  3 + :title="isDetail ? '通知详情' : '发布通知'"
  4 + :close-on-click-modal="false"
  5 + :visible.sync="visible"
  6 + class="NCC-dialog NCC-dialog_center msg-dialog"
  7 + lock-scroll
  8 + width="50%"
  9 + >
  10 + <el-row :gutter="15" style="padding-top: 10px" v-if="!isDetail">
  11 + <el-form
  12 + ref="elForm"
  13 + :model="dataForm"
  14 + size="small"
  15 + label-width="80px"
  16 + label-position="right"
  17 + :disabled="!!isDetail"
  18 + :rules="rules"
  19 + >
  20 + <el-col :span="24">
  21 + <el-form-item label="通知标题" prop="title">
  22 + <el-input v-model="dataForm.title"></el-input>
  23 + </el-form-item>
  24 + </el-col>
  25 + <el-col :span="24">
  26 + <el-form-item label="内容" prop="bodyContent">
  27 + <NCC-Quill
  28 + v-model="dataForm.bodyContent"
  29 + placeholder="请输入内容..."
  30 + :disabled="!!isDetail"
  31 + />
  32 + </el-form-item>
  33 + </el-col>
  34 + <el-col :span="24">
  35 + <el-form-item label="附件上传" prop="imgUrl">
  36 + <NCC-UploadFz
  37 + v-model="dataForm.imgUrl"
  38 + :fileSize="5"
  39 + sizeUnit="MB"
  40 + :limit="9"
  41 + buttonText="点击上传"
  42 + />
  43 + </el-form-item>
  44 + </el-col>
  45 + <el-col :span="24">
  46 + <el-form-item label="传达区域" prop="communicationArea">
  47 + <el-checkbox-group v-model="dataForm.communicationArea" :style="{}">
  48 + <el-checkbox
  49 + v-for="(item, index) in areaOptions"
  50 + :key="index"
  51 + :label="item.id"
  52 + >{{ item.fullName }}</el-checkbox
  53 + >
  54 + </el-checkbox-group>
  55 + <div style="margin-top: 10px">
  56 + <el-button size="mini" @click="selectAreaAll('area')"
  57 + >全选</el-button
  58 + >
  59 + <el-button size="mini" @click="closeAreaAll('area')"
  60 + >反选</el-button
  61 + >
  62 + </div>
  63 + </el-form-item>
  64 + </el-col>
  65 + <el-col :span="24">
  66 + <el-form-item label="传达外协" prop="communicationOut">
  67 + <el-checkbox-group v-model="dataForm.communicationOut" :style="{}">
  68 + <el-checkbox
  69 + v-for="(item, index) in communicationOutOptions"
  70 + :key="index"
  71 + :label="item.id"
  72 + >{{ item.fullName }}</el-checkbox
  73 + >
  74 + </el-checkbox-group>
  75 + <div style="margin-top: 10px">
  76 + <el-button size="mini" @click="selectAreaAll">全选</el-button>
  77 + <el-button size="mini" @click="closeAreaAll">反选</el-button>
  78 + </div>
  79 + </el-form-item>
  80 + </el-col>
  81 + </el-form>
  82 + </el-row>
  83 + <el-row
  84 + :gutter="15"
  85 + style="padding-top: 10px"
  86 + class="msg-box"
  87 + v-loading="loading"
  88 + v-else
9 89 >
10   - <el-row :gutter="15" style="padding-top: 10px">
11   - <el-form
12   - ref="elForm"
13   - :model="dataForm"
14   - size="small"
15   - label-width="100px"
16   - label-position="right"
17   - :disabled="!!isDetail"
18   - :rules="rules">
19   - <el-col :span="24">
20   - <el-form-item label="通知标题" prop="title">
21   - <el-input v-model="dataForm.title"></el-input>
22   - </el-form-item>
23   - </el-col>
24   - <el-col :span="24">
25   - <el-form-item label="内容" prop="bodyContent">
26   - <NCC-Quill v-model="dataForm.bodyContent" placeholder="请输入内容..." :disabled="!!isDetail" />
27   - </el-form-item>
28   - </el-col>
29   - <el-col :span="24">
30   - <el-form-item label="图片上传" prop="imgUrl">
31   - <NCC-UploadFz v-model="dataForm.imgUrl" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" />
32   - </el-form-item>
33   - </el-col>
34   - </el-form>
35   - </el-row>
36   - <span slot="footer" class="dialog-footer">
37   - <el-button @click="visible = false">取 消</el-button>
38   - <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail">确 定</el-button>
39   - </span>
40   - </el-dialog>
41   - </template>
42   - <script>
43   - import request from "@/utils/request";
44   - export default {
45   - components: {},
46   - props: [],
47   - data() {
48   - return {
49   - loading: false,
50   - visible: false,
51   - isDetail: false,
52   - dataForm: {
53   - id: '',
54   - title: '',
55   - bodyContent: '',
56   - imgUrl: [],
57   - categoryId: 'cc225c68421644f79037aaf624ccccc0',
58   - isType: '0',
59   - },
60   - rules: {
61   - title: [
62   - { required: true, message: '请输入标题', trigger: 'blur' },
63   - ],
64   - bodyContent: [
65   - { required: true, message: '请输入内容', trigger: 'blur' },
66   - ],
67   - },
68   - };
  90 + <div class="msg-title">{{ dataForm.title }}</div>
  91 + <div class="content" v-html="dataForm.bodyContent"></div>
  92 + <div class="files"></div>
  93 + </el-row>
  94 + <span slot="footer" class="dialog-footer">
  95 + <el-button @click="visible = false">取 消</el-button>
  96 + <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail"
  97 + >确 定</el-button
  98 + >
  99 + </span>
  100 + </el-dialog>
  101 +</template>
  102 +<script>
  103 +import request from "@/utils/request";
  104 +export default {
  105 + components: {},
  106 + props: [],
  107 + data() {
  108 + return {
  109 + loading: false,
  110 + visible: false,
  111 + isDetail: false,
  112 + dataForm: {
  113 + id: "",
  114 + title: "",
  115 + bodyContent: "",
  116 + imgUrl: [],
  117 + categoryId: "cc225c68421644f79037aaf624ccccc0",
  118 + isType: "0",
  119 + communicationArea: [],
  120 + communicationOut: [],
  121 + },
  122 + rules: {
  123 + title: [{ required: true, message: "请输入标题", trigger: "blur" }],
  124 + bodyContent: [
  125 + { required: true, message: "请输入内容", trigger: "blur" },
  126 + ],
  127 + },
  128 + areaOptions: [],
  129 + communicationOutOptions: [],
  130 + };
  131 + },
  132 + computed: {},
  133 + watch: {},
  134 + created() {
  135 + this.initAreaTypeList();
  136 + this.initCommunicationOutOptions();
  137 + },
  138 + mounted() {},
  139 + beforeDestroy() {},
  140 + methods: {
  141 + goBack() {
  142 + this.$emit("refresh");
69 143 },
70   - computed: {},
71   - watch: {},
72   - created() {
73   -
  144 + init(id, isDetail) {
  145 + this.dataForm.id = id || 0;
  146 + this.visible = true;
  147 + this.isDetail = isDetail || false;
  148 + this.$nextTick(() => {
  149 + !this.dataForm.id && this.$refs["elForm"].resetFields();
  150 + if (this.dataForm.id) {
  151 + this.loading = true;
  152 + request({
  153 + url: `/SubDev/ZyOaArticle/${this.dataForm.id}`,
  154 + method: "GET",
  155 + }).then((res) => {
  156 + this.dataForm = res.data;
  157 + this.loading = false;
  158 + });
  159 + }
  160 + });
74 161 },
75   - mounted() {},
76   - beforeDestroy() {
  162 + async initAreaTypeList() {
  163 + let list = this.$store.state.meta.area;
  164 + !list && (list = await this.$store.dispatch("getTypeListByCode", "area"));
  165 + this.areaOptions = list;
77 166 },
78   - methods: {
79   -
80   - goBack() {
81   - this.$emit("refresh");
82   - },
83   - init(id, isDetail) {
84   - this.dataForm.id = id || 0;
85   - this.visible = true;
86   - this.isDetail = isDetail || false;
87   - this.$nextTick(() => {
88   - this.$refs["elForm"].resetFields();
89   - if(this.dataForm.id) {
90   - request({
91   - url: `/SubDev/ZyOaArticle/${this.dataForm.id}`,
92   - method: "GET",
93   - }).then((res) => {
94   - this.dataForm = res.data;
95   - console.log(this.dataForm);
96   - });
97   - }
98   - });
99   - },
100   - dataFormSubmit() {
101   - this.$refs['elForm'].validate((valid) => {
102   - if (valid) {
103   - request({
104   - url: `/SubDev/ZyOaArticle`,
105   - method: 'post',
106   - data: this.dataForm,
107   - }).then((res) => {
108   - this.$message({
109   - message: res.msg,
110   - type: 'success',
111   - duration: 1000,
112   - onClose: () => {
113   - this.visible = false, this.$emit('refresh', true)
114   - }
115   - })
116   - })
117   - }
118   - })
119   - },
  167 + async initCommunicationOutOptions() {
  168 + let list = this.$store.state.meta.externalAssistanceList;
  169 + !list &&
  170 + (list = await this.$store.dispatch(
  171 + "getTypeListByCode",
  172 + "externalAssistance"
  173 + ));
  174 + this.communicationOutOptions = list;
120 175 },
121   - };
122   - </script>
123   - <style lang="scss" scoped>
124   - .msg-dialog {
125   - :deep(.el-dialog__body) {
126   - max-height: 50vh;
127   - overflow-y: scroll;
128   - }
  176 + // 全选
  177 + selectAreaAll(type) {
  178 + if (type == "area") {
  179 + this.dataForm.communicationArea = this.areaOptions.map(
  180 + (option) => option.id
  181 + );
  182 + } else {
  183 + this.dataForm.communicationOut = this.communicationOutOptions.map(
  184 + (option) => option.id
  185 + );
  186 + }
  187 + },
  188 + // 反选
  189 + closeAreaAll(type) {
  190 + if (type == "area") {
  191 + this.dataForm.communicationArea = this.areaOptions
  192 + .filter(
  193 + (option) => !this.dataForm.communicationArea.includes(option.id)
  194 + )
  195 + .map((option) => option.id);
  196 + } else {
  197 + this.dataForm.communicationOut = this.communicationOutOptions
  198 + .filter(
  199 + (option) => !this.dataForm.communicationOut.includes(option.id)
  200 + )
  201 + .map((option) => option.id);
  202 + }
  203 + },
  204 + dataFormSubmit() {
  205 + this.$refs["elForm"].validate((valid) => {
  206 + if (valid) {
  207 + request({
  208 + url: `/SubDev/ZyOaArticle`,
  209 + method: "post",
  210 + data: this.dataForm,
  211 + }).then((res) => {
  212 + this.$message({
  213 + message: res.msg,
  214 + type: "success",
  215 + duration: 1000,
  216 + onClose: () => {
  217 + (this.visible = false), this.$emit("refresh", true);
  218 + },
  219 + });
  220 + });
  221 + }
  222 + });
  223 + },
  224 + },
  225 +};
  226 +</script>
  227 +<style lang="scss" scoped>
  228 +.msg-dialog {
  229 + :deep(.el-dialog__body) {
  230 + max-height: 50vh;
  231 + overflow-y: scroll;
  232 + }
  233 +}
  234 +.msg-box {
  235 + .msg-title {
  236 + text-align: center;
  237 + font-size: 14px;
  238 + font-weight: 700;
  239 + line-height: 30px;
  240 + border-bottom: #e8e8e8 1px solid;
  241 + margin-bottom: 8px;
  242 + color: #000;
129 243 }
130   - </style>
131   -
132 244 \ No newline at end of file
  245 +}
  246 +</style>
... ...
src/views/workFlow/components/FlowBox.vue
... ... @@ -48,12 +48,12 @@
48 48 <component :is="currentView" @close="goBack" ref="form" @eventReciver="eventReciver"
49 49 @setLoad="setLoad" @setPageLoad="setPageLoad" />
50 50 </el-tab-pane>
51   - <el-tab-pane label="流程信息" v-loading="loading">
  51 + <!-- <el-tab-pane label="流程信息" v-loading="loading">
52 52 <Process :conf="flowTemplateJson" v-if="flowTemplateJson.nodeId" />
53 53 </el-tab-pane>
54 54 <el-tab-pane label="流转记录" v-if="setting.opType!='-1'" v-loading="loading">
55 55 <recordList :list='flowTaskOperatorRecordList' :endTime='endTime' />
56   - </el-tab-pane>
  56 + </el-tab-pane> -->
57 57 </el-tabs>
58 58 <el-dialog :title="eventType==='audit'?'审批通过':'审批拒绝'" :close-on-click-modal="false"
59 59 :visible.sync="visible" class="NCC-dialog NCC-dialog_center" lock-scroll append-to-body
... ...