index.vue 10.9 KB
<template>
  <div class="app-container" style="margin-top: 20px">
      <el-form ref="form" :model="form" :rules="rules" label-width="110px">
        <el-form-item label="合同编号" prop="contractno">
          <el-input v-model="form.contractno" placeholder="请输入合同编号" />
        </el-form-item>
        <el-form-item label="合同名称" prop="contractName">
          <el-input v-model="form.contractName" placeholder="请输入合同名称" />
        </el-form-item>
          <el-form-item label="合同类型" prop="contractType">
          <el-input v-model="form.contractType" placeholder="请输入合同名称" />
        </el-form-item>
        <el-form-item label="生效日期" prop="effectiveDate">
          <el-date-picker clearable
            v-model="form.effectiveDate"
            value-format="yyyy-MM-dd"
            placeholder="请选择生效日期">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="到期日期" prop="expirationDate">
          <el-date-picker clearable
            v-model="form.expirationDate"
            value-format="yyyy-MM-dd"
            placeholder="请选择到期日期">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="甲方" prop="partyA">
          <el-input v-model="form.partyA" placeholder="请输入甲方" />
        </el-form-item>
        <el-form-item label="甲方链接地址" prop="partyAAddress">
          <el-input v-model="form.partyAAddress" placeholder="请输入甲方链接地址" />
        </el-form-item>
        <el-form-item label="乙方" prop="partyB">
          <el-input v-model="form.partyB" placeholder="请输入乙方" />
        </el-form-item>
        <el-form-item label="乙方链接地址" prop="partyBAddress">
          <el-input v-model="form.partyBAddress" placeholder="请输入乙方链接地址" />
        </el-form-item>
        <el-form-item label="签订日期" prop="signingDate">
          <el-date-picker clearable
            v-model="form.signingDate"
            value-format="yyyy-MM-dd"
            placeholder="请选择签订日期">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="标的物信息" prop="subjectInformation">
          <el-input v-model="form.subjectInformation" placeholder="请输入标的物信息" />
        </el-form-item>
        <el-form-item label="附件" prop="attachments">
          <el-upload
            class="upload-demo"
            ref="upload"
            :accept="'application/pdf'"
            :before-upload="beforeUpload"
            :action="this.url"
            :headers="this.headers"
            :on-preview="handlePreview"
            :on-remove="handleRemove"
            :on-change="handleChange"
            :file-list="this.fileList"
            :auto-upload="false"
            :limit="1"
            :multiple="false"
            :on-success="handleSuccess"
            :before-remove="beforeRemove"
            :on-exceed="handleExceed"
            name="files"
          >
            <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
            <el-button
              style="margin-left: 10px"
              size="small"
              type="success"
              @click="submitUpload"
              >上传到服务器</el-button>
            <div slot="tip" class="el-upload__tip">只能上传大小不超过5MB的PDF文件</div>
          </el-upload>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
  </div>
</template>

