Blame view

src/views/baseSpecialAction/Form.vue 13.9 KB
4424f41c   monkeyhouyi   网信执法、清单管理静态页面
1
  <template>
93186f57   monkeyhouyi   前端整改页面
2
    <el-dialog
8994407e   monkeyhouyi   优化
3
      :title="!dataForm.id ? '新增' : isDetail ? '详情' : '编辑'"
93186f57   monkeyhouyi   前端整改页面
4
5
6
7
      :close-on-click-modal="false"
      :visible.sync="visible"
      class="NCC-dialog NCC-dialog_center"
      lock-scroll
73755355   monkeyhouyi   优化
8
      width="60%"
61009cfc   monkeyhouyi   2024/8/8
9
      v-loading="loading"
93186f57   monkeyhouyi   前端整改页面
10
    >
87e6927c   monkeyhouyi   弹框样式
11
      <el-row :gutter="15" class="NCC-dialog-content">
93186f57   monkeyhouyi   前端整改页面
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        <el-form
          ref="elForm"
          :model="dataForm"
          size="small"
          label-width="100px"
          label-position="right"
          :disabled="!!isDetail"
          :rules="rules"
        >
          <el-col :span="23" v-if="false">
            <el-form-item label="主键" prop="id">
              <el-input
                v-model="dataForm.id"
                placeholder="请输入"
                clearable
                :style="{ width: '100%' }"
              >
              </el-input>
            </el-form-item>
          </el-col>
ff36c85d   monkeyhouyi   1
32
          <el-col :span="23" v-if="ncc.hasFormP('title')">
93186f57   monkeyhouyi   前端整改页面
33
34
35
36
37
38
39
40
41
42
43
            <el-form-item label="标题" prop="title">
              <el-input
                v-model="dataForm.title"
                placeholder="请输入"
                clearable
                required
                :style="{ width: '100%' }"
              >
              </el-input>
            </el-form-item>
          </el-col>
ff36c85d   monkeyhouyi   1
44
          <el-col :span="23" v-if="ncc.hasFormP('content')">
ce1de261   monkeyhouyi   专项行动
45
            <el-form-item label="内容" prop="content">
73755355   monkeyhouyi   优化
46
47
              <NCC-Quill v-model="dataForm.content" placeholder="请输入内容...">
              </NCC-Quill>
ce1de261   monkeyhouyi   专项行动
48
49
            </el-form-item>
          </el-col>
ff36c85d   monkeyhouyi   1
50
          <el-col :span="23" v-if="ncc.hasFormP('annex')">
93186f57   monkeyhouyi   前端整改页面
51
52
53
            <el-form-item label="附件" prop="annex">
              <NCC-UploadFz
                v-model="dataForm.annex"
f3684888   monkeyhouyi   附件大小限制10MB
54
                :fileSize="10"
93186f57   monkeyhouyi   前端整改页面
55
56
57
58
59
60
61
                sizeUnit="MB"
                :limit="9"
                buttonText="点击上传"
              >
              </NCC-UploadFz>
            </el-form-item>
          </el-col>
fcbf44a0   monkeyhouyi   1
62
          <el-col :span="23" v-if="ncc.hasFormP('communicationArea')">
93186f57   monkeyhouyi   前端整改页面
63
64
65
66
67
68
            <el-form-item label="传达区域" prop="communicationArea">
              <el-checkbox-group v-model="dataForm.communicationArea" :style="{}">
                <el-checkbox
                  v-for="(item, index) in areaOptions"
                  :key="index"
                  :label="item.id"
ff36c85d   monkeyhouyi   1
69
                  :disabled="editType == '已发布并部署' || editType == '已发布'"
93186f57   monkeyhouyi   前端整改页面
70
71
72
                  >{{ item.fullName }}</el-checkbox
                >
              </el-checkbox-group>
ff36c85d   monkeyhouyi   1
73
              <div style="margin-top: 10px" v-if="!editType || editType == '已存档'">
ce1de261   monkeyhouyi   专项行动
74
75
                <el-button size="mini" @click="selectAreaAll('area')">全选</el-button>
                <el-button size="mini" @click="closeAreaAll('area')">反选</el-button>
93186f57   monkeyhouyi   前端整改页面
76
77
78
              </div>
            </el-form-item>
          </el-col>
