Blame view

src/views/overView/msgForm.vue 6.76 KB
be009217   monkeyhouyi   处理,通知公告,任务中心
1
  <template>
5a14192c   monkeyhouyi   1
2
3
4
5
6
7
8
9
    <el-dialog
      :title="isDetail ? '通知详情' : '发布通知'"
      :close-on-click-modal="false"
      :visible.sync="visible"
      class="NCC-dialog NCC-dialog_center msg-dialog"
      lock-scroll
      width="50%"
    >
e4af99a2   monkeyhouyi   1
10
      <div style="padding-top: 10px" v-if="!isDetail">
5a14192c   monkeyhouyi   1
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
        <el-form
          ref="elForm"
          :model="dataForm"
          size="small"
          label-width="80px"
          label-position="right"
          :disabled="!!isDetail"
          :rules="rules"
        >
          <el-col :span="24">
            <el-form-item label="通知标题" prop="title">
              <el-input v-model="dataForm.title"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="内容" prop="bodyContent">
              <NCC-Quill
                v-model="dataForm.bodyContent"
                placeholder="请输入内容..."
                :disabled="!!isDetail"
              />
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="附件上传" prop="imgUrl">
              <NCC-UploadFz
                v-model="dataForm.imgUrl"
                :fileSize="5"
                sizeUnit="MB"
                :limit="9"
                buttonText="点击上传"
              />
            </el-form-item>
          </el-col>
          <el-col :span="24">
fcbf44a0   monkeyhouyi   1
46
47
            <el-form-item label="传达区域" prop="communicationAreas">
              <el-checkbox-group v-model="dataForm.communicationAreas" :style="{}">
5a14192c   monkeyhouyi   1
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
                <el-checkbox
                  v-for="(item, index) in areaOptions"
                  :key="index"
                  :label="item.id"
                  >{{ item.fullName }}</el-checkbox
                >
              </el-checkbox-group>
              <div style="margin-top: 10px">
                <el-button size="mini" @click="selectAreaAll('area')"
                  >全选</el-button
                >
                <el-button size="mini" @click="closeAreaAll('area')"
                  >反选</el-button
                >
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="24">
fcbf44a0   monkeyhouyi   1
66
67
            <el-form-item label="传达外协" prop="communicationOuts">
              <el-checkbox-group v-model="dataForm.communicationOuts" :style="{}">
5a14192c   monkeyhouyi   1
68
69
70
71
72
73
74
75
76
77
78
79
80
81
                <el-checkbox
                  v-for="(item, index) in communicationOutOptions"
                  :key="index"
                  :label="item.id"
                  >{{ item.fullName }}</el-checkbox
                >
              </el-checkbox-group>
              <div style="margin-top: 10px">
                <el-button size="mini" @click="selectAreaAll">全选</el-button>
                <el-button size="mini" @click="closeAreaAll">反选</el-button>
              </div>
            </el-form-item>
          </el-col>
        </el-form>
e4af99a2   monkeyhouyi   1
82
83
      </div>
      <div
5a14192c   monkeyhouyi   1
84
85
86
87
        style="padding-top: 10px"
        class="msg-box"
        v-loading="loading"
        v-else
be009217   monkeyhouyi   处理,通知公告,任务中心
88
      >
5a14192c   monkeyhouyi   1
89
90
91
        <div class="msg-title">{{ dataForm.title }}</div>
        <div class="content" v-html="dataForm.bodyContent"></div>
        <div class="files"></div>
e4af99a2   monkeyhouyi   1
92
      </div>
