Commit 5a14192c09b910d8f47b2a60e3b0a9138636927a

Authored by monkeyhouyi
1 parent 9dc3fc10

1

src/api/common.js
@@ -27,3 +27,11 @@ export function getDownloadUrl(type, fileName) { @@ -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,7 +31,7 @@ body,
31 } 31 }
32 32
33 .common-info-box { 33 .common-info-box {
34 - height: calc(100vh - 200px); 34 + height: calc(100vh - 150px);
35 } 35 }
36 .item-box { 36 .item-box {
37 width: 100%; 37 width: 100%;
@@ -69,7 +69,7 @@ a { @@ -69,7 +69,7 @@ a {
69 justify-content: flex-start; 69 justify-content: flex-start;
70 align-items: center; 70 align-items: center;
71 flex-direction: row; 71 flex-direction: row;
72 - color: #C0C4CC; 72 + color: #757678;
73 line-height: 30px; 73 line-height: 30px;
74 .label { 74 .label {
75 color: #000; 75 color: #000;
src/components/InfoForm/index.vue
@@ -45,7 +45,7 @@ @@ -45,7 +45,7 @@
45 </el-select> 45 </el-select>
46 </el-form-item> 46 </el-form-item>
47 </el-col> 47 </el-col>
48 - <el-col :span="12"> 48 + <el-col :span="4">
49 <companyForm /> 49 <companyForm />
50 </el-col> 50 </el-col>
51 </el-col> 51 </el-col>
@@ -85,6 +85,47 @@ @@ -85,6 +85,47 @@
85 </el-radio-group> 85 </el-radio-group>
86 </el-form-item> 86 </el-form-item>
87 </el-col> 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 <el-col :span="12"> 129 <el-col :span="12">
89 <el-form-item label="系统名称" prop="systemName"> 130 <el-form-item label="系统名称" prop="systemName">
90 <el-input 131 <el-input
@@ -267,6 +308,10 @@ export default { @@ -267,6 +308,10 @@ export default {
267 officeAddress: "", 308 officeAddress: "",
268 systemIcon: "", 309 systemIcon: "",
269 areaId: "", 310 areaId: "",
  311 + specialRecordType: '',
  312 + specialRecordContent: '',
  313 + specialRecordNumber: '',
  314 + specialRecordTime: '',
270 }, 315 },
271 infoRules: { 316 infoRules: {
272 systemName: { 317 systemName: {
@@ -311,8 +356,10 @@ export default { @@ -311,8 +356,10 @@ export default {
311 companyInfo: {}, 356 companyInfo: {},
312 systemTypeOptions: [], 357 systemTypeOptions: [],
313 systemClassOptions: [], 358 systemClassOptions: [],
  359 + specialRecordTypeOption: [],
314 areaOptions: [], 360 areaOptions: [],
315 btnLoading: false, 361 btnLoading: false,
  362 + isFilings: false,
316 }; 363 };
317 }, 364 },
318 watch: {}, 365 watch: {},
@@ -367,22 +414,25 @@ export default { @@ -367,22 +414,25 @@ export default {
367 }, 414 },
368 async openDialog() { 415 async openDialog() {
369 this.visible = true; 416 this.visible = true;
  417 + this.isFilings = false;
370 this.reset(); 418 this.reset();
371 this.infoForm_loading = true; 419 this.infoForm_loading = true;
372 await this.initCompanyList(); 420 await this.initCompanyList();
373 await this.initSystemTypeList(); 421 await this.initSystemTypeList();
374 await this.initAreaTypeList(); 422 await this.initAreaTypeList();
  423 + await this.initSpecialRecordTypeOption();
375 this.type == "edit" && (await this.initForm()); 424 this.type == "edit" && (await this.initForm());
376 this.infoForm_loading = false; 425 this.infoForm_loading = false;
377 }, 426 },
378 async initForm() { 427 async initForm() {
379 let { data } = await getSystemDetail(this.systemId); 428 let { data } = await getSystemDetail(this.systemId);
380 this.infoForm = data; 429 this.infoForm = data;
381 - this.initSystemClassList(data.systemType); 430 + this.handleSystemTypeChange(data.systemType);
382 await this.companyChange(data.companyId); 431 await this.companyChange(data.companyId);
383 this.$forceUpdate(); 432 this.$forceUpdate();
384 }, 433 },
385 handleSystemTypeChange(val) { 434 handleSystemTypeChange(val) {
  435 + this.isFilings = Boolean(val != '580634746028033285');
386 this.infoForm.systemClass = ""; 436 this.infoForm.systemClass = "";
387 this.initSystemClassList(val); 437 this.initSystemClassList(val);
388 }, 438 },
src/filters/index.js
@@ -168,11 +168,11 @@ export function dynamicTextUP(value, options) { @@ -168,11 +168,11 @@ export function dynamicTextUP(value, options) {
168 if (!options || !Array.isArray(options)) return value.join() 168 if (!options || !Array.isArray(options)) return value.join()
169 let textList = [] 169 let textList = []
170 for (let i = 0; i < value.length; i++) { 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 textList.push(value[i]) 173 textList.push(value[i])
174 } else { 174 } else {
175 - textList.push(item.fullName) 175 + textList.push(item.FullName)
176 } 176 }
177 } 177 }
178 return textList.join() 178 return textList.join()
@@ -182,6 +182,26 @@ export function dynamicTextUP(value, options) { @@ -182,6 +182,26 @@ export function dynamicTextUP(value, options) {
182 if (!item || !item.FullName) return value 182 if (!item || !item.FullName) return value
183 return item.FullName 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 // 代码生成器数据匹配 Code 205 // 代码生成器数据匹配 Code
186 export function dynamicTextCode(value, options) { 206 export function dynamicTextCode(value, options) {
187 207
src/mixins/info.js
@@ -4,7 +4,8 @@ export default { @@ -4,7 +4,8 @@ export default {
4 return { 4 return {
5 systemTypeOptions: [], 5 systemTypeOptions: [],
6 areaOptions: [], 6 areaOptions: [],
7 - systemClassOptions: [] 7 + systemClassOptions: [],
  8 + specialRecordTypeOption: [],
8 } 9 }
9 }, 10 },
10 created() {}, 11 created() {},
@@ -24,6 +25,11 @@ export default { @@ -24,6 +25,11 @@ export default {
24 !list && (list = await this.$store.dispatch('getSystemType', val)); 25 !list && (list = await this.$store.dispatch('getSystemType', val));
25 this.systemClassOptions = list; 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 \ No newline at end of file 36 \ No newline at end of file
src/store/modules/meta.js
1 // 下拉字段配置 1 // 下拉字段配置
2 import { register } from "@/api"; 2 import { register } from "@/api";
3 // 系统类型 3 // 系统类型
4 -import { getSystemTypeList } from "@/api/common"; 4 +import { getSystemTypeList, getSpecialRecordType } from "@/api/common";
5 // 所属区县 5 // 所属区县
6 import { getAreaSelect } from "@/api/baseData/area"; 6 import { getAreaSelect } from "@/api/baseData/area";
7 // 系统分类 7 // 系统分类
@@ -15,6 +15,7 @@ const meta = { @@ -15,6 +15,7 @@ const meta = {
15 area: '', // 系统类型 15 area: '', // 系统类型
16 systemClass: {}, 16 systemClass: {},
17 externalAssistanceList: '', // 外协 17 externalAssistanceList: '', // 外协
  18 + specialRecordTypeList: '', // 特殊备案
18 }, 19 },
19 20
20 mutations: { 21 mutations: {
@@ -30,6 +31,9 @@ const meta = { @@ -30,6 +31,9 @@ const meta = {
30 SET_EXTERNALASSISTANCE_CLASS: (state, data) => { 31 SET_EXTERNALASSISTANCE_CLASS: (state, data) => {
31 state.externalAssistanceList = data; 32 state.externalAssistanceList = data;
32 }, 33 },
  34 + SET_SPECIALRECORDTYPELIST_CLASS: (state, data) => {
  35 + state.specialRecordTypeList = data;
  36 + },
33 }, 37 },
34 38
35 actions: { 39 actions: {
@@ -54,6 +58,12 @@ const meta = { @@ -54,6 +58,12 @@ const meta = {
54 resolve(res.data) 58 resolve(res.data)
55 }).catch(error => { reject(error) }) 59 }).catch(error => { reject(error) })
56 break; 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 default: 68 default:
59 break; 69 break;
src/utils/define.js
1 // 开发环境接口配置 1 // 开发环境接口配置
2 // JAVA Boot版本对应后端接口地址 2 // JAVA Boot版本对应后端接口地址
3 // JAVA Cloud对应网关地址 3 // JAVA Cloud对应网关地址
4 -const APIURl = 'http://localhost:8080' 4 +const APIURl = 'http://8.130.38.56:8043'
5 5
6 module.exports = { 6 module.exports = {
7 APIURl: APIURl, 7 APIURl: APIURl,
8 timeout: process.env.NODE_ENV === 'development' ? 10000 : 1000000, 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 comUploadUrl: process.env.VUE_APP_BASE_API + '/api/file/Uploader', 11 comUploadUrl: process.env.VUE_APP_BASE_API + '/api/file/Uploader',
12 comUrl: process.env.VUE_APP_BASE_API, 12 comUrl: process.env.VUE_APP_BASE_API,
13 // 本地文件预览 13 // 本地文件预览
src/utils/ncc.js
@@ -218,6 +218,21 @@ const ncc = { @@ -218,6 +218,21 @@ const ncc = {
218 if (!cellValue) return '' 218 if (!cellValue) return ''
219 return dayjs(cellValue).format(format) 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 storageSet(obj) { 236 storageSet(obj) {
222 for (let i in obj) { 237 for (let i in obj) {
223 cacheItem(i, obj[i]) 238 cacheItem(i, obj[i])
src/views/DisposalSuggestions/Form.vue
@@ -74,8 +74,8 @@ @@ -74,8 +74,8 @@
74 </el-form-item> 74 </el-form-item>
75 </el-col> 75 </el-col>
76 <el-col :span="24"> 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 </el-form-item> 79 </el-form-item>
80 </el-col> 80 </el-col>
81 </el-form> 81 </el-form>
@@ -122,7 +122,7 @@ @@ -122,7 +122,7 @@
122 disposalSuggestions: "", //处置建议 122 disposalSuggestions: "", //处置建议
123 judgmentOpinions: "", //判断意见 123 judgmentOpinions: "", //判断意见
124 judgmentClass: "", //判断分类 124 judgmentClass: "", //判断分类
125 - endTime: '', 125 + deadline: '',
126 } 126 }
127 } 127 }
128 }, 128 },
src/views/DisposalSuggestions/index.vue
@@ -203,8 +203,5 @@ @@ -203,8 +203,5 @@
203 height: calc(100% - 47px); 203 height: calc(100% - 47px);
204 overflow-y: scroll; 204 overflow-y: scroll;
205 } 205 }
206 - .item-body {  
207 - height: calc(100% - 35px);  
208 - }  
209 } 206 }
210 </style> 207 </style>
211 \ No newline at end of file 208 \ No newline at end of file
src/views/baseCaseHandling/index.vue
@@ -354,8 +354,5 @@ export default { @@ -354,8 +354,5 @@ export default {
354 height: calc(100% - 47px); 354 height: calc(100% - 47px);
355 overflow-y: scroll; 355 overflow-y: scroll;
356 } 356 }
357 - .item-body {  
358 - height: calc(100% - 35px);  
359 - }  
360 } 357 }
361 </style> 358 </style>
src/views/baseInspectionReport/Form.vue
@@ -42,13 +42,6 @@ @@ -42,13 +42,6 @@
42 <el-col :span="23"> 42 <el-col :span="23">
43 <el-form-item label="平台名称" prop="platformName"> 43 <el-form-item label="平台名称" prop="platformName">
44 <SelsctLoad v-model="dataForm.platformName"/> 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 </el-form-item> 45 </el-form-item>
53 </el-col> 46 </el-col>
54 <el-col :span="23"> 47 <el-col :span="23">
@@ -78,19 +71,13 @@ @@ -78,19 +71,13 @@
78 </el-col> 71 </el-col>
79 <el-col :span="23"> 72 <el-col :span="23">
80 <el-form-item label="关键词" prop="questionClass"> 73 <el-form-item label="关键词" prop="questionClass">
81 - <el-select 74 + <el-input
82 v-model="dataForm.questionClass" 75 v-model="dataForm.questionClass"
83 - placeholder="请选择" 76 + placeholder="请输入关键词"
84 clearable 77 clearable
85 :style="{ width: '100%' }" 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 </el-form-item> 81 </el-form-item>
95 </el-col> 82 </el-col>
96 <el-col :span="23"> 83 <el-col :span="23">
src/views/baseSpecialAction/Form.vue
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 :visible.sync="visible" 5 :visible.sync="visible"
6 class="NCC-dialog NCC-dialog_center" 6 class="NCC-dialog NCC-dialog_center"
7 lock-scroll 7 lock-scroll
8 - width="70%" 8 + width="50%"
9 > 9 >
10 <el-row :gutter="15" style="padding-top: 10px"> 10 <el-row :gutter="15" style="padding-top: 10px">
11 <el-form 11 <el-form
@@ -59,6 +59,38 @@ @@ -59,6 +59,38 @@
59 </NCC-UploadFz> 59 </NCC-UploadFz>
60 </el-form-item> 60 </el-form-item>
61 </el-col> 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 <el-col :span="23" v-if="ncc.hasFormP('communicationArea') && dataForm.id"> 94 <el-col :span="23" v-if="ncc.hasFormP('communicationArea') && dataForm.id">
63 <el-form-item label="传达区域" prop="communicationArea"> 95 <el-form-item label="传达区域" prop="communicationArea">
64 <el-checkbox-group v-model="dataForm.communicationArea" :style="{}"> 96 <el-checkbox-group v-model="dataForm.communicationArea" :style="{}">
@@ -145,6 +177,8 @@ export default { @@ -145,6 +177,8 @@ export default {
145 title: undefined, 177 title: undefined,
146 content: undefined, 178 content: undefined,
147 releaseTime: undefined, 179 releaseTime: undefined,
  180 + recordCommunicationOut: [],
  181 + recordCommunicationArea: [],
148 annex: [], 182 annex: [],
149 communicationArea: [], 183 communicationArea: [],
150 communicationOut: [], 184 communicationOut: [],
src/views/baseSpecialAction/index.vue
@@ -39,7 +39,11 @@ @@ -39,7 +39,11 @@
39 <NCC-table v-loading="listLoading" :data="list"> 39 <NCC-table v-loading="listLoading" :data="list">
40 <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip/> 40 <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip/>
41 <el-table-column prop="title" label="标题" align="left" show-overflow-tooltip/> 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 <el-table-column prop="creatorTime" label="发布时间" align="left" :formatter="ncc.tableDateFormat" show-overflow-tooltip/> 47 <el-table-column prop="creatorTime" label="发布时间" align="left" :formatter="ncc.tableDateFormat" show-overflow-tooltip/>
44 <el-table-column label="传达区域" prop="communicationArea" align="left" show-overflow-tooltip> 48 <el-table-column label="传达区域" prop="communicationArea" align="left" show-overflow-tooltip>
45 <template slot-scope="scope">{{ JSON.parse(scope.row.communicationArea) | dynamicText(communicationAreaOptions) }}</template> 49 <template slot-scope="scope">{{ JSON.parse(scope.row.communicationArea) | dynamicText(communicationAreaOptions) }}</template>
@@ -47,7 +51,11 @@ @@ -47,7 +51,11 @@
47 <el-table-column label="传达外协" prop="communicationOut" align="left" show-overflow-tooltip> 51 <el-table-column label="传达外协" prop="communicationOut" align="left" show-overflow-tooltip>
48 <template slot-scope="scope">{{ JSON.parse(scope.row.communicationOut) | dynamicText(communicationOutOptions) }}</template> 52 <template slot-scope="scope">{{ JSON.parse(scope.row.communicationOut) | dynamicText(communicationOutOptions) }}</template>
49 </el-table-column> 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 <el-table-column prop="creatorUserId" show-overflow-tooltip label="创建用户" align="left"/> 59 <el-table-column prop="creatorUserId" show-overflow-tooltip label="创建用户" align="left"/>
52 <el-table-column label="操作" fixed="right" width="100"> 60 <el-table-column label="操作" fixed="right" width="100">
53 <template slot-scope="scope"> 61 <template slot-scope="scope">
src/views/baseSpecialhandle/index.vue
@@ -34,12 +34,19 @@ @@ -34,12 +34,19 @@
34 <NCC-table v-loading="listLoading" :data="list"> 34 <NCC-table v-loading="listLoading" :data="list">
35 <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip /> 35 <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip />
36 <el-table-column prop="title" label="标题" align="left" show-overflow-tooltip /> 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 <el-table-column label="操作" fixed="right" width="130"> 47 <el-table-column label="操作" fixed="right" width="130">
41 <template slot-scope="scope"> 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 <!-- <el-button type="text" @click="toFillForm(scope.row)" v-if="scope.row.state == '已填写'">详情</el-button> --> 50 <!-- <el-button type="text" @click="toFillForm(scope.row)" v-if="scope.row.state == '已填写'">详情</el-button> -->
44 </template> 51 </template>
45 </el-table-column> 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,9 +123,6 @@
123 <el-table-column label="操作" width="250"> 123 <el-table-column label="操作" width="250">
124 <!-- 查看,修改,归属地变更,上报 --> 124 <!-- 查看,修改,归属地变更,上报 -->
125 <template slot-scope="scope"> 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 <infoForm 126 <infoForm
130 class="btn_dialog" 127 class="btn_dialog"
131 type="edit" 128 type="edit"
@@ -134,6 +131,7 @@ @@ -134,6 +131,7 @@
134 > 131 >
135 <el-button size="mini" type="text">修改</el-button> 132 <el-button size="mini" type="text">修改</el-button>
136 </infoForm> 133 </infoForm>
  134 + <el-button size="mini" type="text" @click="toDetail(scope.row)">查看</el-button>
137 <el-button 135 <el-button
138 size="mini" 136 size="mini"
139 type="text" 137 type="text"
@@ -146,12 +144,12 @@ @@ -146,12 +144,12 @@
146 @click="toInspection(scope.row)" 144 @click="toInspection(scope.row)"
147 >上报</el-button 145 >上报</el-button
148 > 146 >
149 - <el-button 147 + <!-- <el-button
150 size="mini" 148 size="mini"
151 type="text" 149 type="text"
152 @click="toChangeRecord(scope.row)" 150 @click="toChangeRecord(scope.row)"
153 >整改清单</el-button 151 >整改清单</el-button
154 - > 152 + > -->
155 </template> 153 </template>
156 </el-table-column> 154 </el-table-column>
157 </NCC-table> 155 </NCC-table>
@@ -215,6 +213,7 @@ @@ -215,6 +213,7 @@
215 @refresh="refresh" 213 @refresh="refresh"
216 /> 214 />
217 <ChangeRecord v-if="ChangeRecordVisible" ref="ChangeRecord"/> 215 <ChangeRecord v-if="ChangeRecordVisible" ref="ChangeRecord"/>
  216 + <DetailForm v-if="DetailFormVisible" ref="DetailForm"/>
218 </div> 217 </div>
219 </div> 218 </div>
220 </div> 219 </div>
@@ -225,14 +224,13 @@ import { getInfoList } from &quot;@/api/baseData/info&quot;; @@ -225,14 +224,13 @@ import { getInfoList } from &quot;@/api/baseData/info&quot;;
225 import { applnyChageArea } from "@/api/baseData/info"; 224 import { applnyChageArea } from "@/api/baseData/info";
226 import infoMixin from "@/mixins/info"; 225 import infoMixin from "@/mixins/info";
227 import InspectionForm from "./InspectForm.vue"; 226 import InspectionForm from "./InspectForm.vue";
  227 +import DetailForm from './DetailForm.vue'
228 import ChangeRecord from "./ChangeRecord.vue"; 228 import ChangeRecord from "./ChangeRecord.vue";
229 229
230 export default { 230 export default {
231 name: "SystemInfo", 231 name: "SystemInfo",
232 mixins: [infoMixin], 232 mixins: [infoMixin],
233 - components: {  
234 - InspectionForm, ChangeRecord  
235 - }, 233 + components: { InspectionForm, ChangeRecord, DetailForm },
236 data() { 234 data() {
237 return { 235 return {
238 loading: false, 236 loading: false,
@@ -274,6 +272,9 @@ export default { @@ -274,6 +272,9 @@ export default {
274 InspectionFormVisible: false, 272 InspectionFormVisible: false,
275 ChangeRecordVisible: false, 273 ChangeRecordVisible: false,
276 btnLoading: false, 274 btnLoading: false,
  275 +
  276 + // 详情
  277 + DetailFormVisible: false,
277 }; 278 };
278 }, 279 },
279 created() { 280 created() {
@@ -345,6 +346,14 @@ export default { @@ -345,6 +346,14 @@ export default {
345 this.loading = false; 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 toInspection(row) { 358 toInspection(row) {
350 this.InspectionFormVisible = true; 359 this.InspectionFormVisible = true;
src/views/homePage/HomePage.vue
@@ -22,9 +22,6 @@ @@ -22,9 +22,6 @@
22 <infoForm type="add" @reInit="toSearchInfoList"> 22 <infoForm type="add" @reInit="toSearchInfoList">
23 <el-button type="success">新增</el-button> 23 <el-button type="success">新增</el-button>
24 </infoForm> 24 </infoForm>
25 - <el-button type="text" style="color: #fff; margin-left: 10px"  
26 - >更多</el-button  
27 - >  
28 </div> 25 </div>
29 <div class="info"> 26 <div class="info">
30 <router-view ref="info"></router-view> 27 <router-view ref="info"></router-view>
src/views/homePage/components/Header.vue
@@ -88,7 +88,7 @@ header { @@ -88,7 +88,7 @@ header {
88 .user { 88 .user {
89 position: absolute; 89 position: absolute;
90 right: 33px; 90 right: 33px;
91 - top: 25px; 91 + top: 13px;
92 display: flex; 92 display: flex;
93 align-items: center; 93 align-items: center;
94 flex-direction: row; 94 flex-direction: row;
src/views/homePage/components/news/NewsDialog.vue
@@ -158,7 +158,7 @@ export default { @@ -158,7 +158,7 @@ export default {
158 flex-direction: row; 158 flex-direction: row;
159 justify-content: space-between; 159 justify-content: space-between;
160 align-items: center; 160 align-items: center;
161 - color: #ccc; 161 + color: #454040;
162 font-size: 12px; 162 font-size: 12px;
163 line-height: 30px; 163 line-height: 30px;
164 } 164 }
src/views/homePage/components/news/index.vue
@@ -44,6 +44,7 @@ export default { @@ -44,6 +44,7 @@ export default {
44 methods: { 44 methods: {
45 changeMagNum(val) { 45 changeMagNum(val) {
46 this.isHaveMsg = val ? true : false; 46 this.isHaveMsg = val ? true : false;
  47 + this.messageCount = val;
47 }, 48 },
48 initWebSocket() { 49 initWebSocket() {
49 console.log("1"); 50 console.log("1");
@@ -69,8 +70,6 @@ export default { @@ -69,8 +70,6 @@ export default {
69 let data = JSON.parse(event.data); 70 let data = JSON.parse(event.data);
70 console.log(data, "event.data"); 71 console.log(data, "event.data");
71 if (data.method == "initMessage") { 72 if (data.method == "initMessage") {
72 - this.messageCount =  
73 - data.unreadMessageCount + data.unreadNoticeCount;  
74 this.isTwinkle = !!data.unreadNums.length; 73 this.isTwinkle = !!data.unreadNums.length;
75 this.$refs.MessageDialog.init(); 74 this.$refs.MessageDialog.init();
76 } 75 }
@@ -82,9 +81,12 @@ export default { @@ -82,9 +81,12 @@ export default {
82 } 81 }
83 //消息推送(消息公告用的) 82 //消息推送(消息公告用的)
84 if (data.method == "messagePush") { 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 if (data.method == "logout") { 92 if (data.method == "logout") {
src/views/homePage/homePage.scss
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 background-repeat: no-repeat; /* 不重复背景图片 */ 7 background-repeat: no-repeat; /* 不重复背景图片 */
8 } 8 }
9 .content { 9 .content {
10 - margin-top: 56px; 10 + margin-top: 13px;
11 position: relative; 11 position: relative;
12 .navs { 12 .navs {
13 position: absolute; 13 position: absolute;
src/views/overView/Overview.vue
@@ -20,7 +20,11 @@ @@ -20,7 +20,11 @@
20 <el-table-column prop="taskType" label="任务类型" show-overflow-tooltip width="100"/> 20 <el-table-column prop="taskType" label="任务类型" show-overflow-tooltip width="100"/>
21 <el-table-column prop="taskState" label="状态" show-overflow-tooltip width="80"/> 21 <el-table-column prop="taskState" label="状态" show-overflow-tooltip width="80"/>
22 <el-table-column prop="taskContent" label="任务内容" show-overflow-tooltip /> 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 <el-table-column label="操作" width="100"> 28 <el-table-column label="操作" width="100">
25 <template slot-scope="scope"> 29 <template slot-scope="scope">
26 <el-button type="primary" size="small" @click="handleTask(scope.row)">处理</el-button> 30 <el-button type="primary" size="small" @click="handleTask(scope.row)">处理</el-button>
@@ -119,7 +123,7 @@ @@ -119,7 +123,7 @@
119 </div> 123 </div>
120 </el-col> 124 </el-col>
121 </el-row> 125 </el-row>
122 - <MsgForm v-if="MsgFormVisible" ref="MsgForm" @refreshDataList="msgRefresh"/> 126 + <MsgForm v-if="MsgFormVisible" ref="MsgForm" @refresh="msgRefresh"/>
123 <HandleInspectForm v-if="HandleInspectFormVisible" ref="HandleInspectForm" @refresh="(val) => {taskRefresh('HandleInspectFormVisible', val)}"/> 127 <HandleInspectForm v-if="HandleInspectFormVisible" ref="HandleInspectForm" @refresh="(val) => {taskRefresh('HandleInspectFormVisible', val)}"/>
124 <NCC-Form v-if="formVisible" ref="NCCForm" @refreshDataList="(val) => {taskRefresh('formVisible', val)}" /> 128 <NCC-Form v-if="formVisible" ref="NCCForm" @refreshDataList="(val) => {taskRefresh('formVisible', val)}" />
125 </div> 129 </div>
@@ -200,6 +204,8 @@ export default { @@ -200,6 +204,8 @@ export default {
200 this.msgList = res.data.list; 204 this.msgList = res.data.list;
201 this.msgTotal = res.data.pagination.total; 205 this.msgTotal = res.data.pagination.total;
202 this.msgLoading = false; 206 this.msgLoading = false;
  207 + }).catch(() => {
  208 + this.msgLoading = false;
203 }); 209 });
204 }, 210 },
205 resetMsg() { 211 resetMsg() {
@@ -252,6 +258,8 @@ export default { @@ -252,6 +258,8 @@ export default {
252 this.taskList = res.data.list; 258 this.taskList = res.data.list;
253 this.taskTotal = res.data.pagination.total; 259 this.taskTotal = res.data.pagination.total;
254 this.taskLoading = false; 260 this.taskLoading = false;
  261 + }).catch(() => {
  262 + this.taskLoading = false;
255 }); 263 });
256 }, 264 },
257 resetTask() { 265 resetTask() {
@@ -310,7 +318,7 @@ export default { @@ -310,7 +318,7 @@ export default {
310 background-color: rgba(244, 244, 245, 0.38); 318 background-color: rgba(244, 244, 245, 0.38);
311 margin-bottom: 15px; 319 margin-bottom: 15px;
312 &.todo { 320 &.todo {
313 - height: calc(100vh - 210px); 321 + height: calc(100vh - 160px);
314 } 322 }
315 //&.earmarked { 323 //&.earmarked {
316 // height: calc(50vh - 115px); 324 // height: calc(50vh - 115px);
@@ -320,7 +328,7 @@ export default { @@ -320,7 +328,7 @@ export default {
320 // height: calc(50vh - 60px); 328 // height: calc(50vh - 60px);
321 // } 329 // }
322 &.msg { 330 &.msg {
323 - height: calc(100vh - 200px); 331 + height: calc(100vh - 160px);
324 margin-bottom: 0; 332 margin-bottom: 0;
325 } 333 }
326 .item-title { 334 .item-title {
src/views/overView/msgForm.vue
1 <template> 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 \ No newline at end of file 244 \ No newline at end of file
  245 +}
  246 +</style>
src/views/workFlow/components/FlowBox.vue
@@ -48,12 +48,12 @@ @@ -48,12 +48,12 @@
48 <component :is="currentView" @close="goBack" ref="form" @eventReciver="eventReciver" 48 <component :is="currentView" @close="goBack" ref="form" @eventReciver="eventReciver"
49 @setLoad="setLoad" @setPageLoad="setPageLoad" /> 49 @setLoad="setLoad" @setPageLoad="setPageLoad" />
50 </el-tab-pane> 50 </el-tab-pane>
51 - <el-tab-pane label="流程信息" v-loading="loading"> 51 + <!-- <el-tab-pane label="流程信息" v-loading="loading">
52 <Process :conf="flowTemplateJson" v-if="flowTemplateJson.nodeId" /> 52 <Process :conf="flowTemplateJson" v-if="flowTemplateJson.nodeId" />
53 </el-tab-pane> 53 </el-tab-pane>
54 <el-tab-pane label="流转记录" v-if="setting.opType!='-1'" v-loading="loading"> 54 <el-tab-pane label="流转记录" v-if="setting.opType!='-1'" v-loading="loading">
55 <recordList :list='flowTaskOperatorRecordList' :endTime='endTime' /> 55 <recordList :list='flowTaskOperatorRecordList' :endTime='endTime' />
56 - </el-tab-pane> 56 + </el-tab-pane> -->
57 </el-tabs> 57 </el-tabs>
58 <el-dialog :title="eventType==='audit'?'审批通过':'审批拒绝'" :close-on-click-modal="false" 58 <el-dialog :title="eventType==='audit'?'审批通过':'审批拒绝'" :close-on-click-modal="false"
59 :visible.sync="visible" class="NCC-dialog NCC-dialog_center" lock-scroll append-to-body 59 :visible.sync="visible" class="NCC-dialog NCC-dialog_center" lock-scroll append-to-body