| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144 | <template>  <div class="borderless" v-loading="pageLoading">    <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"          :loading="btnLoading"        >返回列表</el-button>      </div>      <div class="add-customer-btn">        <el-button          type="primary"          size="small"          class="el-button--small-yh"          @click.stop="openEdit"          v-if="disabled"        >编 辑</el-button>        <el-button          v-if="checker && form.status != 3"          type="primary"          size="small"          class="el-button--small-yh"          @click.stop="openCheckDialog">          审批        </el-button>        <el-button          v-if="form.status > 0"          @click.native="checkScheduleDialog = true,checkId=form.id"          type="primary"          size="small"        >审核进度</el-button>        <el-button          v-if="confirmDisabled"          :disabled="disabled"          size="small"          type="primary"          @click="repealAllot"          :loading="btnLoading"        >撤销调拨</el-button>        <el-button          v-if="!confirmDisabled"          :disabled="!form.id || disabled"          size="small"          type="primary"          @click="confirmAllot"          :loading="btnLoading"        >确认调拨</el-button>        <el-button          type="success"          :disabled="!form.id"          size="small"          @click="copyDoc"          :loading="btnLoading"          v-if="false"        >复制单据</el-button>        <el-button          type="primary"          @click="editCustomer"          size="small"          :loading="btnLoading"        >保存数据</el-button>      </div>    </div>    <div class="customer-main">      <containerTitle title="基础信息"/>      <basic-container :showBtn="true">        <avue-form          ref="form"          class="trading-form"          v-model="form"          :option="option"        >          <template slot="freightUser">            <el-select              v-model="form.freightUser"              filterable              clearable              size="small"              placeholder="请选择"              :disabled="disabled || confirmDisabled"            >              <el-option                v-for="(item,index) in userList"                :key="index"                :label="item.realName"                :value="item.realName"              ></el-option>            </el-select>          </template>          <template slot="createUser">            <el-select              v-model="form.createUser"              filterable              clearable              size="small"              placeholder="请选择"              disabled            >              <el-option                v-for="(item,index) in userList"                :key="index"                :label="item.realName"                :value="item.id"              ></el-option>            </el-select>          </template>          <template slot="createDept">            <avue-input-tree              leaf-only              style="width: 100%;"              size="small"              :props="{ label: 'title' }"              v-model="form.createDept"              placeholder=" "              type="tree"              :dic="dic"              :nodeClick="deptClick"              disabled=""            ></avue-input-tree>          </template>          <template slot="storageId">            <warehouse-select              v-model="form.storageId"              :configuration="configurationWarehouse"              :disabled="disabled || confirmDisabled"            />          </template>          <template slot="allotStorageId">            <warehouse-select              v-model="form.allotStorageId"              :configuration="configurationWarehouse"              :disabled="disabled || confirmDisabled"            />          </template>        </avue-form>      </basic-container>      <containerTitle title="商品信息"/>      <basic-container>        <avue-crud          ref="crud"          :data="dataList"          :option="tableOption"          :cell-style="cellStyle"          @saveColumn="saveColumn"          @resetColumn="resetColumn"        >          <template slot="menuLeft">            <el-button              type="primary"              icon="el-icon-plus"              size="small"              @click.stop="newDetails"              :disabled="disabled || confirmDisabled"            >录入明细</el-button>            <el-button              type="info"              icon="el-icon-printer"              size="small"              @click="openReport"            >报表打印</el-button>          </template>          <template slot="menu" slot-scope="{ row, index }">            <el-button              size="small"              icon="el-icon-edit"              type="text"              @click="rowCell(row, index)"              :disabled="disabled || confirmDisabled"            >{{ row.$cellEdit ? "保存" : "修改" }}</el-button>            <el-button              size="small"              icon="el-icon-delete"              type="text"              @click="rowDel(row, index)"              :disabled="disabled || confirmDisabled"            >删除</el-button>          </template>          <template slot="code" slot-scope="{ row, index }">            <span v-if="row.$cellEdit" style="display:flex">              <el-select                v-model="row.code"                placeholder="请选择"                filterable                size="small"                style="width:60%"                @change="codeChange(row, index)"              >                <el-option                  v-for="item in goodsoptions"                  :key="item.id"                  :label="item.code"                  :value="item.code"                >                </el-option>              </el-select>              <el-button                icon="el-icon-search"                size="small"                @click="rePick(row, index)"              ></el-button>            </span>            <span v-else> {{ row.code }}</span>          </template>          <template slot="cname" slot-scope="{ row, index }">            <span v-if="row.$cellEdit" style="display:flex">              <el-select                v-model="row.itemId"                placeholder="请选择"                size="small"                filterable                style="width:60%"                @change="cnameChange(row, index)"              >                <el-option                  v-for="item in goodsoptions"                  :key="item.id"                  :label="item.cname"                  :value="item.id"                >                </el-option>              </el-select>              <el-button                icon="el-icon-search"                size="small"                @click="rePick(row, index)"              ></el-button>            </span>            <span v-else> {{ row.cname }}</span>          </template>          <template slot="actualQuantity" slot-scope="{ row, index }">            <el-input-number              v-if="row.$cellEdit"              v-model="row.actualQuantity"              size="small"              :controls="false"              :precision="0"              style="width: 100%"              @change="actualQuantityChange(row)"            />            <span v-else>{{ row.actualQuantity | IntegerFormat }}</span>          </template>          <template slot="deliveryAmount" slot-scope="{ row, index }">            <el-input-number              v-if="row.$cellEdit"              v-model="row.deliveryAmount"              size="small"              :controls="false"              :precision="2"              style="width: 100%"            />            <span v-else>{{ row.deliveryAmount | decimalFormat }}</span>          </template>        </avue-crud>      </basic-container>    </div>    <el-dialog      append-to-body      title="审批"      class="el-dialogDeep"      :visible.sync="checkDialog"      width="50%"      :close-on-click-modal="false"      :destroy-on-close="true"      :close-on-press-escape="false"      v-dialog-drag    >      <check        :checkData="checkData"        :checkDetail="false"        :idList="[]"        @choceCheckFun="choceCheckFun"      >      </check>    </el-dialog>    <el-dialog      append-to-body      title="审批进度"      class="el-dialogDeep"      :visible.sync="checkScheduleDialog"      width="40%"      :close-on-click-modal="false"      :destroy-on-close="true"      :close-on-press-escape="false"      v-dialog-drag    >      <check-schedule        :checkId="checkId"        :batchNo="batchNo"        @choceScheduleFun="choceScheduleFun"      >      </check-schedule>    </el-dialog>    <!--    报表-->    <report-dialog      :switchDialog="switchDialog"      :reportId="form.id"      reportName=""      @onClose="onClose()"    />    <!--    商品弹窗-->    <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="goodsListShow"              ref="goodsCrud"              :search.sync="search"              @search-change="searchChange"              @selection-change="selectionChange"              @row-click="rowClick"              :page.sync="page"              @on-load="onLoad"              @saveColumn="saveGoodsColumn"              @resetColumn="resetGoodsColumn"              :cell-style="cellStyle"            >              <template slot="menuLeft">                <el-tabs v-model="activeName" @tab-click="tabHandle">                  <el-tab-pane label="查询结果" name="searchList"></el-tab-pane>                  <el-tab-pane label="已选定数据" name="importStaging"></el-tab-pane>                </el-tabs>              </template>              <template slot-scope="scope" slot="menu">                <el-button                  type="text"                  icon="el-icon-edit"                  size="small"                  @click.stop="importStagList(scope.row,scope.index)"                  v-if="activeName=='searchList'"                  :disabled="goodsListSave.findIndex(item => item.id == scope.row.id) !== -1"                >选择                </el-button>                <el-button                  type="text"                  icon="el-icon-delete"                  size="small"                  @click.stop="removeStagList(scope.row,scope.index)"                  v-else                >移除                </el-button>              </template>            </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 && goodsListSave.length == 0"        >导入</el-button        >      </span>    </el-dialog>  </div></template><script>import tableOption from "./config/customerContact.json";import goodsOption from "./config/commodity.json";import {  isDiscount,  isPercentage,  micrometerFormat,  IntegerFormat} from "@/util/validate";import { gainUser } from "@/api/basicData/customerInquiry";import {getUserInfo} from "@/api/system/user";import {getDeptTree} from "@/api/system/dept";import { getCurrentDate } from "@/util/date";import {dataDetail, typeSave, removeGoods, confirmAllot, repealAllot} from "@/api/dealer/allocation";import { contrastObj, contrastList } from "@/util/contrastData";import check from "@/components/check/check";import checkSchedule from "@/components/check/checkSchedule";import reportDialog from "@/components/report-dialog/main";import {getDeptLazyTree,  getGoods,} from "@/api/basicData/customerInquiry";import {selectGoodsNum} from "@/api/basicData/inventoryAccount";export default {  name: "detail",  props: {    detailData: {      type: Object    }  },  components: {    check,    checkSchedule,    reportDialog  },  data() {    return {      disabled: false,      pageLoading: false,      btnLoading: false,      form: {        deliveryStatus: '录入'      },      option: {        menuBtn: false,        labelWidth: 100,        column: [          {            label: "原仓库",            prop: "storageId",            rules: [              {                required: true,                message: " ",                trigger: "change"              }            ],            span: 8,            slot: true,          },          {            label: "现仓库",            prop: "allotStorageId",            rules: [              {                required: true,                message: " ",                trigger: "change"              }            ],            span: 8,            slot: true,          },          {            label: "业务日期",            prop: "businessDate",            span: 8,            type: "date",            format: "yyyy-MM-dd",            valueFormat: "yyyy-MM-dd HH:mm:ss",            rules: [              {                required: true,                message: " ",                trigger: "blur"              }            ],            disabled: false          },          {            label: "仓管员",            prop: "freightUser",            rules: [              {                required: true,                message: " ",                trigger: "blur"              }            ],            span: 8,            slot: true,          },          {            label: "制单人",            prop: "createUser",            span: 8,            slot: true,            disabled: true          },          {            label: "制单部门",            prop: "createDept",            span: 8,            slot: true,            disabled: true          },          {            label: "制单日期",            prop: "createTime",            type: "date",            format: "yyyy-MM-dd HH:mm:ss",            valueFormat: "yyyy-MM-dd HH:mm:ss",            span: 8,            slot: true,            disabled: true          },          {            label: "系统编号",            prop: "sysNo",            span: 8,            slot: true,            disabled: true,          },          {            label: "单据状态",            prop: "deliveryStatus",            span: 8,            slot: true,            disabled: true,          },          {            label: "备注",            prop: "remarks",            type: "textarea",            minRows: 2,            span: 24,          },        ],      },      dataList: [],      tableOption: {},      goodsoptions: [],      unitOption: [],      selectionList: [],      treeDeptId: null,      reData: null,      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"        }      },      search: {},      treeStyle: "height:" + (window.innerHeight - 315) + "px",      goodsOption: {},      loading: false,      switchDialog: false, // 报表弹窗控制      userList: [],      dic: [], // 部门      loginUser: '', // 登录人      // 仓库配置      configurationWarehouse: {        multipleChoices: false,        multiple: false,        collapseTags: false,        placeholder: "请点击右边按钮选择",        dicData: [],      },      oldForm: {},      oldDataList: [],      checker: false,      checkId: '',      batchNo:'',      checkDialog: false,      checkScheduleDialog: false,      checkData: {},      dialogVisible: false,      activeName: 'searchList',      // 商品列表数据合计      goodsListShow: [],      // 商品列表暂存      goodsListSave: [],      page: {        pageSize: 10,        currentPage: 1,        total: 0      },      pageList: {        pageSize: 10,        currentPage: 1,        total: 0      },      confirmDisabled: false, // 调拨状态禁用    }  },  async created() {    this.$set(this.form, 'businessDate', getCurrentDate()); // 默认当前日期    this.$set(this.form, 'createTime', getCurrentDate());    this.tableOption = await this.getColumnData(      this.getColumnName(122),      tableOption    );    this.goodsOption = await this.getColumnData(      this.getColumnName(123),      goodsOption    );    gainUser().then(res => {      this.userList = res.data.data;    });    getDeptTree().then(res => {      this.dic = res.data.data    })    getGoods(1, 10).then(res => {      if (res.data.data.total > 0) {        this.goodsoptions = res.data.data.records;        if (Math.ceil(res.data.data.total / 10) > 1) {          for (let i = 2; i <= Math.ceil(res.data.data.total / 10); i++) {            getGoods(i, 10).then(e => {              this.goodsoptions = this.goodsoptions.concat(e.data.data.records);            });          }        }      }    });    this.getWorkDicts('unit').then(res => {      this.unitOption = res.data.data;    })    if (this.detailData.query) {      this.disabled = true;      this.option.column.map(e => {        this.$set(e, 'disabled', true)      })      this.queryData(this.detailData.id);    } else if (this.detailData.auditId) {      this.checker = true;      this.batchNo = this.detailData.check.batchNo      this.queryData(this.detailData.id);    } else {      getUserInfo().then(res => {        this.$set(this.form, 'createUser', res.data.data.id);        // this.$set(this.form, 'userName', res.data.data.realName);        this.$set(this.form, 'createDept', res.data.data.deptId);        // this.$set(this.form, 'deptName', res.data.data.deptName);        // this.$set(this.form, 'postId', res.data.data.postId.split(',')[0]);        // this.$set(this.form, 'postName', res.data.data.postName.split(',')[0]);        this.loginUser = res.data.data.realName;        this.oldForm = this.deepClone(this.form);        this.oldDataList = this.deepClone(this.dataList);      })    }  },  filters: {    IntegerFormat(num) {      return IntegerFormat(num);    },    decimalFormat(num) {      return num ? Number(num).toFixed(2) : "0.00";    }  },  methods: {    // 查询    queryData(id) {      this.pageLoading = true;      dataDetail(id).then(res => {        this.$set(this,'form',res.data.data)        this.confirmDisabled = this.form.deliveryStatus === '确认调拨'? true: false;        this.dataList = this.form.deliveryItemsList? this.form.deliveryItemsList: [];        this.oldForm = this.deepClone(this.form);        this.oldDataList = this.deepClone(this.dataList);      }).finally(() => {        this.pageLoading = false;      })    },    //返回列表    backToList() {      if (this.verification()) {        this.$emit("goBack");      }    },    // 编辑按钮触发    openEdit() {      this.disabled = false;      this.option.column.map(e => {        if (!this.confirmDisabled) {          if (e.prop != 'sysNo' && e.prop != 'createTime' && e.prop != 'deliveryStatus') {            this.$set(e, 'disabled', false);          }        } else {          this.$set(e, 'disabled', true);        }      })    },    // 复制    copyDoc() {      this.$emit("copyOrder", this.form.id);    },    //修改提交触发    editCustomer(status) {      this.$refs["form"].validate((valid, done) => {        done();        if (valid) {          if (this.form.storageId == this.form.allotStorageId) {            return this.$message.error('原仓库与现仓库不能一致')          }          let totalQuantity = 0; //总数量          let deliveryAmount = 0; //总金额          this.dataList.forEach(item => {            deliveryAmount += Number(item.deliveryAmount);            totalQuantity += Number(item.actualQuantity);          })          this.$set(this.form, 'deliveryAmount', deliveryAmount);          this.$set(this.form, 'totalQuantity', totalQuantity);          this.$set(this.form, 'deliveryItemsList', this.dataList)          this.btnLoading = true;          typeSave(this.form).then(res => {            this.$message({type: "success", message: this.form.id ? "修改成功!" : "新增成功!"});            this.queryData(res.data.data.id);          }).finally(() => {            this.btnLoading = false;          })        } else {          return false        }      })    },    cellStyle() {      return "padding:0;height:40px;";    },    async saveColumn() {      const inSave = await this.saveColumnData(        this.getColumnName(122),        this.tableOption      );      if (inSave) {        this.$message.success("保存成功");        //关闭窗口        this.$refs.crud.$refs.dialogColumn.columnBox = false;        this.$nextTick(() => {          this.$refs.crud.doLayout()        })      }    },    async resetColumn() {      this.tableOption = tableOption;      const inSave = await this.delColumnData(        this.getColumnName(122),        tableOption      );      if (inSave) {        this.$nextTick(() => {          this.$refs.crud.doLayout()        })        this.$message.success("重置成功");        //关闭窗口        setTimeout(() => {          this.$refs.crud.$refs.dialogColumn.columnBox = false;        }, 1000);      }    },    //录入明细    newDetails() {      this.$refs["form"].validate((valid, done) => {        done()        if (valid) {          this.dialogVisible = !this.dialogVisible;        }      })    },    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) {          removeGoods(row.id).then(res => {            this.$message({              type: 'success',              message: '删除成功!'            })            this.dataList.splice(row.$index, 1);          })        } else {          this.$message({            type: "success",            message: "删除成功!"          });          this.dataList.splice(row.$index, 1);        }      });    },    getKHData(row) {},    // 验证新旧值对比    verification() {      if (contrastObj(this.form, this.oldForm) ||        contrastList(this.dataList, this.oldDataList)) {        this.$confirm("数据发生变化未有提交记录, 是否提交?", "提示", {          confirmButtonText: "确定",          cancelButtonText: "取消",          type: "warning"        }).then(() => {          this.editCustomer();        }).catch(() => {          return false;   //取消改动数据        })      } else {        return true;      }    },    deptClick(data) {      this.$set(this.form, 'deptName', data.title)    },    //打开审核    openCheckDialog(){      this.checkData  = this.detailData.check      this.checkDialog = true;    },    //关闭审核    choceCheckFun(){      this.checkDialog = false;    },    choceScheduleFun(){      this.checkScheduleDialog = false    },    // 报表    openReport() {      this.switchDialog =! this.switchDialog;    },    // 报表关闭    onClose(val) {      this.switchDialog = val;    },    rePick(row, index) {      this.reData = {        ...row,        index: index      };      this.newDetails();    },    codeChange(row) {      this.goodsoptions.forEach(async e => {        if (e.code == row.code) {          await selectGoodsNum({            goodsId: e.id,            tradeType: 'JXS',            storageId: this.form.storageId          }).then(res => {            row.inventoryNumber = res.data.data;          })          row.itemId = e.id;          row.storageQuantity =  e.storageQuantity;          row.cname = e.cname;          row.code = e.code;          row.corpId = e.corpId;          row.corpName = e.corpName;          row.brandItem = e.brandItem;          row.specsOne = e.specsOne;          row.specsTwo = e.specsTwo;          row.typeno = e.typeno;          row.unit = e.unit;          row.size = e.size;          row.priceCategory = e.goodsTypeName;        }      });    },    cnameChange(row) {      this.goodsoptions.forEach(async e => {        if (e.id == row.itemId) {          await selectGoodsNum({            goodsId: e.id,            tradeType: 'JXS',            storageId: this.form.storageId          }).then(res => {            row.inventoryNumber = res.data.data;          })          row.storageQuantity =  e.storageQuantity          row.cname = e.cname;          row.code = e.code;          row.corpId = e.corpId;          row.corpName = e.corpName;          row.brandItem = e.brandItem;          row.specsOne = e.specsOne;          row.specsTwo = e.specsTwo;          row.typeno = e.typeno;          row.unit = e.unit;          row.size = e.size;          row.priceCategory = e.goodsTypeName;        }      });    },    importGoods() {      if (this.reData) {        if (this.selectionList.length != 1) {          return this.$message.error("重新选择的时候只能选择一条数据");        } else {          this.selectionList.forEach(e => {            this.dataList.forEach(async (item, index) => {              await selectGoodsNum({                goodsId: e.id,                tradeType: 'JXS',                storageId: this.form.storageId              }).then(res => {                e.inventoryNumber = res.data.data;              })              if (index == this.reData.index) {                item.itemId = e.id;                item.code = e.code;                item.cname = e.cname;                item.corpId = e.corpId;                item.corpName = e.corpName;                item.brandItem = e.brandItem;                item.specsOne = e.specsOne;                item.specsTwo = e.specsTwo;                item.typeno = e.typeno;                item.unit = e.unit;                item.size = e.size;                item.priceCategory = e.goodsTypeName;                item.inventoryNumber = e.inventoryNumber;                item.$cellEdit = true;              }            });          });        }      } else {        if (this.goodsListSave.length > 0) { // 暂存的有数据          this.goodsListSave.forEach(async e => {            await selectGoodsNum({              goodsId: e.id,              tradeType: 'JXS',              storageId: this.form.storageId            }).then(res => {              e.inventoryNumber = res.data.data;            })            this.dataList.push({              itemId: e.id,              code: e.code,              cname: e.cname,              brandItem: e.brandItem,              specsOne: e.specsOne,              specsTwo: e.specsTwo,              typeno: e.typeno,              corpId: e.corpId,              corpName: e.corpName,              unit: e.unit,              size: e.size,              price: e.price,              deliveryAmount: 0,              actualQuantity: 0,              storageQuantity: e.storageQuantity,              inventoryNumber: e.inventoryNumber,              $cellEdit: true            });          });        } else {          this.selectionList.forEach(async e => {            await selectGoodsNum({              goodsId: e.id,              tradeType: 'JXS',              storageId: this.form.storageId            }).then(res => {              e.inventoryNumber = res.data.data;            })            this.dataList.push({              itemId: e.id,              code: e.code,              cname: e.cname,              brandItem: e.brandItem,              specsOne: e.specsOne,              specsTwo: e.specsTwo,              typeno: e.typeno,              corpId: e.corpId,              corpName: e.corpName,              unit: e.unit,              size: e.size,              deliveryAmount: 0,              actualQuantity: 0,              inventoryNumber: e.inventoryNumber,              $cellEdit: true            });          });        }      }      this.dialogVisible = false;    },    closeGoods() {      this.selectionList = [];      this.treeDeptId = "";      this.reData = null;      this.activeName = 'searchList';      this.goodsListSave = [];    },    nodeClick(data) {      this.treeDeptId = data.id;      this.page.currentPage = 1;      this.onLoad(this.page);    },    //商品查询    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.pageList.total = data.total;          this.goodsListShow = data.records;          if (this.page.total) {            this.goodsOption.height = window.innerHeight - 350;          }        })        .finally(() => {          this.loading = false;        });    },    searchChange(params, done) {      this.search = this.deepClone(params);      this.onLoad(this.page, params);      done();    },    selectionChange(list) {      this.selectionList = list;    },    rowClick(row) {      this.$refs.goodsCrud.toggleSelection([this.goodsList[row.$index]]);    },    async saveGoodsColumn() {      const inSave = await this.saveColumnData(        this.getColumnName(123),        this.goodsOption      );      if (inSave) {        this.$message.success("保存成功");        //关闭窗口        this.$refs.goodsCrud.$refs.dialogColumn.columnBox = false;        this.$nextTick(() => {          this.$refs.goodsCrud.doLayout()        })      }    },    async resetGoodsColumn() {      this.goodsOption = goodsOption;      const inSave = await this.delColumnData(        this.getColumnName(123),        goodsOption      );      if (inSave) {        this.$nextTick(() => {          this.$refs.goodsCrud.doLayout()        })        this.$message.success("重置成功");        //关闭窗口        setTimeout(() => {          this.$refs.goodsCrud.$refs.dialogColumn.columnBox = false;        }, 1000);      }    },    // 标签页切换    tabHandle(data) {      if (data.name == 'searchList') {        this.goodsListShow = this.goodsList;        this.page.total = this.pageList.total      } else if (data.name == 'importStaging') {        this.goodsListShow = this.goodsListSave;        this.page.total = 0      }    },    removeStagList(row, index) {      this.goodsListSave.splice(row.$index, 1)    },    importStagList(row, index) {      this.goodsListSave.push(row);    },    actualQuantityChange(row) {      if (Number(row.actualQuantity) > Number(row.inventoryNumber)) {        this.$set(row, 'actualQuantity', '0');        this.$message.error('调拨件数不能超过结余库存')      }    },    // 确认调拨    confirmAllot() {      if (this.verification()) {        this.btnLoading = true;        this.$set(this.form, 'deliveryItemsList', this.dataList);        confirmAllot(this.form).then(res => {          this.queryData(this.form.id);          this.$message.success('调拨成功');          this.option.column.map(e => {            this.$set(e, 'disabled', true);          })        }).finally(() => {          this.btnLoading = false;        })      }    },    // 撤销调拨    repealAllot() {      this.btnLoading = true;      this.$set(this.form, 'deliveryItemsList', this.dataList);      repealAllot(this.form).then(res => {        this.queryData(this.form.id);        this.$message.success('撤销成功');        this.option.column.map(e => {          if (e.prop != 'sysNo' && e.prop != 'createTime' && e.prop != 'deliveryStatus') {            this.$set(e, 'disabled', false);          }        })      }).finally(() => {        this.btnLoading = false;      })    },  },}</script><style scoped></style>
 |