| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822 | <template>  <div>    <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(0)">返回列表        </el-button>      </div>      <div class="add-customer-btn">        <el-button class="el-button--small-yh" type="primary" size="small" v-if="editButton"          @click="confirmEditing">编辑        </el-button>        <el-button class="el-button--small-yh" type="primary" size="small" :disabled="isSave" @click="editCustomer">保存数据        </el-button>        <el-button class="el-button--small-yh" type="warning" size="small" v-if="form.statusName == '已出库'" @click="revoke"          :disabled="isSave">撤销出库        </el-button>        <el-button class="el-button--small-yh" type="success" size="small" style="margin-left: 6px;"          v-if="form.statusName == '待出库' || form.statusName == '撤销出库'" @click="complete" :disabled="isSave">出库完成        </el-button>      </div>    </div>    <div style="margin-top: 50px">      <trade-card title="基础信息">        <avue-form :option="optionForm" v-model="form" ref="form"></avue-form>      </trade-card>      <trade-card title="明细信息">        <el-tabs v-model="activeName" type="card">          <el-tab-pane label="出库明细" name="sale_detail">            <avue-crud :option="optionContacts" v-model="formContacts" ref="formContacts" :data="form.shipItemsList"              :key="key" @row-save="rowSave" @row-update="rowUpdate"              @resetColumn="resetColumnTwo('formContacts', 'optionContacts', 'optionContactsBack', 270.1)"              @saveColumn="saveColumnTwo('formContacts', 'optionContacts', 'optionContactsBack', 270.1)">              <template slot-scope="scope" slot="menuLeft">                <el-button type="primary" icon="el-icon-printer" size="small" @click="handlePrint">打印</el-button>              </template>              <template slot-scope="{type,size,row,index,disabled}" slot="menu">                <!--<el-button :size="size" :disabled="disabled || isAddDisabled" :type="type"-->                <!--  :icon="row.$cellEdit ? 'el-icon-plus' : 'el-icon-edit'" @click="rowEdit(row, index)">编辑-->                <!--</el-button>-->                <el-popover placement="left" width="500" trigger="hover">                  <el-table :row-style="{ height: '20px', padding: '0px', fontSize: '12px' }"                    :cell-style="{ padding: '0px', fontSize: '12px' }" :data="row.recordList"                    :header-cell-style="tableHeaderCellStyle" border stripe height="300px" style="width: 100%">                    <el-table-column property="srcOrd" label="单号">                      <template slot-scope="{row}">                        <span style="color: #409EFF;cursor: pointer" @click.stop="Jump(row)">{{ row.srcOrd }}                        </span>                      </template>                    </el-table-column>                    <el-table-column property="amount" label="金额"></el-table-column>                    <el-table-column property="createUserName" label="制单人"></el-table-column>                    <el-table-column property="createTime" label="制单日期"></el-table-column>                  </el-table>                  <el-button slot="reference" :size="size" :disabled="!row.id" :type="type" icon="el-icon-view"                    style="margin-right: 8px;">                    查看记录                  </el-button>                </el-popover>                <el-button :size="size" :disabled="disabled || isDisabled" :type="type"                  :icon="row.$cellEdit ? 'el-icon-plus' : 'el-icon-edit'" @click="rowEdit(row, index)">                  {{ row.$cellEdit ? '保存' : '编辑' }}                </el-button>                <el-button icon="el-icon-delete" :size="size" :disabled="disabled || isDisabled" :type="type"                  @click="rowDelBox(row, index)">删除                </el-button>              </template>            </avue-crud>          </el-tab-pane>          <el-tab-pane label="订单信息" name="payment_details">            <avue-crud :option="optionPaymentDetails" v-model="formContacts" ref="payment_details" :data="form.shipVOList"              :key="key" @row-save="rowSave" @row-update="rowUpdate"              @resetColumn="resetColumnTwo('payment_details', 'optionPaymentDetails', 'optionPaymentDetailsBack', 270.2)"              @saveColumn="saveColumnTwo('payment_details', 'optionPaymentDetails', 'optionPaymentDetailsBack', 270.2)">            </avue-crud>          </el-tab-pane>          <el-tab-pane label="历史记录" name="outbound_records">            <avue-crud :option="optionOutboundRecords" v-model="formContacts" ref="outbound_records"              :data="form.historyList" :key="key" @row-save="rowSave" @row-update="rowUpdate"              @resetColumn="resetColumnTwo('outbound_records', 'optionOutboundRecords', 'optionOutboundRecordsBack', 270.3)"              @saveColumn="saveColumnTwo('outbound_records', 'optionOutboundRecords', 'optionOutboundRecordsBack', 270.3)">            </avue-crud>          </el-tab-pane>        </el-tabs>      </trade-card>      <containerTitle title="上传附件"></containerTitle>      <c-upload v-loading="loadingBtn" typeUpload="LT" :disabled="isAddDisabled"        deleteUrl="/api/trade-purchase/woodHarvestingCloud/removeByFileId" :data="filesList" display        :enumerationValue="35.1"></c-upload>      <report-dialog :switchDialog="switchDialog" :reportId="form.id" @onClose="onClose()"></report-dialog>    </div>  </div></template><script>import { getDetails, tradingBox, submit, warehousingComplete, revokeOutboundCompleted } from "@/api/tirePartsMall/salesManagement/outboundWorkOrder";import { dateFormat } from "@/util/date";import reportDialog from "@/components/report-dialog/main";import { dotList } from "@/api/tirePartsMall/purchasingManagement/warehouseEntryOrder";export default {  name: "detailsPage",  data() {    return {      // 上传附件的需要参数      loadingBtn: false,      filesList: [],      switchDialog: false,      activeName: "sale_detail",      editButton: true,      isSave: true,      disabled: false,      isDisabled: false,      isAddDisabled: false,      form: {        shipItemsList: [],        shipVOList: [],        historyList: []      },      key: 0,      optionForm: {        disabled: false,        menuBtn: false,        span: 8,        column: [{          label: '业务对象',          disabled: false,          prop: "customerId",          type: 'select',          props: {            label: 'cname',            value: 'id'          },          dicUrl: '/api/blade-sales-part/corpsDesc/listAll?corpType=KH&enableOrNot=1',          rules: [{            required: true,            message: " ",            trigger: "blur"          }]        }, {          label: '仓库',          prop: "storageId",          disabled: false,          type: 'select',          props: {            label: 'cname',            value: 'id'          },          dicUrl: '/api/blade-sales-part/storageDesc/listAll',          rules: [{            required: true,            message: " ",            trigger: "blur"          }]        }, {          label: '库管',          prop: "stockClerkId",          type: 'select',          disabled: false,          props: {            label: 'realName',            value: 'id'          },          dicUrl: '/api/blade-user/stockClerkList',          rules: [{            required: true,            message: " ",            trigger: "blur"          }]        },        {          label: '业务日期',          prop: "businesDate",          searchProp: "businesDateList",          disabled: false,          type: "datetime",          value: dateFormat(new Date(), 'yyyy-MM-dd hh:mm:ss'),          format: "yyyy-MM-dd HH:mm",          valueFormat: "yyyy-MM-dd HH:mm:ss",          rules: [            {              required: true,              message: "",              trigger: "blur"            }          ]        },        {          label: '入库单号',          disabled: false,          prop: "billno",          rules: [            {              required: true,              message: " ",              trigger: "blur"            }          ],        },        {          label: '来源单号',          prop: "ordNo",          disabled: true        },        {          label: '配送方式',          prop: "shipType",          type: 'select',          disabled: false,          props: {            label: 'dictValue',            value: 'dictKey'          },          dicUrl: '/api/blade-system/dict-biz/dictionary?code=deliveryMethod'        },        {          label: '货运公司',          prop: "logisticsCorpName",          type: 'select',          disabled: false,          props: {            label: 'dictValue',            value: 'dictKey'          },          dicUrl: '/api/blade-system/dict-biz/dictionary?code=tyre_express_company'        },        {          label: '货运单号',          prop: "expressNo",          disabled: false        },        {          label: '订单数量',          prop: "goodsTotalNum",          disabled: true,          rules: [            {              required: true,              message: " ",              trigger: "blur"            }          ]        },        {          label: '出库数量',          prop: "sendTotalNum",          disabled: true,        },        {          label: '备注',          prop: "remarks",          type: 'textarea',          disabled: false,          span: 16,          minRows: 1        }]      },      formContacts: {},      optionContacts: {},      optionContactsBack: {        align: 'center',        index: true,        addBtnText: "录入明细",        updateBtnText: '保存',        refreshBtn: false,        dialogDrag: true,        addBtn: true,        span: 8,        height: 300,        addRowBtn: false,        editBtn: false,        delBtn: false,        menuWidth: 200,        dialogTop: 25,        dialogWidth: "80%",        showSummary: true,        saveBtn: false, // 表格弹窗保存按钮        cellBtn: false, // 行编辑        sumColumnList: [          {            name: 'goodsNum',            type: 'sum',          }, {            name: 'sendNum',            type: 'sum',          }],        column: [{          label: '商品名称',          prop: 'goodsId',          disabled: true,          width: 200,          overHidden: true,          hide: true,          type: 'select',          props: {            label: 'cname',            value: 'id'          },          dicUrl: '/api/blade-sales-part/goodsDesc/goodsListAll'        }, {          label: '商品名称',          prop: 'goodsName',          disabled: true,          width: 200,          overHidden: true,        }, {          label: '商品编码',          disabled: true,          prop: 'goodsNo',          width: 100        }, {          label: '品牌',          prop: 'brandId',          disabled: true,          width: 100,          overHidden: true,          type: 'select',          props: {            label: 'cname',            value: 'id'          },          dicUrl: '/api/blade-sales-part/brandDesc/listAll?type=PP&enableOrNot=1'        }, {          label: '规格型号',          prop: 'propertyName',          disabled: true,          width: 100        }, {          label: '花纹',          prop: 'pattern',          disabled: true,          width: 100        }, {          label: '商品描述',          prop: 'goodsDescription',          disabled: true,        }, {          label: '批次号',          prop: 'dot',          cell: true,          type: 'select',          disabled: true,          dicData: [],          props: {            label: "dot",            value: "dot"          },          dicUrl: "/api/blade-sales-part/stockDesc/dotList",        }, {          label: '单位',          prop: 'units',          type: "select",          disabled: true,          props: {            label: "dictValue",            value: "dictValue"          },          dicUrl: "/api/blade-system/dict-biz/dictionary?code=unit"        }, {          label: '库存',          prop: 'inventory',        }, {          label: '出库数量',          prop: 'goodsNum',          disabled: false,          disabled: true,        }, {          label: '发货数量',          prop: 'sendNum',          cell: true,          disabled: false,        }, {          label: '备注',          prop: 'remarks'        }]      },      optionPaymentDetails: {},      optionPaymentDetailsBack: {        align: 'center',        index: true,        addBtnText: "录入明细",        refreshBtn: false,        dialogDrag: true,        addBtn: false,        span: 8,        height: 600,        addRowBtn: false,        editBtn: false,        delBtn: false,        menuWidth: 140,        dialogTop: 25,        dialogWidth: "80%",        menu: false,        column: [{          label: '出库单号',          prop: 'billno',          overHidden: true,        }, {          label: '来源单号',          prop: 'ordNo',          overHidden: true,        }, {          label: '业务来源',          prop: 'bsType',          overHidden: true,        }, {          label: '地址',          prop: 'recAddress',          overHidden: true,        }, {          label: '联系人',          prop: 'contacts',          overHidden: true,        }, {          label: '电话',          prop: 'phone',          overHidden: true,        }, {          label: '备注',          prop: 'remarks',          overHidden: true,        }]      },      optionOutboundRecords: {},      optionOutboundRecordsBack: {        align: 'center',        index: true,        addBtnText: "录入明细",        refreshBtn: false,        dialogDrag: true,        addBtn: false,        span: 8,        height: 600,        addRowBtn: false,        editBtn: false,        delBtn: false,        menuWidth: 140,        dialogTop: 25,        dialogWidth: "80%",        menu: false,        column: [{          label: '操作人',          prop: 'operatorName',          overHidden: true,        }, {          label: '状态',          prop: 'operateStatus',          overHidden: true,        }, {          label: '时间',          prop: 'operateTime',          overHidden: true,        }]      }    }  },  components: {    reportDialog  },  props: {    onLoad: Object,    detailData: Object  },  async created() {    this.optionContacts = await this.getColumnData(this.getColumnName(270.1), this.optionContactsBack);    this.optionPaymentDetails = await this.getColumnData(this.getColumnName(270.2), this.optionPaymentDetailsBack);    this.optionOutboundRecords = await this.getColumnData(this.getColumnName(270.3), this.optionOutboundRecordsBack);    this.key++    if (this.onLoad.id && this.detailData.id) {      console.log(1);      this.refresh(this.onLoad.id, true)      this.$set(this.optionForm, 'disabled', true)    } else if (this.onLoad.id) {      console.log(2);      this.refresh(this.onLoad.id, true)    }    if (this.detailData.id) {      this.refresh()    }    if (this.$route.query.srcId) {      this.refresh(this.$route.query.srcId)    }    this.$store.commit("DOMIO_IN_DETAIL");  },  activated() {    if (this.detailData.id) {      this.refresh()    }    this.$store.commit("DOMIO_IN_DETAIL");  },  methods: {    // 撤销出库    revoke() {      this.$refs["form"].validate((valid, done) => {        done();        if (valid) {          const loading = this.$loading({            lock: true,            text: '加载中',            spinner: 'el-icon-loading',            background: 'rgba(255,255,255,0.7)'          });          revokeOutboundCompleted({            ...this.form,            bizTypeName: "FHGD"          }).then(res => {            this.$message.success("撤销成功");            this.refresh(res.data.data.id)            loading.close();          }).finally(() => {            loading.close();          });        }      })    },    rowEdit(row, index) {      if (this.form.statusName == '待出库') {        this.optionContacts.column.forEach(its => {          if (its.prop == 'dot') {            this.$set(its, 'disabled', false)          }        })      }      dotList({        storageId: this.form.storageId,        goodsId: row.goodsId      }).then(res => {        this.findObject(this.optionContacts.column, "dot").dicData = res.data.data        // 增加监听数据改变更改库存数量        this.findObject(this.optionContacts.column, "dot").change = (data) => {          for (let item of data.column.dicData) {            if (item.dot == data.value) {              this.$set(row, 'inventory', item.balanceQuantity)            }          }        }      })      if (row.$cellEdit) {        this.$set(row, '$cellEdit', false)      } else {        this.$set(row, '$cellEdit', true)      }      // this.$refs.formContacts.rowEdit(row, index)    },    complete() {      console.log(this.form.id);      this.$refs["form"].validate((valid, done) => {        done();        if (valid) {          const loading = this.$loading({            lock: true,            text: '加载中',            spinner: 'el-icon-loading',            background: 'rgba(255,255,255,0.7)'          });          this.form.shipItemsList.forEach(item => {            item.goodsName = item.$goodsId          })          submit({            ...this.form,            bizTypeName: "FHGD"          }).then(res => {            warehousingComplete({              ...this.form,              bizTypeName: "FHGD"            }).then(res => {              this.$message.success("出库完成");              this.refresh(res.data.data.id)              loading.close();            }).finally(() => {              loading.close();            });          })        } else {          this.$message.error('请选择库管')        }      })    },    Jump(row) {      if (this.$store.getters.financingStatus) {          this.$alert("融资采购(L)已存在,请关闭融资采购(L)再进行操作", "温馨提示", {            confirmButtonText: "确定",            type: "warning",          });        } else {          this.$router.$avueRouter.closeTag("/tirePartsMall/purchasingManagement/financingProcurement/index");          this.$router.push({            path: "/tirePartsMall/purchasingManagement/financingProcurement/index",            query: {              srcId: row.srcId            },          });        }    },    //修改提交触发    editCustomer() {      this.$refs["form"].validate((valid, done) => {        done();        if (valid) {          const loading = this.$loading({            lock: true,            text: '加载中',            spinner: 'el-icon-loading',            background: 'rgba(255,255,255,0.7)'          });          console.log(this.form)          // 判断处理          for (let index in this.form.shipItemsList) {            this.form.shipItemsList[index].goodsName = this.form.shipItemsList[index].$goodsId            if (Number(this.form.shipItemsList[index].sendNum) > Number(this.form.shipItemsList[index].inventory)) {              this.$message.warning(`序号${index + 1}的实际数量不能大于库存`);              loading.close();              return            }          }          // this.form.shipItemsList.forEach(item => {          //   item.goodsName = item.$goodsId          // })          // this.goodsName;          submit({            ...this.form,            bizTypeName: "FHGD",            filesList: this.filesList          }).then(res => {            this.$message.success("保存成功");            this.refresh(res.data.data.id)            loading.close();          }).finally(() => {            loading.close();          });        } else {          return false;        }      });    },    refresh(id, type) {      this.$set(this.optionContactsBack, 'addBtn', false)      this.$set(this.optionContacts, 'addBtn', false)      this.isDisabled = true      const loading = this.$loading({        lock: true,        text: '加载中',        spinner: 'el-icon-loading',        background: 'rgba(255,255,255,0.7)'      })      if (!this.detailData.id) {        getDetails({ id: id }).then(res => {          if (res.data.data.statusName == '已出库') {            this.$set(this.optionForm, 'disabled', true)            this.isAddDisabled = true            this.optionContacts.column.forEach(item => {              if (item.prop == 'sendNum') {                item.disabled = true              }            })          }          this.isAddDisabled = true          if (res.data.data.statusName == '待出库') {            this.isAddDisabled = true            this.isDisabled = true          }          this.form = res.data.data          this.filesList = res.data.data.filesList          this.$nextTick(() => {            this.$refs.formContacts.refreshTable()          })          loading.close();        }).catch(() => {          loading.close();        })      } else {        getDetails({ id: this.detailData.id }).then(res => {          if (res.data.data.statusName == '已出库') {            this.$set(this.optionForm, 'disabled', true)            this.isAddDisabled = true            this.optionContacts.column.forEach(item => {              if (item.prop == 'sendNum') {                item.disabled = true              }            })          }          this.isAddDisabled = true          if (res.data.data.statusName == '待出库') {            this.isAddDisabled = true            this.isDisabled = true          }          this.form = res.data.data          this.filesList = res.data.data.filesList          this.$nextTick(() => {            this.$refs.formContacts.refreshTable()          })          loading.close();        }).catch(() => {          loading.close();        })      }    },    rowDelBox(row, index) {      this.$confirm("确定将选择数据删除?", {        confirmButtonText: "确定",        cancelButtonText: "取消",        type: "warning"      }).then(() => {        if (row.id) {          tradingBox(row.id).then(res => {            this.form.shipItemsList.splice(index, 1);            this.$message.success("操作成功!");          });        } else {          this.form.shipItemsList.splice(index, 1);          this.$message.success("操作成功!");        }      }      )        ;    },    rowSave(form, done, loading) {      done(form)    },    rowUpdate(form, index, done, loading) {      done(form)    },    //打印    handlePrint() {      this.switchDialog = !this.switchDialog;    },    onClose(val) {      this.switchDialog = val;    },    //编辑    confirmEditing() {      if (this.form.statusName == '待出库' || this.form.statusName == '待入库' || this.form.statusName == '撤销出库') {        this.isDisabled = false        this.isSave = false        this.$set(this.optionForm, 'disabled', false)        this.optionForm.column.forEach(item => {          if (item.prop == 'storageId'            || item.prop == 'remarks'            || item.prop == 'createTime'            || item.prop == 'stockClerkId'            || item.prop == 'shipType'            || item.prop == 'logisticsCorpName'            || item.prop == 'expressNo') {            item.disabled = false          } else {            item.disabled = true          }        })        this.isAddDisabled = false        this.optionContactsBack.column.forEach(its => {          if (its.prop == 'dot') {            this.$set(its, 'disabled', false)          }        })      } else {        this.$set(this.optionForm, 'disabled', false)        this.isAddDisabled = true        this.isSave = false        // this.optionForm.column.forEach(item => {        //   if (item.prop == 'remarks') {        //     item.disabled = false        //   } else {        //     item.disabled = true        //   }        // })        this.optionForm.column.forEach(item => {          item.disabled = true        })        // this.isAddDisabled = false      }    },    //自定义列保存    async saveColumnTwo(ref, option, optionBack, code) {      /**       * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)       * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名       * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码       */      const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);      if (inSave) {        this.$message.success("保存成功");        //关闭窗口        this.$refs[ref].$refs.dialogColumn.columnBox = false;      }    },    //自定义列重置    async resetColumnTwo(ref, option, optionBack, code) {      this[option] = this[optionBack];      const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);      if (inSave) {        this.$message.success("重置成功");        this.$refs[ref].$refs.dialogColumn.columnBox = false;      }    },    backToList(type) {      this.$emit("backToList", type);      // this.$store.commit("DOMIO_OUT_DETAIL");    },    // 表头样式    tableHeaderCellStyle({ row, column, rowIndex, columnIndex }) {      return "padding:4px 0px;fontSize:12px;color:#000;background:#ecf5ff;textAlign:center"    },  }}</script><style lang="scss" scoped>::v-deep .el-form-item {  margin-bottom: 8px !important;}</style>
 |