WangHan
2024-12-19 ed6c6350015d52ea1cb033c7558f72b721ece84a
admin-web/src/views/stock/procure/purchaseOrder/edit.vue
@@ -5,7 +5,7 @@
        <el-row :gutter="24" class="headerHeight">
          <el-col :span="12">
            <el-form-item label="入库仓库" prop="warehouseId">
              <el-select v-model="formData.warehouseId" placeholder="请选择" style="width: 100%">
              <el-select v-model="formData.warehouseId" placeholder="请选择" clearable style="width: 100%">
                <el-option v-for="item in warehouses" :key="item.id" :label="item.warehouseName" :value="item.id"/>
              </el-select>
            </el-form-item>
@@ -15,6 +15,7 @@
              <el-date-picker
                  v-model="formData.procureTime"
                  type="datetime"
                  clearable
                  value="yyyy-MM-dd HH:mm:ss"
                  value-format="yyyyMMddHHmmss"
                  placeholder="请选择日期"
@@ -45,17 +46,20 @@
            <el-col :span="12">
              <el-form-item
                  label="物品分类"
                  :prop="`procureGoods[${goodsIndex}].baseCategoryIds`"
                  :prop="`procureGoods.${goodsIndex}.baseCategoryId`"
                  :rules="{
                  required: true,
                  message: '请选择',
                  message: '请选择物品分类',
                  trigger: 'change',
                }"
              >
                <el-cascader
                    v-model="goodsItem.baseCategoryIds"
                    v-model="goodsItem.baseCategoryId"
                    :options="categoryOptions"
                    :props="{ value: 'id' }"
                    :props="{ value: 'id',emitPath: false }"
                    :show-all-levels="false"
                    filterable
                    clearable
                    @change="categoryChange($event, goodsIndex)"
                    style="width: 100%"
                ></el-cascader>
@@ -64,13 +68,14 @@
            <el-col :span="12">
              <el-form-item
                  label="物品名称"
                  :prop="`procureGoods[${goodsIndex}].baseGoodsTemplateId`"
                  :prop="`procureGoods.${goodsIndex}.baseGoodsTemplateId`"
                  :rules="rules.baseGoodsTemplateId"
              >
                <el-select
                    v-model="goodsItem.baseGoodsTemplateId"
                    placeholder="请先择物品分类"
                    :placeholder="goodsItem.baseCategoryId?'请选择物品':'请先选择物品分类'"
                    filterable
                    clearable
                    :disabled="!goodsItem.baseCategoryId"
                    style="width: 100%"
                    @change="goodsTemplateChange($event, goodsIndex)"
@@ -89,20 +94,22 @@
            <el-col :span="12">
              <el-form-item
                  label="规格型号"
                  :prop="`procureGoods[${goodsIndex}].modelsIds`"
                  :prop="`procureGoods.${goodsIndex}.modelsIds`"
                  :rules="{
                  required: true,
                  message: '请选择',
                  message: '请选择规格型号',
                  trigger: 'change',
                }"
              >
                <el-select
                    v-model="goodsItem.modelsIds"
                    multiple
                    placeholder="请先择物品名称"
                    :disabled="!goodsItem.baseCategoryId"
                    clearable
                    :placeholder="goodsItem.baseGoodsTemplateId?'请选择规格型号':'请先选择物品名称'"
                    :disabled="!goodsItem.baseGoodsTemplateId"
                    @change="modelChange($event, goodsIndex)"
                    @remove-tag="modelRemoveTag($event, goodsIndex)"
                    @clear="modelRemoveTag(-1, goodsIndex)"
                    style="width: 100%"
                >
                  <el-option
@@ -207,6 +214,7 @@
import {getUploadUrl} from '@/utils/base';
import {findParentIds} from '@/utils/index';
import {mapGetters} from 'vuex';
import * as DateFormatter from "@/utils/DateFormatter";
export default {
  components: {MyButton, winMd, upload},
@@ -275,7 +283,7 @@
      formData: {
        procureDoc: '',
        warehouseId: '', // 入库仓库id
        procureTime: '', // 采购时间
        procureTime: DateFormatter.formatDate(new Date(), 'yyyyMMddhhmmss'), // 采购时间
        buyType: '2', // 采购方式(1:集采;2=自采)
        procureGoods: [],
      },
@@ -305,7 +313,7 @@
        procureDoc: [{required: true, message: '请上传', trigger: 'change'}],
        baseCategoryIds: [{required: true, message: '请选择', trigger: 'change'}],
        baseGoodsTemplateId: [{validator: checkGoodsTemplateId, trigger: ['blur', 'change']}],
        baseGoodsTemplateId: [{required: true, message: '请选择', trigger: 'change'},{validator: checkGoodsTemplateId, trigger: ['blur', 'change']}],
        modelsIds: [{required: true, message: '请选择', trigger: 'change'}],
        priceYuan: [{validator: checkPrice, trigger: 'blur'}],
        counts: [{validator: checkCounts, trigger: 'blur'}],
@@ -318,8 +326,6 @@
        tip: '', // 提示 默认:`只能上传${this.defaultSettings.num}个${this.defaultSettings.accept}文件,且不超过${this.defaultSettings.max}kb`
        uploadUrl: getUploadUrl(), // 上传路径
        multiple: true, // 是否支持批量上传
        disabled: false, // 是否禁用
        type: 'picture', // text/picture
      },
    };
  },
@@ -332,6 +338,8 @@
  methods: {
    async init() {
      await this.getWarehouseList();
      await this.getgoodsTemplate();
      await this.getgoodsModel();
      // 获取物品分类列表
      const treeRes = await getTree();
@@ -359,9 +367,6 @@
          });
          return item;
        });
      } else {
        await this.getgoodsTemplate();
        await this.getgoodsModel();
      }
      this.loading = false;
    },
@@ -397,7 +402,7 @@
    // 获取物品名称列表
    async getgoodsTemplate(id, index) {
      await goodsTemplate({categoryId: id || ''}).then((res) => {
      await goodsTemplate({agencyId: this.userInfo.tenantId, categoryId: id || ''}).then((res) => {
        if (index || index == 0) {
          this.$set(this.formData.procureGoods[index], 'goodsOptions', res);
        } else {
@@ -444,9 +449,8 @@
      this.formData.procureGoods[index].modelsIds = [];
      this.formData.procureGoods[index].models = [];
      this.formData.procureGoods[index].baseCategoryId = e[e.length - 1];
      // 根据选中分类请求物品名称列表
      this.getgoodsTemplate(e[e.length - 1], index);
      this.getgoodsTemplate(e, index);
    },
    // 物品名称列表
@@ -475,6 +479,10 @@
    // 规格型号移除
    modelRemoveTag(e, index) {
      if(e===-1){
        this.formData.procureGoods[index].models = []
        return
      }
      let arr = this.formData.procureGoods[index].models;
      let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e);
      this.formData.procureGoods[index].models.splice(delIndex, 1);