5a14192c   monkeyhouyi   1
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
      <span slot="footer" class="dialog-footer">
        <el-button @click="visible = false">取 消</el-button>
        <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail"
          >确 定</el-button
        >
      </span>
    </el-dialog>
  </template>
  <script>
  import request from "@/utils/request";
  export default {
    components: {},
    props: [],
    data() {
      return {
        loading: false,
        visible: false,
        isDetail: false,
        dataForm: {
          id: "",
          title: "",
          bodyContent: "",
          imgUrl: [],
          categoryId: "cc225c68421644f79037aaf624ccccc0",
          isType: "0",
fcbf44a0   monkeyhouyi   1
118
119
          communicationAreas: [],
          communicationOuts: [],
5a14192c   monkeyhouyi   1
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
        },
        rules: {
          title: [{ required: true, message: "请输入标题", trigger: "blur" }],
          bodyContent: [
            { required: true, message: "请输入内容", trigger: "blur" },
          ],
        },
        areaOptions: [],
        communicationOutOptions: [],
      };
    },
    computed: {},
    watch: {},
    created() {
      this.initAreaTypeList();
      this.initCommunicationOutOptions();
    },
    mounted() {},
    beforeDestroy() {},
    methods: {
      goBack() {
        this.$emit("refresh");
be009217   monkeyhouyi   处理,通知公告,任务中心
142
      },
5a14192c   monkeyhouyi   1
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
      init(id, isDetail) {
        this.dataForm.id = id || 0;
        this.visible = true;
        this.isDetail = isDetail || false;
        this.$nextTick(() => {
          !this.dataForm.id && this.$refs["elForm"].resetFields();
          if (this.dataForm.id) {
            this.loading = true;
            request({
              url: `/SubDev/ZyOaArticle/${this.dataForm.id}`,
              method: "GET",
            }).then((res) => {
              this.dataForm = res.data;
              this.loading = false;
            });
          }
        });
be009217   monkeyhouyi   处理,通知公告,任务中心
160
      },
5a14192c   monkeyhouyi   1
161
162
163
164
      async initAreaTypeList() {
        let list = this.$store.state.meta.area;
        !list && (list = await this.$store.dispatch("getTypeListByCode", "area"));
        this.areaOptions = list;
be009217   monkeyhouyi   处理,通知公告,任务中心
165
      },
5a14192c   monkeyhouyi   1
166
167
168
169
170
171
172
173
      async initCommunicationOutOptions() {
        let list = this.$store.state.meta.externalAssistanceList;
        !list &&
          (list = await this.$store.dispatch(
            "getTypeListByCode",
            "externalAssistance"
          ));
        this.communicationOutOptions = list;
be009217   monkeyhouyi   处理,通知公告,任务中心
174
      },
5a14192c   monkeyhouyi   1
175
176
177
      // 全选
      selectAreaAll(type) {
        if (type == "area") {
fcbf44a0   monkeyhouyi   1
178
          this.dataForm.communicationAreas = this.areaOptions.map(
5a14192c   monkeyhouyi   1
179
180
181
            (option) => option.id
          );
        } else {
fcbf44a0   monkeyhouyi   1
182
          this.dataForm.communicationOuts = this.communicationOutOptions.map(
5a14192c   monkeyhouyi   1
183
184
185
186
187
188
189
            (option) => option.id
          );
        }
      },
      // 反选
      closeAreaAll(type) {
        if (type == "area") {
fcbf44a0   monkeyhouyi   1
190
          this.dataForm.communicationAreas = this.areaOptions
5a14192c   monkeyhouyi   1
191
            .filter(
fcbf44a0   monkeyhouyi   1
192
              (option) => !this.dataForm.communicationAreas.includes(option.id)
5a14192c   monkeyhouyi   1
193
194
195
            )
            .map((option) => option.id);
        } else {
fcbf44a0   monkeyhouyi   1
196
          this.dataForm.communicationOuts = this.communicationOutOptions
5a14192c   monkeyhouyi   1
197
            .filter(
fcbf44a0   monkeyhouyi   1
198
              (option) => !this.dataForm.communicationOuts.includes(option.id)
5a14192c   monkeyhouyi   1
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
            )
            .map((option) => option.id);
        }
      },
      dataFormSubmit() {
        this.$refs["elForm"].validate((valid) => {
          if (valid) {
            request({
              url: `/SubDev/ZyOaArticle`,
              method: "post",
              data: this.dataForm,
            }).then((res) => {
              this.$message({
                message: res.msg,
                type: "success",
                duration: 1000,
                onClose: () => {
                  (this.visible = false), this.$emit("refresh", true);
                },
              });
            });
          }
        });
      },
    },
  };
  </script>
  <style lang="scss" scoped>
5a14192c   monkeyhouyi   1
227
228
229
230
231
232
233
234
235
  .msg-box {
    .msg-title {
      text-align: center;
      font-size: 14px;
      font-weight: 700;
      line-height: 30px;
      border-bottom: #e8e8e8 1px solid;
      margin-bottom: 8px;
      color: #000;
be009217   monkeyhouyi   处理,通知公告,任务中心
236
    }
5a14192c   monkeyhouyi   1
237
238
  }
  </style>