fcbf44a0   monkeyhouyi   1
79
          <el-col :span="23" v-if="ncc.hasFormP('communicationOut')">
ce1de261   monkeyhouyi   专项行动
80
81
            <el-form-item label="传达外协" prop="communicationOut">
              <el-checkbox-group v-model="dataForm.communicationOut" :style="{}">
93186f57   monkeyhouyi   前端整改页面
82
                <el-checkbox
ce1de261   monkeyhouyi   专项行动
83
                  v-for="(item, index) in communicationOutOptions"
93186f57   monkeyhouyi   前端整改页面
84
85
                  :key="index"
                  :label="item.id"
ff36c85d   monkeyhouyi   1
86
                  :disabled="editType == '已发布并部署' || editType == '已发布'"
93186f57   monkeyhouyi   前端整改页面
87
88
89
                  >{{ item.fullName }}</el-checkbox
                >
              </el-checkbox-group>
ff36c85d   monkeyhouyi   1
90
              <div style="margin-top: 10px" v-if="!editType || editType == '已存档'">
ce1de261   monkeyhouyi   专项行动
91
92
93
94
95
                <el-button size="mini" @click="selectAreaAll">全选</el-button>
                <el-button size="mini" @click="closeAreaAll">反选</el-button>
              </div>
            </el-form-item>
          </el-col>
ff36c85d   monkeyhouyi   1
96
          <el-col :span="23" v-if="ncc.hasFormP('relationId')">
ce1de261   monkeyhouyi   专项行动
97
            <el-form-item label="填报表单" prop="relationId">
ff36c85d   monkeyhouyi   1
98
              <el-select v-model="dataForm.relationId" placeholder="请选择专项行动填报表单" style="margin-right: 10px;width: 300px;" :disabled="editType == '已发布并部署'">
ce1de261   monkeyhouyi   专项行动
99
100
101
                <el-option v-for="item in BaseList" :key="item.id" :label="item.fullName" :value="item.id">
                </el-option>
              </el-select>
e987e33a   monkeyhouyi   预览表单
102
103
104
              <div v-if="dataForm.relationId"  style="display: inline-block; margin-right: 14px;">
                <FormDialog :row="{formId: dataForm.relationId}" :isDetail="true">预览表单</FormDialog>
              </div>
ce1de261   monkeyhouyi   专项行动
105
106
107
              <el-button size="mini" type="text" @click="dialogVisible = true">没有找到表单?点击设计表单</el-button>
            </el-form-item>
          </el-col>
ff36c85d   monkeyhouyi   1
108
          <el-col :span="23" v-if="ncc.hasFormP('deadline')">
73755355   monkeyhouyi   优化
109
            <el-form-item label="截止时间" prop="deadline">
ce1de261   monkeyhouyi   专项行动
110
111
              <el-date-picker
                v-model="dataForm.deadline"
aab9afee   monkeyhouyi   时间传值
112
113
                format="yyyy-MM-dd HH:mm:ss"
                value-format="yyyy-MM-dd HH:mm:ss"
73755355   monkeyhouyi   优化
114
                type="datetime"
ff36c85d   monkeyhouyi   1
115
                :disabled="editType == '已发布并部署'"
73755355   monkeyhouyi   优化
116
                placeholder="选择截止时间">
ce1de261   monkeyhouyi   专项行动
117
              </el-date-picker>
93186f57   monkeyhouyi   前端整改页面
118
119
            </el-form-item>
          </el-col>
06c7a82f   李宇   最新代码
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
          <el-col :span="23" v-if="ncc.hasFormP('creatorTime')">
            <el-form-item label="发布时间" prop="creatorTime">
              <el-date-picker
                v-model="dataForm.creatorTime"
                type="date"
                placeholder="选择日期"
                format="yyyy-MM-dd"
                value-format="yyyy-MM-dd"
                >
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="23" v-if="ncc.hasFormP('cleanedDataCount')">
            <el-form-item label="清理数据条数" prop="cleanedDataCount">
              <el-input-number v-model="dataForm.cleanedDataCount" placeholder="数字文本" :step="1" >
              </el-input-number>
            </el-form-item>
          </el-col>
          <el-col :span="23" v-if="ncc.hasFormP('purgedRecordsCount')">
            <el-form-item label="处置账号个数" prop="purgedRecordsCount">
              <el-input-number v-model="dataForm.purgedRecordsCount" placeholder="数字文本" :step="1" >
              </el-input-number>
            </el-form-item>
          </el-col>
