yangfeng
2023-09-21 8d0ee0a2c32c7a99afc01b0a0c795d708a9b7955
src/views/overview/AddOverviewDialog.vue
@@ -8,7 +8,7 @@
    >
      <!-- 头 -->
      <div slot="title" class="dialog-header">
        <span>{{ editCommonConfig.title + "采购入库" }}</span>
        <span>{{ editCommonConfig.title + addName }}</span>
        <div class="header_btns">
          <span class="btn">
            <i class="el-icon-printer"></i>
@@ -39,12 +39,32 @@
          <div class="basic-info-view">
            <el-row>
              <el-col :span="12">
                <el-form-item label="接收" prop="client_name">
                <el-form-item prop="companyName">
                  <span slot="label">{{ workType === 1 ? "客户" : workType === 2 ? "送货地址" : "联系人" }}</span>
                  <el-select
                    v-model="editConfig.infomation.memberId"
                    v-model="editConfig.infomation.company"
                    placeholder="请选择"
                    size="mini"
                    style="width: 63%"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option
                      v-for="item in companyOptions"
                      :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">
                <el-form-item v-if="workType === 3" label="联系人" prop="contacterName">
                  <el-select
                    v-model="editConfig.infomation.contacterName"
                    placeholder="请选择"
                    size="mini"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
@@ -53,52 +73,71 @@
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="安排的日期" prop="refundDate">
                <el-form-item v-if="workType === 2" 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="12">
                <el-form-item label="日期" prop="operationDate">
                  <el-date-picker
                    v-model="editConfig.infomation.refundDate"
                    v-model="editConfig.infomation.operationDate"
                    value-format="yyyy-MM-dd"
                    type="date"
                    placeholder="选择日期"
                    style="width: 63%"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="作业类型" prop="client_name">
                  <el-select
                    v-model="editConfig.infomation.memberId"
                    placeholder="请选择"
                    size="mini"
                    style="width: 63%"
                    :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 label="入库类型">
                  <el-input v-model="receiptType" disabled style="width: 90%"></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="源单据" prop="memberId">
                <el-form-item label="来源单据" prop="sourceNumber">
                  <el-input
                    v-model="editConfig.infomation.memberId"
                    v-model="editConfig.infomation.sourceNumber"
                    placeholder="例如:PO0032"
                    style="width: 63%"
                    style="width: 90%"
                    :disabled="!showFooter"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item label="目的位置" prop="client_name">
                <el-form-item v-if="workType !== 1" label="源位置" prop="fromLocationId">
                  <el-select
                    v-model="editConfig.infomation.memberId"
                    v-model="editConfig.infomation.fromLocationId"
                    placeholder="请选择"
                    size="mini"
                    style="width: 63%"
                    style="width: 90%"
                    :disabled="!showFooter"
                  >
                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
                    <el-option v-for="item in fromLocationOptions" :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 v-if="workType !== 2" label="仓库位置" prop="toLocationId">
                  <el-select
                    v-model="editConfig.infomation.toLocationId"
                    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>
                  </el-select>
                </el-form-item>
@@ -107,27 +146,44 @@
          </div>
          <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">
                <el-col :span="12">
                  <el-form-item label="负责人" prop="client_name">
                    <el-select
                      v-model="editConfig.infomation.memberId"
                      placeholder="请选择"
                      size="mini"
                      style="width: 63%"
                      :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>
                <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"
                      >
                        <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
                        </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="desc">
                <el-form-item label="备注" prop="comment">
                  <el-input
                    v-model.trim="editConfig.infomation.desc"
                    v-model.trim="editConfig.infomation.comment"
                    size="mini"
                    type="textarea"
                    style="width: 85%"
@@ -137,17 +193,18 @@
                </el-form-item>
              </el-tab-pane>
            </el-tabs>
            <!-- 操作 -->
            <div v-if="activeName === 'first'">
              <CommonFormTableView
                :product-table-list="productTableList"
                :detail-enter="!showFooter"
                @inputContent="inputContent"
                @addProductClick="addProductClick"
                @addProductClick="addProductClick('操作')"
              >
                <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>
                    </template>
