Преглед изворни кода

迁移 人员选择简单组件

zhulu пре 2 година
родитељ
комит
bd2ec79ef3

+ 18 - 0
src/api/common.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+import { parseStrEmpty } from "@/utils/ruoyi";
+
+export function dictionListUser(url,method,reqParams) {
+    if(method==='post'){
+        return request({
+            url: url,
+            method: 'post',
+            data: reqParams
+          })
+    }else{
+        return request({
+            url: url,
+            method: 'get',
+            params: reqParams
+          })
+    } 
+}

+ 9 - 1
src/api/core/edu/eduTask.js

@@ -27,7 +27,7 @@ export function addEduTask(data) {
 }
 
 // 修改教育任务
-export function updateEduTask(data) {
+export function recordEduTask(data) {
   return request({
     url: '/core/eduTask',
     method: 'put',
@@ -42,3 +42,11 @@ export function delEduTask(id) {
     method: 'delete'
   })
 }
+
+// 查询详细教育任务
+// export function recordEduTask(id) {
+//   return request({
+//     url: '/core/eduTask/' + id,
+//     method: 'get'
+//   })
+// }

+ 10 - 0
src/api/system/user.js

@@ -10,6 +10,16 @@ export function listUser(query) {
   })
 }
 
+
+export function dictionListUser(query) {
+  return request({
+    url: '/system/user/dictionlist',
+    method: 'get',
+    params: query
+  })
+}
+
+
 // 查询用户详细
 export function getUser(userId) {
   return request({

+ 42 - 0
src/components/common/textarea.vue

@@ -0,0 +1,42 @@
+<template>
+  <div class="k-textarea">
+    <el-input
+      type="textarea"
+      :autosize="{minRows: 4}"
+      v-model="pv"
+      :maxlength="length"
+      :placeholder="placeholder"
+    ></el-input>
+    <div class="k-textarea__length">{{pv ? pv.length : 0}} / {{length}}</div>
+  </div>
+</template>
+<script>
+import sync from "../utils/computed.sync";
+export default {
+  data() {
+    return {};
+  },
+  computed: {
+    pv: sync("value")
+  },
+  watch: {},
+  props: {
+    value: {},
+    length: {},
+    placeholder: {}
+  },
+  methods: {},
+  mounted() {}
+};
+</script>
+<style lang="scss">
+.k-textarea {
+  position: relative;
+  &__length {
+    position: absolute;
+    bottom: 0;
+    right: 12px;
+    font-size: 12px;
+  }
+}
+</style>

+ 199 - 0
src/components/common/userselect.vue

@@ -0,0 +1,199 @@
+<template>
+  <el-select
+    class="k-select"
+    v-model="pv"
+    :placeholder="placeholder"
+    :multiple="multiple"
+    :multiple-limit="multiplelimit"
+    :clearable="clearable"
+    :disabled="disabled"
+    @change="onChange"
+    :collapse-tags="collapseTags"
+    filterable
+  >
+    <el-option
+      v-for="item in items"
+      :key="item[valueName]"
+      :label="item[labelName]"
+      :value="item[valueName]"
+    >
+      <slot :item="item"></slot>
+    </el-option>
+  </el-select>
+</template>
+
+<script>
+import sync from "../utils/computed.sync";
+import { groupBy } from "lodash";
+import { dictionListUser } from "@/api/system/user";
+
+export default {
+  data() {
+    return {
+      isOpen: false,
+      items: [],
+    };
+  },
+  computed: {
+    // pv: sync("value"),
+    groupData() {
+      return groupBy(this.items, this.group);
+    },
+  },
+  watch: {
+    url(nv) {
+      console.log("url refresh",nv)
+      this.refresh();
+    },
+    params(n, o) {
+      if (JSON.stringify(n) == JSON.stringify(o)) return;
+      console.log("params refresh",n,o)
+      this.refresh();
+    },
+    // 当数值变化后, 但是不在数据源里面, 刷新数据源
+    pv() {
+      if(!this.pv || this.pv.length==0) return;
+
+      // 判断在不在源里面的方法有问题,当清空值的时候不应该刷新
+      if (!this.contain(this.items, this.pv)) {
+        console.log("pv refresh",this.pv)
+        this.refresh();
+      }
+    },
+    // 当数据源变换后, 如果已选的数据不在数据源中, 则重置
+    items(items) {
+      if (!this.contain(items, this.pv)) {
+        console.log("items refresh",this.pv,items)
+        if(!this.pv || this.pv.length==0) return;
+        this.pv = this.multiple ? [] : null;
+        this.onChange(this.pv);
+      }      
+    },
+  },
+  props: {
+    value: {},
+    placeholder: {},
+    url: {},
+    multiple: { type: Boolean, default: false },
+    params: {},
+    labelName: {
+      default: "name",
+    },
+    valueName: {
+      default: "id",
+    },
+    group: {},
+    engineeringDefault: {
+      type: Boolean,
+      default: false,
+    },
+    multiplelimit:{
+      type:Number,
+      default:0
+    },
+    clearable:{
+      type:Boolean,
+      default:true
+    },
+    collapseTags:{
+      type:Boolean,
+      default:false,
+    },
+    disabled:{
+      type:Boolean,
+      default:false,
+    },
+    isMountedRefresh:{
+      type:Boolean,
+      default:true,
+    }
+  },
+  methods: {
+    //
+    contain(items, value) {
+      if (this.multiple) {        
+        const tv = [];
+        items.forEach((item) => {
+          if (~value.indexOf(item[this.valueName])) {
+            tv.push(item[this.valueName]);
+          }
+        });
+        return tv.length != 0;
+      }
+      // 单选
+      return (
+        this.items.filter((item) => item[this.valueName] == this.pv).length != 0
+      );
+    },
+    async refresh() {
+      dictionListUser(this.params).then(items=>{
+        // debugger
+        if(items.data && Array.isArray(items.data)){
+        items=items.data;
+      }
+      if (Array.isArray(items)) {
+        this.items = items.map((v) => {
+          if (typeof v == "string") {
+            v = {
+              [this.labelName]: v,
+              [this.valueName]: v,
+            };
+          }
+          return v;
+        });
+      } else {
+        this.items = [];
+      }
+
+      // if (this.engineeringDefault) {
+      //   this.items.forEach((value) => {          
+      //     if ((value.code == "GCFWS" || value.code == "GCSYG") && !this.pv.includes(value.id)) {
+      //       this.pv.push(value.id);
+      //     }
+      //   });
+      //   console.log(this.pv);
+      // }
+      this.$emit("data", this.items);
+      return this.items;
+      })
+
+      // let items = await this.$api[this.params ? "post" : "get"](
+      //   this.url,
+      //   this.params || {}
+      // );
+     
+    },
+
+    //
+    onChange(val, index, item) {
+      this.$forceUpdate()
+      // this.$set(this.value, 0, val);
+      console.log("onChange",val,this.value,item)
+      this.$emit("input", val);
+      this.$emit("change", val);
+      this.$emit(
+        "select",
+        this.items.filter((v) => v[this.valueName] == val)[0]
+      );
+    },
+  },
+  mounted() {
+    if(this.isMountedRefresh)
+    {
+      this.refresh();
+    }    
+  },
+};
+</script>
+
+<style lang="scss">
+.k-select {
+  .el-icon-refresh {
+    position: absolute;
+    top: 10px;
+    right: 30px;
+    cursor: pointer;
+    color: #ccc;
+  }
+}
+</style>

+ 18 - 0
src/components/utils/computed.sync.js

@@ -0,0 +1,18 @@
+ let sg = (src) => {};
+
+export default function(name, getCallback, setCallback) {
+    return {
+        get() {
+            if (getCallback) {
+                return getCallback(this[name]);
+            }
+            return this[name];
+        },
+        set(v) {
+            if (setCallback) {
+                v = setCallback(v);
+            }
+            this.$emit(name == "value" ? `input` : `update:${name}`, v);
+        }
+    };
+}

+ 30 - 0
src/components/utils/ranger.js

@@ -0,0 +1,30 @@
+export default {
+    month() {
+        let r = [];
+        for (let i = 1; i <= 12; i++) {
+            r.push({
+                label: `${i}月`,
+                value: i
+            });
+        }
+        return r;
+    },
+
+    year() {
+        let r = [];
+        let d = new Date().getFullYear();
+        for (let i = 10; i >= 0; i--) {
+            r.push({
+                label: `${d - i}年`,
+                value: d - i
+            });
+        }
+        for (let i = 0; i <= 10; i++) {
+            r.push({
+                label: `${d + i}年`,
+                value: d + i
+            });
+        }
+        return r;
+    }
+};

+ 91 - 0
src/components/utils/region.js

@@ -0,0 +1,91 @@
+const allNode = {};
+const provinceNodes = {};
+const cityNodes = {};
+const countyNodes = {};
+
+class Node {
+    constructor(id, name) {
+        this.id = id;
+        this.value = id;
+        this.name = name;
+        this.label = name;
+    }
+
+    addSub(node) {
+        this.children = this.children || [];
+        this.children.push(node);
+    }
+}
+
+//省
+for (let id in CHINA_REGION) {
+    let v = CHINA_REGION[id];
+    if (v[1] == "086") {
+        let node = new Node(id, v[0]);
+        provinceNodes[id] = node;
+        allNode[id] = node;
+        delete CHINA_REGION[id];
+    }
+}
+
+//市区
+for (let id in CHINA_REGION) {
+    let v = CHINA_REGION[id];
+    if (provinceNodes[v[1]]) {
+        let node = new Node(id, v[0]);
+        provinceNodes[v[1]].addSub(node);
+        cityNodes[id] = node;
+        allNode[id] = node;
+        delete CHINA_REGION[id];
+    }
+}
+
+//区县
+for (let id in CHINA_REGION) {
+    let v = CHINA_REGION[id];
+    if (cityNodes[v[1]]) {
+        let node = new Node(id, v[0]);
+        cityNodes[v[1]].addSub(node);
+        countyNodes[id] = node;
+        allNode[id] = node;
+        delete CHINA_REGION[id];
+    }
+}
+
+//
+export default {
+    get(id) {
+        return allNode[id];
+    },
+    /**
+     * 省市区
+     */
+    getProvincesFull() {
+        return Object.values(provinceNodes);
+    },
+    /**
+     * 省市
+     */
+    getProvincesNoCounty() {
+        let ps = Object.values(provinceNodes);
+        ps = Object.assign([], ps);
+        for (const p of ps) {
+            if (!p.children) {
+                continue;
+            }
+            for (const c of p.children) {
+                delete c.children;
+            }
+        }
+        return ps;
+    },
+    getCitysFull() {
+        return Object.values(cityNodes);
+    },
+    getCitys(provinceId) {
+        return provinceNodes[provinceId].children;
+    },
+    getCountys(cityId) {
+        return Object.values(cityNodes[cityId].children);
+    }
+};

+ 3 - 51
src/views/core/edu/task/dialog.info.vue

@@ -42,13 +42,11 @@
                         <!-- 记录人 -->
                         <el-col :span="24">
                             <el-form-item prop="recorderId" label="记录人">{{
-                                formData.recorder == null
-                                ? ""
-                                : formData.recorder.name
+                                formData.recorderName
                             }}</el-form-item>
                         </el-col>
 
-                           <!-- 培训截止时间 -->
+                           <!-- 培训开始时间 -->
                            <el-col :span="12">
                             <el-form-item prop="trainingStartDateTime" label="培训开始时间">{{
                                 formData.trainingStartDateTime
@@ -126,53 +124,7 @@
                                 </div>
                                 
                             </el-form-item>
-                        </el-col>
-                        <!-- 实到人数 -->
-                        <!-- <el-col :span="12">
-                            <el-form-item prop="actualCount" label="实到人数">{{
-                                formData.actualCount
-                            }}</el-form-item>
-                        </el-col> -->
-                        <!-- 参与人员 -->
-                        <!-- <el-col :span="12">
-                            <el-form-item prop="absenceList" label="参与人员">{{
-                                formData.absenceList
-                                    .map((v) => v.name)
-                                    .join(",")
-                            }}</el-form-item>
-                        </el-col> -->
-                        <!-- 缺席人员 -->
-                        <!-- <el-col :span="12">
-                            <el-form-item prop="absenceList" label="缺席人员">{{
-                                formData.absentList
-                                    .map((v) => v.name)
-                                    .join(",")
-                            }}</el-form-item> 
-                        </el-col>-->
-                        <!-- 总结 -->
-                        <!-- <el-col :span="12">
-                            <el-form-item prop="note" label="总结">{{
-                                formData.note
-                            }}</el-form-item>
-                        </el-col> -->
-                        <!-- 图片 -->
-                        <!-- <el-col :span="12">
-                            <el-form-item prop="imageList" label="图片">
-                                <k-multi-upload :disabled="!!id" v-model="formData.imageList" limit="4" byModule
-                                    moduleName="edu-training" v-if="isShow" />
-                            </el-form-item>
-                        </el-col> -->
-                        <!-- 文件 -->
-                        <!-- <el-col :span="12">
-                            <el-form-item prop="fileList" label="文件" :disabled="true">
-                                <div v-for="(v, i) in formData.fileList" :key="i">
-                                    <a class="downloadLink" @click="onDownload(v.url, v.name)">
-                                        {{ v.name }}
-                                    </a>
-                                </div>
-                                
-                            </el-form-item>
-                        </el-col> -->
+                        </el-col>                        
                     </el-row>
                 </el-form>
             </div>

+ 136 - 111
src/views/core/edu/task/dialog.perform.vue

@@ -1,53 +1,64 @@
 <template>
   <div class="edu-training-edit">
-    <el-dialog :title="'执行教育培训'" :visible.sync="isShow" width="960px">
+    <el-dialog :title="'培训登记'" :visible.sync="isShow" width="960px">
       <div class="page-body">
-        <el-form
-          :model="formData"
-          :rules="formDataRules"
-          size="small"
-          ref="form"
-          label-position="right"
-          label-width="120px"
-          label-prefix=":"
-        >
+        <el-form :model="formData" :rules="formDataRules" size="small" ref="form" label-position="right"
+          label-width="120px" label-prefix=":">
           <el-row>
-             <!-- 培训主题 -->
-             <el-col :span="24">
-                <el-form-item prop="title" label="培训主题">
-                    <el-input
+            <!-- 培训主题 -->
+            <el-col :span="12">
+              <el-form-item prop="title" label="培训主题">
+                <!-- <el-input
                         v-model="formData.title"
                         :maxlength="32"
                         placeholder="请输入培训主题"
                         clearable
                         readonly
                         disabled
-                    />
-                </el-form-item>
+                    /> -->
+                {{ formData.title }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="orgName" label="培训机构">
+                {{ formData.orgName }}
+              </el-form-item>
             </el-col>
-             <!-- 类型 -->
-             <el-col :span="24">
-                <el-form-item prop="type" label="类型">
-                    <k-select-constant
+            <!-- 类型 -->
+            <el-col :span="24">
+              <el-form-item prop="type" label="类型">
+                <el-select v-model="formData.type" placeholder="请选择执行机构类型" clearable>
+                  <el-option v-for="dict in dict.type.edu_type" :key="dict.value" :label="dict.label"
+                    :value="parseInt(dict.value)" />
+                </el-select>
+                <!-- <k-select-constant
                         name="EduTrainingType"
                         v-model="formData.type"
                         placeholder="请选择类型"
-                    ></k-select-constant>
-                </el-form-item>
+                    ></k-select-constant> -->
+              </el-form-item>
             </el-col>
-             <!-- 内容 -->
-             <el-col :span="24">
-                            <el-form-item prop="content" label="内容">
-                                <k-textarea
-                                    v-model="formData.content"
-                                    placeholder="请输入内容"
-                                    :length="2000"
-                                />
-                            </el-form-item>
-                        </el-col>
-           
-            <!-- 主持人 -->
+            <el-col :span="12">
+              <el-form-item v-if="formData.id" prop="dateTime" label="培训开始时间">
+                <el-date-picker v-model="formData.trainingStartDateTime" type="datetime" placeholder="选择日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item v-if="formData.id" prop="dateTime" label="培训结束时间">
+                <el-date-picker v-model="formData.trainingEndDateTime" type="datetime" placeholder="选择日期">
+                </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <!-- 内容 -->
             <el-col :span="24">
+              <el-form-item prop="content" label="内容">
+                <k-textarea v-model="formData.content" placeholder="请输入内容" :length="2000" />
+              </el-form-item>
+            </el-col>
+
+            <!-- 主持人 -->
+            <!-- <el-col :span="24">
               <el-form-item v-if="formData.id" prop="hostId" label="主持人">
                 <k-select
                   v-model="formData.hostId"
@@ -66,9 +77,9 @@
                   placeholder="请选择记录人"
                 ></k-select>
               </el-form-item>
-            </el-col>
+            </el-col> -->
             <!-- 截止日期 -->
-            <el-col :span="24">
+            <!-- <el-col :span="24">
               <el-form-item v-if="formData.id" prop="dateTime" label="培训时间">
                 <el-date-picker
                   v-model="formData.dateTime"
@@ -77,19 +88,15 @@
                 >
                 </el-date-picker>
               </el-form-item>
-            </el-col>
+            </el-col> -->
             <!-- 总结 -->
             <el-col :span="24">
               <el-form-item v-if="formData.id" prop="note" label="总结">
-                <k-textarea
-                  v-model="formData.note"
-                  placeholder="请输入总结"
-                  :length="1000"
-                />
+                <k-textarea v-model="formData.note" placeholder="请输入总结" :length="1000" />
               </el-form-item>
             </el-col>
             <!-- 应到人数 -->
-            <el-col :span="24">
+            <!-- <el-col :span="24">
               <el-form-item v-if="formData.id" prop="dueCount" label="应到人数">
                 <el-input-number
                   v-model="formData.dueCount"
@@ -97,9 +104,9 @@
                   placeholder="请输入应到人数"
                 ></el-input-number>
               </el-form-item>
-            </el-col>
+            </el-col> -->
             <!-- 实到人数 -->
-            <el-col :span="24">
+            <!-- <el-col :span="24">
               <el-form-item
                 v-if="formData.id"
                 prop="actualCount"
@@ -111,7 +118,7 @@
                   placeholder="请输入实到人数"
                 ></el-input-number>
               </el-form-item>
-            </el-col>
+            </el-col> -->
             <el-col :span="24">
               <el-form-item v-if="formData.id" label="参与人员">
                 <k-select
@@ -119,51 +126,40 @@
                   v-model="formData.absenceList"
                   url="/user/find/all"
                   :params="{ orgId: formData.orgId }"
-                  placeholder="请选择参与人员"
+                  placeholder="请选择缺席人员"
                 ></k-select>
+                <!-- <k-select :multiple="true" v-model="formData.absenceList" url="/user/find/all"
+                  :params="{ orgId: formData.orgId }" placeholder="请选择参与人员"></k-select> -->
               </el-form-item>
             </el-col>
             <el-col :span="24">
               <el-form-item v-if="formData.id" label="缺席人员">
-                <k-select
-                  :multiple="true"
-                  v-model="formData.absentList"
-                  url="/user/find/all"
-                  :params="{ orgId: formData.orgId }"
-                  placeholder="请选择缺席人员"
-                ></k-select>
+                <k-select :multiple="true" v-model="formData.absentList" url="/user/find/all"
+                  :params="{ orgId: formData.orgId }" placeholder="请选择缺席人员"></k-select>
               </el-form-item>
             </el-col>
-            <!-- 上传文件 -->
-            <el-col :span="24">
-                <el-form-item prop="fileList" label="上传文件">
-                    <k-upload-file-multiple
-                        :disabled="!!id"
-                        v-model="formData.fileList"
-                        max="4"
-                        @uploadTriggerEvent="uploadTriggerEvent"
-                        byModule
-                        moduleName="edu-traning-perform"
-                    ></k-upload-file-multiple>
-                </el-form-item>
-            </el-col>
             <el-col :span="24">
               <el-form-item prop="imageList" label="上传图片">
-                <k-multi-upload
-                  v-model="formData.imageList"
-                  limit="4"
-                  byModule
-                  moduleName="edu-training"
-                />
+                <imgUpload  type="more" :value="formData.imageList"  @input="imageListChanged"></imgUpload>
+                <!-- <k-multi-upload v-model="formData.imageList" limit="4" byModule moduleName="edu-training" /> -->
               </el-form-item>
             </el-col>
+            <!-- 上传文件 -->
+            <!-- <el-col :span="24">
+              <el-form-item prop="fileList" label="上传文件">
+                <k-upload-file-multiple :disabled="!!id" v-model="formData.fileList" max="4"
+                  @uploadTriggerEvent="uploadTriggerEvent" byModule
+                  moduleName="edu-traning-perform"></k-upload-file-multiple>
+              </el-form-item>
+            </el-col> -->
           </el-row>
         </el-form>
       </div>
 
       <div slot="footer" class="dialog-footer">
         <el-button @click="onHide">取消</el-button>
-        <el-button type="primary" @click="onSubmit">确定</el-button>
+        <el-button type="primary" @click="onSubmit">暂存</el-button>
+        <el-button type="primary" @click="onSubmit">提交</el-button>
       </div>
     </el-dialog>
   </div>
@@ -171,27 +167,33 @@
 
 <script>
 import { mapState, mapMutations } from "vuex";
-
+import { getEduTask, recordEduTask } from "@/api/core/edu/eduTask";
+import KTextarea from "@/components/common/textarea.vue";
+import KSelect from "@/components/common/userselect.vue";
+import imgUpload from "@/components/ImageUpload/index.vue";
 export default {
-  components: {},
+  components: { KTextarea,KSelect,imgUpload },
   data() {
     const params = this.$route.params;
     return {
       id: params ? params.id : null,
       isShow: false,
       formData: this.reset(),
-      formDataRules: {        
+      formDataRules: {
         type: [{ required: true, message: "请选择类型" }],
         content: [{ required: true, message: "请输入内容" }],
-        hostId: [{ required: true, message: "请输入主持人" }],
-        recorderId: [{ required: true, message: "请输入记录人" }],
-        dateTime: [{ required: true, message: "请输入培训时间" }],
+        // hostId: [{ required: true, message: "请输入主持人" }],
+        // recorderId: [{ required: true, message: "请输入记录人" }],
+
+        trainingStartDateTime: [{ required: true, message: "请输入培训时间" }],
+        trainingEndDateTime: [{ required: true, message: "请输入培训时间" }],
         note: [{ required: true, message: "请输入总结" }],
-        dueCount: [{ required: true, message: "请输入应到人数" }],
-        actualCount: [{ required: true, message: "请输入实到人数" }],
+        // dueCount: [{ required: true, message: "请输入应到人数" }],
+        // actualCount: [{ required: true, message: "请输入实到人数" }],
       },
     };
   },
+  dicts: ['edu_type', 'edu_task_status'],
   props: {},
   watch: {},
   computed: {
@@ -201,11 +203,12 @@ export default {
     ...mapMutations([]),
     reset(other = {}) {
       return {
-        hostId: null,
-        recorderId: null,
-        dateTime: null,
-        dueCount: null,
-        actualCount: null,
+        // hostId: null,
+        // recorderId: null,
+        trainingStartDateTime: new Date(),
+        trainingEndDateTime: new Date(),
+        // dueCount: null,
+        // actualCount: null,
         content: null,
         title: null,
         eduJobId: null,
@@ -218,31 +221,53 @@ export default {
       };
     },
     async refresh(id, other) {
-      this.formData = id
-        ? await this.$api.eduTraining.one(id)
-        : this.reset(other);
-      if (this.formData.imageList == null) {
-        this.formData.imageList = [];
-      }
-      if (this.formData.fileList == null) {
-        this.formData.fileList = [];
-      }
-      let alist = [];
-      if (this.formData.absenceList != null) {
-        this.formData.absenceList.forEach((element) => {
-          alist.push(element.id);
-        });
+      // this.formData = id
+      //   ? await this.$api.eduTraining.one(id)
+      //   : this.reset(other);
+
+      if (!id) {
+        this.reset(other);
+        return;
       }
-      this.formData.absenceList = alist;
-      this.formData.absentList = this.formData.absentList
-        ? this.formData.absentList.map((a) => a.id)
-        : [];
+      getEduTask(id).then(response => {
+        this.formData = response.data;
+        this.loading = false;
+        if (this.formData.imageList == null) {
+          this.formData.imageList = [];
+        }
+        if (this.formData.fileList == null) {
+          this.formData.fileList = [];
+        }
+        if (this.formData.taskUserList != null) {
+          let list1 = this.formData.taskUserList.filter((element) => {
+            element.type === 1
+          });
+          this.formData.absenceList = list1 ? list1.map((a) => a.userId)
+            : [];
+
+          let list2 = this.formData.taskUserList.filter((element) => {
+            element.type === 2
+          });
+          this.formData.absentList = list2 ? list2.map((a) => a.userId)
+            : [];
+        }
+        else {
+          this.formData.absenceList = [];
+          this.formData.absentList = [];
+        }
+      })
+
     },
     async show(id, other = {}) {
       this.id = id;
       await this.refresh(id, other);
       this.isShow = true;
     },
+    imageListChanged(list)
+    {
+      this.formData.imageList=list;
+      console.log("imageListChanged",this.formData.imageList);
+    },
 
     // 事件
     onHide() {
@@ -250,7 +275,7 @@ export default {
     },
     async onSubmit() {
       await this.$refs.form.validate();
-      console.log("onSubmit this.formData",this.formData)
+      console.log("onSubmit this.formData", this.formData)
       let due = this.formData.dueCount;
       let actual = this.formData.actualCount;
       if (actual > due) {
@@ -258,12 +283,12 @@ export default {
       } else if (!this.validatePerson()) {
         this.$message.error("参与人员与缺席人员重复,请重新选择!");
       } else {
-        await this.$api.eduTraining.executed(this.formData).then((v) => {
+        recordEduTask(this.formData).then((v) => {
           this.$emit("success", this.formData);
           this.onHide();
         });
-        this.$emit("success");
-        this.onHide();
+        // this.$emit("success");
+        // this.onHide();
       }
     },
     validatePerson() {
@@ -275,11 +300,11 @@ export default {
       }
       return true;
     },
-    uploadTriggerEvent(value) {},
+    uploadTriggerEvent(value) { },
     // 事件
     //apimark//
   },
-  mounted() {},
+  mounted() { },
 };
 </script>
 

+ 6 - 14
src/views/core/edu/task/index.vue

@@ -362,10 +362,7 @@
     </el-dialog>
 
     <dialog-info ref="infoDialog" @success="refresh(true)"></dialog-info>
-    <dialog-perform
-        ref="performDialog"
-        @success="refresh(true)"
-    ></dialog-perform>
+    <dialog-perform ref="performDialog" @success="refresh(true)"></dialog-perform>
   </div>
 </template>
 
@@ -379,7 +376,8 @@ export default {
   dicts: ['edu_task_status', 'edu_type'],
   components: {
     DialogInfo,
-    DialogInfo,OrgTree
+    DialogPerform,
+    OrgTree
   },
   data() {
     return {
@@ -519,15 +517,9 @@ export default {
         }
       });
     },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除教育任务编号为"' + ids + '"的数据项?').then(function() {
-        return delEduTask(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+    /** 培训登记按钮操作 */
+    handleRecorded(id) {
+      this.$refs["performDialog"].show(id,{});
     },
     /** 导出按钮操作 */
     handleExport() {