zuozhengqing
2023-11-24 154fa0916d9b4c87e392a6811d1ae7b09f88a8c6
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" @click="btnPrint">
            <i class="el-icon-printer"></i>
            <span>打印</span>
          </span>
@@ -18,7 +18,7 @@
            <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>
      <!-- 内容 -->
@@ -36,9 +36,12 @@
            :showButton="showButton"
            :isValidateClick="isValidateClick"
            :isDelClick="isDelClick"
            :isCancel="isCancel"
            :list="list"
            :showCancel="showCancel"
            @delClick="delClick"
            @validateClick="validateClick"
            @btnCancel="btnCancel"
          />
        </div>
        <div class="basic-info">
@@ -47,7 +50,9 @@
              <el-col :span="12">
                <el-form-item prop="companyName">
                  <span slot="label">{{ workType === 1 ? "供应商" : workType === 2 ? "客户" : "联系人" }}</span>
                  <el-select
                    v-if="workType === 1"
                    v-model="editConfig.infomation.companyName"
                    placeholder="请选择"
                    size="mini"
@@ -56,6 +61,40 @@
                    @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"
                    style="width: 90%"
                    :disabled="!showFooter"
                    @change="companyChange"
                  >
                   <el-option
                      v-for="item in companyOptions"
                      :key="item.id"
                      :label="item.name"
@@ -63,6 +102,7 @@
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <!-- <el-col :span="12">
@@ -144,7 +184,12 @@
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option v-for="item in toLocationOptions" :key="item.id" :label="item.jointName" :value="item.id">
                    <el-option
                      v-for="item in toLocationOptions"
                      :key="item.id"
                      :label="item.jointName"
                      :value="item.id"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
@@ -158,7 +203,12 @@
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option v-for="item in toLocationOptions" :key="item.id" :label="item.jointName" :value="item.id">
                    <el-option
                      v-for="item in toLocationOptions"
                      :key="item.id"
                      :label="item.jointName"
                      :value="item.id"
                    >
                    </el-option>
                  </el-select>
                </el-form-item>
@@ -215,6 +265,7 @@
            <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="two" v-if="this.workType===2"></el-tab-pane>
            </el-tabs>
            <!-- 操作 -->
            <div v-if="activeName === 'first'">
@@ -234,6 +285,60 @@
                  </el-table-column>
                </template>
              </CommonFormTableView>
            </div>
            <!-- 物流信息 -->
            <div v-if="activeName==='two'&&this.workType===2">
              <el-form
                label-position="right"
                :model="shipmentsInfo"
                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 shipmentsInfo.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="联系电话">
                    <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" 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" v-model="editConfig.infomation.logisticWeight"></el-input>
                  </el-form-item>
                </el-col>
              </el-form>
            </div>
            <!-- 详情 -->
            <!-- <div v-if="activeName === 'detail'">
@@ -274,10 +379,13 @@
  addOperation,
  updateOperation,
  updateStatus,
  stateCancel,
  deleteOperation,
  getListTransfer
  getListTransfer,
  getLogisticCompanyList,
  printReceipts
} from "@/api/overview/overview"
import { getCompanyList } from "@/api/common/other"
import { getSupplierList,getCompanyList,getClientList } from "@/api/common/other"
export default {
  name: "AddOverviewDialog",
  props: {
@@ -319,14 +427,10 @@
        operationTypeId: [{ required: true, message: "请选择入库类型", trigger: "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 }
      ],
      showButton: true,
      activeName: "first",
      productTableList: {},
@@ -335,6 +439,7 @@
      isNoProduct: true, // 添加明细行时是否有产品未选择
      showEdit: false, // 是否显示编辑按钮
      isDelClick: false, // 删除按钮是否可点击
      isCancel:false, //验证按钮是否可点击
      showFooter: false, // 是否显示取消保存
      currentState: "todo", // 当前状态
      detailTableList: {},
@@ -346,35 +451,80 @@
      companyObj: {},
      contacterObj: {},
      isValidateClick: false, // 验证是否显示
      operationTypeOptions: [] // 入库类型列表
      operationTypeOptions: [], // 入库类型列表
      shipmentsInfo: {
        carrier:[],
        waybillNumber:'',
        weight:0,
        logisticWeight:0,
      },
      showCancel:false, // 取消是否可以显示
      list:[],
    }
  },
  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
    if (this.showOperationType) {
      this.getListTransfer()
    }
    this.getLogisticCompanyList()
  },
  methods: {
    setStatusList(){
      console.log(this.editConfig.infomation,"edit")
      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.code === 200) {
          this.companyOptions = res.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,
        jointName: this.editConfig.code,
        page: 0,
        pageSize: 0
      }).then((res) => {
@@ -423,7 +573,13 @@
        this.showFooter = false
        if (this.editConfig.infomation.status === "完成") {
          this.isValidateClick = false
        } else {
        }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 === "完成") {
@@ -433,6 +589,7 @@
        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
@@ -443,6 +600,7 @@
        this.showEdit = true
        this.showFooter = false
        this.isValidateClick = true
        this.showCancel=true
      }
      if (this.editConfig.title === "新建") {
        this.list[0].status = "active"
@@ -467,6 +625,13 @@
      this.showButton = false
      this.showFooter = true
      this.setTableForm()
    },
    async getLogisticCompanyList(){
      await getLogisticCompanyList().then((res) => {
        if(res.code===200){
          this.shipmentsInfo.carrier=res.data
        }
      })
    },
    // 保存
    saveClick(formName) {
@@ -517,7 +682,7 @@
        contacterName = Object.keys(this.contacterObj).length === 0 ? data.contacterName : this.contacterObj.label
      }
      let params = {
        baseOperationType:data.baseOperationType,
        baseOperationType: data.baseOperationType,
        comment: data.comment || "",
        companyID: companyID,
        companyName: companyName,
@@ -532,7 +697,14 @@
        operationTypeName: this.receiptType,
        sourceNumber: data.sourceNumber || "",
        status: 3,
        toLocationId: data.toLocationId || 0
        toLocationId: data.toLocationId || 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
    },
@@ -589,6 +761,7 @@
    },
    // 新增
    addProductClick(value) {
      console.log(value)
      if (value === "操作") {
        console.log(this.tableData)
        for (let i = 0; i < this.tableData.length; i++) {
@@ -697,6 +870,45 @@
          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(){
      await printReceipts(this.editCommonConfig.infomation.id).then((res) => {
        console.log(res)
        if (res.code === 200) {
          this.$message.success("打印成功")
          const link = document.createElement('a');
          link.href = res.data;
          link.download = '出库单.xlsx';
          link.click();
        }
      })
    }
  }
}
@@ -713,6 +925,9 @@
    margin-left: auto;
    margin-right: 60px;
    .btn {
      cursor: pointer;
    }
    .btn:nth-of-type(2){
      cursor: no-drop;
    }
  }
@@ -760,10 +975,10 @@
  .el-tabs--card > .el-tabs__header {
    border-bottom: none;
  }
  .el-tabs__item.is-active {
    color: #333;
    background: #f1f3f8;
  }
  // .el-tabs__item.is-active {
  //   color: #333;
  //   background: #f1f3f8;
  // }
  .el-tabs__item {
    height: 30px;
    line-height: 30px;
@@ -773,5 +988,18 @@
  .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>