| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089 | <template>  <div class="borderless" v-loading="pageLoading">    <div class="customer-head">      <div class="customer-back">        <!--        <i class="back-icon el-icon-arrow-left"></i><i style="font-style:normal">返回管理列表</i>-->        <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" v-if="showBut">        <el-button          type="primary"          size="small"          v-if="detailData.status == 1"          class="el-button--small-yh "          @click.stop="openEdit"          >编辑        </el-button>        <el-button          type="info"          @click.stop="editCustomer('save')"          v-if="form.deliveryStatus == '录入'"          size="small"          >确认收货</el-button        >        <el-button          type="info"          @click.stop="editCustomer('repeal')"          v-if="form.deliveryStatus == '已收货'"          size="small"          >撤销收货</el-button        >        <el-button          type="success"          :disabled="!form.id"          size="small"          @click="copyDoc"        >          复制单据        </el-button>        <el-button          type="primary"          :disabled="disabled"          @click="editCustomer('submit')"          :loading="subLoading"          v-if="detailData.status != 1"          size="small"          >保存数据        </el-button>      </div>    </div>    <div class="customer-main">      <containerTitle title="基础信息"></containerTitle>      <basic-container>        <avue-form          ref="form"          class="trading-form"          v-model="form"          :option="option"        >          <template slot="corpId">            <crop-select              v-model="form.corpId"              corpType="KH"              :disabled="detailData.status == 1"            ></crop-select>          </template>          <template slot="storageId">            <warehouse-select              v-model="form.storageId"              :configuration="configuration2"              :disabled="detailData.status == 1"            ></warehouse-select>          </template>        </avue-form>      </basic-container>      <containerTitle title="商品信息"></containerTitle>      <basic-container>        <avue-crud          ref="crud"          :data="data"          :option="tableOption"          @row-del="rowDel"          @saveColumn="saveColumn"          @resetColumn="resetColumn"          :summary-method="summaryMethod"          :cell-style="cellStyle"        >          <template slot="menuLeft">            <el-button              type="primary"              icon="el-icon-plus"              size="small"              @click.stop="newDetails"              :disabled="detailData.status == 1"              >录入明细</el-button            >            <el-button              type="info"              icon="el-icon-printer"              size="small"              @click.stop="openReport()"              >报 表</el-button            >          </template>          <template slot="taxRate" slot-scope="{ row }">            <el-input              v-if="row.$cellEdit"              size="mini"              v-model="row.taxRate"              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"              @change="taxRateChange(row)"              placeholder="请输入"            />            <span v-else>{{ row.taxRate }}</span>          </template>          <template slot="specificationAndModel" slot-scope="{ row }">            <el-select              v-if="row.$cellEdit"              v-model="row.specificationAndModel"              filterable              allow-create              default-first-option              placeholder="请输入"              @focus="itemTypeFocus(row)"            >              <el-option                v-for="(item, index) in itemtypeList"                :key="index"                :label="item.value"                :value="item.value"              >              </el-option>            </el-select>            <span v-else>{{ row.itemType }}</span>          </template>          <template slot="menu" slot-scope="{ row, index }">            <el-button              size="small"              icon="el-icon-edit"              type="text"              @click="rowCell(row, index)"              :disabled="disabled"              >{{ row.$cellEdit ? "保存" : "修改" }}</el-button            >            <el-button              size="small"              icon="el-icon-edit"              type="text"              @click="rowDel(row)"              >删 除</el-button            >          </template>          <template slot="price" slot-scope="{ row }">            <el-input              v-if="row.$cellEdit"              v-model="row.price"              size="small"              oninput="value=value.replace(/[^0-9.]/g,'').replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"              @change="priceChange(row)"            ></el-input>            <span v-else>{{ row.price }}</span>          </template>          <template slot="actualQuantity" slot-scope="{ row }">            <el-input              v-if="row.$cellEdit"              v-model="row.actualQuantity"              size="small"              oninput='this.value=this.value.replace(/[^(\d)]/g,"")'              @change="quantityChange(row)"            ></el-input>            <span v-else>{{ row.actualQuantity | IntegerFormat }}</span>          </template>        </avue-crud>      </basic-container>      <fee-info        ref="feeInfo"        :orderFeesList="orderFeesList"        :disabled="detailData.status == 1"        feeUrl="/blade-deliver-goods/deliveryfees/update"      />      <containerTitle title="合同附件"></containerTitle>      <c-upload        typeUpload="CK"        :data="orderFilesList"        :disabled="detailData.status == 1"        :enumerationValue="76"        deleteUrl="/blade-deliver-goods/deliveryfiles/update"      />    </div>    <el-dialog      title="导入商品"      append-to-body      class="el-dialogDeep"      :visible.sync="dialogVisible"      width="80%"      :close-on-click-modal="false"      :destroy-on-close="true"      :close-on-press-escape="false"      @close="closeGoods"      top="5vh"      v-dialog-drag    >      <span>        <el-row>          <el-col :span="4">            <div>              <el-scrollbar>                <basic-container>                  <avue-tree                    :option="treeOption"                    @node-click="nodeClick"                    :style="treeStyle"                  />                </basic-container>              </el-scrollbar>            </div>          </el-col>          <el-col :span="20">            <avue-crud              :option="goodsOption"              :table-loading="loading"              :data="goodsList"              ref="goodsCrud"              :search.sync="search"              @search-change="searchChange"              @refresh-change="refreshChange"              @selection-change="selectionChange"              @row-click="rowClick"              :page.sync="page"              @on-load="onLoad"              @saveColumn="saveGoodsColumn"              @resetColumn="resetGoodsColumn"              :cell-style="cellStyle"            ></avue-crud>          </el-col>        </el-row>      </span>      <span slot="footer" class="dialog-footer">        <el-button @click="dialogVisible = false">取 消</el-button>        <el-button          type="primary"          @click="importGoods"          :disabled="selectionList.length == 0"          >导入</el-button        >      </span>    </el-dialog>    <report-dialog      :switchDialog="switchDialog"      :reportId="form.id"      reportName="客户询价"      @onClose="onClose()"    ></report-dialog>  </div></template><script>import tableOption from "./config/customerContact.json";import goodsOption from "./config/commodity.json";import feeInfo from "@/components/fee-info/main";import {  detail,  submit,  delItem,  getDeptLazyTree,  getGoods,  getSpecification,  save,  repeal} from "@/api/exportTrade/receipt";import uploadFile from "@/components/upload-file/main";import reportDialog from "@/components/report-dialog/main";import { contrastObj, contrastList } from "@/util/contrastData";import {  isvalidatemobile,  validatename,  micrometerFormat,  IntegerFormat} from "@/util/validate";import _ from "lodash";export default {  name: "detailsPageEdit",  data() {    const validatePhone = (rule, value, callback) => {      if (value != "") {        if (isvalidatemobile(value)[0]) {          this.$message.error("手机号码格式不正确");          callback(new Error(isvalidatemobile(value)[1]));        } else {          callback();        }      } else {        callback();      }    };    const validateName = (rule, value, callback) => {      if (value != "") {        if (validatename(value)) {          this.$message.error("联系人格式不正确");          callback(new Error(validatename(value)));        } else {          callback();        }      } else {        callback();      }    };    return {      treeStyle: "height:" + (window.innerHeight - 315) + "px",      configuration2: {        multipleChoices: false,        multiple: false,        collapseTags: false,        placeholder: "请点击右边按钮选择",        dicData: []      },      switchDialog: false,      form: {        deliveryStatus: "录入"      },      disabled: false,      dialogVisible: false,      tableOption: tableOption,      option: {        menuBtn: false,        labelWidth: 100,        disabled: false,        column: [          {            label: "客户名称",            prop: "corpId",            rules: [              {                required: true,                message: "",                trigger: "blur"              }            ],            span: 16,            slot: true          },          {            label: "系统号",            prop: "sysNo",            span: 8          },          {            label: "采购订单号",            prop: "srcOrderNo",            span: 8          },          {            label: "订单状态",            prop: "deliveryStatus",            span: 8,            type: "select",            dicUrl: "/api/blade-system/dict-biz/dictionary?code=order_status",            props: {              label: "dictValue",              value: "dictValue"            },            disabled: true          },          {            label: "仓库名称",            prop: "storageId",            span: 8          },          {            label: "仓库类型",            prop: "warehouseType",            span: 8          },          {            label: "收货日期",            prop: "businessDate",            span: 8,            type: "date",            format: "yyyy-MM-dd",            valueFormat: "yyyy-MM-dd 00:00:00",            rules: [              {                required: true,                message: "",                trigger: "blur"              }            ],            row: true          },          {            label: "入库金额",            prop: "deliveryAmount",            span: 8          },          {            label: "入库数量",            prop: "totalQuantity",            span: 8          },          {            label: "费用合计",            prop: "totalCost",            span: 8          },          {            label: "发货人",            prop: "arrivalContact",            span: 8          },          {            label: "发货电话",            prop: "arrivalTel",            span: 8          },          {            label: "发货地址",            prop: "arrivalAddress",            span: 8          },          {            label: "制单时间",            prop: "createTime",            span: 8,            type: "date",            format: "yyyy-MM-dd",            valueFormat: "yyyy-MM-dd 00:00:00",            disabled: true          },          {            label: "备注",            prop: "deliveryRemarks",            type: "textarea",            minRows: 2,            span: 24          }        ]      },      treeOption: {        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: {          label: "title",          value: "value",          children: "children"        }      },      page: {        pageSize: 10,        currentPage: 1,        total: 0      },      loading: false,      goodsOption: {},      data: [],      goodsList: [],      selectionList: [],      treeDeptId: null,      orderFeesList: [],      orderFilesList: [],      itemtypeList: [],      reData: null,      oldform: {        deliveryStatus: "录入"      },      olddata: [],      oldorderFeesList: [],      oldorderFilesList: [],      subLoading: false,      pageLoading: false,      showBut: true,      search: {}    };  },  props: {    detailData: {      type: Object    }  },  components: {    reportDialog,    feeInfo,    uploadFile  },  async created() {    if (this.detailData.id) {      this.getDetail(this.detailData.id);    }    this.tableOption = await this.getColumnData(      this.getColumnName(7),      tableOption    );    this.goodsOption = await this.getColumnData(      this.getColumnName(29),      goodsOption    );    if (this.$route.query.pageType == "Generate") {      this.getGenerate(JSON.parse(this.$route.query.data));    }    if (this.detailData.status == 1) {      this.option.disabled = true;    }    this.getWorkDicts("product_properties").then(res => {      this.findObject(this.tableOption.column, "itemProp").dicData =        res.data.data;    });    this.getWorkDicts("unit").then(res => {      this.findObject(this.tableOption.column, "unit").dicData = res.data.data;    });  },  filters: {    IntegerFormat(num) {      return IntegerFormat(num);    }  },  methods: {    cellStyle() {      return "padding:0;height:40px;";    },    copyDoc() {      this.$emit("copyOrder", this.form.id);    },    rePick(row, index) {      this.reData = {        ...row,        index: index      };      this.newDetails();    },    getGenerate(data) {      this.form = data;      this.data = data.orderItemsList;      this.orderFeesList = data.deliveryFeesList ? data.deliveryFeesList : [];    },    itemTypeFocus(row) {      this.itemtypeList = [];      getSpecification({ goodId: row.itemId }).then(res => {        const data = res.data.data;        this.itemtypeList = data.map(item => ({ value: item }));      });    },    //编辑    rowCell(row, index) {      if (row.$cellEdit == true) {        this.$set(row, "$cellEdit", false);      } else {        this.$set(row, "$cellEdit", true);      }    },    priceChange(row) {      console.log(row);      if (!row.price) {        row.price = 0;      } else {        row.contractAmount = _.multiply(row.price, row.actualQuantity).toFixed(          2        );      }    },    quantityChange(row) {      if (!row.actualQuantity) {        row.actualQuantity = 0;      } else {        row.contractAmount = _.multiply(row.price, row.actualQuantity).toFixed(          2        );      }    },    taxRateChange(row) {      if (Number(row.taxRate) >= 100) {        row.taxRate = 0;        this.$message.error("税率不能超过100%");      }    },    rowSave(row) {      console.log(row);      this.$set(row, "$cellEdit", false);    },    rowDel(row) {      this.$confirm("确定删除数据?", {        confirmButtonText: "确定",        cancelButtonText: "取消",        type: "warning"      }).then(() => {        if (row.id) {          delItem(row.id).then(res => {            this.$message({              type: "success",              message: "删除成功!"            });            this.data.splice(row.$index, 1);          });        } else {          this.$message({            type: "success",            message: "删除成功!"          });          this.data.splice(row.$index, 1);        }      });    },    importGoods() {      if (this.reData) {        console.log(this.reData);        if (this.selectionList.length != 1) {          return this.$message.error("重新选择的时候只能选择一条数据");        } else {          this.selectionList.forEach(e => {            this.data.forEach((item, index) => {              if (index == this.reData.index) {                item.itemId = e.id;                item.code = e.code;                item.cname = e.cname;                item.priceCategory = e.goodsTypeName;                item.itemUrl = e.url;                item.itemProp = this.reData.itemProp;                item.itemDescription = e.cnameDescription;                item.itemType = this.reData.itemType;                item.tradeTerms = this.reData.tradeTerms;                item.price = this.reData.price;                item.orderQuantity = this.reData.orderQuantity;                item.insurance = this.reData.insurance;                item.freight = this.reData.freight;                item.discount = this.reData.discount;                item.amount = this.reData.amount;                item.taxRate = this.reData.taxRate;                item.unit = e.unit;                item.remarks = this.reData.remarks;                item.$cellEdit = true;              }            });          });        }      } else {        this.selectionList.forEach(e => {          this.data.push({            itemId: e.id,            code: e.code,            cname: e.cname,            priceCategory: e.goodsTypeName,            itemUrl: e.url,            itemProp: null,            itemDescription: e.cnameDescription,            itemType: null,            tradeTerms: null,            price: 0,            orderQuantity: 0,            insurance: 0,            freight: 0,            discount: null,            amount: 0,            taxRate: 0,            unit: e.unit,            remarks: null,            $cellEdit: true          });        });      }    },    closeGoods() {      this.selectionList = [];      this.treeDeptId = "";      this.reData = null;    },    selectionChange(list) {      this.selectionList = list;    },    rowClick(row) {      this.$refs.goodsCrud.toggleSelection([this.goodsList[row.$index]]);    },    nodeClick(data) {      this.treeDeptId = data.id;      this.page.currentPage = 1;      this.onLoad(this.page);    },    searchChange(params, done) {      this.search = this.deepClone(params);      this.onLoad(this.page, params);      done();    },    //费用查询    onLoad(page, params = {}) {      let obj = this.deepClone(Object.assign(params, this.search));      this.loading = true;      getGoods(page.currentPage, page.pageSize, this.treeDeptId, obj).then(        res => {          const data = res.data.data;          this.page.total = data.total;          this.goodsList = data.records;          this.loading = false;          if (this.page.total) {            this.goodsOption.height = window.innerHeight - 350;          }        }      );    },    //商品明细导入    newDetails() {      this.dialogVisible = !this.dialogVisible;    },    getDetail(id) {      this.showBut = false;      this.pageLoading = true;      detail(id)        .then(res => {          if (this.detailData.status == "copy") {            delete res.data.data.id;            delete res.data.data.sysNo;            delete res.data.data.orderNo;            delete res.data.data.orgOrderNo;            delete res.data.data.srcOrderNo;            delete res.data.data.createTime;            delete res.data.data.createUser;            delete res.data.data.createUserName;            delete res.data.data.updateTime;            delete res.data.data.updateUser;            delete res.data.data.updateUserName;            delete res.data.data.morderNo;            delete res.data.data.status;            delete res.data.data.ifEnquiry;            delete res.data.data.ifShipping;            res.data.data.orderStatus = "录入";            res.data.data.deliveryItemsList.forEach(e => {              delete e.id;              delete e.pid;              delete e.createTime;              delete e.createUser;              delete e.updateTime;              delete e.updateUser;              delete e.orgOrderNo;              delete e.srcId;              delete e.status;              delete e.isDeleted;            });            res.data.data.deliveryFeesList.forEach(e => {              delete e.id;              delete e.pid;              delete e.createTime;              delete e.createUser;              delete e.updateTime;              delete e.updateUser;              delete e.status;              delete e.isDeleted;            });            res.data.data.deliveryFilesList.forEach(e => {              delete e.id;              delete e.pid;              delete e.createTime;              delete e.createUser;              delete e.updateTime;              delete e.updateUser;              delete e.status;              delete e.isDeleted;            });          }          this.form = res.data.data;          this.data = res.data.data.deliveryItemsList;          this.orderFeesList = res.data.data.deliveryFeesList;          this.orderFilesList = res.data.data.deliveryFilesList;          this.oldform = res.data.data;          this.olddata = this.deepClone(res.data.data.deliveryItemsList);          this.oldorderFeesList = this.deepClone(            res.data.data.deliveryFeesList          );          this.oldorderFilesList = this.deepClone(            res.data.data.deliveryFilesList          );        })        .finally(() => {          this.showBut = true;          this.pageLoading = false;        });    },    //修改提交触发    editCustomer(status, status2) {      this.$refs["form"].validate((valid, done) => {        done();        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].price == 0) {              return this.$message.error(`请正确输入第${i + 1}行的价格`);            }            if (orderFeesList[i].actualQuantity == 0) {              return this.$message.error(`请正确输入第${i + 1}行的数量`);            }          }          if (status == "submit") {            this.subLoading = true;            submit({              ...this.form,              deliveryItemsList: this.data,              deliveryFeesList: orderFeesList,              deliveryFilesList: this.orderFilesList            })              .then(res => {                this.form = res.data.data;                this.data = res.data.data.deliveryItemsList;                this.orderFeesList = res.data.data.deliveryFeesList;                this.orderFilesList = res.data.data.deliveryFilesList;                this.oldform = res.data.data;                this.olddata = this.deepClone(res.data.data.deliveryItemsList);                this.oldorderFeesList = this.deepClone(                  res.data.data.deliveryFeesList                );                this.oldorderFilesList = this.deepClone(                  res.data.data.deliveryFilesList                );                this.$message.success("保存成功");                if (status2 == "goBack") {                  if (this.form.id) {                    this.unLock({                      moduleName: "sh",                      tableName: "business_order",                      billId: this.form.id,                      billNo: this.form.orgOrderNo                    });                  }                  this.$emit("goBack");                  this.leaveDetailsKey(this.$route.name);                }              })              .finally(() => {                this.subLoading = false;              });          }          if (status == "save") {            this.$confirm("此操作将确认收货, 是否继续?", "提示", {              confirmButtonText: "确定",              cancelButtonText: "取消",              type: "warning"            }).then(() => {              save({                ...this.form,                deliveryItemsList: this.data,                deliveryFeesList: orderFeesList,                deliveryFilesList: this.orderFilesList              }).then(res => {                this.form = res.data.data;                this.data = res.data.data.deliveryItemsList;                this.orderFeesList = res.data.data.deliveryFeesList;                this.orderFilesList = res.data.data.deliveryFilesList;                this.$message.success("提交成功");                this.oldform = res.data.data;                this.olddata = this.deepClone(res.data.data.deliveryItemsList);                this.oldorderFeesList = this.deepClone(                  res.data.data.deliveryFeesList                );                this.oldorderFilesList = this.deepClone(                  res.data.data.deliveryFilesList                );              });            });          }          if (status == "repeal") {            this.$confirm("此操作将撤销收货, 是否继续?", "提示", {              confirmButtonText: "确定",              cancelButtonText: "取消",              type: "warning"            }).then(() => {              repeal({                ...this.form,                deliveryItemsList: this.data,                deliveryFeesList: orderFeesList,                deliveryFilesList: this.orderFilesList              }).then(res => {                this.form = res.data.data;                this.data = res.data.data.deliveryItemsList;                this.orderFeesList = res.data.data.deliveryFeesList;                this.orderFilesList = res.data.data.deliveryFilesList;                this.$message.success("撤销成功");                this.oldform = res.data.data;                this.olddata = this.deepClone(res.data.data.deliveryItemsList);                this.oldorderFeesList = this.deepClone(                  res.data.data.deliveryFeesList                );                this.oldorderFilesList = this.deepClone(                  res.data.data.deliveryFilesList                );              });            });          }        } else {          return false;        }      });    },    //返回列表    backToList() {      let orderFeesList = this.$refs.feeInfo.submitData();      if (        contrastObj(this.form, this.oldform) ||        contrastList(this.data, this.olddata) ||        contrastList(orderFeesList, this.oldorderFeesList) ||        contrastList(this.orderFilesList, this.oldorderFilesList)      ) {        this.$confirm("数据发生变化未有提交记录, 是否提交?", "提示", {          confirmButtonText: "确定",          cancelButtonText: "取消",          type: "warning"        })          .then(() => {            this.editCustomer("submit", "goBack");          })          .catch(() => {            if (this.form.id) {              this.unLock({                moduleName: "sh",                tableName: "business_order",                billId: this.form.id,                billNo: this.form.orgOrderNo              });            }            this.$emit("goBack");            this.leaveDetailsKey(this.$route.name);          });      } else {        if (this.form.id) {          this.unLock({            moduleName: "sh",            tableName: "business_order",            billId: this.form.id,            billNo: this.form.orgOrderNo          });        }        this.$emit("goBack");        this.leaveDetailsKey(this.$route.name);      }    },    openReport() {      this.switchDialog = !this.switchDialog;    },    onClose(val) {      this.switchDialog = val;    },    summaryMethod({ columns, data }) {      const sums = [];      if (columns.length > 0) {        columns.forEach((item, index) => {          sums[0] = "合计";          if (            item.property == "actualQuantity" ||            item.property == "contractAmount"          ) {            let qtySum = 0;            let amountSum = 0;            data.forEach(e => {              qtySum = _.add(qtySum, Number(e.actualQuantity));              amountSum = _.add(amountSum, Number(e.contractAmount));            });            //数量总计            if (item.property == "actualQuantity") {              sums[index] = qtySum ? qtySum.toFixed(2) : "0.00";            }            //金额总计            if (item.property == "contractAmount") {              sums[index] = micrometerFormat(amountSum);            }          }        });      }      return sums;    },    openEdit() {      const data = {        moduleName: "sh",        tableName: "business_order",        billId: this.form.id,        no: localStorage.getItem("browserID"),        billNo: this.form.orgOrderNo      };      this.inDetailsKey(this.$route.name, {        moduleName: "sh",        tableName: "business_order",        billId: this.form.id,        billNo: this.form.orgOrderNo      });      this.checkLock(data).then(res => {        if (res.data.code == 200) {             this.onLock(data).then(res => {           if (res.data.code == 200) {              this.detailData.status = 2;              this.option = this.$options.data().option;            }          });        }      });    },    async saveColumn() {      const inSave = await this.saveColumnData(        this.getColumnName(7),        this.tableOption      );      if (inSave) {        this.$nextTick(() => {          this.$refs.crud.doLayout()        })        this.$message.success("保存成功");        //关闭窗口        this.$refs.crud.$refs.dialogColumn.columnBox = false;      }    },    async resetColumn() {      this.tableOption = tableOption;      const inSave = await this.delColumnData(        this.getColumnName(7),        tableOption      );      if (inSave) {        this.$nextTick(() => {          this.$refs.crud.doLayout()        })        this.$message.success("重置成功");        //关闭窗口        setTimeout(() => {          this.$refs.crud.$refs.dialogColumn.columnBox = false;        }, 1000);      }    },    async saveGoodsColumn() {      const inSave = await this.saveColumnData(        this.getColumnName(29),        this.goodsOption      );      if (inSave) {        this.$nextTick(() => {          this.$refs.goodsCrud.doLayout()        })        this.$message.success("保存成功");        //关闭窗口        this.$refs.goodsCrud.$refs.dialogColumn.columnBox = false;      }    },    async resetGoodsColumn() {      this.goodsOption = goodsOption;      const inSave = await this.delColumnData(        this.getColumnName(29),        goodsOption      );      if (inSave) {        this.$nextTick(() => {          this.$refs.goodsCrud.doLayout()        })        this.$message.success("重置成功");        //关闭窗口        setTimeout(() => {          this.$refs.goodsCrud.$refs.dialogColumn.columnBox = false;        }, 1000);      }    }  }};</script><style lang="scss" scoped>.trading-form ::v-deep .el-form-item {  margin-bottom: 8px !important;}::v-deep .el-form-item__error {  display: none !important;}::v-deep .select-component {  display: flex !important;}</style>
 |