@@ -155,6 +212,25 @@
                </template>
              </CommonFormTableView>
            </div>
            <!-- 详情 -->
            <!-- <div v-if="activeName === 'detail'">
              <CommonFormTableView
                :product-table-list="detailTableList"
                :detail-enter="!showFooter"
                @inputContent="inputDetail"
                @addProductClick="addProductClick('详情')"
              >
                <template v-if="showFooter" slot="tableButton">
                  <el-table-column label="操作" width="60" fixed="right" align="center">
                    <template slot-scope="scope">
                      <div @click="handleDelClick(scope, '详情')">
                        <i class="el-icon-delete"></i>
                      </div>
                    </template>
                  </el-table-column>
                </template>
              </CommonFormTableView>
            </div> -->
          </div>
        </div>
      </el-form>
@@ -170,6 +246,8 @@
<script>
import CommonFormTableView from "@/components/makepager/CommonFormTableView"
// import { addOperation } from "@/api/overview/overview"
import { getCompanyList } from "@/api/common/other"
export default {
  name: "AddOverviewDialog",
  props: {
@@ -182,6 +260,14 @@
          infomation: {}
        }
      }
    },
    workType: {
      type: Number,
      default: 1
    },
    addName: {
      type: String,
      default: "调拨"
    }
  },
  components: { CommonFormTableView },
