{"version":3,"sources":["webpack:///./src/views/crm/orderList/addOrder.vue?51db","webpack:///src/views/crm/orderList/addOrder.vue","webpack:///./src/views/crm/orderList/addOrder.vue?0e6e","webpack:///./src/views/crm/orderList/addOrder.vue","webpack:///./src/api/crm/agreement.js","webpack:///./src/views/crm/orderList/addOrder.vue?c392"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","orderCustomerList","length","ref","attrs","inputList","dataList","getCustomerCreditInfo","on","isNeedFeedbackChange","onQualityIndicatorChange","_e","orderApprovalResultList","model","value","callback","$$v","reasonForApprovalRejection","expression","_l","item","ind","key","approvalTimeStr","finalResultStr","reason","orderProductList","staticStyle","orderStatus","rejectFlag","saveDisabled","$event","onSubmit","_v","onRemove","dialogData","$set","_s","thousandthMark","curCreditAmount","curAvailableCreditAmount","staticRenderFns","now","Date","name","components","formComp","data","title","tit","type","placeholder","readonly","keyCopy","rules","required","columns","option","columnsTop","isNeedFeedback","text","itemList","slot","minDate","maxDate","rightText","table","unitKey","hqtion","orderTechnicalMaterials","premiumAmount","signCompanyName","signSimpleName","languageCode","availableCredit","normalOccupiedCredit","occupiedCredit","overdueOccupiedCredit","payPeriod","totalCredit","planPayAmount","terminationModel","show","stopReason","loading","customerId","planPayAndDeliveryType","planPayStyle","SupplierAndDemanderKeys","curPlanUseCreditAmount","curAvailableCredit","beforeRouteEnter","to","from","next","vm","localStorage","mounted","activated","methods","loadingInit","forbidClick","overlay","duration","hasTextValue","getLatestPremiumAmount","getCustomerById","getCustomerDisplayName","customer","getSignCompanyField","syncSignCompanyToForm","buildSignCompanyColumns","simpleName","getLanguageCodeBySignCompany","syncSignCompanyFields","options","targetColumn","getDetails","getOrderDetail","orderId","res","ele","_data","keepCurrent","companyName","then","catch","setCustomerCreditInfo","payload","qs","searchList","selectUserByRoleKeys","getOrderCustomerList","companyDisplayName","filterDictText","getAction","dictType","getPlanPayAndDeliveryType","getCompanyInfoFromTj","findFill","arr","num","str","strA","strB","list","_bool","Dialog","showCancelButton","message","removeOrder","id","Toast","addOrderList","number","state","_form","flag","Boolean","addOrder","ProductSelection","bool","productList","huiShow","obj","console","tcInfoShow","price","consumptionMode","consumptionModeName","stopOrderSubmit","stopOrder","clearTimeout","that","setSimpleName","updateParameters","merged","query","planPayStyleChange","contractInputs","updatePlanUseCredit","amount","deliveryStyle","planPayAmountInput","providerChange","updatePayDayRules","validator","component","service","process","cloud","getAgreementList","request","url","method","params","addContract","getContractDetailVO","handleApprove","browseContractFile","cancelContract","applyUpdate","batchUpdateContractFile","batchUpdateContractFileyY","getstampReturnList","getstampReturnListYy","ackStamp","ackStampYy","getApprovalProcessByContractId","queryCrmContractDetailById","updateAttachmentsYy","updateAttachments","updateOrderSign","updateOrderSignYy","updateContractQuality","getContractQualityUpdateList"],"mappings":"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","file":"js/chunk-95d4309c.v0.1.2.1793675441333.js?hash=v0.1.2.1793675441333","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"content\"},[(_vm.orderCustomerList && _vm.orderCustomerList.length > 0)?_c('formComp',{ref:\"formComp\",attrs:{\"inputList\":_vm.inputList,\"dataList\":_vm.dataList,\"orderCustomerList\":_vm.orderCustomerList,\"customerCreditInfoFunction\":_vm.getCustomerCreditInfo},on:{\"isNeedFeedback:change\":_vm.isNeedFeedbackChange,\"qualityIndicator:change\":_vm.onQualityIndicatorChange}}):_vm._e(),(_vm.dataList.orderApprovalResultList && _vm.dataList.orderApprovalResultList.length > 0)?_c('van-collapse',{model:{value:(_vm.reasonForApprovalRejection),callback:function ($$v) {_vm.reasonForApprovalRejection=$$v},expression:\"reasonForApprovalRejection\"}},[_c('van-collapse-item',{attrs:{\"title\":\"审批拒绝原因\",\"name\":\"1\"}},[_vm._l((_vm.dataList.orderApprovalResultList),function(item,ind){return [_c('van-cell',{key:ind,attrs:{\"title\":item.approvalTimeStr,\"value\":item.finalResultStr,\"label\":item.reason}})]})],2)],1):_vm._e(),(_vm.dataList && _vm.dataList.orderProductList && _vm.dataList.orderProductList.length > 0)?_c('div',{staticStyle:{\"margin\":\"16px\",\"display\":\"flex\",\"justify-content\":\"space-evenly\"}},[(!_vm.dataList.orderStatus || _vm.dataList.orderStatus == '0' || _vm.dataList.orderStatus == '6' || _vm.dataList.orderStatus == '5' || (_vm.dataList.orderStatus == '1' && _vm.dataList.rejectFlag == 1))?[_c('van-button',{ref:\"saveBtn\",attrs:{\"round\":\"\",\"block\":\"\",\"type\":\"primary\",\"disabled\":_vm.saveDisabled},on:{\"click\":function($event){return _vm.onSubmit(0)}}},[_vm._v(\"保存\")]),(_vm.dataList.orderStatus == '0')?_c('van-button',{attrs:{\"round\":\"\",\"block\":\"\",\"type\":\"primary\"},on:{\"click\":_vm.onRemove}},[_vm._v(\"删除\")]):_vm._e(),_c('van-button',{attrs:{\"round\":\"\",\"block\":\"\",\"type\":\"primary\"},on:{\"click\":function($event){return _vm.onSubmit(1)}}},[_vm._v(\"提交\")])]:_vm._e()],2):_vm._e(),_c('van-dialog',{staticClass:\"credit-dialog\",attrs:{\"title\":\"提交失败\"},model:{value:(_vm.dialogData.show),callback:function ($$v) {_vm.$set(_vm.dialogData, \"show\", $$v)},expression:\"dialogData.show\"}},[_c('div',{staticClass:\"dialog-content\"},[_c('div',{staticClass:\"credit-msg\"},[_vm._v(\" 本单使用授信金额 \"),_c('span',{staticClass:\"num\"},[_vm._v(\"￥\"+_vm._s(_vm.thousandthMark(_vm.dialogData.curCreditAmount))+\"元\")]),_vm._v(\" 超过剩余可用授信额度 \"),_c('span',{staticClass:\"num\"},[_vm._v(\"￥\"+_vm._s(_vm.thousandthMark(_vm.dialogData.curAvailableCreditAmount))+\"元\")]),_vm._v(\" ，无法提交订单。 \")]),_c('div',{staticClass:\"credit-tips\"},[_c('div',{staticClass:\"tips-title\"},[_vm._v(\"建议：\")]),_c('ul',{staticClass:\"tips-list\"},[_c('li',[_vm._v(\"1.增加预付款比例\")]),_c('li',[_vm._v(\"2.对占用中授信额度进行回款\")]),_c('li',[_vm._v(\"3.申请提高授信额度\")])])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","  <!-- 新增订单 -->\r\n<template>\r\n  <div class=\"content\">\r\n    <formComp v-if=\"orderCustomerList && orderCustomerList.length > 0\" :inputList=\"inputList\" :dataList=\"dataList\"\r\n      ref=\"formComp\" :orderCustomerList=\"orderCustomerList\" @isNeedFeedback:change=\"isNeedFeedbackChange\"\r\n      @qualityIndicator:change=\"onQualityIndicatorChange\" :customerCreditInfoFunction=\"getCustomerCreditInfo\">\r\n    </formComp>\r\n    <!-- 审批拒绝历史 TODO 获取审批结果描述 -->\r\n    <van-collapse v-model=\"reasonForApprovalRejection\"\r\n      v-if=\"dataList.orderApprovalResultList && dataList.orderApprovalResultList.length > 0\">\r\n      <van-collapse-item title=\"审批拒绝原因\" name=\"1\">\r\n        <template v-for=\"(item, ind) in dataList.orderApprovalResultList\">\r\n          <van-cell :key=\"ind\" :title=\"item.approvalTimeStr\" :value=\"item.finalResultStr\" :label=\"item.reason\" />\r\n        </template>\r\n      </van-collapse-item>\r\n    </van-collapse>\r\n    <div style=\"margin: 16px;display:flex;justify-content: space-evenly;\" v-if=\"dataList && dataList.orderProductList && dataList.orderProductList.length > 0\">\r\n      <template\r\n        v-if=\"!dataList.orderStatus || dataList.orderStatus == '0' || dataList.orderStatus == '6' || dataList.orderStatus == '5' || (dataList.orderStatus == '1' && dataList.rejectFlag == 1)\">\r\n        <van-button round block type=\"primary\" @click=\"onSubmit(0)\" :disabled=\"saveDisabled\"\r\n          ref=\"saveBtn\">保存</van-button>\r\n        <van-button v-if=\"dataList.orderStatus == '0'\" round block type=\"primary\" @click=\"onRemove\">删除</van-button>\r\n        <van-button round block type=\"primary\" @click=\"onSubmit(1)\">提交</van-button>\r\n      </template>\r\n    </div>\r\n    <!-- 提交失败弹窗提示 -->\r\n   <van-dialog v-model=\"dialogData.show\" title=\"提交失败\" class=\"credit-dialog\">\r\n      <div class=\"dialog-content\">\r\n        <div class=\"credit-msg\">\r\n          本单使用授信金额\r\n          <span class=\"num\">￥{{ thousandthMark(dialogData.curCreditAmount) }}元</span>\r\n          超过剩余可用授信额度\r\n          <span class=\"num\">￥{{ thousandthMark(dialogData.curAvailableCreditAmount) }}元</span>\r\n          ，无法提交订单。\r\n        </div>\r\n        <div class=\"credit-tips\">\r\n          <div class=\"tips-title\">建议：</div>\r\n          <ul class=\"tips-list\">\r\n            <li>1.增加预付款比例</li>\r\n            <li>2.对占用中授信额度进行回款</li>\r\n            <li>3.申请提高授信额度</li>\r\n          </ul>\r\n        </div>\r\n      </div>\r\n    </van-dialog>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\nimport formComp from \"../components/formComp/list.vue\";\r\nimport { getAction, filterDictText, selectUserByRoleKeys } from \"@/api/crm/index\"\r\nimport { getOrderCustomerList, getCustomerCredit } from \"@/api/crm/customer\"\r\nimport { addOrder, getOrderDetail, stopOrder, removeOrder } from \"@/api/crm/order\"\r\nimport { getPlanPayAndDeliveryType, getCompanyInfoFromTj } from \"@/api/crm/agreement\"\r\nimport { Throttle } from '@/utils';\r\nimport { Toast, Dialog } from \"vant\";\r\nimport { calcCreditAmounts } from \"@/utils/crm\";\r\nvar now = new Date();\r\nlet _initMaxDate = new Date(now.getFullYear(), now.getMonth() + 12, now.getDate());\r\nexport default {\r\n  name: \"addOrder\",\r\n  components: { formComp },\r\n  data() {\r\n    return {\r\n\r\n      /**\r\n       * 配置form表单\r\n       * tit：标题名称 必填\r\n       * key 对应的存储key 必填\r\n       * isNeedFeedback 数据变化是否回传页面\r\n       * type 类型 必填\r\n       *    [text:输入框，picker：单选下拉选择器，radio：单选框]\r\n       * rules 校验\r\n       * placeholder 提示语 默认为： 请输入/请选择 + tit（标题）\r\n       * model 对象 存在于类型为 picker radio 必传\r\n       *    - columns 选择器中的配置 举例： { text: '外贸公司', value: '1' } 格式固定\r\n       *    -\r\n       *\r\n        */\r\n      inputList: [\r\n        {\r\n          title: \"订单信息\", inputList: [\r\n            // TODO 订单编号默认为只读  去掉 签约日期\r\n            { tit: \"订单编号\", key: \"number\", type: \"text\", placeholder: \"新增后根据订单自动生成\", readonly: true },\r\n            { tit: \"公司名称\", key: \"customerId\", keyCopy: \"companyName\", type: \"picker\", rules: [{ required: true }], model: { columns: [], option: { columnsTop: true } }, isNeedFeedback: true },\r\n            { tit: \"公司简称\", key: \"simpleName\", type: \"text\", placeholder: \"根据公司名称自动填写\", readonly: true },\r\n            { tit: \"签约公司名称\", key: \"signCompanyName\", type: \"picker\", rules: [{ required: true }], model: { columns: [] }, isNeedFeedback: true },\r\n            { tit: \"签约公司简称\", key: \"signSimpleName\", type: \"text\", placeholder: \"根据签约公司名称自动填写\", readonly: true },\r\n            { tit: \"授信详情\", key: \"credictDetail\", placeholder: \"\", type: \"credictDetail\"},\r\n            { tit: \"业务员\", key: \"salesNickName\", rules: [{ required: true }], type: \"text\", readonly: true },\r\n            // { tit: \"业务员\", key: \"salesUserName\", keyCopy: \"salesNickName\", rules: [{ required: true }], type: \"picker\", model: { columns: [] } },\r\n            { tit: \"跟单员\", key: \"followUserName\", keyCopy: \"followNickName\", type: \"picker\", model: { columns: [] } },\r\n            { tit: \"币种\", key: \"currency\", type: \"picker\", model: { columns: [] }, readonly: true },\r\n            {\r\n              tit: \"订单类型\", key: \"orderType\", placeholder: \"请选择订单类型\", type: \"radio\", rules: [{ required: true }], model: {\r\n                columns: [\r\n                  { text: '成品订单', value: 1 },\r\n                  { text: '代加工订单', value: 2 }\r\n                ]\r\n              }, readonly: true\r\n            },\r\n            { tit: \"订单金额\", key: \"amount\", placeholder: \"根据产品总价进行计算\", type: \"money\", rules: [{ required: true }], readonly: true },\r\n            {\r\n              tit: \"原药\", key: \"orderTechnicalMaterials\", placeholder: \"请填写原药核算价\", type: \"material\", itemList: [\r\n                { name: \"名称\", key: \"name\", readonly: true }, { name: \"核算价\", key: \"price\", readonly: true, rules: [{ required: true }], slot: 'consumptionModeName' }\r\n              ]\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          title: \"合同信息\", key: \"contractDetailVO\", inputList: [\r\n            { tit: \"签约地\", key: \"signAddress\", type: \"text\" },\r\n            { tit: \"签约日期\", key: \"signDate\", type: \"datetimePicker\", placeholder: \"年/月/日\", model: { minDate: new Date(2010, 0, 31), maxDate: _initMaxDate }, rules: [{ required: true }], },\r\n            // { tit: \"汇率%\", key: \"signAddress1\", type: \"text\" },\r\n            // { tit: \"利润率\", key: \"signAddress2\", type: \"text\" },\r\n            { tit: \"结算方式\", key: \"settleStyle\", placeholder: \"\", type: \"picker\", model: { columns: [] }, rules: [{ required: true }], },\r\n            { tit: \"预付款\", key: \"planPayStyle\", placeholder: \"\", type: \"picker\", model: { columns: [] }, isNeedFeedback: true, rules: [{ required: true }], },\r\n            // { tit: \"结算方式\", key: \"settleStyle\", rules: [{ required: true, }], placeholder: \"\", type: \"picker\", model: { columns: [] } },\r\n            // { tit: \"预付款\", key: \"planPayStyle\", rules: [{ required: true, }], placeholder: \"\", type: \"picker\", model: { columns: [] }, isNeedFeedback: true },\r\n            { tit: \"发货方式\", key: \"deliveryStyle\", placeholder: \"根据预付款提供发货方式\", type: \"picker\", model: { columns: [] }, isNeedFeedback: true, rules: [{ required: true }] },\r\n            { tit: \"货到\", key: \"payDay\", placeholder: \"填写数字\", type: \"digit\", rightText: \"天内付款\" },\r\n            { tit: \"预 计 使 用 授 信\", key: \"planUseCreditAmount\", placeholder: \"选择预付款后自动计算\", type: \"planUseCreditAmount\", rightText: \"元\", readonly: true },\r\n            { tit: \"交（提）货地点\", key: \"deliveryAddress\", type: \"text\", placeholder: \"填写需方指定仓库\", rightText: \"详见送货通知\" },\r\n            { tit: \"交（提）货时间\", key: \"deliveryDate\", type: \"datetimePicker\", placeholder: \"填写\", model: { minDate: new Date(2010, 0, 31), maxDate: _initMaxDate } },\r\n            { tit: \"交货备注\", key: \"deliveryRemark\", placeholder: \"填写\" },\r\n            {\r\n              tit: \"运费承担方\", key: \"fare\", placeholder: \"自动生成\", type: \"radio\", model: {\r\n                columns: [\r\n                  { text: '供方', value: \"0\" },\r\n                  { text: '需方', value: \"1\" }\r\n                ]\r\n              }\r\n            },\r\n          ]\r\n        },\r\n        {\r\n          title: \"供方信息\", key: \"contractDetailVO\", inputList: [\r\n            { tit: \"供方\", key: \"providerId\", placeholder: \" \", type: \"picker\", model: { columns: [] }, isNeedFeedback: true },\r\n            { tit: \"地址\", key: \"providerAddress\", placeholder: \" \", type: \"textarea\", readonly: true },\r\n            { tit: \"法人\", key: \"providerLegalRepresentative\", placeholder: \" \", type: \"text\", readonly: true },\r\n            { tit: \"账号\", key: \"providerAccount\", placeholder: \" \", type: \"text\", readonly: true },\r\n            { tit: \"电话\", key: \"providerPhone\", placeholder: \" \", type: \"text\", readonly: true },\r\n          ]\r\n        },\r\n        {\r\n          title: \"产品信息\", type: \"changeover\", key: \"orderProductList\", inputList: [\r\n            { tit: \"产品名称\", key: \"productName\", type: \"text\", readonly: true },\r\n            { tit: \"产品编码\", key: \"productNumber\", type: \"text\", readonly: true },\r\n            // { tit: \"有效成分\", key: \"activeIngredients\", type: \"text\" },\r\n            { tit: \"单位\", key: \"unit\", type: \"text\", readonly: true, placeholder: \" \" },\r\n            // { tit: \"计量单位(件)\", key: \"piece\", type: \"number\" },\r\n            { tit: \"包装规格\", key: \"packFormat\", type: \"text\", readonly: true },\r\n            { tit: \"质量标准\", key: \"qualityStandard\", type: \"textarea\", readonly: true, table: true },\r\n            { tit: \"特殊包装\", key: \"showSpecsItems\", placeholder: \"请填写特殊包装\", type: \"text\", readonly: true },\r\n            { tit: \"包装要求补充\", key: \"packingStandard\", type: \"textarea\" },\r\n            { tit: '(*注:复合标签、打托盘、说明书及其装袋、覆膜、覆物、特殊包材等影响成本项目请务必在“特殊包装”中勾选。<strong>包装需求仅限填写一些对成本无影响的要求。</strong>)', key: \"packingStandardTip\", type: \"tips\" },\r\n            // facadeStandard\r\n            { tit: \"备注\", key: \"remark\", placeholder: \"请填写备注信息\", type: \"text\" },\r\n            { tit: \"产品数量\", key: \"productCount\", rules: [{ required: true, }], type: \"text\", readonly: true },\r\n            { tit: \"进仓费\", key: \"inwardProcessingFee\", unitKey: \"inwardProcessingFeeUnit\", placeholder: \"根据报价自动带入\", type: \"money\", readonly: true },\r\n            { tit: \"溢价金额\", key: \"premiumAmount\", placeholder: \"根据报价自动带入\", type: \"money\", readonly: true },\r\n            { tit: \"含税单价\", key: \"productPrice\", rules: [{ required: true, }], type: \"text\", readonly: true },\r\n            { tit: \"含税总价\", key: \"productAmount\", placeholder: \"根据产品数据和含税单价进行计算\", type: \"money\", readonly: true },\r\n            // 税率：必填，单位为百分比；输入规范为1位小数，默认9（表示9%）\r\n            { tit: \"税率\", key: \"taxRate\", type: \"number\", rules: [{ required: true }] },\r\n            // 不含税总价：自动计算，公式 = 含税总价 / (1 + 税率/100)，只读\r\n            { tit: \"不含税总价\", key: \"excludeTaxAmount\", placeholder: \"自动计算\", type: \"money\", rules: [{ required: true }], readonly: true },\r\n            // 税额：自动计算，公式 = 含税总价 − 不含税总价，只读\r\n            { tit: \"税额\", key: \"taxAmount\", placeholder: \"自动计算\", type: \"money\", rules: [{ required: true }], readonly: true }\r\n          ]\r\n        }\r\n      ],\r\n      hqtion: 0,  // 历史报价选择\r\n      dataList: {\r\n        orderProductList: [],\r\n        orderTechnicalMaterials: [],\r\n        premiumAmount: '',\r\n        signCompanyName: '',\r\n        signSimpleName: '',\r\n        languageCode: 'zh-CN',\r\n        availableCredit: 0,\r\n        normalOccupiedCredit: 0,\r\n        occupiedCredit: 0,\r\n        overdueOccupiedCredit: 0,\r\n        payPeriod: '',\r\n          totalCredit: 0,\r\n          planPayAmount: ''\r\n      },\r\n      terminationModel: {\r\n        show: false,\r\n        stopReason: \"\"\r\n      },\r\n      loading: null,\r\n      customerId: null,//公司id\r\n      orderCustomerList: [],// 公司集合\r\n      saveDisabled: false,\r\n\r\n      planPayAndDeliveryType: [],\r\n      planPayStyle: null,// 用于和子组件中的planPayStyle参数判断是否需要更新对应的下拉数据\r\n      SupplierAndDemanderKeys: [\"Name\", \"Address\", \"LegalRepresentative\", \"Account\", \"Phone\"],\r\n      reasonForApprovalRejection: [],\r\n      dialogData: {\r\n        show: false,\r\n        curPlanUseCreditAmount: '',\r\n        curAvailableCredit: '',\r\n      }\r\n    };\r\n  },\r\n  beforeRouteEnter(to, from, next) {\r\n    next((vm) => {\r\n      vm.$nextTick(() => {\r\n        if (from.name == 'historical') {\r\n          vm.ProductSelection(true)\r\n          // this.$set(this.dataList, 'historical', true)\r\n        } else {\r\n          localStorage.removeItem('productList');\r\n        }\r\n      });\r\n    });\r\n  },\r\n  mounted() {\r\n    this.searchList()\r\n    const query = this.$route.query;\r\n    if (query && this.hasTextValue(query.premiumAmount)) {\r\n      this.$set(this.dataList, 'premiumAmount', query.premiumAmount);\r\n    }\r\n    if (query && query.id) this.getDetails();  // 查询详情数据\r\n  },\r\n  activated() {\r\n    const query = this.$route.query;\r\n    // 只处理从历史报价跳转过来的情况（带 quotationId），直接刷新缓存数据\r\n    if (query && query.quotationId) {\r\n      localStorage.removeItem('productList');\r\n      this.$set(this.dataList, 'orderProductList', []);\r\n      this.$set(this.dataList, 'amount', '');\r\n      this.$set(this.dataList, 'orderId', '');\r\n      if (this.hasTextValue(query.premiumAmount)) {\r\n        this.$set(this.dataList, 'premiumAmount', query.premiumAmount);\r\n      }\r\n    }\r\n  },\r\n  methods: {\r\n    loadingInit() {\r\n      this.loading = this.$toast.loading({\r\n        //   message: '加载中...',\r\n        forbidClick: true,\r\n        overlay: true,\r\n        duration: 0\r\n      });\r\n    },\r\n    /**\r\n     * 判断字符串是否包含有效内容\r\n     * @param {string} value 待校验的值\r\n     * @returns {boolean} true 表示存在有效文本，false 表示为空值\r\n     */\r\n    hasTextValue(value) {\r\n      return value !== null && value !== undefined && String(value).trim() !== '';\r\n    },\r\n    /**\r\n     * 按优先级获取最新溢价金额\r\n     * @param {...any} candidates 候选数据源，可传表单对象、报价对象或原始值\r\n     * @returns {string|number} 命中的溢价金额；未命中时返回空字符串\r\n     */\r\n    getLatestPremiumAmount(...candidates) {\r\n      for (let i = 0; i < candidates.length; i++) {\r\n        const source = candidates[i];\r\n        if (source && typeof source === 'object' && this.hasTextValue(source.premiumAmount)) {\r\n          return source.premiumAmount;\r\n        }\r\n        // 兜底分支只允许返回原始值，避免把整个表单/数据对象赋给 premiumAmount 造成循环引用。\r\n        const isPrimitiveValue = ['string', 'number', 'boolean'].includes(typeof source);\r\n        if (isPrimitiveValue && this.hasTextValue(source)) {\r\n          return source;\r\n        }\r\n      }\r\n      return '';\r\n    },\r\n    /**\r\n     * 根据客户ID获取客户信息\r\n     * @param {string|number} customerId 客户ID\r\n     * @returns {Object|null} 匹配到的客户信息，未命中时返回 null\r\n     */\r\n    getCustomerById(customerId) {\r\n      if (!this.orderCustomerList || !this.orderCustomerList.length) return null;\r\n      return this.orderCustomerList.find(item => item.id == customerId) || null;\r\n    },\r\n    // 客户名称展示优先中文，中文为空时回退英文。\r\n    getCustomerDisplayName(customer) {\r\n      if (!customer) return '';\r\n      if (this.hasTextValue(customer.companyName)) return String(customer.companyName).trim();\r\n      return this.hasTextValue(customer.companyNameEn) ? String(customer.companyNameEn).trim() : '';\r\n    },\r\n    /**\r\n     * 获取签约公司名称表单配置\r\n     * @param {void} 无\r\n     * @returns {Object|null} 签约公司名称对应的配置项\r\n     */\r\n    getSignCompanyField() {\r\n      const orderInfo = this.inputList && this.inputList.length ? this.inputList[0].inputList : [];\r\n      return orderInfo.find(item => item.key === 'signCompanyName') || null;\r\n    },\r\n    /**\r\n     * 直接同步子表单中的签约公司相关字段\r\n     * @param {string} signCompanyName 签约公司名称\r\n     * @param {string} signSimpleName 签约公司简称\r\n     * @param {string} languageCode 订单语言编码\r\n     * @returns {void} 无返回值\r\n     */\r\n    syncSignCompanyToForm(signCompanyName, signSimpleName, languageCode) {\r\n      if (!this.$refs.formComp || !this.$refs.formComp.showForm) return;\r\n      this.$set(this.$refs.formComp.showForm, 'signCompanyName', signCompanyName);\r\n      this.$set(this.$refs.formComp.showForm, 'signSimpleName', signSimpleName);\r\n      this.$set(this.$refs.formComp.showForm, 'languageCode', languageCode);\r\n    },\r\n    /**\r\n     * 构造签约公司名称下拉选项\r\n     * @param {Object} customer 当前选中的客户信息\r\n     * @returns {Array} 供选择器使用的下拉数据\r\n     */\r\n    buildSignCompanyColumns(customer) {\r\n      if (!customer) return [];\r\n      const companyName = this.hasTextValue(customer.companyName) ? String(customer.companyName).trim() : '';\r\n      const companyNameEn = this.hasTextValue(customer.companyNameEn) ? String(customer.companyNameEn).trim() : '';\r\n      const columns = [];\r\n      if (companyName) {\r\n        columns.push({ text: companyName, value: companyName, simpleName: customer.simpleName || '', languageCode: 'zh-CN' });\r\n      }\r\n      if (companyNameEn && companyNameEn !== companyName) {\r\n        columns.push({ text: companyNameEn, value: companyNameEn, simpleName: customer.simpleNameEn || '', languageCode: 'en-US' });\r\n      }\r\n      return columns;\r\n    },\r\n    /**\r\n     * 根据签约公司名称推断订单语言\r\n     * @param {Object} customer 当前选中的客户信息\r\n     * @param {string} signCompanyName 当前签约公司名称\r\n     * @returns {string} 订单语言编码\r\n     */\r\n    getLanguageCodeBySignCompany(customer, signCompanyName) {\r\n      if (customer && this.hasTextValue(customer.companyNameEn) && signCompanyName === String(customer.companyNameEn).trim()) {\r\n        return 'en-US';\r\n      }\r\n      return 'zh-CN';\r\n    },\r\n    /**\r\n     * 同步签约公司字段与下拉选项\r\n     * @param {Object} customer 当前选中的客户信息\r\n     * @param {Object} options 同步选项\r\n     * @param {boolean} options.keepCurrent 是否尽量保留当前签约公司\r\n     * @param {string} options.signCompanyName 指定的签约公司名称\r\n     * @param {string} options.signSimpleName 指定的签约公司简称\r\n     * @param {string} options.languageCode 指定的语言编码\r\n     * @returns {void} 无返回值\r\n     */\r\n    syncSignCompanyFields(customer, options = {}) {\r\n      const field = this.getSignCompanyField();\r\n      const columns = this.buildSignCompanyColumns(customer);\r\n      if (field && field.model) {\r\n        this.$set(field.model, 'columns', columns);\r\n      }\r\n      if (!customer || !columns.length) {\r\n        this.$set(this.dataList, 'signCompanyName', '');\r\n        this.$set(this.dataList, 'signSimpleName', '');\r\n        this.$set(this.dataList, 'languageCode', 'zh-CN');\r\n        this.syncSignCompanyToForm('', '', 'zh-CN');\r\n        this.updateParameters();\r\n        return;\r\n      }\r\n      const preferredSignCompanyName = options.keepCurrent\r\n        ? (options.signCompanyName || this.dataList.signCompanyName || '')\r\n        : '';\r\n      const matchedColumn = columns.find(item => item.value === preferredSignCompanyName);\r\n      const targetColumn = matchedColumn || columns[0];\r\n      const hasServerSimpleName = Object.prototype.hasOwnProperty.call(options, 'signSimpleName');\r\n      const hasServerLanguageCode = this.hasTextValue(options.languageCode);\r\n      // 详情回显优先保留后端返回值；新选客户时则按当前选项自动生成简称和语言。\r\n      const nextSimpleName = options.keepCurrent && matchedColumn && hasServerSimpleName\r\n        ? (options.signSimpleName || '')\r\n        : (targetColumn.simpleName || '');\r\n      const nextLanguageCode = options.keepCurrent && matchedColumn && hasServerLanguageCode\r\n        ? options.languageCode\r\n        : (targetColumn.languageCode || this.getLanguageCodeBySignCompany(customer, targetColumn.value));\r\n      this.$set(this.dataList, 'signCompanyName', targetColumn.value);\r\n      this.$set(this.dataList, 'signSimpleName', nextSimpleName);\r\n      this.$set(this.dataList, 'languageCode', nextLanguageCode);\r\n      this.syncSignCompanyToForm(targetColumn.value, nextSimpleName, nextLanguageCode);\r\n      this.updateParameters();\r\n    },\r\n    //获取详情\r\n    getDetails() {\r\n      getOrderDetail({ orderId: this.$route.query.id }).then(res => {\r\n        res.data.orderProductList = res.data.productList;\r\n        // 兼容老数据\r\n        if (res.data.productList && res.data.productList.length) {\r\n          res.data.orderProductList[0].packingStandard = res.data.productList[0].facadeStandard;    // 包装要求补充\r\n          res.data.orderProductList[0].premiumAmount = res.data.premiumAmount;    // 溢价金额展示放到产品信息区\r\n          // 特殊包装\r\n          if (res.data.orderProductList[0].specsItems) {\r\n            const Arr = JSON.parse(res.data.orderProductList[0].specsItems) || [];\r\n            res.data.orderProductList[0].showSpecsItems = Arr.map(ele => ele.itemName).join(\",\");\r\n          }\r\n\r\n        };\r\n        res.data.orderId = this.$route.query.id;\r\n        if (!res.data.orderTechnicalMaterials) res.data.orderTechnicalMaterials = []; //老数据处理\r\n        if (res.data.orderTechnicalMaterials) {\r\n          res.data.orderTechnicalMaterials.forEach(ele => {\r\n            const name = ele.consumptionMode == '1' ? '实' : ele.consumptionMode == '2' ? '折' : '无';\r\n            ele.consumptionModeName = name;\r\n          })\r\n        }\r\n        if (res.data.orderApprovalResultList && res.data.orderApprovalResultList.length) {\r\n          res.data.orderApprovalResultList = res.data.orderApprovalResultList.filter(item => { return item.finalResult == 2 })\r\n        }\r\n        // if(res.data.code==\"\"){\r\n        //   delete res.data;\r\n        // }\r\n        let _data = Object.assign({}, res.data, res.data.contractDetailVO, res.data.contractDetailVO?.provider);\r\n        _data.premiumAmount = res.data.premiumAmount;\r\n        if (_data.orderProductList && _data.orderProductList.length) {\r\n          // 详情接口的溢价金额挂在根节点，这里显式同步到产品项，保证产品信息区能稳定回显。\r\n          _data.orderProductList[0].premiumAmount = res.data.premiumAmount;\r\n        }\r\n        this.dataList = _data;\r\n        if (this.orderCustomerList && this.orderCustomerList.length && _data.customerId) {\r\n          this.syncSignCompanyFields(this.getCustomerById(_data.customerId), {\r\n            keepCurrent: true,\r\n            signCompanyName: _data.signCompanyName,\r\n            signSimpleName: _data.signSimpleName,\r\n            languageCode: _data.languageCode\r\n          });\r\n        }\r\n        this.planPayStyleChange(_data.planPayStyle);\r\n        this.setCustomerCreditInfo(res.data.companyName);\r\n      })\r\n    },\r\n    // 根据客户公司名称查询客户授信额度信息\r\n    getCustomerCreditInfo(companyName) {\r\n      return getCustomerCredit({ companyName })\r\n        .then(res => res.data)\r\n        .catch(err => {\r\n          return null;\r\n        })\r\n    },\r\n    // 设置客户公司授信额度信息\r\n    setCustomerCreditInfo(companyName) {\r\n      this.getCustomerCreditInfo(companyName).then(res => {\r\n        if (res) {\r\n          this.$set(this.dataList, 'availableCredit', res.availableCredit);\r\n          this.$set(this.dataList, 'normalOccupiedCredit', res.normalOccupiedCredit);\r\n          this.$set(this.dataList, 'occupiedCredit', res.occupiedCredit);\r\n          this.$set(this.dataList, 'overdueOccupiedCredit', res.overdueOccupiedCredit);\r\n          this.$set(this.dataList, 'payPeriod', res.payPeriod);\r\n          this.$set(this.dataList, 'totalCredit', res.totalCredit);\r\n          this.updatePayDayRules();\r\n        }\r\n      })\r\n    },\r\n    // 质量指标变更回调：由子组件 list.vue 通过 $emit('qualityIndicator:change', {...}) 触发\r\n    // 用途：在订单顶层页面同步维护详情字段，确保展示和提交时读取到最新的质量指标\r\n    onQualityIndicatorChange(payload) {\r\n      // 解构获取质量指标 JSON 串与已拼接的质量标准文本（可能为空）\r\n      const { qualityIndicator, qualityStandard } = payload || {}\r\n      // 同步子表单内部数据，保持 list.vue 中的 showForm 与顶层一致\r\n      if (this.$refs.formComp && this.$refs.formComp.showForm) {\r\n        this.$refs.formComp.showForm.qualityIndicator = qualityIndicator\r\n      }\r\n      // 更新详情根字段：qualityIndicator（用于页面展示或其他逻辑）\r\n      this.dataList.qualityIndicator = qualityIndicator\r\n      // 兜底初始化产品列表，保证后续可安全写入第 0 个产品的字段\r\n      if (!this.dataList.orderProductList) {\r\n        this.$set(this.dataList, 'orderProductList', [])\r\n      }\r\n      if (!this.dataList.orderProductList.length) {\r\n        this.$set(this.dataList.orderProductList, 0, {})\r\n      }\r\n      // 写回产品维度字段：qualityIndicator（提交入参要求放在产品列表中）\r\n      this.$set(this.dataList.orderProductList[0], 'qualityIndicator', qualityIndicator)\r\n      // 计算 qualityStandard 文本：优先使用父组件传入的拼接结果，否则按 JSON 现算\r\n      let qs = qualityStandard\r\n      if (!qs) {\r\n        try {\r\n          const arr = JSON.parse(qualityIndicator) || []\r\n          qs = arr.map(ele => `${ele.itemName}:${ele.itemValue}`).join(', ')\r\n        } catch (e) {\r\n          qs = ''\r\n        }\r\n      }\r\n      // 写回产品维度字段：qualityStandard（页面展示与合同文本使用）\r\n      this.$set(this.dataList.orderProductList[0], 'qualityStandard', qs)\r\n    },\r\n    //搜索项数据\r\n    searchList() {\r\n      //业务员\\跟单员\r\n      selectUserByRoleKeys(['salesman', 'documenter']).then(res => {\r\n        // this.findFill(res.data.salesman, 0, 'salesUserName', 'userName', 'userId')\r\n        this.findFill(res.data.documenter, 0, 'followUserName', 'userName', 'userId')\r\n      })\r\n      //客户\r\n      getOrderCustomerList().then((res => {\r\n        this.orderCustomerList = (res.data || []).map(item => ({\r\n          ...item,\r\n          companyDisplayName: this.getCustomerDisplayName(item)\r\n        }));\r\n        filterDictText(this.orderCustomerList, 'companyDisplayName', 'id').then(res => {\r\n          // console.log(res);\r\n          this.inputList[0]['inputList'][1].model.columns = res\r\n        })\r\n        if (this.dataList.customerId) {\r\n          this.syncSignCompanyFields(this.getCustomerById(this.dataList.customerId), {\r\n            keepCurrent: true,\r\n            signCompanyName: this.dataList.signCompanyName,\r\n            signSimpleName: this.dataList.signSimpleName,\r\n            languageCode: this.dataList.languageCode\r\n          });\r\n        }\r\n      }))\r\n      // 获取币种\r\n      getAction({ dictType: 'currency' }).then((res) => {\r\n        // console.log(res);\r\n        this.findFill(res.rows, 0, 'currency', \"dictValue\", \"dictValue\")\r\n      });\r\n\r\n\r\n\r\n      //结算方式\r\n      getAction({ dictType: 'refund_settle_type' }).then((res) => {\r\n        this.findFill(res.rows, 1, 'settleStyle')\r\n      });\r\n\r\n      //预付款\r\n      getAction({ dictType: 'refund_plan_pay_type' }).then((res) => {\r\n        this.findFill(res.rows, 1, 'planPayStyle')\r\n      });\r\n      //预付款和发货方式\r\n      getPlanPayAndDeliveryType().then(res => {\r\n        this.planPayAndDeliveryType = res.data\r\n      });\r\n\r\n      // 获取供方列表信息\r\n      getCompanyInfoFromTj().then(res => {\r\n        this.providerList = res.data;\r\n        this.findFill(res.data, 2, 'providerId', \"Gsmc\", \"id\")\r\n        if (!res.data.length) return;\r\n        this.dataList[\"providerId\"] = res.data.filter(item => { return item.Gsmc == '河南蕴农植保科技有限公司' })[0].id; //查到当前河南蕴农公司\r\n        this.providerChange(this.dataList[\"providerId\"])\r\n      });\r\n      this.dataList.fare = '0'\r\n\r\n\r\n\r\n\r\n\r\n    },\r\n    //接口数据查找并填充\r\n    findFill(arr, num, str, strA, strB) {\r\n      // 数组，查找数组列索引,查找字符串\r\n      filterDictText(arr, strA, strB).then(res => {\r\n        let list = this.inputList[num].inputList.filter(item => {\r\n          return item.key == str\r\n        })\r\n        // 暂时先这样写\r\n        list[0].model.columns = res.filter(item => { return item.text != '款未到部分发货' })\r\n      })\r\n    },\r\n\r\n    onSubmit: Throttle(async function (state, num) {\r\n      let _bool = await this.$refs.formComp.validateForm();\r\n      if (!_bool) {\r\n        return\r\n      }\r\n      this.saveDisabled = true;\r\n      this.loadingInit();\r\n      // console.log(\"???????????????\");\r\n      this.addOrderList(0, state);\r\n      // this.$router.push({ path: '/pqsHistoricalQuotationList' });\r\n    }),\r\n    onRemove() {\r\n      Dialog.alert({\r\n        showCancelButton: true,\r\n        title: '删除',\r\n        message: '您确定删除吗',\r\n      }).then(() => {\r\n        removeOrder({ id: this.$route.query.id }).then(res => {\r\n          if (res.code == 200) {\r\n            Toast.success(\"删除成功\");\r\n            this.$router.go(-1);\r\n          } else {\r\n            Toast.fail(res.error);\r\n          }\r\n        })\r\n      }).catch(() => {\r\n        // on cancel\r\n      });;\r\n\r\n    },\r\n\r\n    //新增订单\r\n    addOrderList(number, state) {\r\n      // 通过子组件引用拿到表单模型（引用语义）：_form 与 this.$refs.formComp.showForm 指向同一对象\r\n      // 后续对 _form 的任何读写都会直接作用于子组件的表单数据\r\n      let _form = this.$refs.formComp.showForm;\r\n      if (_form.orderProductList && _form.orderProductList.length) _form.remark = _form.orderProductList[0].remark; // 备注\r\n      if (_form.qualityIndicator) { // 质量标准-- 包装要求补充 --特殊包装\r\n        _form.orderProductList[0].qualityIndicator = _form.qualityIndicator;\r\n        _form.orderProductList[0].qualityStandard = (JSON.parse(_form.orderProductList[0].qualityIndicator) || []).map(ele => `${ele.itemName}:${ele.itemValue}`).join(', ');\r\n        _form.orderProductList[0].facadeStandard = _form.orderProductList[0].packingStandard;\r\n      };\r\n      _form.createTime ? _form.createTime += \" 00:00:00\" : \"\";\r\n      !_form.currency ? _form.currency = \"CNY\" : \"\";\r\n\r\n      // return;\r\n      this.$refs.formComp.validateForm().then(res => {\r\n        if (!res) {\r\n          flag = false\r\n          this.loading.clear();\r\n          Toast.fail(\"请填写必要信息\");\r\n          this.saveDisabled = false;\r\n          // this.$refs.saveBtn.remove(\"is-disabled\")\r\n          return;\r\n        }\r\n        // 提交前预处理：调用子组件的 prepareSubmit 对数据进行规范化\r\n        // - 统一税率到 1 位小数（空值默认 9.0）\r\n        // - 依据含税总价与税率计算不含税总价（excludeTaxAmount）与税额（taxAmount）\r\n        // - 规范金额到 2 位小数，并重新汇总订单总额 amount\r\n        if (this.$refs.formComp && this.$refs.formComp.prepareSubmit) {\r\n          this.$refs.formComp.prepareSubmit();\r\n        }\r\n        // 在详情维度，添加税额、税率、不含税总价\r\n        _form.taxRate = _form.orderProductList[0].taxRate;\r\n        _form.taxAmount = _form.orderProductList[0].taxAmount;\r\n        _form.excludeTaxAmount = _form.orderProductList[0].excludeTaxAmount;\r\n        // 提交前统一将签约公司字段覆盖到历史提交字段中，兼容后端当前入参结构。\r\n        _form.companyName = _form.signCompanyName || _form.companyName || '';\r\n        _form.simpleName = _form.signSimpleName || '';\r\n        if (!_form.languageCode) {\r\n          _form.languageCode = this.getLanguageCodeBySignCompany(this.getCustomerById(_form.customerId), _form.signCompanyName);\r\n        }\r\n\r\n        _form.status = state\r\n        if (_form.productList) {\r\n          delete _form.productList;\r\n        }\r\n        if (!_form.orderType) {\r\n          this.loading.clear();\r\n          Toast.fail(\"请选择订单类型\");\r\n          this.saveDisabled = false;\r\n          return\r\n        }\r\n        // 查看 原药的实物折百信息是否丢失\r\n        const hasNoEmptyConsumptionMode = _form.orderTechnicalMaterials.every(item =>\r\n          Boolean(item.consumptionMode)\r\n        );\r\n        if (_form.orderTechnicalMaterials && _form.orderTechnicalMaterials.length && !hasNoEmptyConsumptionMode) {\r\n          this.loading.clear();\r\n          Toast.fail(\"原药信息缺失实物、折百，请联系管理员\");\r\n          this.saveDisabled = false;\r\n          return\r\n        }\r\n        // 如果预计使用授信 大于 当前授信可用额度，则校验失败\r\n        if (Number(_form.planUseCreditAmount) > Number(_form.availableCredit)) {\r\n          this.loading.clear();\r\n          this.dialogData.show = true;\r\n          this.dialogData.curCreditAmount = _form.planUseCreditAmount;\r\n          this.dialogData.curAvailableCreditAmount = _form.availableCredit;\r\n          this.saveDisabled = false;\r\n          return\r\n        }\r\n        // 查看是否填写原药\r\n        // if (_form.orderTechnicalMaterials && _form.orderTechnicalMaterials.length <= 0) {\r\n        //   this.loading.clear();\r\n        //   Toast.fail(\"请填写原药信息\");\r\n        //   this.saveDisabled = false;\r\n        //   return\r\n        // }\r\n        // 提交时优先取当前表单中的最新报价溢价金额，未命中时再回退到路由入参。\r\n        _form.premiumAmount = this.getLatestPremiumAmount(_form, this.dataList, this.$route.query && this.$route.query.premiumAmount)\r\n        // 进仓费：产品行里的值同步到根节点，保证后端无论从根节点还是产品行取都能拿到（0 是合法值，仅 null/undefined 不同步）\r\n        if (_form.orderProductList && _form.orderProductList.length\r\n          && _form.orderProductList[0].inwardProcessingFee !== undefined\r\n          && _form.orderProductList[0].inwardProcessingFee !== null) {\r\n          _form.inwardProcessingFee = _form.orderProductList[0].inwardProcessingFee;\r\n        }\r\n        addOrder(_form).then(res => {\r\n          this.loading.clear();\r\n          if (res.code == 200) {\r\n            Toast.success(`${state == 0 ? '保存' : '提交'}成功`);\r\n            // TODO 回退页面\r\n            localStorage.setItem(\"isRefresh\", JSON.stringify(true)); //存储内容刷新列表\r\n            // this.goBack();\r\n            localStorage.setItem(\"crmAddOrderEditSuccess\", this.$route.query.quotationId); //存储内容刷新列表\r\n            // this.$router.go(-1);\r\n            this.goBack();\r\n\r\n\r\n          } else {\r\n            this.$toast(res.error, { duration: 5000 });\r\n          }\r\n          this.saveDisabled = false;\r\n        }).catch(res => {\r\n          this.loading.clear();\r\n          this.saveDisabled = false;\r\n        })\r\n      })\r\n\r\n    },\r\n    // 产品选择完成  页面返回\r\n    ProductSelection(bool) {\r\n      let productList = JSON.parse(localStorage.getItem(\"productList\")) || [];\r\n      this.$refs.formComp.showForm.quotationId = productList[0].quotationId;\r\n        // 新增：只赋值到子组件表单，提交时 _form 会读取，不做详情回显\r\n  const productOrgCode = productList[0]?.productOrgCode || '';\r\n  this.$set(this.$refs.formComp.showForm, 'productOrgCode', productOrgCode);\r\n      const latestPremiumAmount = this.getLatestPremiumAmount(\r\n        productList[0],\r\n        this.$refs.formComp.showForm,\r\n        this.dataList,\r\n        this.$route.query && this.$route.query.premiumAmount\r\n      );\r\n      // 选择新报价后，优先把新报价中的溢价金额同步到父子表单，保证页面展示与提交一致。\r\n      this.$set(this.$refs.formComp.showForm, 'premiumAmount', latestPremiumAmount);\r\n      this.$set(this.dataList, 'premiumAmount', latestPremiumAmount);\r\n      if (productList && productList.length) {\r\n        productList[0].premiumAmount = latestPremiumAmount;\r\n      }\r\n      // 公司信息的更换\r\n      this.huiShow(this.orderCustomerList, productList[0].customerName);\r\n      // 订单类型\r\n      this.dataList.orderType = productList[0].orderType == 0 ? 1 : 2;\r\n\r\n      // 原药信息的回显\r\n      this.tcInfoShow(productList[0]);\r\n      this.$nextTick(() => {\r\n        // 订单金额\r\n        this.dataList.amount = productList[0].actualTotalPrice || '';\r\n        // 产品信息的form表单\r\n        const showForm = JSON.parse(JSON.stringify(this.$refs.formComp.showForm));\r\n        // 以子表单快照为基础，再把父组件最新联动结果合并回来，避免报价带入时覆盖公司与签约公司字段。\r\n        let _form = Object.assign({}, showForm, this.dataList);\r\n        if (productList && productList.length) {\r\n          _form.qualityIndicator = productList[0].qualityIndicator;    // 产品质量指标\r\n          _form.premiumAmount = latestPremiumAmount;    // 最新报价的溢价金额\r\n          productList[0].category = productList[0].productCategoryCode;    // 产品信息中需要产品的类别\r\n          this.dataList.currency = productList[0].currency;    // 产品信息中需要产品的类别\r\n        }\r\n        this.dataList = _form\r\n        // 产品列表设置后，税务相关字段统一由子组件 list.vue 在 watch(dataList) 中初始化与计算\r\n        this.$set(this.dataList, 'orderProductList', productList)\r\n        // 报价带入后再次同步签约公司，避免被旧表单快照覆盖为空。\r\n        this.syncSignCompanyFields(this.getCustomerById(this.dataList.customerId), {\r\n          keepCurrent: true,\r\n          signCompanyName: this.dataList.signCompanyName,\r\n          signSimpleName: this.dataList.signSimpleName,\r\n          languageCode: this.dataList.languageCode\r\n        });\r\n        this.$refs.formComp.inputClick(this.inputList[1].inputList[5], 0, this.inputList[1])\r\n      });\r\n\r\n    },\r\n    // 选择完报价后回显客户信息（名称、简称、id）\r\n    huiShow(list, name) {\r\n      const targetName = this.hasTextValue(name) ? String(name).trim() : '';\r\n      const Arr = list.filter(item => {\r\n        const companyName = this.hasTextValue(item.companyName) ? String(item.companyName).trim() : '';\r\n        const companyNameEn = this.hasTextValue(item.companyNameEn) ? String(item.companyNameEn).trim() : '';\r\n        // 历史报价回显时，优先按中文名称匹配；中文为空或未命中时，继续按英文名称匹配。\r\n        return companyName === targetName || companyNameEn === targetName;\r\n      });\r\n      let obj = {};\r\n      if (Arr && Arr.length) {\r\n        obj = Arr[0];\r\n      }\r\n      console.log(obj, '筛选出来的公司信息');\r\n      this.dataList.companyName = this.getCustomerDisplayName(obj);   // 公司名称优先中文，兜底英文\r\n      this.dataList.customerId = obj.id;\r\n      // 更换公司简称\r\n      this.customerId = obj.id;\r\n      this.setSimpleName();\r\n      this.syncSignCompanyFields(obj);\r\n    },\r\n    // 原药信息回显\r\n    tcInfoShow(obj) {\r\n      if (obj.tcInfo) {\r\n        const tcInfoList = JSON.parse(obj.tcInfo);\r\n        this.dataList.orderTechnicalMaterials = tcInfoList.map(ele => {\r\n          return {\r\n            price: ele.actualTcPrice,\r\n            name: ele.tcName,\r\n            consumptionMode: ele.consumptionMode || '',\r\n            // const name = ele.consumptionMode == '1' ? '实' : ele.consumptionMode == '2' ? '折' : '无';\r\n            consumptionModeName: ele.consumptionMode == '1' ? '实' : ele.consumptionMode == '2' ? '折' : '无',\r\n            ...ele\r\n          }\r\n        })\r\n      }\r\n    },\r\n    stopOrderSubmit() {\r\n      this.loadingInit();\r\n      stopOrder({\r\n        orderId: this.dataList.orderId,\r\n        stopReason: this.terminationModel.stopReason\r\n      }).then(res => {\r\n        this.$toast.success(\"申请成功\")\r\n        this.loading.clear();\r\n        let that = this;\r\n        let time = setTimeout(function () {\r\n          clearTimeout(time)\r\n          that.goBack()\r\n        }, 1000)\r\n      })\r\n    },\r\n    // 公司简称赋值\r\n    setSimpleName() {\r\n      let _data = this.orderCustomerList.find(item => {\r\n        return item.id == this.customerId;\r\n      });\r\n      this.dataList[\"simpleName\"] = _data ? (_data.simpleName || '') : ''\r\n      this.updateParameters();\r\n    },\r\n    updateParameters() {\r\n      this.$nextTick(() => {\r\n        let _form = this.$refs.formComp.showForm;\r\n        // 以子表单现有值为基础，再用父级最新联动结果覆盖，避免父级写入的新值被旧空值冲掉。\r\n        let merged = Object.assign({}, _form, this.dataList);\r\n        // 历史报价带入的产品列表/原药列表由子组件异步回填（getData），父级 dataList 里的旧空列表\r\n        // 不能反过来覆盖它们，否则供方列表等接口晚于报价接口返回时会把它俩清空\r\n        // （原药被清空会导致预算订单缺原药信息、审批流程报错；iOS 上偶发）。\r\n        [\"orderProductList\", \"orderTechnicalMaterials\"].forEach(key => {\r\n          const parentListEmpty = !this.dataList[key] || !this.dataList[key].length;\r\n          const childListFilled = _form[key] && _form[key].length;\r\n          if (parentListEmpty && childListFilled) {\r\n            merged[key] = _form[key];\r\n          }\r\n        });\r\n        this.dataList = merged;\r\n      })\r\n    },\r\n    /* form 参数 变化 */\r\n    isNeedFeedbackChange(query) {\r\n      console.log(query, \"变化\");\r\n      const { key, data } = query;\r\n      switch (key) {\r\n        case \"customerId\":\r\n          // 公司名称\r\n          this.customerId = data[key]\r\n          this.setSimpleName();\r\n          this.syncSignCompanyFields(this.getCustomerById(data[key]));\r\n          this.setCustomerCreditInfo(data.companyName);\r\n          break;\r\n        case \"signCompanyName\":\r\n          // 签约公司名称\r\n          this.syncSignCompanyFields(this.getCustomerById(data.customerId || this.customerId), {\r\n            keepCurrent: true,\r\n            signCompanyName: data.signCompanyName\r\n          });\r\n          break;\r\n        case \"planPayStyle\":\r\n          // 预付款切换\r\n          if (data.planPayStyle != this.planPayStyle) {\r\n            this.planPayStyleChange(data.planPayStyle);\r\n            // 更新预计使用授信\r\n            this.updatePlanUseCredit();\r\n          }\r\n          break;\r\n        case \"planPayAmount\":\r\n          // 自定义预付金额变化：联动计算与校验刷新\r\n          this.updatePlanUseCredit();\r\n          break;\r\n        case \"deliveryStyle\":\r\n          // 发货方式切换，更新预计使用授信\r\n          this.updatePlanUseCredit();\r\n          break;\r\n        case \"providerId\":\r\n          // 供方切换\r\n          this.providerChange(data.providerId);\r\n          break;\r\n\r\n        default:\r\n          break;\r\n      }\r\n    },\r\n    // 预付款切换\r\n    planPayStyleChange(value) {\r\n      console.log(value, \"切换************\");\r\n      let arr = this.planPayAndDeliveryType.filter(item => {\r\n        return item.planPayStyle == value\r\n      })\r\n      console.log(arr);\r\n      this.findFill(arr[0].deliveryTypeList, 1, 'deliveryStyle', \"deliveryStyleName\", \"deliveryStyle\");\r\n\r\n      // if (value == 100) {\r\n      //   let _opt = { tit: \"具体金额\", key: \"planPayAmount\", placeholder: \"填写数字\", type: \"number\" };\r\n      //   this.inputList[1].inputList.splice(5, 0, _opt)\r\n      // }\r\n      const contractInputs = this.inputList[1].inputList; // 合同输入项列表（第二组）\r\n      const amountIndex = contractInputs.findIndex(item => item.key === 'planPayAmount'); // 查找“具体金额”输入框的位置\r\n      // 当预付款方式为自定义金额（100）时：确保页面上有“具体金额”输入框\r\n      if (value == 100) {\r\n        // 若不存在“具体金额”输入框，则新增一个输入项\r\n        if (amountIndex === -1) {\r\n          const _opt = { tit: \"具体金额\", key: \"planPayAmount\", placeholder: \"填写数字\", type: \"number\" };\r\n          // “货到天数”字段的索引，用于确定插入位置\r\n          const payDayIndex = contractInputs.findIndex(item => item.key === 'payDay');\r\n          const insertIndex = payDayIndex !== -1 ? payDayIndex : 5; // 有“货到天数”则插到其前；否则回退到位置 5\r\n          contractInputs.splice(insertIndex, 0, _opt);\r\n        }\r\n      } else {\r\n        // 当预付款方式为非自定义金额时：移除“具体金额”输入框，并清空已填的具体金额\r\n        if (amountIndex !== -1) {\r\n          contractInputs.splice(amountIndex, 1);\r\n        }\r\n        if (this.$refs.formComp && this.$refs.formComp.showForm) {\r\n          this.$set(this.$refs.formComp.showForm, 'planPayAmount', ''); // 清空子表单中的具体金额值（响应式）\r\n        }\r\n        this.$set(this.dataList, 'planPayAmount', ''); // 同步清空父级数据中的具体金额值\r\n      }\r\n      if (this.planPayStyle == 100) {\r\n        this.inputList[1].inputList.splice(2, 1)\r\n      }\r\n\r\n      this.planPayStyle = value;\r\n      this.updatePlanUseCredit()\r\n    },\r\n    updatePlanUseCredit() {\r\n      // 计算说明：统一从表单读取参数，调用公共方法计算三项金额\r\n      // 计算目标：planUseCreditAmount（预计使用授信）、planPayAmount（预付款）、noCreditNoPayAmount（剩余：非授信非预付款）\r\n      const form = this.$refs.formComp && this.$refs.formComp.showForm ? this.$refs.formComp.showForm : this.dataList;\r\n      const amount = Number(form.amount) || 0;\r\n      const styleStr = String(form.planPayStyle || '');\r\n      const delivery = String(form.deliveryStyle || '');\r\n      // 自定义预付金额仅在 planPayStyle = '100' 时传入\r\n      const inputPlanPayAmount = styleStr === '100' ? form.planPayAmount : undefined;\r\n      // 调用公共方法进行计算，返回三项金额（已保留两位小数）\r\n      const { planUseCreditAmount, planPayAmount, noCreditNoPayAmount } = calcCreditAmounts({ amount, planPayStyle: styleStr, deliveryStyle: delivery, planPayAmountInput: inputPlanPayAmount });\r\n      // 写回子组件表单（用于展示与提交）\r\n      if (this.$refs.formComp && this.$refs.formComp.showForm) {\r\n        this.$refs.formComp.showForm.planUseCreditAmount = planUseCreditAmount;\r\n        this.$refs.formComp.showForm.planPayAmount = planPayAmount;\r\n        this.$refs.formComp.showForm.noCreditNoPayAmount = noCreditNoPayAmount;\r\n      }\r\n      // 写回父级数据（用于存储与回显）\r\n      this.$set(this.dataList, 'planUseCreditAmount', planUseCreditAmount);\r\n      this.$set(this.dataList, 'planPayAmount', planPayAmount);\r\n      this.$set(this.dataList, 'noCreditNoPayAmount', noCreditNoPayAmount);\r\n      // console.log('父组件计算结果：planUseCreditAmount', planUseCreditAmount);\r\n      // console.log('父组计算结果：planPayAmount', planPayAmount);\r\n      // console.log('父组计算结果：noCreditNoPayAmount', noCreditNoPayAmount);\r\n      this.updatePayDayRules();\r\n    },\r\n    //  供方切换\r\n    providerChange(value) {\r\n      let _obj = this.providerList.filter(item => item.id == value)[0];\r\n      //  供方 新增TODO\r\n      let _oldKey = [\"Gsmc\", \"Dz\", \"fr\", \"Zh\", \"Dh\"];\r\n\r\n      // console.log(_obj);\r\n      this.SupplierAndDemanderKeys.forEach((item, i) => {\r\n        this.dataList[\"provider\" + item] = _obj[_oldKey[i]]\r\n        // this.$set(this.dataList, \"provider\" + item, _obj[_oldKey[i]]);\r\n      });\r\n      this.dataList[\"signPath\"] = _obj[\"Gzlj\"];\r\n      this.updateParameters();\r\n      // console.log(this.dataList);\r\n    },\r\n    //  更新货到天数校验规则\r\n    updatePayDayRules() {\r\n      const form = this.$refs.formComp && this.$refs.formComp.showForm ? this.$refs.formComp.showForm : this.dataList;\r\n      const useCredit = Number(form.planUseCreditAmount) || 0;\r\n      const delivery = String(form.deliveryStyle || '');\r\n      const maxPeriod = Number(form.payPeriod || this.dataList.payPeriod);\r\n      const contractInputs = this.inputList[1].inputList;\r\n      const idx = contractInputs.findIndex(item => item.key === 'payDay');\r\n      if (idx === -1) return;\r\n      if (useCredit > 0 && (delivery === 'day' || delivery === 'pay')) {\r\n        const rules = [\r\n          { required: true, message: '请填写货到天数' },\r\n          {\r\n            validator: (val) => {\r\n              if (val === '' || val === undefined || val === null) return true;\r\n              const n = Number(val);\r\n              if (isNaN(n)) return false;\r\n              if (isNaN(maxPeriod) || !maxPeriod) return true;\r\n              return n <= maxPeriod;\r\n            },\r\n            message: `货到天数不可超过账期${isNaN(maxPeriod) ? '' : maxPeriod}天`\r\n          }\r\n        ];\r\n        this.$set(contractInputs[idx], 'rules', rules);\r\n      } else {\r\n        this.$set(contractInputs[idx], 'rules', []);\r\n      }\r\n    }\r\n  },\r\n\r\n\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n.app-main {\r\n  background: #ccc !important;\r\n}\r\n\r\n.blankBlock {\r\n  height: 10px;\r\n  // background: #f8f8f8;\r\n}\r\n\r\n.title {\r\n  width: 100%;\r\n  font-size: 16px;\r\n\r\n  font-size: 16px;\r\n  font-weight: bold;\r\n  color: #26BFB2;\r\n  line-height: 45px;\r\n  text-align: center;\r\n  background: #f8f8f8;\r\n}\r\n\r\n.van-button {\r\n  width: 40%;\r\n  margin: 30px auto;\r\n  background: #fff;\r\n  border: #26BFB2 1px solid;\r\n  color: #26BFB2;\r\n  margin: 0 5px;\r\n}\r\n\r\n.van-button:last-child {\r\n  background: #26BFB2;\r\n  border: #26BFB2 1px solid;\r\n  color: #fff;\r\n}\r\n\r\n.vanpopup {\r\n  padding-top: 50px;\r\n\r\n  .vanCheckboxGroup {\r\n    margin: 0px 24px 20px 24px;\r\n    border: #e9e9e9 1px solid;\r\n\r\n    .vanCheckboxGroup_div {\r\n      padding: 15px 10px;\r\n      font-weight: bold;\r\n      display: flex;\r\n      justify-content: space-between;\r\n    }\r\n  }\r\n\r\n  .textarea {\r\n    width: calc(100% - 48px);\r\n    margin: 0px 24px;\r\n    border: #e9e9e9 1px solid;\r\n    box-sizing: border-box;\r\n  }\r\n}\r\n\r\n.credit-dialog {\r\n  padding: 0px;\r\n  /deep/ .van-dialog {\r\n    width: 88vw;\r\n    max-width: 420px;\r\n    border-radius: 12px;\r\n  }\r\n  .dialog-content {\r\n    padding: 12px 24px;\r\n  }\r\n  .credit-msg {\r\n    font-size: 14px;\r\n    line-height: 1.6;\r\n    color: #333;\r\n    margin-bottom: 8px;\r\n  }\r\n  .num {\r\n    color: #ff4d4f;\r\n    font-weight: 600;\r\n    padding: 0 2px;\r\n  }\r\n  .credit-tips {\r\n    display: block;\r\n    margin-top: 4px;\r\n    border: 1px solid orange;\r\n    background: #fff8e6;\r\n    border-radius: 8px;\r\n    padding: 8px 12px;\r\n  }\r\n  .tips-title {\r\n    font-size: 13px;\r\n    color: orange;\r\n    font-weight: 600;\r\n  }\r\n  .tips-list {\r\n    margin: 6px 0 0;\r\n    padding-left: 18px;\r\n    color: #666;\r\n    font-size: 13px;\r\n    line-height: 1.6;\r\n    list-style: decimal;\r\n  }\r\n  /deep/ .van-dialog__footer .van-button {\r\n    border-radius: 8px;\r\n  }\r\n  /deep/ .van-dialog__footer .van-button--primary {\r\n    background: #26BFB2;\r\n    border-color: #26BFB2;\r\n  }\r\n}\r\n</style>\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addOrder.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addOrder.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./addOrder.vue?vue&type=template&id=3f3e6f58&scoped=true&\"\nimport script from \"./addOrder.vue?vue&type=script&lang=js&\"\nexport * from \"./addOrder.vue?vue&type=script&lang=js&\"\nimport style0 from \"./addOrder.vue?vue&type=style&index=0&id=3f3e6f58&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3f3e6f58\",\n  null\n  \n)\n\nexport default component.exports","import request from '@/utils/request';\r\n\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 getAgreementList(data) {\r\n    return request({\r\n        url: `${service}/contract/getContractList`,\r\n        method: 'get',\r\n        params: data\r\n    })\r\n}\r\n\r\n// 获取新增合同的基本信息\r\nexport function getContractBaseInfo() {\r\n    return request({\r\n        url: `${service}/contract/getContractBaseInfo`,\r\n        method: 'get',\r\n    })\r\n}\r\n\r\n// 获取预付款和发货方式枚举值\r\nexport function getPlanPayAndDeliveryType() {\r\n    return request({\r\n        url: `${service}/contract/getPlanPayAndDeliveryType`,\r\n        method: 'get',\r\n    })\r\n}\r\n// 新增合同\r\nexport function addContract(data) {\r\n    return request({\r\n        // url: `${service}/contract/addContract`,\r\n        // url: `${service}/contract/addOrUpdateContract`,\r\n        url: `${service}/contract/updateContract`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n\r\n// 查询合同回款明细信息\r\nexport function getContractRefundDetail(data) {\r\n    return request({\r\n        url: `${service}/refund/getContractRefundDetail`,\r\n        method: 'get',\r\n        params: data\r\n    })\r\n}\r\n\r\n// 查询合同详情\r\nexport function getContractDetailVO(data) {\r\n    return request({\r\n        url: `${service}/contract/getContractDetailVO`,\r\n        method: 'get',\r\n        params: data\r\n    })\r\n}\r\n\r\n// 获取新增合同的订单下拉列表-选中某个后调详情接口获取订单关联的产品信息\r\nexport function getOrderListForAddContract(data) {\r\n    return request({\r\n        url: `${service}/contract/getOrderListForAddContract`,\r\n        method: 'get',\r\n        params: data\r\n    })\r\n}\r\n\r\n// 审批\r\nexport function handleApprove(data) {\r\n    return request({\r\n        url: `${service}/approve/handleApprove`,\r\n        method: 'POST',\r\n        data\r\n    })\r\n}\r\n\r\n// 预览\r\n// http://upi.crm.jiuzhuokeji.cn/api/contract/browseContractFile\r\nexport function browseContractFile(data) {\r\n    return request({\r\n        url: `${service}/contract/browseContractFile`,\r\n        method: 'POST',\r\n        data\r\n    })\r\n}\r\n// 撤销\r\nexport function cancelContract(data) {\r\n    return request({\r\n        url: `${service}/contract/cancelContract`,\r\n        method: 'GET',\r\n        params: data\r\n    })\r\n}\r\n// contract/cancelContract?contractId=62\r\n\r\n// 获取供方列表\r\nexport function getCompanyInfoFromTj() {\r\n    return request({\r\n        url: `${service}/order/getCompanyInfoFromTj`,\r\n        method: 'GET',\r\n    })\r\n}\r\n// 申请合同修改 合同状态为已审批状态\r\nexport function applyUpdate(data) {\r\n    return request({\r\n        url: `${service}/contract/applyUpdate`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n// 批量更新 合同附件\r\nexport function batchUpdateContractFile(data) {\r\n    return request({\r\n        url: `${service}/contract/batchUpdateContractFile`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n// 批量更新 合同附件原药\r\nexport function batchUpdateContractFileyY(data) {\r\n    return request({\r\n        url: `${cloud}/jeecg-crm/appCrm/api/batchUpdateContractFile`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n\r\n\r\n// 获取盖章回传列表\r\nexport function getstampReturnList(data) {\r\n    return request({\r\n        url: `${service}/stamp/getStampReturnList`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n// 获取盖章回传列表原药\r\nexport function getstampReturnListYy(params) {\r\n    return request({\r\n        url: `${cloud}/jeecg-crm/appCrm/api/getStampReturnList`,\r\n        method: 'get',\r\n        params\r\n    })\r\n}\r\n// /stamp/ackStamp\r\n// 确认盖章\r\nexport function ackStamp(data) {\r\n    return request({\r\n        url: `${service}/stamp/ackStamp`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n// 盖章回传原药\r\nexport function ackStampYy(data) {\r\n    return request({\r\n        url: `${cloud}/jeecg-crm/appCrm/api/ackStamp`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n\r\n\r\n\r\n// 新增合同\r\nexport function getApprovalProcessByContractId(data) {\r\n    return request({\r\n        url: `${service}/approve/getApprovalProcessByContractId`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n\r\n\r\n// 原药销售订单详情\r\nexport function queryCrmContractDetailById(params) {\r\n  return request({\r\n    url: `${cloud}/jeecg-crm/appCrm/api/queryCrmContractDetailById`,\r\n    method: 'get',\r\n    params\r\n  })\r\n}\r\n// 盖章回传-批量更新同步附件\r\nexport function updateAttachmentsYy(data) {\r\n    return request({\r\n        url: `${cloud}/jeecg-crm/appCrm/api/updateAttachments`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n\r\n\r\n// 盖章回传-批量更新同步附件\r\nexport function updateAttachments(data) {\r\n    return request({\r\n        url: `${service}/contract/updateAttachments`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n\r\n// 合同-更新订单签订日期\r\nexport function updateOrderSign(data) {\r\n    return request({\r\n        url: `${service}/contract/updateOrderSign`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n// 合同-更新订单签订日期 原药\r\n\r\nexport function updateOrderSignYy(data) {\r\n    return request({\r\n        url: `${cloud}/jeecg-crm/appCrm/api/updateOrderSign`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n\r\n\r\n// 合同-产品质量标准修改\r\nexport function updateContractQuality(data) {\r\n    return request({\r\n        url: `${service}/contract/updateContractQuality`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n\r\n// 合同-查询产品质量指标修改记录\r\nexport function getContractQualityUpdateList(data) {\r\n    return request({\r\n        url: `${service}/contract/getContractQualityUpdateRecordList`,\r\n        method: 'post',\r\n        data\r\n    })\r\n}\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./addOrder.vue?vue&type=style&index=0&id=3f3e6f58&lang=scss&scoped=true&\""],"sourceRoot":""}