|  | @@ -0,0 +1,693 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div>
 | 
	
		
			
				|  |  | +    <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>
 | 
	
		
			
				|  |  | +        <div class="add-customer-btn">
 | 
	
		
			
				|  |  | +          <el-button type="primary" size="small" v-if="detailData.status == 1 && form.confirmStatus == 0"
 | 
	
		
			
				|  |  | +            class="el-button--small-yh " @click.stop="openEdit">编辑
 | 
	
		
			
				|  |  | +          </el-button>
 | 
	
		
			
				|  |  | +          <el-button type="primary" size="small" v-if="!form.id && detailData.status != 1" @click="editCustomer">
 | 
	
		
			
				|  |  | +            保存数据
 | 
	
		
			
				|  |  | +          </el-button>
 | 
	
		
			
				|  |  | +          <el-button type="primary" size="small" v-if="form.id && detailData.status != 1 && form.confirmStatus == 0"
 | 
	
		
			
				|  |  | +            @click="fixSave">
 | 
	
		
			
				|  |  | +            修改数据
 | 
	
		
			
				|  |  | +          </el-button>
 | 
	
		
			
				|  |  | +          <el-button type="primary" size="small" v-if="form.id && detailData.status != 1 && form.confirmStatus == 0"
 | 
	
		
			
				|  |  | +            @click="submit">
 | 
	
		
			
				|  |  | +            提交
 | 
	
		
			
				|  |  | +          </el-button>
 | 
	
		
			
				|  |  | +          <el-button type="primary" size="small" v-if="form.confirmStatus == 1" @click="revoke">
 | 
	
		
			
				|  |  | +            撤销
 | 
	
		
			
				|  |  | +          </el-button>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +      <!-- <containerTitle title="基础资料" style="margin-top: 60px"></containerTitle> -->
 | 
	
		
			
				|  |  | +      <trade-card title="基础资料" style="margin-top: 60px" v-loading="loadingBtn">
 | 
	
		
			
				|  |  | +        <avue-form ref="form" class="trading-form" v-model="form" :option="option">
 | 
	
		
			
				|  |  | +          <template slot="corpId">
 | 
	
		
			
				|  |  | +            <crop-select v-model="form.corpId" corpType="GYS" :disabled="detailData.status == 1"
 | 
	
		
			
				|  |  | +              @getCorpData="getCorpData"></crop-select>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </avue-form>
 | 
	
		
			
				|  |  | +      </trade-card>
 | 
	
		
			
				|  |  | +      <trade-card title="商品信息" v-loading="loadingBtn">
 | 
	
		
			
				|  |  | +        <avue-form ref="form" class="trading-form" v-model="form" :option="option2">
 | 
	
		
			
				|  |  | +          <template slot="thisUsedProfit">
 | 
	
		
			
				|  |  | +            <el-input-number v-model="form.thisUsedProfit" :disabled="detailData.status == 1" @change="amountChange"
 | 
	
		
			
				|  |  | +              placeholder="请输入" size="small" :controls="false" style="width:100%;"></el-input-number>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </avue-form>
 | 
	
		
			
				|  |  | +        <avue-crud ref="crud" :option="optionList" :data="data" :table-loading="loading" @saveColumn="saveColumn"
 | 
	
		
			
				|  |  | +          @resetColumn="resetColumn" :cell-style="cellStyle">
 | 
	
		
			
				|  |  | +          <template slot="headerSerial">
 | 
	
		
			
				|  |  | +            <el-button type="primary" icon="el-icon-plus" size="mini" @click.stop="addRow"
 | 
	
		
			
				|  |  | +              :disabled="detailData.status == 1" circle></el-button>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="cname" slot-scope="{ row, index }">
 | 
	
		
			
				|  |  | +            <el-select v-if="row.$cellEdit" v-model="row.cname" placeholder="请选择" size="small" filterable
 | 
	
		
			
				|  |  | +              @change="cnameChange(row, index)">
 | 
	
		
			
				|  |  | +              <el-option v-for="item in goodsoptions" :key="item.itemId" :label="item.cname" :value="item.cname">
 | 
	
		
			
				|  |  | +              </el-option>
 | 
	
		
			
				|  |  | +            </el-select>
 | 
	
		
			
				|  |  | +            <span v-else>{{ row.cname }}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="unitHeader" slot-scope="{column}">
 | 
	
		
			
				|  |  | +                <span style="color: #409EFF;cursor: pointer" @click.stop="$refs.dictbiz.open()">单位
 | 
	
		
			
				|  |  | +                </span>
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +          <template slot="storageInQuantity" slot-scope="{ row, index }">
 | 
	
		
			
				|  |  | +            <el-input-number v-if="row.$cellEdit" v-model="row.storageInQuantity" @change="countChange(row)"
 | 
	
		
			
				|  |  | +              placeholder="请输入" size="small" :controls="false" style="width:100%;"></el-input-number>
 | 
	
		
			
				|  |  | +            <span v-else>{{ row.storageInQuantity }}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="price" slot-scope="{ row, index }">
 | 
	
		
			
				|  |  | +            <el-input-number v-if="row.$cellEdit" v-model="row.price" @change="countChange(row)" placeholder="请输入"
 | 
	
		
			
				|  |  | +              size="small" :controls="false" style="width:100%;"></el-input-number>
 | 
	
		
			
				|  |  | +            <span v-else>{{ row.price }}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="purchaseAmount" slot-scope="{ row, index }">
 | 
	
		
			
				|  |  | +            <el-input-number v-if="row.$cellEdit" v-model="row.purchaseAmount" @change="countChange(row)"
 | 
	
		
			
				|  |  | +              placeholder="请输入" size="small" :controls="false" style="width:100%;"></el-input-number>
 | 
	
		
			
				|  |  | +            <span v-else>{{ row.purchaseAmount }}</span>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +          <template slot="menu" slot-scope="{ row, index }">
 | 
	
		
			
				|  |  | +            <el-button size="small" type="text" :disabled="detailData.status == 1" @click="rowCell(row, index)">{{
 | 
	
		
			
				|  |  | +                row.$cellEdit ? "保存" : "修改"
 | 
	
		
			
				|  |  | +            }}</el-button>
 | 
	
		
			
				|  |  | +            <el-button size="small" type="text" :disabled="detailData.status == 1" @click="rowDel(row, index)">删除
 | 
	
		
			
				|  |  | +            </el-button>
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </avue-crud>
 | 
	
		
			
				|  |  | +      </trade-card>
 | 
	
		
			
				|  |  | +      <fee-info ref="feeInfo" :data="settlementList" :form="form" :detailData="detailData" @getPay="getPay"
 | 
	
		
			
				|  |  | +        v-loading="loadingBtn">
 | 
	
		
			
				|  |  | +      </fee-info>
 | 
	
		
			
				|  |  | +      <containerTitle title="上传附件"></containerTitle>
 | 
	
		
			
				|  |  | +      <c-upload v-loading="loadingBtn" typeUpload="CD"
 | 
	
		
			
				|  |  | +        deleteUrl="/api/trade-purchase/woodHarvestingCloud/removeByFileId" :data="orderFilesList" display
 | 
	
		
			
				|  |  | +        :enumerationValue="35.1" :disabled="detailData.status == 1"></c-upload>
 | 
	
		
			
				|  |  | +      <el-dialog :title="addressTitle" v-dialogDrag :visible.sync="addressVisible" class="avue-dialog avue-dialog--top"
 | 
	
		
			
				|  |  | +        width="50%" append-to-body>
 | 
	
		
			
				|  |  | +        <span>
 | 
	
		
			
				|  |  | +          <el-tabs v-model="activeName">
 | 
	
		
			
				|  |  | +            <el-tab-pane label="供应商地址" name="first">
 | 
	
		
			
				|  |  | +              <avue-form class="trading-form" v-model="form2" :option="optiontabs1"></avue-form>
 | 
	
		
			
				|  |  | +            </el-tab-pane>
 | 
	
		
			
				|  |  | +            <el-tab-pane label="物流地址" name="second">
 | 
	
		
			
				|  |  | +              <avue-form class="trading-form" v-model="form3" :option="optiontabs2"></avue-form>
 | 
	
		
			
				|  |  | +            </el-tab-pane>
 | 
	
		
			
				|  |  | +          </el-tabs>
 | 
	
		
			
				|  |  | +        </span>
 | 
	
		
			
				|  |  | +        <div class="avue-dialog__footer">
 | 
	
		
			
				|  |  | +          <el-button @click="addressVisible = false">取 消</el-button>
 | 
	
		
			
				|  |  | +          <el-button @click="addressVisible = false" type="primary">确 定</el-button>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </el-dialog>
 | 
	
		
			
				|  |  | +      <dictbiz-dialog ref="dictbiz" title="添加单位" code="unit" parentId="1585962784498225154" @closed="getAllWorkDicts"></dictbiz-dialog>
 | 
	
		
			
				|  |  | +    </div>
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import { optionList } from "./js/optionList";
 | 
	
		
			
				|  |  | +import { getDetails, submit, getCorpDetails, remove, getAllgoods, save, fixSave, revoke, collectPayment } from "@/api/basicData/salesOrder";
 | 
	
		
			
				|  |  | +import feeInfo from "./components/feeInfo.vue";
 | 
	
		
			
				|  |  | +import { multiply, sum, subtract } from "@/util/calculate";
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  name: "index",
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      activeName: 'first',
 | 
	
		
			
				|  |  | +      loadingBtn: false,
 | 
	
		
			
				|  |  | +      addressTitle: null,
 | 
	
		
			
				|  |  | +      addressVisible: false,
 | 
	
		
			
				|  |  | +      form: {},
 | 
	
		
			
				|  |  | +      form2: {
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      form3: {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      data: [],
 | 
	
		
			
				|  |  | +      option: {
 | 
	
		
			
				|  |  | +        menuBtn: false,
 | 
	
		
			
				|  |  | +        labelWidth: 90,
 | 
	
		
			
				|  |  | +        disabled: false,
 | 
	
		
			
				|  |  | +        column: [
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "供应商名称",
 | 
	
		
			
				|  |  | +            prop: "corpId",
 | 
	
		
			
				|  |  | +            rules: [
 | 
	
		
			
				|  |  | +              {
 | 
	
		
			
				|  |  | +                required: true,
 | 
	
		
			
				|  |  | +                message: "",
 | 
	
		
			
				|  |  | +                trigger: "blur"
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            ],
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "送货地址",
 | 
	
		
			
				|  |  | +            prop: "arrivalAddress",
 | 
	
		
			
				|  |  | +            type: 'select',
 | 
	
		
			
				|  |  | +            dicData: [],
 | 
	
		
			
				|  |  | +            props: {
 | 
	
		
			
				|  |  | +              label: 'detailedAddress',
 | 
	
		
			
				|  |  | +              value: 'detailedAddress'
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            allowCreate: true,
 | 
	
		
			
				|  |  | +            filterable: true,
 | 
	
		
			
				|  |  | +            span: 16,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "采购日期",
 | 
	
		
			
				|  |  | +            prop: "businesDate",
 | 
	
		
			
				|  |  | +            type: "date",
 | 
	
		
			
				|  |  | +            format: "yyyy-MM-dd",
 | 
	
		
			
				|  |  | +            valueFormat: "yyyy-MM-dd 00:00:00",
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "计划付款日期",
 | 
	
		
			
				|  |  | +            prop: "advanceCollectionDate",
 | 
	
		
			
				|  |  | +            type: "date",
 | 
	
		
			
				|  |  | +            format: "yyyy-MM-dd",
 | 
	
		
			
				|  |  | +            valueFormat: "yyyy-MM-dd 00:00:00",
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "收货日期",
 | 
	
		
			
				|  |  | +            prop: "requiredDeliveryDate",
 | 
	
		
			
				|  |  | +            type: "date",
 | 
	
		
			
				|  |  | +            format: "yyyy-MM-dd",
 | 
	
		
			
				|  |  | +            valueFormat: "yyyy-MM-dd 00:00:00",
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "备注",
 | 
	
		
			
				|  |  | +            prop: "orderRemark",
 | 
	
		
			
				|  |  | +            placeholder: "打印时显示",
 | 
	
		
			
				|  |  | +            type: "textarea",
 | 
	
		
			
				|  |  | +            minRows: 3,
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      option2: {
 | 
	
		
			
				|  |  | +        menuBtn: false,
 | 
	
		
			
				|  |  | +        labelWidth: 80,
 | 
	
		
			
				|  |  | +        disabled: false,
 | 
	
		
			
				|  |  | +        column: [
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "税率",
 | 
	
		
			
				|  |  | +            prop: "exchangeRate",
 | 
	
		
			
				|  |  | +            type: "select",
 | 
	
		
			
				|  |  | +            props: {
 | 
	
		
			
				|  |  | +              label: "dictValue",
 | 
	
		
			
				|  |  | +              value: "dictKey"
 | 
	
		
			
				|  |  | +            },
 | 
	
		
			
				|  |  | +            dicUrl: "/api/blade-system/dict-biz/dictionary?code=tax_rate",
 | 
	
		
			
				|  |  | +            span: 4,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "采购总数量",
 | 
	
		
			
				|  |  | +            prop: "storageQuantity",
 | 
	
		
			
				|  |  | +            disabled: true,
 | 
	
		
			
				|  |  | +            span: 4,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "成本",
 | 
	
		
			
				|  |  | +            prop: "costAmount",
 | 
	
		
			
				|  |  | +            disabled: true,
 | 
	
		
			
				|  |  | +            span: 4,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "毛利",
 | 
	
		
			
				|  |  | +            prop: "grossProfit",
 | 
	
		
			
				|  |  | +            disabled: true,
 | 
	
		
			
				|  |  | +            span: 4,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "订单金额",
 | 
	
		
			
				|  |  | +            prop: "purchaseAmount",
 | 
	
		
			
				|  |  | +            disabled: true,
 | 
	
		
			
				|  |  | +            span: 4,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "优惠金额",
 | 
	
		
			
				|  |  | +            prop: "thisUsedProfit",
 | 
	
		
			
				|  |  | +            span: 4,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "合同金额",
 | 
	
		
			
				|  |  | +            prop: "orderAmount",
 | 
	
		
			
				|  |  | +            disabled: true,
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "应付金额",
 | 
	
		
			
				|  |  | +            prop: "balanceAmount",
 | 
	
		
			
				|  |  | +            disabled: true,
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "已付金额",
 | 
	
		
			
				|  |  | +            prop: "settlmentAmount",
 | 
	
		
			
				|  |  | +            disabled: true,
 | 
	
		
			
				|  |  | +            span: 8,
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      optiontabs1: {
 | 
	
		
			
				|  |  | +        menuBtn: false,
 | 
	
		
			
				|  |  | +        labelWidth: 90,
 | 
	
		
			
				|  |  | +        column: [
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "简称",
 | 
	
		
			
				|  |  | +            prop: "a",
 | 
	
		
			
				|  |  | +            type: "select",
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "地址",
 | 
	
		
			
				|  |  | +            prop: "b",
 | 
	
		
			
				|  |  | +            type: "select",
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "详细地址",
 | 
	
		
			
				|  |  | +            prop: "c",
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "邮编",
 | 
	
		
			
				|  |  | +            prop: "d",
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "备注",
 | 
	
		
			
				|  |  | +            prop: "e",
 | 
	
		
			
				|  |  | +            type: 'textarea',
 | 
	
		
			
				|  |  | +            minRows: 3,
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "地址智能识别",
 | 
	
		
			
				|  |  | +            prop: "ad",
 | 
	
		
			
				|  |  | +            placeholder: "例:上海市徐汇区枫林街道斜土路100号",
 | 
	
		
			
				|  |  | +            type: "textarea",
 | 
	
		
			
				|  |  | +            minRows: 3,
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      optiontabs2: {
 | 
	
		
			
				|  |  | +        menuBtn: false,
 | 
	
		
			
				|  |  | +        labelWidth: 80,
 | 
	
		
			
				|  |  | +        column: [
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "目的地",
 | 
	
		
			
				|  |  | +            prop: "a",
 | 
	
		
			
				|  |  | +            type: "select",
 | 
	
		
			
				|  |  | +            rules: [
 | 
	
		
			
				|  |  | +              {
 | 
	
		
			
				|  |  | +                required: true,
 | 
	
		
			
				|  |  | +                message: "",
 | 
	
		
			
				|  |  | +                trigger: "blur"
 | 
	
		
			
				|  |  | +              }
 | 
	
		
			
				|  |  | +            ],
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "物流公司",
 | 
	
		
			
				|  |  | +            prop: "b",
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "电话",
 | 
	
		
			
				|  |  | +            prop: "c",
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "地址",
 | 
	
		
			
				|  |  | +            prop: "d",
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "详细地址",
 | 
	
		
			
				|  |  | +            prop: "e",
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "邮编",
 | 
	
		
			
				|  |  | +            prop: "f",
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "备注",
 | 
	
		
			
				|  |  | +            prop: "remarks",
 | 
	
		
			
				|  |  | +            type: "textarea",
 | 
	
		
			
				|  |  | +            minRows: 3,
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          },
 | 
	
		
			
				|  |  | +          {
 | 
	
		
			
				|  |  | +            label: "地址智能识别",
 | 
	
		
			
				|  |  | +            prop: "g",
 | 
	
		
			
				|  |  | +            type: "textarea",
 | 
	
		
			
				|  |  | +            minRows: 3,
 | 
	
		
			
				|  |  | +            span: 24,
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      optionList: {},
 | 
	
		
			
				|  |  | +      goodsoptions: [],
 | 
	
		
			
				|  |  | +      settlementList: [],
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  props: {
 | 
	
		
			
				|  |  | +    detailData: {
 | 
	
		
			
				|  |  | +      type: Object
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  components: {
 | 
	
		
			
				|  |  | +    feeInfo,
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  async created() {
 | 
	
		
			
				|  |  | +    this.optionList = await this.getColumnData(
 | 
	
		
			
				|  |  | +      this.getColumnName(214),
 | 
	
		
			
				|  |  | +      optionList
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +    if (this.detailData.id) {
 | 
	
		
			
				|  |  | +      this.getDetail(this.detailData.id);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    if (this.detailData.status == 1) {
 | 
	
		
			
				|  |  | +      this.option.disabled = true;
 | 
	
		
			
				|  |  | +      this.option2.disabled = true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    this.getAllWorkDicts()
 | 
	
		
			
				|  |  | +    getAllgoods().then(res => {
 | 
	
		
			
				|  |  | +      this.goodsoptions = res.data.data
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    getAllWorkDicts() {
 | 
	
		
			
				|  |  | +      this.getWorkDicts("unit").then(res => {
 | 
	
		
			
				|  |  | +        this.findObject(this.optionList.column, "unit").dicData = res.data.data;
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +      this.$refs.crud.init();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    cellStyle() {
 | 
	
		
			
				|  |  | +      return "padding:0;height:40px;";
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    cnameChange(row) {
 | 
	
		
			
				|  |  | +      console.log(row)
 | 
	
		
			
				|  |  | +      if (row.cname) {
 | 
	
		
			
				|  |  | +        this.goodsoptions.forEach(e => {
 | 
	
		
			
				|  |  | +          if (e.cname == row.cname) {
 | 
	
		
			
				|  |  | +            row.itemId = e.id
 | 
	
		
			
				|  |  | +            row.unit = e.unit
 | 
	
		
			
				|  |  | +            row.price = e.standardPrice
 | 
	
		
			
				|  |  | +            row.storageInQuantity = 1
 | 
	
		
			
				|  |  | +            row.amount = e.standardPrice
 | 
	
		
			
				|  |  | +            row.purchaseAmount = e.purchasePrice
 | 
	
		
			
				|  |  | +            row.storageAmount = e.purchasePrice
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        row.unit = null
 | 
	
		
			
				|  |  | +        row.price = null
 | 
	
		
			
				|  |  | +        row.purchaseAmount = null
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      this.countChange(row)
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    amountChange() {
 | 
	
		
			
				|  |  | +      let val = 0
 | 
	
		
			
				|  |  | +      this.data.forEach(e => {
 | 
	
		
			
				|  |  | +        val = sum(val, e.amount)
 | 
	
		
			
				|  |  | +        this.form.purchaseAmount = val
 | 
	
		
			
				|  |  | +        this.form.orderAmount = subtract(this.form.purchaseAmount, this.form.thisUsedProfit)
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    countChange(row) {
 | 
	
		
			
				|  |  | +      row.amount = multiply(row.price, row.storageInQuantity)
 | 
	
		
			
				|  |  | +      row.storageAmount = multiply(row.purchaseAmount, row.storageInQuantity)
 | 
	
		
			
				|  |  | +      let val = 0
 | 
	
		
			
				|  |  | +      this.data.forEach(e => {
 | 
	
		
			
				|  |  | +        val = sum(val, e.amount)
 | 
	
		
			
				|  |  | +        this.form.purchaseAmount = val
 | 
	
		
			
				|  |  | +        this.form.orderAmount = subtract(this.form.purchaseAmount, this.form.thisUsedProfit)
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getDetail(id) {
 | 
	
		
			
				|  |  | +      this.loadingBtn = true
 | 
	
		
			
				|  |  | +      getDetails({ id: id })
 | 
	
		
			
				|  |  | +        .then(res => {
 | 
	
		
			
				|  |  | +          this.form = res.data.data;
 | 
	
		
			
				|  |  | +          this.data = res.data.data.orderItemsList;
 | 
	
		
			
				|  |  | +          this.settlementList = res.data.data.settlementList
 | 
	
		
			
				|  |  | +          this.getAddress(res.data.data)
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        .finally(() => {
 | 
	
		
			
				|  |  | +          this.loadingBtn = false;
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getCorpData(row) {
 | 
	
		
			
				|  |  | +      if (row) {
 | 
	
		
			
				|  |  | +        this.form.corpsName = row.cname
 | 
	
		
			
				|  |  | +        getCorpDetails({ id: row.id }).then(res => {
 | 
	
		
			
				|  |  | +          this.findObject(this.option.column, "arrivalAddress").dicData = res.data.data.corpsAddrList;
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        this.form.corpsName = null
 | 
	
		
			
				|  |  | +        this.findObject(this.option.column, "arrivalAddress").dicData = []
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getAddress(row) {
 | 
	
		
			
				|  |  | +      getCorpDetails({ id: row.corpId }).then(res => {
 | 
	
		
			
				|  |  | +        this.findObject(this.option.column, "arrivalAddress").dicData = res.data.data.corpsAddrList;
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    addRow() {
 | 
	
		
			
				|  |  | +      this.data.push({ $cellEdit: true })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    rowCell(row, index) {
 | 
	
		
			
				|  |  | +      if (row.$cellEdit == true) {
 | 
	
		
			
				|  |  | +        this.$set(row, "$cellEdit", false);
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        this.$set(row, "$cellEdit", true);
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    rowDel(row, index) {
 | 
	
		
			
				|  |  | +      this.$confirm("确定删除数据?", {
 | 
	
		
			
				|  |  | +        confirmButtonText: "确定",
 | 
	
		
			
				|  |  | +        cancelButtonText: "取消",
 | 
	
		
			
				|  |  | +        type: "warning"
 | 
	
		
			
				|  |  | +      }).then(() => {
 | 
	
		
			
				|  |  | +        if (row.id) {
 | 
	
		
			
				|  |  | +          remove(row.id).then(res => {
 | 
	
		
			
				|  |  | +            this.$message({
 | 
	
		
			
				|  |  | +              type: "success",
 | 
	
		
			
				|  |  | +              message: "删除成功!"
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +            this.data.splice(index, 1);
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          this.$message({
 | 
	
		
			
				|  |  | +            type: "success",
 | 
	
		
			
				|  |  | +            message: "删除成功!"
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +          this.data.splice(index, 1);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getPay(row) {
 | 
	
		
			
				|  |  | +      this.getDetail(row.id);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //修改提交触发
 | 
	
		
			
				|  |  | +    editCustomer() {
 | 
	
		
			
				|  |  | +      this.$refs["form"].validate((valid, done) => {
 | 
	
		
			
				|  |  | +        done();
 | 
	
		
			
				|  |  | +        if (valid) {
 | 
	
		
			
				|  |  | +          this.loadingBtn = true;
 | 
	
		
			
				|  |  | +          save({ ...this.form, billType: 'CG', tradeType: 'YPJ', orderItemsList: this.data, settlementList: this.settlementList })
 | 
	
		
			
				|  |  | +            .then(res => {
 | 
	
		
			
				|  |  | +              this.$message.success("保存成功");
 | 
	
		
			
				|  |  | +              this.form = res.data.data;
 | 
	
		
			
				|  |  | +              this.data = res.data.data.orderItemsList;
 | 
	
		
			
				|  |  | +              this.settlementList = res.data.data.settlementList
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +            .finally(() => {
 | 
	
		
			
				|  |  | +              this.loadingBtn = false;
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    fixSave() {
 | 
	
		
			
				|  |  | +      this.$refs["form"].validate((valid, done) => {
 | 
	
		
			
				|  |  | +        done();
 | 
	
		
			
				|  |  | +        if (valid) {
 | 
	
		
			
				|  |  | +          this.loadingBtn = true;
 | 
	
		
			
				|  |  | +          fixSave({ ...this.form, billType: 'CG', tradeType: 'YPJ', orderItemsList: this.data, settlementList: this.settlementList })
 | 
	
		
			
				|  |  | +            .then(res => {
 | 
	
		
			
				|  |  | +              this.$message.success("修改成功");
 | 
	
		
			
				|  |  | +              this.form = res.data.data;
 | 
	
		
			
				|  |  | +              this.data = res.data.data.orderItemsList;
 | 
	
		
			
				|  |  | +              this.settlementList = res.data.data.settlementList
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +            .finally(() => {
 | 
	
		
			
				|  |  | +              this.loadingBtn = false;
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    submit() {
 | 
	
		
			
				|  |  | +      this.$refs["form"].validate((valid, done) => {
 | 
	
		
			
				|  |  | +        done();
 | 
	
		
			
				|  |  | +        if (valid) {
 | 
	
		
			
				|  |  | +          this.loadingBtn = true;
 | 
	
		
			
				|  |  | +          submit({ ...this.form, billType: 'CG', tradeType: 'YPJ', orderItemsList: this.data, settlementList: this.settlementList })
 | 
	
		
			
				|  |  | +            .then(res => {
 | 
	
		
			
				|  |  | +              this.$message.success("提交成功");
 | 
	
		
			
				|  |  | +              this.form = res.data.data;
 | 
	
		
			
				|  |  | +              this.data = res.data.data.orderItemsList;
 | 
	
		
			
				|  |  | +              this.settlementList = res.data.data.settlementList
 | 
	
		
			
				|  |  | +              this.$emit("goBack");
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +            .finally(() => {
 | 
	
		
			
				|  |  | +              this.loadingBtn = false;
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +          return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    revoke() {
 | 
	
		
			
				|  |  | +      this.$confirm('此操作将会撤销单子, 是否继续?', '提示', {
 | 
	
		
			
				|  |  | +        confirmButtonText: '确定',
 | 
	
		
			
				|  |  | +        cancelButtonText: '取消',
 | 
	
		
			
				|  |  | +        type: 'warning'
 | 
	
		
			
				|  |  | +      }).then(() => {
 | 
	
		
			
				|  |  | +        this.loadingBtn = true;
 | 
	
		
			
				|  |  | +        revoke({ ...this.form, billType: 'CG', tradeType: 'YPJ', orderItemsList: this.data, settlementList: this.settlementList })
 | 
	
		
			
				|  |  | +          .then(res => {
 | 
	
		
			
				|  |  | +            this.$message.success("撤销成功");
 | 
	
		
			
				|  |  | +            this.form = res.data.data;
 | 
	
		
			
				|  |  | +            this.data = res.data.data.orderItemsList;
 | 
	
		
			
				|  |  | +            this.settlementList = res.data.data.settlementList
 | 
	
		
			
				|  |  | +            this.openEdit()
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +          .finally(() => {
 | 
	
		
			
				|  |  | +            this.loadingBtn = false;
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +      }).catch(() => {
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    async saveColumn() {
 | 
	
		
			
				|  |  | +      const inSave = await this.saveColumnData(
 | 
	
		
			
				|  |  | +        this.getColumnName(214),
 | 
	
		
			
				|  |  | +        this.optionList
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      if (inSave) {
 | 
	
		
			
				|  |  | +        this.$nextTick(() => {
 | 
	
		
			
				|  |  | +          this.$refs.crud.doLayout();
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        this.$message.success("保存成功");
 | 
	
		
			
				|  |  | +        //关闭窗口
 | 
	
		
			
				|  |  | +        this.$refs.crud.$refs.dialogColumn.columnBox = false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    async resetColumn() {
 | 
	
		
			
				|  |  | +      this.optionList = optionList;
 | 
	
		
			
				|  |  | +      const inSave = await this.delColumnData(
 | 
	
		
			
				|  |  | +        this.getColumnName(214),
 | 
	
		
			
				|  |  | +        optionList
 | 
	
		
			
				|  |  | +      );
 | 
	
		
			
				|  |  | +      if (inSave) {
 | 
	
		
			
				|  |  | +        this.$nextTick(() => {
 | 
	
		
			
				|  |  | +          this.$refs.crud.doLayout();
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        this.getAllWorkDicts()
 | 
	
		
			
				|  |  | +        this.$message.success("重置成功");
 | 
	
		
			
				|  |  | +        this.$refs.crud.$refs.dialogColumn.columnBox = false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    openEdit() {
 | 
	
		
			
				|  |  | +      this.detailData.status = 2
 | 
	
		
			
				|  |  | +      this.option = this.$options.data().option;
 | 
	
		
			
				|  |  | +      this.option2 = this.$options.data().option2;
 | 
	
		
			
				|  |  | +      this.$refs.crud.refreshTable();
 | 
	
		
			
				|  |  | +      this.$refs.feeInfo.refreshTable();
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    //返回列表
 | 
	
		
			
				|  |  | +    backToList() {
 | 
	
		
			
				|  |  | +      this.$emit("goBack");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  watch: {
 | 
	
		
			
				|  |  | +    // data: function (rows) {
 | 
	
		
			
				|  |  | +    //   let val = 0
 | 
	
		
			
				|  |  | +    //   rows.forEach(e => {
 | 
	
		
			
				|  |  | +    //     val = sum(val, e.amount)
 | 
	
		
			
				|  |  | +    //     this.form.purchaseAmount = val
 | 
	
		
			
				|  |  | +    //     this.form.orderAmount = subtract(this.form.purchaseAmount, this.form.thisUsedProfit)
 | 
	
		
			
				|  |  | +    //   })
 | 
	
		
			
				|  |  | +    // }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<style lang="scss" scoped>
 | 
	
		
			
				|  |  | +.trading-form ::v-deep .el-form-item {
 | 
	
		
			
				|  |  | +  margin-bottom: 8px !important;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +::v-deep .el-dialog__body {
 | 
	
		
			
				|  |  | +  padding: 0px 20px 15px 20px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +::v-deep .el-form-item__error {
 | 
	
		
			
				|  |  | +  display: none !important;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.img-form ::v-deep .el-form-item {
 | 
	
		
			
				|  |  | +  height: 150px;
 | 
	
		
			
				|  |  | +  line-height: 150px;
 | 
	
		
			
				|  |  | +  margin-bottom: 8px !important;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.img-form ::v-deep .avue-upload__icon {
 | 
	
		
			
				|  |  | +  font-size: 20px;
 | 
	
		
			
				|  |  | +  width: 150px;
 | 
	
		
			
				|  |  | +  height: 150px;
 | 
	
		
			
				|  |  | +  line-height: 150px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +::v-deep .el-table .cell {
 | 
	
		
			
				|  |  | +  padding: 0 2px !important;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +::v-deep .avue-crud .el-table .el-form-item__label {
 | 
	
		
			
				|  |  | +  left: -1px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +.addressTabs {
 | 
	
		
			
				|  |  | +  display: flex;
 | 
	
		
			
				|  |  | +  justify-content: center;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  span {
 | 
	
		
			
				|  |  | +    width: 100px;
 | 
	
		
			
				|  |  | +    font-size: 18px;
 | 
	
		
			
				|  |  | +    font-weight: 600;
 | 
	
		
			
				|  |  | +    text-align: center;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</style>
 |