| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239 | <template>  <div class="borderless">    <div class="customer-head">      <div class="customer-back">        <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"                   @click="backToList">返回列表        </el-button>      <div  class="upper_right_button">        <el-button type="primary"                   size="small"                   v-if="viewDisabled"                   class="el-button--small-yh "                   :loading="buttonLoading"                   @click.stop="openDisabled()">编辑        </el-button>        <el-dropdown style="padding: 0 8px;line-height: 0">          <el-button            type="warning"            :loading="buttonLoading"            :disabled="!form.id || viewDisabled"            size="small"          >            账单处理<i class="el-icon-arrow-down el-icon--right"></i>          </el-button>          <el-dropdown-menu slot="dropdown">            <el-dropdown-item              :loading="buttonLoading"              :disabled="!form.id || viewDisabled"              @click.native="applyPayment('申请')">申请货款            </el-dropdown-item>            <el-dropdown-item              :loading="buttonLoading"              :disabled="!form.id  || viewDisabled"              @click.native="applyPayment('收费')">申请退款            </el-dropdown-item>            <el-dropdown-item              :loading="buttonLoading"              :disabled="!form.id  || viewDisabled"              @click.native="openApplicationDialog">查看账单            </el-dropdown-item>          </el-dropdown-menu>        </el-dropdown><!--        <el-button type="warning"--><!--                   size="small"--><!--                   class="el-button--small-yh "--><!--                   :loading="buttonLoading"--><!--                   :disabled="!form.id || viewDisabled"--><!--                   @click.stop="applyPayment('申请')">申请货款--><!--        </el-button>--><!--        <el-button type="info"--><!--                   size="small"--><!--                   :loading="buttonLoading"--><!--                   :disabled="!form.id  || viewDisabled"--><!--                   @click="openApplicationDialog"--><!--        >查看付款记录--><!--        </el-button>--><!--        <el-button type="warning"--><!--                   size="small"--><!--                   class="el-button--small-yh "--><!--                   :loading="buttonLoading"--><!--                   :disabled="!form.id  || viewDisabled"--><!--                   @click.stop="applyPayment('收费')">退款--><!--        </el-button>-->        <el-button type="success"                   size="small"                   :loading="buttonLoading"                   class="el-button--small-yh "                   :disabled="true"                   @click.stop="">复制单据        </el-button>        <el-button          class="el-button--small-yh "          type="primary"          size="small"          :disabled="disabled  || viewDisabled"          @click="editCustomer"          :loading="buttonLoading"        >保存数据        </el-button>      </div>    </div>    </div>    <div class="customer-main">      <el-form :model="form" ref="form" label-width="130px">        <containerTitle title="基础信息"></containerTitle>        <basic-container style="margin-bottom: 10px">          <el-row>            <el-col v-for="(item, index) in basicData.column" :span="item.span?item.span:8" :key="index">              <el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">                <el-date-picker v-if="item.type === 'date'" style="width: 100%;" v-model="form[item.prop]" :disabled="item.disabled?true:false" size="small" type="date" placeholder="选择日期" value-format="yyyy-MM-dd HH:mm:ss"/>                <el-select v-else-if="item.type === 'select'" style="width: 100%" v-model="form[item.prop]" size="small" placeholder="请选择" clearable filterable>                  <el-option                    v-for="(data, index) in item.dicData"                    :key="index"                    :label="data.label"                    :value="data.value"                  ></el-option>                </el-select>                <el-input type="age" v-else-if="item.prop === 'orderAmount'" v-model="form[item.prop]" :disabled="item.disabled?true:false || takeDisabled" size="small" autocomplete="off" @input="currencyChange" placeholder="请输入"></el-input>                <selectComponent v-else-if="item.prop === 'corpId'" v-model="form[item.prop]" :disabled="item.disabled?true:false || takeDisabled" :configuration="configuration"/>                <selectComponent v-else-if="item.prop === 'purchaserId'" v-model="form[item.prop]" :disabled="item.disabled?true:false || takeDisabled" :configuration="pConfiguration"/>                <selectComponent v-else-if="item.prop === 'belongToCorpId'" v-model="form[item.prop]" :disabled="item.disabled?true:false || takeDisabled" :configuration="bConfiguration"/>                <el-select v-else-if="item.prop === 'orderType'"  style="width: 100%"  v-model="form[item.prop]" :disabled="item.disabled?true:false || takeDisabled" size="small" placeholder="请选择" clearable filterable>                  <el-option v-for="(item,index) in contractTypeDic" :key="index" :label="item.dictValue" :value="item.dictValue"></el-option>                </el-select>                <el-select v-else-if="item.prop === 'currency'" style="width: 100%"  :disabled="item.disabled?true:false || takeDisabled"  v-model="form[item.prop]" size="small" placeholder="请选择" @change="currencyChange('true')" clearable filterable>                  <el-option v-for="(item,index) in currencyDic" :key="index" :label="item.dictValue"  :value="item.dictValue"></el-option>                </el-select>                <el-select v-else-if="item.prop === 'paymentType'"  style="width: 100%"  v-model="form[item.prop]" size="small" placeholder="请选择" clearable filterable>                  <el-option v-for="(item,index) in paymentTypeDic" :key="index" :label="item.dictValue" :value="item.dictValue"></el-option>                </el-select>                <div v-else-if="item.prop === 'advancePayment'">                  <el-input type="age" v-model="form[item.prop]" style="width: 70%" :disabled="item.disabled?true:false || takeDisabled"  size="small" autocomplete="off" placeholder="请输入"></el-input>                  <el-select v-model="form['prepayCurrency']" size="small" style="width: 30%"  :disabled="item.disabled?true:false || takeDisabled" value="USD"   placeholder="请选择" clearable filterable>                    <el-option v-for="(item,index) in currencyDic" :key="index" :label="item.dictValue"  :value="item.dictValue"></el-option>                  </el-select>                </div>                <el-input type="age" v-else-if="item.prop === 'exchangeRate'" v-model="form[item.prop]"  :disabled="item.disabled?true:false || takeDisabled" size="small" autocomplete="off"  @change="currencyChange" placeholder="请输入">                </el-input>                <el-input type="textarea" v-else-if="(item.prop === 'orderRemark')" v-model="form[item.prop]"   size="small" autocomplete="off" placeholder="请输入"></el-input>                <el-input type="age" v-else v-model="form[item.prop]" :disabled="item.disabled?true:false || takeDisabled" size="small" autocomplete="off" placeholder="请输入"></el-input>              </el-form-item>            </el-col>          </el-row>        </basic-container><!--        采购明细-->        <containerTitle title="采购明细"></containerTitle>        <basic-container style="margin-bottom: 10px">          <avue-crud            :option="customerContact"            v-model="contactsForm"            :data="contactsData"            ref="crudContact"            @row-save="rowSave"            @selection-change="selectionContact"            @row-click="handleRowClick"            @row-update="rowUpdate"            @row-del="rowDel"            @saveColumn="saveColumn"          >            <template slot="priceCategory" slot-scope="{ row, index}">              <span v-if="row.$cellEdit" class="required_fields">*</span>              <goods-select                style="width:90% !important;"                v-if="row.$cellEdit"                v-model="row.priceCategoryNames"                @valueName="(value) => valueName(value,row)"               :configuration="itemConfiguration"              >              </goods-select>              <span v-else>{{ row.priceCategoryNames }}</span>            </template>            <template slot="itemType" slot-scope="{ row, index }">              <span v-if="row.$cellEdit" class="required_fields">*</span>              <el-select                v-if="row.$cellEdit"                v-model="row.itemType"                size="small"                style="width:90% !important;"                filterable                allow-create                default-first-option                clearable              >                <el-option                  v-for="(item,index) in itemTypeList"                  :key="index"                  :label="item"                  :value="item"                >                </el-option>              </el-select>              <span v-else>{{ row.itemType }}</span>            </template>            <template slot="orderQuantity" slot-scope="{ row }">              <span v-if="row.$cellEdit" class="required_fields">*</span>              <el-input                style="width:90% !important;"                v-if="row.$cellEdit"                v-model="row.orderQuantity"                placeholder="请输入"                size="small"                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'              ></el-input>              <span v-else>{{ row.orderQuantity | roundNumbers}}</span>            </template>            <template slot="price" slot-scope="{ row }">              <span v-if="row.$cellEdit" class="required_fields">*</span>              <el-input                style="width:90% !important;"                v-if="row.$cellEdit"                v-model="row.price"                placeholder="请输入"                size="small"                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d).*$/, "$1.$2")'                @input="priceChange(row)"              ></el-input>              <span v-else>{{ row.price }}</span>            </template>            <template slot="invoiceWeight" slot-scope="{ row }">              <span v-if="row.$cellEdit" class="required_fields">*</span>              <el-input                style="width:90% !important;"                v-if="row.$cellEdit"                v-model="row.invoiceWeight"                placeholder="请输入"                size="small"                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'                @change="totalChange(row.invoiceWeight)"              ></el-input>              <span v-else>{{ row.invoiceWeight }}</span>            </template>            <template slot="billWeight" slot-scope="{ row }">              <el-input                style="width:90% !important;"                v-if="row.$cellEdit"                v-model="row.billWeight"                placeholder="请输入"                size="small"                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'                @input="billWeightChange(row)"                @change="totalChange(row.billWeight)"              ></el-input>              <span v-else>{{ row.billWeight }}</span>            </template>            <template slot="amount" slot-scope="{ row }">              <span v-if="row.$cellEdit" class="required_fields">*</span>              <el-input                style="width:90% !important;"                v-if="row.$cellEdit"                v-model="row.amount"                placeholder="请输入"                size="small"                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'              ></el-input>              <span v-else>{{ row.amount }}</span>            </template>            <template slot="taxRate" slot-scope="{ row }">              <el-input                v-if="row.$cellEdit"                v-model="row.taxRate"                size="small"                oninput='this.value=this.value.replace(/[^(\d.)]/g,"").replace(/^(\d+)\.(\d\d\d\d\d\d).*$/, "$1.$2")'                autocomplete="off"              >                <i slot="suffix" style="margin-top:3px;margin-right: 10px;display:inline-block">%</i>              </el-input>              <span v-else>{{ row.taxRate | isPercentage }}</span>            </template>            <template slot="actualQuantity" slot-scope="{ row }">              <span>{{ row.actualQuantity | roundNumbers}}</span>            </template>            <template slot-scope="{row,index}" slot="menu">              <el-button                type="text"                size="small"                :disabled="row.actualQuantity !=0  || viewDisabled"                @click="rowCell(row,index)"              >{{ row.$cellEdit ? '修改完成' : '修改' }}              </el-button>              <el-button                type="text"                size="small"                :disabled="row.actualQuantity !=0 || viewDisabled"                @click="rowDel(row,index)"              >删除              </el-button>            </template>            <template slot="menuLeft" slot-scope="{size}">              <el-button type="primary"                         icon="el-icon-plus"                         size="small"                         :disabled=" viewDisabled"                         @click="commoditySelection"              >录入明细              </el-button>              <el-button type="warning"                         size="small"                         :disabled="selectContact.length == 0 ||  viewDisabled"                         @click="beforePage(false)"              >生成收货单              </el-button>            </template>          </avue-crud>        </basic-container>        <fee-info          ref="feeInfo"          :orderFeesList="orderFeesList"          :disabled="viewDisabled"          @beforeFinance="beforeFinance"          feeUrl=""        />        <upload-file          ref="uploadFile"          title="合同附件"          :disabled="viewDisabled"          :orderFilesList="orderFilesList"          delUrl=""        />      </el-form>    </div>    <el-dialog      title="付款记录"      append-to-body      class="el-dialogDeep"      :visible.sync="applicationDialog"      width="60%"      :close-on-click-modal="false"      :destroy-on-close="true"      :close-on-press-escape="false"      v-dialog-drag    >      <bill-application        :billId="form.id"        @choceApplication="choceApplication"      >      </bill-application>    </el-dialog>    <el-dialog      append-to-body      title="账单"      class="el-dialogDeep"      :visible.sync="applyPaymentDialog"      width="70%"      :close-on-click-modal="false"      :destroy-on-close="true"      :close-on-press-escape="false"      v-dialog-drag    >      <apply-payment        :billUrl="billUrl"        :billType="billType"        :billData="billData"        @choceFun="choceFun"      >      </apply-payment>    </el-dialog>  </div></template><script>import customerContact from "./config/customerContact.json"import uploadList from './config/uploadList.json'import advantageProject from "./config/advantageProject.json"import { getDeptLazyTree } from "@/api/basicData/basicFeesDesc";import optionTwoCost from "./config/mainListCost.json"import {detailListData, submitData} from "@/api/importTrade/purchase";import feeInfo from "@/components/fee-info/main";import uploadFile from "@/components/upload-file/main";import _ from "lodash";import { isPercentage,roundNumbers } from "@/util/validate";import  billApplication from "@/components/bill/billApplication";//商品详情接口import { corpsattn } from "@/api/basicData/configuration"import { contrastObj,contrastList } from "@/util/contrastData";import ApplyPayment from "../../../components/finance/applyPayment";export default {  name: "detailsPage",  props: {    detailData: {      type: Object    }  },  filters: {    isPercentage(val) {      return isPercentage(val);    },    roundNumbers(val){      return roundNumbers(val);    }  },  components: {    ApplyPayment,    feeInfo,    uploadFile,    billApplication  },  data() {    return {      form: {},      disabled: false,      customerContact: {},      contactsForm: {},      contactsData: [],      itemTypeList:[],      buttonLoading:false,      applyPaymentDialog:false,      applicationDialog:false,      commodityData: false,      takeDisabled:false, //收货状态      viewDisabled:false,      tableData: [],      billUrl:"/financialManagement/paymentRequest/paymentRequest",      billType:"",      billData:{},      contractTypeDic:[],      currencyDic:[],      selectContact:[],//选中采购明细      selectKind: -1,//选择采购明细的货品      paymentTypeDic:[],      orderFeesList:[],      orderFilesList:[],      treeDeptId: '',      configuration:{        multipleChoices:false,        multiple:false,        disabled:false,        searchShow:true,        collapseTags:false,        placeholder:'请点击右边按钮选择',        dicData:[]      },      pConfiguration:{        multipleChoices:false,        multiple:false,        disabled:false,        searchShow:true,        collapseTags:false,        placeholder:'请点击右边按钮选择',        dicData:[]      },      bConfiguration:{        multipleChoices:false,        multiple:false,        disabled:false,        searchShow:true,        collapseTags:false,        placeholder:'请点击右边按钮选择',        dicData:[]      },      itemConfiguration:{        multipleChoices:false,        multiple:false,        disabled:false,        searchShow:true,        collapseTags:false,        placeholder:'请点击右边按钮选择',        dicData:[]      },      // 合同上传数据      uploadList: uploadList,      // 合同数据      bankOfDepositData: [],      bankOfDepositForm: {},      // 其他费用      advantageProject: advantageProject,      advantageProjectData: [],      advantageProjectForm: {},      dialogCost: false,      choiceData: false,      treeOptionCost:{        nodeKey: 'id',        lazy: true,        treeLoad: function (node, resolve) {          const parentId = (node.level === 0) ? 0 : node.data.id;          getDeptLazyTree(parentId).then(res => {            resolve(res.data.data.map(item => {              return {                ...item,                leaf: !item.hasChildren              }            }))          });        },        addBtn: false,        menu: false,        size: 'small',        props: {          labelText: '标题',          label: 'title',          value: 'value',          children: 'children'        }      },      // 导入其他费用配置      optionTwoCost: optionTwoCost,      loadingCost: false,      dataCost:[],      pageCost:{        pageSize: 10,        currentPage: 1,        total: 0      },      tableDataCost: [],      treeDeptIdCost: '',      choiceIndex: '',      //对比新旧数据信息      oldContactsData:[],      oldForm:{},      oldFeesList:[],      oldFilesList:[],    //  基础信息      basicData: {        column: [          {            label: '系统编号',            prop: 'sysNo',            disabled:true,            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          }, {            label: '供应商',            prop: 'corpId',            span: 16,            dicData: [],            rules: [              {                required: true,                message: ' ',                trigger: 'blur'              }            ]          },{            label: '合同号',            prop: 'orderNo',            rules: [              {                required: true,                message: ' ',                trigger: 'blur'              }            ]          }, {            label: '采购商',            prop: 'purchaserId',            span: 16,            dicData: [],            rules: [              {                required: true,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '合同日期',            prop: 'businesDate',            type:'date',            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '所属公司',            prop: 'belongToCorpId',            span: 16,            dicData: [],            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },         {            label: '合同金额',            prop: 'orderAmount',            rules: [              {                pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '合同重量(吨)',            prop: 'contractWeight',            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '合同类型',            prop: 'orderType',            // type:'select',            dicData: [],            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '业务员',            prop: 'salesName',            dicData: [],            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '要求发货日期',            prop: 'requiredDeliveryDate',            type:'date',            rules: [              {                required: true,                message: ' ',                trigger: 'blur'              }            ]          }, {            label: '要求到货日期',            prop: 'requiredArrivalDate',            type:'date',            rules: [              {                required: true,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '单价',            prop: 'salesPrice',            rules: [              {                pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,                message: ' ',                trigger: 'blur'              }            ]          }, {            label: '币别',            prop: 'currency'          }, {            label: '汇率',            prop: 'exchangeRate',          }, {            label: '人民币金额',            prop: 'rmbAmount',            rules: [              {                pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,                message: ' ',                trigger: 'blur'              }            ]          }, {            label: '付款方式',            prop: 'paymentType',          },          {            label: '到港日期',            prop: 'dateOfArrival',            type:'date',            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          }, {            label: '付款/开证日期',            prop: 'accountsCollectionDate',            type:'date',            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '信用证到期日',            prop: 'creditDate',            type:'date',            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '最迟付款日期',            prop: 'latestDate',            type:'date',            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '预付(保证)金额',            prop: 'advancePayment',            rules: [              {                pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '已付人民币金额',            prop: 'settlmentAmount',            disabled: true,            rules: [              {                pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '已付外币金额',            prop: 'foreignSettlmentAmount',            disabled: true,            rules: [              {                pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '发票重量',            prop: 'invoiceWeight',            disabled: true,            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: '码单重量',            prop: 'billWeight',            disabled: true,            rules: [              {                required: false,                message: ' ',                trigger: 'blur'              }            ]          },          {            label: "备注",            span: 24,            prop: "orderRemark",            mock: {              type: 'county'            }          }        ],      },    }  },  async created() {    this.customerContact = await this.getColumnData(this.getColumnName(37), customerContact);    //币别    this.getWorkDicts("currency").then(res =>{      this.currencyDic = res.data.data    })    this.getWorkDicts("contractType").then(res =>{      this.contractTypeDic = res.data.data    })    this.getWorkDicts("payment_term").then(res =>{      this.paymentTypeDic = res.data.data    })    if(this.detailData.view){      this.viewDisabled = true    }    if (this.detailData.id) {      this.buttonLoading = true;      let id = this.detailData.id.replace(/\"/g, "")      detailListData(id).then(res => {        this.form = res.data.data;        this.afterEcho(res.data.data)      }).finally(()=>{        this.buttonLoading = false;      })    } else{      this.$set(this.form,"currency","USD")      this.$set(this.form,"exchangeRate",6.3686)    }  },  methods: {    valueName(value,row){      this.itemTypeList = value.list      this.$set(row,"priceCategory",value.id)      this.$set(row,"itemId",value.id)   //将id 赋值给itemId  提单号查询合同号时使用    },    //单价    priceChange(row) {      if (row.price && row.billWeight) {        row.amount = _.multiply(row.billWeight, row.price).toFixed(2);      }    },    //码单重量    billWeightChange(row) {      if (row.billWeight &&  row.price) {        row.amount = _.multiply(row.billWeight, row.price).toFixed(2);      }    },    //带出人民币    currencyChange(type){      if(type === "true"){        if(this.form.currency === "CNY"){  //如果为人民币          this.$set(this.form,"exchangeRate",1)        }else if(this.form.currency === "USD"){          this.$set(this.form,"exchangeRate",6.3686)        }else{          this.$set(this.form,"exchangeRate",7.1749)        }      }      if(this.form.orderAmount && this.form.orderAmount){        this.$set(this.form,"rmbAmount",_.multiply(this.form.orderAmount, this.form.exchangeRate).toFixed(2))      }    },    //合计    totalChange(){      let invoiceList =  this.contactsData.map(item => {        if(item.invoiceWeight){          return parseFloat(item.invoiceWeight);        }else return 0      });      let billList =  this.contactsData.map(item => {        if(item.billWeight){          return parseFloat(item.billWeight);        }else return 0      });      this.$set(this.form,"invoiceWeight",invoiceList.reduce((n,m) => n + m)) //数组内和      this.$set(this.form,"billWeight",billList.reduce((n,m) => n + m))    },    //件数    // quantityChange(row) {    //   if (!row.orderQuantity) {    //     row.orderQuantity = "";    //     row.amount = 0    //   } else {    //     row.amount =_.multiply(row.orderQuantity,row.price).toFixed(2);    //   }    // },    //费用明细回调    beforeFinance(feesData,callback){      this.orderFeesList = feesData;      let params = {}      params.valid = true      params.parentId = this.form.id      params.srcOrderno = this.form.orderNo      callback(params)      //传过来的数据  会根据应收应付的顺序放到 orderFeesList   这个时候与旧值对比  会对比失败  后端查费用明细时  按照应收应付顺序 进行排序      // if(contrastObj(this.form,this.oldForm) || contrastList(this.contactsData,this.oldContactsData)      //   || contrastList(this.orderFeesList,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)      // ){      //   this.$confirm("数据发生变化,请先提交保存?", {      //     confirmButtonText: "保存",      //     cancelButtonText: "取消",      //     type: "warning"      //   }).then(() => {      //     this.editCustomer();      //   }).finally(()=>{      //     params.valid = false      //     callback(params)      //   })      // }else{      //   params.valid = true      //   params.parentId = this.form.id      //   params.srcOrderno = this.form.orderNo      //   callback(params)      // }    },    //修改提交触发    editCustomer(status) {      this.$refs["form"].validate((valid) => {        if (valid) {          let orderFeesList = this.$refs.feeInfo.submitData();          for (let i = 0; i < orderFeesList.length; i++) {            if (orderFeesList[i].corpId === (null || "")) {              return this.$message.error(`请输入费用明细第${i + 1}行的结算中心`);            }            if (orderFeesList[i].itemId === (null || "")) {              return this.$message.error(`请输入费用明细第${i + 1}行的费用名称`);            }          }          const orderFilesList = this.$refs.uploadFile.submitData();          for (let j = 0; j < this.contactsData.length; j++) {            if (this.contactsData[j].billNo === (null || "")) {              return this.$message.error(`请输入采购明细第${j + 1}行的提单号`);            }            if (this.contactsData[j].priceCategory === (null || "")) {              return this.$message.error(`请输入采购明细第${j + 1}行的货物品种`);            }            if (this.contactsData[j].itemType === (null || "")) {              return this.$message.error(`请输入采购明细第${j + 1}行的规格型号`);            }            if (this.contactsData[j].orderQuantity === (null || "")) {              return this.$message.error(`请输入采购明细第${j + 1}行的件数`);            }            if (this.contactsData[j].invoiceWeight === (null || "")) {              return this.$message.error(`请输入采购明细第${j + 1}行的发票重量`);            }            if (this.contactsData[j].price === (null || "")) {              return this.$message.error(`请输入采购明细第${j + 1}行的单价`);            }            if (this.contactsData[j].amount === (null || "")) {              return this.$message.error(`请输入采购明细第${j + 1}行的发票金额`);            }          }          if(this.contactsData.length !==0){            let invoiceList =  this.contactsData.map(item => {              if(item.amount){                return parseFloat(item.amount);              }else return 0            });            this.form.invoiceAmount = invoiceList.reduce((n,m) => n + m)          }          this.form.billNo = this.contactsData.map(item =>{return item.billNo}).join(",")          let submitDto = {            ...this.form,            tradeType:"JK",            billType:"CG",            itemsVOList: this.contactsData,            orderFeesList:  orderFeesList,            orderFilesList: orderFilesList          };          this.buttonLoading = true;          submitData(submitDto).then(res => {            if(res.data.success){              this.form.id = res.data.data              this.$message.success("操作成功!")              detailListData(this.form.id).then(res => {                this.form = res.data.data;                this.afterEcho(res.data.data)              })            }          }).finally(()=>{            this.buttonLoading = false          })          if(status === true){            this.$emit("goBack");          }        } else {          return false;        }      });    },    //回调    afterEcho(form){      this.oldForm = Object.assign({},form);      this.configuration.dicData = this.form.corpsName      this.pConfiguration.dicData = this.form.purchaserName      if(form.itemsVOList){        this.contactsData = form.itemsVOList        this.oldContactsData = this.deepClone(form.itemsVOList)        //明细列表内是否有 已经收货的 如果有  则禁用一些输入框        this.takeDisabled = this.contactsData.map(item =>{if(item.actualQuantity != 0) return true}).some(item => {return item == true})        this.basicData.column.forEach(item =>{          if(item.prop == "businesDate" || item.prop == "requiredDeliveryDate"  || item.prop == "requiredArrivalDate" || item.prop == "latestDate"  || item.prop == ""){            item.disabled = this.takeDisabled          }        })      }      if(form.orderFeesList){        this.orderFeesList = form.orderFeesList        this.oldFeesList = this.deepClone(form.orderFeesList)      }      if( form.orderFilesList){        this.orderFilesList = form.orderFilesList        this.oldFilesList = this.deepClone(form.orderFilesList)      }    },    openDisabled(){      this.viewDisabled = false    },    selectionContact(row){      this.selectContact = row;    },    beforePage(type){      let id =   this.selectContact.map(item=>{        return  item.id ? true : false      })      if(id.findIndex(item => item != true) == -1){        const params = {          id:this.form.id,          orderItemIds:this.selectContact.map(i=>{return i.$index})        }        if(contrastObj(this.form,this.oldForm) || contrastList(this.contactsData,this.oldContactsData)          || contrastList(this.orderFeesList,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)        ){          this.$confirm("数据发生变化,请先提交保存?", {            confirmButtonText: "保存",            cancelButtonText: "取消",            type: "warning"          }).then(() => {            this.editCustomer();          })        }else{          if(type){            //进入付款管理            // if(this.$store.getters.payStatus){            //   this.$alert("付款页面已存在,请关闭付款页面再进行操作", "温馨提示", {            //     confirmButtonText: "确定",            //     type: 'warning',            //     callback: action => {            //     }            //   });            // }else{            //   this.$router.$avueRouter.closeTag('/financialManagement/payment');            //   this.$router.push({            //     path: "/financialManagement/payment",            //     query: {params: params},            //   });            // }          }else{            //进入收货单            if(this.$store.getters.takeStatus){              this.$alert("收货单页面已存在,请关闭收货单再进行操作", "温馨提示", {                confirmButtonText: "确定",                type: 'warning',                callback: action => {                }              });            }else{              //关闭一下存在的列表页              this.$router.$avueRouter.closeTag('/importTrade/receipt/index');              this.$router.push({                path: "/importTrade/receipt/index",                query: {params: params},              });            }          }        }      }else{        this.$confirm("列表内存在新录入数据,是否先保存此数据?", {          confirmButtonText: "保存",          cancelButtonText: "取消",          type: "warning"        }).then(() => {          this.editCustomer();        })      }    },    beforeBillData(bool,type){      this.billType = type      //采购明细提单号 list      this.billData = {        srcOrderno:this.form.orderNo,        itemType:"采购",        optionType:'JK',        billNoList: this.contactsData.map(item =>{return item.billNo}),        price:this.form.salesPrice,        corpsName:this.form.corpsName,        corpId:this.form.corpId,        // accDate:this.billType:   this.form.businesDate,        currency:this.form.currency,        exchangeRate:this.form.exchangeRate,        srcParentId:this.form.id,        srcType:1      }      if(bool){ //申请货款        this.billData.srcId = -1      }    },    // 付款    applyPayment(type){      if(contrastObj(this.form,this.oldForm) || contrastList(this.contactsData,this.oldContactsData)        || contrastList(this.orderFeesList,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)      ){        this.$confirm("数据发生变化,请先提交保存?", {          confirmButtonText: "保存",          cancelButtonText: "取消",          type: "warning"        }).then(() => {          this.editCustomer();        })      }else{        this.beforeBillData(true,type);        this.applyPaymentDialog = true;      }    },    //新增商品明细保存触发    rowSave(row, done, loading) {      // this.contactsData.push(row)      done()    },    //修改商品信息触发    rowUpdate(row, index, done, loading) {      done(row);    },    //删除商品信息触发    rowDel(row, index, donerowDel) {      this.$confirm("确定将选择数据删除?", {        confirmButtonText: "确定",        cancelButtonText: "取消",        type: "warning"      }).then(() => {        //商品判断是否需要调用删除接口        if (row.id) {          corpsattn(row.id).then(res => {            this.$message({              type: "success",              message: "操作成功!"            });            this.contactsData.splice(index, 1);          })        } else {          this.$message({            type: "success",            message: "操作成功!"          });          this.contactsData.splice(index, 1);        }      }).finally(()=>{        this.totalChange()      })    },    //关闭账单    choceFun(){      this.applyPaymentDialog  = false    },    //打开申请记录    openApplicationDialog(){      this.applicationDialog = true    },    //关闭申记录    choceApplication(){      this.applicationDialog = false    },    //商品编辑    rowCell(row, index) {      this.$refs.crudContact.rowCell(row, index)    },    //录入明细    commoditySelection() {      const params = {        price:this.form.salesPrice      }      this.$refs.crudContact.rowCellAdd(params);    },    //点击行可编辑    handleRowClick(row, event, column) {    },    backToList() {      if(contrastObj(this.form,this.oldForm) || contrastList(this.contactsData,this.oldContactsData)        || contrastList(this.orderFeesList,this.oldFeesList) || contrastList(this.orderFilesList,this.oldFilesList)      ){        this.$confirm("数据发生变化,是否提交保存?", "提示", {          confirmButtonText: "保存",          cancelButtonText: "取消",          type: "warning",        }).then(() => {          this.editCustomer(true)        }).catch(()=>{          this.$emit("goBack");        })      }else{        this.$emit("goBack");      }    },    //列保存触发    async saveColumn() {      const inSave = await this.saveColumnData(        this.getColumnName(37),        this.customerContact      );      if (inSave) {        this.$message.success("保存成功");        //关闭窗口        this.$refs.crudContact.$refs.dialogColumn.columnBox = false;      }    },   },}</script><style scoped lang="scss">.upper_right_button{  display: flex;  position: fixed;  right: 12px;  top: 47px;  align-items: flex-start;}.required_fields{  color: #F56C6C;  display:inline-block;  width: 7%}::v-deep .el-form-item {  margin-bottom: 0;}//el-icon-plus avue-upload__icon.avue-upload /deep/ .avue-upload__icon {  line-height: 178px !important;}::v-deep .el-form-item__content{  line-height: 32px;}</style>
 |