Browse Source

安全责任书

luojun 1 năm trước cách đây
mục cha
commit
b96bfe6f5c

+ 232 - 0
src/views/safetyBook/dialog.des.vue

@@ -0,0 +1,232 @@
+<template>
+    <div class="rule-type">
+      <DialogCom
+        :title="id ? '安全责任书存档记录详情' : '新增安全责任书存档记录'"
+        :visible.sync="isShow"
+        @close="onHide"
+        width="800px"
+      >
+        <div class="page-body">
+          <el-form
+            :model="formData"
+            :rules="formDataRules"
+            size="small"
+            ref="form"
+            label-position="right"
+            label-width="180px"
+            label-prefix=":"
+          >
+            <el-form-item prop="orgName" label="签署人所在机构:" >
+                <el-input
+              :readonly="true"
+              v-model="formData.orgName"
+              :disabled="true"
+            ></el-input>
+              <!-- <tree-select
+                v-model="formData.orgId"
+                :options="deptOptions"
+                :show-count="true"
+                :normalizer="tenantIdnormalizer"
+                :props="{ checkStrictly: true, label: 'name' }"
+                placeholder="请选择签署人所在机构"
+              /> -->
+            </el-form-item>
+            <el-form-item label="所属年度" prop="year">
+                  <el-date-picker
+                  :disabled="true"
+                    v-model="formData.year"
+                    :clearable="timeClearable"
+                    type="year"
+                    placeholder="请选择责任书所属年度"
+                    value-format="yyyy"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+            <el-form-item prop="type" label="签署责任书类型:">
+              <el-select
+              :disabled="true"
+                v-model="formData.type"
+                style="width: 100%"
+                placeholder="请选择签署责任书类型"
+              >
+                <el-option
+                  v-for="dict in dict.type.safety_book_type"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="`${dict.value}`"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-form>
+          <el-button @click="openSelect" v-if="false">上传签署文件</el-button>
+  
+          <el-table :data="tableData" style="width: 100%;margin-top: 10px;" height="500px">
+            <el-table-column prop="names" label="签署人">
+              <template slot-scope="scope">
+                <template v-for="item in scope.row.names">
+                  {{ item }}
+                  <br />
+                </template>
+              </template>
+            </el-table-column>
+            <el-table-column prop="time" label="签署时间">
+                <template slot-scope="r">
+                {{
+                  r.row.time
+                    ? dayjs(r.row.time).format("YYYY年-MM月-DD日")
+                    : ""
+                }}
+              </template> </el-table-column>
+            <el-table-column prop="files" label="签署文件">
+              <template slot-scope="r">
+              <el-image
+                style="width: 50px; height: 50px"
+                :src="r.row.files"
+                :preview-src-list="[r.row.files]"
+              ></el-image>
+            </template>
+               </el-table-column>
+  
+            <el-table-column prop="names" label="操作" v-if="false">
+              <template v-slot="{ row }">
+                <el-button type="text" @click="removeRow(row)">删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+  
+        <div slot="footer" class="dialog-footer" style="margin-top: 10px;">
+          <el-button @click="isShow = false">确定</el-button>
+          <!-- <el-button type="primary" @click="onSubmit">确定</el-button> -->
+        </div>
+     </DialogCom>
+      <DialogSelect ref="DialogSelect" @success="getSign"></DialogSelect>
+    
+    </div>
+  </template>
+  
+  <script>
+  import { mapState, mapMutations } from "vuex";
+  import {
+    listSafetyBook,
+    getSafetyBook,
+    editOrAdd,
+    delSafetyBook,
+  } from "@/api/safetyBook/index";
+  import { deptTreeSelect } from "@/api/system/public";
+  import DialogSelect from "./dialog.sign";
+  import dayjs from "dayjs";
+  export default {
+    dicts: ["safety_book_type"],
+    data() {
+      return {
+        id: null,
+        isShow: false,
+        timeClearable: true,
+        formData: this.reset(),
+        tableData: [],
+        //修改新增中的机构树
+        deptOptions: [],
+        formDataRules: {
+          orgId: [{ required: true, message: "请选择签署责任人所在机构" }],
+          type: [{ required: true, message: "请选择签署责任书类型" }],
+          year: [{ required: true, message: "请选择所属年度" }],
+        },
+      };
+    },
+  
+    watch: {},
+    computed: {
+      ...mapState([]),
+    },
+    methods: {
+      ...mapMutations([]),
+      dayjs,
+      //添加签署后回调
+      getSign(data) {
+        this.tableData.push(data);
+        // console.log(data, "ddd");
+      },
+      //新增签署
+      openSelect() {
+        this.$refs.DialogSelect.show();
+      },
+      /** 查询机构树数据 */
+      getDeptTree() {
+        deptTreeSelect().then((response) => {
+          this.deptOptions = response.data;
+        });
+      },
+      /** treeSelect组件自定义数据*/
+      tenantIdnormalizer(node, instanceId) {
+        if (node.children && !node.children.length) {
+          delete node.children;
+        }
+        return {
+          id: node.id,
+          label: node.shortName,
+          children: node.children,
+        };
+      },
+      removeRow(row) {
+        this.tableData = this.tableData.filter((item) => item !== row);
+      },
+      reset() {
+        return {
+          id: null,
+          type: null,
+          year:null,
+        };
+      },
+      async refresh(id) {
+        if(id!=null&&id!=undefined){
+          await getSafetyBook(id).then((res) => {
+            // console.log(res.data,"res")
+            this.formData=res.data;
+            this.tableData=res.data.bookUsers;
+          });
+        }
+      },
+      async show(id) {
+        // console.log(id, "id");
+        this.getDeptTree();
+        this.formData=this.reset();
+        this.tableData=[];
+        this.id = id;
+        await this.refresh(id);
+        this.isShow = true;
+      },
+  
+      // 事件
+      onHide() {
+        this.formData = this.reset();
+        this.$refs.form.resetFields();
+      },
+      onSubmit() {
+        console.log(this.formData,"this.formData")
+        this.$refs.form.validate(async (isValidate) => {
+          if (!isValidate) return;
+          this.formData.bookUsers=this.tableData;
+          await editOrAdd(this.formData);
+          this.$emit("success");
+          this.isShow = false;
+        });
+      },
+  
+      // 事件
+      //apimark//
+    },
+    mounted() {},
+    components: { DialogSelect },
+  };
+  </script>
+  
+  <style lang="scss" scoped>
+  .brand_info {
+    .el-form {
+      width: 600px;
+      padding-top: 40px;
+    }
+  }
+  </style>
+  

