Commit ff36c85d27e37589b090d748dec6edbf61aac3b8

Authored by monkeyhouyi
1 parent fbae19a1

1

src/store/modules/meta.js
... ... @@ -70,8 +70,16 @@ const meta = {
70 70 break;
71 71 case 'stateType':
72 72 getState().then(res => {
73   - console.log(res.data, 'list');
74   -
  73 + let tagType = [
  74 + { name: '1', type: 'danger' }, // 未上报
  75 + { name: '2', type: 'danger' }, // 未下发
  76 + { name: '3', type: 'warning' }, // 待处理
  77 + { name: '4', type: 'success' }, // 已处理
  78 + { name: '5', type: 'info' }, // 仅保存
  79 + ];
  80 + res.data.forEach(v => {
  81 + v.tagType = tagType.find(item => v.EnCode == item.name).type || '';
  82 + });
75 83 commit('SET_STATETYPE_LIST', res.data)
76 84 resolve(res.data)
77 85 }).catch(error => { reject(error) })
... ...
src/utils/ncc.js
... ... @@ -248,6 +248,10 @@ const ncc = {
248 248 return ''
249 249 }
250 250 },
  251 + getStateTagType(val, list) {
  252 + if(!list.length || !val) return '';
  253 + return list.find(v => v.Id == val).tagType || '';
  254 + },
251 255 storageSet(obj) {
252 256 for (let i in obj) {
253 257 cacheItem(i, obj[i])
... ... @@ -352,6 +356,6 @@ const ncc = {
352 356 const hasPermission = btnList.some(btn => btn.enCode === enCode)
353 357 if (hasPermission) return true
354 358 return false
355   - }
  359 + },
356 360 }
357 361 export default ncc
358 362 \ No newline at end of file
... ...
src/views/DisposalSuggestions/Form.vue
1 1 <template>
2 2 <el-dialog
3   - title="判研建议"
  3 + title="研判建议"
4 4 :close-on-click-modal="false"
5 5 :visible.sync="visible"
6 6 class="NCC-dialog NCC-dialog_center"
... ... @@ -20,13 +20,13 @@
20 20 </el-col>
21 21 <el-col :span="24">
22 22 <div class="form-item">
23   - <div class="label w-100">平台名称</div>
  23 + <div class="label w-100">系统名称</div>
24 24 {{ dataForm.platformName || "--" }}
25 25 </div>
26 26 </el-col>
27 27 <el-col :span="24">
28 28 <div class="form-item">
29   - <div class="label w-100">平台类型</div>
  29 + <div class="label w-100">系统类型</div>
30 30 {{ dataForm.platformType || "--" }}
31 31 </div>
32 32 </el-col>
... ... @@ -77,7 +77,7 @@
77 77 </el-col>
78 78 <el-col :span="14">
79 79 <el-row>
80   - <el-col :span="24" class="form_title"> 判研建议 </el-col>
  80 + <el-col :span="24" class="form_title"> 研判建议 </el-col>
81 81 <el-form
82 82 ref="suggestionForm"
83 83 :rules="rules"
... ... @@ -265,7 +265,7 @@ export default {
265 265 !this.suggestionForm.reviewType
266 266 ) {
267 267 this.$message({
268   - message: "判研建议不能为空!",
  268 + message: "研判建议不能为空!",
269 269 type: "danger",
270 270 });
271 271 }
... ...
src/views/DisposalSuggestions/index.vue
... ... @@ -37,8 +37,8 @@
37 37 </el-row>
38 38 <div class="NCC-common-layout-main NCC-flex-main">
39 39 <NCC-table v-loading="listLoading" :data="list">
40   - <el-table-column show-overflow-tooltip prop="platformName" label="平台名称" align="left" />
41   - <el-table-column show-overflow-tooltip label="平台类型" prop="platformType" align="left">
  40 + <el-table-column show-overflow-tooltip prop="platformName" label="系统名称" align="left" />
  41 + <el-table-column show-overflow-tooltip label="系统类型" prop="platformType" align="left">
42 42 <template slot-scope="scope">{{ scope.row.platformType | dynamicTextUP(systemTypeOptions) }}</template>
43 43 </el-table-column>
44 44 <el-table-column show-overflow-tooltip label="问题类型" prop="questionType" align="left">
... ... @@ -57,7 +57,7 @@
57 57 </el-table-column> -->
58 58 <el-table-column label="操作" fixed="right" width="100">
59 59 <template slot-scope="scope">
60   - <el-button type="text" @click="addOrUpdateHandle(scope.row.id)" >判研</el-button>
  60 + <el-button type="text" @click="addOrUpdateHandle(scope.row.id)" >研判</el-button>
