En route 1 年之前
父节点
当前提交
4917a29565
共有 38 个文件被更改,包括 3714 次插入101 次删除
  1. 1 0
      package.json
  2. 3 0
      src/api/api.js
  3. 1 1
      src/components/searchBoxNew.vue
  4. 2 2
      src/components/tableList.vue
  5. 252 0
      src/newApi/agreement.js
  6. 90 0
      src/utils/html_pdf.js
  7. 2 2
      src/utils/request.js
  8. 309 0
      src/views/agreement/agreementReview/index.vue
  9. 85 0
      src/views/agreement/collectionInformation/index.vue
  10. 1245 0
      src/views/agreement/components/agreeDialog.vue
  11. 78 0
      src/views/agreement/party/index.vue
  12. 402 0
      src/views/agreement/protocolManagement/index.vue
  13. 172 0
      src/views/agreement/protocolUpload/dialogImg.vue
  14. 344 0
      src/views/agreement/protocolUpload/index.vue
  15. 332 0
      src/views/agreement/terminationManagement/index.vue
  16. 300 0
      src/views/agreement/terminationOfAudit/index.vue
  17. 4 4
      src/views/financed/accountsPayable/businessCommission/index.vue
  18. 4 4
      src/views/financed/accountsPayable/commissionSettlement/index.vue
  19. 4 4
      src/views/financed/accountsPayable/institutionDivide/index.vue
  20. 4 4
      src/views/financed/accountsPayable/operationsReceivable/index.vue
  21. 6 6
      src/views/financed/accountsPayable/supplierSettlement/index.vue
  22. 2 2
      src/views/financed/components/studentDetails.vue
  23. 2 2
      src/views/financed/costSet/organ.vue
  24. 2 2
      src/views/financed/costSet/supplier.vue
  25. 11 11
      src/views/financed/orderManageList/independent/index.vue
  26. 11 11
      src/views/financed/orderManageList/operate/index.vue
  27. 6 6
      src/views/financed/subscription/acceptance.vue
  28. 4 4
      src/views/financed/subscription/index.vue
  29. 6 6
      src/views/financed/subscription/linkedOrder.vue
  30. 2 2
      src/views/integralManagement/chargeManagement/index.vue
  31. 8 8
      src/views/integralManagement/giftGoods/index.vue
  32. 2 2
      src/views/integralManagement/goodsClassification/index.vue
  33. 2 2
      src/views/integralManagement/merchantManageMent/index.vue
  34. 2 2
      src/views/integralManagement/storeManageMent/index.vue
  35. 2 2
      src/views/integralManagement/writeOff/index.vue
  36. 2 2
      src/views/orderData/orderDetail/index.vue
  37. 2 2
      src/views/systemManagement/functional/index.vue
  38. 8 8
      src/views/systemManagement/mechanism/index.vue

+ 1 - 0
package.json

@@ -55,6 +55,7 @@
     "js-cookie": "2.2.1",
     "js-md5": "^0.7.3",
     "jsencrypt": "3.0.0-rc.1",
+    "jspdf": "^2.5.1",
     "jszip": "^3.7.1",
     "nprogress": "0.2.0",
     "quill": "1.3.7",

+ 3 - 0
src/api/api.js

@@ -100,8 +100,11 @@ import acceptance from '../newApi/acceptance'//认款
 import statistics from '../newApi/statistics'//数据统计
 
 
+import agreement from "../newApi/agreement"
+
 // 导入对应模块------------------------
 export default {
+    ...agreement,
     ...statistics,
     ...acceptance,
     ...institution,

+ 1 - 1
src/components/searchBoxNew.vue

@@ -432,7 +432,7 @@
           >
           </el-date-picker>
           <div v-else-if="item.scope === 'solt'">
-            <slot :name="item.soltName"></slot>
+            <slot :name="item.slotName"></slot>
           </div>
           <el-input
             :style="item.prop === 'searchKey' ? 'width:260px;' : ''"

+ 2 - 2
src/components/tableList.vue

@@ -962,8 +962,8 @@
                 : ""
             }}
           </div>
-          <div v-else-if="item.scope === 'solt'">
-            <slot :name="item.soltName" :scope="scope"></slot>
+          <div v-else-if="item.scope === 'slot'">
+            <slot :name="item.slotName" :scope="scope"></slot>
           </div>
           <div v-else-if="item.scope === 'fill'">
             {{ scope.row[item.prop] || "--" }}

+ 252 - 0
src/newApi/agreement.js

@@ -0,0 +1,252 @@
+import request from '@/utils/request' //引入axios请求及拦截器
+export default {
+    //新增乙方协议信息
+    bsCovenantInsertYiInfo(data) {
+        return request({
+            url: '/bs/covenant/insertYiInfo',
+            method: 'post',
+            data
+        })
+    },
+    //查询甲方企业列表
+    systemCompanyGetJiaList(data) {
+        return request({
+            url: '/system/company/getJiaList',
+            method: 'get',
+            params: data
+        })
+    },
+
+    //协议取消
+    bsCovenantCancelStatus(data) {
+        return request({
+            url: '/bs/covenant/cancelStatus',
+            method: 'post',
+            data
+        })
+    },
+    //取消终止申请
+    bsCovenantCancelStopStatus(data) {
+        return request({
+            url: '/bs/covenant/cancelStopStatus',
+            method: 'post',
+            data
+        })
+    },
+    //协议上传确认生效
+    bsCovenantConfirmAssert(data) {
+        return request({
+            url: '/bs/covenant/confirmAssert',
+            method: 'post',
+            data
+        })
+    },
+    //统计协议审核待审核数量
+    bsCovenantCountNoCheckNum(data) {
+        return request({
+            url: '/bs/covenant/countNoCheckNum',
+            method: 'post',
+            data
+        })
+    },
+    //统计终止审核待审核数量
+    bsCovenantCountStopNoCheckNum(data) {
+        return request({
+            url: '/bs/covenant/countStopNoCheckNum',
+            method: 'post',
+            data
+        })
+    },
+    //统计协议上传数量
+    bsCovenantCountUploadImgNum(data) {
+        return request({
+            url: '/bs/covenant/countUploadImgNum',
+            method: 'post',
+            data
+        })
+    },
+    //导出协议pdf培训服务证书
+    bsCovenantDownload(data) {
+        return request({
+            url: '/bs/covenant/download',
+            method: 'get',
+            params: data
+        })
+    },
+    //获取审核意见列表
+    bsCovenantGetCheckInfo(data) {
+        return request({
+            url: '/bs/covenant/getCheckInfo',
+            method: 'get',
+            params: data
+        })
+    },
+    //查询协议审核列表
+    bsCovenantGetCovenantCheckList(data) {
+        return request({
+            url: '/bs/covenant/getCovenantCheckList',
+            method: 'get',
+            params: data
+        })
+    },
+    //查询甲乙方上一次收件信息
+    bsCovenantGetLastJiaInfo(data) {
+        return request({
+            url: '/bs/covenant/getLastJiaInfo',
+            method: 'get',
+            params: data
+        })
+    },
+    //查询乙方名称及地址
+    bsCovenantGetYiInfo(data) {
+        return request({
+            url: '/bs/covenant/getYiInfo',
+            method: 'get',
+            params: data
+        })
+    },
+    //查询企业协议管理列表
+    bsCovenantGetCovenantList(data) {
+        return request({
+            url: '/bs/covenant/getCovenantList',
+            method: 'get',
+            params: data
+        })
+    },
+    //生成协议编号
+    bsCovenantGetCovenantNum(data) {
+        return request({
+            url: '/bs/covenant/getCovenantNum',
+            method: 'get',
+            params: data
+        })
+    },
+    //查询协议上传列表
+    bsCovenantGetCovenantUploadList(data) {
+        return request({
+            url: '/bs/covenant/getCovenantUploadList',
+            method: 'get',
+            params: data
+        })
+    },
+    //查询终止审核列表
+    bsCovenantGetStopCheckList(data) {
+        return request({
+            url: '/bs/covenant/getStopCheckList',
+            method: 'get',
+            params: data
+        })
+    },
+    //查询终止管理协议列表
+    bsCovenantGetStopCovenantList(data) {
+        return request({
+            url: '/bs/covenant/getStopCovenantList',
+            method: 'get',
+            params: data
+        })
+    },
+    //新增协议
+    bsCovenantInsert(data) {
+        return request({
+            url: '/bs/covenant/insert',
+            method: 'post',
+            data
+        })
+    },
+    //判断当前业务类型是否有已知存在协议
+    bsCovenantJudgeBusiness(data) {
+        return request({
+            url: '/bs/covenant/judgeBusiness',
+            method: 'post',
+            data
+        })
+    },
+    //云学堂判断当前选择甲方是否存在待审核或者申请终止审核
+    bsCovenantJudgeExistYW(data) {
+        return request({
+            url: '/bs/covenant/judgeExistYW',
+            method: 'get',
+            params: data
+        })
+    },
+    //修改企业协议
+    bsCovenantUpdateById(data) {
+        return request({
+            url: '/bs/covenant/updateById',
+            method: 'post',
+            data
+        })
+    },
+    //协议审核
+    bsCovenantUpdateCheckStatus(data) {
+        return request({
+            url: '/bs/covenant/updateCheckStatus',
+            method: 'post',
+            data
+        })
+    },
+    //修改重提
+    bsCovenantUpdateCommit(data) {
+        return request({
+            url: '/bs/covenant/updateCommit',
+            method: 'post',
+            data
+        })
+    },
+    //终止审核
+    bsCovenantUpdateStopCheck(data) {
+        return request({
+            url: '/bs/covenant/updateStopCheck',
+            method: 'post',
+            data
+        })
+    },
+    //终止申请
+    bsCovenantUpdateStopStatus(data) {
+        return request({
+            url: '/bs/covenant/updateStopStatus',
+            method: 'post',
+            data
+        })
+    },
+    //协议上传
+    bsCovenantUploadImg(data) {
+        return request({
+            url: '/bs/covenant/uploadImg',
+            method: 'post',
+            data
+        })
+    },
+    //获取企业协议详细信息
+    bsCovenantId(data) {
+        return request({
+            url: `/bs/covenant/` + data,
+            method: 'get',
+        })
+    },
+    
+    //查询收款信息
+    systemTenantGetAccount(data) {
+        return request({
+            url: '/system/tenant/getAccount',
+            method: 'post',
+            data
+        })
+    },
+    //新增,修改收款信息
+    systemTenantInsertOrUpdate(data) {
+        return request({
+            url: '/system/tenant/insertOrUpdate',
+            method: 'post',
+            data
+        })
+    },
+    //复制新增
+    bsCovenantCopyAndInsert(data) {
+        return request({
+            url: '/bs/covenant/copyAndInsert',
+            method: 'post',
+            data
+        })
+    },
+}

+ 90 - 0
src/utils/html_pdf.js

@@ -0,0 +1,90 @@
+// 页面导出为pdf格式 //title表示为下载的标题,html表示document.querySelector('#myPrintHtml')
+import html2Canvas from 'html2canvas';
+import JsPDF from 'jspdf';
+var noTableHeight = 0; //table外的元素高度
+function htmlPdf(title, html, lableList, type) {// type传有效值pdf则为横版
+    if (lableList) {
+        const pageHeight = Math.floor(277 * html.scrollWidth / 190) + 20; //计算pdf高度
+        for (let i = 0; i < lableList.length; i++) { //循环获取的元素
+            const multiple = Math.ceil((lableList[i].offsetTop + lableList[i].offsetHeight) / pageHeight); //元素的高度
+            if (isSplit(lableList, i, multiple * pageHeight)) { //计算是否超出一页
+                var _H = '' //向pdf插入空白块的内容高度
+                if (lableList[i].localName !== 'tr') { //判断是不是表格里的内容
+                    _H = multiple * pageHeight - (lableList[i].offsetTop + lableList[i].offsetHeight);
+                } else {
+                    _H = multiple * pageHeight - (lableList[i].offsetTop + lableList[i].offsetHeight + noTableHeight) + 20;
+                }
+                var newNode = getFooterElement(_H);  //向pdf插入空白块的内容
+                const divParent = lableList[i].parentNode; // 获取该div的父节点
+                const next = lableList[i].nextSibling; // 获取div的下一个兄弟节点
+                // 判断兄弟节点是否存在
+                if (next) {
+                    // 存在则将新节点插入到div的下一个兄弟节点之前,即div之后
+                    divParent.insertBefore(newNode, next);
+                } else {
+                    // 否则向节点添加最后一个子节点
+                    divParent.appendChild(newNode);
+                }
+            }
+        }
+    }
+    html2Canvas(html, {
+        allowTaint: false,
+        taintTest: false,
+        logging: false,
+        useCORS: true,
+        dpi: window.devicePixelRatio * 1,
+        scale: 1 // 按比例增加分辨率
+    }).then(canvas => {
+        var pdf = new JsPDF('p', 'mm', 'a4'); // A4纸,纵向
+        var ctx = canvas.getContext('2d');
+        var a4w = type ? 277 : 190; var a4h = type ? 190 : 277; // A4大小,210mm x 297mm,四边各保留10mm的边距,显示区域190x277
+        var imgHeight = Math.floor(a4h * canvas.width / a4w); // 按A4显示比例换算一页图像的像素高度
+        var renderedHeight = 0;
+        while (renderedHeight < canvas.height) {
+            var page = document.createElement('canvas');
+            page.width = canvas.width;
+            page.height = Math.min(imgHeight, canvas.height - renderedHeight);// 可能内容不足一页
+
+            // 用getImageData剪裁指定区域,并画到前面创建的canvas对象中
+            page.getContext('2d').putImageData(ctx.getImageData(0, renderedHeight, canvas.width, Math.min(imgHeight, canvas.height - renderedHeight)), 0, 0);
+            pdf.addImage(page.toDataURL('image/jpeg', 1.0), 'JPEG', 10, 10, a4w, Math.min(a4h, a4w * page.height / page.width)); // 添加图像到页面,保留10mm边距
+
+            renderedHeight += imgHeight;
+            if (renderedHeight < canvas.height) {
+                pdf.addPage();// 如果后面还有内容,添加一个空页
+            }
+            // delete page;
+        }
+        // 保存文件
+        pdf.save(title + '.pdf');
+    });
+}
+// pdf截断需要一个空白位置来补充
+function getFooterElement(remainingHeight, fillingHeight = 0) {
+    const newNode = document.createElement('div');
+    newNode.style.background = '#ffffff';
+    newNode.style.width = 'calc(100% + 8px)';
+    newNode.style.marginLeft = '-4px';
+    newNode.style.marginBottom = '0px';
+    newNode.classList.add('divRemove');
+    newNode.style.height = (remainingHeight + fillingHeight) + 'px';
+    return newNode;
+}
+function isSplit(nodes, index, pageHeight) {
+    // 判断是不是tr 如果不是高度存起来
+    // 表格里的内容要特殊处理
+    // tr.offsetTop 是tr到table表格的高度
+    // 所以计算高速时候要把表格外的高度加起来
+    // 生成的pdf没有表格了这里可以不做处理 直接计算就行
+    if (nodes[index].localName !== 'tr') {  //判断元素是不是tr
+        noTableHeight += nodes[index].clientHeight
+    }
+
+    if (nodes[index].localName !== 'tr') {
+        return nodes[index].offsetTop + nodes[index].offsetHeight < pageHeight && nodes[index + 1] && nodes[index + 1].offsetTop + nodes[index + 1].offsetHeight > pageHeight;
+    } else {
+        return nodes[index].offsetTop + nodes[index].offsetHeight + noTableHeight < pageHeight && nodes[index + 1] && nodes[index + 1].offsetTop + nodes[index + 1].offsetHeight + noTableHeight > pageHeight;
+    }
+}
+export default htmlPdf;