@@ -197,8 +283,10 @@
        memberId: [{ required: true, message: "请选择销售负责人", trigger: "change" }],
        sale_return_nunber: [{ required: true, message: "请选择销售退货单", trigger: "change" }]
      },
      companyOptions: [], // 公司
      memberOptions: [],
      paymentTypeListOptions: [],
      fromLocationOptions: [], // 源位置
      toLocationOptions: [], // 仓库位置
      list: [
        { label: "草稿", status: "todo" },
        { label: "正在等待", status: "todo" },
@@ -209,18 +297,39 @@
      activeName: "first",
      productTableList: {},
      tableData: [{ name: "ssss" }],
      productId: 0,
      isNoProduct: false, // 添加明细行时是否有产品未选择
      showEdit: false, // 是否显示编辑按钮
      isDelClick: false, // 删除按钮是否可点击
      showFooter: false, // 是否显示取消保存
      currentState: "todo" // 当前状态
      currentState: "todo", // 当前状态
      detailTableList: {},
      detailTableData: [{ name: "ssss" }],
      detailId: 0,
      isNoDetail: false, // 添加详情明细行时是否未选择
      tableColumn: [],
      receiptType: this.addName, // 入库类型
      companyObj: {},
      contacterObj: {}
    }
  },
  created() {
    this.setTableForm()
    this.setBottonView()
    this.setDetailTableForm()
    this.activeName = this.workType === 1 ? "first" : "detail"
    this.getCompanyList()
  },
  methods: {
    // 获取公司列表
    async getCompanyList() {
      await getCompanyList().then((res) => {
        console.log(res)
        if (res.data.code === 200) {
          this.companyOptions = res.data.data
        }
      })
    },
    // 设置删除/打印/编辑是否显示
    setBottonView() {
      if (this.editConfig.title === "新建") {
@@ -265,23 +374,53 @@
      this.setTableForm()
    },
    // 保存
    saveClick() {},
    saveClick() {
      this.saveParams()
    },
    saveParams() {
      let data = this.editConfig.infomation
      console.log(this.companyObj)
      let params = {
        companyID: data.company.value || 0,
        companyName: data.company.label || "",
        contacterID: 0,
        contacterName: "string",
        details: [
          {
            finishQuantity: 0,
            productId: 0,
            productName: "string",
            quantity: 0
          }
        ],
        fromLocationId: data.fromLocationId || 0,
        id: 0,
        number: "",
        operationDate: data.operationDate || "",
        operationTypeId: data.operationTypeId,
        sourceNumber: data.sourceNumber || "",
        status: 3,
        toLocationId: data.toLocationId || 0
      }
      return params
    },
    // 删除
    delClick() {},
    // 操作列表
    setTableForm() {
      this.productTableList = {
        tableData: this.tableData,
        tableColumn: [
          { label: "产品", prop: "name", productName: true, isRequird: true },
          { label: "说明", prop: "number", input: true },
          { label: "日期", prop: "amount", date: true, isRequird: true },
          { label: "截止日期", prop: "price", date: true },
          // { label: "说明", prop: "number", input: true },
          // { label: "日期", prop: "amount", date: true, isRequird: true },
          // { label: "截止日期", prop: "price", date: true },
          { label: "完成", prop: "total", inputFloat: true },
          { label: "计量单位", prop: "total", select: true }
        ]
      }
    },
    // 产品列表输入
    // 操作输入
    inputContent(val, prop, row) {
      this.productId = row.productId
      this.tableData.map((item) => {
@@ -290,35 +429,99 @@
        }
      })
    },
    // 产品新增
    addProductClick() {
      console.log(this.tableData)
      for (let i = 0; i < this.tableData.length; i++) {
        if (this.tableData[i].name.length === 0) {
          this.isNoProduct = true
          break
        } else {
          this.isNoProduct = false
    // 新增
    addProductClick(value) {
      if (value === "操作") {
        console.log(this.tableData)
        for (let i = 0; i < this.tableData.length; i++) {
          if (this.tableData[i].name.length === 0) {
            this.isNoProduct = true
            break
          } else {
            this.isNoProduct = false
          }
        }
        if (!this.isNoProduct) {
          this.productId++
          this.tableData.push({
            productId: this.productId,
            id: 0,
            amount: 0,
            desc: "",
            name: "",
            number: "",
            price: 0,
            total: 0
          })
        }
      } 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
          })
        }
      }
      if (!this.isNoProduct) {
        this.productId++
        this.tableData.push({
          productId: this.productId,
          id: 0,
          amount: 0,
          desc: "",
          name: "",
          number: "",
          price: 0,
          total: 0
        })
    },
    // 删除
    handleDelClick(scope, value) {
      console.log(scope)
      if (value === "操作") {
        this.tableData.splice(scope.$index, 1)
      } else {
        this.detailTableData.splice(scope.$index, 1)
      }
    },
    // 产品删除
    handleDelClick(scope) {
      console.log(scope)
      this.tableData.splice(scope.$index, 1)
    // 详情列表
    setDetailTableForm() {
      this.setTableColumn()
      this.detailTableList = {
        tableData: this.detailTableData,
        tableColumn: this.tableColumn
      }
    },
    setTableColumn() {
      if (this.workType === "内部调拨") {
        this.tableColumn = [
          { label: "产品", prop: "name", productName: true, isRequird: true },
          { label: "从", prop: "number", select: true },
          { label: "至", prop: "amount", select: true },
          { label: "完成", prop: "total", inputFloat: true },
          { label: "计量单位", prop: "total", select: true }
        ]
      } else {
        this.tableColumn = [
          { label: "产品", prop: "name", productName: true, isRequird: true },
          { label: "从", prop: "number", select: true },
          { label: "完成", prop: "total", inputFloat: true },
          { label: "计量单位", prop: "total", select: true }
        ]
      }
    },
    // 详情输入
    inputDetail(val, prop, row) {
      this.detailId = row.detailId
      this.detailTableData.map((item) => {
        if (item.detailId === row.detailId) {
          item[prop] = val
        }
      })
    }
  }
}
@@ -353,9 +556,20 @@
  .basic-info-view {
    margin-top: 20px;
  }
  // .bottom {
  //   margin-left: 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 {