石广澎
2023-12-02 e908aead856e1da187a27ae6b5f48eaf106d2acf
fix: 库存预警编辑问题修复
1个文件已修改
147 ■■■■■ 已修改文件
admin-web/src/views/stock/ledger/inventoryAlert/edit.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin-web/src/views/stock/ledger/inventoryAlert/edit.vue
@@ -5,10 +5,10 @@
        <el-col :span="12">
          <el-form-item label="预警仓库" prop="baseWarehouseId">
            <el-select
                v-model="formData.baseWarehouseId"
                placeholder="请选择预警仓库"
                style="width: 100%"
                :disabled="type == 'edit'"
              v-model="formData.baseWarehouseId"
              placeholder="请选择预警仓库"
              style="width: 100%"
              :disabled="type == 'edit'"
            >
              <el-option v-for="item in warehouses" :key="item.id" :label="item.warehouseName" :value="item.id"/>
            </el-select>
@@ -17,15 +17,15 @@
        <el-col :span="12">
          <el-form-item label="物品分类" prop="baseCategoryId">
            <el-cascader
                v-model="formData.baseCategoryId"
                :options="categoryOptions"
                :props="{ value: 'id',emitPath: false }"
                :show-all-levels="false"
                filterable
                clearable
                @change="categoryChange"
                style="width: 100%"
                :disabled="type == 'edit'"
              v-model="formData.baseCategoryId"
              :options="categoryOptions"
              :props="{ value: 'id',emitPath: false }"
              :show-all-levels="false"
              filterable
              clearable
              @change="categoryChange"
              style="width: 100%"
              :disabled="type == 'edit'"
            ></el-cascader>
          </el-form-item>
        </el-col>
@@ -34,19 +34,19 @@
        <el-col :span="12">
          <el-form-item label="物品名称" prop="baseGoodsTemplateId">
            <el-select
                :value="formData.baseGoodsTemplateId"
                :placeholder="formData.baseCategoryId?'请选择物品':'请先选择物品分类'"
                filterable
                clearable
                :disabled="!formData.baseCategoryId || type == 'edit'"
                @change="goodsTemplateChange"
                style="width: 100%"
              :value="formData.baseGoodsTemplateId"
              :placeholder="formData.baseCategoryId?'请选择物品':'请先选择物品分类'"
              filterable
              clearable
              :disabled="!formData.baseCategoryId || type == 'edit'"
              @change="goodsTemplateChange"
              style="width: 100%"
            >
              <el-option
                  v-for="item in goodsTemplatelOptions"
                  :key="item.id"
                  :label="item.goodsName"
                  :value="item.id"
                v-for="item in goodsTemplatelOptions"
                :key="item.id"
                :label="item.goodsName"
                :value="item.id"
              />
            </el-select>
          </el-form-item>
@@ -54,22 +54,22 @@
        <el-col :span="12">
          <el-form-item label="规格型号" prop="modelsIds">
            <el-select
                v-model="formData.modelsIds"
                multiple
                clearable
                :disabled="!formData.baseGoodsTemplateId || type == 'edit'"
                :placeholder="formData.baseCategoryId?'请选择规格型号':'请先选择物品名称'"
                @change="modelChange"
                @remove-tag="modelRemoveTag"
                @clear="modelRemoveTag(-1)"
                style="width: 100%"
              v-model="formData.modelsIds"
              multiple
              clearable
              :disabled="!formData.baseGoodsTemplateId || type == 'edit'"
              :placeholder="formData.baseCategoryId?'请选择规格型号':'请先选择物品名称'"
              @change="modelChange"
              @remove-tag="modelRemoveTag"
              @clear="modelRemoveTag(-1)"
              style="width: 100%"
            >
              <el-option v-for="item in modelsOptions" :key="item.id" :label="item.modelName" :value="item.id"/>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row v-if="type == 'edit'">
      <el-row v-if="type === 'edit'">
        <el-col :span="12">
          <el-form-item label="保底库存" prop="lowerLimit">
            <el-input placeholder="请输入" v-model.number="formData.lowerLimit"></el-input>
