Commit 61009cfc74119047aa3169d20989698e765b924b

Authored by monkeyhouyi
1 parent 1ba4f6e3

2024/8/8

src/components/CompanyForm/index.vue
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 width="60%" 14 width="60%"
15 top="15vh" 15 top="15vh"
16 :modal-append-to-body="false" 16 :modal-append-to-body="false"
17 - class="NCC-dialog company-dialog" 17 + class="NCC-dialog NCC-dialog_center company-dialog"
18 > 18 >
19 <el-form ref="elForm" :model="dataForm" size="small" label-width="100px" label-position="right" 19 <el-form ref="elForm" :model="dataForm" size="small" label-width="100px" label-position="right"
20 :rules="rules" v-lodding="loading"> 20 :rules="rules" v-lodding="loading">
src/components/InfoEditRecord/index.vue
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 width="80%" 12 width="80%"
13 top="10vh" 13 top="10vh"
14 :modal-append-to-body="false" 14 :modal-append-to-body="false"
15 - class="NCC-dialog dialog-box" 15 + class="NCC-dialog NCC-dialog_center dialog-box"
16 destroy-on-close 16 destroy-on-close
17 > 17 >
18 <el-row :gutter="20"> 18 <el-row :gutter="20">
src/components/InfoForm/index.vue
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 width="80%" 12 width="80%"
13 top="10vh" 13 top="10vh"
14 :modal-append-to-body="false" 14 :modal-append-to-body="false"
15 - class="NCC-dialog dialog-box" 15 + class="NCC-dialog NCC-dialog_center dialog-box"
16 destroy-on-close 16 destroy-on-close
17 > 17 >
18 <el-form 18 <el-form
src/components/PasswordForm/index.vue
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 append-to-body 11 append-to-body
12 width="600px" 12 width="600px"
13 :modal-append-to-body="false" 13 :modal-append-to-body="false"
14 - class="NCC-dialog dialog-box" 14 + class="NCC-dialog NCC-dialog_center dialog-box"
15 destroy-on-close 15 destroy-on-close
16 > 16 >
17 <el-form ref="form" :model="user" :rules="rules" label-width="80px"> 17 <el-form ref="form" :model="user" :rules="rules" label-width="80px">
src/utils/ncc.js
@@ -233,6 +233,21 @@ const ncc = { @@ -233,6 +233,21 @@ const ncc = {
233 return 'primary' 233 return 'primary'
234 } 234 }
235 }, 235 },
  236 + stateDeadLine(time){
  237 + let date = (new Date()).getTime();
  238 + let timeDiff = time - date;
  239 +
  240 + if(timeDiff < 0) {
  241 + // 超时
  242 + return `(已超时)`
  243 + } else if(timeDiff / (1000 * 60 * 60 * 24) < 3) {
  244 + // 小于三天警告即将超时
  245 + return `(即将超时)`
  246 + } else {
  247 + // 未超时
  248 + return ''
  249 + }
  250 + },