<script>
import {addComplianceReview, updateComplianceReview,addAndStart } from "@/api/compliancemanagement/compliancereview";
import { getToken } from "@/utils/auth";
export default {
  name: "ComplianceReviewApplication",
  data() {
     const validatAttachments = (rule, value, callback) => {
      console.log("this.fileList", this.fileList);
      if (this.fileList.length <= 0) {
        callback(new Error("请上传附件!"));
      } else {
        callback();
      }
    };
    return {
      fileList: [],
      url: process.env.VUE_APP_BASE_API + "/common/uploads",
      baseUrl:process.env.VUE_APP_BASE_API+ '/',
      headers: {
        Authorization: "Bearer " + getToken(),
      },
      // 按钮loading
      buttonLoading: false,
      // 遮罩层
      loading: true,
      // 选中数组
      ids: [],
      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 合规审查表格数据
      complianceReviewList: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        contractno: undefined,
        contractName: undefined,
        contractType: undefined,
        effectiveDate: undefined,
        expirationDate: undefined,
        partyA: undefined,
        partyAAddress: undefined,
        partyB: undefined,
        partyBAddress: undefined,
        signingDate: undefined,
        subjectInformation: undefined,
        attachments: undefined,
      },
      // 表单参数
      form: {
        contractno: undefined,
        contractName: undefined,
        contractType: undefined,
        effectiveDate: null,
        expirationDate: null,
        partyA: undefined,
        partyAAddress: undefined,
        partyB: undefined,
        partyBAddress: undefined,
        signingDate: null,
        subjectInformation: undefined,
        attachments: undefined,
      },
      // 表单校验
      rules: {
        id: [
          { required: true, message: "不能为空", trigger: "blur" }
        ],
        contractno: [
          { required: true, message: "合同编号不能为空", trigger: "blur" }
        ],
        contractName: [
          { required: true, message: "合同名称不能为空", trigger: "blur" }
        ],
        contractType: [
          { required: true, message: "合同类型不能为空", trigger: "change" }
        ],
        effectiveDate: [
          { required: true, message: "生效日期不能为空", trigger: "blur" }
        ],
        expirationDate: [
          { required: true, message: "到期日期不能为空", trigger: "blur" }
        ],
        partyA: [
          { required: true, message: "甲方不能为空", trigger: "blur" }
        ],
        partyAAddress: [
          { required: true, message: "甲方链接地址不能为空", trigger: "blur" }
        ],
        partyB: [
          { required: true, message: "乙方不能为空", trigger: "blur" }
        ],
        partyBAddress: [
          { required: true, message: "乙方链接地址不能为空", trigger: "blur" }
        ],
        signingDate: [
          { required: true, message: "签订日期不能为空", trigger: "blur" }
        ],
        subjectInformation: [
          { required: true, message: "标的物信息不能为空", trigger: "blur" }
        ],
        attachments: [
          // { required: true, message: "附件不能为空", trigger: "blur" }
          { required: true, validator: validatAttachments, trigger: "blur" },
        ],
      }
    };
  },
  created() {
  },
  methods: {
    // 取消按钮
    cancel() {
      this.open = false;
      this.reset();
    },
     
    // 表单重置
    reset() {
      this.form = {
        id: undefined,
        contractno: undefined,
        contractName: undefined,
        contractType: undefined,
        effectiveDate: undefined,
        expirationDate: undefined,
        partyA: undefined,
        partyAAddress: undefined,
        partyB: undefined,
        partyBAddress: undefined,
        signingDate: undefined,
        subjectInformation: undefined,
        attachments: undefined,
        // status: undefined,
        createBy: undefined,
        createTime: undefined,
        updateBy: undefined,
        updateTime: undefined
      };
      this.resetForm("form");
    },
  
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    submitUpload() {
      this.$refs.upload.submit();
    },
    beforeUpload(file) {
      const isPDF = file.type === 'application/pdf';
    const isLt5M = file.size / 1024 / 1024 < 5;
    if (!isPDF) {
      this.$message.error('只能上传 PDF 文件');
      return false;
    }
    if (!isLt5M) {
      this.$message.error('上传文件大小不能超过 5MB');
      return false;
    }
    // 如果需要其他处理,可以在这里添加
    return true; // 返回 true 允许上传
  },
    handleChange(file, fileList) {
      this.fileList = fileList;
    },
    handleSuccess(response, file, fileList) {
      // response 是上传成功后的响应数据
      // 可以从中获取文件地址或文件名
      // 假设后端返回的数据结构中有一个字段 url 表示文件地址
      const fileUrl = response.data.fileNames;
      // 将文件地址或文件名赋值给表单的字段
      this.form.templatefile =fileUrl;
    },
    handleRemove(file, fileList) {
      this.form.templatefile=''
      console.log(file, fileList);
    },
    handlePreview(file) {
      console.log(file);
    },
    handleExceed(files, fileList) {
      this.$message.warning(
        `当前限制上传 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
          files.length + fileList.length
        } 个文件`
      );
    },
    beforeRemove(file, fileList) {
      this.fileList = fileList;
      if (file && file.status==="success") {
      return this.$confirm(`确定移除 ${file.name}?`);
      }
      
    },
    submitForm() {
      this.$refs["form"].validate((valid) => {
        // console.log(this.formData)
        if (valid) {
          console.log("===", this.form);
          this.form.attachments = this.fileList[0].name;
          // return
          addAndStart(this.form).then((response) => {
            this.$modal.msgSuccess("流程启动成功");
            this.$router.push({
              path: "/compliance/compliancemanagement/compliancereview/compliancereview",
            });
          });
        }
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除合规审查编号为"' + ids + '"的数据项?').then(() => {
        this.loading = true;
        return delComplianceReview(ids);
      }).then(() => {
        this.loading = false;
        this.getList();
        this.$modal.msgSuccess("删除成功");
      }).catch(() => {
      }).finally(() => {
        this.loading = false;
      });
    },
    /** 导出按钮操作 */
    handleExport() {
      this.download('compliancemanagement/complianceReview/export', {
        ...this.queryParams
      }, `complianceReview_${new Date().getTime()}.xlsx`)
    }
  }
};
</script>