yangfeng
2024-03-08 60d0884f82141a0127fca7e2b03bf3c147436776
src/components/makepager/CommonFormTableView.vue
@@ -7,10 +7,11 @@
        :show-summary="showSummary.show"
        :summary-method="getSummaries"
        :span-method="arraySpanMethod"
        @row-click="rowClick"
      >
        <el-table-column
          type="index"
          v-if="tableList.tableColumn.length > 0"
          v-if="tableList.tableColumn && tableList.tableColumn.length > 0"
          label="编号"
          width="50"
          align="center"
@@ -39,6 +40,7 @@
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
            >
              <el-input
                :disabled="item.disabled"
                v-model.trim="scope.row[item.prop]"
                maxlength="50"
                size="mini"
@@ -52,6 +54,7 @@
            <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"
@@ -63,15 +66,21 @@
                    }
                  "
                ></el-autocomplete>
                <div class="common-select-btn" @click="selClientClick(scope.row, item.prop, scope)">
                <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>
                </div>
                <div class="common-select-btn" @click="clearupClient(scope.row, scope)">
                <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" @click="deleteClient(scope.row, scope)">
                  <i class="el-icon-delete" title="删除"></i>
                </div>
                <template v-if="!item.disabled">
                  <div class="common-select-btn" v-if="scope.$index != 0" @click="deleteClient(scope.row, scope)">
                    <i class="el-icon-delete" title="删除"></i>
                  </div>
                </template>
              </div>
            </el-form-item>
            <el-form-item
@@ -91,6 +100,7 @@
              :rules="[{ required: item.isRequird ? true : false, message: '输入不能为空' }]"
            >
              <el-input-number
                :disabled="item.disabled"
                v-model="scope.row[item.prop]"
                placeholder=""
                :min="0"
@@ -110,11 +120,12 @@
              :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=""
                  :disabled="item.disabled"
                  :min="0"
                  :precision="2"
                  :controls="false"
@@ -129,6 +140,7 @@
              </template>
              <template v-else>
                <el-input-number
                  :disabled="item.disabled"
                  v-model="scope.row[item.prop]"
                  placeholder=""
                  :min="0"
@@ -152,8 +164,8 @@
      </el-table>
    </el-form>
    <div v-if="!detailEnter" style="margin: 10px">
      <el-button size="small" type="primary" @click="add">新增</el-button>
      <el-button size="small" type="primary" @click="empty">清空</el-button>
      <el-button :disabled="tableList.disabled" size="small" type="primary" @click="add">新增</el-button>
      <el-button :disabled="tableList.disabled" size="small" type="primary" @click="empty">清空</el-button>
    </div>
    <!-- 产品名称 -->
    <SelectCommonDialog
@@ -184,6 +196,8 @@
      type: Object,
      default: () => {
        return {
          tableProductList: [],
          disabled: false,
          tableData: [], // 接口返回数据
          tableColumn: [
            // table表单
@@ -221,7 +235,8 @@
        title: "",
        infomation: {}
      },
      productIndex: 0
      productIndex: 0,
      tableProductLists: []
    }
  },
  created() {
@@ -235,6 +250,10 @@
    }
  },
  methods: {
    // 选择行
    rowClick(row) {
      this.$emit("rowClick", row)
    },
    // 产品名称
    async getProductList() {
      let fn = this.sign == "purchase" ? getProductList : getProductListFromGrpc
@@ -242,10 +261,10 @@
        page: 1,
        pageSize: 100
      }).then((res) => {
        console.log(res.data)
        if (res.data.code === 200) {
          if (res.data.data.list && res.data.data.list.length > 0) {
            this.productList = res.data.data.list
        if (res.code === 200) {
          if (res.data.list && res.data.list.length > 0) {
            this.productList = res.data.list
            this.tableProductLists = res.data.list
          }
        }
      })
@@ -345,8 +364,6 @@
      this.$emit("addProductClick")
    },
    commonInputChange(val, prop, row) {
      console.log(val, prop)
      console.log(row)
      this.$emit("inputContent", val, prop, row)
    },
    // 清空
@@ -355,7 +372,7 @@
    },
    // 选择产品名称相关方法
    querySearchAsync(queryString, cb) {
      var restaurants = this.productList
      var restaurants = this.tableProductLists
      var results = queryString ? restaurants.filter(this.createStateFilter(queryString)) : restaurants
      cb(results)
    },
@@ -365,11 +382,9 @@
      }
    },
    handleSelectClient(item, prop, row) {
      // this.clientId = item.id
      console.log(item, prop, row)
      this.tableList.tableData.map((ite) => {
        if (ite.name === item.name) {
          ite.ID = row.ID
          ite.id = row.id
          ite.amount = item.amount || 1
          ite.number = item.number
          ite.purchasePrice = item.purchasePrice
@@ -380,12 +395,13 @@
        }
      })
      if (this.detailEnter) {
        this.setEditName(item, row.ID)
        this.setEditName(item, row.id)
      }
      this.$emit("handleProduct", item, row)
    },
    setEditName(item, ID) {
    setEditName(item, id) {
      let selRow = {
        ID: ID,
        id: id,
        deliveryTime: item.deliveryTime,
        maximumStock: item.maximumStock,
        minimumStock: item.minimumStock,
@@ -413,7 +429,7 @@
      console.log(this.tableList.tableData)
      if (this.detailEnter) {
        this.tableList.tableData.map((ite) => {
          ite.ID
          ite.id
          ite.name = item.name
          ite.amount = item.amount || 1
          ite.number = item.number
@@ -422,12 +438,13 @@
          ite.deliveryTime = item.deliveryTime
          ite.shippingDuration = item.shippingDuration
        })
        this.setEditName(item, this.tableList.tableData[0].ID)
        this.setEditName(item, this.tableList.tableData[0].id)
      } else {
        this.tableList.tableData.map((ite, index) => {
          if (index === this.productIndex) {
            ite.name = item.name
            ite.productId = item.ID
            ite.productId = item.id
            ite.productIndex = this.productIndex + 1
            ite.amount = item.amount || 1
            ite.number = item.number
            ite.purchasePrice = item.purchasePrice
@@ -438,7 +455,6 @@
            this.$forceUpdate()
          }
        })
        console.log(this.tableList.tableData, "=====chanp")
      }
    },
@@ -484,10 +500,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;
@@ -496,22 +515,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 {
    padding: 0 5px;
  }
  .el-input__inner {
    text-align: left;
  }