{"version":3,"sources":["webpack:///./src/views/approvalMGT/index.vue","webpack:///src/views/approvalMGT/index.vue","webpack:///./src/views/approvalMGT/index.vue?85cf","webpack:///./src/views/approvalMGT/index.vue?4e90","webpack:///./src/api/approvalMgt.js","webpack:///./src/views/approvalMGT/index.vue?d981","webpack:///./src/utils/mixins/crmListParameterInfo.js","webpack:///./src/utils/templateConfig.js"],"names":["render","_vm","this","_c","_self","ref","staticClass","attrs","searchInput","form","on","search","_l","titleList","item","key","class","active","$event","changeItem","_v","_s","name","interfaceDataList","length","listLoading","_e","index","getTemplateByKey","processKey","templateName","fields","field","alias","getItemValue","handleApprove","hasMore","staticRenderFns","mixins","listParameterInfo","components","searchComp","moreSearch","data","templateConfig","tit","value","type","listPage","page","pageSize","observer","mounted","console","log","_info","initIntersectionObserver","beforeDestroy","disconnect","methods","IntersectionObserver","entries","entry","isIntersecting","getList","getList2","threshold","placeholder","document","createElement","id","$refs","listContainer","appendChild","observe","_this$templateConfig","conditions","resetPage","parametersInfo","status","showLoading","$nextTick","_query","Object","assign","getpagePendingApproval","then","res","total","records","result","Math","ceil","displayRecords","filter","isCcsFlow","concat","hideLoading","closeLoad","checkLoadMore","catch","getpageApproval","el","getElementById","getBoundingClientRect","top","window","innerHeight","processName","indexOf","includes","json","JSON","parse","fieldJson","k","replace","e","$router","push","path","query","taskId","instanceId","instanceState","component","cloud","process","request","url","method","getbusiness","params","startCrmOrderProcess","getApprovalInfo","consent","rejection","secondaryApprovalSendMessage","revokeCrmOrderProcess","list","pageNum","refreshLoading","finished","compensation","customerComplaint","creditApplicationApproval002","tcSalesApproval03","tcSalesApproval02","tcSalesApproval01"],"mappings":"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","file":"js/chunk-07fefb46.v0.1.2.1794211824866.js?hash=v0.1.2.1794211824866","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"billContainer\",staticClass:\"billManagement\"},[_c('div',{staticClass:\"search-tab-box\"},[_c('div',{staticClass:\"search-box\"},[_c('moreSearch',{attrs:{\"searchItemList\":_vm.searchInput,\"searchData\":_vm.form},on:{\"search\":_vm.search}}),_c('searchComp',{ref:\"searchComp\",attrs:{\"search\":_vm.search,\"defaultForm\":_vm.form}})],1),_c('div',{staticClass:\"tab-container\"},_vm._l((_vm.titleList),function(item){return _c('div',{key:item.key,class:['tab-item', { active: _vm.active === item.key }],on:{\"click\":function($event){return _vm.changeItem(item)}}},[_vm._v(\" \"+_vm._s(item.name)+\" \")])}),0)]),_c('div',{ref:\"listContainer\",staticClass:\"data-container\"},[(\n        !_vm.interfaceDataList || (_vm.interfaceDataList.length === 0 && !_vm.listLoading)\n      )?_c('div',{staticClass:\"empty-box\"},[_c('p',[_vm._v(\"暂无数据\")])]):_vm._e(),_vm._l((_vm.interfaceDataList),function(item,index){return _c('div',{key:index,staticClass:\"data-card\"},[_c('div',{staticClass:\"data-card__title\"},[_c('span',[_vm._v(_vm._s(_vm.getTemplateByKey(item.processKey).templateName || \"未知模板\"))])]),(_vm.getTemplateByKey(item.processKey))?_c('div',{staticClass:\"key-value-table\"},[_vm._l((_vm.getTemplateByKey(item.processKey).fields),function(field){return _c('div',{key:field.key,staticClass:\"key-value-row\"},[_c('div',{staticClass:\"key-cell\"},[_c('span',{staticClass:\"key-text\"},[_vm._v(_vm._s(field.alias))])]),_c('div',{staticClass:\"separator-cell\"},[_vm._v(\"：\")]),_c('div',{staticClass:\"value-cell\"},[_c('span',{staticClass:\"value-text\"},[_vm._v(\" \"+_vm._s(_vm.getItemValue(item, field.key) || \"无数据\")+\" \")])])])}),_c('div',{staticClass:\"approval-actions\"},[(_vm.active === 'contract')?_c('van-button',{attrs:{\"type\":\"primary\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.handleApprove(item)}}},[_vm._v(\" 审批 \")]):_vm._e()],1)],2):_c('div',{staticClass:\"empty-box inner-empty\"},[_c('p',[_vm._v(\"暂无可用模板配置\")])])])}),(_vm.listLoading && _vm.interfaceDataList.length > 0)?_c('div',{staticClass:\"loading-box\"},[_c('p',[_vm._v(\"加载中...\")])]):_vm._e(),(!_vm.hasMore && _vm.interfaceDataList.length > 0)?_c('div',{staticClass:\"no-more-box\"},[_c('p',[_vm._v(\"已加载全部数据\")])]):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"billManagement\" ref=\"billContainer\">\r\n    <!-- 搜索+Tab区域 -->\r\n    <div class=\"search-tab-box\">\r\n      <!-- 搜索条件 -->\r\n      <div class=\"search-box\">\r\n        <moreSearch\r\n          :searchItemList=\"searchInput\"\r\n          :searchData=\"form\"\r\n          @search=\"search\"\r\n        />\r\n        <searchComp\r\n          :search=\"search\"\r\n          :defaultForm=\"form\"\r\n          ref=\"searchComp\"\r\n        ></searchComp>\r\n      </div>\r\n\r\n      <!-- Tab切换 -->\r\n      <div class=\"tab-container\">\r\n        <div\r\n          v-for=\"item in titleList\"\r\n          :key=\"item.key\"\r\n          :class=\"['tab-item', { active: active === item.key }]\"\r\n          @click=\"changeItem(item)\"\r\n        >\r\n          {{ item.name }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- 数据列表 -->\r\n    <div class=\"data-container\" ref=\"listContainer\">\r\n      <!-- 空状态 -->\r\n      <div\r\n        v-if=\"\r\n          !interfaceDataList || (interfaceDataList.length === 0 && !listLoading)\r\n        \"\r\n        class=\"empty-box\"\r\n      >\r\n        <p>暂无数据</p>\r\n      </div>\r\n\r\n      <!-- 数据项 -->\r\n      <div\r\n        v-for=\"(item, index) in interfaceDataList\"\r\n        :key=\"index\"\r\n        class=\"data-card\"\r\n      >\r\n        <!-- 数据卡片标题 -->\r\n        <div class=\"data-card__title\">\r\n          <span>{{\r\n            getTemplateByKey(item.processKey).templateName || \"未知模板\"\r\n          }}</span>\r\n        </div>\r\n\r\n        <!-- 有模板的情况 -->\r\n        <div v-if=\"getTemplateByKey(item.processKey)\" class=\"key-value-table\">\r\n          <div\r\n            v-for=\"field in getTemplateByKey(item.processKey).fields\"\r\n            :key=\"field.key\"\r\n            class=\"key-value-row\"\r\n          >\r\n            <!-- 左侧key -->\r\n            <div class=\"key-cell\">\r\n              <span class=\"key-text\">{{ field.alias }}</span>\r\n            </div>\r\n            <!-- 分隔符 -->\r\n            <div class=\"separator-cell\">：</div>\r\n            <!-- 右侧value（核心修复：通过class控制无数据样式） -->\r\n            <div class=\"value-cell\">\r\n              <span class=\"value-text\">\r\n                {{ getItemValue(item, field.key) || \"无数据\" }}\r\n              </span>\r\n            </div>\r\n          </div>\r\n          <!-- 审批按钮 -->\r\n          <div class=\"approval-actions\">\r\n            <van-button\r\n              type=\"primary\"\r\n              size=\"small\"\r\n              @click=\"handleApprove(item)\"\r\n              v-if=\"active === 'contract'\"\r\n            >\r\n              审批\r\n            </van-button>\r\n          </div>\r\n        </div>\r\n\r\n        <!-- 无模板的情况 -->\r\n        <div v-else class=\"empty-box inner-empty\">\r\n          <p>暂无可用模板配置</p>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- 加载中提示 -->\r\n      <div\r\n        v-if=\"listLoading && interfaceDataList.length > 0\"\r\n        class=\"loading-box\"\r\n      >\r\n        <p>加载中...</p>\r\n      </div>\r\n\r\n      <!-- 没有更多数据提示 -->\r\n      <div v-if=\"!hasMore && interfaceDataList.length > 0\" class=\"no-more-box\">\r\n        <p>已加载全部数据</p>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport searchComp from \"@/components/searchComp\";\r\nimport moreSearch from \"../crm/components/searchComp/moreSearch.vue\";\r\nimport listParameterInfo from \"@/utils/mixins/crmListParameterInfo\";\r\nimport { getpagePendingApproval, getpageApproval } from \"@/api/approvalMgt\";\r\nimport templateConfig from \"@/utils/templateConfig.js\";\r\n\r\nexport default {\r\n  name: \"approvalMGT\",\r\n  mixins: [listParameterInfo],\r\n  components: { searchComp, moreSearch },\r\n  data() {\r\n    return {\r\n      templateConfig,\r\n      searchInput: [{ tit: \"流程名称\", value: \"processName\", type: \"input\" }],\r\n      titleList: [\r\n        { name: \"待审批\", key: \"contract\" },\r\n        { name: \"已审批\", key: \"order\" },\r\n      ],\r\n      active: \"contract\",\r\n      form: {},\r\n      interfaceDataList: [],\r\n      listLoading: false,\r\n      listPage: 1,\r\n      page: { pageSize: 10, page: 1 },\r\n      hasMore: true, // 是否还有更多数据\r\n      observer: null, // 滚动观察器实例\r\n    };\r\n  },\r\n  mounted() {\r\n    console.log(\"BillManagement mounted\");\r\n    this._info();\r\n    this.initIntersectionObserver(); // 初始化懒加载监听\r\n  },\r\n  beforeDestroy() {\r\n    // 销毁观察器，防止内存泄漏\r\n    if (this.observer) {\r\n      this.observer.disconnect();\r\n    }\r\n  },\r\n  methods: {\r\n    // 初始化交叉观察器（懒加载核心）\r\n    initIntersectionObserver() {\r\n      // 创建观察器，监听滚动到底部\r\n      this.observer = new IntersectionObserver(\r\n        (entries) => {\r\n          const entry = entries[0];\r\n          // 当底部占位元素进入视口，且当前没有加载中，且还有更多数据时加载下一页\r\n          if (entry.isIntersecting && !this.listLoading && this.hasMore) {\r\n            this.page.page += 1; // 页码+1\r\n            this.active === \"contract\" ? this.getList() : this.getList2();\r\n          }\r\n        },\r\n        { threshold: 0.1 }, // 元素10%进入视口时触发\r\n      );\r\n\r\n      // 创建底部占位元素并监听\r\n      const placeholder = document.createElement(\"div\");\r\n      placeholder.id = \"lazyLoadPlaceholder\";\r\n      this.$refs.listContainer.appendChild(placeholder);\r\n      this.observer.observe(placeholder);\r\n    },\r\n\r\n    // 根据key匹配模板（添加可选链操作符，防止报错）\r\n    getTemplateByKey(processKey) {\r\n      return this.templateConfig?.[processKey];\r\n    },\r\n\r\n    // 搜索（重置分页和数据）\r\n    search(conditions) {\r\n      this.form.data = conditions;\r\n      this.resetPage(); // 重置分页\r\n      this.parametersInfo();\r\n      this.getList();\r\n    },\r\n\r\n    // Tab切换（重置分页和数据）\r\n    changeItem(item) {\r\n      this.resetPage(); // 重置分页\r\n      this.interfaceDataList = [];\r\n      this.active = item.key;\r\n      this.form.status = item.key == \"contract\" ? 0 : 1;\r\n      this.parametersInfo();\r\n      this.showLoading();\r\n      if (item.key == \"contract\") {\r\n        this.getList();\r\n      } else {\r\n        this.getList2();\r\n      }\r\n    },\r\n\r\n    // 重置分页参数\r\n    resetPage() {\r\n      this.page = { pageSize: 10, page: 1 };\r\n      this.hasMore = true;\r\n      this.listPage = 1;\r\n    },\r\n\r\n    // 初始化查询\r\n    _info() {\r\n      console.log(\"_info\");\r\n      this.parametersInfo();\r\n      this.showLoading();\r\n      this.$nextTick(() => this.getList());\r\n    },\r\n\r\n    // 获取待审批列表数据\r\n    getList() {\r\n      // 如果没有更多数据，直接返回\r\n      if (!this.hasMore) return;\r\n\r\n      const _query = Object.assign({}, this.form, this.page);\r\n      this.listLoading = true;\r\n      getpagePendingApproval(_query)\r\n        .then((res) => {\r\n          this.listLoading = false;\r\n          const { total, records } = res.result || { total: 0, records: [] };\r\n          this.listPage = Math.ceil(total / this.page.pageSize);\r\n\r\n          // 客诉赔偿审批数据不在审批管理展示（有专门的“客诉赔偿审批”入口）\r\n          const displayRecords = records.filter(item => !this.isCcsFlow(item));\r\n\r\n          // 第一页替换数据，后续页拼接数据\r\n          if (this.page.page === 1) {\r\n            this.interfaceDataList = displayRecords;\r\n          } else {\r\n            this.interfaceDataList = this.interfaceDataList.concat(displayRecords);\r\n          }\r\n\r\n          // 判断是否还有更多数据\r\n          this.hasMore = this.page.page < this.listPage;\r\n\r\n          this.hideLoading();\r\n          this.closeLoad();\r\n          this.checkLoadMore();\r\n        })\r\n        .catch(() => {\r\n          this.listLoading = false;\r\n          this.closeLoad();\r\n          this.hasMore = false; // 加载失败时停止加载\r\n        });\r\n    },\r\n\r\n    // 获取已审批列表数据\r\n    getList2() {\r\n      // 如果没有更多数据，直接返回\r\n      if (!this.hasMore) return;\r\n\r\n      const _query = Object.assign({}, this.form, this.page);\r\n      this.listLoading = true;\r\n      getpageApproval(_query)\r\n        .then((res) => {\r\n          this.listLoading = false;\r\n          const { total, records } = res.result || { total: 0, records: [] };\r\n          this.listPage = Math.ceil(total / this.page.pageSize);\r\n\r\n          // 客诉赔偿审批数据不在审批管理展示（有专门的“客诉赔偿审批”入口）\r\n          const displayRecords = records.filter(item => !this.isCcsFlow(item));\r\n\r\n          // 第一页替换数据，后续页拼接数据\r\n          if (this.page.page === 1) {\r\n            this.interfaceDataList = displayRecords;\r\n          } else {\r\n            this.interfaceDataList = this.interfaceDataList.concat(displayRecords);\r\n          }\r\n\r\n          // 判断是否还有更多数据\r\n          this.hasMore = this.page.page < this.listPage;\r\n\r\n          this.hideLoading();\r\n          this.closeLoad();\r\n          this.checkLoadMore();\r\n        })\r\n        .catch(() => {\r\n          this.listLoading = false;\r\n          this.closeLoad();\r\n          this.hasMore = false; // 加载失败时停止加载\r\n        });\r\n    },\r\n    // 懒加载兜底：本页数据被过滤（客诉赔偿剔除）后可能整页滤空或填不满一屏，\r\n    // 底部占位元素一直停留在视口内，IntersectionObserver 只在可见性变化时回调、不会重复触发，\r\n    // 翻页会卡住；这里每次加载完主动检查：还有下一页且占位元素仍在视口内就继续取下一页\r\n    checkLoadMore() {\r\n      this.$nextTick(() => {\r\n        if (!this.hasMore || this.listLoading) return;\r\n        const el = document.getElementById(\"lazyLoadPlaceholder\");\r\n        if (!el) return;\r\n        if (el.getBoundingClientRect().top < window.innerHeight) {\r\n          this.page.page += 1;\r\n          this.active === \"contract\" ? this.getList() : this.getList2();\r\n        }\r\n      });\r\n    },\r\n    // 是否客诉赔偿流程：processKey 精确匹配，或流程名包含“客诉赔偿”\r\n    // （与客诉赔偿审批页 CustomerCcListApproval/index.vue 的 isCcsFlow 同款规则，两边保持一致）\r\n    isCcsFlow(item) {\r\n      if (!item) return false;\r\n      if (item.processKey === \"compensation\") return true;\r\n      return (item.processName || \"\").indexOf(\"客诉赔偿\") > -1;\r\n    },\r\n    getItemValue(item, key) {\r\n      if (!key.includes(\"fieldJson.\")) {\r\n        return item[key];\r\n      }\r\n\r\n      // 解析 fieldJson\r\n      try {\r\n        const json = JSON.parse(item.fieldJson);\r\n        const k = key.replace(\"fieldJson.\", \"\");\r\n        return json[k];\r\n      } catch (e) {\r\n        return null;\r\n      }\r\n    },\r\n    // 点击审批跳转详情\r\n    handleApprove(item) {\r\n      // approve: 0;\r\n      this.$router.push({\r\n        path: \"approveInfo\",\r\n        query: {\r\n          id: item.id,\r\n          taskId: item.taskId,\r\n          instanceId: item.instanceId,\r\n          instanceState: item.instanceState,\r\n          key: item.processKey,\r\n        },\r\n      });\r\n    },\r\n\r\n    // 占位方法（根据实际项目实现）\r\n    showLoading() {},\r\n    hideLoading() {},\r\n    closeLoad() {},\r\n    parametersInfo() {},\r\n  },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n// 基础样式\r\n.billManagement {\r\n  padding: 20px;\r\n  background: #f5f7fa;\r\n  min-height: 100vh;\r\n}\r\n\r\n// 搜索+Tab容器\r\n.search-tab-box {\r\n  background: #fff;\r\n  padding: 20px;\r\n  border-radius: 8px;\r\n  margin-bottom: 20px;\r\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\r\n}\r\n\r\n// 搜索区域\r\n.search-box {\r\n  margin-bottom: 15px;\r\n}\r\n\r\n// Tab容器\r\n.tab-container {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center; // Tab居中显示\r\n  border-bottom: 1px solid #e6e6e6;\r\n  padding-bottom: 5px;\r\n\r\n  .tab-item {\r\n    padding: 8px 25px;\r\n    margin: 0 10px;\r\n    cursor: pointer;\r\n    font-size: 16px;\r\n    color: #666;\r\n    border-bottom: 2px solid transparent;\r\n    transition: all 0.2s;\r\n\r\n    // 激活状态\r\n    &.active {\r\n      color: #1890ff;\r\n      border-bottom-color: #1890ff;\r\n      font-weight: 500;\r\n    }\r\n\r\n    // hover效果\r\n    &:hover {\r\n      color: #1890ff;\r\n    }\r\n  }\r\n}\r\n\r\n// 数据容器\r\n.data-container {\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: 15px;\r\n}\r\n\r\n// 数据卡片（核心优化：整体边框+规整内边距）\r\n.data-card {\r\n  background: #fff;\r\n  border: 1px solid #e6e6e6; // 整体边框\r\n  border-radius: 8px;\r\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\r\n  overflow: hidden; // 防止内容溢出边框\r\n\r\n  // 卡片标题\r\n  .data-card__title {\r\n    padding: 12px 20px;\r\n    background: #f8f8f8;\r\n    border-bottom: 1px solid #e6e6e6; // 标题与内容分隔线\r\n    margin: 0;\r\n\r\n    span {\r\n      font-size: 16px;\r\n      color: #333;\r\n      font-weight: 600;\r\n    }\r\n  }\r\n\r\n  // 键值对表格（核心：规整内边距）\r\n  .key-value-table {\r\n    padding: 15px 20px; // 统一内边距\r\n    // 审批操作区域\r\n    .approval-actions {\r\n      margin-top: 15px;\r\n      padding-top: 15px;\r\n      border-top: 1px solid #e6e6e6;\r\n      text-align: right;\r\n      border-radius: 5px;\r\n    }\r\n  }\r\n}\r\n\r\n// 单个键值行（表格行样式）\r\n.key-value-row {\r\n  display: flex;\r\n  align-items: center;\r\n  height: 40px; // 统一行高，对齐更整齐\r\n  border-bottom: 1px solid #f5f5f5; // 行分隔线\r\n\r\n  // 最后一行去掉分隔线\r\n  &:last-child {\r\n    border-bottom: none;\r\n  }\r\n\r\n  // 左侧key单元格（固定宽度+对齐）\r\n  .key-cell {\r\n    width: 120px; // 固定宽度，保证所有key对齐\r\n    flex-shrink: 0;\r\n    text-align: right; // 右对齐，视觉更规整\r\n    padding-right: 10px;\r\n\r\n    .key-text {\r\n      font-size: 14px;\r\n      color: #666;\r\n      font-weight: 500;\r\n    }\r\n  }\r\n\r\n  // 分隔符单元格（单独控制，避免偏移）\r\n  .separator-cell {\r\n    width: 10px;\r\n    flex-shrink: 0;\r\n    color: #999;\r\n    font-size: 14px;\r\n  }\r\n\r\n  // 右侧value单元格（对齐+长度控制）\r\n  .value-cell {\r\n    flex: 1;\r\n    padding-left: 10px;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    white-space: nowrap;\r\n\r\n    .value-text {\r\n      font-size: 14px;\r\n      color: #333;\r\n\r\n      // 修复后的无数据样式（通过class控制）\r\n      &.empty-value {\r\n        color: #999;\r\n        font-style: italic;\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\n// 空状态\r\n.empty-box {\r\n  text-align: center;\r\n  padding: 40px 0;\r\n  color: #999;\r\n  font-size: 14px;\r\n\r\n  // 卡片内部的空状态\r\n  &.inner-empty {\r\n    padding: 30px 0;\r\n  }\r\n}\r\n\r\n// 加载中提示\r\n.loading-box {\r\n  text-align: center;\r\n  padding: 20px 0;\r\n  color: #666;\r\n  font-size: 14px;\r\n}\r\n\r\n// 没有更多数据提示\r\n.no-more-box {\r\n  text-align: center;\r\n  padding: 15px 0;\r\n  color: #999;\r\n  font-size: 14px;\r\n}\r\n\r\n// 响应式适配\r\n@media (max-width: 768px) {\r\n  .billManagement {\r\n    padding: 10px;\r\n  }\r\n\r\n  .search-tab-box {\r\n    padding: 15px;\r\n  }\r\n\r\n  .tab-container .tab-item {\r\n    padding: 8px 15px;\r\n    margin: 0 5px;\r\n    font-size: 14px;\r\n  }\r\n\r\n  .data-card {\r\n    .data-card__title {\r\n      padding: 10px 15px;\r\n\r\n      span {\r\n        font-size: 14px;\r\n      }\r\n    }\r\n\r\n    .key-value-row {\r\n      height: 36px;\r\n\r\n      .key-cell {\r\n        width: 80px;\r\n        padding-right: 8px;\r\n\r\n        .key-text {\r\n          font-size: 13px;\r\n        }\r\n      }\r\n\r\n      .separator-cell {\r\n        font-size: 13px;\r\n      }\r\n\r\n      .value-cell {\r\n        padding-left: 8px;\r\n\r\n        .value-text {\r\n          font-size: 13px;\r\n\r\n          &.empty-value {\r\n            font-size: 12px;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/.store/thread-loader@2.1.3/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.store/babel-loader@8.4.1/node_modules/babel-loader/lib/index.js!../../../node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/.store/vue-loader@15.11.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/.store/thread-loader@2.1.3/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.store/babel-loader@8.4.1/node_modules/babel-loader/lib/index.js!../../../node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/.store/vue-loader@15.11.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=8f30f16e&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=8f30f16e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.store/vue-loader@15.11.1/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8f30f16e\",\n  null\n  \n)\n\nexport default component.exports","import request from '@/utils/request'\r\nconst service = process.env.VUE_APP_CRM_URL;\r\nconst cloud = process.env.VUE_APP_CLOUD_URL;\r\n\r\n// 未审批查询\r\nexport function getpagePendingApproval(data) {\r\n  return request({\r\n    url: `${cloud}/v1/process-task/page-pending-approval`,\r\n    method: 'post',\r\n    data\r\n  })\r\n}\r\n\r\nexport function getpageApproval(data) {\r\n  return request({\r\n    url: `${cloud}/v1/process-task/page-approved`,\r\n    method: 'post',\r\n    data\r\n  })\r\n}\r\n// 通过key查询审批流\r\nexport function getbusiness(params) {\r\n  return request({\r\n    url: `${cloud}/v1/process/business`,\r\n    method: 'get',\r\n    params\r\n  })\r\n}\r\n// 提交\r\nexport function startCrmOrderProcess(data) {\r\n  return request({\r\n    url: `${cloud}/v1/business/startCrmOrderProcess`,\r\n    method: 'post',\r\n    data\r\n  })\r\n}\r\n// 获取该条审批数据详情\r\nexport function getApprovalInfo(data) {\r\n  return request({\r\n    url: `${cloud}/v1/process-task/approval-info`,\r\n    method: 'post',\r\n    data\r\n  })\r\n}\r\n// 审批同意\r\nexport function consent(data) {\r\n  return request({\r\n    url: `${cloud}/v1/process-task/consent`,\r\n    method: 'post',\r\n    data\r\n  })\r\n}\r\n// 审批驳回\r\nexport function rejection(data) {\r\n  return request({\r\n    url: `${cloud}/v1/process-task/rejection`,\r\n    method: 'post',\r\n    data\r\n  })\r\n}\r\nexport function secondaryApprovalSendMessage(data) {\r\n  return request({\r\n    url: `${cloud}/appCrm/api/secondaryApprovalSendMessage`,\r\n    method: 'post',\r\n    data\r\n  })\r\n}\r\n// 撤回\r\nexport function revokeCrmOrderProcess(data) {\r\n  return request({\r\n    url: `${cloud}/v1/business/revokeCrmOrderProcess`,\r\n    method: 'post',\r\n    data\r\n  })\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n// 新增原药销售订单\r\n// export function addOrUpdateMaterialSalesOrder(data) {\r\n//   return request({\r\n//     url: `${cloud}/jeecg-crm/appCrm/api/addOrUpdateMaterialSalesOrder`,\r\n//     method: 'post',\r\n//     data\r\n//   })\r\n// }","export * from \"-!../../../node_modules/.store/mini-css-extract-plugin@0.9.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/.store/css-loader@3.6.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/.store/vue-loader@15.11.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/.store/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/.store/sass-loader@10.2.0/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/.store/cache-loader@4.1.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/.store/vue-loader@15.11.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=8f30f16e&prod&lang=scss&scoped=true\"","export default {\r\n    data() {\r\n        return {\r\n            list: [],\r\n            page: {\r\n                pageSize: 10,\r\n                pageNum: 1,\r\n            },\r\n            refreshLoading: false, // 下拉刷新\r\n            listLoading: false, // 是否处于加载状态\r\n            finished: false, // 是否已加载完成\r\n            listPage: 0, // 列表的总页数\r\n        }\r\n    },\r\n    methods: {\r\n        /**\r\n         * 初始化页数参数\r\n         */\r\n        parametersInfo() {\r\n            this.page.pageNum = 1;\r\n            this.list = [];\r\n\r\n        },\r\n        /**\r\n         * 关闭加载\r\n         */\r\n        closeLoad() {\r\n            this.listLoading = false;\r\n            this.refreshLoading = false;\r\n            if (this.page.pageNum >= this.listPage) {\r\n                this.finished = true;\r\n            } else {\r\n                this.finished = false;\r\n            }\r\n            this.page.pageNum += 1;\r\n        }\r\n    }\r\n}","// 模板配置抽离文件\r\nexport default {\r\n  // 客诉赔偿审批（流程 key：compensation）。业务字段来自发起审批时传的 fieldJson（后台已落库并随待办返回）\r\n  compensation: {\r\n    templateName: \"客诉赔偿审批\",\r\n    fields: [\r\n      { key: 'fieldJson.orderNumber', alias: '订单编码' },\r\n      { key: 'fieldJson.productName', alias: '产品名称' },\r\n      { key: 'fieldJson.customerName', alias: '客户名称' },\r\n      { key: 'fieldJson.totalAmount', alias: '赔偿总金额' },\r\n      { key: 'fieldJson.createBy', alias: '申请人' },\r\n      // { key: \"taskName\", alias: \"当前节点\" },\r\n      // { key: \"launchTime\", alias: \"提交时间\" },\r\n    ]\r\n  },\r\n  customerComplaint: {\r\n    templateName: \"客诉审批\",\r\n    fields: [\r\n      { key: \"processName\", alias: \"流程名称\" },\r\n      { key: \"launchBy\", alias: \"创建人\" },\r\n      { key: \"taskName\", alias: \"当前节点\" },\r\n      { key: \"createTime\", alias: \"创建时间\" },\r\n      { key: \"launchTime\", alias: \"提交时间\" },\r\n    ]\r\n  },\r\n  creditApplicationApproval002: {\r\n    templateName: \"授信审批\",\r\n    fields: [\r\n      { key: \"processName\", alias: \"流程名称\" },\r\n      { key: \"taskName\", alias: \"当前节点\" },\r\n      { key: \"createTime\", alias: \"创建时间\" },\r\n\r\n    ]\r\n  },\r\n  tcSalesApproval03: {\r\n    templateName: \"原药销售审批\",\r\n    fields: [\r\n       { key: 'fieldJson.number', alias: '编号' },\r\n      { key: 'fieldJson.productName', alias: '产品名称' },\r\n      { key: 'fieldJson.companyName', alias: '采购方' },\r\n      { key: 'fieldJson.contractAmount', alias: '合同金额' },\r\n      { key: 'fieldJson.profit', alias: '利润' },\r\n      { key: 'fieldJson.Salesperson', alias: '销售员' }\r\n\r\n    ]\r\n  },\r\n  tcSalesApproval02: {\r\n    templateName: \"原药销售审批\",\r\n    fields: [\r\n        { key: 'fieldJson.number', alias: '编号' },\r\n      { key: 'fieldJson.productName', alias: '产品名称' },\r\n      { key: 'fieldJson.companyName', alias: '采购方' },\r\n      { key: 'fieldJson.contractAmount', alias: '合同金额' },\r\n      { key: 'fieldJson.profit', alias: '利润' },\r\n      { key: 'fieldJson.Salesperson', alias: '销售员' }\r\n\r\n    ]\r\n  },\r\n  tcSalesApproval01: {\r\n    templateName: \"原药销售审批\",\r\n    fields: [\r\n      // { key: \"processName\", alias: \"流程名称\" },\r\n      // { key: \"taskName\", alias: \"当前节点\" },\r\n      // { key: \"createTime\", alias: \"创建时间\" },\r\n      { key: 'fieldJson.number', alias: '编号' },\r\n      { key: 'fieldJson.productName', alias: '产品名称' },\r\n      { key: 'fieldJson.companyName', alias: '采购方' },\r\n      { key: 'fieldJson.contractAmount', alias: '合同金额' },\r\n      { key: 'fieldJson.profit', alias: '利润' },\r\n      { key: 'fieldJson.Salesperson', alias: '销售员' }\r\n\r\n    ]\r\n  },\r\n  // 其他模板...\r\n};"],"sourceRoot":""}