|
|
@@ -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>
|
|
|
+
|