93186f57   monkeyhouyi   前端整改页面
144
145
146
        </el-form>
      </el-row>
      <span slot="footer" class="dialog-footer">
ff36c85d   monkeyhouyi   1
147
148
149
150
        <el-button type="primary" @click="visible = false">取 消</el-button>
        <el-button type="primary" @click="dataFormSubmit(0)" v-if="!isDetail" :loading="btnLoading">保 存</el-button>
        <el-button type="primary" @click="dataFormSubmit(1)" v-if="!isDetail" :loading="btnLoading">发 布</el-button>
        <el-button type="primary" @click="dataFormSubmit(2)" v-if="!isDetail" :loading="btnLoading">发布并反馈</el-button>
93186f57   monkeyhouyi   前端整改页面
151
      </span>
ce1de261   monkeyhouyi   专项行动
152
153
154
155
156
157
158
159
160
      <el-dialog class="zxDialog" title="专项行动表单设计" :visible.sync="dialogVisible" fullscreen @close="handleClose" :modal="false">
        <iframe 
          :src="nestedPageUrl" 
          width="100%" 
          :height="viewportHeight - 58 + 'px'" 
          frameborder="0" 
          allowfullscreen>
        </iframe>
      </el-dialog>
93186f57   monkeyhouyi   前端整改页面
161
    </el-dialog>
4424f41c   monkeyhouyi   网信执法、清单管理静态页面
162
163
  </template>
  <script>
93186f57   monkeyhouyi   前端整改页面
164
  import request from "@/utils/request";
6cd34f81   monkeyhouyi   对接接口优化
165
  import ncc from "@/utils/ncc.js"
