zuozhengqing
2024-04-10 62d36f52a6058e0483feceb8819475b31bc1f102
src/views/overview/AddOverviewDialog.vue
@@ -10,7 +10,7 @@
      <div slot="title" class="dialog-header">
        <span>{{ editCommonConfig.title === "查看" ? editCommonConfig.title : editCommonConfig.title + addName }}</span>
        <div class="header_btns">
          <span class="btn">
          <span class="btn" :style="{ cursor: thatCursor, color: thatColor }" @click="btnPrint" :disabled="true">
            <i class="el-icon-printer"></i>
            <span>打印</span>
          </span>
@@ -18,7 +18,15 @@
            <i class="el-icon-s-tools"></i>
            <span>动作</span>
          </span>
          <el-button v-if="showEdit" plain size="mini" style="margin-left: 15px" @click="editClick">编辑</el-button>
          <el-button
            v-if="showEdit"
            :disabled="this.editConfig.infomation.status === 5"
            plain
            size="mini"
            style="margin-left: 15px"
            @click="editClick"
            >编辑</el-button
          >
        </div>
      </div>
      <!-- 内容 -->
@@ -29,7 +37,6 @@
        label-position="right"
        label-width="120px"
        size="mini"
        style="height: 60vh; overflow-x: hidden"
      >
        <div>
          <!-- <div>aaa</div> -->
@@ -37,18 +44,77 @@
            :showButton="showButton"
            :isValidateClick="isValidateClick"
            :isDelClick="isDelClick"
            :isCancel="isCancel"
            :list="list"
            :showCancel="showCancel"
            @delClick="delClick"
            @validateClick="validateClick"
            @btnCancel="btnCancel"
          />
        </div>
        <div class="basic-info">
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item prop="number">
                  <span slot="label">{{ workType === 1 ? "入库" : workType === 2 ? "出库" : "调拨" }}单号</span>
                  <el-input
                    style="width: 85%"
                    v-if="
                      editConfig.title == '编辑' ||
                      editConfig.title == '查看' ||
                      (editConfig.title == '新建' && codenumer && (explain != '' || isIdDisabled))
                    "
                    :disabled="editConfig.title != '新建'"
                    v-model="editConfig.infomation.number"
                    placeholder="请输入编码"
                  >
                  </el-input>
                  <span v-else-if="editConfig.title == '新建'" style="color: #f56c6c; width: 85%"
                    >请优先配置编码规范 <el-button type="text" @click="numberClick"> 配置规范 </el-button></span
                  >
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item prop="companyName">
                  <span slot="label">{{ workType === 1 ? "客户" : workType === 2 ? "送货地址" : "联系人" }}</span>
                  <span slot="label">{{ workType === 1 ? "供应商" : workType === 2 ? "客户" : "联系人" }}</span>
                  <el-select
                    v-if="workType === 1"
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="companyChange"
                  >
                    <el-option
                      v-for="item in supplierOptions"
                      :key="item.SupplierId"
                      :label="item.SupplierName"
                      :value="{ value: item.SupplierId, label: item.SupplierName }"
                    >
                    </el-option>
                  </el-select>
                  <el-select
                    v-else-if="workType === 2"
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="companyChange"
                  >
                    <el-option
                      v-for="item in clientOptions"
                      :key="item.ClientId"
                      :label="item.ClientName"
                      :value="{ value: item.ClientId, label: item.ClientName }"
                    >
                    </el-option>
                  </el-select>
                  <el-select
                    v-else
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
@@ -107,10 +173,9 @@
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="12">
              <el-col v-if="showOperationType" :span="12">
                <el-form-item label="入库类型" prop="operationTypeId">
                  <el-select
                    v-if="showOperationType"
                    v-model="editConfig.infomation.operationTypeId"
                    placeholder="请选择"
                    size="mini"
@@ -120,7 +185,11 @@
                    <el-option v-for="item in operationTypeOptions" :key="item.id" :label="item.name" :value="item.id">
                    </el-option>
                  </el-select>
                  <el-input v-else v-model="receiptType" disabled style="width: 90%"></el-input>
                </el-form-item>
              </el-col>
              <el-col v-else :span="12">
                <el-form-item label="入库类型">
                  <el-input v-model="receiptType" disabled style="width: 90%"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
