zuozhengqing
2023-11-27 f9512a0896752ef3e4c17a05c871f315041be111
采购订单按钮显隐
3个文件已修改
256 ■■■■ 已修改文件
src/components/makepager/CommonFormTableView.vue 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/purchaseManage/purchase/components/AddPurchase.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/purchaseManage/purchase/index.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/makepager/CommonFormTableView.vue
@@ -1,29 +1,18 @@
<template>
  <div class="page-view">
    <el-form ref="form" :model="tableList" :show-message="false" label-position="right">
      <el-table
        :data="tableList.tableData"
        style="width: 100%"
        :show-summary="showSummary.show"
        :summary-method="getSummaries"
        :span-method="arraySpanMethod"
      <el-table
      :data="tableList.tableData"
      style="width: 100%"
      :show-summary="showSummary.show"
      :summary-method="getSummaries"
      :span-method="arraySpanMethod"
      @row-click="rowClick"
      >
        <el-table-column
          type="index"
          v-if="tableList.tableColumn && tableList.tableColumn.length > 0"
          label="编号"
          width="50"
          align="center"
        ></el-table-column>
        <el-table-column
          v-for="(item, i) in tableList.tableColumn"
          :key="i"
          :prop="item.prop"
          :label="item.label"
          :width="item.width"
          :min-width="item.min"
          align="center"
        >
        <el-table-column type="index" v-if="tableList.tableColumn && tableList.tableColumn.length > 0" label="编号"
          width="50" align="center"></el-table-column>
        <el-table-column v-for="(item, i) in tableList.tableColumn" :key="i" :prop="item.prop" :label="item.label"
          :width="item.width" :min-width="item.min" align="center">
          <!-- 表头样式 -->
          <template slot="header">
            <span v-if="item.isRequird" style="color: #f56c6c">*</span>
@@ -32,121 +21,64 @@
          <!-- column样式 -->
          <template slot-scope="scope">
            <!-- <template v-if="!detailEnter"> -->
            <el-form-item
              v-if="item.input"
              label=" "
              :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
            >
              <el-input
                :disabled="item.disabled"
                v-model.trim="scope.row[item.prop]"
                maxlength="50"
                size="mini"
                @change="
                  (val) => {
                    commonInputChange(val, item.prop, scope.row)
                  }
                "
              ></el-input>
            <el-form-item v-if="item.input" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]">
              <el-input :disabled="item.disabled" v-model.trim="scope.row[item.prop]" maxlength="50" size="mini" @change="(val) => {
                commonInputChange(val, item.prop, scope.row)
              }
                "></el-input>
            </el-form-item>
            <el-form-item  v-else-if="item.productName" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
            <el-form-item v-else-if="item.productName" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop">
              <div class="custom-name">
                <el-autocomplete
                  :disabled="item.disabled"
                  v-model="scope.row[item.prop]"
                  :fetch-suggestions="querySearchAsync"
                  value-key="name"
                  style="width: calc(100% - 70px)"
                  size="mini"
                  @select="
                    (val) => {
                      handleSelectClient(val, item.prop, scope.row)
                    }
                  "
                ></el-autocomplete>
                <el-autocomplete :disabled="item.disabled" v-model="scope.row[item.prop]"
                  :fetch-suggestions="querySearchAsync" value-key="name" style="width: calc(100% - 70px)" size="mini"
                  @select="(val) => {
                    handleSelectClient(val, item.prop, scope.row)
                  }
                    "></el-autocomplete>
                <div v-if="!item.disabled" class="common-select-btn" @click="selClientClick(scope.row, item.prop, scope)">
                  <i  class="el-icon-circle-plus-outline" title="选择"></i>
                  <i class="el-icon-circle-plus-outline" title="选择"></i>
                </div>
                <div v-if="!item.disabled" class="common-select-btn" @click="clearupClient(scope.row, scope)">
                  <i class="el-icon-remove-outline" title="清除"></i>
                </div>
                <div class="common-select-btn" v-if="scope.$index != 0||!item.disabled" @click="deleteClient(scope.row, scope)">
                <div class="common-select-btn" v-if="scope.$index != 0 || !item.disabled"
                  @click="deleteClient(scope.row, scope)">
                  <i class="el-icon-delete" title="删除"></i>
                </div>
              </div>
            </el-form-item>
            <el-form-item
              v-else-if="item.date"
              label=" "
              :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
            >
            <el-form-item v-else-if="item.date" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]">
              <!-- <el-input v-model.trim="scope.row[item.prop]" maxlength="50" size="mini"></el-input> -->
              <el-date-picker v-model="scope.row[item.prop]" type="date" size="mini" style="width: 110px">
              </el-date-picker>
            </el-form-item>
            <el-form-item
              v-else-if="item.inputNumber"
              label=" "
              :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
            >
              <el-input-number
                :disabled="item.disabled"
                v-model="scope.row[item.prop]"
                placeholder=""
                :min="0"
                :controls="false"
                size="mini"
                style="width: 100%; margin-right: 5px"
                @change="
                  (val) => {
            <el-form-item v-else-if="item.inputNumber" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]">
              <el-input-number :disabled="item.disabled" v-model="scope.row[item.prop]" placeholder="" :min="0"
                :controls="false" size="mini" style="width: 100%; margin-right: 5px" @change="(val) => {
                  commonInputChange(val, item.prop, scope.row)
                }
                  "></el-input-number>
            </el-form-item>
            <el-form-item v-else-if="item.inputFloat" label=" " :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]">
              <!-- 采购管理 -->
              <template v-if="item.multiply">
                <el-input-number :disabled="item.disabled"
                  :value="scope.row[showSummary.multiply[0]] * scope.row[showSummary.multiply[1]]" placeholder="" :min="0"
                  :precision="2" :controls="false" size="mini" style="width: 100%; margin-right: 5px" @input="(val) => {
                    commonInputChange(val, item.prop, scope.row)
                  }
                "
              ></el-input-number>
            </el-form-item>
            <el-form-item
              v-else-if="item.inputFloat"
              label=" "
              :prop="'tableData.' + scope.$index + '.' + item.prop"
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
            >
            <!-- 采购管理 -->
              <template v-if="item.multiply">
                <el-input-number
                  :disabled="item.disabled"
                  :value="scope.row[showSummary.multiply[0]] * scope.row[showSummary.multiply[1]]"
                  placeholder=""
                  :min="0"
                  :precision="2"
                  :controls="false"
                  size="mini"
                  style="width: 100%; margin-right: 5px"
                  @input="
                    (val) => {
                      commonInputChange(val, item.prop, scope.row)
                    }
                  "
                ></el-input-number>
                    "></el-input-number>
              </template>
              <template v-else>
                <el-input-number
                  :disabled="item.disabled"
                  v-model="scope.row[item.prop]"
                  placeholder=""
                  :min="0"
                  :precision="2"
                  :controls="false"
                  size="mini"
                  style="width: 100%; margin-right: 5px"
                  @change="
                    (val) => {
                      commonInputChange(val, item.prop, scope.row)
                    }
                  "
                ></el-input-number>
                <el-input-number :disabled="item.disabled" v-model="scope.row[item.prop]" placeholder="" :min="0"
                  :precision="2" :controls="false" size="mini" style="width: 100%; margin-right: 5px" @change="(val) => {
                    commonInputChange(val, item.prop, scope.row)
                  }
                    "></el-input-number>
              </template>
            </el-form-item>
            <span v-else>{{ scope.row[item.prop] }}</span>
