作者 张晓杰

合规审查

  1 +import request from '@/utils/request'
  2 +
  3 +// 查询合规审查列表
  4 +export function listComplianceReview(query) {
  5 + return request({
  6 + url: '/compliancemanagement/complianceReview/list',
  7 + method: 'get',
  8 + params: query
  9 + })
  10 +}
  11 +
  12 +// 查询合规审查详细
  13 +export function getComplianceReview(id) {
  14 + return request({
  15 + url: '/compliancemanagement/complianceReview/' + id,
  16 + method: 'get'
  17 + })
  18 +}
  19 +
  20 +// 新增合规审查
  21 +export function addComplianceReview(data) {
  22 + return request({
  23 + url: '/compliancemanagement/complianceReview',
  24 + method: 'post',
  25 + data: data
  26 + })
  27 +}
  28 +
  29 +// 修改合规审查
  30 +export function updateComplianceReview(data) {
  31 + return request({
  32 + url: '/compliancemanagement/complianceReview',
  33 + method: 'put',
  34 + data: data
  35 + })
  36 +}
  37 +
  38 +// 删除合规审查
  39 +export function delComplianceReview(id) {
  40 + return request({
  41 + url: '/compliancemanagement/complianceReview/' + id,
  42 + method: 'delete'
  43 + })
  44 +}
  45 +// 新增并启动流程【请填写功能名称】
  46 +export function addAndStart(data) {
  47 + return request({
  48 + url: '/compliancemanagement/complianceReview',
  49 + method: 'post',
  50 + data: data,
  51 + })
  52 +}
  1 +<template>
  2 + <div class="app-container">
  3 + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  4 + <el-form-item label="合同编号" prop="contractno">
  5 + <el-input
  6 + v-model="queryParams.contractno"
  7 + placeholder="请输入合同编号"
  8 + clearable
  9 + @keyup.enter.native="handleQuery"
  10 + />
  11 + </el-form-item>
  12 + <el-form-item label="合同名称" prop="contractName">
  13 + <el-input
  14 + v-model="queryParams.contractName"
  15 + placeholder="请输入合同名称"
  16 + clearable
  17 + @keyup.enter.native="handleQuery"
  18 + />
  19 + </el-form-item>
  20 + <el-form-item label="到期日期" prop="expirationDate">
  21 + <el-date-picker clearable
  22 + v-model="queryParams.expirationDate"
  23 + type="date"
  24 + value-format="yyyy-MM-dd"
  25 + placeholder="请选择到期日期">
  26 + </el-date-picker>
  27 + </el-form-item>
  28 + <el-form-item label="甲方" prop="partyA">
  29 + <el-input
  30 + v-model="queryParams.partyA"
  31 + placeholder="请输入甲方"
  32 + clearable
  33 + @keyup.enter.native="handleQuery"
  34 + />
  35 + </el-form-item>
  36 + <el-form-item label="乙方" prop="partyB">
  37 + <el-input
  38 + v-model="queryParams.partyB"
  39 + placeholder="请输入乙方"
  40 + clearable
  41 + @keyup.enter.native="handleQuery"
  42 + />
  43 + </el-form-item>
  44 + <el-form-item label="签订日期" prop="signingDate">
  45 + <el-date-picker clearable
  46 + v-model="queryParams.signingDate"
  47 + type="date"
  48 + value-format="yyyy-MM-dd"
  49 + placeholder="请选择签订日期">
  50 + </el-date-picker>
  51 + </el-form-item>
  52 + <el-form-item>
  53 + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  54 + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  55 + </el-form-item>
  56 + </el-form>
  57 +
  58 + <el-row :gutter="10" class="mb8">
  59 + <!-- <el-col :span="1.5">
  60 + <el-button
  61 + type="primary"
  62 + plain
  63 + icon="el-icon-plus"
  64 + size="mini"
  65 + @click="handleAdd"
  66 + v-hasPermi="['compliancemanagement:complianceReview:add']"
  67 + >新增</el-button>
  68 + </el-col>
  69 + <el-col :span="1.5">
  70 + <el-button
  71 + type="success"
  72 + plain
  73 + icon="el-icon-edit"
  74 + size="mini"
  75 + :disabled="single"
  76 + @click="handleUpdate"
  77 + v-hasPermi="['compliancemanagement:complianceReview:edit']"
  78 + >修改</el-button>
  79 + </el-col>-->
  80 + <el-col :span="1.5">
  81 + <el-button
  82 + type="danger"
  83 + plain
  84 + icon="el-icon-delete"
  85 + size="mini"
  86 + :disabled="multiple"
  87 + @click="handleDelete"
  88 + v-hasPermi="['compliancemanagement:complianceReview:remove']"
  89 + >删除</el-button>
  90 + </el-col>
  91 + <el-col :span="1.5">
  92 + <el-button
  93 + type="warning"
  94 + plain
  95 + icon="el-icon-download"
  96 + size="mini"
  97 + @click="handleExport"
  98 + v-hasPermi="['compliancemanagement:complianceReview:export']"
  99 + >导出</el-button>
  100 + </el-col>
  101 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  102 + </el-row>
  103 +
  104 + <el-table v-loading="loading" :data="complianceReviewList" @selection-change="handleSelectionChange">
  105 + <el-table-column type="selection" width="55" align="center" />
  106 + <el-table-column label="合同编号" align="center" prop="contractno" />
  107 + <el-table-column label="合同名称" align="center" prop="contractName" />
  108 + <el-table-column label="合同类型" align="center" prop="contractType" />
  109 + <el-table-column label="生效日期" align="center" prop="effectiveDate" width="180">
  110 + <template slot-scope="scope">
  111 + <span>{{ parseTime(scope.row.effectiveDate, '{y}-{m}-{d}') }}</span>
  112 + </template>
  113 + </el-table-column>
  114 + <el-table-column label="到期日期" align="center" prop="expirationDate" width="180">
  115 + <template slot-scope="scope">
  116 + <span>{{ parseTime(scope.row.expirationDate, '{y}-{m}-{d}') }}</span>
  117 + </template>
  118 + </el-table-column>
  119 + <el-table-column label="甲方" align="center" prop="partyA" />
  120 + <el-table-column label="乙方" align="center" prop="partyB" />
  121 + <el-table-column label="签订日期" align="center" prop="signingDate" width="180">
  122 + <template slot-scope="scope">
  123 + <span>{{ parseTime(scope.row.signingDate, '{y}-{m}-{d}') }}</span>
  124 + </template>
  125 + </el-table-column>
  126 + <el-table-column label="标的物信息" align="center" prop="subjectInformation" />
  127 + <el-table-column label="附件" align="center" prop="attachments" >
  128 + <template slot-scope="scope">
  129 + <img v-if="scope.row.attachments" src="@/assets/images/PDF.png" @click="preview(scope.row.attachments)" width="40px" height="auto" style="cursor: pointer"/>
  130 + </template>
  131 + </el-table-column>
  132 + <el-table-column label="合同状态" align="center" prop="status" />
  133 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  134 + <template slot-scope="scope">
  135 + <el-button
  136 + type="text"
  137 + size="mini"
  138 + icon="el-icon-tickets"
  139 + @click="handleFlowRecord(scope.row)"
  140 + v-hasPermi="['workflow:process:query']"
  141 + >详情</el-button
  142 + >
  143 + <el-button
  144 + type="text"
  145 + size="mini"
  146 + icon="el-icon-delete"
  147 + @click="handleDelete(scope.row)"
  148 + v-if="scope.row.finishTime"
  149 + v-hasPermi="['workflow:process:remove']"
  150 + >删除</el-button
  151 + >
  152 + <el-button
  153 + type="text"
  154 + size="mini"
  155 + icon="el-icon-circle-close"
  156 + @click="handleStop(scope.row)"
  157 + v-hasPermi="['workflow:process:cancel']"
  158 + >取消</el-button
  159 + >
  160 + <el-button
  161 + type="text"
  162 + size="mini"
  163 + icon="el-icon-refresh-right"
  164 + v-hasPermi="['workflow:process:start']"
  165 + @click="handleAgain(scope.row)"
  166 + >重新发起</el-button
  167 + >
  168 + </template>
  169 + </el-table-column>
  170 + </el-table>
  171 +
  172 + <pagination
  173 + v-show="total>0"
  174 + :total="total"
  175 + :page.sync="queryParams.pageNum"
  176 + :limit.sync="queryParams.pageSize"
  177 + @pagination="getList"
  178 + />
  179 + <el-dialog title="合同预览" :visible.sync="dialogVisibleContract" width="50%" center :before-close="handleClose">
  180 + <vue-pdf :src="pdfUrl" type="application/pdf" width="100%" height="800px" />
  181 + </el-dialog>
  182 + <!-- 添加或修改合规审查对话框 -->
  183 + <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  184 + <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  185 + <el-form-item label="合同编号" prop="contractno">
  186 + <el-input v-model="form.contractno" placeholder="请输入合同编号" />
  187 + </el-form-item>
  188 + <el-form-item label="合同名称" prop="contractName">
  189 + <el-input v-model="form.contractName" placeholder="请输入合同名称" />
  190 + </el-form-item>
  191 + <el-form-item label="生效日期" prop="effectiveDate">
  192 + <el-date-picker clearable
  193 + v-model="form.effectiveDate"
  194 + type="datetime"
  195 + value-format="yyyy-MM-dd HH:mm:ss"
  196 + placeholder="请选择生效日期">
  197 + </el-date-picker>
  198 + </el-form-item>
  199 + <el-form-item label="到期日期" prop="expirationDate">
  200 + <el-date-picker clearable
  201 + v-model="form.expirationDate"
  202 + type="datetime"
  203 + value-format="yyyy-MM-dd HH:mm:ss"
  204 + placeholder="请选择到期日期">
  205 + </el-date-picker>
  206 + </el-form-item>
  207 + <el-form-item label="甲方" prop="partyA">
  208 + <el-input v-model="form.partyA" placeholder="请输入甲方" />
  209 + </el-form-item>
  210 + <el-form-item label="甲方链接地址" prop="partyAAddress">
  211 + <el-input v-model="form.partyAAddress" placeholder="请输入甲方链接地址" />
  212 + </el-form-item>
  213 + <el-form-item label="乙方" prop="partyB">
  214 + <el-input v-model="form.partyB" placeholder="请输入乙方" />
  215 + </el-form-item>
  216 + <el-form-item label="乙方链接地址" prop="partyBAddress">
  217 + <el-input v-model="form.partyBAddress" placeholder="请输入乙方链接地址" />
  218 + </el-form-item>
  219 + <el-form-item label="签订日期" prop="signingDate">
  220 + <el-date-picker clearable
  221 + v-model="form.signingDate"
  222 + type="datetime"
  223 + value-format="yyyy-MM-dd HH:mm:ss"
  224 + placeholder="请选择签订日期">
  225 + </el-date-picker>
  226 + </el-form-item>
  227 + <el-form-item label="标的物信息" prop="subjectInformation">
  228 + <el-input v-model="form.subjectInformation" placeholder="请输入标的物信息" />
  229 + </el-form-item>
  230 + <el-form-item label="附件" prop="attachments">
  231 + <el-input v-model="form.attachments" placeholder="请输入附件" />
  232 + </el-form-item>
  233 + </el-form>
  234 + <div slot="footer" class="dialog-footer">
  235 + <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
  236 + <el-button @click="cancel">取 消</el-button>
  237 + </div>
  238 + </el-dialog>
  239 + </div>
  240 +</template>
  241 +
  242 +<script>
  243 +import { listComplianceReview, getComplianceReview, delComplianceReview, addComplianceReview, updateComplianceReview } from "@/api/compliancemanagement/compliancereview";
  244 +import VuePdf from 'vue-pdf';
  245 +export default {
  246 + name: "ComplianceReview",
  247 + components: {
  248 + VuePdf
  249 + },
  250 + data() {
  251 + return {
  252 + pdfUrl: '',
  253 + dialogVisibleContract:false,
  254 + baseUrl:process.env.VUE_APP_BASE_API+ '/',
  255 + // 按钮loading
  256 + buttonLoading: false,
  257 + // 遮罩层
  258 + loading: true,
  259 + // 选中数组
  260 + ids: [],
  261 + // 非单个禁用
  262 + single: true,
  263 + // 非多个禁用
  264 + multiple: true,
  265 + // 显示搜索条件
  266 + showSearch: true,
  267 + // 总条数
  268 + total: 0,
  269 + // 合规审查表格数据
  270 + complianceReviewList: [],
  271 + // 弹出层标题
  272 + title: "",
  273 + // 是否显示弹出层
  274 + open: false,
  275 + // 查询参数
  276 + queryParams: {
  277 + pageNum: 1,
  278 + pageSize: 10,
  279 + contractno: undefined,
  280 + contractName: undefined,
  281 + contractType: undefined,
  282 + effectiveDate: undefined,
  283 + expirationDate: undefined,
  284 + partyA: undefined,
  285 + partyAAddress: undefined,
  286 + partyB: undefined,
  287 + partyBAddress: undefined,
  288 + signingDate: undefined,
  289 + subjectInformation: undefined,
  290 + attachments: undefined,
  291 + status: undefined,
  292 + },
  293 + // 表单参数
  294 + form: {},
  295 + // 表单校验
  296 + rules: {
  297 + id: [
  298 + { required: true, message: "不能为空", trigger: "blur" }
  299 + ],
  300 + contractno: [
  301 + { required: true, message: "合同编号不能为空", trigger: "blur" }
  302 + ],
  303 + contractName: [
  304 + { required: true, message: "合同名称不能为空", trigger: "blur" }
  305 + ],
  306 + contractType: [
  307 + { required: true, message: "合同类型不能为空", trigger: "change" }
  308 + ],
  309 + effectiveDate: [
  310 + { required: true, message: "生效日期不能为空", trigger: "blur" }
  311 + ],
  312 + expirationDate: [
  313 + { required: true, message: "到期日期不能为空", trigger: "blur" }
  314 + ],
  315 + partyA: [
  316 + { required: true, message: "甲方不能为空", trigger: "blur" }
  317 + ],
  318 + partyAAddress: [
  319 + { required: true, message: "甲方链接地址不能为空", trigger: "blur" }
  320 + ],
  321 + partyB: [
  322 + { required: true, message: "乙方不能为空", trigger: "blur" }
  323 + ],
  324 + partyBAddress: [
  325 + { required: true, message: "乙方链接地址不能为空", trigger: "blur" }
  326 + ],
  327 + signingDate: [
  328 + { required: true, message: "签订日期不能为空", trigger: "blur" }
  329 + ],
  330 + subjectInformation: [
  331 + { required: true, message: "标的物信息不能为空", trigger: "blur" }
  332 + ],
  333 + attachments: [
  334 + { required: true, message: "附件不能为空", trigger: "blur" }
  335 + ],
  336 + status: [
  337 + { required: true, message: "合同状态:0已完成;1进行中;2已终止;3已解除不能为空", trigger: "change" }
  338 + ],
  339 + }
  340 + };
  341 + },
  342 + created() {
  343 + this.getList();
  344 + },
  345 + methods: {
  346 + /** 查询合规审查列表 */
  347 + getList() {
  348 + this.loading = true;
  349 + listComplianceReview(this.queryParams).then(response => {
  350 + this.complianceReviewList = response.rows;
  351 + this.total = response.total;
  352 + this.loading = false;
  353 + });
  354 + },
  355 + // 取消按钮
  356 + cancel() {
  357 + this.open = false;
  358 + this.reset();
  359 + },
  360 + //合同附件预览
  361 + preview(contract) {
  362 + this.dialogVisibleContract = true
  363 + console.log('contract:',contract)
  364 + this.pdfUrl = this.baseUrl + contract
  365 + },
  366 + handleClose() {
  367 + this.pdfUrl = ''
  368 + this.dialogVisibleContract = false
  369 + },
  370 + // 表单重置
  371 + reset() {
  372 + this.form = {
  373 + id: undefined,
  374 + contractno: undefined,
  375 + contractName: undefined,
  376 + contractType: undefined,
  377 + effectiveDate: undefined,
  378 + expirationDate: undefined,
  379 + partyA: undefined,
  380 + partyAAddress: undefined,
  381 + partyB: undefined,
  382 + partyBAddress: undefined,
  383 + signingDate: undefined,
  384 + subjectInformation: undefined,
  385 + attachments: undefined,
  386 + status: undefined,
  387 + createBy: undefined,
  388 + createTime: undefined,
  389 + updateBy: undefined,
  390 + updateTime: undefined
  391 + };
  392 + this.resetForm("form");
  393 + },
  394 + /** 搜索按钮操作 */
  395 + handleQuery() {
  396 + this.queryParams.pageNum = 1;
  397 + this.getList();
  398 + },
  399 + /** 重置按钮操作 */
  400 + resetQuery() {
  401 + this.resetForm("queryForm");
  402 + this.handleQuery();
  403 + },
  404 + // 多选框选中数据
  405 + handleSelectionChange(selection) {
  406 + this.ids = selection.map(item => item.id)
  407 + this.single = selection.length!==1
  408 + this.multiple = !selection.length
  409 + },
  410 + /** 新增按钮操作 */
  411 + handleAdd() {
  412 + this.reset();
  413 + this.open = true;
  414 + this.title = "添加合规审查";
  415 + },
  416 + /** 修改按钮操作 */
  417 + handleUpdate(row) {
  418 + this.loading = true;
  419 + this.reset();
  420 + const id = row.id || this.ids
  421 + getComplianceReview(id).then(response => {
  422 + this.loading = false;
  423 + this.form = response.data;
  424 + this.open = true;
  425 + this.title = "修改合规审查";
  426 + });
  427 + },
  428 + /** 提交按钮 */
  429 + submitForm() {
  430 + this.$refs["form"].validate(valid => {
  431 + if (valid) {
  432 + this.buttonLoading = true;
  433 + if (this.form.id != null) {
  434 + updateComplianceReview(this.form).then(response => {
  435 + this.$modal.msgSuccess("修改成功");
  436 + this.open = false;
  437 + this.getList();
  438 + }).finally(() => {
  439 + this.buttonLoading = false;
  440 + });
  441 + } else {
  442 + addComplianceReview(this.form).then(response => {
  443 + this.$modal.msgSuccess("新增成功");
  444 + this.open = false;
  445 + this.getList();
  446 + }).finally(() => {
  447 + this.buttonLoading = false;
  448 + });
  449 + }
  450 + }
  451 + });
  452 + },
  453 + /** 删除按钮操作 */
  454 + handleDelete(row) {
  455 + const ids = row.id || this.ids;
  456 + this.$modal.confirm('是否确认删除合规审查编号为"' + ids + '"的数据项?').then(() => {
  457 + this.loading = true;
  458 + return delComplianceReview(ids);
  459 + }).then(() => {
  460 + this.loading = false;
  461 + this.getList();
  462 + this.$modal.msgSuccess("删除成功");
  463 + }).catch(() => {
  464 + }).finally(() => {
  465 + this.loading = false;
  466 + });
  467 + },
  468 + /** 导出按钮操作 */
  469 + handleExport() {
  470 + this.download('compliancemanagement/complianceReview/export', {
  471 + ...this.queryParams
  472 + }, `complianceReview_${new Date().getTime()}.xlsx`)
  473 + },
  474 + /** 流程流转记录 */
  475 + handleFlowRecord(row) {
  476 + console.log(row)
  477 + this.$router.push({
  478 + path: "/workflow/process/detail/" + row.procInsId,
  479 + query: {
  480 + processed: false,
  481 + },
  482 + });
  483 + },
  484 + /** 取消流程申请 */
  485 + handleStop(row) {
  486 + const params = {
  487 + procInsId: row.procInsId,
  488 + };
  489 + stopProcess(params).then((res) => {
  490 + this.$modal.msgSuccess(res.msg);
  491 + this.getList();
  492 + });
  493 + },
  494 + handleAgain(row) {
  495 + console.log(row)
  496 + startProcess(row.procDefId,row).then((res) =>{
  497 + if(res){
  498 + this.$modal.msgSuccess("流程重启动成功");
  499 + }
  500 + })
  501 +
  502 + this.$router.push({
  503 + path: "/workflow/process/start/" + row.deployId,
  504 + query: {
  505 + definitionId: row.procDefId,
  506 + procInsId: row.procInsId,
  507 + },
  508 + });
  509 + // console.log(row);
  510 + },
  511 +
  512 + }
  513 +};
  514 +</script>
  1 +<template>
  2 + <div class="app-container">
  3 + <el-form ref="form" :model="form" :rules="rules" label-width="110px">
  4 + <el-form-item label="合同编号" prop="contractno">
  5 + <el-input v-model="form.contractno" placeholder="请输入合同编号" />
  6 + </el-form-item>
  7 + <el-form-item label="合同名称" prop="contractName">
  8 + <el-input v-model="form.contractName" placeholder="请输入合同名称" />
  9 + </el-form-item>
  10 + <el-form-item label="合同类型" prop="contractType">
  11 + <el-input v-model="form.contractType" placeholder="请输入合同名称" />
  12 + </el-form-item>
  13 + <el-form-item label="生效日期" prop="effectiveDate">
  14 + <el-date-picker clearable
  15 + v-model="form.effectiveDate"
  16 + value-format="yyyy-MM-dd"
  17 + placeholder="请选择生效日期">
  18 + </el-date-picker>
  19 + </el-form-item>
  20 + <el-form-item label="到期日期" prop="expirationDate">
  21 + <el-date-picker clearable
  22 + v-model="form.expirationDate"
  23 + value-format="yyyy-MM-dd"
  24 + placeholder="请选择到期日期">
  25 + </el-date-picker>
  26 + </el-form-item>
  27 + <el-form-item label="甲方" prop="partyA">
  28 + <el-input v-model="form.partyA" placeholder="请输入甲方" />
  29 + </el-form-item>
  30 + <el-form-item label="甲方链接地址" prop="partyAAddress">
  31 + <el-input v-model="form.partyAAddress" placeholder="请输入甲方链接地址" />
  32 + </el-form-item>
  33 + <el-form-item label="乙方" prop="partyB">
  34 + <el-input v-model="form.partyB" placeholder="请输入乙方" />
  35 + </el-form-item>
  36 + <el-form-item label="乙方链接地址" prop="partyBAddress">
  37 + <el-input v-model="form.partyBAddress" placeholder="请输入乙方链接地址" />
  38 + </el-form-item>
  39 + <el-form-item label="签订日期" prop="signingDate">
  40 + <el-date-picker clearable
  41 + v-model="form.signingDate"
  42 + value-format="yyyy-MM-dd"
  43 + placeholder="请选择签订日期">
  44 + </el-date-picker>
  45 + </el-form-item>
  46 + <el-form-item label="标的物信息" prop="subjectInformation">
  47 + <el-input v-model="form.subjectInformation" placeholder="请输入标的物信息" />
  48 + </el-form-item>
  49 + <el-form-item label="附件" prop="attachments">
  50 + <el-upload
  51 + class="upload-demo"
  52 + ref="upload"
  53 + :accept="'application/pdf'"
  54 + :before-upload="beforeUpload"
  55 + :action="this.url"
  56 + :headers="this.headers"
  57 + :on-preview="handlePreview"
  58 + :on-remove="handleRemove"
  59 + :on-change="handleChange"
  60 + :file-list="this.fileList"
  61 + :auto-upload="false"
  62 + :limit="1"
  63 + :multiple="false"
  64 + :on-success="handleSuccess"
  65 + :before-remove="beforeRemove"
  66 + :on-exceed="handleExceed"
  67 + name="files"
  68 + >
  69 + <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  70 + <el-button
  71 + style="margin-left: 10px"
  72 + size="small"
  73 + type="success"
  74 + @click="submitUpload"
  75 + >上传到服务器</el-button>
  76 + <div slot="tip" class="el-upload__tip">只能上传大小不超过5MB的PDF文件</div>
  77 + </el-upload>
  78 + </el-form-item>
  79 + </el-form>
  80 + <div slot="footer" class="dialog-footer">
  81 + <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
  82 + <el-button @click="cancel">取 消</el-button>
  83 + </div>
  84 + </div>
  85 +</template>
  86 +
  87 +<script>
  88 +import {addComplianceReview, updateComplianceReview,addAndStart } from "@/api/compliancemanagement/compliancereview";
  89 +import { getToken } from "@/utils/auth";
  90 +export default {
  91 + name: "ComplianceReviewApplication",
  92 + data() {
  93 + const validatAttachments = (rule, value, callback) => {
  94 + console.log("this.fileList", this.fileList);
  95 + if (this.fileList.length <= 0) {
  96 + callback(new Error("请上传附件!"));
  97 + } else {
  98 + callback();
  99 + }
  100 + };
  101 + return {
  102 + fileList: [],
  103 + url: process.env.VUE_APP_BASE_API + "/common/uploads",
  104 + baseUrl:process.env.VUE_APP_BASE_API+ '/',
  105 + headers: {
  106 + Authorization: "Bearer " + getToken(),
  107 + },
  108 + // 按钮loading
  109 + buttonLoading: false,
  110 + // 遮罩层
  111 + loading: true,
  112 + // 选中数组
  113 + ids: [],
  114 + // 非单个禁用
  115 + single: true,
  116 + // 非多个禁用
  117 + multiple: true,
  118 + // 显示搜索条件
  119 + showSearch: true,
  120 + // 总条数
  121 + total: 0,
  122 + // 合规审查表格数据
  123 + complianceReviewList: [],
  124 + // 弹出层标题
  125 + title: "",
  126 + // 是否显示弹出层
  127 + open: false,
  128 + // 查询参数
  129 + queryParams: {
  130 + pageNum: 1,
  131 + pageSize: 10,
  132 + contractno: undefined,
  133 + contractName: undefined,
  134 + contractType: undefined,
  135 + effectiveDate: undefined,
  136 + expirationDate: undefined,
  137 + partyA: undefined,
  138 + partyAAddress: undefined,
  139 + partyB: undefined,
  140 + partyBAddress: undefined,
  141 + signingDate: undefined,
  142 + subjectInformation: undefined,
  143 + attachments: undefined,
  144 + },
  145 + // 表单参数
  146 + form: {
  147 + contractno: undefined,
  148 + contractName: undefined,
  149 + contractType: undefined,
  150 + effectiveDate: null,
  151 + expirationDate: null,
  152 + partyA: undefined,
  153 + partyAAddress: undefined,
  154 + partyB: undefined,
  155 + partyBAddress: undefined,
  156 + signingDate: null,
  157 + subjectInformation: undefined,
  158 + attachments: undefined,
  159 + },
  160 + // 表单校验
  161 + rules: {
  162 + id: [
  163 + { required: true, message: "不能为空", trigger: "blur" }
  164 + ],
  165 + contractno: [
  166 + { required: true, message: "合同编号不能为空", trigger: "blur" }
  167 + ],
  168 + contractName: [
  169 + { required: true, message: "合同名称不能为空", trigger: "blur" }
  170 + ],
  171 + contractType: [
  172 + { required: true, message: "合同类型不能为空", trigger: "change" }
  173 + ],
  174 + effectiveDate: [
  175 + { required: true, message: "生效日期不能为空", trigger: "blur" }
  176 + ],
  177 + expirationDate: [
  178 + { required: true, message: "到期日期不能为空", trigger: "blur" }
  179 + ],
  180 + partyA: [
  181 + { required: true, message: "甲方不能为空", trigger: "blur" }
  182 + ],
  183 + partyAAddress: [
  184 + { required: true, message: "甲方链接地址不能为空", trigger: "blur" }
  185 + ],
  186 + partyB: [
  187 + { required: true, message: "乙方不能为空", trigger: "blur" }
  188 + ],
  189 + partyBAddress: [
  190 + { required: true, message: "乙方链接地址不能为空", trigger: "blur" }
  191 + ],
  192 + signingDate: [
  193 + { required: true, message: "签订日期不能为空", trigger: "blur" }
  194 + ],
  195 + subjectInformation: [
  196 + { required: true, message: "标的物信息不能为空", trigger: "blur" }
  197 + ],
  198 + attachments: [
  199 + // { required: true, message: "附件不能为空", trigger: "blur" }
  200 + { required: true, validator: validatAttachments, trigger: "blur" },
  201 + ],
  202 + }
  203 + };
  204 + },
  205 + created() {
  206 + },
  207 + methods: {
  208 + // 取消按钮
  209 + cancel() {
  210 + this.open = false;
  211 + this.reset();
  212 + },
  213 +
  214 + // 表单重置
  215 + reset() {
  216 + this.form = {
  217 + id: undefined,
  218 + contractno: undefined,
  219 + contractName: undefined,
  220 + contractType: undefined,
  221 + effectiveDate: undefined,
  222 + expirationDate: undefined,
  223 + partyA: undefined,
  224 + partyAAddress: undefined,
  225 + partyB: undefined,
  226 + partyBAddress: undefined,
  227 + signingDate: undefined,
  228 + subjectInformation: undefined,
  229 + attachments: undefined,
  230 + // status: undefined,
  231 + createBy: undefined,
  232 + createTime: undefined,
  233 + updateBy: undefined,
  234 + updateTime: undefined
  235 + };
  236 + this.resetForm("form");
  237 + },
  238 +
  239 + /** 重置按钮操作 */
  240 + resetQuery() {
  241 + this.resetForm("queryForm");
  242 + this.handleQuery();
  243 + },
  244 + submitUpload() {
  245 + this.$refs.upload.submit();
  246 + },
  247 + beforeUpload(file) {
  248 + const isPDF = file.type === 'application/pdf';
  249 + const isLt5M = file.size / 1024 / 1024 < 5;
  250 + if (!isPDF) {
  251 + this.$message.error('只能上传 PDF 文件');
  252 + return false;
  253 + }
  254 + if (!isLt5M) {
  255 + this.$message.error('上传文件大小不能超过 5MB');
  256 + return false;
  257 + }
  258 + // 如果需要其他处理,可以在这里添加
  259 + return true; // 返回 true 允许上传
  260 + },
  261 + handleChange(file, fileList) {
  262 + this.fileList = fileList;
  263 + },
  264 + handleSuccess(response, file, fileList) {
  265 + // response 是上传成功后的响应数据
  266 + // 可以从中获取文件地址或文件名
  267 + // 假设后端返回的数据结构中有一个字段 url 表示文件地址
  268 + const fileUrl = response.data.fileNames;
  269 + // 将文件地址或文件名赋值给表单的字段
  270 + this.form.templatefile =fileUrl;
  271 + },
  272 + handleRemove(file, fileList) {
  273 + this.form.templatefile=''
  274 + console.log(file, fileList);
  275 + },
  276 + handlePreview(file) {
  277 + console.log(file);
  278 + },
  279 + handleExceed(files, fileList) {
  280 + this.$message.warning(
  281 + `当前限制上传 1 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
  282 + files.length + fileList.length
  283 + } 个文件`
  284 + );
  285 + },
  286 + beforeRemove(file, fileList) {
  287 + this.fileList = fileList;
  288 + if (file && file.status==="success") {
  289 + return this.$confirm(`确定移除 ${file.name}?`);
  290 + }
  291 +
  292 + },
  293 + submitForm() {
  294 + this.$refs["form"].validate((valid) => {
  295 + // console.log(this.formData)
  296 + if (valid) {
  297 + console.log("===", this.form);
  298 + this.form.attachments = this.fileList[0].name;
  299 + // return
  300 + addAndStart(this.form).then((response) => {
  301 + this.$modal.msgSuccess("流程启动成功");
  302 + this.$router.push({
  303 + path: "/compliance/compliancemanagement/compliancereview/compliancereview",
  304 + });
  305 + });
  306 + }
  307 + });
  308 + },
  309 + /** 删除按钮操作 */
  310 + handleDelete(row) {
  311 + const ids = row.id || this.ids;
  312 + this.$modal.confirm('是否确认删除合规审查编号为"' + ids + '"的数据项?').then(() => {
  313 + this.loading = true;
  314 + return delComplianceReview(ids);
  315 + }).then(() => {
  316 + this.loading = false;
  317 + this.getList();
  318 + this.$modal.msgSuccess("删除成功");
  319 + }).catch(() => {
  320 + }).finally(() => {
  321 + this.loading = false;
  322 + });
  323 + },
  324 + /** 导出按钮操作 */
  325 + handleExport() {
  326 + this.download('compliancemanagement/complianceReview/export', {
  327 + ...this.queryParams
  328 + }, `complianceReview_${new Date().getTime()}.xlsx`)
  329 + }
  330 + }
  331 +};
  332 +</script>