@@ -134,31 +203,89 @@
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item v-if="workType !== 1" label="源位置" prop="fromLocationId">
                <el-form-item :label="workType === 1 ? '仓库位置' : '从'" prop="location">
                  <el-select
                    v-model="editConfig.infomation.fromLocationId"
                    @change="rootLocationChange"
                    v-model="editConfig.infomation.location"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option v-for="item in toLocationOptions" :key="item.id" :label="item.name" :value="item.id">
                    <el-option
                      v-for="item in formLocationOptions"
                      :key="item.id"
                      :label="item.jointName"
                      :value="{ label: item.jointName, value: item.id }"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item v-if="workType !== 2" label="仓库位置" prop="toLocationId">
                <el-form-item label="负责人" prop="contacterName">
                  <el-select
                    v-model="editConfig.infomation.toLocationId"
                    v-model="editConfig.infomation.contacterName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="contacterChange"
                  >
                    <el-option
                      v-for="item in memberOptions"
                      :key="item.id"
                      :label="item.name"
                      :value="{ value: item.id, label: item.name }"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="12" v-if="workType === 3">
                <el-form-item label="至" prop="toLocation">
                  <el-select
                    @change="toLocationChange"
                    v-model="editConfig.infomation.toLocation"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option v-for="item in toLocationOptions" :key="item.id" :label="item.name" :value="item.id">
                    <el-option
                      v-for="item in toLocationOptions"
                      :key="item.id"
                      :label="item.jointName"
                      :value="{ label: item.jointName, value: item.id }"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <!-- <el-col :span="12">
                <el-form-item v-if="workType !== 1" label="送货策略" prop="client_name">
                  <el-select
                    v-model="editConfig.infomation.memberId"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col> -->
              <el-col :span="24">
                <el-form-item label="备注" prop="comment">
                  <el-input
                    v-model.trim="editConfig.infomation.comment"
                    size="mini"
                    type="textarea"
                    style="width: 96%"
                    :autosize="{ minRows: 3 }"
                    :disabled="!showFooter"
                  ></el-input>
                </el-form-item>
              </el-col>
            </el-row>
@@ -166,76 +293,122 @@
          <div class="bottom">
            <el-tabs v-model="activeName" type="card">
              <!-- <el-tab-pane v-if="workType !== 1" label="详情" name="detail"> </el-tab-pane> -->
              <el-tab-pane label="操作" name="first"> </el-tab-pane>
              <el-tab-pane label="其他信息" name="second">
                <div class="purchase-view">
                  <div class="left">
                    <div class="second-label">其他信息</div>
                    <!-- <el-form-item v-if="workType !== 1" label="送货策略" prop="client_name">
                      <el-select
                        v-model="editConfig.infomation.memberId"
                        placeholder="请选择"
                        size="mini"
                        style="width: 90%"
                        :disabled="!showFooter"
                      >
                        <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
                        </el-option>
                      </el-select>
                    </el-form-item> -->
                    <el-form-item label="负责人" prop="contacterName">
                      <el-select
                        v-model="editConfig.infomation.contacterName"
                        placeholder="请选择"
                        size="mini"
                        style="width: 90%"
                        :disabled="!showFooter"
                        @change="contacterChange"
                      >
                        <el-option
                          v-for="item in memberOptions"
                          :key="item.id"
                          :label="item.name"
                          :value="{ value: item.id, label: item.name }"
                        >
                        </el-option>
                      </el-select>
                    </el-form-item>
                  </div>
                  <div class="right"></div>
                </div>
              </el-tab-pane>
              <el-tab-pane label="备注" name="third">
                <el-form-item label="备注" prop="comment">
                  <el-input
                    v-model.trim="editConfig.infomation.comment"
                    size="mini"
                    type="textarea"
                    style="width: 85%"
                    :autosize="{ minRows: 8 }"
                    :disabled="!showFooter"
                  ></el-input>
                </el-form-item>
              </el-tab-pane>
              <el-tab-pane label="产品" name="first"> </el-tab-pane>
              <el-tab-pane label="物流信息" name="two" v-if="this.workType === 2"></el-tab-pane>
            </el-tabs>
            <!-- 操作 -->
            <div v-if="activeName === 'first'">
              <CommonFormTableView
                ref="tableView"
                :islistingrules="true"
                :addTypeIdMultiple="true"
                :product-table-list="productTableList"
                :detail-enter="!showFooter"
                @inputContent="inputContent"
                @addProductClick="addProductClick('操作')"
                @getSelectArray="getSelectArray"
                @emptyProductClick="emptyProductClick"
                @clearupProduct="clearupProduct"
              >
                <template v-if="showFooter" slot="tableButton">
                  <el-table-column label="操作" width="60" fixed="right" align="center">
                    <template slot-scope="scope">
                      <div @click="handleDelClick(scope, '操作')">
                      <!-- <div @click="handleDelClick(scope, '操作')">
                        <i class="el-icon-delete"></i>
                      </div>
                      </div> -->
                      <el-button type="text" size="small" @click.stop="handleDelClick(scope, '操作')">删除</el-button>
                    </template>
                  </el-table-column>
                </template>
              </CommonFormTableView>
            </div>
            <!-- 物流信息 -->
            <div v-if="activeName === 'two' && this.workType === 2">
              <el-form
                :rules="rules2"
                ref="shipmentsInfo"
                label-position="right"
                :model="editConfig.infomation"
                label-width="120px"
                size="mini"
                style="margin-top: 20px"
              >
                <el-col :span="12">
                  <el-form-item label="承运商">
                    <el-select
                      size="mini"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.logisticCompanyId"
                      placeholder="请选择"
                      style="width: 90%"
                    >
                      <el-option
                        v-for="item in editConfig.infomation.carrier"
                        :key="item.id"
                        :label="item.name"
                        :value="item.id"
                      >
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="运单号">
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.waybillNumber"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="收货人">
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverName"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="联系电话" prop="receiverPhone">
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverPhone"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="收货地址">
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      v-model="editConfig.infomation.receiverAddr"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="重量">
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      type="number"
                      v-model="editConfig.infomation.weight"
                    ></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="物流重量">
                    <el-input
                      style="width: 90%"
                      :disabled="!showFooter"
                      type="number"
                      v-model="editConfig.infomation.logisticWeight"
                    ></el-input>
                  </el-form-item>
                </el-col>
              </el-form>
            </div>
            <!-- 详情 -->
            <!-- <div v-if="activeName === 'detail'">