@@ -161,12 +93,8 @@
      <el-button :disabled="tableList.disabled" size="small" type="primary" @click="empty">清空</el-button>
    </div>
    <!-- 产品名称 -->
    <SelectCommonDialog
      v-if="editSelCommonConfig.editVisible"
      :edit-common-config="editSelCommonConfig"
      :sign="sign"
      @selClient="selClient"
    />
    <SelectCommonDialog v-if="editSelCommonConfig.editVisible" :edit-common-config="editSelCommonConfig" :sign="sign"
      @selClient="selClient" />
  </div>
</template>
@@ -189,8 +117,8 @@
      type: Object,
      default: () => {
        return {
          tableProductList:[],
          disabled:false,
          tableProductList: [],
          disabled: false,
          tableData: [], // 接口返回数据
          tableColumn: [
            // table表单
@@ -229,7 +157,7 @@
        infomation: {}
      },
      productIndex: 0,
      tableProductLists:[],
      tableProductLists: [],
    }
  },
  created() {
@@ -243,6 +171,10 @@
    },
  },
  methods: {
    // 选择行
    rowClick(row){
      this.$emit("rowClick",row)
    },
    // 产品名称
    async getProductList() {
      let fn = this.sign == "purchase" ? getProductList : getProductListFromGrpc
@@ -371,7 +303,6 @@
      }
    },
    handleSelectClient(item, prop, row) {
      // this.clientId = item.id
      this.tableList.tableData.map((ite) => {
        if (ite.name === item.name) {
          ite.ID = row.ID
@@ -387,6 +318,7 @@
      if (this.detailEnter) {
        this.setEditName(item, row.ID)
      }
      this.$emit("handleProduct",item)
    },
    setEditName(item, ID) {
      let selRow = {
@@ -489,10 +421,13 @@
<style lang="scss" scoped>
.page-view {
  min-width: 100px;
  .el-form-item {
    margin-bottom: 0;
    .custom-name {
      display: flex;
      .common-select-btn {
        margin-left: 5px;
        font-size: 18px;
@@ -501,22 +436,27 @@
    }
  }
}
::v-deep {
  .el-form-item__label {
    display: none;
  }
  .el-table__footer-wrapper tbody td.el-table__cell {
    background-color: #fff;
    // text-align: right;
    font-weight: bold;
  }
  .el-input--suffix .el-input__inner {
    padding-right: 0px;
  }
  .el-table .cell,
  .el-table th.el-table__cell > .cell {
  .el-table th.el-table__cell>.cell {
    padding: 0 5px;
  }
  .el-input__inner {
    text-align: left;
  }
src/views/purchaseManage/purchase/components/AddPurchase.vue
@@ -187,6 +187,8 @@
              @addProductClick="addProductClick"
              @emptyProductClick="emptyProductClick"
              @clearupProduct="clearupProduct"
              @rowClick="rowClick"
              @handleProduct="handleProduct"
            />
          </div>
          <div class="table-bottom">
@@ -253,10 +255,10 @@
      </el-form>
      <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 type="primary" v-if="this.editConfig.title != '查看'" size="small" @click="saveClick('form')"
          >保存</el-button
        >
        <el-button size="small" @click="editConfig.visible = false"
        <el-button size="small" v-if="this.editConfig.title != '查看'" @click="editConfig.visible = false"
          >取消</el-button
        >
      </div>
@@ -291,6 +293,7 @@
} from "@/api/purchaseManage/purchase";
import SelectSupplierDialog from "@/views/purchaseManage/purchase/components/SelectSupplierDialog";
// import { formToJSON } from "axios";
export default {
  name: "QuotationDialog",
  components: { SelectSupplierDialog, CommonFormTableView,BomDialog },
@@ -363,7 +366,8 @@
      },
      supplierId: this.editCommonConfig.infomation.supplierId,
      tableData: [],
      productId: 1,
      productIndex: 0,
      productId:'',
      isNoProduct: true,
      clientList: [],
      plcBrandList:[],
@@ -372,6 +376,7 @@
      },
      total:0,
      totalTwo:0,
      productListIdx:0
    };
  },
  created() {
@@ -636,6 +641,7 @@
        this.tableData = [
          {
            productId: this.productId,
            productIndex:this.productIndex,
            id: 0,
            amount: 0,
            desc: "",
@@ -685,9 +691,11 @@
    },
    // 产品列表输入
    inputContent(val, prop, row) {
      this.productId = row.productId;
      // this.productId = row.productId;
      this.productIndex=row.productIndex;
      console.log(row,val,prop,"产品ID",this.tableData)
      this.tableData.map((item) => {
        if (item.productId === row.productId) {
        if (item.productIndex === row.productIndex) {
          item[prop] = val;
        }
      });
@@ -719,9 +727,10 @@
    },
    // 产品新增
    addProductClick() {
      this.productId++;
      this.productIndex++;
      this.tableData.push({
        productId: this.productId,
        productIndex: this.productIndex,
        productId:'',
        id: 0,
        amount: 0,
        desc: "",
@@ -734,10 +743,11 @@
    },
    //  产品清空
    emptyProductClick() {
      this.productId = 1;
      this.productIndex = 1;
      this.tableData = [
        {
          productId: this.productId,
          productId: '',
          productIndex:this.productIndex,
          id: 0,
          amount: 0,
          desc: "",
@@ -753,6 +763,16 @@
      this.tableData = data;
      this.productTableList.tableData = this.tableData;
    },
    //选择行
    rowClick(row){
      console.log(row,"xuanze")
      this.productListIdx=row.productIndex
    },
    //选中产品
    handleProduct(item){
      this.tableData[this.productListIdx].productId=item.ID
      console.log(item,"选中产品",this.tableData)
    }
  },
};
</script>
src/views/purchaseManage/purchase/index.vue
@@ -122,8 +122,24 @@
    console.log(this.$route.params,"路由参数")
    if(this.$route.params.supplierId){
      this.editConfig.visible = true
      this.editConfig.infomation.supplierId=this.$route.params.supplierId
      this.editConfig.infomation.supplierName=this.$route.params.supplierName
      this.editConfig.infomation = {
        productList: [],
        purchaseTypeId: "",
        supplierId: this.$route.params.supplierId||'',
        supplierName: this.$route.params.supplierName||'',
        orderSource: "手动创建",
        name: "",
        contact: "",
        phone: "",
        signingDate: "",
        deliveryDate: "",
        remark: "",
        wholeDiscountType: null,
        wholeDiscount: 0,
        priceAdjustmentType: null,
        priceAdjustment: 0,
        realTotalPrice: 0
      }
    }
    this.setTable()
    this.getData()