93186f57   monkeyhouyi   前端整改页面
166
167
168
169
170
171
  import { getDictionaryDataSelector } from "@/api/systemData/dictionary";
  import { previewDataInterface } from "@/api/systemData/dataInterface";
  export default {
    components: {},
    props: [],
    data() {
ff36c85d   monkeyhouyi   1
172
173
174
175
176
177
178
179
180
181
182
183
184
185
      var validatecommunicationArea = (rule, value, callback) => {
          if (!this.dataForm.communicationOut.length && !value.length) {
            callback(new Error('传输区域和传输外协不能同时为空!'));
          } else {
            callback();
          }
        };
      var validatecommunicationOut = (rule, value, callback) => {
        if (!this.dataForm.communicationArea.length && !value.length) {
          callback(new Error('传输区域和传输外协不能同时为空!'));
        } else {
          callback();
        }
      };
93186f57   monkeyhouyi   前端整改页面
186
187
188
189
      return {
        loading: false,
        visible: false,
        isDetail: false,
ff36c85d   monkeyhouyi   1
190
        editType: '', // 修改类型
93186f57   monkeyhouyi   前端整改页面
191
192
193
        dataForm: {
          id: "",
          id: undefined,
93186f57   monkeyhouyi   前端整改页面
194
195
196
          title: undefined,
          content: undefined,
          releaseTime: undefined,
93186f57   monkeyhouyi   前端整改页面
197
198
          annex: [],
          communicationArea: [],
ce1de261   monkeyhouyi   专项行动
199
          communicationOut: [],
93186f57   monkeyhouyi   前端整改页面
200
201
202
203
204
          state: undefined,
          creatorUserId: undefined,
          creatorTime: undefined,
          lastModifyUserId: undefined,
          lastModifyTime: undefined,
ce1de261   monkeyhouyi   专项行动
205
          deadline: undefined,
2201a66b   monkeyhouyi   专项性行动-首页联动
206
          relationId: undefined,
06c7a82f   李宇   最新代码
207
208
209
          cleanedDataCount:0,
          purgedRecordsCount:0
          
93186f57   monkeyhouyi   前端整改页面
210
211
        },
        rules: {
ff36c85d   monkeyhouyi   1
212
213
214
215
216
217
          title: [{ required: true, message: "请输入标题", trigger: "blur" }],
          content: [{ required: true, message: "请输入内容", trigger: "blur" }],
          communicationArea: [{validator: validatecommunicationArea, trigger: 'blur'}],
          communicationOut: [{validator: validatecommunicationOut, trigger: 'blur'}],
          relationId: [{ required: true, message: "请选择专项行动填报表单", trigger: "blur"}],
          deadline: [{ required: true, message: "请选择截止日期", trigger: "blur" }],
93186f57   monkeyhouyi   前端整改页面
218
219
        },
        areaOptions: [],
ce1de261   monkeyhouyi   专项行动
220
221
222
        communicationOutOptions: [],
        BaseList:[],
        viewportHeight: 0,
f4b94cea   monkeyhouyi   跳转表单路径修改
223
        // nestedPageUrl:"http://8.130.38.56:8043/old/#/onlineDev/webDesign/indexNew",
06c7a82f   李宇   最新代码
224
        nestedPageUrl:"http://10.0.0.208:5000/old/#/onlineDev/webDesign/indexNew",
ce1de261   monkeyhouyi   专项行动
225
        dialogVisible: false,
2201a66b   monkeyhouyi   专项性行动-首页联动
226
        btnLoading: false
93186f57   monkeyhouyi   前端整改页面
227
228
229
230
231
232
      };
    },
    computed: {},
    watch: {},
    created() {
      this.initAreaTypeList();
ce1de261   monkeyhouyi   专项行动
233
234
235
236
237
      this.initCommunicationOutOptions();
      this.updateViewportHeight();
      this.getDataForm();
        // 监听窗口大小变化事件
        window.addEventListener('resize', this.updateViewportHeight);
93186f57   monkeyhouyi   前端整改页面
238
239
    },
    mounted() {},
ce1de261   monkeyhouyi   专项行动
240
241
242
243
    beforeDestroy() {
      // 移除窗口大小变化事件监听器
      window.removeEventListener('resize', this.updateViewportHeight);
    },
93186f57   monkeyhouyi   前端整改页面
244
    methods: {
ce1de261   monkeyhouyi   专项行动
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
      updateViewportHeight() {
        // 获取页面显示高度
        this.viewportHeight = window.innerHeight || document.documentElement.clientHeight;
      },
      handleClose() {
        // 这里是对话框关闭后需要执行的代码
        this.getDataForm();
        // 例如,你可以在这里添加任何其他的逻辑
      },
       //查询表单
       getDataForm() {
        request({
          url: "/visualdev/Base?type=1",
          method: "get",
        }).then((res) => {
          this.BaseList = res.data.list[0].children;
ce1de261   monkeyhouyi   专项行动
261
262
        });
      },
93186f57   monkeyhouyi   前端整改页面
263
264
265
266
267
      async initAreaTypeList() {
        let list = this.$store.state.meta.area;
        !list && (list = await this.$store.dispatch("getTypeListByCode", "area"));
        this.areaOptions = list;
      },
ce1de261   monkeyhouyi   专项行动
268
269
270
271
      async initCommunicationOutOptions() {
        let list = this.$store.state.meta.externalAssistanceList;
        !list && (list = await this.$store.dispatch("getTypeListByCode", "externalAssistance"));
        this.communicationOutOptions = list;
93186f57   monkeyhouyi   前端整改页面
272
      },
ce1de261   monkeyhouyi   专项行动
273
274
275
276
277
278
279
280
281
282
283
      // 全选
      selectAreaAll(type) {
        if(type == 'area') {
          this.dataForm.communicationArea = this.areaOptions.map(
            (option) => option.id
          );
        } else {
          this.dataForm.communicationOut = this.communicationOutOptions.map(
            (option) => option.id
          );
        }
93186f57   monkeyhouyi   前端整改页面
284
      },
ce1de261   monkeyhouyi   专项行动
285
286
287
      // 反选
      closeAreaAll(type) {
        if(type == 'area') {
f1a44e73   monkeyhouyi   1
288
          this.dataForm.communicationArea = this.areaOptions.filter((option) => !this.dataForm.communicationArea.includes(option.id)).map((option) => option.id);
ce1de261   monkeyhouyi   专项行动
289
290
291
292
293
294
295
296
297
        } else {
          this.dataForm.communicationOut = this.communicationOutOptions
            .filter(
              (option) => !this.dataForm.communicationOut.includes(option.id)
            )
            .map((option) => option.id);
        }
      },
     
93186f57   monkeyhouyi   前端整改页面
298
299
300
      goBack() {
        this.$emit("refresh");
      },
61009cfc   monkeyhouyi   2024/8/8
301
      init(row, isDetail) {
8f1d4460   monkeyhouyi   实现专项行动详情查看
302
        this.dataForm.id = row ? row.id : '';
93186f57   monkeyhouyi   前端整改页面
303
304
        this.visible = true;
        this.isDetail = isDetail || false;
ff36c85d   monkeyhouyi   1
305
        this.editType = row ? row.state : '';
93186f57   monkeyhouyi   前端整改页面
306
307
        this.$nextTick(() => {
          this.$refs["elForm"].resetFields();
61009cfc   monkeyhouyi   2024/8/8
308
          if(this.dataForm.id) {
ff36c85d   monkeyhouyi   1
309
310
311
312
313
            request({
              url: `/Extend/BaseSpecialAction/${this.dataForm.id} `,
              method: "GET",
            }).then((res) => {
              this.dataForm = res.data;
6cd34f81   monkeyhouyi   对接接口优化
314
              this.dataForm.deadline = new Date(ncc.dateFormat(res.data.deadline, 'YYYY-MM-DD HH:mm:ss'));
06c7a82f   李宇   最新代码
315
              this.dataForm.creatorTime = new Date(ncc.dateFormat(res.data.creatorTime, 'YYYY-MM-DD HH:mm:ss'));
ff36c85d   monkeyhouyi   1
316
317
              this.dataForm.annex = res.data.annex == null ? [] : res.data.annex;
            })
61009cfc   monkeyhouyi   2024/8/8
318
          }
93186f57   monkeyhouyi   前端整改页面
319
320
        });
      },
ff36c85d   monkeyhouyi   1
321
      dataFormSubmit(type) {
06c7a82f   李宇   最新代码
322
323
        console.error({...this.dataForm})
          // return
ff36c85d   monkeyhouyi   1
324
325
326
327
        this.validateForm(type, () => {
          let obj = {
            ...this.dataForm,
            state: type
93186f57   monkeyhouyi   前端整改页面
328
          }
ff36c85d   monkeyhouyi   1
329
330
331
          let url = !this.dataForm.id ? '/Extend/BaseSpecialAction/Release' : '/Extend/BaseSpecialAction/Update';
          let method = !this.dataForm.id ? 'PUT' : 'POST';
          this.toPostForm(url, method, obj);
93186f57   monkeyhouyi   前端整改页面
332
333
        });
      },
ff36c85d   monkeyhouyi   1
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
      validateForm(type, callback) {
        let list = ['title', 'content'];
        switch (type) {
          case 0:
          list = ['title', 'content'];
            break;
          case 1:
          list = ['title', 'content', 'communicationArea', 'communicationOut'];
            break;
          case 2:
          list = ['title', 'content', 'communicationArea', 'communicationOut', 'relationId', 'deadline'];
            break;
        
          default:
            break;
        }
        let Promises =  list.map(v => new Promise((resolve, reject) => this.$refs["elForm"].validateField(v, err => resolve(err))));
        Promise.all(Promises).then(values => {
          if(values.filter(item =>item).length) {
            return
          } else {
            callback && callback(values);
          }
        });
      },
      toPostForm(url, method, obj, callback) {
        this.btnLoading = true;
        request({
          url,
          method,
          data: obj,
        }).then((res) => {
          this.$message({
            message: res.msg,
            type: "success",
            duration: 1000,
            onClose: () => {
              callback && callback();
              this.btnLoading = false;
              (this.visible = false), this.$emit("refresh", true);
            },
          });
        }).catch(() => this.btnLoading = false);
      }
93186f57   monkeyhouyi   前端整改页面
378
379
    },
  };
ff36c85d   monkeyhouyi   1
380
  
4424f41c   monkeyhouyi   网信执法、清单管理静态页面
381
  </script>
ce1de261   monkeyhouyi   专项行动
382
  <style lang="scss" scoped>
21303a31   monkeyhouyi   修改设计表单页面(由于admin账...
383
384
385
386
387
  .zxDialog {
    :deep(.el-dialog__body) {
      max-height: 90vh !important;
    }
  }
ce1de261   monkeyhouyi   专项行动
388
  </style>