@@ -81,36 +81,36 @@
          </el-form-item>
        </el-col>
      </el-row>
      <el-table v-if="type != 'edit'" :data="formData.models" :stripe="true">
      <el-table v-else :data="formData.models" :stripe="true">
        <el-table-column prop="baseGoodsModelsId" label="规格型号" align="center">
          <template slot-scope="scope">
            {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }}
          </template>
        </el-table-column>
        <el-table-column prop="lowerLimit" label="保底库存" align="center">
          <template slot-scope="scope">
          <template slot-scope="{row,$index}">
            <el-form-item
                v-if="scope.row.lowerLimit || scope.row.upperLimit"
                label-width="0"
                :prop="`models[${scope.$index}].lowerLimit`"
                :rules="rules.lowerLimit"
              label-width="0"
              :prop="`models.${$index}.lowerLimit`"
              :rules="[
                  {validator: checkCounts,type: 1, lowerLimit: row.lowerLimit,upperLimit: row.upperLimit, trigger: ['blur', 'change']}
                ]"
            >
              <el-input v-model.number="scope.row.lowerLimit"></el-input>
              <el-input v-model.number="row.lowerLimit"></el-input>
            </el-form-item>
            <el-input v-else v-model.number="scope.row.lowerLimit" style="margin-bottom: 18px;"></el-input>
          </template>
        </el-table-column>
        <el-table-column prop="upperLimit" label="封顶库存" align="center">
          <template slot-scope="scope">
          <template slot-scope="{row,$index}">
            <el-form-item
                v-if="scope.row.lowerLimit || scope.row.upperLimit"
                label-width="0"
                :prop="`models[${scope.$index}].upperLimit`"
                :rules="rules.upperLimit"
              label-width="0"
              :prop="`models.${$index}.upperLimit`"
              :rules="[
                  {validator: checkCounts,type: 2, lowerLimit: row.lowerLimit,upperLimit: row.upperLimit, trigger: ['blur', 'change']}
                ]"
            >
              <el-input v-model.number="scope.row.upperLimit"></el-input>
              <el-input v-model.number="row.upperLimit"></el-input>
            </el-form-item>
            <el-input v-else v-model.number="scope.row.upperLimit" style="margin-bottom: 18px;"></el-input>
          </template>
        </el-table-column>
      </el-table>
@@ -147,6 +147,22 @@
  },
  data() {
    return {
      checkCounts: (rule, value, callback) => {
        let val = rule.type === 1 ? rule.lowerLimit : rule.upperLimit
        if (!val) {
          return callback(new Error(rule.type === 1 ? '请输入保底数量' : '请输入封顶数量'));
        }
        if (!Number.isInteger(val)) {
          return callback(new Error('请输入数字值'));
        }
        if (val < 1) {
          return callback(new Error('数字值必须大于0'));
        }
        if (rule.lowerLimit && rule.upperLimit && rule.lowerLimit >= rule.upperLimit) {
          return callback(new Error(rule.type === 1 ? '保底库存必须小于封顶库存' : '封顶库存必须大于保底库存'));
        }
        callback();
      },
      loading: true,
      type: '',
      warehouses: [], // 入库仓库列表
@@ -192,16 +208,15 @@
      if (this.setting.id) {
        this.type = 'edit';
        const detail = await warningConfigGetById({id: this.setting.id});
        this.formData = Object.assign({}, detail);
        // 分类反显
        let res = await queryGoodsModelInfo({baseGoodsModelsId: this.formData.baseGoodsModelsId});
        this.formData.baseCategoryId = res[0].categoryId;
        this.formData.baseCategoryIds = findParentIds(this.categoryOptions, this.formData.baseCategoryId);
        let res = await queryGoodsModelInfo({baseGoodsModelsId: detail.baseGoodsModelsId});
        detail.baseCategoryId = res[0].categoryId
        // 物品名称反显
        this.getgoodsTemplate(this.formData.baseCategoryId);
        this.getgoodsTemplate(detail.baseCategoryId);
        // 规格型号反显
        this.getgoodsModel(this.formData.baseGoodsTemplateId);
        this.formData.modelsIds = [this.formData.baseGoodsModelsId];
        this.getgoodsModel(detail.baseGoodsTemplateId);
        this.formData = Object.assign({}, detail);
        this.formData.modelsIds = [detail.baseGoodsModelsId];
        this.getWarehouseList();
      }
      this.loading = false
@@ -209,16 +224,16 @@
    // 获取入库仓库列表
    getWarehouseList() {
      selectTenantWarehouse({agencyId: this.userInfo.tenantId})
          .then((res) => {
            this.warehouses = res;
            if (this.warehouses.length && !this.formData.baseWarehouseId) {
              // 默认选中第一个仓库
              this.formData.baseWarehouseId = this.warehouses[0].id;
            }
          })
          .catch((err) => {
            console.log('err', err);
          });
        .then((res) => {
          this.warehouses = res;
          if (this.warehouses.length && !this.formData.baseWarehouseId) {
            // 默认选中第一个仓库
            this.formData.baseWarehouseId = this.warehouses[0].id;
          }
        })
        .catch((err) => {
          console.log('err', err);
        });
    },
    getCategoryTree() {