@@ -260,9 +433,9 @@
        </div>
      </el-form>
      <!-- 尾 -->
      <div v-if="showFooter" slot="footer" class="dialog-footer">
      <div slot="footer" class="dialog-footer">
        <!-- <el-button type="primary" size="small" @click="editConfig.visible = false">保并提交审批</el-button> -->
        <el-button type="primary" size="small" @click="saveClick('form')">保存</el-button>
        <el-button type="primary" size="small" @click="saveClick" :disabled="!showFooter">保存</el-button>
        <el-button size="small" @click="editConfig.visible = false">取消</el-button>
      </div>
    </el-dialog>
@@ -276,12 +449,17 @@
  addOperation,
  updateOperation,
  updateStatus,
  stateCancel,
  deleteOperation,
  getOperationType
  getListTransfer,
  getLogisticCompanyList,
  printReceipts
} from "@/api/overview/overview"
import { getCompanyList } from "@/api/common/other"
import { getSupplierList, getCompanyList, getClientList } from "@/api/common/other"
import codeMixin from "@/views/overview/mixin/codeMixin"
export default {
  name: "AddOverviewDialog",
  mixins: [codeMixin],
  props: {
    editCommonConfig: {
      type: Object,
@@ -296,7 +474,10 @@
    },
    workType: {
      type: Number,
      default: 1
      default: function () {
        // return JSON.parse(window.sessionStorage.getItem('paramsData')).workType|| 1;
        return 1
      }
    },
    addName: {
      type: String,
@@ -316,19 +497,27 @@
      rules: {
        sourceNumber: [{ required: true, message: "请输入来源单据", trigger: "blur" }],
        operationDate: [{ required: true, message: "请选择日期", trigger: "change" }],
        toLocationId: [{ required: true, message: "请选择仓库位置", trigger: "change" }],
        fromLocationId: [{ required: true, message: "请选择源位置", trigger: "change" }],
        operationTypeId: [{ required: true, message: "请选择入库类型", trigger: "change" }]
        toLocation: [{ required: true, message: "请选择位置", trigger: "change" }],
        location: [{ required: true, message: "请选择调出位置", trigger: "change" }],
        operationTypeId: [{ required: true, message: "请选择入库类型", trigger: "change" }],
        number: [{ required: true, validator: this.validateCheckCode, trigger: ["change", "blur"] }]
      },
      rules2: {
        receiverPhone: [
          // {required: true, message: "请输入手机号", trigger: "change" },
          {
            pattern: /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/,
            message: "请输入正确的手机号",
            trigger: ["blur", "change"]
          }
        ]
      },
      companyOptions: [], // 公司
      supplierOptions: [], //供应商
      clientOptions: [], //客户
      memberOptions: [{ id: 1, name: "管理员" }],
      toLocationOptions: [], //  源位置 仓库位置
      list: [
        { label: "草稿", status: "todo", value: 1 },
        { label: "正在等待", status: "todo", value: 2 },
        { label: "就绪", status: "todo", value: 3 },
        { label: "完成", status: "todo", value: 4 }
      ],
      formLocationOptions: [], // 至
      toLocationOptions: [], // 仓库位置
      showButton: true,
      activeName: "first",
      productTableList: {},
@@ -337,6 +526,7 @@
      isNoProduct: true, // 添加明细行时是否有产品未选择
      showEdit: false, // 是否显示编辑按钮
      isDelClick: false, // 删除按钮是否可点击
      isCancel: false, //验证按钮是否可点击
      showFooter: false, // 是否显示取消保存
      currentState: "todo", // 当前状态
      detailTableList: {},
@@ -348,34 +538,112 @@
      companyObj: {},
      contacterObj: {},
      isValidateClick: false, // 验证是否显示
      operationTypeOptions: [] // 入库类型列表
      operationTypeOptions: [], // 入库类型列表
      shipmentsInfo: {
        carrier: [],
        waybillNumber: "",
        weight: 0,
        logisticWeight: 0,
        receiverPhone: ""
      },
      showCancel: false, // 取消是否可以显示
      list: [],
      pdfParams: {},
      thatCursor: this.workType === 3 ? "no-drop" : "pointer",
      thatColor: this.workType === 3 ? "#ccc" : "#000"
    }
  },
  created() {
    this.getCompanyList()
    this.setStatusList()
    this.setTableForm()
    this.setBottonView()
    this.setDetailTableForm()
    this.getCompanyList()
    this.getLocationList()
    this.receiptType = this.editConfig.title === "查看" ? this.editConfig.infomation.operationTypeName : this.addName
    this.receiptType =
      this.editConfig.title === "查看" || this.editConfig.title === "编辑"
        ? this.editConfig.infomation.operationTypeName
        : this.addName
    if (this.showOperationType) {
      this.getOperationType()
      this.getListTransfer()
    }
    this.getLogisticCompanyList()
    this.formInfo()
    if (this.editConfig.title === "查看" || this.editConfig.title === "编辑") {
      setTimeout(() => {
        this.$refs.tableView.setLocationList(this.editConfig.infomation.location.label)
      }, 100)
    }
  },
  mounted() {},
  methods: {
    formInfo() {
      this.objCode.type = this.workType === 1 ? "入库编码" : this.workType === 2 ? "出库编码" : "调拨编码"
      this.objCode.codeStandID = ""
      if (this.editConfig.infomation.codeStandardID) {
        this.objCode.codeStandID = this.editConfig.infomation.codeStandardID
      }
      this.getRCodeStandardList()
    },
    setStatusList() {
      if (this.editConfig.infomation.status === 5) {
        this.list = [
          { label: "草稿", status: "todo", value: 1 },
          { label: "正在等待", status: "todo", value: 2 },
          { label: "就绪", status: "todo", value: 3 },
          { label: "完成", status: "todo", value: 4 },
          { label: "已取消", status: "todo", value: 5 }
        ]
      } else {
        this.list = [
          { label: "草稿", status: "todo", value: 1 },
          { label: "正在等待", status: "todo", value: 2 },
          { label: "就绪", status: "todo", value: 3 },
          { label: "完成", status: "todo", value: 4 }
        ]
      }
    },
    // 获取公司列表
    async getCompanyList() {
      await getCompanyList().then((res) => {
        console.log(res)
        if (res.data.code === 200) {
          this.companyOptions = res.data.data
        }
      })
      if (this.workType === 1) {
        await getSupplierList().then((res) => {
          console.log(res)
          if (res.code === 200) {
            this.supplierOptions = res.data
          }
        })
      } else if (this.workType === 2) {
        await getClientList().then((res) => {
          console.log(res)
          if (res.code === 200) {
            this.clientOptions = res.data
          }
        })
      } else {
        await getCompanyList().then((res) => {
          console.log(res)
          if (res.code === 200) {
            this.companyOptions = res.data
          }
        })
      }
    },
    // 获取仓库位置列表
    // 获取调出位置/仓库位置列表
    async getLocationList() {
      await getLocationList({
        keyWord: "",
        jointName: this.editConfig.code,
        page: 0,
        pageSize: 0
      }).then((res) => {
        console.log(res)
        if (res.code === 200) {
          this.formLocationOptions = res.data
        }
      })
      await getLocationList({
        keyWord: "",
        // jointName: this.editConfig.code,
        page: 0,
        pageSize: 0
      }).then((res) => {
@@ -386,15 +654,15 @@
      })
    },
    // 获取仓库类型
    async getOperationType() {
      await getOperationType({
    async getListTransfer() {
      await getListTransfer({
        keyword: "",
        page: 0,
        pageSize: 0
      }).then((res) => {
        console.log(res.data.data)
        if (res.data.code === 200) {
          const list = res.data.data.map((item) => {
        console.log(res.data)
        if (res.code === 200) {
          const list = res.data.map((item) => {
            return {
              name: item.name,
              id: item.id
@@ -406,18 +674,41 @@
    },
    // 设置删除/打印/编辑是否显示
    setBottonView() {
      console.log(this.editConfig.infomation.status)
      if (this.editConfig.title === "新建") {
        this.showButton = false
        this.showEdit = false
        this.showFooter = true
        this.isValidateClick = false
      } else if (this.editConfig.infomation.status === 4||this.editConfig.infomation.status === "完成") {
      } else if (this.editConfig.title === "编辑") {
        this.showButton = true
        this.showEdit = false
        this.isDelClick = true
        this.showFooter = true
      } else if (this.editConfig.title === "查看" && this.editConfig.infomation.status !== 4) {
        this.showButton = true
        this.showEdit = true
        this.isDelClick = true
        this.showFooter = false
        if (this.editConfig.infomation.status === "完成") {
          this.isValidateClick = false
        } else if (this.editConfig.infomation.status === 3) {
          this.isValidateClick = true
          this.showCancel = true
        } else if (this.editConfig.infomation.status === 5) {
          this.isCancel = true
          this.isValidateClick = true
        } else {
          this.isValidateClick = true
        }
      } else if (this.editConfig.infomation.status === 4 || this.editConfig.infomation.status === "完成") {
        this.showButton = true
        this.showEdit = false
        this.isDelClick = true
        this.showFooter = false
        this.isValidateClick = false
      } else if (this.editConfig.infomation.status === 5) {
        this.isCancel = true
        this.showButton = true
        this.showEdit = false
        this.showFooter = false
@@ -428,13 +719,14 @@
        this.showEdit = true
        this.showFooter = false
        this.isValidateClick = true
        this.showCancel = true
      }
      if (this.editConfig.title === "新建") {
        this.list[0].status = "active"
      } else {
        this.list.map((item) => {
          console.log(item,this.editConfig.infomation.status,"打印信息")
          if (item.value === this.editConfig.infomation.status||item.label===this.editConfig.infomation.status) {
          console.log(item, this.editConfig.infomation.status, "打印信息")
          if (item.value === this.editConfig.infomation.status || item.label === this.editConfig.infomation.status) {
            item.status = "active"
          } else {
            item.status = "todo"
@@ -453,10 +745,27 @@
      this.showFooter = true
      this.setTableForm()
    },
    async getLogisticCompanyList() {
      await getLogisticCompanyList().then((res) => {
        if (res.code === 200) {
          this.editConfig.infomation.carrier = res.data
        }
      })
    },
    // 保存
    saveClick(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
    saveClick() {
      let validArr = []
      if (this.workType === 2) {
        console.log("出库")
        validArr = [this.$refs.form.validate()]
      } else {
        console.log("入库")
        validArr = [this.$refs.form.validate()]
      }
      console.log(validArr, "xxx")
      Promise.all(validArr)
        .then((results) => {
          console.log(results, "执行成功", this.tableData)
          for (let i = 0; i < this.tableData.length; i++) {
            if (this.tableData[i].productName.length === 0) {
              this.isNoProduct = true
@@ -468,21 +777,112 @@
          if (this.isNoProduct) {
            this.$message.error("请添加明细行或选择产品不能为空")
          } else {
            let requestUrl = this.editConfig.title === "新建" ? addOperation : updateOperation
            let params = this.saveParams()
            // if(this.workType===2){
            //   params.details.map((item)=>{
            //     item.fromLocationId=item.fromLocationId.value
            //   })
            // }else if(this.workType===3){
            //   params.details.map((item)=>{
            //     item.fromLocationId=item.fromLocationId.value
            //     item.toLocationId=item.toLocationId.value
            //   })
            // }
            // 产品列表解构
            if (this.editConfig.title === "编辑" || this.editConfig.title === "查看") {
              let arr = []
              if (this.workType === 1) {
                params.details.map((item) => {
                  arr.push({
                    operationId: item.operationId,
                    amount: item.amount,
                    productId: item.productId
                  })
                })
                params.details = arr
              } else if (this.workType === 2) {
                params.details.map((item) => {
                  if (item.fromLocationId.value) {
                    arr.push({
                      operationId: item.operationId,
                      amount: item.amount,
                      fromLocationId: item.fromLocationId.value,
                      productId: item.productId
                    })
                  } else {
                    arr.push({
                      operationId: item.operationId,
                      amount: item.amount,
                      fromLocationId: item.fromLocation.id,
                      productId: item.productId
                    })
                  }
                })
                params.details = arr
              } else if (this.workType === 3) {
                console.log(params.details, "看看")
                params.details.map((item) => {
                  arr.push({
                    operationId: item.operationId,
                    amount: item.amount,
                    fromLocationId: item.fromLocationId.value ? item.fromLocationId.value : item.fromLocation.id,
                    toLocationId: item.toLocationId.value ? item.toLocationId.value : item.toLocation.id,
                    productId: item.productId
                  })
                  // if(item.fromLocationId.value){
                  //   arr.push({
                  //     operationId:item.operationId,
                  //     amount:item.amount,
                  //     fromLocationId:item.fromLocationId.value,
                  //     toLocationId:item.toLocation.id,
                  //     productId:item.productId,
                  //   })
                  // }else{
                  //   arr.push({
                  //     operationId:item.operationId,
                  //     amount:item.amount,
                  //     fromLocationId:item.fromLocation.id,
                  //     toLocationId:item.toLocation.id,
                  //     productId:item.productId,
                  //   })
                  // }
                })
                params.details = arr
              }
            } else if (this.editConfig.title === "新建") {
              if (this.workType === 2) {
                params.details.map((item) => {
                  item.fromLocationId = item.fromLocationId.value
                })
              } else if (this.workType === 3) {
                params.details.map((item) => {
                  item.fromLocationId = item.fromLocationId.value
                  item.toLocationId = item.toLocationId.value
                })
              }
            }
            let requestUrl = this.editConfig.title === "新建" ? addOperation : updateOperation
            // let params = this.saveParams()
            requestUrl({
              ...params
            }).then((res) => {
              console.log(res)
              this.editConfig.visible = false
              if (res.code === 200) {
                this.$message.success("添加成功")
                if (this.editConfig.title === "新建") {
                  this.$message.success("添加成功")
                } else {
                  this.$message.success("编辑成功")
                }
                this.$parent.getData()
              } else {
                this.$message.success(res.msg)
              }
            })
          }
        }
      })
        })
        .catch((error) => {
          console.error("表单校验未通过:", error)
        })
    },
    saveParams() {
      let data = this.editConfig.infomation
@@ -501,22 +901,59 @@
        contacterID = Object.keys(this.contacterObj).length === 0 ? data.contacterID : this.contacterObj.value
        contacterName = Object.keys(this.contacterObj).length === 0 ? data.contacterName : this.contacterObj.label
      }
      let params = {
        comment: data.comment || "",
        companyID: companyID,
        companyName: companyName,
        contacterID: contacterID,
        contacterName: contacterName,
        details: this.tableData,
        fromLocationId: data.fromLocationId || 0,
        id: data.id,
        number: data.number || "",
        operationDate: data.operationDate || "",
        operationTypeId: this.showOperationType ? data.operationTypeId : this.editConfig.operationTypeId,
        operationTypeName: this.receiptType,
        sourceNumber: data.sourceNumber || "",
        status: 3,
        toLocationId: data.toLocationId || 0
      let params = {}
      if (this.workType === 1 || this.workType === 2) {
        params = {
          baseOperationType: data.baseOperationType,
          comment: data.comment || "",
          companyID: companyID,
          companyName: companyName,
          contacterID: contacterID,
          contacterName: contacterName,
          details: this.tableData,
          locationId: data.location.value || 0,
          id: data.id,
          number: data.number || "",
          operationDate: data.operationDate || "",
          operationTypeId: this.showOperationType ? data.operationTypeId : this.editConfig.operationTypeId,
          operationTypeName: this.receiptType,
          sourceNumber: data.sourceNumber || "",
          status: 3,
          // toLocationId: data.toLocation.value||0,
          waybillNumber: data.waybillNumber || "",
          weight: data.weight || 0,
          logisticWeight: data.logisticWeight || 0,
          logisticCompanyId: data.logisticCompanyId,
          receiverAddr: data.receiverAddr || "",
          receiverName: data.receiverName || "",
          receiverPhone: data.receiverPhone || ""
        }
      } else if (this.workType === 3) {
        params = {
          baseOperationType: data.baseOperationType,
          comment: data.comment || "",
          companyID: companyID,
          companyName: companyName,
          contacterID: contacterID,
          contacterName: contacterName,
          details: this.tableData,
          locationId: data.location.value || 0,
          id: data.id,
          number: data.number || "",
          operationDate: data.operationDate || "",
          operationTypeId: this.showOperationType ? data.operationTypeId : this.editConfig.operationTypeId,
          operationTypeName: this.receiptType,
          sourceNumber: data.sourceNumber || "",
          status: 3,
          toLocationId: data.toLocation.value || 0,
          waybillNumber: data.waybillNumber || "",
          weight: data.weight || 0,
          logisticWeight: data.logisticWeight || 0,
          logisticCompanyId: data.logisticCompanyId,
          receiverAddr: data.receiverAddr || "",
          receiverName: data.receiverName || "",
          receiverPhone: data.receiverPhone || ""
        }
      }
      return params
    },
@@ -533,11 +970,16 @@
    },
    // 操作列表
    setTableForm() {
      if (this.editConfig.title !== "新建") {
      if (
        this.editConfig.title !== "新建" &&
        this.editConfig.infomation.details &&
        this.editConfig.infomation.details.length > 0
      ) {
        const list = this.editConfig.infomation.details.map((item) => {
          return {
            ...item,
            productName: item.product.name,
            productId: item.product.id,
            unit: item.product.unit
          }
        })
@@ -546,79 +988,163 @@
        this.tableData = []
      }
      // this.tableData = this.editConfig.title !== "新建" ? list : []
      let tableColumnArr = []
      if (this.workType === 1) {
        tableColumnArr = [
          { label: "产品名称", prop: "productName", productName: true, isRequird: true },
          { label: "产品编码", prop: "productId" },
          { label: "数量", prop: "amount", inputFloat: true },
          { label: "产品规格", prop: "specs" },
          { label: "产品型号", prop: "model" },
          { label: "计量单位", prop: "unit" },
        ]
      } else if (this.workType === 2) {
        tableColumnArr = [
          { label: "产品名称", prop: "productName", productName: true, isRequird: true },
          { label: "产品编码", prop: "productId" },
          { label: "数量", prop: "amount", inputFloat: true },
          { label: "产品规格", prop: "specs" },
          { label: "产品型号", prop: "model" },
          { label: "从", prop: "fromLocationId", sonLocation: true, isRequird: true },
          { label: "计量单位", prop: "unit" },
        ]
      } else if (this.workType === 3) {
        tableColumnArr = [
          { label: "产品名称", prop: "productName", productName: true, isRequird: true },
          { label: "产品编码", prop: "productId" },
          { label: "数量", prop: "amount", inputFloat: true },
          { label: "产品规格", prop: "specs" },
          { label: "产品型号", prop: "model" },
          { label: "从", prop: "fromLocationId", sonLocation: true, isRequird: true },
          { label: "至", prop: "toLocationId", toLocation: true, isRequird: true },
          { label: "计量单位", prop: "unit" },
        ]
      }else if (this.workType === 4) {
        tableColumnArr = [
          { label: "产品名称", prop: "productName", productName: true, isRequird: true },
          { label: "产品编码", prop: "productId" },
          { label: "数量", prop: "amount", inputFloat: true },
          { label: "产品规格", prop: "specs" },
          { label: "产品型号", prop: "model" },
          { label: "从", prop: "fromLocationId", sonLocation: true, isRequird: true },
          { label: "至", prop: "toLocationId", toLocation: true, isRequird: true },
          { label: "计量单位", prop: "unit" },
        ]
      }else if (this.workType === 5) {
        tableColumnArr = [
          { label: "产品名称", prop: "productName", productName: true, isRequird: true },
          { label: "产品编码", prop: "productId" },
          { label: "数量", prop: "amount", inputFloat: true },
          { label: "产品规格", prop: "specs" },
          { label: "产品型号", prop: "model" },
          { label: "从", prop: "fromLocationId", sonLocation: true, isRequird: true },
          { label: "至", prop: "toLocationId", toLocation: true, isRequird: true },
          { label: "计量单位", prop: "unit" },
        ]
      }
      this.productTableList = {
        tableData: this.tableData,
        tableColumn: [
          { label: "产品", prop: "productName", productName: true, isRequird: true },
          // { label: "说明", prop: "number", input: true },
          // { label: "日期", prop: "amount", date: true, isRequird: true },
          // { label: "截止日期", prop: "price", date: true },
          { label: "完成", prop: "amount", inputFloat: true },
          { label: "计量单位", prop: "unit" }
        ]
        tableColumn: tableColumnArr
      }
    },
    // 操作输入
    inputContent(val, prop, row) {
      this.countId = row.countId
      this.tableData.map((item) => {
        if (item.countId === row.countId) {
        if (item.id === row.id) {
          item[prop] = val
        }
      })
    },
    // 新增
    addProductClick(value) {
      if (value === "操作") {
        console.log(this.tableData)
        for (let i = 0; i < this.tableData.length; i++) {
          if (this.tableData[i].productName.length === 0) {
            this.isNoProduct = false
            break
          } else {
            this.isNoProduct = true
          }
        }
        if (this.isNoProduct) {
          this.countId++
          this.tableData.push({
            countId: this.countId,
            productId: "",
            amount: 0,
            unit: "",
            productName: ""
          })
        }
      } else {
        console.log(this.detailTableData)
        for (let i = 0; i < this.detailTableData.length; i++) {
          if (this.detailTableData[i].name.length === 0) {
            this.isNoDetail = true
            break
          } else {
            this.isNoDetail = false
          }
        }
        if (!this.isNoDetail) {
          this.detailId++
          this.detailTableData.push({
            detailId: this.detailId,
            id: 0,
            amount: 0,
            desc: "",
            name: "",
            number: "",
            price: 0,
            total: 0
          })
        }
      console.log(value)
      // if (value === "操作") {
      //   console.log(this.tableData)
      //   for (let i = 0; i < this.tableData.length; i++) {
      //     if (this.tableData[i].productName.length === 0) {
      //       this.isNoProduct = false
      //       break
      //     } else {
      //       this.isNoProduct = true
      //     }
      //   }
      //   if (this.isNoProduct) {
      //     this.countId++
      //     this.tableData.push({
      //       countId: this.countId,
      //       productId: "",
      //       amount: 0,
      //       unit: "",
      //       productName: ""
      //     })
      //   }
      // } else {
      //   console.log(this.detailTableData)
      //   for (let i = 0; i < this.detailTableData.length; i++) {
      //     if (this.detailTableData[i].name.length === 0) {
      //       this.isNoDetail = true
      //       break
      //     } else {
      //       this.isNoDetail = false
      //     }
      //   }
      //   if (!this.isNoDetail) {
      //     this.detailId++
      //     this.detailTableData.push({
      //       detailId: this.detailId,
      //       id: 0,
      //       amount: 0,
      //       desc: "",
      //       name: "",
      //       number: "",
      //       price: 0,
      //       total: 0
      //     })
      //   }
      // }
    },
    // 新增方式修改
    getSelectArray(val, index) {
      if (this.tableData.length == 1 && this.tableData[0].number.length == 0) {
        this.tableData = []
      }
      if (index < this.tableData.length) {
        this.tableData.splice(index, 1)
        val.map((item, ind) => {
          this.tableData.splice(index + ind, 0, item)
        })
      } else {
        this.tableData = this.tableData.concat(val)
      }
      console.log(this.tableData)
      let list = this.tableData.map((res) => {
        return {
          ...res,
          amount: 1,
          productName: res.name,
          productId: res.id
        }
      })
      this.tableData = list
      this.productTableList.tableData = list
      // this.showSummary.show = true
    },
    //  产品清空
    emptyProductClick() {
      this.tableData = []
      this.productTableList.tableData = this.tableData
    },
    clearupProduct(data) {
      this.tableData = data
      this.productTableList.tableData = this.tableData
    },
    // 删除
    handleDelClick(scope, value) {
      console.log(scope)
      if (value === "操作") {
        this.tableData.splice(scope.$index, 1)
        this.productTableList.tableData = this.tableData
        this.$message.success("删除成功!")
      } else {
        this.detailTableData.splice(scope.$index, 1)
      }
@@ -677,6 +1203,75 @@
          this.$parent.getData()
        }
      })
    },
    // 取消
    btnCancel() {
      this.$confirm("确定取消吗?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          stateCancel(this.editConfig.infomation.id).then((res) => {
            console.log(res)
            this.editConfig.visible = false
            if (res.code === 200) {
              this.$message.success("取消调拨")
              this.$parent.getData()
            }
          })
          this.list.map((item) => {
            if (item.label === "已取消") {
              item.status = "active"
            } else {
              item.status = "todo"
            }
          })
        })
        .catch(() => {})
    },
    //打印
    async btnPrint() {
      if (this.workType !== 3) {
        localStorage.removeItem("pdfParams")
        try {
          let res = await printReceipts(this.editCommonConfig.infomation.id)
          console.log(res)
          if (res.code === 200) {
            console.log(this.editConfig.infomation.baseOperationType, "类型")
            let pdfParams = {
              url: res.data,
              baseOperationType: this.editConfig.infomation.baseOperationType || undefined,
              cutAfterWidth: this.editConfig.infomation.baseOperationType === 2 ? 50.8 : 53.3
            }
            var { href } = this.$router.resolve({
              path: "/overview/previewExcel",
              query: {
                ...pdfParams
              }
            })
            window.open(href, "_blank")
          }
        } catch (error) {
          console.error(error)
        }
      }
    },
    // 调出位置选择
    rootLocationChange(val) {
      this.editConfig.infomation.location = val
      // this.productTableList.tableData.map((item)=>{
      //   console.log(item,"item")
      //   // item.toLocationId={}
      //   // item.fromLocationId={}
      // })
      this.$refs.tableView.setLocationList(val.label, "fromLocation")
    },
    // 仓库位置选择
    toLocationChange(val) {
      this.editConfig.infomation.toLocation = val
      this.$refs.tableView.setLocationList(val.label, "toLocation")
    }
  }
}
@@ -689,61 +1284,103 @@
  align-items: center;
  font-size: 14px;
  color: #333;
  .header_btns {
    margin-left: auto;
    margin-right: 60px;
    .btn {
      cursor: pointer;
    }
    .btn:nth-of-type(2) {
      cursor: no-drop;
      color: #ccc;
    }
  }
}
.content-status {
  display: flex;
}
.basic-info {
  height: calc(100% - 80px);
  overflow: auto;
  margin: 20px;
  border: 1px solid #dcdfe6;
  box-shadow: inset 0 0 2px #dee2e6;
  -moz-box-shadow: inset 0 0 2px #dee2e6;
  -webkit-box-shadow: inset 0 0 2px #dee2e6;
  .basic-info-view {
    margin-top: 20px;
  }
  // border: 1px solid #dcdfe6;
  // box-shadow: inset 0 0 2px #dee2e6;
  // -moz-box-shadow: inset 0 0 2px #dee2e6;
  // -webkit-box-shadow: inset 0 0 2px #dee2e6;
  // .basic-info-view {
  //   margin-top: 20px;
  // }
}
.purchase-view {
  display: flex;
  .left {
    width: 50%;
  }
  .right {
    width: 50%;
  }
}
.second-label {
  margin-left: 20px;
  border-bottom: 1px solid #d9d9d9;
  margin-bottom: 10px;
}
::v-deep {
  .el-dialog__headerbtn {
    position: absolute;
    top: 15px;
  }
  .el-button {
    &:hover {
      border: 1px solid #dcdfe6;
      color: #333;
    }
  }
  .el-tabs--card > .el-tabs__header .el-tabs__nav {
    margin-left: 20px;
  .el-tabs--card > .el-tabs__header {
    border-bottom: none;
  }
  // .el-tabs__item.is-active {
  //   color: #333;
  //   background: #f1f3f8;
  // }
  .el-tabs__item {
    height: 30px;
    line-height: 30px;
    font-size: 13px;
    background: #f3f3f3;
  }
  .el-tabs__header {
    margin: 0 0 1px;
  }
  .bottom {
    .el-form {
      // border-top: 1px solid #EBEEF5;
    }
    .el-form-item {
      height: 28px;
      .el-input {
        input {
          height: 28px;
        }
      }
    }
  }
}
</style>