+ 2 - 2
src/utils/request.js

@@ -7,9 +7,9 @@ import { paramMate } from "@/utils/common";
 
 axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
 // 创建axios实例
-export const baseURL = process.env.VUE_APP_BASE_API
+// export const baseURL = process.env.VUE_APP_BASE_API
 // export const baseURL = 'https://ptapi.gdzzkj.net/'
-// export const baseURL = "http://192.168.1.7:7077/";
+export const baseURL = "http://192.168.1.24:7077/";
 // export const baseURL = "http://192.168.1.123:7077/";
 
 export const BASE_IMG_URL = process.env.VUE_APP_IMG_API;

+ 309 - 0
src/views/agreement/agreementReview/index.vue

@@ -0,0 +1,309 @@
+<template>
+  <div id="withdrawal">
+    <search-box-new
+      :remarkStatus="true"
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="init"
+    />
+    <picture-list
+      ref="pictureList"
+      :info="info"
+      :list="showTabList"
+      @backFunc="pictureFunc"
+    ></picture-list>
+    <table-list
+      ref="tableList"
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      :loading="loading"
+    >
+      <template slot="1" slot-scope="props">
+        <p>协议编号:{{ props.scope.row.covenantNum }}</p>
+        <p>业务员:{{ props.scope.row.saleName || '--' }}</p>
+        <p>业务号:{{ props.scope.row.saleNum || '--' }}</p>
+        <p>
+          申请时间:{{ $methodsTools.onlyForma(props.scope.row.startTime) }}
+        </p>
+        <p>
+          协议时效:{{
+            $methodsTools.onlyForma(props.scope.row.startTime, false) +
+            " - " +
+            $methodsTools.onlyForma(props.scope.row.endTime, false)
+          }}
+        </p>
+        <p>审核状态:{{ getStatus(props.scope.row.status) }}</p></template
+      >
+      <template slot="2" slot-scope="props">
+        <p>甲方:{{ props.scope.row.jiaCompanyName }}</p>
+        <p>地址:{{ props.scope.row.jiaCompanyAddress }}</p>
+        <p>联系人:{{ props.scope.row.jiaCompanyContract }}</p>
+        <p>电话:{{ props.scope.row.jiaCompanyPhone }}</p></template
+      ><template slot="3" slot-scope="props">
+        <p>乙方:{{ props.scope.row.yiCompanyName }}</p>
+        <p>地址:{{ props.scope.row.yiCompanyAddress }}</p>
+        <p>联系人:{{ props.scope.row.yiCompanyContract }}</p>
+        <p>电话:{{ props.scope.row.yiCompanyPhone }}</p></template
+      ><template slot="4" slot-scope="props">
+        <li
+          v-for="(item, index) in relectArray(
+            props.scope.row.bsCovenantBusinessVos
+          )"
+          :key="index"
+        >
+          {{ item }}
+        </li></template
+      ><template slot="5" slot-scope="props">
+        <p>周期(月):{{ props.scope.row.settlementCycle }}</p>
+        <p>金额:¥{{ props.scope.row.limitAmount | formatPrice }}</p></template
+      ><template slot="btn" slot-scope="props"
+        ><el-button type="text" @click="XY(3, 3, props.scope.row)"
+          >协议详情</el-button
+        >
+        <el-button
+          type="text"
+          :disabled="props.scope.row.status !== 1"
+          @click="XY(props.scope.row.formApp === 2 ? 2 : 3, 4, props.scope.row)"
+          >协议审核</el-button
+        >
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+    <agreeDialog ref="agreeDialog" @search="search(2)"></agreeDialog>
+  </div>
+</template>
+    
+    <script>
+import agreeDialog from "../components/agreeDialog";
+import { formatPrice } from "@/directive/filter";
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+import pictureList from "@/components/Comon/pictureList.vue";
+export default {
+  name: "",
+  components: {
+    agreeDialog,
+    searchBoxNew,
+    tableList,
+    pagination,
+    pictureList,
+  },
+  data() {
+    return {
+      disabledBtn: false,
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "协议审核",
+        index: 0,
+        ch: "条",
+        num: true,
+        choice: false,
+        addHide: true,
+        openCheckMore: true,
+        changeWidth: "160px",
+        backFatherBtn: {
+          status: false,
+          title: "配置下单填选模板",
+        },
+      },
+      info: {},
+      showTabList: [
+        {
+          label: "待审核",
+          img: "PendingRefund",
+          prop: "unRefundNum",
+          num: true,
+          color: "#ff7a38",
+          hover: false,
+        },
+      ],
+      //搜索
+      formList: [
+        {
+          prop: "status",
+          placeholder: "审核状态",
+          scope: "select",
+          noClear: false,
+          options: [
+            { label: "待审核", value: 1 },
+            { label: "已通过", value: 2 },
+            { label: "不通过", value: 4 },
+          ],
+        },
+        {
+          lable: "",
+          prop: "searchKey",
+          placeholder: "输入协议编号/甲方姓名/业务员/业务号",
+        },
+      ],
+      formData: {
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "协议记录",
+          hidden: true,
+          scope: "slot",
+          slotName: "1",
+          dontCenter: true,
+        },
+        {
+          label: "甲方信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "2",
+          dontCenter: true,
+        },
+        {
+          label: "乙方信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "3",
+          dontCenter: true,
+        },
+        {
+          label: "协议项目(教育类型/业务层次/商品名称/单价/上限数量)",
+          hidden: true,
+          scope: "slot",
+          slotName: "4",
+          dontCenter: true,
+        },
+        {
+          label: "结算信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "5",
+          dontCenter: true,
+        },
+        {
+          label: "审核意见",
+          prop: "cwSn",
+          hidden: true,
+        },
+      ],
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    getStatus(i) {
+      let str = "";
+      switch (i) {
+        case 1:
+          str = "待审核";
+          break;
+        case 2:
+          str = "已审核";
+          break;
+        case 3:
+          str = "已取消";
+          break;
+        case 4:
+          str = "不通过";
+          break;
+        case 5:
+          str = "已生效";
+          break;
+        case 6:
+          str = "已过期";
+          break;
+        case 7:
+          str = "已终止";
+          break;
+
+        default:
+          break;
+      }
+      return str;
+    },
+    relectArray(array) {
+      if (array && array.length > 0) {
+        let ary = [];
+        array.forEach((i) => {
+          let a = i.bsCovenantGoodsVos.map((k) => {
+            return `${i.educationTypeName}/${i.businessName + i.projectName}/${
+              k.goodsName
+            }/¥${formatPrice(k.covenantPrice)}/${
+              k.limitStatus == 1 ? "不限" : k.limitNum
+            }`;
+          });
+          ary.push(...a);
+        });
+        if (ary.length > 5) {
+          ary = ary.splice(0, 5);
+          ary.push("等5项");
+        }
+        return ary || [];
+      } else {
+        return [];
+      }
+    },
+    XY(index, type, item = {}) {
+      let data = JSON.parse(JSON.stringify(item));
+      this.$refs.agreeDialog.openBoxs(index, type, data);
+    },
+    pictureFunc(item) {
+      // if (item.prop == "unRefundNum") {
+      //   this.formData = {
+      //     pageSize: 10,
+      //     pageNum: 1,
+      //     payStatus: "",
+      //     refundStatus: 0,
+      //   };
+      //   this.search();
+      // }
+    },
+    search(v) {
+      this.loading = true;
+      if (v === 2) {
+        this.formData = {
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      this.$api
+        .bsCovenantGetCovenantCheckList(data)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    init() {
+      this.search(2);
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+  },
+};
+</script>
+    
+    <style lang="scss" scoped>
+</style>
+    

+ 85 - 0
src/views/agreement/collectionInformation/index.vue

@@ -0,0 +1,85 @@
+<template>
+  <div id="">
+    <el-form
+      :model="ruleForm"
+      :rules="rules"
+      ref="ruleForm"
+      label-width="100px"
+      class="demo-ruleForm"
+    >
+      <el-form-item label="收款账户名" prop="openingName">
+        <el-input v-model="ruleForm.openingName"></el-input>
+      </el-form-item>
+      <el-form-item label="收款账号" prop="proceedsAccount">
+        <el-input v-model="ruleForm.proceedsAccount"></el-input>
+      </el-form-item>
+      <el-form-item label="开户银行" prop="openingBank">
+        <el-input v-model="ruleForm.openingBank"></el-input>
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-radio-group v-model="ruleForm.status">
+          <el-radio :label="1">开启</el-radio>
+          <el-radio :label="2">关闭</el-radio>
+        </el-radio-group></el-form-item
+      ><el-form-item>
+        <el-button type="primary" @click="submitForm('ruleForm')"
+          >保存</el-button
+        >
+      </el-form-item></el-form
+    >
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      ruleForm: {
+        openingName: "",
+        proceedsAccount: "",
+        openingBank: "",
+        status: "",
+      },
+      rules: {
+        openingName: [
+          { required: true, message: "请输入收款账户名", trigger: "blur" },
+        ],
+        proceedsAccount: [
+          { required: true, message: "请输入收款账号", trigger: "blur" },
+        ],
+        openingBank: [
+          { required: true, message: "请输入开户银行", trigger: "blur" },
+        ],
+        status: [{ required: true, message: "请选择状态", trigger: "change" }],
+      },
+    };
+  },
+  mounted() {
+    this.getData();
+  },
+  methods: {
+    getData() {
+      this.$api.systemTenantGetAccount().then((res) => {
+        this.ruleForm = res.data || {};
+      });
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          this.$api
+            .systemTenantInsertOrUpdate(this.ruleForm)
+            .then((res) => {
+              this.getData();
+            });
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 1245 - 0
src/views/agreement/components/agreeDialog.vue

@@ -0,0 +1,1245 @@
+<template>
+  <div>
+    <BaseDialog
+      width="970px"
+      :isShow.sync="isShow"
+      :title="
+        type === 1
+          ? '新增'
+          : type === 2
+          ? '修改'
+          : type === 3
+          ? '详情'
+          : type === 4
+          ? '协议审核'
+          : '终止审核'
+      "
+      @close="close"
+      @submit="submit"
+      :isShowFooter="false"
+    >
+      <el-main :loading="loading">
+        <template v-if="activeIndex === 1">
+          <search-box-new
+            :remarkStatus="true"
+            ref="searchBox"
+            :formData="firstPartyFormData"
+            :formList="firstPartyFormList"
+            @search="firstPartySearch"
+            @init="firstPartySearch(2)"
+          />
+          <el-table
+            :data="firstPartyTableData"
+            border
+            style="width: 100%"
+            class="table_1"
+          >
+            <el-table-column align="center" type="selection" width="55">
+              <template slot-scope="scope">
+                <el-radio
+                  style="margin-left: 10px"
+                  v-model="tableRadio"
+                  :label="scope.row['companyId']"
+                  >{{ "" }}</el-radio
+                >
+              </template>
+            </el-table-column>
+            <el-table-column
+              prop="companyName"
+              label="企业名称"
+              width="180"
+              align="center"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="companyAddress"
+              label="地址"
+              width="180"
+              align="center"
+            >
+            </el-table-column>
+            <el-table-column
+              prop="companyContacts"
+              label="联系人"
+              align="center"
+            >
+            </el-table-column>
+            <el-table-column prop="contactPhone" label="电话" align="center">
+            </el-table-column>
+          </el-table>
+          <pagination
+            :total="firstPartyTotal"
+            :pageSize="firstPartyFormData.pageSize"
+            :currentPage="firstPartyFormData.pageNum"
+            @handleSizeChange="handleSizeChange"
+            @handleCurrentChange="handleCurrentChange"
+          />
+        </template>
+        <template v-else-if="activeIndex === 2">
+          <el-form
+            :inline="true"
+            :model="ruleForm"
+            :rules="rules"
+            ref="ruleForm"
+            label-width="140px"
+            class="demo-ruleForm"
+          >
+            <h4>甲方信息</h4>
+            <el-form-item label="甲方名称:" prop="jiaCompanyName">
+              <el-input
+                disabled
+                v-model="ruleForm.jiaCompanyName"
+              ></el-input> </el-form-item
+            ><el-form-item label="甲方联系人:" prop="jiaCompanyContract">
+              <el-input
+                :disabled="type !== 1 || type !== 2"
+                v-model="ruleForm.jiaCompanyContract"
+              ></el-input> </el-form-item
+            ><el-form-item label="甲方地址:" prop="jiaCompanyAddress">
+              <el-input
+                :disabled="type !== 1 || type !== 2"
+                v-model="ruleForm.jiaCompanyAddress"
+              ></el-input> </el-form-item
+            ><el-form-item label="甲方电话:" prop="jiaCompanyPhone">
+              <el-input
+                :disabled="type !== 1 || type !== 2"
+                v-model="ruleForm.jiaCompanyPhone"
+              ></el-input>
+            </el-form-item>
+            <h4>甲方收件</h4>
+            <el-form-item label="收件人:" prop="jiaRecipients">
+              <el-input
+                :disabled="type !== 1 || type !== 2"
+                v-model="ruleForm.jiaRecipients"
+              ></el-input> </el-form-item
+            ><el-form-item label="收件电话:" prop="jiaRecipientsPhone">
+              <el-input
+                :disabled="type !== 1 || type !== 2"
+                v-model="ruleForm.jiaRecipientsPhone"
+              ></el-input> </el-form-item
+            ><el-form-item label="收件地址:" prop="jiaRecipientsAddress">
+              <el-input
+                :disabled="type !== 1 || type !== 2"
+                v-model="ruleForm.jiaRecipientsAddress"
+              ></el-input> </el-form-item
+            ><el-form-item label="备注:" prop="jiaRecipientsRemark">
+              <el-input
+                :disabled="type !== 1 || type !== 2"
+                v-model="ruleForm.jiaRecipientsRemark"
+              ></el-input>
+            </el-form-item>
+            <h4>乙方信息</h4>
+            <el-form-item label="乙方名称:" prop="yiCompanyName">
+              <el-input
+                disabled
+                v-model="ruleForm.yiCompanyName"
+              ></el-input> </el-form-item
+            ><el-form-item label="乙方联系人:" prop="yiCompanyContract">
+              <el-input
+                v-model="ruleForm.yiCompanyContract"
+              ></el-input> </el-form-item
+            ><el-form-item label="乙方地址:" prop="yiCompanyAddress">
+              <el-input
+                disabled
+                v-model="ruleForm.yiCompanyAddress"
+              ></el-input> </el-form-item
+            ><el-form-item label="乙方电话:" prop="yiCompanyPhone">
+              <el-input v-model="ruleForm.yiCompanyPhone"></el-input>
+            </el-form-item>
+            <h4>乙方收件</h4>
+            <el-form-item label="收件人:" prop="yiRecipients">
+              <el-input
+                v-model="ruleForm.yiRecipients"
+              ></el-input> </el-form-item
+            ><el-form-item label="收件电话:" prop="yiRecipientsPhone">
+              <el-input
+                v-model="ruleForm.yiRecipientsPhone"
+              ></el-input> </el-form-item
+            ><el-form-item label="收件地址:" prop="yiRecipientsAddress">
+              <el-input
+                v-model="ruleForm.yiRecipientsAddress"
+              ></el-input> </el-form-item
+            ><el-form-item label="备注:" prop="yiRecipientsRemark">
+              <el-input v-model="ruleForm.yiRecipientsRemark"></el-input>
+            </el-form-item>
+            <h4>协议信息</h4>
+            <el-form-item label="协议编号:" prop="covenantNum">
+              <el-input disabled v-model="ruleForm.covenantNum"></el-input>
+            </el-form-item>
+            <br />
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="协议开始时间:" prop="startTime">
+                  <el-date-picker
+                    v-model="ruleForm.startTime"
+                    format="yyyy 年 MM 月 dd 日"
+                    value-format="timestamp"
+                    type="date"
+                    placeholder="选择日期"
+                  >
+                  </el-date-picker></el-form-item
+              ></el-col>
+              <el-col :span="12">
+                <el-form-item label="协议结束时间:" prop="endTime">
+                  <el-date-picker
+                    v-model="ruleForm.endTime"
+                    format="yyyy 年 MM 月 dd 日"
+                    value-format="timestamp"
+                    type="date"
+                    placeholder="选择日期"
+                  >
+                  </el-date-picker> </el-form-item
+              ></el-col>
+              <el-col :span="12">
+                <el-form-item label="结算周期(月):" prop="settlementCycle">
+                  <el-input-number
+                    v-model="ruleForm.settlementCycle"
+                    :min="0"
+                    :precision="0"
+                    :controls="false"
+                  ></el-input-number>
+                  <el-checkbox
+                    v-model="ruleForm.cycleStatus"
+                    :true-label="1"
+                    :false-label="0"
+                    >协议显示</el-checkbox
+                  >
+                </el-form-item></el-col
+              >
+              <el-col :span="12">
+                <el-form-item label="结算上限金额:" prop="limitAmount">
+                  <el-input-number
+                    v-model="ruleForm.limitAmount"
+                    :min="0"
+                    :precision="2"
+                    :controls="false"
+                  ></el-input-number>
+                  <el-checkbox
+                    v-model="ruleForm.amountStatus"
+                    :true-label="1"
+                    :false-label="0"
+                    >协议显示</el-checkbox
+                  >
+                </el-form-item></el-col
+              >
+            </el-row>
+          </el-form>
+          <h4>协议项目</h4>
+          <div
+            style="margin-bottom: 14px"
+            v-for="(item, index) in ruleForm.bsCovenantBusinessVos"
+            :key="index"
+          >
+            <div class="eb_sty">
+              <el-select
+                :disabled="type !== 1 && type !== 2"
+                v-model="item.educationTypeId"
+                placeholder="请选择教育类型"
+                @change="
+                  item.businessId = '';
+                  item.bsCovenantGoodsVos = [];
+                "
+                style="margin-right: 14px"
+              >
+                <el-option
+                  v-for="(items, indexs) in educationType"
+                  :key="indexs"
+                  :label="items.educationName"
+                  :value="items.id"
+                >
+                </el-option>
+              </el-select>
+              <el-select
+                :disabled="
+                  !item.educationTypeId || (type !== 1 && type !== 2)
+                    ? true
+                    : false
+                "
+                v-model="item.businessId"
+                placeholder="请选择业务层次"
+                style="margin-right: 14px"
+                @change="getApiGoods($event, index)"
+              >
+                <el-option
+                  v-for="(items, indexs) in getCbus(item.educationTypeId)"
+                  :key="indexs"
+                  :label="items.businessName"
+                  :value="items.id"
+                >
+                </el-option>
+              </el-select>
+              <el-input-number
+                v-if="item.businessId"
+                style="width: 120px"
+                v-model="item.PlCovenantPrice"
+                :min="0"
+                :precision="2"
+                :controls="false"
+                @blur="plEditPrice(item, index)"
+              ></el-input-number>
+              <el-button
+                v-if="
+                  ruleForm.bsCovenantBusinessVos &&
+                  ruleForm.bsCovenantBusinessVos.length > 0 &&
+                  (type === 1 || type === 2)
+                "
+                @click="delGoodsList(index)"
+                >删除</el-button
+              >
+              <el-button
+                v-if="item.businessId"
+                type="text"
+                @click="item.hideStatus = !item.hideStatus"
+                >{{ !item.hideStatus ? "收起课程" : "展开课程" }}</el-button
+              >
+            </div>
+            <el-table
+              v-show="!item.hideStatus"
+              :ref="`table_${index}`"
+              :data="item.bsCovenantGoodsVos"
+              border
+              style="width: 100%"
+            >
+              <el-table-column align="center" type="selection" width="55">
+              </el-table-column>
+              <el-table-column align="center" type="index" width="50">
+              </el-table-column>
+              <el-table-column
+                prop="majorName"
+                label="专业"
+                width="120"
+                align="center"
+              >
+              </el-table-column>
+              <el-table-column
+                prop="goodsName"
+                label="商品名称"
+                width="120"
+                align="center"
+              >
+              </el-table-column>
+              <el-table-column label="单价" width="120" align="center"
+                ><template slot-scope="scope">
+                  {{ scope.row["standPrice"] }}
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="covenantPrice"
+                label="协议单价"
+                width="180"
+                align="center"
+                ><template slot-scope="scope">
+                  <el-input-number
+                    style="width: 110px"
+                    v-model="scope.row['covenantPrice']"
+                    :min="0"
+                    :precision="2"
+                    :controls="false"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+              <el-table-column label="上限数量" align="center"
+                ><template slot-scope="scope">
+                  <el-checkbox
+                    v-model="scope.row['limitStatus']"
+                    :true-label="1"
+                    :false-label="0"
+                    style="margin-right: 10px"
+                    @change="scope.row['limitNum'] = ''"
+                    >不限</el-checkbox
+                  >
+                  <el-input-number
+                    :disabled="scope.row['limitStatus'] == 1 ? true : false"
+                    style="width: 110px"
+                    v-model="scope.row['limitNum']"
+                    :min="0"
+                    :precision="0"
+                    :controls="false"
+                  ></el-input-number>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+          <el-button
+            type="primary"
+            @click="addXYXM"
+            v-if="type === 1 || type === 2"
+            >继续添加</el-button
+          >
+        </template>
+        <template v-else-if="activeIndex === 3">
+          <div ref="pdf" id="pdf" class="pdf">
+            <h2 style="text-align: center" class="fth">培训服务协议</h2>
+            <h2 style="text-align: end" class="fth">
+              协议编号:{{ ruleForm.covenantNum }}
+            </h2>
+            <p>甲方:{{ ruleForm.jiaCompanyName }}</p>
+            <p>地址:{{ ruleForm.jiaCompanyAddress }}</p>
+            <p>联系人:{{ ruleForm.jiaCompanyContract }}</p>
+            <p>电话:{{ ruleForm.jiaCompanyPhone }}</p>
+            <br />
+            <p>乙方:{{ ruleForm.yiCompanyName }}</p>
+            <p>地址:{{ ruleForm.yiCompanyAddress }}</p>
+            <p>联系人:{{ ruleForm.yiCompanyContract }}</p>
+            <p>电话:{{ ruleForm.yiCompanyPhone }}</p>
+            <br />
+            <p>
+              甲乙双方依据《中华人民共和国民法典》及相关规定,本着诚实信用、互惠互利之原则,协商一致,签订本协议。
+            </p>
+            <br />
+            <h3>一、甲方的权利与义务</h3>
+            <p>
+              1、甲方可在协议条款约束下,自主开通协议约定的培训课程并安排人员进行学习,享有协议约定的结算价款及账期利益。
+            </p>
+            <p>2、甲方应按协议约定及时、足额支付价款;</p>
+            <p>
+              3、甲方应遵守知识产权保护有关规范,不得在服务过程中侵犯乙方知识产权相关权益。
+            </p>
+            <p>
+              4、甲方应根据培训课程的要求,提供参加培训人员的必要个人信息,并保证该些信息的真实性,且信息的提供已获得参加培训人员本人的同意。
+            </p>
+
+            <br />
+            <h3>二、乙方权利与义务</h3>
+            <p>
+              1、乙方向甲方提供教育培训课程,授课方式依据不同课程种类,包括且不限于网络学习、面授学习等方式;课程形式依据不同课程种类,包括且不限于在线视频(录播)、在线直播、在线刷题、线下刷题及电子版或纸质版学习资料等,具体情形依照课程介绍说明为准。
+            </p>
+            <p>
+              2、乙方应保证所提供的教育培训课程,符合相关部门的标准要求,并为甲方人员在开通、学习课程的过程中提供免费答疑服务。
+            </p>
+            <p>
+              3、如遇甲方延迟支付价款,乙方有权单方中止甲方自主开通培训课程功能。
+            </p>
+            <p>
+              4、如因网站维护、系统升级、课程更新等技术原因引致的课程无法正常学习情形,甲方应及时通知乙方,乙方应在收到甲方通知后3个工作日内解决问题。
+            </p>
+            <br />
+            <h3>三、协议有效期与结算标准</h3>
+            <p>
+              1、本协议有效期自
+              {{ $methodsTools.onlyForma(ruleForm.startTime, false) }}起,至
+              {{ $methodsTools.onlyForma(ruleForm.endTime, false) }}止。
+            </p>
+            <p>2、结算标准</p>
+            <el-table :data="tableData" style="width: 100%" border>
+              <el-table-column align="center" type="index" width="50">
+              </el-table-column>
+              <el-table-column
+                prop="educationName"
+                label="教育类型"
+                width="120"
+                align="center"
+              >
+              </el-table-column>
+              <el-table-column prop="goodsName" label="课程名称" align="center">
+              </el-table-column>
+              <el-table-column
+                prop="covenantPrice"
+                label="协议单价"
+                width="180"
+                align="center"
+                ><template slot-scope="scope">
+                  ¥{{ scope.row["covenantPrice"] | formatPrice }}
+                </template>
+              </el-table-column>
+              <el-table-column label="上限数量" align="center" width="180"
+                ><template slot-scope="scope">
+                  {{
+                    scope.row["limitStatus"] == 1
+                      ? "不限"
+                      : scope.row["limitNum"]
+                  }}
+                </template>
+              </el-table-column>
+            </el-table>
+            <p>3、具体结算金额以实际参加培训人数为准。</p>
+            <p>
+              4、额外费用:上述结算标准仅适用于协议约定的培训课程的课程介绍所述的服务内容与形式,超出部分需支付额外费用,标准另计。
+            </p>
+            <br />
+            <h3>四、结算方式</h3>
+            <p>1、结算周期上限:每满{{ ruleForm.settlementCycle }}个自然月。</p>
+            <p>
+              2、结算金额上限:每达{{
+                ruleForm.limitAmount | formatPrice
+              }}元人民币(大写:¥{{ ruleForm.limitAmount | formatPrice }}) 。
+              在协议有效期内,依照协议约定的培训课程及结算价格,如达到结算周期上限或结算金额上限,则乙方发送书面账单给甲方,甲方收到账单后2日内未确认也未提出异议的,则视为甲方确认结算价款。甲方应于结算价款确认之日起5个工作日内向乙方支付价款。
+            </p>
+            <p>
+              3、发票按发票按双方协定后开具,可根据甲方要求开具广东增值税专用发票,发票类型为*非学历教育服务*培训费,税率为3%。
+            </p>
+            <p>
+              4、乙方收款账户 <br />
+              收款账户名:{{ ruleForm.openingName }} <br />收款账号:
+              {{ ruleForm.proceedsAccount }}<br />开户银行:{{
+                ruleForm.openingBank
+              }}
+            </p>
+            <br />
+            <h3>五、违约责任</h3>
+            <p>
+              1、双方应按约定全面履行自己的义务,任何一方不履行合同义务或者履行合同义务不符合约定的,应向另一方承担违约责任。
+            </p>
+            <p>
+              2、因自然灾害、流行疾病、意外事件或事故等不可预见、不可抗力原因导致协议不能履行,甲乙双方均不负责。
+            </p>
+            <p>
+              3、因主管部门政策变更或其它不可抗力而致使本协议目的不能顺利实现,甲方同意不视为乙方违约。
+            </p>
+            <p>
+              4、若甲方逾期付款,则每逾期1日,应按逾期付款金额的3%向乙方支付违约金,同时,
+              乙方有权停止所有服务。
+            </p>
+            <br />
+            <h3>六、协议解除和终止</h3>
+            <p>经双方协商一致,可以解除或终止本协议。</p>
+            <br />
+            <h3>七、争议解决</h3>
+            <p>
+              本协议在履行过程中如有未尽事宜或争议,双方应本着友好精神协商解决,若协商不成,任何一方可向广州仲裁委员会申请仲裁。乙方维权所支出的律师费、仲裁费等费用,由甲方承担。
+            </p>
+            <br />
+            <h3>八、送达</h3>
+            <p>
+              双方关于本协议履行及相关事宜的通知,或者涉仲裁纠纷相关材料的送达,应当按照本协议载明的地址发出,但本协议另有约定的除外。在协议有效期内,任何一方的联系方式发生变更的,应当及时通知对方,否则因此产生的一切不利后果自行承担。
+            </p>
+            <br />
+            <h3>九、生效及其他</h3>
+            <p>
+              1、本协议一式两份,双方各执一份,具有同等效力,由双方签字盖章后生效。
+            </p>
+            <p class="fgx"></p>
+            <p class="fgx"></p>
+            <div class="footer">
+              <div>
+                <p>甲方(签字盖章):</p>
+                <p>联系人:</p>
+                <p>日期:</p>
+              </div>
+              <div>
+                <p>乙方(签字盖章):</p>
+                <p>联系人:</p>
+                <p>日期:</p>
+              </div>
+            </div>
+          </div>
+          <div class="xy">
+            <span style="margin-right: 20px">*请仔细阅读协议内容</span>
+            <el-button
+              type="primary"
+              @click="downLoad"
+              v-if="type !== 1 && type !== 2 && ruleForm.status == 2"
+              >下载</el-button
+            >
+          </div>
+          <div class="foter_box">
+            <h3>甲方收件信息</h3>
+            <div>
+              收件人:<span>{{ ruleForm.jiaRecipients }}</span
+              >收件电话:<span>{{ ruleForm.jiaRecipientsPhone }}</span
+              >收件地址:<span>{{ ruleForm.jiaRecipientsAddress }}</span
+              >备注:<span>{{ ruleForm.jiaRecipientsRemark }}</span>
+            </div>
+          </div>
+          <div class="foter_box">
+            <h3>乙方收件信息</h3>
+            <div>
+              收件人:<span>{{ ruleForm.yiRecipients }}</span
+              >收件电话:<span>{{ ruleForm.yiRecipientsPhone }}</span
+              >收件地址:<span>{{ ruleForm.yiRecipientsAddress }}</span
+              >备注:<span>{{ ruleForm.yiRecipientsRemark }}</span>
+            </div>
+          </div>
+          <div class="foter_box" v-if="type !== 1">
+            <h3>协议状态</h3>
+            <div>
+              {{ getStatus(ruleForm.status)
+              }}<span>(审核意见:{{ ruleForm.checkRecord || "---" }})</span>
+            </div>
+          </div>
+        </template>
+        <div class="footer_b" v-if="type !== 3">
+          <el-button v-if="returnLastStatus" @click="last">上一步</el-button>
+          <template v-if="(type === 4 || type === 5) && activeIndex === 3">
+            <el-button type="primary" @click="checkFunc(1)">审核通过</el-button>
+            <el-button type="warning" @click="checkFunc(2)"
+              >审核不通过</el-button
+            >
+          </template>
+          <template v-else>
+            <el-button type="primary" @click="next">{{
+              activeIndex === 3 ? "提交" : "下一步"
+            }}</el-button>
+          </template>
+          <el-button @click="isShow = false">关闭</el-button>
+        </div>
+      </el-main>
+    </BaseDialog>
+  </div>
+</template>
+
+<script>
+import searchBoxNew from "@/components/searchBoxNew";
+import pagination from "@/components/pagination";
+import htmlPdf from "@/utils/html_pdf.js";
+import { mapGetters } from "vuex";
+export default {
+  components: {
+    searchBoxNew,
+    pagination,
+  },
+  data() {
+    var validateTime = (rule, value, callback) => {
+      if (value === "") {
+        callback(new Error("请选择协议结束时间"));
+      } else if (value <= this.ruleForm.startTime) {
+        callback(new Error("协议结束时间必须大于协议开始时间"));
+      } else {
+        callback();
+      }
+    };
+    return {
+      isShow: false,
+      loading: false,
+      activeIndex: "",
+      type: "",
+      //甲方选择 START
+      firstPartyFormList: [
+        {
+          prop: "companyName",
+          placeholder: "输入企业名称",
+        },
+      ],
+      firstPartyFormData: {
+        pageSize: 10,
+        pageNum: 1,
+      },
+      firstPartyTableData: [],
+      firstPartyTotal: 0,
+      tableRadio: "",
+      //甲方选择 END
+      //协议数据 START
+      ruleForm: {
+        companyId: "",
+        jiaCompanyName: "",
+        jiaCompanyContract: "",
+        jiaCompanyAddress: "",
+        jiaCompanyPhone: "",
+        jiaRecipients: "",
+        jiaRecipientsPhone: "",
+        jiaRecipientsAddress: "",
+        jiaRecipientsRemark: "",
+        yiCompanyName: "",
+        yiCompanyContract: "",
+        yiCompanyAddress: "",
+        yiCompanyPhone: "",
+        yiRecipients: "",
+        yiRecipientsPhone: "",
+        yiRecipientsAddress: "",
+        yiRecipientsRemark: "",
+        covenantNum: "",
+        startTime: "",
+        endTime: "",
+        settlementCycle: "",
+        limitAmount: "",
+        bsCovenantBusinessVos: [
+          {
+            hideStatus: false,
+            PlCovenantPrice: "",
+            educationTypeId: "",
+            businessId: "",
+            bsCovenantGoodsVos: [],
+          },
+        ],
+      },
+      rules: {
+        jiaCompanyName: [
+          { required: true, message: "请输入甲方名称", trigger: "blur" },
+        ],
+        jiaCompanyContract: [
+          { required: true, message: "请输入甲方联系人", trigger: "blur" },
+        ],
+        jiaCompanyAddress: [
+          { required: true, message: "请输入甲方地址", trigger: "blur" },
+        ],
+        jiaCompanyPhone: [
+          { required: true, message: "请输入甲方电话", trigger: "blur" },
+        ],
+        jiaRecipients: [
+          { required: true, message: "请输入收件人", trigger: "blur" },
+        ],
+        jiaRecipientsPhone: [
+          { required: true, message: "请输入收件电话", trigger: "blur" },
+        ],
+        jiaRecipientsAddress: [
+          { required: true, message: "请输入收件地址", trigger: "blur" },
+        ],
+        yiCompanyName: [
+          { required: true, message: "请输入乙方名称", trigger: "blur" },
+        ],
+        yiCompanyContract: [
+          { required: true, message: "请输入乙方联系人", trigger: "blur" },
+        ],
+        yiCompanyAddress: [
+          { required: true, message: "请输入乙方地址", trigger: "blur" },
+        ],
+        yiCompanyPhone: [
+          { required: true, message: "请输入乙方电话", trigger: "blur" },
+        ],
+        yiRecipients: [
+          { required: true, message: "请输入收件人", trigger: "blur" },
+        ],
+        yiRecipientsPhone: [
+          { required: true, message: "请输入收件电话", trigger: "blur" },
+        ],
+        yiRecipientsAddress: [
+          { required: true, message: "请输入收件地址", trigger: "blur" },
+        ],
+        covenantNum: [
+          { required: true, message: "请输入协议编号", trigger: "blur" },
+        ],
+        startTime: [
+          {
+            required: true,
+            message: "请输入协议开始时间",
+            trigger: "change",
+          },
+        ],
+        endTime: [{ validator: validateTime, trigger: "change" }],
+        settlementCycle: [
+          { required: true, message: "请输入协议周期(月)", trigger: "blur" },
+        ],
+        limitAmount: [
+          { required: true, message: "请输入结算上限金额", trigger: "blur" },
+        ],
+      },
+      //协议数据 END
+      //协议合同 START
+      tableData: [],
+      //协议合同 END
+    };
+  },
+  computed: {
+    ...mapGetters(["educationType", "businessLevel"]),
+    getCbus: function () {
+      return function (id) {
+        if (id && this.businessLevel) {
+          return this.businessLevel.filter((i) => i.educationId == id) || [];
+        } else {
+          return [];
+        }
+      };
+    },
+    returnLastStatus() {
+      if (this.activeIndex === 1) {
+        return false;
+      } else if (this.activeIndex === 2) {
+        if (this.type === 1) {
+          return true;
+        } else {
+          return false;
+        }
+      } else if (this.activeIndex === 3) {
+        if (
+          this.ruleForm.formApp !== 2 &&
+          (this.type === 4 || this.type === 5)
+        ) {
+          return false;
+        } else {
+          return true;
+        }
+      } else {
+        return false;
+      }
+    },
+  },
+  methods: {
+    /**
+     *
+     * @param {Number} activeIndex 当前展示模块 1甲方选择 2协议数据 3协议合同
+     * @param {Number} type 1新增 2修改 3详情 4协议审核 5终止审核
+     * @param {Object} object 总数据
+     */
+    async openBoxs(activeIndex, type, object) {
+      this.initData();
+      this.activeIndex = activeIndex;
+      this.type = type;
+      if (type === 1) {
+        if (object.covenantId) {
+          delete object.covenantId;
+          object.copyCovenantNum = object.covenantNum;
+          object.copyStatus = 1;
+          const { msg } = await this.$api.bsCovenantGetCovenantNum();
+          object.covenantNum = msg;
+          object.startTime = parseInt(object.startTime * 1000);
+          object.endTime = parseInt(object.endTime * 1000);
+          this.ruleForm = object;
+        } else {
+          this.firstPartySearch(2);
+        }
+      } else {
+        object.startTime = parseInt(object.startTime * 1000);
+        object.endTime = parseInt(object.endTime * 1000);
+        this.ruleForm = object;
+        if (activeIndex === 3) {
+          this.getTableData();
+        }
+      }
+      this.isShow = true;
+    },
+    //初始化数据
+    initData(tableRadio = "") {
+      this.tableRadio = tableRadio;
+      this.ruleForm = {
+        companyId: "",
+        jiaCompanyName: "",
+        jiaCompanyContract: "",
+        jiaCompanyAddress: "",
+        jiaCompanyPhone: "",
+        jiaRecipients: "",
+        jiaRecipientsPhone: "",
+        jiaRecipientsAddress: "",
+        jiaRecipientsRemark: "",
+        yiCompanyName: "",
+        yiCompanyContract: "",
+        yiCompanyAddress: "",
+        yiCompanyPhone: "",
+        yiRecipients: "",
+        yiRecipientsPhone: "",
+        yiRecipientsAddress: "",
+        yiRecipientsRemark: "",
+        covenantNum: "",
+        startTime: "",
+        endTime: "",
+        settlementCycle: "",
+        limitAmount: "",
+        bsCovenantBusinessVos: [
+          {
+            hideStatus: false,
+            PlCovenantPrice: "",
+            educationTypeId: "",
+            businessId: "",
+            bsCovenantGoodsVos: [],
+          },
+        ],
+      };
+    },
+    //------------------------------------------甲方选择逻辑START
+    firstPartySearch(v) {
+      this.loading = true;
+      if (v === 2) {
+        this.firstPartyFormData = {
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      var data = JSON.parse(JSON.stringify(this.firstPartyFormData));
+      this.$api
+        .systemCompanyGetJiaList(data)
+        .then((res) => {
+          this.firstPartyTableData = res.rows;
+          this.firstPartyTotal = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    handleSizeChange(v) {
+      this.firstPartyFormData.pageSize = v;
+      this.firstPartyFormData.pageNum = 1;
+      this.firstPartySearch();
+    },
+    handleCurrentChange(v) {
+      this.firstPartyFormData.pageNum = v;
+      this.firstPartySearch();
+    },
+    //------------------------------------------甲方选择逻辑END
+    //------------------------------------------协议数据逻辑START
+    addXYXM() {
+      this.ruleForm.bsCovenantBusinessVos.push({
+        hideStatus: false,
+        educationTypeId: "",
+        projectId: "",
+        businessId: "",
+        bsCovenantGoodsVos: [],
+      });
+    },
+    getApiGoods(v, index) {
+      let array = this.businessLevel.find((i) => v == i.id);
+      this.$api.inquireGoods({ businessId: v, status: 1 }).then((res) => {
+        if (res.rows?.length > 0) {
+          let rows = res.rows.map((i) => {
+            return {
+              goodsId: i.goodsId,
+              goodsName: i.goodsName,
+              majorName: i.majorName,
+              standPrice: i.standPrice,
+              covenantPrice: i.standPrice,
+              limitNum: "",
+              limitStatus: 1,
+            };
+          });
+          this.$set(
+            this.ruleForm.bsCovenantBusinessVos[index],
+            "educationTypeName",
+            array.educationName
+          );
+          this.$set(
+            this.ruleForm.bsCovenantBusinessVos[index],
+            "bsCovenantGoodsVos",
+            rows
+          );
+        }
+      });
+    },
+    delGoodsList(index) {
+      this.$confirm("确定删除当前业务类型吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.ruleForm.bsCovenantBusinessVos.splice(index, 1);
+          this.$message({
+            type: "success",
+            message: "删除成功",
+          });
+        })
+        .catch(() => {
+          this.$message({
+            type: "info",
+            message: "已取消删除",
+          });
+        });
+    },
+    plEditPrice(item, index) {
+      let selection = this.$refs[`table_${index}`][0].selection;
+      if (selection && selection.length > 0) {
+        let array = selection.map((i) => i.goodsId);
+        for (let i = 0; i < item.bsCovenantGoodsVos.length; i++) {
+          if (array.indexOf(item.bsCovenantGoodsVos[i].goodsId) !== -1) {
+            this.$set(
+              item.bsCovenantGoodsVos[i],
+              "covenantPrice",
+              item.PlCovenantPrice
+            );
+          }
+        }
+        this.$message.success("批量修改成功");
+        item.PlCovenantPrice = "";
+        this.$refs[`table_${index}`][0].clearSelection();
+      } else {
+        this.$message.error("请先勾选数据");
+        return;
+      }
+    },
+    //------------------------------------------协议数据逻辑END
+    //------------------------------------------协议合同逻辑START
+
+    downLoad() {
+      const lableList = document.getElementsByClassName("pdf");
+      htmlPdf("测试", document.querySelector("#pdf"), lableList);
+    },
+    getStatus(i) {
+      // 1待审核 2 已审核 3已取消 4 不通过 5 已生效 6 已过期 7 已终止
+      var str = "";
+      switch (i) {
+        case 1:
+          str = "待审核";
+          break;
+        case 2:
+          str = "已审核";
+          break;
+        case 3:
+          str = "已取消";
+          break;
+        case 4:
+          str = "不通过";
+          break;
+        case 5:
+          str = "已生效";
+          break;
+        case 6:
+          str = "已过期";
+          break;
+        case 7:
+          str = "已终止";
+          break;
+
+        default:
+          break;
+      }
+      return str;
+    },
+    //------------------------------------------协议合同逻辑END
+    last() {
+      if (this.activeIndex === 2) {
+        this.$confirm("返回上一步将导致当前页数据丢失,是否继续?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        })
+          .then(() => {
+            this.activeIndex--;
+            this.firstPartySearch(2);
+            this.initData(this.ruleForm.companyId);
+          })
+          .catch(() => {});
+      } else if (this.activeIndex === 3) {
+        this.activeIndex--;
+        this.tableData = [];
+      }
+    },
+    async next() {
+      if (this.activeIndex === 1) {
+        if (!this.tableRadio) {
+          this.$message.error("请选择甲方企业");
+          return;
+        }
+        this.ruleForm.companyId = this.tableRadio;
+        if (this.type === 1) {
+          const { msg } = await this.$api.bsCovenantGetCovenantNum();
+          const { data } = await this.$api.bsCovenantGetLastJiaInfo({
+            companyId: this.ruleForm.companyId,
+          });
+          const { data: opening } = await this.$api.systemTenantGetAccount();
+          this.ruleForm.covenantNum = msg;
+          this.ruleForm.companyId = data.companyId;
+          this.ruleForm.jiaCompanyName = data.jiaCompanyName;
+          this.ruleForm.jiaCompanyContract = data.jiaCompanyContract;
+          this.ruleForm.jiaCompanyAddress = data.jiaCompanyAddress;
+          this.ruleForm.jiaCompanyPhone = data.jiaCompanyPhone;
+          this.ruleForm.jiaRecipients = data.jiaRecipients;
+          this.ruleForm.jiaRecipientsPhone = data.jiaRecipientsPhone;
+          this.ruleForm.jiaRecipientsAddress = data.jiaRecipientsAddress;
+          this.ruleForm.jiaRecipientsRemark = data.jiaRecipientsRemark;
+          this.ruleForm.yiCompanyName = data.yiCompanyName;
+          this.ruleForm.yiCompanyContract = data.yiCompanyContract;
+          this.ruleForm.yiCompanyAddress = data.yiCompanyAddress;
+          this.ruleForm.yiCompanyPhone = data.yiCompanyPhone;
+          this.ruleForm.yiRecipients = data.yiRecipients;
+          this.ruleForm.yiRecipientsPhone = data.yiRecipientsPhone;
+          this.ruleForm.yiRecipientsAddress = data.yiRecipientsAddress;
+          this.ruleForm.yiRecipientsRemark = data.yiRecipientsRemark;
+          this.ruleForm.openingBank = opening.openingBank;
+          this.ruleForm.openingName = opening.openingName;
+          this.ruleForm.proceedsAccount = opening.proceedsAccount;
+          this.activeIndex++;
+        }
+      } else if (this.activeIndex === 2) {
+        this.$refs["ruleForm"].validate((valid) => {
+          if (valid) {
+            this.getTableData();
+            this.activeIndex++;
+          } else {
+            console.log("error submit!!");
+            return false;
+          }
+        });
+      } else if (this.activeIndex === 3) {
+        let data = JSON.parse(JSON.stringify(this.ruleForm));
+        data.startTime = parseInt(data.startTime / 1000);
+        data.endTime = parseInt(data.endTime / 1000);
+        if (data.covenantId) {
+          data.operateApp = 4;
+        }
+        this.$api[
+          data.copyCovenantNum
+            ? "bsCovenantCopyAndInsert"
+            :
+          data.covenantId ? "bsCovenantUpdateCommit" : "bsCovenantInsert"
+        ](data).then((res) => {
+          this.$message.success("操作成功");
+          this.$emit("search");
+          this.isShow = false;
+        });
+      }
+    },
+    /**
+     *
+     * @param {Number} type 1审核通过 2审核不通过
+     */
+    checkFunc(type) {
+      if (type == 1) {
+        this.$confirm("确定审核通过吗?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        })
+          .then(async () => {
+            if (this.ruleForm.formApp === 2) {
+              let data = JSON.parse(JSON.stringify(this.ruleForm));
+              data.startTime = parseInt(data.startTime / 1000);
+              data.endTime = parseInt(data.endTime / 1000);
+                data.operateApp = 4;
+              await this.$api.bsCovenantUpdateCommit(data);
+            }
+            this.$api[
+              this.type === 4
+                ? "bsCovenantUpdateCheckStatus"
+                : "bsCovenantUpdateStopCheck"
+            ]({
+              covenantId: this.ruleForm.covenantId,
+              status: 2,
+            }).then((res) => {
+              this.$message.success("操作成功");
+              this.isShow = false;
+              this.$emit("search");
+            });
+          })
+          .catch(() => {});
+      }
+      if (type == 2) {
+        this.$prompt("确定审核不通过吗?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          inputPattern: /^.+$/,
+          inputErrorMessage: "请输入不通过原因",
+          beforeClose: async (action, instance, done) => {
+            if (action === "confirm") {
+              instance.confirmButtonLoading = true;
+              instance.confirmButtonText = "提交中...";
+              if (this.ruleForm.formApp === 2) {
+                let data = JSON.parse(JSON.stringify(this.ruleForm));
+                data.startTime = parseInt(data.startTime / 1000);
+                data.endTime = parseInt(data.endTime / 1000);
+                if (data.covenantId) {
+                  data.operateApp = 4;
+                }
+                await this.$api.bsCovenantUpdateCommit(data);
+              }
+              this.$api[
+                this.type === 4
+                  ? "bsCovenantUpdateCheckStatus"
+                  : "bsCovenantUpdateStopCheck"
+              ]({
+                checkInfo: instance.inputValue,
+                covenantId: this.ruleForm.covenantId,
+                status: 4,
+              })
+                .then((res) => {
+                  done();
+                })
+                .finally(() => {
+                  instance.confirmButtonLoading = false;
+                  instance.confirmButtonText = "确定";
+                });
+            } else {
+              done();
+            }
+          },
+        })
+          .then(({ value }) => {
+            this.$message.success("操作成功");
+            this.isShow = false;
+            this.$emit("search");
+          })
+          .catch(() => {});
+      }
+    },
+    getTableData() {
+      if (this.ruleForm.bsCovenantBusinessVos) {
+        let array = [];
+        this.ruleForm.bsCovenantBusinessVos.forEach((items) => {
+          items.bsCovenantGoodsVos.forEach(
+            (i) => (i.educationName = items.educationTypeName)
+          );
+          array = array.concat(items.bsCovenantGoodsVos);
+        });
+        this.tableData = array || [];
+      } else {
+        this.tableData = [];
+      }
+    },
+    close() {},
+    submit() {},
+  },
+};
+</script> 
+
+<style lang="scss" scoped>
+.footer_b {
+  display: flex;
+  align-items: center;
+  justify-content: end;
+}
+.table_1 {
+  /deep/ .el-checkbox {
+    display: none;
+  }
+}
+
+h4 {
+  font-weight: bold;
+  font-size: 14px;
+  color: #2f4378;
+}
+.demo-ruleForm {
+  /deep/ .el-input--medium .el-input__inner {
+    width: 290px;
+  }
+  /deep/ .el-input-number.is-without-controls .el-input__inner {
+    width: 185px !important;
+  }
+}
+.eb_sty {
+  display: flex;
+  align-items: center;
+  margin-bottom: 10px;
+  /deep/ .el-select .el-input--medium .el-input__inner {
+    width: auto !important;
+  }
+  i {
+    cursor: pointer;
+    font-size: 26px;
+  }
+}
+
+#pdf {
+  padding: 60px;
+  font-size: 16px;
+  color: #000;
+  font-family: "宋体 常规", "宋体", sans-serif;
+  line-height: 30px;
+}
+.fth {
+  font-size: 16px;
+  color: #333;
+  font-weight: bold;
+}
+h3 {
+  font-size: 16px;
+  font-weight: bold;
+}
+.f_w {
+  font-size: 16px;
+  font-weight: bold;
+}
+.fgx {
+  height: 30px;
+  border-bottom: 1px solid rgb(186, 186, 186);
+}
+.footer {
+  display: flex;
+  div {
+    flex: 1;
+  }
+}
+.foter_box {
+  border-top: 1px dashed #333;
+  padding: 30px 0px;
+  color: #333;
+  h3 {
+    font-size: 14px;
+  }
+  span {
+    margin-right: 30px;
+  }
+}
+.xy {
+  display: flex;
+  align-items: center;
+  color: red;
+  margin-bottom: 30px;
+}
+</style>

+ 78 - 0
src/views/agreement/party/index.vue

@@ -0,0 +1,78 @@
+<template>
+  <div id="">
+    <el-form
+      :model="ruleForm"
+      :rules="rules"
+      ref="ruleForm"
+      label-width="100px"
+      class="demo-ruleForm"
+    >
+      <el-form-item label="乙方名称" prop="yiCompanyName">
+        <el-input v-model="ruleForm.yiCompanyName"></el-input>
+      </el-form-item>
+      <el-form-item label="乙方地址" prop="yiCompanyAddress">
+        <el-input v-model="ruleForm.yiCompanyAddress"></el-input>
+      </el-form-item>
+      <el-form-item label="状态" prop="status">
+        <el-radio-group v-model="ruleForm.status">
+          <el-radio :label="1">开启</el-radio>
+          <el-radio :label="0">关闭</el-radio>
+        </el-radio-group></el-form-item
+      ><el-form-item>
+        <el-button type="primary" @click="submitForm('ruleForm')"
+          >保存</el-button
+        >
+      </el-form-item></el-form
+    >
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      ruleForm: {
+        yiCompanyName: "",
+        yiCompanyAddress: "",
+        status: "",
+      },
+      rules: {
+        yiCompanyName: [
+          { required: true, message: "请输入乙方名称", trigger: "blur" },
+        ],
+        yiCompanyAddress: [
+          { required: true, message: "请输入乙方地址", trigger: "blur" },
+        ],
+        status: [{ required: true, message: "请选择状态", trigger: "change" }],
+      },
+    };
+  },
+  mounted() {
+    this.getData();
+  },
+  methods: {
+    getData() {
+      this.$api.bsCovenantGetYiInfo().then((res) => {
+        this.ruleForm = res.data || {};
+      });
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          this.$api
+            .bsCovenantInsertYiInfo(this.ruleForm)
+            .then((res) => {
+              this.getData();
+            });
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 402 - 0
src/views/agreement/protocolManagement/index.vue

@@ -0,0 +1,402 @@
+<template>
+  <div id="">
+    <search-box-new
+      :remarkStatus="true"
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="init"
+    />
+    <table-list
+      ref="tableList"
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      :loading="loading"
+    >
+      <template slot="customize">
+        <el-button type="warning" @click="XY(1, 1)">新增</el-button>
+      </template>
+      <template slot="1" slot-scope="props">
+        <p>协议编号:{{ props.scope.row.covenantNum }}</p>
+        <p>业务员:{{ props.scope.row.saleName || '--' }}</p>
+        <p>业务号:{{ props.scope.row.saleNum || '--' }}</p>
+        <p>
+          申请时间:{{ $methodsTools.onlyForma(props.scope.row.startTime) }}
+        </p>
+        <p>
+          协议时效:{{
+            $methodsTools.onlyForma(props.scope.row.startTime, false) +
+            " - " +
+            $methodsTools.onlyForma(props.scope.row.endTime, false)
+          }}
+        </p>
+        <p>协议状态:{{ getStatus(props.scope.row.status) }}</p></template
+      >
+      <template slot="2" slot-scope="props">
+        <p>甲方:{{ props.scope.row.jiaCompanyName }}</p>
+        <p>地址:{{ props.scope.row.jiaCompanyAddress }}</p>
+        <p>联系人:{{ props.scope.row.jiaCompanyContract }}</p>
+        <p>电话:{{ props.scope.row.jiaCompanyPhone }}</p></template
+      >
+      <template slot="3" slot-scope="props">
+        <li
+          v-for="(item, index) in relectArray(
+            props.scope.row.bsCovenantBusinessVos
+          )"
+          :key="index"
+        >
+          {{ item }}
+        </li></template
+      ><template slot="4" slot-scope="props">
+        <p>周期(月):{{ props.scope.row.settlementCycle }}</p>
+        <p>金额:¥{{ props.scope.row.limitAmount | formatPrice }}</p></template
+      ><template slot="5" slot-scope="props">
+        <p>应付款:{{ $methodsTools.onlyForma(props.scope.row.createTime) }}</p>
+        <p>已付款:{{ $methodsTools.onlyForma(props.scope.row.payTime) }}</p>
+        <p>未付款:{{ $methodsTools.onlyForma() }}</p></template
+      ><template slot="6" slot-scope="props">
+        <p>正常{{ props.scope.row.cycleWarning }}</p>
+        <p>预警</p></template
+      ><template slot="7" slot-scope="props">
+        <p>已开票:{{ props.scope.row.createTime }}</p>
+        <p>待开票:{{ props.scope.row.createTime }}</p></template
+      >
+      <template slot="btn" slot-scope="props">
+        <el-button type="text" @click="XY(3, 3, props.scope.row)"
+          >协议详情</el-button
+        >
+        <el-button type="text">关联订单</el-button>
+        <el-button
+          type="text"
+          :disabled="!props.scope.row.covenantImg"
+          @click="sealAgre(props.scope.row.covenantImg)"
+          >盖章协议</el-button
+        >
+        <el-button type="text" 
+          :disabled="
+            !(
+              props.scope.row.status === 5 &&
+              (props.scope.row.stopStatus !== 1 ||
+                props.scope.row.stopStatus !== 2 ||
+                props.scope.row.stopStatus !== 4)
+            )
+          ">复制新增</el-button>
+        <el-button
+          type="text"
+          :disabled="
+            !(props.scope.row.status === 5 && props.scope.row.stopStatus === 0)
+          "
+          @click="Terminate(props.scope.row)"
+          >终止申请</el-button
+        >
+        <el-button
+          type="text"
+          :disabled="props.scope.row.status !== 1"
+          @click="cancelXY(props.scope.row)"
+          >取消协议</el-button
+        >
+        <el-button
+          type="text"
+          :disabled="props.scope.row.status !== 4"
+          @click="XY(2, 2, props.scope.row)"
+          >修改重提</el-button
+        >
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+    <agreeDialog ref="agreeDialog" @search="search(2)"></agreeDialog>
+    <el-image
+      style="display: none"
+      :src="imgList[0]"
+      :preview-src-list="imgList"
+      ref="el_image"
+    >
+    </el-image>
+  </div>
+</template>
+  
+<script>
+import { formatPrice } from "@/directive/filter";
+import agreeDialog from "../components/agreeDialog";
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+
+export default {
+  name: "",
+  components: {
+    agreeDialog,
+    searchBoxNew,
+    tableList,
+    pagination,
+  },
+  data() {
+    return {
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "协议管理",
+        index: 0,
+        ch: "条",
+        num: true,
+        choice: false,
+        addHide: true,
+        openCheckMore: true,
+        changeWidth: "160px",
+        backFatherBtn: {
+          status: false,
+          title: "配置下单填选模板",
+        },
+      },
+      //搜索
+      formList: [
+        {
+          prop: "status",
+          placeholder: "协议状态",
+          scope: "select",
+          noClear: false,
+          options: [
+            { label: "审核中", value: 1 },
+            { label: "已通过", value: 2 },
+            { label: "已取消", value: 3 },
+            { label: "不通过", value: 4 },
+            { label: "已生效", value: 5 },
+            { label: "已过期", value: 6 },
+            { label: "已终止", value: 7 },
+          ],
+        },
+        {
+          prop: "cycleWarning",
+          placeholder: "结算预警",
+          scope: "select",
+          noClear: false,
+          options: [
+            { label: "正常", value: 1 },
+            { label: "周期预警", value: 2 },
+            { label: "金额预警", value: 3 },
+          ],
+        },
+        {
+          lable: "",
+          prop: "searchKey",
+          placeholder: "输入协议编号/甲方姓名/业务员/业务号",
+        },
+      ],
+      formData: {
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "协议记录",
+          hidden: true,
+          scope: "slot",
+          slotName: "1",
+          dontCenter: true,
+        },
+        {
+          label: "甲方信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "2",
+          dontCenter: true,
+        },
+        {
+          label: "协议项目(教育类型/业务层次/商品名称/单价/上限数量)",
+          hidden: true,
+          scope: "slot",
+          slotName: "3",
+          dontCenter: true,
+        },
+        {
+          label: "结算信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "4",
+          dontCenter: true,
+        },
+        {
+          label: "账款信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "5",
+          dontCenter: true,
+        },
+        {
+          label: "结算预警",
+          hidden: true,
+          scope: "slot",
+          slotName: "6",
+          dontCenter: true,
+        },
+        {
+          label: "发票状态",
+          hidden: true,
+          scope: "slot",
+          slotName: "7",
+          dontCenter: true,
+        },
+        {
+          label: "审核意见",
+          prop: "cwSn",
+          hidden: true,
+        },
+      ],
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+      imgList: [
+        "https://file-dev.xyyxt.net/oss/images/file/20230710/1688974188358.png",
+      ],
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    getStatus(i) {
+      let str = "";
+      switch (i) {
+        case 1:
+          str = "待审核";
+          break;
+        case 2:
+          str = "已审核";
+          break;
+        case 3:
+          str = "已取消";
+          break;
+        case 4:
+          str = "不通过";
+          break;
+        case 5:
+          str = "已生效";
+          break;
+        case 6:
+          str = "已过期";
+          break;
+        case 7:
+          str = "已终止";
+          break;
+
+        default:
+          break;
+      }
+      return str;
+    },
+    //申请终止
+    Terminate(row) {
+      this.$confirm("确定申请终止吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.$api
+            .bsCovenantUpdateStopStatus({
+              covenantId: row.covenantId,
+            })
+            .then((res) => {
+              this.$message.success("操作成功");
+              this.search();
+            });
+        })
+        .catch(() => {});
+    },
+    //取消协议
+    cancelXY(row) {
+      this.$confirm("当前协议正在审核中,确定取消吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.$api
+            .bsCovenantCancelStatus({
+              covenantId: row.covenantId,
+            })
+            .then((res) => {
+              this.$message.success("操作成功");
+              this.search();
+            });
+        })
+        .catch(() => {});
+    },
+    sealAgre(imgStr) {
+      if (!imgStr) return;
+      let ary = imgStr.split(",");
+      this.imgList = ary.map((i) => this.$methodsTools.splitImgHost(i)) || [];
+      this.$refs.el_image.$el.children[0].click();
+    },
+    relectArray(array) {
+      if (array && array.length > 0) {
+        let ary = [];
+        array.forEach((i) => {
+          let a = i.bsCovenantGoodsVos.map((k) => {
+            return `${i.educationTypeName}/${i.businessName + i.projectName}/${
+              k.goodsName
+            }/¥${formatPrice(k.covenantPrice)}/${
+              k.limitStatus == 1 ? "不限" : k.limitNum
+            }`;
+          });
+          ary.push(...a);
+        });
+        if (ary.length > 5) {
+          ary = ary.splice(0, 5);
+          ary.push("等5项");
+        }
+        return ary || [];
+      } else {
+        return [];
+      }
+    },
+    XY(index, type, item = {}) {
+      let data = JSON.parse(JSON.stringify(item));
+      this.$refs.agreeDialog.openBoxs(index, type, data);
+    },
+    search(v) {
+      this.loading = true;
+      if (v === 2) {
+        this.formData = {
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      this.$api
+        .bsCovenantGetCovenantList(data)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    init() {
+      this.search(2);
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+  },
+};
+</script>
+  
+  <style lang="scss" scoped>
+</style>
+  

+ 172 - 0
src/views/agreement/protocolUpload/dialogImg.vue

@@ -0,0 +1,172 @@
+<template>
+  <div id="">
+    <BaseDialog
+      width="500px"
+      :isShow.sync="isShow"
+      title="协议上传"
+      @close="close"
+      @submit="submit"
+    >
+      <el-form
+        :model="ruleForm"
+        :rules="rules"
+        ref="ruleForm"
+        label-width="100px"
+        class="demo-ruleForm"
+      >
+        <el-form-item label="协议编码:">
+          <el-button type="text">{{ formData.covenantNum }}</el-button>
+        </el-form-item>
+        <el-form-item label="协议时效:">
+          <span>{{ $methodsTools.onlyForma(formData.startTime, false) }}</span>
+          至
+          <span>{{ $methodsTools.onlyForma(formData.endTime, false) }}</span>
+        </el-form-item>
+        <el-form-item label="协议上传:" prop="path">
+          <ul class="img_ul">
+            <li
+              class="img_box"
+              v-for="(item, index) in ruleForm.path"
+              :key="index"
+            >
+              <i
+                class="el-icon-error clear"
+                @click="ruleForm.path.splice(index, 1)"
+              ></i>
+              <el-image
+                style="max-width: 100%; max-height: 100%"
+                :src="$methodsTools.splitImgHost(item)"
+                :preview-src-list="
+                  ruleForm.path.map((i) => $methodsTools.splitImgHost(i))
+                "
+              >
+              </el-image>
+            </li>
+            <li class="img_box" @click="uploadImg">
+              <i class="el-icon-plus"></i>
+            </li>
+          </ul> </el-form-item
+      ></el-form>
+      <input
+        multiple
+        type="file"
+        style="display: none"
+        ref="input_img"
+        @change="getImgFile"
+      />
+    </BaseDialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      ruleForm: {
+        path: [],
+      },
+      rules: {
+        path: [{ required: true, message: "请上传协议", trigger: "blur" }],
+      },
+      formData: {},
+      isShow: false,
+    };
+  },
+  methods: {
+    openBoxs(row) {
+      this.formData = JSON.parse(JSON.stringify(row));
+      this.isShow = true;
+      this.$nextTick(() => {
+        this.$refs.ruleForm.resetFields();
+      });
+    },
+    /**
+     * 上传协议
+     */
+    async getImgFile(e) {
+      let func = (file) => {
+        return new Promise((resolve, reject) => {
+          this.$upload.upload(file, 2).then((res) => {
+            resolve(res);
+          });
+        });
+      };
+      let array = e.target.files || [];
+      for (let i = 0; i < array.length; i++) {
+        var type = array[i].name.toLowerCase().split(".").splice(-1);
+        let typeList = ["jpg", "png", "jpeg", "gif"];
+        if (!typeList.includes(type[0])) {
+          this.$message.error("上传格式需为:.jpg/.png/.jpeg/gif");
+          e.target.value = "";
+          return;
+        }
+        if (array[i].size > 0.3 * 1024 * 1024) {
+          this.$message.error("图片不得大于300kb");
+          e.target.value = "";
+          return;
+        }
+      }
+      for (let i = 0; i < array.length; i++) {
+        this.ruleForm.path.push(await func(array[i]));
+      }
+      this.$refs.ruleForm.validateField("path");
+    },
+    uploadImg() {
+      this.$refs.input_img.click();
+    },
+    close() {},
+    submit() {
+      this.$refs["ruleForm"].validate((valid) => {
+        if (valid) {
+          this.$api
+            .bsCovenantUploadImg({
+              covenantId: this.formData.covenantId,
+              paths: this.ruleForm.path.join(),
+            })
+            .then((res) => {
+              this.isShow = false;
+              this.$emit("search");
+            });
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.img_ul {
+  display: flex;
+  flex-wrap: wrap;
+}
+.img_box {
+  position: relative;
+  flex-shrink: 0;
+  margin: 0px 14px 14px 0px;
+  width: 100px;
+  height: 100px;
+  border: 2px dashed rgb(204, 204, 204);
+  border-radius: 6px;
+  font-size: 28px;
+  line-height: 96px;
+  text-align: center;
+  cursor: pointer;
+  user-select: none;
+  background-color: #fff;
+  img {
+    max-width: 100%;
+    max-height: 100%;
+  }
+  .clear {
+    position: absolute;
+    z-index: 2;
+    top: 0px;
+    right: 0px;
+    color: red;
+    font-size: 20px;
+  }
+}
+</style>

+ 344 - 0
src/views/agreement/protocolUpload/index.vue

@@ -0,0 +1,344 @@
+<template>
+  <div id="withdrawal">
+    <search-box-new
+      :remarkStatus="true"
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="init"
+    />
+    <picture-list
+      ref="pictureList"
+      :info="info"
+      :list="showTabList"
+      @backFunc="pictureFunc"
+    ></picture-list>
+    <table-list
+      ref="tableList"
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      :loading="loading"
+    >
+      <template slot="1" slot-scope="props">
+        <p>协议编号:{{ props.scope.row.covenantNum }}</p>
+        <p>业务员:{{ props.scope.row.saleName || '--' }}</p>
+        <p>业务号:{{ props.scope.row.saleNum || '--' }}</p>
+        <p>
+          申请时间:{{ $methodsTools.onlyForma(props.scope.row.startTime) }}
+        </p>
+        <p>
+          协议时效:{{
+            $methodsTools.onlyForma(props.scope.row.startTime, false) +
+            " - " +
+            $methodsTools.onlyForma(props.scope.row.endTime, false)
+          }}
+        </p>
+        <p>
+          上传状态:{{
+            props.scope.row.uploadStatus === 0
+              ? "待上传"
+              : props.scope.row.uploadStatus === 1
+              ? "待生效"
+              : props.scope.row.uploadStatus === 2
+              ? "已确认"
+              : ""
+          }}
+        </p></template
+      >
+      <template slot="2" slot-scope="props">
+        <p>甲方:{{ props.scope.row.jiaCompanyName }}</p>
+        <p>地址:{{ props.scope.row.jiaCompanyAddress }}</p>
+        <p>联系人:{{ props.scope.row.jiaCompanyContract }}</p>
+        <p>电话:{{ props.scope.row.jiaCompanyPhone }}</p></template
+      ><template slot="3" slot-scope="props">
+        <p>乙方:{{ props.scope.row.yiCompanyName }}</p>
+        <p>地址:{{ props.scope.row.yiCompanyAddress }}</p>
+        <p>联系人:{{ props.scope.row.yiCompanyContract }}</p>
+        <p>电话:{{ props.scope.row.yiCompanyPhone }}</p></template
+      ><template slot="4" slot-scope="props">
+        <li
+          v-for="(item, index) in relectArray(
+            props.scope.row.bsCovenantBusinessVos
+          )"
+          :key="index"
+        >
+          {{ item }}
+        </li></template
+      ><template slot="5" slot-scope="props">
+        <p>周期(月):{{ props.scope.row.settlementCycle }}</p>
+        <p>金额:¥{{ props.scope.row.limitAmount | formatPrice }}</p></template
+      ><template slot="btn" slot-scope="props"
+        ><el-button type="text" @click="XY(3, 3, props.scope.row)"
+          >协议详情</el-button
+        ><el-button
+          type="text"
+          @click="uploadImg(props.scope.row)"
+          :disabled="props.scope.row.covenantImg"
+          >协议上传</el-button
+        ><el-button
+          type="text"
+          :disabled="!props.scope.row.covenantImg"
+          @click="sealAgre(props.scope.row.covenantImg)"
+          >盖章协议</el-button
+        ><el-button
+          type="text"
+          :disabled="props.scope.row.uploadStatus !== 1"
+          @click="comeIntoForce(props.scope.row)"
+          >确认生效</el-button
+        >
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+    <agree-dialog ref="agreeDialog" @search="search(2)"></agree-dialog>
+    <dialog-img ref="dialogImg" @search="search"></dialog-img>
+    <el-image
+      style="display: none"
+      :src="imgList[0]"
+      :preview-src-list="imgList"
+      ref="el_image"
+    >
+    </el-image>
+  </div>
+</template>
+    
+    <script>
+import dialogImg from "./dialogImg.vue";
+import agreeDialog from "../components/agreeDialog";
+import { formatPrice } from "@/directive/filter";
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+import pictureList from "@/components/Comon/pictureList.vue";
+export default {
+  name: "",
+  components: {
+    dialogImg,
+    agreeDialog,
+    searchBoxNew,
+    tableList,
+    pagination,
+    pictureList,
+  },
+  data() {
+    return {
+      disabledBtn: false,
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "协议上传",
+        index: 0,
+        ch: "条",
+        num: true,
+        choice: false,
+        addHide: true,
+        openCheckMore: true,
+        changeWidth: "160px",
+        backFatherBtn: {
+          status: false,
+          title: "配置下单填选模板",
+        },
+      },
+      info: {},
+      showTabList: [
+        {
+          label: "待上传",
+          img: "PendingRefund",
+          prop: "unRefundNum",
+          num: true,
+          color: "#ff7a38",
+          hover: false,
+        },
+        {
+          label: "待生效",
+          img: "PendingRefund",
+          prop: "unRefundNum",
+          num: true,
+          color: "#ff7a38",
+          hover: false,
+        },
+      ],
+      //搜索
+      formList: [
+        {
+          prop: "uploadStatus",
+          placeholder: "上传状态",
+          scope: "select",
+          noClear: false,
+          options: [
+            { label: "待上传", value: 1 },
+            { label: "待生效", value: 2 },
+            { label: "已确认", value: 3 },
+          ],
+        },
+        {
+          lable: "",
+          prop: "searchKey",
+          placeholder: "输入协议编号/甲方姓名/业务员/业务号",
+        },
+      ],
+      formData: {
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "协议记录",
+          hidden: true,
+          scope: "slot",
+          slotName: "1",
+          dontCenter: true,
+        },
+        {
+          label: "甲方信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "2",
+          dontCenter: true,
+        },
+        {
+          label: "乙方信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "3",
+          dontCenter: true,
+        },
+        {
+          label: "协议项目(教育类型/业务层次/商品名称/单价/上限数量)",
+          hidden: true,
+          scope: "slot",
+          slotName: "4",
+          dontCenter: true,
+        },
+        {
+          label: "结算信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "5",
+          dontCenter: true,
+        },
+        {
+          label: "审核意见",
+          prop: "cwSn",
+          hidden: true,
+        },
+      ],
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+      imgList: [
+        "https://file-dev.xyyxt.net/oss/images/file/20230710/1688974188358.png",
+      ],
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    sealAgre(imgStr) {
+      if (!imgStr) return;
+      let ary = imgStr.split(",");
+      this.imgList = ary.map((i) => this.$methodsTools.splitImgHost(i)) || [];
+      this.$refs.el_image.$el.children[0].click();
+    },
+    uploadImg(row) {
+      this.$refs.dialogImg.openBoxs(row);
+    },
+    pictureFunc(item) {
+      // if (item.prop == "unRefundNum") {
+      //   this.formData = {
+      //     pageSize: 10,
+      //     pageNum: 1,
+      //     payStatus: "",
+      //     refundStatus: 0,
+      //   };
+      //   this.search();
+      // }
+    },
+    comeIntoForce(row) {
+      this.$confirm("确定生效吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.$api
+            .bsCovenantConfirmAssert({ covenantId: row.covenantId })
+            .then((res) => {
+              this.$message.success("操作成功");
+              this.search()
+            });
+        })
+        .catch(() => {});
+    },
+    XY(index, type, item = {}) {
+      let data = JSON.parse(JSON.stringify(item));
+      this.$refs.agreeDialog.openBoxs(index, type, data);
+    },
+    relectArray(array) {
+      if (array && array.length > 0) {
+        let ary = [];
+        array.forEach((i) => {
+          let a = i.bsCovenantGoodsVos.map((k) => {
+            return `${i.educationTypeName}/${i.businessName + i.projectName}/${
+              k.goodsName
+            }/¥${formatPrice(k.covenantPrice)}/${
+              k.limitStatus == 1 ? "不限" : k.limitNum
+            }`;
+          });
+          ary.push(...a);
+        });
+        if (ary.length > 5) {
+          ary = ary.splice(0, 5);
+          ary.push("等5项");
+        }
+        return ary || [];
+      } else {
+        return [];
+      }
+    },
+    search(v) {
+      this.loading = true;
+      if (v === 2) {
+        this.formData = {
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      this.$api
+        .bsCovenantGetCovenantUploadList(data)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    init() {
+      this.search(2);
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+  },
+};
+</script>
+    
+    <style lang="scss" scoped>
+</style>
+    

+ 332 - 0
src/views/agreement/terminationManagement/index.vue

@@ -0,0 +1,332 @@
+<template>
+  <div id="withdrawal">
+    <search-box-new
+      :remarkStatus="true"
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="init"
+    />
+    <table-list
+      ref="tableList"
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      :loading="loading"
+    >
+      <template slot="1" slot-scope="props">
+        <p>协议编号:{{ props.scope.row.covenantNum }}</p>
+        <p>业务员:{{ props.scope.row.saleName || '--' }}</p>
+        <p>业务号:{{ props.scope.row.saleNum || '--' }}</p>
+        <p>
+          申请时间:{{ $methodsTools.onlyForma(props.scope.row.startTime) }}
+        </p>
+        <p>
+          协议时效:{{
+            $methodsTools.onlyForma(props.scope.row.startTime, false) +
+            " - " +
+            $methodsTools.onlyForma(props.scope.row.endTime, false)
+          }}
+        </p>
+        <p>
+          终止状态:{{ getStatus(props.scope.row.stopStatus) }}
+        </p></template
+      >
+      <template slot="2" slot-scope="props">
+        <p>甲方:{{ props.scope.row.jiaCompanyName }}</p>
+        <p>地址:{{ props.scope.row.jiaCompanyAddress }}</p>
+        <p>联系人:{{ props.scope.row.jiaCompanyContract }}</p>
+        <p>电话:{{ props.scope.row.jiaCompanyPhone }}</p></template
+      >
+      <template slot="3" slot-scope="props">
+        <li
+          v-for="(item, index) in relectArray(
+            props.scope.row.bsCovenantBusinessVos
+          )"
+          :key="index"
+        >
+          {{ item }}
+        </li></template
+      ><template slot="4" slot-scope="props">
+        <p>周期:{{ $methodsTools.onlyForma(props.scope.row.createTime) }}</p>
+        <p>
+          金额:{{ $methodsTools.onlyForma(props.scope.row.payTime) }}
+        </p></template
+      ><template slot="5" slot-scope="props">
+        <p>应付款:{{ $methodsTools.onlyForma(props.scope.row.createTime) }}</p>
+        <p>已付款:{{ $methodsTools.onlyForma(props.scope.row.payTime) }}</p>
+        <p>
+          未付款:{{ $methodsTools.onlyForma(props.scope.row.payTime) }}
+        </p></template
+      ><template slot="6" slot-scope="props">
+        <p>正常</p>
+        <p>预警</p></template
+      ><template slot="7" slot-scope="props">
+        <p>已开票:xxx</p>
+        <p>待开票:xxx</p></template
+      ><template slot="btn" slot-scope="props"
+        ><el-button type="text" @click="XY(3, 3, props.scope.row)"
+          >协议详情</el-button
+        >
+        <el-button type="text">关联订单</el-button>
+        <el-button
+          type="text"
+          :disabled="!props.scope.row.covenantImg"
+          @click="sealAgre(props.scope.row.covenantImg)"
+          >盖章协议</el-button
+        >
+        <el-button type="text" :disabled="props.scope.row.stopStatus !== 1" @click="cancelXY(props.scope.row)">取消终止</el-button>
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+    <agreeDialog ref="agreeDialog" @search="search(2)"></agreeDialog>
+    <el-image
+      style="display: none"
+      :src="imgList[0]"
+      :preview-src-list="imgList"
+      ref="el_image"
+    >
+    </el-image>
+  </div>
+</template>
+
+<script>
+import { formatPrice } from "@/directive/filter";
+import agreeDialog from "../components/agreeDialog";
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+export default {
+  name: "",
+  components: { agreeDialog, searchBoxNew, tableList, pagination },
+  data() {
+    return {
+      disabledBtn: false,
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "终止管理",
+        index: 0,
+        ch: "条",
+        num: true,
+        choice: false,
+        addHide: true,
+        openCheckMore: true,
+        changeWidth: "160px",
+        backFatherBtn: {
+          status: false,
+          title: "配置下单填选模板",
+        },
+      },
+      //搜索
+      formList: [
+        {
+          prop: "stopStatus",
+          placeholder: "终止状态",
+          scope: "select",
+          noClear: false,
+          options: [
+            { label: "审核中", value: 1 },
+            { label: "不通过", value: 3 },
+            { label: "已终止", value: 4 },
+            { label: "已取消", value: 5 },
+          ],
+        },
+        {
+          lable: "",
+          prop: "searchKey",
+          placeholder: "输入协议编号/甲方姓名/业务员/业务号",
+        },
+      ],
+      formData: {
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "协议记录",
+          hidden: true,
+          scope: "slot",
+          slotName: "1",
+          dontCenter: true,
+        },
+        {
+          label: "甲方信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "2",
+          dontCenter: true,
+        },
+        {
+          label: "协议项目(教育类型/业务层次/商品名称/单价/上限数量)",
+          hidden: true,
+          scope: "slot",
+          slotName: "3",
+          dontCenter: true,
+        },
+        {
+          label: "结算信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "4",
+          dontCenter: true,
+        },
+        {
+          label: "账款信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "5",
+          dontCenter: true,
+        },
+        {
+          label: "结算预警",
+          hidden: true,
+          scope: "slot",
+          slotName: "6",
+          dontCenter: true,
+        },
+        {
+          label: "发票状态",
+          hidden: true,
+          scope: "slot",
+          slotName: "7",
+          dontCenter: true,
+        },
+        {
+          label: "审核意见",
+          prop: "cwSn",
+          hidden: true,
+        },
+      ],
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+      imgList: [
+        "https://file-dev.xyyxt.net/oss/images/file/20230710/1688974188358.png",
+      ],
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    getStatus(i) {
+      let str = "";
+      switch (i) {
+        case 1:
+          str = "待审核";
+          break;
+        case 2:
+          str = "审核通过";
+          break;
+        case 3:
+          str = "审核不通过";
+          break;
+        case 4:
+          str = "已终止";
+          break;
+        case 5:
+          str = "已取消";
+          break;
+
+        default:
+          break;
+      }
+      return str;
+    },
+    //取消终止
+    cancelXY(row) {
+      this.$confirm("确定取消终止吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          this.$api
+            .bsCovenantCancelStopStatus({
+              covenantId: row.covenantId,
+            })
+            .then((res) => {
+              this.$message.success("操作成功");
+              this.search();
+            });
+        })
+        .catch(() => {});
+    },
+    sealAgre(imgStr) {
+      if (!imgStr) return;
+      let ary = imgStr.split(",");
+      this.imgList = ary.map((i) => this.$methodsTools.splitImgHost(i)) || [];
+      this.$refs.el_image.$el.children[0].click();
+    },
+    XY(index, type, item = {}) {
+      let data = JSON.parse(JSON.stringify(item));
+      this.$refs.agreeDialog.openBoxs(index, type, data);
+    },
+    relectArray(array) {
+      if (array && array.length > 0) {
+        let ary = [];
+        array.forEach((i) => {
+          let a = i.bsCovenantGoodsVos.map((k) => {
+            return `${i.educationTypeName}/${i.businessName + i.projectName}/${
+              k.goodsName
+            }/¥${formatPrice(k.covenantPrice)}/${
+              k.limitStatus == 1 ? "不限" : k.limitNum
+            }`;
+          });
+          ary.push(...a);
+        });
+        if (ary.length > 5) {
+          ary = ary.splice(0, 5);
+          ary.push("等5项");
+        }
+        return ary || [];
+      } else {
+        return [];
+      }
+    },
+    search(v) {
+      this.loading = true;
+      if (v === 2) {
+        this.formData = {
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      this.$api
+        .bsCovenantGetStopCovenantList(data)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    init() {
+      this.search(2);
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+  },
+};
+</script>
+    
+    <style lang="scss" scoped>
+</style>
+    

+ 300 - 0
src/views/agreement/terminationOfAudit/index.vue

@@ -0,0 +1,300 @@
+<template>
+  <div id="withdrawal">
+    <search-box-new
+      :remarkStatus="true"
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="init"
+    />
+    <picture-list
+      ref="pictureList"
+      :info="info"
+      :list="showTabList"
+      @backFunc="pictureFunc"
+    ></picture-list>
+    <table-list
+      ref="tableList"
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      :loading="loading"
+    >
+      <template slot="1" slot-scope="props">
+        <p>协议编号:{{ props.scope.row.covenantNum }}</p>
+        <p>业务员:{{ props.scope.row.saleName || '--' }}</p>
+        <p>业务号:{{ props.scope.row.saleNum || '--' }}</p>
+        <p>
+          申请时间:{{ $methodsTools.onlyForma(props.scope.row.startTime) }}
+        </p>
+        <p>
+          协议时效:{{
+            $methodsTools.onlyForma(props.scope.row.startTime, false) +
+            " - " +
+            $methodsTools.onlyForma(props.scope.row.endTime, false)
+          }}
+        </p>
+        <p>审核状态:{{ getStatus(props.scope.row.stopStatus) }}</p></template
+      >
+      <template slot="2" slot-scope="props">
+        <p>甲方:{{ props.scope.row.jiaCompanyName }}</p>
+        <p>地址:{{ props.scope.row.jiaCompanyAddress }}</p>
+        <p>联系人:{{ props.scope.row.jiaCompanyContract }}</p>
+        <p>电话:{{ props.scope.row.jiaCompanyPhone }}</p></template
+      ><template slot="3" slot-scope="props">
+        <p>乙方:{{ props.scope.row.yiCompanyName }}</p>
+        <p>地址:{{ props.scope.row.yiCompanyAddress }}</p>
+        <p>联系人:{{ props.scope.row.yiCompanyContract }}</p>
+        <p>电话:{{ props.scope.row.yiCompanyPhone }}</p></template
+      >
+      <template slot="4" slot-scope="props">
+        <li
+          v-for="(item, index) in relectArray(
+            props.scope.row.bsCovenantBusinessVos
+          )"
+          :key="index"
+        >
+          {{ item }}
+        </li></template
+      ><template slot="5" slot-scope="props">
+        <p>周期:{{ $methodsTools.onlyForma(props.scope.row.createTime) }}</p>
+        <p>
+          金额:{{ $methodsTools.onlyForma(props.scope.row.payTime) }}
+        </p></template
+      ><template slot="btn" slot-scope="props"
+        ><el-button type="text" @click="XY(3, 3, props.scope.row)"
+          >协议详情</el-button
+        >
+        <el-button
+          type="text"
+          @click="XY(3, 5, props.scope.row)"
+          :disabled="props.scope.row.stopStatus !== 1"
+          >终止审核</el-button
+        >
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+    <agreeDialog ref="agreeDialog" @search="search(2)"></agreeDialog>
+  </div>
+</template>
+    
+    <script>
+import { formatPrice } from "@/directive/filter";
+import agreeDialog from "../components/agreeDialog";
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+import pictureList from "@/components/Comon/pictureList.vue";
+export default {
+  name: "",
+  components: { agreeDialog, searchBoxNew, tableList, pagination, pictureList },
+  data() {
+    return {
+      disabledBtn: false,
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "终止审核",
+        index: 0,
+        ch: "条",
+        num: true,
+        choice: false,
+        addHide: true,
+        openCheckMore: true,
+        changeWidth: "160px",
+        backFatherBtn: {
+          status: false,
+          title: "配置下单填选模板",
+        },
+      },
+      info: {},
+      showTabList: [
+        {
+          label: "待审核",
+          img: "PendingRefund",
+          prop: "unRefundNum",
+          num: true,
+          color: "#ff7a38",
+          hover: false,
+        },
+      ],
+      //搜索
+      formList: [
+        {
+          prop: "stopStatus",
+          placeholder: "审核状态",
+          scope: "select",
+          noClear: false,
+          options: [
+            { label: "待审核", value: 1 },
+            { label: "已通过", value: 2 },
+            { label: "不通过", value: 3 },
+          ],
+        },
+        {
+          lable: "",
+          prop: "searchKey",
+          placeholder: "输入协议编号/甲方姓名/业务员/业务号",
+        },
+      ],
+      formData: {
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "协议记录",
+          hidden: true,
+          scope: "slot",
+          slotName: "1",
+          dontCenter: true,
+        },
+        {
+          label: "甲方信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "2",
+          dontCenter: true,
+        },
+        {
+          label: "乙方信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "3",
+          dontCenter: true,
+        },
+        {
+          label: "协议项目(教育类型/业务层次/商品名称/单价/上限数量)",
+          hidden: true,
+          scope: "slot",
+          slotName: "4",
+          dontCenter: true,
+        },
+        {
+          label: "结算信息",
+          hidden: true,
+          scope: "slot",
+          slotName: "5",
+          dontCenter: true,
+        },
+        {
+          label: "审核意见",
+          prop: "cwSn",
+          hidden: true,
+        },
+      ],
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    getStatus(i) {
+      let str = "";
+      switch (i) {
+        case 1:
+          str = "待审核";
+          break;
+        case 2:
+          str = "审核通过";
+          break;
+        case 3:
+          str = "审核不通过";
+          break;
+        case 4:
+          str = "已终止";
+          break;
+        case 5:
+          str = "已取消";
+          break;
+
+        default:
+          break;
+      }
+      return str;
+    },
+    XY(index, type, item = {}) {
+      let data = JSON.parse(JSON.stringify(item));
+      this.$refs.agreeDialog.openBoxs(index, type, data);
+    },
+    relectArray(array) {
+      if (array && array.length > 0) {
+        let ary = [];
+        array.forEach((i) => {
+          let a = i.bsCovenantGoodsVos.map((k) => {
+            return `${i.educationTypeName}/${i.businessName + i.projectName}/${
+              k.goodsName
+            }/¥${formatPrice(k.covenantPrice)}/${
+              k.limitStatus == 1 ? "不限" : k.limitNum
+            }`;
+          });
+          ary.push(...a);
+        });
+        if (ary.length > 5) {
+          ary = ary.splice(0, 5);
+          ary.push("等5项");
+        }
+        return ary || [];
+      } else {
+        return [];
+      }
+    },
+    pictureFunc(item) {
+      // if (item.prop == "unRefundNum") {
+      //   this.formData = {
+      //     pageSize: 10,
+      //     pageNum: 1,
+      //     payStatus: "",
+      //     refundStatus: 0,
+      //   };
+      //   this.search();
+      // }
+    },
+    search(v) {
+      this.loading = true;
+      if (v === 2) {
+        this.formData = {
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      this.$api
+        .bsCovenantGetStopCheckList(data)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    init() {
+      this.search(2);
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+  },
+};
+</script>
+    
+    <style lang="scss" scoped>
+</style>
+    

+ 4 - 4
src/views/financed/accountsPayable/businessCommission/index.vue

@@ -260,15 +260,15 @@ export default {
           label: "剩余天数",
           prop: "predictPayDay",
           hidden: true,
-          scope: "solt",
-          soltName: "predictPayDay",
+          scope: "slot",
+          slotName: "predictPayDay",
         },
         {
           label: "审核状态",
           prop: "payStatus",
           hidden: true,
-          scope: "solt",
-          soltName: "payStatus",
+          scope: "slot",
+          slotName: "payStatus",
         },
         {
           label: "审核意见",

+ 4 - 4
src/views/financed/accountsPayable/commissionSettlement/index.vue

@@ -249,8 +249,8 @@ export default {
           label: "奖金税占比",
           prop: "pretax",
           hidden: true,
-          scope: "solt",
-          soltName: "pretax",
+          scope: "slot",
+          slotName: "pretax",
         },
         {
           label: "结算奖金",
@@ -273,8 +273,8 @@ export default {
           label: "审核状态",
           prop: "checkStatus",
           hidden: true,
-          scope: "solt",
-          soltName: "checkStatus",
+          scope: "slot",
+          slotName: "checkStatus",
         },
         {
           label: "审核意见",

+ 4 - 4
src/views/financed/accountsPayable/institutionDivide/index.vue

@@ -251,15 +251,15 @@ export default {
           label: "剩余天数",
           prop: "predictPayDay",
           hidden: true,
-          scope: "solt",
-          soltName: "predictPayDay",
+          scope: "slot",
+          slotName: "predictPayDay",
         },
         {
           label: "审核状态",
           prop: "payStatus",
           hidden: true,
-          scope: "solt",
-          soltName: "payStatus",
+          scope: "slot",
+          slotName: "payStatus",
         },
         {
           label: "审核意见",

+ 4 - 4
src/views/financed/accountsPayable/operationsReceivable/index.vue

@@ -237,14 +237,14 @@ export default {
           label: "剩余天数",
           prop: "predictReceiveDay",
           hidden: true,
-          scope: "solt",
-          soltName: "predictPayTime",
+          scope: "slot",
+          slotName: "predictPayTime",
         },
         {
           label: "提醒设置",
           prop: "noteType",
-          scope: "solt",
-          soltName: "noteType",
+          scope: "slot",
+          slotName: "noteType",
           hidden: true,
         },
         {

+ 6 - 6
src/views/financed/accountsPayable/supplierSettlement/index.vue

@@ -335,8 +335,8 @@ export default {
         {
           label: "结算金额",
           hidden: true,
-          scope: "solt",
-          soltName: "orderPrice",
+          scope: "slot",
+          slotName: "orderPrice",
         },
         {
           label: "供应商",
@@ -346,14 +346,14 @@ export default {
         {
           label: "收款信息",
           hidden: true,
-          scope: "solt",
-          soltName: "bank",
+          scope: "slot",
+          slotName: "bank",
         },
         {
           label: "审核状态",
           hidden: true,
-          scope: "solt",
-          soltName: "status",
+          scope: "slot",
+          slotName: "status",
         },
         {
           label: "审核时间",

+ 2 - 2
src/views/financed/components/studentDetails.vue

@@ -322,8 +322,8 @@ export default {
           label: "开票信息",
           prop: "",
           hidden: true,
-          scope: "solt",
-          soltName: "orderInfo",
+          scope: "slot",
+          slotName: "orderInfo",
         },
         {
           label: "收票信息",

+ 2 - 2
src/views/financed/costSet/organ.vue

@@ -114,8 +114,8 @@ export default {
           label: "默认",
           prop: "startTime",
           hidden: true,
-          scope: "solt",
-          soltName: "status",
+          scope: "slot",
+          slotName: "status",
         },
       ],
       tableData: [],

+ 2 - 2
src/views/financed/costSet/supplier.vue

@@ -120,8 +120,8 @@ export default {
           label: "默认",
           prop: "startTime",
           hidden: true,
-          scope: "solt",
-          soltName: "status",
+          scope: "slot",
+          slotName: "status",
         },
       ],
       tableData: [],

+ 11 - 11
src/views/financed/orderManageList/independent/index.vue

@@ -453,7 +453,7 @@ export default {
           prop: "createUsername",
           placeholder: "业务员",
         },
-        { scope: "solt", soltName: "slotSearch" },
+        { scope: "slot", slotName: "slotSearch" },
         {
           placeholder: "时间",
           prop1: "startTime",
@@ -490,30 +490,30 @@ export default {
           label: "业务类型",
           prop: "businessNames",
           hidden: true,
-          scope: "solt",
-          soltName: "type",
+          scope: "slot",
+          slotName: "type",
         },
         {
           label: "订单信息",
           prop: "name",
           hidden: true,
-          scope: "solt",
-          soltName: "orderInfo",
+          scope: "slot",
+          slotName: "orderInfo",
           width: "300px",
         },
         {
           label: "订单金额(元)",
           prop: "posterTempName",
           hidden: true,
-          scope: "solt",
-          soltName: "orderPrice",
+          scope: "slot",
+          slotName: "orderPrice",
         },
         {
           label: "投入产出",
           prop: "posterTempName1",
           hidden: true,
-          scope: "solt",
-          soltName: "inon",
+          scope: "slot",
+          slotName: "inon",
         },
         {
           label: "订单状态",
@@ -543,8 +543,8 @@ export default {
           label: "退款状态",
           prop: "startTime",
           hidden: true,
-          scope: "solt",
-          soltName: "statusRoles",
+          scope: "slot",
+          slotName: "statusRoles",
         },
         {
           label: "学员状态",

+ 11 - 11
src/views/financed/orderManageList/operate/index.vue

@@ -546,7 +546,7 @@ export default {
           prop: "createUsername",
           placeholder: "业务员",
         },
-        { scope: "solt", soltName: "slotSearch" },
+        { scope: "slot", slotName: "slotSearch" },
         {
           placeholder: "时间",
           prop1: "startTime",
@@ -583,30 +583,30 @@ export default {
           label: "业务类型",
           prop: "businessNames",
           hidden: true,
-          scope: "solt",
-          soltName: "type",
+          scope: "slot",
+          slotName: "type",
         },
         {
           label: "订单信息",
           prop: "name",
           hidden: true,
-          scope: "solt",
-          soltName: "orderInfo",
+          scope: "slot",
+          slotName: "orderInfo",
           width: "300px",
         },
         {
           label: "订单金额(元)",
           prop: "posterTempName",
           hidden: true,
-          scope: "solt",
-          soltName: "orderPrice",
+          scope: "slot",
+          slotName: "orderPrice",
         },
         {
           label: "投入产出",
           prop: "posterTempName1",
           hidden: true,
-          scope: "solt",
-          soltName: "inon",
+          scope: "slot",
+          slotName: "inon",
         },
         {
           label: "订单状态",
@@ -636,8 +636,8 @@ export default {
           label: "退款状态",
           prop: "startTime",
           hidden: true,
-          scope: "solt",
-          soltName: "statusRoles",
+          scope: "slot",
+          slotName: "statusRoles",
         },
         {
           label: "学员状态",

+ 6 - 6
src/views/financed/subscription/acceptance.vue

@@ -171,16 +171,16 @@ export default {
           label: "订单信息",
           prop: "name",
           hidden: true,
-          scope: "solt",
-          soltName: "orderInfo",
+          scope: "slot",
+          slotName: "orderInfo",
           width: "300px",
         },
         {
           label: "订单金额(元)",
           prop: "posterTempName",
           hidden: true,
-          scope: "solt",
-          soltName: "orderPrice",
+          scope: "slot",
+          slotName: "orderPrice",
           width: "280px",
         },
         {
@@ -200,8 +200,8 @@ export default {
           label: "业务类型",
           prop: "businessNames",
           hidden: true,
-          scope: "solt",
-          soltName: "businessNames",
+          scope: "slot",
+          slotName: "businessNames",
           width: "200px",
         },
         {

+ 4 - 4
src/views/financed/subscription/index.vue

@@ -217,8 +217,8 @@ export default {
         {
           label: "收款账户信息",
           hidden: true,
-          scope: "solt",
-          soltName: "AccountInformation1",
+          scope: "slot",
+          slotName: "AccountInformation1",
         },
         {
           label: "到账金额",
@@ -237,8 +237,8 @@ export default {
         {
           label: "付款账户信息",
           hidden: true,
-          scope: "solt",
-          soltName: "AccountInformation2",
+          scope: "slot",
+          slotName: "AccountInformation2",
         },
         {
           label: "到账时间",

+ 6 - 6
src/views/financed/subscription/linkedOrder.vue

@@ -106,16 +106,16 @@ export default {
           label: "订单信息",
           prop: "name",
           hidden: true,
-          scope: "solt",
-          soltName: "orderInfo",
+          scope: "slot",
+          slotName: "orderInfo",
           width: "300px",
         },
         {
           label: "订单金额(元)",
           prop: "posterTempName",
           hidden: true,
-          scope: "solt",
-          soltName: "orderPrice",
+          scope: "slot",
+          slotName: "orderPrice",
           width: "280px",
         },
         {
@@ -135,8 +135,8 @@ export default {
           label: "业务类型",
           prop: "businessNames",
           hidden: true,
-          scope: "solt",
-          soltName: "businessNames",
+          scope: "slot",
+          slotName: "businessNames",
           width: "200px",
         },
         {

+ 2 - 2
src/views/integralManagement/chargeManagement/index.vue

@@ -111,8 +111,8 @@ export default {
           label: "消费积分",
           prop: "g",
           hidden: true,
-          scope: "solt",
-          soltName: "integral",
+          scope: "slot",
+          slotName: "integral",
         },
       ],
       tableData: [],

+ 8 - 8
src/views/integralManagement/giftGoods/index.vue

@@ -154,8 +154,8 @@ export default {
           label: "关联使用",
           prop: "useType",
           hidden: true,
-          scope: "solt",
-          soltName: "about",
+          scope: "slot",
+          slotName: "about",
         },
         {
           label: "商品名称",
@@ -166,14 +166,14 @@ export default {
           label: "商品主图",
           prop: "mainImg",
           hidden: true,
-          scope: "solt",
-          soltName: "images",
+          scope: "slot",
+          slotName: "images",
         },
         {
           label: "兑换积分",
           hidden: true,
-          scope: "solt",
-          soltName: "rule",
+          scope: "slot",
+          slotName: "rule",
         },
         {
           label: "商品原价",
@@ -189,8 +189,8 @@ export default {
           label: "上架状态",
           prop: "goodsStatus",
           hidden: true,
-          scope: "solt",
-          soltName: "status",
+          scope: "slot",
+          slotName: "status",
         },
         {
           label: "录入时间",

+ 2 - 2
src/views/integralManagement/goodsClassification/index.vue

@@ -111,8 +111,8 @@ export default {
           label: "启用状态",
           prop: "status",
           hidden: true,
-          scope: "solt",
-          soltName: "status",
+          scope: "slot",
+          slotName: "status",
         },
         {
           label: "创建时间",

+ 2 - 2
src/views/integralManagement/merchantManageMent/index.vue

@@ -90,8 +90,8 @@ export default {
           label: "启用状态",
           prop: "status",
           hidden: true,
-          scope: "solt",
-          soltName: "status",
+          scope: "slot",
+          slotName: "status",
         },
         {
           label: "录入时间",

+ 2 - 2
src/views/integralManagement/storeManageMent/index.vue

@@ -103,8 +103,8 @@ export default {
           label: "启用状态",
           prop: "status",
           hidden: true,
-          scope: "solt",
-          soltName: "status",
+          scope: "slot",
+          slotName: "status",
         },
         {
           label: "创建时间",

+ 2 - 2
src/views/integralManagement/writeOff/index.vue

@@ -111,8 +111,8 @@ export default {
           label: "消费积分",
           prop: "g",
           hidden: true,
-          scope: "solt",
-          soltName: "integral",
+          scope: "slot",
+          slotName: "integral",
         },
       ],
       tableData: [],

+ 2 - 2
src/views/orderData/orderDetail/index.vue

@@ -500,8 +500,8 @@ export default {
           placeholder: "输入身份证号",
         },
         {
-          scope: "solt",
-          soltName: "slotSearch",
+          scope: "slot",
+          slotName: "slotSearch",
         },
       ],
       formData: {

+ 2 - 2
src/views/systemManagement/functional/index.vue

@@ -84,8 +84,8 @@ export default {
         {
           label: "收款账号",
           hidden: true,
-          scope: "solt",
-          soltName: "status",
+          scope: "slot",
+          slotName: "status",
         },
       ],
       tableData: [],

+ 8 - 8
src/views/systemManagement/mechanism/index.vue

@@ -154,15 +154,15 @@ export default {
           label: "网站域名",
           prop: "address",
           hidden: true,
-          scope: "solt",
-          soltName: "domainName",
+          scope: "slot",
+          slotName: "domainName",
         },
         {
           label: "账期设置",
           prop: "address",
           hidden: true,
-          scope: "solt",
-          soltName: "accountPeriodSetting",
+          scope: "slot",
+          slotName: "accountPeriodSetting",
         },
         {
           label: "教务电话",
@@ -189,15 +189,15 @@ export default {
           label: "银行账号信息",
           prop: "accountList",
           hidden: true,
-          scope: "solt",
-          soltName: "status",
+          scope: "slot",
+          slotName: "status",
         },
         {
           label: "发票信息",
           prop: "address",
           hidden: true,
-          scope: "solt",
-          soltName: "invoiceInformation",
+          scope: "slot",
+          slotName: "invoiceInformation",
         },
       ],
       tableData: [],