+ 12 - 1
src/views/safetyBook/dialog.edit.vue

@@ -62,7 +62,15 @@
               </template>
             </template>
           </el-table-column>
-          <el-table-column prop="time" label="签署时间"> </el-table-column>
+          <el-table-column prop="time" label="签署时间"> 
+            <template slot-scope="r">
+                {{
+                  r.row.time
+                    ? dayjs(r.row.time).format("YYYY年-MM月-DD日")
+                    : ""
+                }}
+              </template> 
+          </el-table-column>
           <el-table-column prop="files" label="签署文件">
             <template slot-scope="r">
             <el-image
@@ -87,6 +95,7 @@
       </div>
    </DialogCom>
     <DialogSelect ref="DialogSelect" @success="getSign"></DialogSelect>
+  
   </div>
 </template>
 
@@ -100,6 +109,7 @@ import {
 } from "@/api/safetyBook/index";
 import { deptTreeSelect } from "@/api/system/public";
 import DialogSelect from "./dialog.sign";
+import dayjs from "dayjs";
 export default {
   dicts: ["safety_book_type"],
   data() {
@@ -125,6 +135,7 @@ export default {
   },
   methods: {
     ...mapMutations([]),
+    dayjs,
     //添加签署后回调
     getSign(data) {
       this.tableData.push(data);

+ 2 - 2
src/views/safetyBook/dialog.sign.vue

@@ -37,9 +37,9 @@
             </el-date-picker>
           </el-form-item>
           <el-col :xs="24" :sm="24" :md="24" :lg="24">
-            <el-form-item label="上传责任书" prop="files">
+            <el-form-item label="上传文件" prop="files">
               <imgs-upload
-                :limit="5"
+                :limit="10"
                 v-model="formData.files"
                 :fileSize="2"
               ></imgs-upload>

+ 10 - 10
src/views/safetyBook/index.vue

@@ -149,7 +149,7 @@
               size="mini"
               type="text"
               icon="el-icon-info"
-              @click="handleInfo(scope.row)"
+              @click="handleInfo(scope.row.id)"
               v-hasPermi="['core:book:query']"
               >详情
             </el-button>
@@ -183,6 +183,7 @@
       />
     </div>
     <dialog-edit ref="editDialog" @success="getList()"></dialog-edit>
+    <DialogDes ref="DialogDes" ></DialogDes>
   </div>
 </template>
 
@@ -195,6 +196,7 @@ import {
 } from "@/api/safetyBook/index";
 import { getLabel } from "@/views/commonOption";
 import DialogEdit from "./dialog.edit";
+import DialogDes from "./dialog.des";
 import { deptTreeSelect } from "@/api/system/public";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import OrgTree from "@/components/orgTree/index.vue";
@@ -205,7 +207,7 @@ import orgTree from "@/components/orgTree";
 export default {
   dicts: ["safety_book_type"],
   name: "safetyBook",
-  components: { OrgTree, kOrgTree, KFileUpload, DialogEdit, orgTree },
+  components: { OrgTree, kOrgTree, KFileUpload, DialogEdit, orgTree,DialogDes },
   mixins: [tableList],
   data() {
     return {
@@ -270,6 +272,10 @@ export default {
     this.getList();
   },
   methods: {
+    resetQuery(){
+      this.resetForm("queryForm");
+      this.getList();
+    },
     getLabel(options, value) {
       return getLabel(options, value);
     },
@@ -344,14 +350,8 @@ export default {
     },
 
     /** 详情按钮操作 */
-    handleInfo(row) {
-      this.reset();
-      const id = row.id || this.ids;
-      getSafetyBook(id).then((response) => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "安全责任书详情";
-      });
+    handleInfo(id) {
+      this.$refs.DialogDes.show(id);
     },
     /** treeSelect组件自定义数据*/
     tenantIdnormalizer(node, instanceId) {