236 storageSet(obj) { 251 storageSet(obj) {
237 for (let i in obj) { 252 for (let i in obj) {
238 cacheItem(i, obj[i]) 253 cacheItem(i, obj[i])
src/views/DisposalSuggestions/Form.vue
@@ -86,7 +86,7 @@ @@ -86,7 +86,7 @@
86 label-width="100px" 86 label-width="100px"
87 label-position="right" 87 label-position="right"
88 > 88 >
89 - <el-col :span="24"> 89 + <!-- <el-col :span="24">
90 <el-form-item 90 <el-form-item
91 :label="isSHILevel ? '处置要求' : '处置建议'" 91 :label="isSHILevel ? '处置要求' : '处置建议'"
92 prop="disposalSuggestions" 92 prop="disposalSuggestions"
@@ -102,7 +102,7 @@ @@ -102,7 +102,7 @@
102 > 102 >
103 </el-input> 103 </el-input>
104 </el-form-item> 104 </el-form-item>
105 - </el-col> 105 + </el-col> -->
106 <!-- <el-col :span="24"> 106 <!-- <el-col :span="24">
107 <el-form-item label="截止时间" prop="deadline"> 107 <el-form-item label="截止时间" prop="deadline">
108 <el-date-picker 108 <el-date-picker
@@ -195,6 +195,9 @@ export default { @@ -195,6 +195,9 @@ export default {
195 judgmentClass: [ 195 judgmentClass: [
196 { required: true, message: "请选择审核类型", trigger: "change" }, 196 { required: true, message: "请选择审核类型", trigger: "change" },
197 ], 197 ],
  198 + judgmentOpinions: [
  199 + { required: true, message: "请填写研判意见", trigger: "bulr" }
  200 + ]
198 }, 201 },
199 showSuggsetion: false, 202 showSuggsetion: false,
200 judgmentClassOption: [], 203 judgmentClassOption: [],
src/views/baseCaseHandling/Form.vue
1 <template> 1 <template>
2 - <div>  
3 - <el-row :gutter="15">  
4 - <el-form ref="elForm" :model="dataForm" :rules="rules" size="small" label-width="125px" label-position="right" :disabled="setting.readonly">  
5 - <el-col :span="24" v-if="false" >  
6 - <el-form-item label="主键" prop="id">  
7 - <el-input v-model="dataForm.id" placeholder="请输入" clearable :disabled="judgeWrite('id')" :style='{"width":"100%"}' >  
8 - </el-input>  
9 - </el-form-item>  
10 - </el-col>  
11 - <el-col :span="24" v-if="judgeShow('registrationTime')">  
12 - <el-form-item label="登记时间" prop="registrationTime">  
13 - <el-date-picker v-model="dataForm.registrationTime" placeholder="请选择" clearable :disabled="judgeWrite('registrationTime')" :style='{"width":"100%"}' type='datetime' format="yyyy-MM-dd HH:mm:ss" value-format="timestamp" >  
14 - </el-date-picker>  
15 - </el-form-item>  
16 - </el-col>  
17 - <el-col :span="24" v-if="judgeShow('number')">  
18 - <el-form-item label="文号" prop="number">  
19 - <el-input v-model="dataForm.number" placeholder="请输入" clearable :disabled="judgeWrite('number')" :style='{"width":"100%"}' >  
20 - </el-input>  
21 - </el-form-item>  
22 - </el-col>  
23 - <el-col :span="24" v-if="judgeShow('systemName')">  
24 - <el-form-item label="网站/APP名称" prop="systemName">  
25 - <el-input v-model="dataForm.systemName" placeholder="请输入" clearable :disabled="judgeWrite('systemName')" :style='{"width":"100%"}' >  
26 - </el-input>  
27 - </el-form-item>  
28 - </el-col>  
29 - <el-col :span="24" v-if="judgeShow('registeredEntity')">  
30 - <el-form-item label="注册主体" prop="registeredEntity">  
31 - <el-input v-model="dataForm.registeredEntity" placeholder="请输入" clearable :disabled="judgeWrite('registeredEntity')" :style='{"width":"100%"}' >  
32 - </el-input>  
33 - </el-form-item>  
34 - </el-col>  
35 - <el-col :span="24" v-if="judgeShow('category')">  
36 - <el-form-item label="类别" prop="category">  
37 - <el-select v-model="dataForm.category" placeholder="请选择" clearable :disabled="judgeWrite('category')" :style='{"width":"100%"}' >  
38 - <el-option v-for="(item, index) in categoryOptions" :key="index" :label="item.fullName" :value="item.id" ></el-option>  
39 - </el-select>  
40 - </el-form-item>  
41 - </el-col>  
42 - <el-col :span="24" v-if="judgeShow('recordNumber')">  
43 - <el-form-item label="备案号" prop="recordNumber">  
44 - <el-input v-model="dataForm.recordNumber" placeholder="请输入" clearable :disabled="judgeWrite('recordNumber')" :style='{"width":"100%"}' >  
45 - </el-input>  
46 - </el-form-item>  
47 - </el-col>  
48 - <el-col :span="24" v-if="judgeShow('districtCounty')">  
49 - <el-form-item label="所属区(市)县" prop="districtCounty">  
50 - <NCC-Address v-model="dataForm.districtCounty" placeholder="请选择" clearable :disabled="judgeWrite('districtCounty')" :level="2" >  
51 - </NCC-Address>  
52 - </el-form-item>  
53 - </el-col>  
54 - <el-col :span="24" v-if="judgeShow('illegalReasons')">  
55 - <el-form-item label="违法原因" prop="illegalReasons">  
56 - <el-input v-model="dataForm.illegalReasons" placeholder="请输入" clearable :disabled="judgeWrite('illegalReasons')" :style='{"width":"100%"}' >  
57 - </el-input>  
58 - </el-form-item>  
59 - </el-col>  
60 - <el-col :span="24" v-if="judgeShow('punishmentRequirements')">  
61 - <el-form-item label="处罚要求" prop="punishmentRequirements">  
62 - <el-input v-model="dataForm.punishmentRequirements" placeholder="请输入" clearable :disabled="judgeWrite('punishmentRequirements')" :style='{"width":"100%"}' >  
63 - </el-input>  
64 - </el-form-item>  
65 - </el-col>  
66 - <el-col :span="24" v-if="judgeShow('punishmentContent')">  
67 - <el-form-item label="处罚内容" prop="punishmentContent">  
68 - <el-input v-model="dataForm.punishmentContent" placeholder="请输入" :disabled="judgeWrite('punishmentContent')" show-word-limit :style='{"width":"100%"}' type='textarea' :autosize='{"minRows":4,"maxRows":4}' >  
69 - </el-input>  
70 - </el-form-item>  
71 - </el-col>  
72 - <el-col :span="24" v-if="judgeShow('state')">  
73 - <el-form-item label="状态" prop="state">  
74 - <el-select v-model="dataForm.state" placeholder="请选择" clearable :disabled="judgeWrite('state')" :style='{"width":"100%"}' >  
75 - <el-option v-for="(item, index) in stateOptions" :key="index" :label="item.fullName" :value="item.id" ></el-option>  
76 - </el-select>  
77 - </el-form-item>  
78 - </el-col>  
79 - <el-col :span="24" v-if="judgeShow('record')">  
80 - <el-form-item label="笔录" prop="record">  
81 - <NCC-UploadFz v-model="dataForm.record" :disabled="judgeWrite('record')" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >  
82 - </NCC-UploadFz>  
83 - </el-form-item>  
84 - </el-col>  
85 - <el-col :span="24" v-if="judgeShow('caseHandlingOpinions')">  
86 - <el-form-item label="案件处理意见" prop="caseHandlingOpinions">  
87 - <NCC-UploadFz v-model="dataForm.caseHandlingOpinions" :disabled="judgeWrite('caseHandlingOpinions')" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >  
88 - </NCC-UploadFz>  
89 - </el-form-item>  
90 - </el-col>  
91 - <el-col :span="24" v-if="judgeShow('enforcementRecords')">  
92 - <el-form-item label="执法记录" prop="enforcementRecords">  
93 - <NCC-UploadFz v-model="dataForm.enforcementRecords" :disabled="judgeWrite('enforcementRecords')" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >  
94 - </NCC-UploadFz>  
95 - </el-form-item>  
96 - </el-col>  
97 - <el-col :span="24" v-if="judgeShow('noticeLetter')">  
98 - <el-form-item label="行政处罚意见告知" prop="noticeLetter">  
99 - <NCC-UploadFz v-model="dataForm.noticeLetter" :disabled="judgeWrite('noticeLetter')" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >  
100 - </NCC-UploadFz>  
101 - </el-form-item>  
102 - </el-col>  
103 - <el-col :span="24" v-if="judgeShow('punishmentDecision')">  
104 - <el-form-item label="行政处罚决定" prop="punishmentDecision">  
105 - <NCC-UploadFz v-model="dataForm.punishmentDecision" :disabled="judgeWrite('punishmentDecision')" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >  
106 - </NCC-UploadFz>  
107 - </el-form-item>  
108 - </el-col>  
109 - <el-col :span="24" v-if="judgeShow('closingReport')">  
110 - <el-form-item label="行政处罚结案报告" prop="closingReport">  
111 - <NCC-UploadFz v-model="dataForm.closingReport" :disabled="judgeWrite('closingReport')" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" >  
112 - </NCC-UploadFz>  
113 - </el-form-item>  
114 - </el-col>  
115 - <el-col :span="24" v-if="false" >  
116 - <el-form-item label="工作流ID" prop="taskId">  
117 - <el-input v-model="dataForm.taskId" placeholder="请输入" clearable :disabled="judgeWrite('taskId')" :style='{"width":"100%"}' >  
118 - </el-input>  
119 - </el-form-item>  
120 - </el-col>  
121 - <el-col :span="24" v-if="false" >  
122 - <el-form-item label="创建用户" prop="creatorUserId">  
123 - <el-input v-model="dataForm.creatorUserId" placeholder="系统自动生成" readonly :disabled="judgeWrite('creatorUserId')" >  
124 - </el-input>  
125 - </el-form-item>  
126 - </el-col>  
127 - <el-col :span="24" v-if="false" >  
128 - <el-form-item label="创建时间" prop="creatorTime">  
129 - <el-input v-model="dataForm.creatorTime" placeholder="系统自动生成" readonly :disabled="judgeWrite('creatorTime')" >  
130 - </el-input>  
131 - </el-form-item>  
132 - </el-col>  
133 - <el-col :span="24" v-if="false" >  
134 - <el-form-item label="修改用户" prop="lastModifyUserId">  
135 - <el-input v-model="dataForm.lastModifyUserId" placeholder="系统自动生成" readonly :disabled="judgeWrite('lastModifyUserId')" >  
136 - </el-input>  
137 - </el-form-item>  
138 - </el-col>  
139 - <el-col :span="24" v-if="false" >  
140 - <el-form-item label="修改时间" prop="lastModifyTime">  
141 - <el-input v-model="dataForm.lastModifyTime" placeholder="系统自动生成" readonly :disabled="judgeWrite('lastModifyTime')" >  
142 - </el-input>  
143 - </el-form-item>  
144 - </el-col>  
145 - </el-form>  
146 - </el-row>  
147 - <UserBox v-if="userBoxVisible" ref="userBox" @submit="submit" />  
148 - </div> 2 + <el-dialog
  3 + :title="!dataForm.id ? '新建' : isDetail ? '详情' : '编辑'"
  4 + :close-on-click-modal="false"
  5 + :visible.sync="visible"
  6 + class="NCC-dialog NCC-dialog_center"
  7 + lock-scroll
  8 + width="50%"
  9 + v-loading="loading"
  10 + >
  11 + <el-row :gutter="15">
  12 + <el-form
  13 + ref="elForm"
  14 + :model="dataForm"
  15 + size="small"
  16 + label-width="110px"
  17 + label-position="right"
  18 + :disabled="!!isDetail"
  19 + :rules="rules"
  20 + >
  21 + <el-col :span="24" v-if="false">
  22 + <el-form-item label="主键" prop="id">
  23 + <el-input v-model="dataForm.id" placeholder="请输入" clearable />
  24 + </el-form-item>
  25 + </el-col>
  26 + <el-col :span="24">
  27 + <el-form-item label="系统名称" prop="systemName">
  28 + <el-select
  29 + v-model="dataForm.systemName"
  30 + filterable
  31 + remote
  32 + reserve-keyword
  33 + placeholder="请输入关键词"
  34 + :remote-method="getSystemSelect"
  35 + @change="systemChange"
  36 + :loading="system_loading">
  37 + <el-option
  38 + v-for="item in systemOption"
  39 + :key="item.value"
  40 + :label="item.systemName"
  41 + :value="item.id">
  42 + </el-option>
  43 + </el-select>
  44 + </el-form-item>
  45 + </el-col>
  46 + <el-col :span="24">
  47 + <el-form-item label="注册主体" prop="registeredEntity">
  48 + <el-input v-model="dataForm.registeredEntity" placeholder="选择系统自动带出" clearable disabled/>
  49 + </el-form-item>
  50 + </el-col>
  51 + <el-col :span="24">
  52 + <el-form-item label="系统类别" prop="category">
  53 + <el-input v-model="dataForm.category" placeholder="选择系统自动带出" clearable disabled/>
  54 + </el-form-item>
  55 + </el-col>
  56 + <el-col :span="24">
  57 + <el-form-item label="备案号" prop="recordNumber">
  58 + <el-input v-model="dataForm.recordNumber" placeholder="选择系统自动带出" clearable disabled/>
  59 + </el-form-item>
  60 + </el-col>
  61 + <el-col :span="24">
  62 + <el-form-item label="所属区县" prop="districtCounty">
  63 + <el-radio-group
  64 + v-model="dataForm.districtCounty"
  65 + placeholder="请选择所属区县"
  66 + style="line-height: 22px"
  67 + >
  68 + <el-radio v-for="v in areaOptions" :key="v.id" :label="v.id">{{
  69 + v.fullName
  70 + }}</el-radio>
  71 + </el-radio-group>
  72 + </el-form-item>
  73 + </el-col>
  74 + <el-col :span="24">
  75 + <el-form-item label="违法原因" prop="illegalReasons">
  76 + <el-input type="textarea" v-model="dataForm.illegalReasons" placeholder="请输入违法原因" clearable maxlength="200"/>
  77 + </el-form-item>
  78 + </el-col>
  79 + <el-col :span="24">
  80 + <el-form-item label="处罚要求" prop="punishmentRequirements">
  81 + <el-input type="textarea" v-model="dataForm.punishmentRequirements" placeholder="请输入处罚要求" clearable maxlength="200"/>
  82 + </el-form-item>
  83 + </el-col>
  84 + <el-col :span="24">
  85 + <el-form-item label="处罚内容" prop="punishmentContent">
  86 + <el-input type="textarea" v-model="dataForm.punishmentContent" placeholder="请输入处罚内容" clearable maxlength="200"/>
  87 + </el-form-item>
  88 + </el-col>
  89 + </el-form>
  90 + </el-row>
  91 +
  92 + <span slot="footer" class="dialog-footer">
  93 + <el-button @click="visible = false">取 消</el-button>
  94 + <el-button type="primary" v-if="!isDetail" @click="submit(1)">{{isSHILevel ? '下 发' : '上 报'}}</el-button>
  95 + <el-button type="info" v-if="!isDetail" @click="submit(0)">保 存</el-button>
  96 + </span>
  97 + </el-dialog>
149 </template> 98 </template>
150 <script> 99 <script>
151 - import request from '@/utils/request'  
152 - import { getDictionaryDataSelector } from '@/api/systemData/dictionary'  
153 - import { previewDataInterface } from '@/api/systemData/dataInterface'  
154 - export default {  
155 - data(){  
156 - return {  
157 - visible: false,  
158 - setting:{},  
159 - eventType: '',  
160 - userBoxVisible:false,  
161 - dataForm: {  
162 - id:'',  
163 - id:undefined,  
164 - registrationTime:undefined,  
165 - number:undefined,  
166 - systemName:undefined,  
167 - registeredEntity:undefined,  
168 - category:undefined,  
169 - recordNumber:undefined,  
170 - districtCounty:[],  
171 - illegalReasons:undefined,  
172 - punishmentRequirements:undefined,  
173 - punishmentContent:undefined,  
174 - state:undefined,  
175 - record:[],  
176 - caseHandlingOpinions:[],  
177 - enforcementRecords:[],  
178 - noticeLetter:[],  
179 - punishmentDecision:[],  
180 - closingReport:[],  
181 - taskId:undefined,  
182 - creatorUserId:undefined,  
183 - creatorTime:undefined,  
184 - lastModifyUserId:undefined,  
185 - lastModifyTime:undefined,  
186 - },  
187 - rules: {  
188 - },  
189 - categoryOptions:[{"fullName":"选项一","id":"选项一"},{"fullName":"","id":"选项二"}],  
190 - stateOptions:[{"fullName":"选项一","id":"1"},{"fullName":"选项二","id":"2"}],  
191 - }  
192 - },  
193 - computed: {},  
194 - watch: {},  
195 - created() {  
196 - },  
197 - mounted() {},  
198 - methods: {  
199 - goBack() {  
200 - this.$emit('refresh')  
201 - },  
202 - init(data) {  
203 - this.dataForm.id = data.id || 0;  
204 - this.loading = true  
205 - this.setting = data  
206 - this.visible = true;  
207 - this.$nextTick(() => {  
208 - this.$refs['elForm'].resetFields();  
209 - if (this.dataForm.id) {  
210 - request({  
211 - url: '/Extend/BaseCaseHandling/' + this.dataForm.id,  
212 - method: 'get'  
213 - }).then(res =>{  
214 - this.dataForm = res.data;  
215 - if(!this.dataForm.districtCounty)this.dataForm.districtCounty=[];  
216 - if(!this.dataForm.record)this.dataForm.record=[];  
217 - if(!this.dataForm.caseHandlingOpinions)this.dataForm.caseHandlingOpinions=[];  
218 - if(!this.dataForm.enforcementRecords)this.dataForm.enforcementRecords=[];  
219 - if(!this.dataForm.noticeLetter)this.dataForm.noticeLetter=[];  
220 - if(!this.dataForm.punishmentDecision)this.dataForm.punishmentDecision=[];  
221 - if(!this.dataForm.closingReport)this.dataForm.closingReport=[];  
222 - })  
223 - }  
224 - else{  
225 - this.dataForm.flowId = data.flowId  
226 - }  
227 - this.loading = false  
228 - this.$emit('setPageLoad')  
229 - })  
230 - },  
231 - dataFormSubmit(eventType) {  
232 - this.$refs['elForm'].validate((valid) => {  
233 - if (valid) {  
234 - if (eventType === 'audit' || eventType === 'reject') {  
235 - this.$emit('eventReciver', this.dataForm, eventType)  
236 - return  
237 - }  
238 - this.dataForm.flowState = eventType === 'submit' ? 0 : 1  
239 - this.eventType = eventType  
240 - if (this.eventType === 'submit') {  
241 - this.$confirm('您确定要提交当前流程吗, 是否继续?', '提示', {  
242 - type: 'warning'  
243 - }).then(() => {  
244 - this.request()  
245 - }).catch(() => { });  
246 - } else {  
247 - this.request()  
248 - }  
249 - }  
250 - })  
251 - },  
252 - request() {  
253 - if (!this.dataForm.id) {  
254 - delete (this.dataForm.id)  
255 - request({  
256 - url: '/Extend/BaseCaseHandling',  
257 - method: 'post',  
258 - data: this.dataForm  
259 - }).then((res) => {  
260 - this.$message({  
261 - message: res.msg,  
262 - type: 'success',  
263 - duration: 1000,  
264 - onClose: () => {  
265 - this.visible = false  
266 - this.$emit('close', true)  
267 - }  
268 - })  
269 - })  
270 - }else{  
271 - request({  
272 - url: '/Extend/BaseCaseHandling/' + this.dataForm.id,  
273 - method: 'PUT',  
274 - data: this.dataForm  
275 - }).then((res) => {  
276 - this.$message({  
277 - message: res.msg,  
278 - type: 'success',  
279 - duration: 1000,  
280 - onClose: () => {  
281 - this.visible = false  
282 - this.$emit('close', true)  
283 - }  
284 - })  
285 - })  
286 - }  
287 - },  
288 - judgeShow(id) {  
289 - if (!this.setting.formOperates || !this.setting.formOperates.length) return true  
290 - let arr = this.setting.formOperates.filter(o => o.id === id) || []  
291 - if (!arr.length) return true  
292 - let item = arr[0]  
293 - return item.read  
294 - },  
295 - judgeWrite(id) {  
296 - if (!this.setting.formOperates || !this.setting.formOperates.length) return false  
297 - let arr = this.setting.formOperates.filter(o => o.id === id) || []  
298 - if (!arr.length) return true  
299 - let item = arr[0]  
300 - return !item.write  
301 - },  
302 - }  
303 - }  
304 -</script> 100 +import infoMixin from "@/mixins/info";
  101 +import request from "@/utils/request";
  102 +import { getSystemDetail } from "@/api/baseData/info";
  103 +import { dynamicTextUP } from "@/filters/index";
305 104
  105 +export default {
  106 + mixins: [infoMixin],
  107 + data() {
  108 + return {
  109 + visible: false,
  110 + loading: false,
  111 + isDetail: false,
  112 + dataForm: {
  113 + id: undefined,
  114 + registrationTime: undefined,
  115 + systemName: undefined,
  116 + registeredEntity: undefined,
  117 + category: undefined,
  118 + recordNumber: undefined,
  119 + districtCounty: undefined,
  120 + illegalReasons: undefined,
  121 + punishmentRequirements: undefined,
  122 + punishmentContent: undefined,
  123 + state: undefined,
  124 + record: undefined,
  125 + caseHandlingOpinions: undefined,
  126 + enforcementRecords: undefined,
  127 + noticeLetter: undefined,
  128 + punishmentDecision: undefined,
  129 + closingReport: undefined,
  130 + },
  131 + rules: {
  132 + systemName: [
  133 + { required: true, message: "请选择系统名称", trigger: "change" }
  134 + ],
  135 + districtCounty: [
  136 + { required: true, message: "请选择所属区域", trigger: "change" }
  137 + ],
  138 + },
  139 + systemOption: [],
  140 + system_loading: false,
  141 + areaOptions: [],
  142 + };
  143 + },
  144 + computed: {
  145 + isSHILevel() {
  146 + // 判断角色是否为‘市级办公室’
  147 + return this.$store.state.user.islader;
  148 + },
  149 + },
  150 + watch: {},
  151 + created() {
  152 + this.getSystemSelect();
  153 + this.initSystemTypeList();
  154 + this.initAreaTypeList();
  155 + },
  156 + mounted() {},
  157 + methods: {
  158 + // 获取系统列表
  159 + getSystemSelect(val) {
  160 + let query = {
  161 + SystemName: val || "",
  162 + };
  163 + this.system_loading = true;
  164 + request({
  165 + url: "/Extend/basesysteminfo/GetNoPagingList",
  166 + method: "get",
  167 + params: query,
  168 + }).then(({data}) => {
  169 + this.systemOption = data;
  170 + this.system_loading = false;
  171 + })
  172 + },
  173 + // 系统名称改变
  174 + systemChange(val) {
  175 + getSystemDetail(val).then(({data}) => {
  176 + this.dataForm.registeredEntity = data.companyId;
  177 + this.dataForm.category = dynamicTextUP(data.systemType, this.systemTypeOptions);
  178 + this.dataForm.recordNumber = data.specialRecordNumber || '--';
  179 + this.dataForm.districtCounty = data.areaId;
  180 + })
  181 + },
  182 + goBack() {
  183 + this.$emit("refresh");
  184 + },
  185 + init(id, isDetail) {
  186 + this.dataForm.id = id || 0;
  187 + this.isDetail = isDetail || false;
  188 + // this.loading = true;
  189 + this.visible = true;
  190 + this.$nextTick(() => {
  191 + this.$refs["elForm"].resetFields();
  192 + if (this.dataForm.id) {
  193 + request({
  194 + url: `/Extend/BaseCaseHandling/${this.dataForm.id}`,
  195 + method: "GET",
  196 + }).then((res) => {
  197 + this.dataForm = res.data;
  198 + // this.loading = false;
  199 + });
  200 + }
  201 + });
  202 + },
  203 + // 提交
  204 + submit(type) {
  205 + // type: 1 上报 0 保存
  206 + let obj = {
  207 + ...this.dataForm,
  208 + isReport: type,
  209 + }
  210 + this.$refs['elForm'].validate((valid) => {
  211 + if(!type || valid) {
  212 + request({
  213 + url: `/Extend/BaseCaseHandling`,
  214 + method: "POST",
  215 + data: obj,
  216 + }).then((res) => {
  217 + this.$message({
  218 + type: "success",
  219 + message: res.msg,
  220 + onClose: () => {
  221 + this.visible = false;
  222 + this.$emit("refresh", true);
  223 + },
  224 + });
  225 + });
  226 + }
  227 + })
  228 + }
  229 + },
  230 +};
  231 +</script>
src/views/baseCaseHandling/index.vue
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 <el-form-item label=""> 10 <el-form-item label="">
11 <el-input 11 <el-input
12 v-model="query.number" 12 v-model="query.number"
13 - placeholder="号" 13 + placeholder="档案号"
14 clearable 14 clearable
15 /> 15 />
16 </el-form-item> 16 </el-form-item>
@@ -82,61 +82,23 @@ @@ -82,61 +82,23 @@
82 :data="list" 82 :data="list"
83 @sort-change="sortChange" 83 @sort-change="sortChange"
84 > 84 >
85 - <el-table-column prop="id" label="主键" align="left" />  
86 - <el-table-column  
87 - prop="registrationTime"  
88 - label="登记时间"  
89 - align="left"  
90 - />  
91 - <el-table-column prop="number" label="文号" align="left" />  
92 - <el-table-column  
93 - prop="systemName"  
94 - label="网站/APP名称"  
95 - align="left"  
96 - width="150"  
97 - />  
98 - <el-table-column  
99 - prop="registeredEntity"  
100 - label="注册主体"  
101 - align="left"  
102 - /> 85 + <!-- <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip/> -->
  86 + <el-table-column prop="number" label="档案号" align="left" show-overflow-tooltip/>
  87 + <el-table-column prop="registrationTime" label="登记时间" :formatter="ncc.tableDateFormat" align="left" show-overflow-tooltip/>
  88 + <el-table-column prop="systemName" label="网站/APP名称" align="left" width="150" show-overflow-tooltip/>
  89 + <el-table-column prop="registeredEntity" label="注册主体" align="left" show-overflow-tooltip/>
103 <el-table-column label="类别" prop="category" align="left"> 90 <el-table-column label="类别" prop="category" align="left">
104 - <template slot-scope="scope">{{  
105 - scope.row.category | dynamicText(categoryOptions)  
106 - }}</template> 91 + <template slot-scope="scope">{{ scope.row.category | dynamicText(categoryOptions) }}</template>
107 </el-table-column> 92 </el-table-column>
108 - <el-table-column  
109 - prop="recordNumber"  
110 - label="备案号"  
111 - align="left"  
112 - />  
113 - <el-table-column  
114 - prop="districtCounty"  
115 - label="所属区(市)县"  
116 - align="left"  
117 - width="150"  
118 - />  
119 - <el-table-column  
120 - prop="illegalReasons"  
121 - label="违法原因"  
122 - align="left"  
123 - />  
124 - <el-table-column  
125 - prop="punishmentRequirements"  
126 - label="处罚要求"  
127 - align="left"  
128 - />  
129 - <el-table-column  
130 - prop="punishmentContent"  
131 - label="处罚内容"  
132 - align="left"  
133 - />  
134 - <el-table-column label="状态" prop="state" align="left">  
135 - <template slot-scope="scope">{{  
136 - scope.row.state | dynamicText(stateOptions)  
137 - }}</template> 93 + <el-table-column prop="recordNumber" label="备案号" align="left" show-overflow-tooltip/>
  94 + <el-table-column prop="districtCounty" label="所属区(市)县" align="left" width="150">
  95 + <template slot-scope="scope">{{ scope.row.districtCounty | dynamicText(areaOptions) }}</template>
138 </el-table-column> 96 </el-table-column>
139 - <el-table-column prop="flowState" label="状态" width="100"> 97 + <el-table-column prop="illegalReasons" label="违法原因" align="left" show-overflow-tooltip/>
  98 + <el-table-column prop="punishmentRequirements" label="处罚要求" align="left" show-overflow-tooltip/>
  99 + <el-table-column prop="punishmentContent" label="处罚内容" align="left" show-overflow-tooltip/>
  100 + <el-table-column label="状态" prop="state" align="left" />
  101 + <!-- <el-table-column prop="flowState" label="状态" width="100">
140 <template slot-scope="scope"> 102 <template slot-scope="scope">
141 <el-tag v-if="scope.row.flowState == 1">等待审核</el-tag> 103 <el-tag v-if="scope.row.flowState == 1">等待审核</el-tag>
142 <el-tag type="success" v-else-if="scope.row.flowState == 2" 104 <el-tag type="success" v-else-if="scope.row.flowState == 2"
@@ -153,43 +115,20 @@ @@ -153,43 +115,20 @@
153 > 115 >
154 <el-tag type="info" v-else>等待提交</el-tag> 116 <el-tag type="info" v-else>等待提交</el-tag>
155 </template> 117 </template>
156 - </el-table-column>  
157 - <el-table-column label="操作" fixed="right" width="100"> 118 + </el-table-column> -->
  119 + <el-table-column label="操作" fixed="right" width="180">
158 <template slot-scope="scope"> 120 <template slot-scope="scope">
159 - <el-button  
160 - type="text"  
161 - :disabled="[1, 2, 5].indexOf(scope.row.flowState) > -1"  
162 - @click="addOrUpdateHandle(scope.row.id)"  
163 - >编辑</el-button  
164 - >  
165 - <el-button  
166 - type="text"  
167 - :disabled="[1, 2, 3, 5].indexOf(scope.row.flowState) > -1"  
168 - @click="handleDel(scope.row.id)"  
169 - class="NCC-table-delBtn"  
170 - >删除</el-button  
171 - >  
172 - <el-button  
173 - size="mini"  
174 - type="text"  
175 - :disabled="!scope.row.flowState"  
176 - @click="  
177 - addOrUpdateHandle(scope.row.id, scope.row.flowState)  
178 - "  
179 - >详情</el-button  
180 - > 121 + <el-button type="text" :disabled="[1, 2, 5].indexOf(scope.row.flowState) > -1" @click="addOrUpdateHandle(scope.row.id)" >编辑</el-button>
  122 + <el-button type="text" :disabled="[1, 2, 5].indexOf(scope.row.flowState) > -1" @click="addOrUpdateHandle(scope.row.id)" >{{isSHILevel ? '下发' : '上报'}}</el-button>
  123 + <el-button type="text" :disabled="[1, 2, 3, 5].indexOf(scope.row.flowState) > -1" @click="handleDel(scope.row.id)" class="NCC-table-delBtn" >删除</el-button>
  124 + <el-button size="mini" type="text" :disabled="!scope.row.flowState" @click=" addOrUpdateHandle(scope.row.id, scope.row.flowState) " >详情</el-button>
181 </template> 125 </template>
182 </el-table-column> 126 </el-table-column>
183 </NCC-table> 127 </NCC-table>
184 - <pagination  
185 - :total="total"  
186 - :page.sync="listQuery.currentPage"  
187 - :limit.sync="listQuery.pageSize"  
188 - @pagination="initData"  
189 - /> 128 + <pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="initData"/>
190 </div> 129 </div>
191 </div> 130 </div>
192 - <FlowBox v-if="flowVisible" ref="FlowBox" @close="colseFlow" /> 131 + <FlowBox v-if="flowVisible" ref="FlowBox" @refresh="colseFlow" />
193 <ExportBox 132 <ExportBox
194 v-if="exportBoxVisible" 133 v-if="exportBoxVisible"
195 ref="ExportBox" 134 ref="ExportBox"
@@ -200,12 +139,14 @@ @@ -200,12 +139,14 @@
200 </div> 139 </div>
201 </template> 140 </template>
202 <script> 141 <script>
  142 +import infoMixin from "@/mixins/info";
203 import request from "@/utils/request"; 143 import request from "@/utils/request";
204 import { getDictionaryDataSelector } from "@/api/systemData/dictionary"; 144 import { getDictionaryDataSelector } from "@/api/systemData/dictionary";
205 -import FlowBox from "@/views/workFlow/components/FlowBox"; 145 +import FlowBox from "./Form.vue";
206 import ExportBox from "./ExportBox"; 146 import ExportBox from "./ExportBox";
207 import { previewDataInterface } from "@/api/systemData/dataInterface"; 147 import { previewDataInterface } from "@/api/systemData/dataInterface";
208 export default { 148 export default {
  149 + mixins: [infoMixin],
209 components: { FlowBox, ExportBox }, 150 components: { FlowBox, ExportBox },
210 data() { 151 data() {
211 return { 152 return {
@@ -231,7 +172,7 @@ export default { @@ -231,7 +172,7 @@ export default {
231 columnList: [ 172 columnList: [
232 { prop: "id", label: "主键" }, 173 { prop: "id", label: "主键" },
233 { prop: "registrationTime", label: "登记时间" }, 174 { prop: "registrationTime", label: "登记时间" },
234 - { prop: "number", label: "号" }, 175 + { prop: "number", label: "档案号" },
235 { prop: "systemName", label: "网站/APP名称" }, 176 { prop: "systemName", label: "网站/APP名称" },
236 { prop: "registeredEntity", label: "注册主体" }, 177 { prop: "registeredEntity", label: "注册主体" },
237 { prop: "category", label: "类别" }, 178 { prop: "category", label: "类别" },
@@ -250,11 +191,18 @@ export default { @@ -250,11 +191,18 @@ export default {
250 { fullName: "选项一", id: "1" }, 191 { fullName: "选项一", id: "1" },
251 { fullName: "选项二", id: "2" }, 192 { fullName: "选项二", id: "2" },
252 ], 193 ],
  194 + areaOptions: [],
253 }; 195 };
254 }, 196 },
255 - computed: {}, 197 + computed: {
  198 + isSHILevel() {
  199 + // 判断角色是否为‘市级办公室’
  200 + return this.$store.state.user.islader;
  201 + },
  202 + },
256 created() { 203 created() {
257 - // this.initData() 204 + this.initAreaTypeList();
  205 + this.initData();
258 }, 206 },
259 methods: { 207 methods: {
260 sortChange({ column, prop, order }) { 208 sortChange({ column, prop, order }) {
@@ -306,18 +254,10 @@ export default { @@ -306,18 +254,10 @@ export default {
306 }) 254 })
307 .catch(() => {}); 255 .catch(() => {});
308 }, 256 },
309 - addOrUpdateHandle(id, flowState) {  
310 - let data = {  
311 - id: id || "",  
312 - enCode: "#visualDevanjcl",  
313 - flowId: "577085427060573445",  
314 - formType: 1,  
315 - opType: flowState ? 0 : "-1",  
316 - status: flowState,  
317 - }; 257 + addOrUpdateHandle(id, isDetail) {
318 this.flowVisible = true; 258 this.flowVisible = true;
319 this.$nextTick(() => { 259 this.$nextTick(() => {
320 - this.$refs.FlowBox.init(data); 260 + this.$refs.FlowBox.init(id, isDetail);
321 }); 261 });
322 }, 262 },
323 search() { 263 search() {
src/views/baseInspectionReport/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="60%"
9 > 9 >
10 <el-row :gutter="15" class=""> 10 <el-row :gutter="15" class="">
11 <el-form 11 <el-form
@@ -30,13 +30,14 @@ @@ -30,13 +30,14 @@
30 </el-col> 30 </el-col>
31 <el-col :span="23"> 31 <el-col :span="23">
32 <el-form-item label="问题来源" prop="source"> 32 <el-form-item label="问题来源" prop="source">
33 - <el-input  
34 - v-model="dataForm.source"  
35 - placeholder="请输入问题来源"  
36 - clearable  
37 - :style="{ width: '100%' }"  
38 - >  
39 - </el-input> 33 + <el-radio-group v-model="dataForm.source">
  34 + <el-radio
  35 + v-for="(item, index) in sourceOptions"
  36 + :key="index"
  37 + :label="item.Id"
  38 + >{{ item.FullName }}</el-radio
  39 + >
  40 + </el-radio-group>
40 </el-form-item> 41 </el-form-item>
41 </el-col> 42 </el-col>
42 <el-col :span="23"> 43 <el-col :span="23">
@@ -70,7 +71,7 @@ @@ -70,7 +71,7 @@
70 </el-radio-group> 71 </el-radio-group>
71 </el-form-item> 72 </el-form-item>
72 </el-col> 73 </el-col>
73 - <el-col :span="13"> 74 + <el-col :span="18">
74 <el-form-item label="问题类型" prop="questionType"> 75 <el-form-item label="问题类型" prop="questionType">
75 <el-radio-group v-model="dataForm.questionType" @change="questionTypeChange"> 76 <el-radio-group v-model="dataForm.questionType" @change="questionTypeChange">
76 <el-radio 77 <el-radio
@@ -84,7 +85,7 @@ @@ -84,7 +85,7 @@
84 </el-form-item> 85 </el-form-item>
85 </el-col> 86 </el-col>
86 <template v-if="otherQuestion"> 87 <template v-if="otherQuestion">
87 - <el-col :span="10"> 88 + <el-col :span="5">
88 <el-input 89 <el-input
89 v-model="dataForm.otherQuestionType" 90 v-model="dataForm.otherQuestionType"
90 placeholder="请输入问题类型" 91 placeholder="请输入问题类型"
@@ -118,17 +119,7 @@ @@ -118,17 +119,7 @@
118 </el-form-item> 119 </el-form-item>
119 </el-col> 120 </el-col>
120 </template> 121 </template>
121 - <el-col :span="23">  
122 - <el-form-item label="关键词" prop="questionClass">  
123 - <el-input  
124 - v-model="dataForm.questionClass"  
125 - placeholder="请输入关键词"  
126 - clearable  
127 - :style="{ width: '100%' }"  
128 - >  
129 - </el-input>  
130 - </el-form-item>  
131 - </el-col> 122 +
132 <el-col :span="23"> 123 <el-col :span="23">
133 <el-form-item label="问题内容" prop="questionContent"> 124 <el-form-item label="问题内容" prop="questionContent">
134 <el-input 125 <el-input
@@ -153,9 +144,19 @@ @@ -153,9 +144,19 @@
153 </el-input> 144 </el-input>
154 </el-form-item> 145 </el-form-item>
155 </el-col> 146 </el-col>
156 -  
157 <el-col :span="23"> 147 <el-col :span="23">
158 - <el-form-item label="取证内容" prop="obtainEvidence"> 148 + <el-form-item label="关键词" prop="questionClass">
  149 + <el-input
  150 + v-model="dataForm.questionClass"
  151 + placeholder="请输入关键词"
  152 + clearable
  153 + :style="{ width: '100%' }"
  154 + >
  155 + </el-input>
  156 + </el-form-item>
  157 + </el-col>
  158 + <el-col :span="23">
  159 + <el-form-item label="附件" prop="obtainEvidence">
159 <NCC-UploadFz 160 <NCC-UploadFz
160 v-model="dataForm.obtainEvidence" 161 v-model="dataForm.obtainEvidence"
161 :fileSize="5" 162 :fileSize="5"
@@ -212,9 +213,6 @@ export default { @@ -212,9 +213,6 @@ export default {
212 questionType: [ 213 questionType: [
213 { required: true, message: "请选择问题类型", trigger: "change" }, 214 { required: true, message: "请选择问题类型", trigger: "change" },
214 ], 215 ],
215 - questionClass: [  
216 - { required: true, message: "请选择关键词", trigger: "change" },  
217 - ],  
218 }, 216 },
219 sourceOptions: [ 217 sourceOptions: [
220 { fullName: "市网信办线索", id: "市网信办线索" }, 218 { fullName: "市网信办线索", id: "市网信办线索" },
@@ -239,6 +237,7 @@ export default { @@ -239,6 +237,7 @@ export default {
239 watch: {}, 237 watch: {},
240 created() { 238 created() {
241 this.loadList(); 239 this.loadList();
  240 + this.getSourceOptions();
242 this.getplatformTypeOptions(); 241 this.getplatformTypeOptions();
243 this.getquestionTypeOptions(); 242 this.getquestionTypeOptions();
244 }, 243 },
@@ -269,6 +268,14 @@ export default { @@ -269,6 +268,14 @@ export default {
269 (list = await this.$store.dispatch("getTypeListByCode", "system")); 268 (list = await this.$store.dispatch("getTypeListByCode", "system"));
270 this.platformTypeOptions = list; 269 this.platformTypeOptions = list;
271 }, 270 },
  271 + async getSourceOptions() {
  272 + request({
  273 + url: `/Extend/baseinspectionreport/GetReportSourceList`,
  274 + method: "GET",
  275 + }).then(({data}) => {
  276 + this.sourceOptions = data;
  277 + })
  278 + },
272 getquestionTypeOptions() { 279 getquestionTypeOptions() {
273 getDictionaryDataSelector("577006814432855301").then((res) => { 280 getDictionaryDataSelector("577006814432855301").then((res) => {
274 this.questionTypeOptions = res.data.list; 281 this.questionTypeOptions = res.data.list;
src/views/baseSpecialAction/Form.vue
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 class="NCC-dialog NCC-dialog_center" 6 class="NCC-dialog NCC-dialog_center"
7 lock-scroll 7 lock-scroll
8 width="50%" 8 width="50%"
  9 + v-loading="loading"
9 > 10 >
10 <el-row :gutter="15" style="padding-top: 10px"> 11 <el-row :gutter="15" style="padding-top: 10px">
11 <el-form 12 <el-form
@@ -272,12 +273,17 @@ export default { @@ -272,12 +273,17 @@ export default {
272 goBack() { 273 goBack() {
273 this.$emit("refresh"); 274 this.$emit("refresh");
274 }, 275 },
275 - init(id, isDetail) {  
276 - this.dataForm.id = id || 0; 276 + init(row, isDetail) {
  277 + this.dataForm.id = row.id || 0;
277 this.visible = true; 278 this.visible = true;
278 this.isDetail = isDetail || false; 279 this.isDetail = isDetail || false;
279 this.$nextTick(() => { 280 this.$nextTick(() => {
280 this.$refs["elForm"].resetFields(); 281 this.$refs["elForm"].resetFields();
  282 + if(this.dataForm.id) {
  283 + console.log(row, 'row');
  284 + this.dataForm.communicationArea = JSON.parse(row.communicationArea);
  285 + this.dataForm.communicationOut = JSON.parse(row.communicationOut);
  286 + }
281 }); 287 });
282 }, 288 },
283 dataFormSubmit() { 289 dataFormSubmit() {
src/views/baseSpecialAction/index.vue
@@ -59,7 +59,7 @@ @@ -59,7 +59,7 @@
59 <el-table-column prop="creatorUserId" show-overflow-tooltip label="创建用户" align="left"/> 59 <el-table-column prop="creatorUserId" show-overflow-tooltip label="创建用户" align="left"/>
60 <el-table-column label="操作" fixed="right" width="100"> 60 <el-table-column label="操作" fixed="right" width="100">
61 <template slot-scope="scope"> 61 <template slot-scope="scope">
62 - <el-button type="text" @click="addOrUpdateHandle(scope.row.id)" v-if="scope.row.state == '未发布'">发布任务</el-button> 62 + <el-button type="text" @click="addOrUpdateHandle(scope.row)" v-if="scope.row.state == '未发布'">发布任务</el-button>
63 <el-button type="text" @click="toDetail(scope.row)" v-else>处理情况</el-button> 63 <el-button type="text" @click="toDetail(scope.row)" v-else>处理情况</el-button>
64 </template> 64 </template>
65 </el-table-column> 65 </el-table-column>
@@ -152,10 +152,10 @@ export default { @@ -152,10 +152,10 @@ export default {
152 }); 152 });
153 }, 153 },
154 154
155 - addOrUpdateHandle(id, isDetail) { 155 + addOrUpdateHandle(row, isDetail) {
156 this.formVisible = true; 156 this.formVisible = true;
157 this.$nextTick(() => { 157 this.$nextTick(() => {
158 - this.$refs.NCCForm.init(id, isDetail); 158 + this.$refs.NCCForm.init(row, isDetail);
159 }); 159 });
160 }, 160 },
161 toDetail(row) { 161 toDetail(row) {
src/views/baseSystemInfo/DetailForm.vue
@@ -360,12 +360,12 @@ export default { @@ -360,12 +360,12 @@ export default {
360 }; 360 };
361 </script> 361 </script>
362 <style lang="scss" scoped> 362 <style lang="scss" scoped>
363 -.NCC-dialog.systemInfoDialog {  
364 - :deep(.el-dialog__body) {  
365 - overflow: unset !important;  
366 - :deep(.el-tabs__content) {  
367 - height: calc(65vh - 45px);  
368 - }  
369 - }  
370 -} 363 +// .NCC-dialog.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> 371 </style>
src/views/baseSystemInfo/InspectForm.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="60%"
9 > 9 >
10 <el-row :gutter="15" class=""> 10 <el-row :gutter="15" class="">
11 <el-form 11 <el-form
@@ -19,13 +19,14 @@ @@ -19,13 +19,14 @@
19 > 19 >
20 <el-col :span="24"> 20 <el-col :span="24">
21 <el-form-item label="问题来源" prop="source"> 21 <el-form-item label="问题来源" prop="source">
22 - <el-input  
23 - v-model="dataForm.source"  
24 - placeholder="请输入问题来源"  
25 - clearable  
26 - :style="{ width: '100%' }"  
27 - >  
28 - </el-input> 22 + <el-radio-group v-model="dataForm.source">
  23 + <el-radio
  24 + v-for="(item, index) in sourceOptions"
  25 + :key="index"
  26 + :label="item.Id"
  27 + >{{ item.FullName }}</el-radio
  28 + >
  29 + </el-radio-group>
29 </el-form-item> 30 </el-form-item>
30 </el-col> 31 </el-col>
31 <el-col :span="24"> 32 <el-col :span="24">
@@ -59,7 +60,7 @@ @@ -59,7 +60,7 @@
59 </el-radio-group> 60 </el-radio-group>
60 </el-form-item> 61 </el-form-item>
61 </el-col> 62 </el-col>
62 - <el-col :span="13"> 63 + <el-col :span="18">
63 <el-form-item label="问题类型" prop="questionType"> 64 <el-form-item label="问题类型" prop="questionType">
64 <el-radio-group v-model="dataForm.questionType" @change="questionTypeChange"> 65 <el-radio-group v-model="dataForm.questionType" @change="questionTypeChange">
65 <el-radio 66 <el-radio
@@ -73,7 +74,7 @@ @@ -73,7 +74,7 @@
73 </el-form-item> 74 </el-form-item>
74 </el-col> 75 </el-col>
75 <template v-if="otherQuestion"> 76 <template v-if="otherQuestion">
76 - <el-col :span="10"> 77 + <el-col :span="5">
77 <el-input 78 <el-input
78 v-model="dataForm.otherQuestionType" 79 v-model="dataForm.otherQuestionType"
79 placeholder="请输入问题类型" 80 placeholder="请输入问题类型"
@@ -107,17 +108,7 @@ @@ -107,17 +108,7 @@
107 </el-form-item> 108 </el-form-item>
108 </el-col> 109 </el-col>
109 </template> 110 </template>
110 - <el-col :span="23">  
111 - <el-form-item label="关键词" prop="questionClass">  
112 - <el-input  
113 - v-model="dataForm.questionClass"  
114 - placeholder="请输入关键词"  
115 - clearable  
116 - :style="{ width: '100%' }"  
117 - >  
118 - </el-input>  
119 - </el-form-item>  
120 - </el-col> 111 +
121 <el-col :span="23"> 112 <el-col :span="23">
122 <el-form-item label="问题内容" prop="questionContent"> 113 <el-form-item label="问题内容" prop="questionContent">
123 <el-input 114 <el-input
@@ -143,7 +134,18 @@ @@ -143,7 +134,18 @@
143 </el-form-item> 134 </el-form-item>
144 </el-col> 135 </el-col>
145 <el-col :span="23"> 136 <el-col :span="23">
146 - <el-form-item label="取证内容" prop="obtainEvidence"> 137 + <el-form-item label="关键词" prop="questionClass">
  138 + <el-input
  139 + v-model="dataForm.questionClass"
  140 + placeholder="请输入关键词"
  141 + clearable
  142 + :style="{ width: '100%' }"
  143 + >
  144 + </el-input>
  145 + </el-form-item>
  146 + </el-col>
  147 + <el-col :span="23">
  148 + <el-form-item label="附件" prop="obtainEvidence">
147 <NCC-UploadFz 149 <NCC-UploadFz
148 v-model="dataForm.obtainEvidence" 150 v-model="dataForm.obtainEvidence"
149 :fileSize="5" 151 :fileSize="5"
@@ -205,9 +207,6 @@ export default { @@ -205,9 +207,6 @@ export default {
205 questionType: [ 207 questionType: [
206 { required: true, message: "请选择问题类型", trigger: "change" }, 208 { required: true, message: "请选择问题类型", trigger: "change" },
207 ], 209 ],
208 - questionClass: [  
209 - { required: true, message: "请选择关键词", trigger: "change" },  
210 - ],  
211 }, 210 },
212 sourceOptions: [ 211 sourceOptions: [
213 { fullName: "市网信办线索", id: "市网信办线索" }, 212 { fullName: "市网信办线索", id: "市网信办线索" },
@@ -229,11 +228,20 @@ export default { @@ -229,11 +228,20 @@ export default {
229 watch: {}, 228 watch: {},
230 created() { 229 created() {
231 this.loadList(); 230 this.loadList();
  231 + this.getSourceOptions();
232 this.getplatformTypeOptions(); 232 this.getplatformTypeOptions();
233 this.getquestionTypeOptions(); 233 this.getquestionTypeOptions();
234 }, 234 },
235 mounted() {}, 235 mounted() {},
236 methods: { 236 methods: {
  237 + async getSourceOptions() {
  238 + request({
  239 + url: `/Extend/baseinspectionreport/GetReportSourceList`,
  240 + method: "GET",
  241 + }).then(({data}) => {
  242 + this.sourceOptions = data;
  243 + })
  244 + },
237 loadList(query) { 245 loadList(query) {
238 this.name_loading = true; 246 this.name_loading = true;
239 getInfoList({pageIndex: 1, pageSize: 100, keyword: query }).then(({ data }) => { 247 getInfoList({pageIndex: 1, pageSize: 100, keyword: query }).then(({ data }) => {
src/views/homePage/components/news/NewsDialog.vue
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 </template> 38 </template>
39 39
40 <script> 40 <script>
41 -import { getMessageList, ReadInfo } from "@/api/system/message"; 41 +import { getMessageList, ReadInfo, MessageAllRead } from "@/api/system/message";
42 import { message } from '@/utils/message'; 42 import { message } from '@/utils/message';
43 export default { 43 export default {
44 name: "NewsDialog", 44 name: "NewsDialog",
src/views/overView/Overview.vue
@@ -20,9 +20,9 @@ @@ -20,9 +20,9 @@
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="140"> 23 + <el-table-column prop="deadLine" label="任务期限" show-overflow-tooltip :formatter="ncc.tableDateFormat" width="170">
24 <template slot-scope="scope"> 24 <template slot-scope="scope">
25 - <el-tag :type="ncc.timeDeadLine(scope.row.deadLine)">{{ ncc.tableDateFormat(scope.row, 'deadLine', scope.row.deadLine) }}</el-tag> 25 + <el-tag :type="`${ncc.timeDeadLine(scope.row.deadLine)}`">{{ncc.stateDeadLine(scope.row.deadLine)}}{{ ncc.tableDateFormat(scope.row, 'deadLine', scope.row.deadLine) }}</el-tag>
26 </template> 26 </template>
27 </el-table-column> 27 </el-table-column>
28 <el-table-column label="操作" width="100"> 28 <el-table-column label="操作" width="100">
@@ -111,13 +111,15 @@ @@ -111,13 +111,15 @@
111 <el-table :data="msgList" style="width: 100%" stripe v-loading="msgLoading"> 111 <el-table :data="msgList" style="width: 100%" stripe v-loading="msgLoading">
112 <el-table-column prop="title" label="标题" show-overflow-tooltip> 112 <el-table-column prop="title" label="标题" show-overflow-tooltip>
113 </el-table-column> 113 </el-table-column>
114 - <el-table-column label="操作" fixed="right" width="80"> 114 + <el-table-column label="操作" fixed="right" width="150">
115 <template slot-scope="scope"> 115 <template slot-scope="scope">
116 - <el-button type="text" @click="checkDetail(scope.row)">详情</el-button> 116 + <el-button type="text" @click="checkDetail(scope.row)" v-if="isSHILevel">编辑</el-button>
  117 + <el-button type="text" style="color: red;" @click="delNew(scope.row)">删除</el-button>
  118 + <el-button type="text" style="color: #909399;" @click="checkDetail(scope.row, true)">详情</el-button>
117 </template> 119 </template>
118 </el-table-column> 120 </el-table-column>
119 </el-table> 121 </el-table>
120 - <pagination :total="msgTotal" :page.sync="msgListQuery.currentPage" :limit.sync="msgListQuery.pageSize" @pagination="getAllMsgList" /> 122 + <pagination :total="msgTotal" :page.sync="msgListQuery.currentPage" :limit.sync="msgListQuery.pageSize" @pagination="getAllMsgList" layout="prev, pager, next"/>
121 </template> 123 </template>
122 </div> 124 </div>
123 </div> 125 </div>
@@ -220,13 +222,30 @@ export default { @@ -220,13 +222,30 @@ export default {
220 this.MsgFormVisible = false; 222 this.MsgFormVisible = false;
221 val && this.getAllMsgList(); 223 val && this.getAllMsgList();
222 }, 224 },
223 - checkDetail(row) {  
224 - console.log(row); 225 + checkDetail(row, isDetail) {
225 this.MsgFormVisible = true; 226 this.MsgFormVisible = true;
226 this.$nextTick(() => { 227 this.$nextTick(() => {
227 - this.$refs.MsgForm.init(row.id, true); 228 + this.$refs.MsgForm.init(row.id, isDetail);
228 }) 229 })
229 }, 230 },
  231 + delNew(row) {
  232 + this.$confirm('此操作将永久删除该消息, 是否继续?', '提示', {
  233 + confirmButtonText: '确定',
  234 + cancelButtonText: '取消',
  235 + type: 'warning'
  236 + }).then(async () => {
  237 + let res = await request({
  238 + url: `/SubDev/ZyOaArticle/${row.id}`,
  239 + method: "DELETE",
  240 + });
  241 + this.$message({
  242 + message: res.msg,
  243 + type: 'success'
  244 + });
  245 + this.getAllMsgList();
  246 + });
  247 + },
  248 +
230 // 发布消息通知 249 // 发布消息通知
231 announceMsg() { 250 announceMsg() {
232 this.MsgFormVisible = true; 251 this.MsgFormVisible = true;
src/views/overView/msgForm.vue
@@ -44,7 +44,7 @@ @@ -44,7 +44,7 @@
44 </el-col> 44 </el-col>
45 <el-col :span="24"> 45 <el-col :span="24">
46 <el-form-item label="传达区域" prop="communicationAreas"> 46 <el-form-item label="传达区域" prop="communicationAreas">
47 - <el-checkbox-group v-model="dataForm.communicationAreas" :style="{}"> 47 + <el-checkbox-group v-model="dataForm.communicationAreas" @change="selectChange">
48 <el-checkbox 48 <el-checkbox
49 v-for="(item, index) in areaOptions" 49 v-for="(item, index) in areaOptions"
50 :key="index" 50 :key="index"
@@ -64,7 +64,7 @@ @@ -64,7 +64,7 @@
64 </el-col> 64 </el-col>
65 <el-col :span="24"> 65 <el-col :span="24">
66 <el-form-item label="传达外协" prop="communicationOuts"> 66 <el-form-item label="传达外协" prop="communicationOuts">
67 - <el-checkbox-group v-model="dataForm.communicationOuts" :style="{}"> 67 + <el-checkbox-group v-model="dataForm.communicationOuts" @change="selectChange">
68 <el-checkbox 68 <el-checkbox
69 v-for="(item, index) in communicationOutOptions" 69 v-for="(item, index) in communicationOutOptions"
70 :key="index" 70 :key="index"
@@ -88,13 +88,33 @@ @@ -88,13 +88,33 @@
88 > 88 >
89 <div class="msg-title">{{ dataForm.title }}</div> 89 <div class="msg-title">{{ dataForm.title }}</div>
90 <div class="content" v-html="dataForm.bodyContent"></div> 90 <div class="content" v-html="dataForm.bodyContent"></div>
91 - <div class="files"></div> 91 + <div class="files" v-if="isSHILevel">
  92 + <h4>查看情况</h4>
  93 + <div class="tag-group">
  94 + <span class="tag-group__title title-tag">传递区域:</span>
  95 + <el-tag
  96 + v-for="(v, i) in dataForm.communicationAreaList"
  97 + :key="i"
  98 + :type="`${v.IsRead ? 'success' : 'danger'}`"
  99 + :effect="`${v.IsRead ? 'dark' : 'plain'}`">
  100 + {{ v.FullName }}
  101 + </el-tag>
  102 + </div>
  103 + <div class="tag-group">
  104 + <span class="tag-group__title title-tag">传达外协:</span>
  105 + <el-tag
  106 + v-for="(v, i) in dataForm.communicationOutList"
  107 + :key="i"
  108 + :type="`${v.IsRead ? 'success' : 'danger'}`"
  109 + :effect="`${v.IsRead ? 'dark' : 'plain'}`">
  110 + {{ v.FullName }}
  111 + </el-tag>
  112 + </div>
  113 + </div>
92 </div> 114 </div>
93 <span slot="footer" class="dialog-footer"> 115 <span slot="footer" class="dialog-footer">
94 <el-button @click="visible = false">取 消</el-button> 116 <el-button @click="visible = false">取 消</el-button>
95 - <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail"  
96 - >确 定</el-button  
97 - > 117 + <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail" :loading="btnLoading">确 定</el-button>
98 </span> 118 </span>
99 </el-dialog> 119 </el-dialog>
100 </template> 120 </template>
@@ -104,6 +124,20 @@ export default { @@ -104,6 +124,20 @@ export default {
104 components: {}, 124 components: {},
105 props: [], 125 props: [],
106 data() { 126 data() {
  127 + var validatecommunicationAreas = (rule, value, callback) => {
  128 + if (!this.dataForm.communicationOuts.length && !value?.length) {
  129 + callback(new Error('请输入传达区域'));
  130 + } else {
  131 + callback();
  132 + }
  133 + };
  134 + var validatecommunicationOuts = (rule, value, callback) => {
  135 + if (!this.dataForm.communicationAreas.length && !value?.length) {
  136 + callback(new Error('请选择传达外协'));
  137 + } else {
  138 + callback();
  139 + }
  140 + }
107 return { 141 return {
108 loading: false, 142 loading: false,
109 visible: false, 143 visible: false,
@@ -123,12 +157,24 @@ export default { @@ -123,12 +157,24 @@ export default {
123 bodyContent: [ 157 bodyContent: [
124 { required: true, message: "请输入内容", trigger: "blur" }, 158 { required: true, message: "请输入内容", trigger: "blur" },
125 ], 159 ],
  160 + communicationAreas: [
  161 + { validator: validatecommunicationAreas, trigger: 'change' }
  162 + ],
  163 + communicationOuts: [
  164 + { validator: validatecommunicationOuts, trigger: 'change' }
  165 + ],
126 }, 166 },
127 areaOptions: [], 167 areaOptions: [],
128 communicationOutOptions: [], 168 communicationOutOptions: [],
  169 + btnLoading: false,
129 }; 170 };
130 }, 171 },
131 - computed: {}, 172 + computed: {
  173 + isSHILevel() {
  174 + // 判断角色是否为‘市级办公室’
  175 + return this.$store.state.user.islader;
  176 + },
  177 + },
132 watch: {}, 178 watch: {},
133 created() { 179 created() {
134 this.initAreaTypeList(); 180 this.initAreaTypeList();
@@ -145,7 +191,7 @@ export default { @@ -145,7 +191,7 @@ export default {
145 this.visible = true; 191 this.visible = true;
146 this.isDetail = isDetail || false; 192 this.isDetail = isDetail || false;
147 this.$nextTick(() => { 193 this.$nextTick(() => {
148 - !this.dataForm.id && this.$refs["elForm"].resetFields(); 194 + !this.isDetail && this.$refs["elForm"].resetFields();
149 if (this.dataForm.id) { 195 if (this.dataForm.id) {
150 this.loading = true; 196 this.loading = true;
151 request({ 197 request({
@@ -153,6 +199,16 @@ export default { @@ -153,6 +199,16 @@ export default {
153 method: "GET", 199 method: "GET",
154 }).then((res) => { 200 }).then((res) => {
155 this.dataForm = res.data; 201 this.dataForm = res.data;
  202 + let AreaList = [];
  203 + res.data.communicationAreaList && res.data.communicationAreaList.forEach(v => {
  204 + AreaList.push(v.Id);
  205 + });
  206 + this.dataForm.communicationAreas = AreaList;
  207 + let OutList = [];
  208 + res.data.communicationOutList && res.data.communicationOutList.forEach(v => {
  209 + OutList.push(v.Id);
  210 + });
  211 + this.dataForm.communicationOuts = OutList;
156 this.loading = false; 212 this.loading = false;
157 }); 213 });
158 } 214 }
@@ -183,6 +239,7 @@ export default { @@ -183,6 +239,7 @@ export default {
183 (option) => option.id 239 (option) => option.id
184 ); 240 );
185 } 241 }
  242 + this.$forceUpdate();
186 }, 243 },
187 // 反选 244 // 反选
188 closeAreaAll(type) { 245 closeAreaAll(type) {
@@ -199,27 +256,37 @@ export default { @@ -199,27 +256,37 @@ export default {
199 ) 256 )
200 .map((option) => option.id); 257 .map((option) => option.id);
201 } 258 }
  259 + this.$forceUpdate();
  260 + },
  261 + selectChange() {
  262 + this.$forceUpdate();
202 }, 263 },
203 dataFormSubmit() { 264 dataFormSubmit() {
204 this.$refs["elForm"].validate((valid) => { 265 this.$refs["elForm"].validate((valid) => {
205 if (valid) { 266 if (valid) {
206 - request({  
207 - url: `/SubDev/ZyOaArticle`,  
208 - method: "post",  
209 - data: this.dataForm,  
210 - }).then((res) => {  
211 - this.$message({  
212 - message: res.msg,  
213 - type: "success",  
214 - duration: 1000,  
215 - onClose: () => {  
216 - (this.visible = false), this.$emit("refresh", true);  
217 - },  
218 - });  
219 - }); 267 + !this.dataForm.id ? this.toPostForm('/SubDev/ZyOaArticle', 'post') : this.toPostForm(`/SubDev/ZyOaArticle/${this.dataForm.id}`, 'put');
220 } 268 }
221 }); 269 });
222 }, 270 },
  271 + toPostForm(url, method) {
  272 + this.btnLoading = true;
  273 + request({
  274 + url,
  275 + method,
  276 + data: this.dataForm,
  277 + }).then((res) => {
  278 + this.$message({
  279 + message: res.msg,
  280 + type: "success",
  281 + duration: 1000,
  282 + onClose: () => {
  283 + this.btnLoading = false;
  284 + this.visible = false;
  285 + this.$emit("refresh", true);
  286 + },
  287 + });
  288 + });
  289 + }
223 }, 290 },
224 }; 291 };
225 </script> 292 </script>
@@ -234,5 +301,18 @@ export default { @@ -234,5 +301,18 @@ export default {
234 margin-bottom: 8px; 301 margin-bottom: 8px;
235 color: #000; 302 color: #000;
236 } 303 }
  304 + .files {
  305 + border-top: #e8e8e8 1px solid;
  306 + padding-top: 10px;
  307 + margin-top: 10px;
  308 + .title-tag {
  309 + line-height: 40px;
  310 + font-size: 12px;
  311 + margin-right: 10px;
  312 + }
  313 + :deep(.el-tag) {
  314 + margin: 0 5px;
  315 + }
  316 + }
237 } 317 }
238 </style> 318 </style>