61 61 </template>
62 62 </el-table-column>
63 63 </NCC-table>
... ...
src/views/Login.vue
... ... @@ -56,8 +56,8 @@ export default {
56 56 data() {
57 57 return {
58 58 form: {
59   - account: "", // cdoffice
60   - password: "", // 123456
  59 + account: "wd", // cdoffice
  60 + password: "123456", // 123456
61 61 },
62 62 rules: {
63 63 account: { required: true, message: "用户名不能为空", trigger: "blur" },
... ...
src/views/baseCaseHandling/Form.vue
... ... @@ -45,7 +45,7 @@
45 45 </el-form-item>
46 46 </el-col>
47 47 <el-col :span="24">
48   - <el-form-item label="注册主体" prop="registeredEntity">
  48 + <el-form-item label="主体企业" prop="registeredEntity">
49 49 <el-input v-model="dataForm.registeredEntity" placeholder="选择系统自动带出" clearable disabled/>
50 50 </el-form-item>
51 51 </el-col>
... ...
src/views/baseCaseHandling/index.vue
... ... @@ -8,14 +8,10 @@
8 8 <el-form @submit.native.prevent size="mini">
9 9 <el-col :span="4">
10 10 <el-form-item label="">
11   - <el-input
12   - v-model="query.number"
13   - placeholder="档案号"
14   - clearable
15   - />
  11 + <el-input v-model="query.number" placeholder="请输入档案号" clearable/>
16 12 </el-form-item>
17 13 </el-col>
18   - <el-col :span="4">
  14 + <!-- <el-col :span="4">
19 15 <el-form-item label="">
20 16 <el-date-picker
21 17 v-model="query.registrationTime"
... ... @@ -27,23 +23,15 @@
27 23 >
28 24 </el-date-picker>
29 25 </el-form-item>
30   - </el-col>
  26 + </el-col> -->
31 27 <el-col :span="4">
32 28 <el-form-item label="">
33   - <el-input
34   - v-model="query.systemName"
35   - placeholder="网站/APP名称"
36   - clearable
37   - />
  29 + <el-input v-model="query.systemName" placeholder="请输入系统名称" clearable/>
38 30 </el-form-item>
39 31 </el-col>
40 32 <el-col :span="4">
41 33 <el-form-item label="">
42   - <el-select
43   - v-model="query.category"
44   - placeholder="类别"
45   - clearable
46   - >
  34 + <el-select v-model="query.category" placeholder="系统类别" clearable>
47 35 <el-option
48 36 v-for="(item, index) in systemTypeOptions"
49 37 :key="index"
... ... @@ -55,28 +43,15 @@
55 43 </el-col>
56 44 <el-col :span="3">
57 45 <el-form-item>
58   - <el-button
59   - type="primary"
60   - icon="el-icon-search"
61   - @click="search()"
62   - >查询</el-button
63   - >
  46 + <el-button type="primary" icon="el-icon-search" @click="search()" >查询</el-button>
64 47 </el-form-item>
  48 + <div class="NCC-common-search-box-right">
  49 + <el-button type="success" icon="el-icon-plus" size="mini" @click="addOrUpdateHandle()">新增</el-button>
  50 + </div>
65 51 </el-col>
66 52 </el-form>
67 53 </el-row>
68 54 <div class="NCC-common-layout-main NCC-flex-main">
69   - <div class="NCC-common-head">
70   - <div>
71   - <el-button
72   - type="primary"
73   - icon="el-icon-plus"
74   - size="mini"
75   - @click="addOrUpdateHandle()"
76   - >新增</el-button
77   - >
78   - </div>
79   - </div>
80 55 <NCC-table
81 56 v-loading="listLoading"
82 57 :data="list"
... ... @@ -85,8 +60,8 @@
85 60 <!-- <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip/> -->
86 61 <el-table-column prop="number" label="档案号" align="left" show-overflow-tooltip/>
87 62 <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/>
  63 + <el-table-column prop="systemName" label="系统名称" align="left" width="150" show-overflow-tooltip/>
  64 + <el-table-column prop="registeredEntity" label="主体企业" align="left" show-overflow-tooltip/>
90 65 <el-table-column label="类别" prop="category" align="left">
91 66 <template slot-scope="scope">{{ scope.row.category | dynamicTextUP(systemTypeOptions) }}</template>
92 67 </el-table-column>
... ... @@ -98,7 +73,9 @@
98 73 <el-table-column prop="punishmentRequirements" label="处罚要求" align="left" show-overflow-tooltip/>
99 74 <el-table-column prop="punishmentContent" label="处罚内容" align="left" show-overflow-tooltip/>
100 75 <el-table-column label="状态" prop="state" align="left" >
101   - <template slot-scope="scope">{{ scope.row.state | dynamicTextUP(stateOptions) }}</template>
  76 + <template slot-scope="scope">
  77 + <el-tag :type="ncc.getStateTagType(scope.row.state, stateOptions)">{{ scope.row.state | dynamicTextUP(stateOptions) }}</el-tag>
  78 + </template>
102 79 </el-table-column>
103 80 <el-table-column label="操作" fixed="right" width="180">
104 81 <template slot-scope="scope">
... ... @@ -172,10 +149,7 @@ export default {
172 149 { fullName: "选项一", id: "选项一" },
173 150 { fullName: "", id: "选项二" },
174 151 ],
175   - stateOptions: [
176   - { fullName: "选项一", id: "1" },
177   - { fullName: "选项二", id: "2" },
178   - ],
  152 + stateOptions: [],
179 153 areaOptions: [],
180 154 };
181 155 },
... ...
src/views/baseInspectionReport/Form.vue
... ... @@ -3,9 +3,9 @@
3 3 :title="!dataForm.id ? '新建' : isDetail ? '详情' : '编辑'"
4 4 :close-on-click-modal="false"
5 5 :visible.sync="visible"
6   - class="NCC-dialog NCC-dialog_center"
  6 + class="NCC-dialog NCC-dialog_center baseInspectionReportForm"
7 7 lock-scroll
8   - width="60%"
  8 + width="50%"
9 9 >
10 10 <el-row :gutter="15" class="NCC-dialog-content">
11 11 <el-form
... ... @@ -19,161 +19,93 @@
19 19 >
20 20 <el-col :span="23" v-if="false">
21 21 <el-form-item label="主键" prop="id">
22   - <el-input
23   - v-model="dataForm.id"
24   - placeholder="请输入"
25   - clearable
26   - :style="{ width: '100%' }"
27   - >
28   - </el-input>
  22 + <el-input v-model="dataForm.id" placeholder="请输入" clearable :style="{ width: '100%' }"></el-input>
29 23 </el-form-item>
30 24 </el-col>
31 25 <el-col :span="23">
32 26 <el-form-item label="问题来源" prop="source">
33 27 <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   - >
  28 + <el-radio v-for="(item, index) in sourceOptions" :key="index" :label="item.Id">{{ item.FullName }}</el-radio>
40 29 </el-radio-group>
41 30 </el-form-item>
42 31 </el-col>
43 32 <el-col :span="23">
44   - <el-form-item label="平台名称" prop="platformName">
  33 + <el-form-item label="系统名称" prop="platformName">
45 34 <el-select
  35 + ref="select"
46 36 v-model="dataForm.platformName"
47 37 filterable
48 38 remote
49 39 reserve-keyword
50   - placeholder="请输入平台名称"
51   - :remote-method="loadList"
52   - :loading="name_loading">
53   - <el-option
54   - v-for="item in nameOptions"
55   - :key="item.value"
56   - :label="item.label"
57   - :value="item.value">
58   - </el-option>
  40 + placeholder="请输入系统名称"
  41 + @blur.native.capture="selectBlur"
  42 + @visible-change="visibleNameChange"
  43 + @change="(val) => platformNameChange(val, 'change')"
  44 + :loading="name_loading"
  45 + :disabled="!!this.dataForm.id">
  46 + <el-option v-for="item in nameOptions" :key="item.id" :label="item.systemName" :value="item.id"></el-option>
59 47 </el-select>
60 48 </el-form-item>
61 49 </el-col>
62 50 <el-col :span="23">
63   - <el-form-item label="平台类型" prop="platformType">
64   - <el-radio-group v-model="dataForm.platformType" :style="{}">
65   - <el-radio
66   - v-for="(item, index) in platformTypeOptions"
67   - :key="index"
68   - :label="item.Id"
69   - >{{ item.FullName }}</el-radio
70   - >
  51 + <el-form-item label="系统类型" prop="platformType">
  52 + <el-radio-group v-model="dataForm.platformType" :disabled='isDisabledTypeByName || !!this.dataForm.id'>
  53 + <el-radio v-for="(item, index) in platformTypeOptions" :key="index" :label="item.Id">{{ item.FullName }}</el-radio>
71 54 </el-radio-group>
72 55 </el-form-item>
73 56 </el-col>
74   - <el-col :span="18">
  57 + <el-col :span="23" v-show="dataForm.platformType == '580634746028033285' && !isDisabledTypeByName">
  58 + <el-form-item label="归属平台" prop="selfMediaPlatformType">
  59 + <el-input v-model="dataForm.selfMediaPlatformType" placeholder="请输入归属平台" clearable :style="{ width: '100%' }" :disabled="!!this.dataForm.id"/>
  60 + </el-form-item>
  61 + </el-col>
  62 + <el-col :span="23">
75 63 <el-form-item label="问题类型" prop="questionType">
76   - <el-radio-group v-model="dataForm.questionType" @change="questionTypeChange">
77   - <el-radio
78   - v-for="(item, index) in questionTypeOptions"
79   - :key="index"
80   - :label="item.fullName"
81   - >{{ item.fullName }}</el-radio
82   - >
83   - <el-radio label="其他">其他</el-radio>
  64 + <el-radio-group v-model="dataForm.questionType">
  65 + <el-radio v-for="(item, index) in questionTypeOptions" :key="index" :label="item.fullName" >{{ item.fullName }}</el-radio>
84 66 </el-radio-group>
85 67 </el-form-item>
86 68 </el-col>
87   - <template v-if="otherQuestion">
88   - <el-col :span="5">
89   - <el-input
90   - v-model="dataForm.otherQuestionType"
91   - placeholder="请输入问题类型"
92   - clearable
93   - :style="{ width: '100%' }"
94   - >
95   - </el-input>
96   - </el-col>
97   - </template>
98   - <template v-if="showErrflag">
99   - <el-col :span="12">
100   - <el-form-item label="正确描述" prop="accurateDescription">
101   - <el-input
102   - v-model="dataForm.accurateDescription"
103   - placeholder="请输入正确描述"
104   - clearable
105   - :style="{ width: '100%' }"
106   - >
107   - </el-input>
108   - </el-form-item>
109   - </el-col>
110   - <el-col :span="11">
111   - <el-form-item label="错误描述" prop="incorrectDescription">
112   - <el-input
113   - v-model="dataForm.incorrectDescription"
114   - placeholder="请输入错误描述"
115   - clearable
116   - :style="{ width: '100%' }"
117   - >
118   - </el-input>
119   - </el-form-item>
120   - </el-col>
121   - </template>
122   -
  69 + <el-col :span="23" v-show="dataForm.questionType == '其他'">
  70 + <el-form-item label="其他问题类型" prop="otherQuestionType">
  71 + <el-input v-model="dataForm.otherQuestionType" placeholder="请输入其他问题类型" clearable :style="{ width: '100%' }" />
  72 + </el-form-item>
  73 + </el-col>
  74 + <el-col :span="23" v-show="dataForm.questionType == '错误表述'">
  75 + <el-form-item label="正确描述" prop="accurateDescription">
  76 + <el-input v-model="dataForm.accurateDescription" placeholder="请输入正确描述" clearable :style="{ width: '100%' }"></el-input>
  77 + </el-form-item>
  78 + </el-col>
  79 + <el-col :span="23" v-show="dataForm.questionType == '错误表述'">
  80 + <el-form-item label="错误描述" prop="incorrectDescription">
  81 + <el-input v-model="dataForm.incorrectDescription" placeholder="请输入错误描述" clearable :style="{ width: '100%' }"></el-input>
  82 + </el-form-item>
  83 + </el-col>
123 84 <el-col :span="23">
124 85 <el-form-item label="问题内容" prop="questionContent">
125   - <el-input
126   - v-model="dataForm.questionContent"
127   - placeholder="请输入"
128   - show-word-limit
129   - :style="{ width: '100%' }"
130   - type="textarea"
131   - :autosize="{ minRows: 4, maxRows: 4 }"
132   - >
133   - </el-input>
  86 + <el-input v-model="dataForm.questionContent" placeholder="请输入" show-word-limit :style="{ width: '100%' }" type="textarea" :autosize="{ minRows: 4, maxRows: 4 }" />
134 87 </el-form-item>
135 88 </el-col>
136 89 <el-col :span="23">
137   - <el-form-item label="有害链接" prop="link">
138   - <el-input
139   - v-model="dataForm.link"
140   - placeholder="请输入"
141   - clearable
142   - :style="{ width: '100%' }"
143   - >
144   - </el-input>
  90 + <el-form-item label="链接" prop="link">
  91 + <el-input v-model="dataForm.link" placeholder="请输入链接" clearable :style="{ width: '100%' }"></el-input>
145 92 </el-form-item>
146 93 </el-col>
147 94 <el-col :span="23">
148 95 <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>
  96 + <el-input v-model="dataForm.questionClass" placeholder="请输入关键词" clearable :style="{ width: '100%' }"></el-input>
156 97 </el-form-item>
157 98 </el-col>
158 99 <el-col :span="23">
159 100 <el-form-item label="附件" prop="obtainEvidence">
160   - <NCC-UploadFz
161   - v-model="dataForm.obtainEvidence"
162   - :fileSize="5"
163   - sizeUnit="MB"
164   - :limit="9"
165   - buttonText="点击上传"
166   - >
167   - </NCC-UploadFz>
  101 + <NCC-UploadFz v-model="dataForm.obtainEvidence" :fileSize="5" sizeUnit="MB" :limit="9" buttonText="点击上传" />
168 102 </el-form-item>
169 103 </el-col>
170 104 </el-form>
171 105 </el-row>
172 106 <span slot="footer" class="dialog-footer">
173 107 <el-button @click="visible = false">取 消</el-button>
174   - <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail"
175   - >确 定</el-button
176   - >
  108 + <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail">确 定</el-button>
177 109 </span>
178 110 </el-dialog>
179 111 </template>
... ... @@ -194,7 +126,8 @@ export default {
194 126 dataForm: {
195 127 id: undefined,
196 128 source: undefined,
197   - platformName: undefined,
  129 + platformName: '',
  130 + selfMediaPlatformType: '',
198 131 platformType: undefined,
199 132 questionType: undefined,
200 133 questionClass: undefined,
... ... @@ -207,33 +140,32 @@ export default {
207 140 otherQuestionType: undefined
208 141 },
209 142 rules: {
  143 + platformName: [
  144 + { required: true, message: "请选择系统名称", trigger: "blur" },
  145 + ],
210 146 platformType: [
211   - { required: true, message: "请选择平台类型", trigger: "change" },
  147 + { required: true, message: "请选择系统类型", trigger: "blur" },
212 148 ],
213 149 questionType: [
214   - { required: true, message: "请选择问题类型", trigger: "change" },
  150 + { required: true, message: "请选择问题类型", trigger: "blur" },
215 151 ],
  152 + // otherQuestionType: [
  153 + // { required: true, message: "请输入其他问题类型", trigger: "blur" },
  154 + // ],
216 155 },
217   - sourceOptions: [
218   - { fullName: "市网信办线索", id: "市网信办线索" },
219   - { fullName: "自主巡查发现", id: "自主巡查发现" },
220   - ],
  156 + sourceOptions: [],
221 157 platformTypeOptions: [],
222 158 questionTypeOptions: [],
223   - questionClassOptions: [
224   - { fullName: "选项一", id: "1" },
225   - { fullName: "选项二", id: "2" },
226   - ],
227   - stageOptions: [
228   - { fullName: "选项一", id: "1" },
229   - { fullName: "选项二", id: "2" },
230   - ],
231   - showErrflag: false,
232   - otherQuestion: false,
233 159 nameOptions: [],
234 160 };
235 161 },
236   - computed: {},
  162 + computed: {
  163 + isDisabledTypeByName() {
  164 + if(!this.nameOptions.length) return false;
  165 + let index = this.nameOptions.findIndex(v => v.id == this.dataForm.platformName);
  166 + return index != -1;
  167 + }
  168 + },
237 169 watch: {},
238 170 created() {
239 171 this.loadList();
... ... @@ -243,29 +175,36 @@ export default {
243 175 },
244 176 mounted() {},
245 177 methods: {
246   - loadList(query) {
  178 + selectBlur(e) {
  179 + let value = e.target.value;
  180 + if(!value) return;
  181 + this.dataForm.platformName = e.target.value;
  182 + this.platformNameChange(value, 'blur');
  183 + },
  184 + platformNameChange(val, type) {
  185 + let obj = this.nameOptions.find(v => type == 'blur' ? val == v.fullName : val == v.id);
  186 + this.dataForm.platformName = obj ? obj.id : val;
  187 + this.dataForm.platformType = obj ? obj.systemType : '';
  188 + this.dataForm.selfMediaPlatformType = obj ? obj.platform : '';
  189 + },
  190 + visibleNameChange(val) {
  191 + if (val) return
  192 + let input = this.$refs.select.$children[0].$refs.input;
  193 + input.blur();
  194 + },
  195 + loadList() {
247 196 this.name_loading = true;
248   - getInfoList({pageIndex: 1, pageSize: 100, keyword: query }).then(({ data }) => {
249   - let list = [];
250   - data.list.length &&
251   - data.list.forEach((item) => {
252   - list.push({
253   - label: item.SysytemInfo.SystemName,
254   - value: item.SysytemInfo.Id,
255   - });
256   - });
257   - this.nameOptions = list;
  197 + request({
  198 + url: `/Extend/basesysteminfo/GetNoPagingList`,
  199 + method: "GET",
  200 + }).then(({data}) => {
  201 + this.nameOptions = data;
258 202 this.name_loading = false;
259   - });
260   - },
261   - questionTypeChange(v) {
262   - this.showErrflag = Boolean(v == '错误表述');
263   - this.otherQuestion = Boolean(v == '其他');
  203 + })
264 204 },
265 205 async getplatformTypeOptions() {
266 206 let list = this.$store.state.meta.system;
267   - !list &&
268   - (list = await this.$store.dispatch("getTypeListByCode", "system"));
  207 + !list && (list = await this.$store.dispatch("getTypeListByCode", "system"));
269 208 this.platformTypeOptions = list;
270 209 },
271 210 async getSourceOptions() {
... ... @@ -278,17 +217,15 @@ export default {
278 217 },
279 218 getquestionTypeOptions() {
280 219 getDictionaryDataSelector("577006814432855301").then((res) => {
281   - this.questionTypeOptions = res.data.list;
  220 + this.questionTypeOptions = [...res.data.list, {Id: '0', fullName: '其他'}];
282 221 });
283 222 },
284 223 goBack() {
285 224 this.$emit("refresh");
286 225 },
287 226 init(id, isDetail) {
288   - this.dataForm.id = id || 0;
  227 + this.dataForm.id = id || '';
289 228 this.visible = true;
290   - this.otherQuestion = false;
291   - this.showErrflag = false;
292 229 this.isDetail = isDetail || false;
293 230 this.$nextTick(async () => {
294 231 this.$refs["elForm"].resetFields();
... ... @@ -299,28 +236,20 @@ export default {
299 236 this.dataForm.otherQuestionType = res.data.questionType;
300 237 this.dataForm.questionType = '其他';
301 238 }
  239 + this.dataForm.selfMediaPlatformType = res.data.selfMediaPlatformType || '--';
302 240 if (!this.dataForm.obtainEvidence) this.dataForm.obtainEvidence = [];
303 241 if (!this.dataForm.annex) this.dataForm.annex = [];
304   - this.$nextTick(() => {
305   - this.questionTypeChange(this.dataForm.questionType);
306   - })
307 242 }
308 243 });
309 244 },
310   - getQuestionTypeName() {
311   - if(this.dataForm.questionType == '其他') {
312   - return this.dataForm.otherQuestionType;
313   - } else {
314   - return this.dataForm.questionType;
315   - }
316   - },
317 245 dataFormSubmit() {
318 246 this.$refs["elForm"].validate(async (valid) => {
319 247 if (valid) {
320   - this.dataForm.questionType = this.getQuestionTypeName();
321   - let res = !this.dataForm.id
322   - ? await addForm(this.dataForm)
323   - : await updataForm(this.dataForm);
  248 + let obj = {
  249 + ...this.dataForm,
  250 + questionType: this.dataForm.questionType == '其他' ? this.dataForm.otherQuestionType : this.dataForm.questionType,
  251 + }
  252 + let res = !this.dataForm.id ? await addForm(obj) : await updataForm(obj);
324 253 this.$message({
325 254 message: res.msg,
326 255 type: "success",
... ... @@ -335,3 +264,10 @@ export default {
335 264 },
336 265 };
337 266 </script>
  267 +<style lang="scss" scoped>
  268 +.baseInspectionReportForm {
  269 + :deep(.el-radio) {
  270 + margin: 0 30px 8px 0;
  271 + }
  272 +}
  273 +</style>
... ...
src/views/baseInspectionReport/index.vue
... ... @@ -28,23 +28,22 @@
28 28 <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>
29 29 </el-form-item>
30 30 </el-col>
  31 + <div class="NCC-common-search-box-right">
  32 + <el-button type="success" icon="el-icon-plus" @click="addOrUpdateHandle()" size="mini" >新增</el-button>
  33 + <!-- <el-button type="primary" icon="el-icon-download" size="mini" @click="exportData()">导出</el-button> -->
  34 + </div>
31 35 </el-form>
32 36 </el-row>
33 37 <div class="NCC-common-layout-main NCC-flex-main">
34   - <div class="NCC-common-head">
35   - <div>
36   - <el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()" size="mini">新增</el-button>
37   - </div>
38   - </div>
39 38 <NCC-table v-loading="listLoading" :data="list">
40   - <el-table-column show-overflow-tooltip prop="platformName" label="平台名称" align="left" />
41   - <el-table-column show-overflow-tooltip label="平台类型" prop="platformType" align="left">
  39 + <el-table-column show-overflow-tooltip prop="platformName" label="系统名称" align="left" />
  40 + <el-table-column show-overflow-tooltip label="系统类型" prop="platformType" align="left">
42 41 <template slot-scope="scope">{{ scope.row.platformType | dynamicTextUP(systemTypeOptions) }}</template>
43 42 </el-table-column>
44 43 <el-table-column show-overflow-tooltip label="问题类型" prop="questionType" align="left">
45 44 <template slot-scope="scope">{{ scope.row.questionType | dynamicText(questionTypeOptions) }}</template>
46 45 </el-table-column>
47   - <el-table-column show-overflow-tooltip prop="link" label="有害链接" align="left" />
  46 + <!-- <el-table-column show-overflow-tooltip prop="link" label="有害链接" align="left" /> -->
48 47 <el-table-column show-overflow-tooltip prop="questionClass" label="关键词" align="left" />
49 48 <!-- <el-table-column show-overflow-tooltip prop="department" label="部门" align="left" /> -->
50 49 <!-- <el-table-column show-overflow-tooltip label="问题分类" prop="questionClass" align="left">
... ...
src/views/baseListHazardousSamples/index.vue
... ... @@ -6,7 +6,7 @@
6 6 <div class="NCC-common-layout-center">
7 7 <el-row class="NCC-common-search-box" :gutter="16">
8 8 <el-form @submit.native.prevent size="mini">
9   - <el-col :span="4">
  9 + <!-- <el-col :span="4">
10 10 <el-form-item label="">
11 11 <el-date-picker
12 12 v-model="query.inputTime"
... ... @@ -18,15 +18,15 @@
18 18 >
19 19 </el-date-picker>
20 20 </el-form-item>
21   - </el-col>
22   - <el-col :span="4">
  21 + </el-col> -->
  22 + <el-col :span="6">
23 23 <el-form-item label="">
24   - <el-input v-model="query.content" placeholder="具体内容" />
  24 + <el-input v-model="query.content" placeholder="请输入具体内容" />
25 25 </el-form-item>
26 26 </el-col>
27 27 <el-col :span="4">
28 28 <el-form-item label="">
29   - <el-select v-model="query.level" placeholder="级别" clearable>
  29 + <el-select v-model="query.harmfulInformationTypes" placeholder="请选择有害类型" clearable>
30 30 <el-option
31 31 v-for="(item, index) in levelOptions"
32 32 :key="index"
... ... @@ -40,7 +40,7 @@
40 40 <el-form-item label="">
41 41 <el-select
42 42 v-model="query.company"
43   - placeholder="涉及的企业"
  43 + placeholder="请选择主体企业"
44 44 clearable
45 45 >
46 46 <el-option
... ... @@ -56,7 +56,7 @@
56 56 <el-form-item label="">
57 57 <el-select
58 58 v-model="query.websitePlatform"
59   - placeholder="网站平台"
  59 + placeholder="请选择系统"
60 60 clearable
61 61 >
62 62 <el-option
... ... @@ -70,30 +70,29 @@
70 70 </el-col>
71 71 <el-col :span="3">
72 72 <el-form-item>
73   - <el-button
74   - type="primary"
75   - icon="el-icon-search"
76   - @click="search()"
77   - >查询</el-button
78   - >
  73 + <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>
79 74 </el-form-item>
  75 + <div class="NCC-common-search-box-right">
  76 + <el-button type="primary" icon="el-icon-download" size="mini" @click="toExport" :loading="exportBtnLoading">导出</el-button>
  77 + </div>
80 78 </el-col>
81 79 </el-form>
82 80 </el-row>
83 81 <div class="NCC-common-layout-main NCC-flex-main">
84 82 <NCC-table v-loading="listLoading" :data="list">
85   - <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip/>
  83 + <!-- <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip/> -->
86 84 <el-table-column prop="inputTime" label="录入时间" align="left" :formatter="ncc.tableDateFormat" show-overflow-tooltip/>
87   - <el-table-column prop="content" label="具体内容" align="left" show-overflow-tooltip/>
88   - <el-table-column label="有害信息类型" prop="harmfulInformationTypes" align="left" show-overflow-tooltip />
89   - <el-table-column label="涉及的企业" prop="companyStr" align="left" show-overflow-tooltip/>
90   - <el-table-column label="网站平台" prop="websitePlatform" align="left" show-overflow-tooltip>
91   - <template slot-scope="scope">{{ scope.row.websitePlatform | dynamicText(websitePlatformOptions) }}</template>
92   - </el-table-column>
93   - <el-table-column prop="creatorUserId" label="创建用户" show-overflow-tooltip align="left"/>
94   - <el-table-column prop="creatorTime" label="创建时间" align="left" show-overflow-tooltip :formatter="ncc.tableDateFormat"/>
95   - <el-table-column prop="lastModifyUserId" label="修改用户" align="left" show-overflow-tooltip/>
96   - <el-table-column prop="lastModifyTime" label="修改时间" :formatter="ncc.tableDateFormat" show-overflow-tooltip align="left"/>
  85 + <el-table-column label="运营主体" prop="websitePlatformStr" align="left" show-overflow-tooltip />
  86 + <el-table-column label="网站平台" prop="websitePlatformStr" align="left" show-overflow-tooltip />
  87 + <el-table-column label="来源" prop="harmfulInformationTypes" align="left" show-overflow-tooltip />
  88 + <el-table-column label="问题类型" prop="websitePlatformStr" align="left" show-overflow-tooltip />
  89 + <el-table-column label="问题内容" prop="websitePlatformStr" align="left" show-overflow-tooltip />
  90 + <el-table-column label="违法原因" prop="websitePlatformStr" align="left" show-overflow-tooltip />
  91 + <el-table-column label="处罚内容" prop="content" align="left" show-overflow-tooltip/>
  92 + <!-- <el-table-column prop="creatorUserId" label="创建用户" show-overflow-tooltip align="left"/> -->
  93 + <!-- <el-table-column prop="creatorTime" label="创建时间" align="left" show-overflow-tooltip :formatter="ncc.tableDateFormat"/> -->
  94 + <!-- <el-table-column prop="lastModifyUserId" label="修改用户" align="left" show-overflow-tooltip/> -->
  95 + <!-- <el-table-column prop="lastModifyTime" label="修改时间" :formatter="ncc.tableDateFormat" show-overflow-tooltip align="left"/> -->
97 96 <!-- <el-table-column label="操作" fixed="right" width="100">
98 97 <template slot-scope="scope">
99 98 <el-button type="text" @click="addOrUpdateHandle(scope.row, ture)">详情</el-button>
... ... @@ -132,7 +131,7 @@ export default {
132 131 query: {
133 132 inputTime: undefined,
134 133 content: undefined,
135   - level: undefined,
  134 + harmfulInformationTypes: undefined, // 有害类型
136 135 company: undefined,
137 136 websitePlatform: undefined,
138 137 },
... ... @@ -164,11 +163,14 @@ export default {
164 163 ],
165 164 harmfulInformationTypesOptions: [],
166 165 levelOptions: [
167   - { fullName: "选项一", id: "1" },
168   - { fullName: "选项二", id: "2" },
  166 + { fullName: "巡查上报", id: "巡查上报" },
  167 + { fullName: "案件处理", id: "案件处理" },
169 168 ],
170 169 companyOptions: [],
171 170 websitePlatformOptions: [],
  171 +
  172 + // 导出
  173 + exportBtnLoading: false,
172 174 };
173 175 },
174 176 computed: {},
... ... @@ -176,7 +178,7 @@ export default {
176 178 this.initData();
177 179 this.getharmfulInformationTypesOptions();
178 180 this.getcompanyOptions();
179   - this.getwebsitePlatformOptions();
  181 + // this.getwebsitePlatformOptions();
180 182 },
181 183 methods: {
182 184 getharmfulInformationTypesOptions() {
... ... @@ -218,6 +220,33 @@ export default {
218 220 this.listLoading = false;
219 221 });
220 222 },
  223 + // 导出
  224 + toExport() {
  225 + let _query = {
  226 + ...this.query,
  227 + };
  228 + let query = {};
  229 + for (let key in _query) {
  230 + if (Array.isArray(_query[key])) {
  231 + query[key] = _query[key].join();
  232 + } else {
  233 + query[key] = _query[key];
  234 + }
  235 + }
  236 + this.exportBtnLoading = true;
  237 + request({
  238 + url: `/extend/BaseListHazardousSamples/Actions/Export`,
  239 + method: "POST",
  240 + data: query,
  241 + }).then((res) => {
  242 + const url = process.env.VUE_APP_BASE_API + res.data.url;
  243 + const link = document.createElement("a");
  244 + link.href = url;
  245 + link.download = res.data.name;
  246 + link.click();
  247 + this.exportBtnLoading = false;
  248 + }).catch(() => this.exportBtnLoading = false);
  249 + },
221 250 handleDel(id) {
222 251 this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
223 252 type: "warning",
... ...
src/views/basePrincipalResponsibility/Form.vue
1 1 <template>
2   - <el-dialog :title="!dataForm.id ? '新建' : isDetail ? '详情':'编辑'" :close-on-click-modal="false" :visible.sync="visible" class="NCC-dialog NCC-dialog_center" lock-scroll width="50%">
  2 + <el-dialog :title="!dataForm.id ? '新建' : isDetail ? '详情':'编辑'" :close-on-click-modal="false" :visible.sync="visible" class="NCC-dialog NCC-dialog_center basePrincipalResponsibilityForm" lock-scroll width="40%" v-loading="dialogLoading">
3 3 <el-row :gutter="15" class="NCC-dialog-content" >
4   - <el-form ref="elForm" :model="dataForm" size="small" label-width="100px" label-position="right" :disabled="!!isDetail" :rules="rules">
  4 + <el-form ref="elForm" :model="dataForm" size="small" label-width="110px" label-position="right" :disabled="!!isDetail" :rules="rules">
5 5 <el-col :span="24" v-if="false" >
6 6 <el-form-item label="主键" prop="id">
7 7 <el-input v-model="dataForm.id" placeholder="请输入" clearable :style='{"width":"100%"}' >
... ... @@ -10,17 +10,21 @@
10 10 </el-col>
11 11 <el-col :span="24" v-if="ncc.hasFormP('fileName')">
12 12 <el-form-item label="文件名" prop="fileName">
13   - <el-input v-model="dataForm.fileName" placeholder="请输入" clearable :style='{"width":"100%"}' >
14   - </el-input>
  13 + <el-input v-model="dataForm.fileName" placeholder="请输入文件名" clearable :style='{"width":"100%"}' />
15 14 </el-form-item>
16 15 </el-col>
17 16 <el-col :span="24" v-if="ncc.hasFormP('fileType')">
18 17 <el-form-item label="文件类型" prop="fileType">
19   - <el-radio-group v-model="dataForm.fileType" :style='{}' >
  18 + <el-radio-group v-model="dataForm.fileType">
20 19 <el-radio v-for="(item, index) in fileTypeOptions" :key="index" :label="item.id" >{{item.fullName}}</el-radio>
21 20 </el-radio-group>
22 21 </el-form-item>
23 22 </el-col>
  23 + <el-col :span="24" v-if="ncc.hasFormP('otherFileType')" v-show="dataForm.fileType == '0'">
  24 + <el-form-item label="其他文件类型" prop="otherFileType">
  25 + <el-input v-model="dataForm.otherFileType" placeholder="请输入其他文件类型" clearable :style='{"width":"100%"}' />
  26 + </el-form-item>
  27 + </el-col>
24 28 <el-col :span="24" v-if="ncc.hasFormP('timeTakingEffect')">
25 29 <el-form-item label="生效时间" prop="timeTakingEffect">
26 30 <el-date-picker v-model="dataForm.timeTakingEffect" placeholder="请选择" clearable :style='{"width":"100%"}' type='date' format="yyyy-MM-dd" value-format="timestamp" >
... ... @@ -79,10 +83,18 @@
79 83 components: {},
80 84 props: [],
81 85 data() {
  86 + var validateOtherFileType = (rule, value, callback) => {
  87 + if (this.dataForm.fileType == '0' && !value) {
  88 + callback(new Error('请输入其他文件类型'));
  89 + } else {
  90 + callback();
  91 + }
  92 + }
82 93 return {
83 94 loading: false,
84 95 visible: false,
85 96 isDetail: false,
  97 + dialogLoading: false,
86 98 dataForm: {
87 99 id:'',
88 100 id:undefined,
... ... @@ -95,8 +107,12 @@
95 107 creatorTime:undefined,
96 108 lastModifyUserId:undefined,
97 109 lastModifyTime:undefined,
  110 + otherFileType: undefined,
98 111 },
99 112 rules: {
  113 + fileName: [{ required: true, message: '请输入文件名称', trigger: 'blur' }],
  114 + fileType: [{ required: true, message: '请选择文件类型', trigger: 'blur' }],
  115 + otherFileType: [{ validator: validateOtherFileType, trigger: 'blur' }],
100 116 },
101 117 fileTypeOptions : [],
102 118 btnLoading: false,
... ... @@ -112,7 +128,7 @@
112 128 methods: {
113 129 getfileTypeOptions(){
114 130 getDictionaryDataSelector('577087166203561221').then(res => {
115   - this.fileTypeOptions = res.data.list
  131 + this.fileTypeOptions = [...res.data.list, { fullName: '其他', id: '0' }]
116 132 });
117 133 },
118 134 goBack() {
... ... @@ -125,19 +141,34 @@
125 141 this.$nextTick(() => {
126 142 this.$refs['elForm'].resetFields();
127 143 if (this.dataForm.id) {
  144 + this.dialogLoading = true;
128 145 request({
129 146 url: '/Extend/BasePrincipalResponsibility/' + this.dataForm.id,
130 147 method: 'get'
131 148 }).then(res =>{
132 149 this.dataForm = res.data;
  150 + this.setTileType(res.data.fileType);
133 151 if(!this.dataForm.fileUrl)this.dataForm.fileUrl=[];
134   - })
  152 + this.dialogLoading = false;
  153 + }).catch(() => this.dialogLoading = false)
135 154 }
136 155 })
137 156 },
  157 + setTileType(val) {
  158 + let index = this.fileTypeOptions.findIndex(v => v.id == val);
  159 + if(index == -1 || index == (this.fileTypeOptions.length - 1)) {
  160 + this.dataForm.fileType = '0';
  161 + this.dataForm.otherFileType = val;
  162 + } else {
  163 + this.dataForm.fileType = val;
  164 + this.dataForm.otherFileType = '';
  165 + }
  166 + },
138 167 dataFormSubmit() {
139 168 this.$refs['elForm'].validate((valid) => {
  169 + console.log(valid);
140 170 if (valid) {
  171 + this.dataForm.fileType = this.dataForm.fileType == '0' ? this.dataForm.otherFileType : this.dataForm.fileType;
141 172 this.btnLoading = true;
142 173 if (!this.dataForm.id) {
143 174 request({
... ... @@ -149,12 +180,9 @@
149 180 message: res.msg,
150 181 type: 'success',
151 182 duration: 1000,
152   - onClose: () => {
153   - this.btnLoading = false,
154   - this.visible = false,
155   - this.$emit('refresh', true)
156   - }
157 183 })
  184 + this.visible = false;
  185 + this.$emit('refresh', true);
158 186 }).catch(() => this.btnLoading = false);
159 187 } else {
160 188 request({
... ... @@ -166,12 +194,9 @@
166 194 message: res.msg,
167 195 type: 'success',
168 196 duration: 1000,
169   - onClose: () => {
170   - this.btnLoading = false,
171   - this.visible = false
172   - this.$emit('refresh', true)
173   - }
174 197 })
  198 + this.visible = false;
  199 + this.$emit('refresh', true);
175 200 }).catch(() => this.btnLoading = false);
176 201 }
177 202 }
... ... @@ -180,3 +205,10 @@
180 205 }
181 206 }
182 207 </script>
  208 +<style lang="scss" scoped>
  209 +.basePrincipalResponsibilityForm {
  210 + :deep(.el-radio) {
  211 + margin: 0 30px 8px 0;
  212 + }
  213 +}
  214 +</style>
... ...
src/views/basePrincipalResponsibility/index.vue
... ... @@ -6,108 +6,44 @@
6 6 <div class="NCC-common-layout-center">
7 7 <el-row class="NCC-common-search-box" :gutter="16">
8 8 <el-form @submit.native.prevent size="mini">
9   - <el-col :span="4">
  9 + <el-col :span="6">
10 10 <el-form-item label="">
11   - <el-input
12   - v-model="query.fileName"
13   - placeholder="文件名"
14   - clearable
15   - />
  11 + <el-input v-model="query.fileName" placeholder="请输入文件名" clearable/>
16 12 </el-form-item>
17 13 </el-col>
18   - <el-col :span="4">
  14 + <el-col :span="6">
19 15 <el-form-item label="">
20   - <el-select v-model="query.fileType" placeholder="文件类型">
21   - <el-option
22   - v-for="(item, index) in fileTypeOptions"
23   - :key="index"
24   - :label="item.fullName"
25   - :value="item.id"
26   - />
27   - </el-select>
  16 + <el-input v-model="query.fileType" placeholder="请输入文件类型" clearable/>
28 17 </el-form-item>
29 18 </el-col>
30 19 <el-col :span="4">
31 20 <el-form-item>
32   - <el-button
33   - type="primary"
34   - icon="el-icon-search"
35   - @click="search()"
36   - >查询</el-button
37   - >
  21 + <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>
38 22 </el-form-item>
39 23 </el-col>
40 24 </el-form>
41 25 <div class="NCC-common-search-box-right">
42   - <el-button type="primary" icon="el-icon-download" size="mini" @click="exportData()">导出</el-button>
  26 + <el-button type="success" icon="el-icon-plus" @click="addOrUpdateHandle()" size="mini" >新增</el-button>
  27 + <!-- <el-button type="primary" icon="el-icon-download" size="mini" @click="exportData()">导出</el-button> -->
43 28 </div>
44 29 </el-row>
45 30 <div class="NCC-common-layout-main NCC-flex-main">
46   - <div class="NCC-common-head">
47   - <div>
48   - <el-button
49   - type="primary"
50   - icon="el-icon-plus"
51   - @click="addOrUpdateHandle()"
52   - size="mini"
53   - >新增</el-button
54   - >
55   - </div>
56   - </div>
57 31 <NCC-table v-loading="listLoading" :data="list">
58   - <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip/>
  32 + <!-- <el-table-column prop="id" label="主键" align="left" show-overflow-tooltip/> -->
59 33 <el-table-column prop="fileName" label="文件名" align="left" show-overflow-tooltip/>
60 34 <el-table-column label="文件类型" prop="fileType" align="left" show-overflow-tooltip>
61   - <template slot-scope="scope">{{
62   - scope.row.fileType | dynamicText(fileTypeOptions)
63   - }}</template>
  35 + <template slot-scope="scope">{{ scope.row.fileType | dynamicText(fileTypeOptions) }}</template>
64 36 </el-table-column>
65   - <el-table-column
66   - prop="timeTakingEffect"
67   - label="生效时间"
68   - align="left"
69   - show-overflow-tooltip
70   - />
  37 + <el-table-column prop="timeTakingEffect" label="生效时间" align="left" show-overflow-tooltip :formatter="ncc.tableDateFormat"/>
71 38 <el-table-column prop="content" label="具体内容" align="left" />
72   - <el-table-column
73   - prop="creatorUserId"
74   - label="创建用户"
75   - align="left"
76   - show-overflow-tooltip
77   - />
78   - <el-table-column
79   - prop="creatorTime"
80   - label="创建时间"
81   - :formatter="ncc.tableDateFormat"
82   - align="left"
83   - show-overflow-tooltip
84   - />
85   - <el-table-column
86   - prop="lastModifyUserId"
87   - label="修改用户"
88   - show-overflow-tooltip
89   - align="left"
90   - />
91   - <el-table-column
92   - prop="lastModifyTime"
93   - :formatter="ncc.tableDateFormat"
94   - label="修改时间"
95   - align="left"
96   - show-overflow-tooltip
97   - />
  39 + <!-- <el-table-column prop="creatorUserId" label="创建用户" align="left" show-overflow-tooltip/> -->
  40 + <el-table-column prop="creatorTime" label="创建时间" :formatter="ncc.tableDateFormat" align="left" show-overflow-tooltip/>
  41 + <!-- <el-table-column prop="lastModifyUserId" label="修改用户" show-overflow-tooltip align="left"/> -->
  42 + <!-- <el-table-column prop="lastModifyTime" :formatter="ncc.tableDateFormat" label="修改时间" align="left" show-overflow-tooltip/> -->
98 43 <el-table-column label="操作" fixed="right" width="100">
99 44 <template slot-scope="scope">
100   - <el-button
101   - type="text"
102   - @click="addOrUpdateHandle(scope.row.id)"
103   - >编辑</el-button
104   - >
105   - <el-button
106   - type="text"
107   - @click="handleDel(scope.row.id)"
108   - class="NCC-table-delBtn"
109   - >删除</el-button
110   - >
  45 + <el-button type="text" @click="addOrUpdateHandle(scope.row.id)" >编辑</el-button>
  46 + <el-button type="text" @click="handleDel(scope.row.id)" class="NCC-table-delBtn" >删除</el-button>
111 47 </template>
112 48 </el-table-column>
113 49 </NCC-table>
... ...
src/views/baseSpecialAction/Form.vue
... ... @@ -29,7 +29,7 @@
29 29 </el-input>
30 30 </el-form-item>
31 31 </el-col>
32   - <el-col :span="23" v-if="ncc.hasFormP('title') && !dataForm.id">
  32 + <el-col :span="23" v-if="ncc.hasFormP('title')">
33 33 <el-form-item label="标题" prop="title">
34 34 <el-input
35 35 v-model="dataForm.title"
... ... @@ -41,14 +41,14 @@
41 41 </el-input>
42 42 </el-form-item>
43 43 </el-col>
44   - <el-col :span="23" v-if="ncc.hasFormP('content') && !dataForm.id">
  44 + <el-col :span="23" v-if="ncc.hasFormP('content')">
45 45 <el-form-item label="内容" prop="content">
46 46 <el-input v-model="dataForm.content" placeholder="请输入" show-word-limit :style="{ width: '100%' }"
47 47 type="textarea" :autosize="{ minRows: 4, maxRows: 4 }">
48 48 </el-input>
49 49 </el-form-item>
50 50 </el-col>
51   - <el-col :span="23" v-if="ncc.hasFormP('annex') && !dataForm.id">
  51 + <el-col :span="23" v-if="ncc.hasFormP('annex')">
52 52 <el-form-item label="附件" prop="annex">
53 53 <NCC-UploadFz
54 54 v-model="dataForm.annex"
... ... @@ -67,10 +67,11 @@
67 67 v-for="(item, index) in areaOptions"
68 68 :key="index"
69 69 :label="item.id"
  70 + :disabled="editType == '已发布并部署' || editType == '已发布'"
70 71 >{{ item.fullName }}</el-checkbox
71 72 >
72 73 </el-checkbox-group>
73   - <div style="margin-top: 10px">
  74 + <div style="margin-top: 10px" v-if="!editType || editType == '已存档'">
74 75 <el-button size="mini" @click="selectAreaAll('area')">全选</el-button>
75 76 <el-button size="mini" @click="closeAreaAll('area')">反选</el-button>
76 77 </div>
... ... @@ -83,29 +84,31 @@
83 84 v-for="(item, index) in communicationOutOptions"
84 85 :key="index"
85 86 :label="item.id"
  87 + :disabled="editType == '已发布并部署' || editType == '已发布'"
86 88 >{{ item.fullName }}</el-checkbox
87 89 >
88 90 </el-checkbox-group>
89   - <div style="margin-top: 10px">
  91 + <div style="margin-top: 10px" v-if="!editType || editType == '已存档'">
90 92 <el-button size="mini" @click="selectAreaAll">全选</el-button>
91 93 <el-button size="mini" @click="closeAreaAll">反选</el-button>
92 94 </div>
93 95 </el-form-item>
94 96 </el-col>
95   - <el-col :span="23" v-if="ncc.hasFormP('relationId') && dataForm.id">
  97 + <el-col :span="23" v-if="ncc.hasFormP('relationId')">
96 98 <el-form-item label="填报表单" prop="relationId">
97   - <el-select v-model="dataForm.relationId" placeholder="请选择专项行动填报表单" style="margin-right: 10px;width: 300px;">
  99 + <el-select v-model="dataForm.relationId" placeholder="请选择专项行动填报表单" style="margin-right: 10px;width: 300px;" :disabled="editType == '已发布并部署'">
98 100 <el-option v-for="item in BaseList" :key="item.id" :label="item.fullName" :value="item.id">
99 101 </el-option>
100 102 </el-select>
101 103 <el-button size="mini" type="text" @click="dialogVisible = true">没有找到表单?点击设计表单</el-button>
102 104 </el-form-item>
103 105 </el-col>
104   - <el-col :span="23" v-if="ncc.hasFormP('deadline') && dataForm.id">
  106 + <el-col :span="23" v-if="ncc.hasFormP('deadline')">
105 107 <el-form-item label="截止日期" prop="deadline">
106 108 <el-date-picker
107 109 v-model="dataForm.deadline"
108 110 type="date"
  111 + :disabled="editType == '已发布并部署'"
109 112 placeholder="选择截止日期">
110 113 </el-date-picker>
111 114 </el-form-item>
... ... @@ -113,8 +116,10 @@
113 116 </el-form>
114 117 </el-row>
115 118 <span slot="footer" class="dialog-footer">
116   - <el-button @click="visible = false">取 消</el-button>
117   - <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail" :loading="btnLoading">确 定</el-button>
  119 + <el-button type="primary" @click="visible = false">取 消</el-button>
  120 + <el-button type="primary" @click="dataFormSubmit(0)" v-if="!isDetail" :loading="btnLoading">保 存</el-button>
  121 + <el-button type="primary" @click="dataFormSubmit(1)" v-if="!isDetail" :loading="btnLoading">发 布</el-button>
  122 + <el-button type="primary" @click="dataFormSubmit(2)" v-if="!isDetail" :loading="btnLoading">发布并反馈</el-button>
118 123 </span>
119 124 <el-dialog class="zxDialog" title="专项行动表单设计" :visible.sync="dialogVisible" fullscreen @close="handleClose" :modal="false">
120 125 <iframe
... ... @@ -135,14 +140,28 @@ export default {
135 140 components: {},
136 141 props: [],
137 142 data() {
  143 + var validatecommunicationArea = (rule, value, callback) => {
  144 + if (!this.dataForm.communicationOut.length && !value.length) {
  145 + callback(new Error('传输区域和传输外协不能同时为空!'));
  146 + } else {
  147 + callback();
  148 + }
  149 + };
  150 + var validatecommunicationOut = (rule, value, callback) => {
  151 + if (!this.dataForm.communicationArea.length && !value.length) {
  152 + callback(new Error('传输区域和传输外协不能同时为空!'));
  153 + } else {
  154 + callback();
  155 + }
  156 + };
138 157 return {
139 158 loading: false,
140 159 visible: false,
141 160 isDetail: false,
  161 + editType: '', // 修改类型
142 162 dataForm: {
143 163 id: "",
144 164 id: undefined,
145   - specialActionType: undefined,
146 165 title: undefined,
147 166 content: undefined,
148 167 releaseTime: undefined,
... ... @@ -158,34 +177,12 @@ export default {
158 177 relationId: undefined,
159 178 },
160 179 rules: {
161   - specialActionType: [
162   - {
163   - required: true,
164   - message: "请输入类型",
165   - trigger: "change",
166   - },
167   - ],
168   - title: [
169   - {
170   - required: true,
171   - message: "请输入标题",
172   - trigger: "blur",
173   - },
174   - ],
175   - deadline: [
176   - {
177   - required: true,
178   - message: "请输入截止日期",
179   - trigger: "change",
180   - }
181   - ],
182   - relationId: [
183   - {
184   - required: true,
185   - message: "请选择关联表单",
186   - trigger: "change",
187   - }
188   - ]
  180 + title: [{ required: true, message: "请输入标题", trigger: "blur" }],
  181 + content: [{ required: true, message: "请输入内容", trigger: "blur" }],
  182 + communicationArea: [{validator: validatecommunicationArea, trigger: 'blur'}],
  183 + communicationOut: [{validator: validatecommunicationOut, trigger: 'blur'}],
  184 + relationId: [{ required: true, message: "请选择专项行动填报表单", trigger: "blur"}],
  185 + deadline: [{ required: true, message: "请选择截止日期", trigger: "blur" }],
189 186 },
190 187 areaOptions: [],
191 188 communicationOutOptions: [],
... ... @@ -228,7 +225,6 @@ export default {
228 225 method: "get",
229 226 }).then((res) => {
230 227 this.BaseList = res.data.list[0].children;
231   - console.log(this.BaseList)
232 228 });
233 229 },
234 230 async initAreaTypeList() {
... ... @@ -277,60 +273,78 @@ export default {
277 273 this.dataForm.id = row ? row.id : '';
278 274 this.visible = true;
279 275 this.isDetail = isDetail || false;
  276 + this.editType = row ? row.state : '';
280 277 this.$nextTick(() => {
281 278 this.$refs["elForm"].resetFields();
282 279 if(this.dataForm.id) {
283   - this.dataForm.communicationArea = JSON.parse(row.communicationArea);
284   - this.dataForm.communicationOut = JSON.parse(row.communicationOut);
  280 + request({
  281 + url: `/Extend/BaseSpecialAction/${this.dataForm.id} `,
  282 + method: "GET",
  283 + }).then((res) => {
  284 + this.dataForm = res.data;
  285 + this.dataForm.annex = res.data.annex == null ? [] : res.data.annex;
  286 + })
285 287 }
286 288 });
287 289 },
288   - dataFormSubmit() {
289   - this.$refs["elForm"].validate((valid) => {
290   - if (valid) {
291   - this.btnLoading = true;
292   - if (!this.dataForm.id) {
293   - let {title, content, annex, communicationArea, communicationOut} = this.dataForm;
294   - // 新增
295   - request({
296   - url: `/Extend/BaseSpecialAction`,
297   - method: "post",
298   - data: { title, content, annex, communicationArea, communicationOut },
299   - }).then((res) => {
300   - this.$message({
301   - message: res.msg,
302   - type: "success",
303   - duration: 1000,
304   - onClose: () => {
305   - this.btnLoading = false;
306   - (this.visible = false), this.$emit("refresh", true);
307   - },
308   - });
309   - }).catch(() => this.btnLoading = false);
310   - } else {
311   - // 发布任务
312   - request({
313   - url: "/Extend/BaseSpecialAction/Release",
314   - method: "PUT",
315   - data: this.dataForm,
316   - }).then((res) => {
317   - this.$message({
318   - message: res.msg,
319   - type: "success",
320   - duration: 1000,
321   - onClose: () => {
322   - this.btnLoading = false;
323   - this.visible = false;
324   - this.$emit("refresh", true);
325   - },
326   - });
327   - }).catch(() => this.btnLoading = false);
328   - }
  290 + dataFormSubmit(type) {
  291 + this.validateForm(type, () => {
  292 + let obj = {
  293 + ...this.dataForm,
  294 + state: type
329 295 }
  296 + let url = !this.dataForm.id ? '/Extend/BaseSpecialAction/Release' : '/Extend/BaseSpecialAction/Update';
  297 + let method = !this.dataForm.id ? 'PUT' : 'POST';
  298 + this.toPostForm(url, method, obj);
330 299 });
331 300 },
  301 + validateForm(type, callback) {
  302 + let list = ['title', 'content'];
  303 + switch (type) {
  304 + case 0:
  305 + list = ['title', 'content'];
  306 + break;
  307 + case 1:
  308 + list = ['title', 'content', 'communicationArea', 'communicationOut'];
  309 + break;
  310 + case 2:
  311 + list = ['title', 'content', 'communicationArea', 'communicationOut', 'relationId', 'deadline'];
  312 + break;
  313 +
  314 + default:
  315 + break;
  316 + }
  317 + let Promises = list.map(v => new Promise((resolve, reject) => this.$refs["elForm"].validateField(v, err => resolve(err))));
  318 + Promise.all(Promises).then(values => {
  319 + if(values.filter(item =>item).length) {
  320 + return
  321 + } else {
  322 + callback && callback(values);
  323 + }
  324 + });
  325 + },
  326 + toPostForm(url, method, obj, callback) {
  327 + this.btnLoading = true;
  328 + request({
  329 + url,
  330 + method,
  331 + data: obj,
  332 + }).then((res) => {
  333 + this.$message({
  334 + message: res.msg,
  335 + type: "success",
  336 + duration: 1000,
  337 + onClose: () => {
  338 + callback && callback();
  339 + this.btnLoading = false;
  340 + (this.visible = false), this.$emit("refresh", true);
  341 + },
  342 + });
  343 + }).catch(() => this.btnLoading = false);
  344 + }
332 345 },
333 346 };
  347 +
334 348 </script>
335 349 <style lang="scss" scoped>
336 350 </style>
... ...
src/views/baseSpecialAction/index.vue
... ... @@ -37,13 +37,9 @@
37 37 </div>
38 38 </div>
39 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 41 <el-table-column prop="title" 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>
  42 +
47 43 <el-table-column prop="creatorTime" label="发布时间" align="left" :formatter="ncc.tableDateFormat" show-overflow-tooltip/>
48 44 <el-table-column label="传达区域" prop="communicationArea" align="left" show-overflow-tooltip>
49 45 <template slot-scope="scope">{{ JSON.parse(scope.row.communicationArea) | dynamicText(communicationAreaOptions) }}</template>
... ... @@ -51,16 +47,21 @@
51 47 <el-table-column label="传达外协" prop="communicationOut" align="left" show-overflow-tooltip>
52 48 <template slot-scope="scope">{{ JSON.parse(scope.row.communicationOut) | dynamicText(communicationOutOptions) }}</template>
53 49 </el-table-column>
54   - <el-table-column prop="deadline" label="截止日期" show-overflow-tooltip :formatter="ncc.tableDateFormat" width="175">
  50 + <el-table-column prop="state" label="状态" align="left" show-overflow-tooltip width="100">
  51 + <template slot-scope="scope">
  52 + <el-tag :type="stateColor[`${scope.row.state}`]">{{scope.row.state}}</el-tag>
  53 + </template>
  54 + </el-table-column>
  55 + <el-table-column prop="deadline" label="截止日期" show-overflow-tooltip :formatter="ncc.tableDateFormat" width="200" align="left">
55 56 <template slot-scope="scope">
56 57 <el-tag v-if="scope.row.deadline" :type="`${ncc.timeDeadLine(scope.row.deadline)}`">{{ncc.stateDeadLine(scope.row.deadline)}}{{ ncc.tableDateFormat(scope.row, 'deadline', scope.row.deadline) }}</el-tag>
57 58 </template>
58 59 </el-table-column>
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 prop="creatorUserId" show-overflow-tooltip label="创建用户" align="left"/> -->
  61 + <el-table-column label="操作" fixed="right" width="150">
61 62 <template slot-scope="scope">
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="addOrUpdateHandle(scope.row)">修改</el-button>
  64 + <el-button type="text" @click="toDetail(scope.row)" v-if="scope.row.state == '已发布并部署'">处理情况</el-button>
64 65 </template>
65 66 </el-table-column>
66 67 </NCC-table>
... ... @@ -101,6 +102,12 @@ export default {
101 102 InfoFormVisible: false,
102 103 communicationAreaOptions: [],
103 104 communicationOutOptions: [],
  105 + stateColor: {
  106 + '已存档': "info",
  107 + '已发布': "warning",
  108 + '已发布并部署': "success",
  109 + '未发布': "",
  110 + },
104 111 };
105 112 },
106 113 async created() {
... ...
src/views/overView/Overview.vue
... ... @@ -18,9 +18,13 @@
18 18 <el-table-column type="index" width="40"> </el-table-column>
19 19 <el-table-column prop="taskTitle" label="任务名称" show-overflow-tooltip/>
20 20 <el-table-column prop="taskType" label="任务类型" show-overflow-tooltip width="100"/>
21   - <el-table-column prop="taskState" label="状态" show-overflow-tooltip width="80"/>
22 21 <el-table-column prop="taskContent" label="任务内容" show-overflow-tooltip />
23   - <el-table-column prop="deadLine" label="任务期限" show-overflow-tooltip :formatter="ncc.tableDateFormat" width="170">
  22 + <el-table-column prop="taskState" label="状态" show-overflow-tooltip width="80">
  23 + <template slot-scope="scope">
  24 + <el-tag type="success">{{ scope.row.taskState }}</el-tag>
  25 + </template>
  26 + </el-table-column>
  27 + <el-table-column prop="deadLine" label="任务期限" show-overflow-tooltip :formatter="ncc.tableDateFormat" width="200">
24 28 <template slot-scope="scope">
25 29 <el-tag :type="`${ncc.timeDeadLine(scope.row.deadLine)}`">{{ncc.stateDeadLine(scope.row.deadLine)}}{{ ncc.tableDateFormat(scope.row, 'deadLine', scope.row.deadLine) }}</el-tag>
26 30 </template>
... ...