zhangwencui
6 小时以前 e545f964005b0c80b29a4417ca8275570778ac75
src/views/basicData/parameterMaintenance/index.vue
@@ -3,14 +3,14 @@
    <div class="search_form">
      <div>
        <span class="search_title ml10">参数名称:</span>
        <el-input v-model="searchForm.materialCode"
        <el-input v-model="searchForm.paramName"
                  style="width: 200px"
                  placeholder="请输入参数名称"
                  clearable />
        <!-- 关联产品类型搜索 -->
        <!-- <span class="search_title ml10">关联产品类型:</span>
        <el-input v-model="searchForm.productName"
                  style="width: 200px"
                  style="width: 200px"d
                  placeholder="请输入关联产品类型"
                  clearable /> -->
        <el-button type="primary"
@@ -27,13 +27,14 @@
      </div>
    </div>
    <div class="table_list">
      <PIMTable rowKey="materialCode"
      <PIMTable rowKey="paramName"
                :column="tableColumn"
                :tableData="tableData"
                :page="page"
                height="calc(100vh - 320px)"
                height="calc(100vh - 280px)"
                :tableLoading="tableLoading"
                :isSelection="false"
                :isShowPagination="false"
                @pagination="pagination">
      </PIMTable>
    </div>
@@ -45,102 +46,72 @@
               :rules="rules"
               ref="formRef"
               label-width="120px">
        <el-form-item label="参数编号"
                      prop="parameterCode">
          <el-input v-model="formData.parameterCode"
                    placeholder="请输入参数编号" />
        </el-form-item>
        <el-form-item label="参数名称"
                      prop="parameterName">
          <el-input v-model="formData.parameterName"
                      prop="paramName">
          <el-input v-model="formData.paramName"
                    placeholder="请输入参数名称" />
        </el-form-item>
        <el-form-item label="参数模式"
                      prop="parameterFormat">
          <el-select v-model="formData.parameterType2"
        <el-form-item label="参数类型"
                      prop="paramType">
          <el-select v-model="formData.paramType"
                     placeholder="请选择参数类型">
            <el-option label="数值格式"
                       value="1" />
            <el-option label="文本格式"
                       value="2" />
            <el-option label="下拉选项"
                       value="3" />
            <el-option label="时间格式"
                       value="4" />
          </el-select>
        </el-form-item>
        <el-form-item label="取值模式"
                      prop="valueMode">
          <el-select v-model="formData.valueMode"
                     @change="handleValueModeChange"
                     placeholder="请选择取值模式">
            <el-option label="单值"
                       value="1" />
            <el-option label="区间"
                       value="2" />
          </el-select>
        </el-form-item>
        <el-form-item label="参数类型"
                      prop="parameterType">
          <el-select v-model="formData.parameterType"
                     @change="handleParameterTypeChange"
                     placeholder="请选择参数类型">
            <el-option label="数值格式"
                       value="数值格式" />
            <el-option label="文本格式"
                       value="文本格式" />
            <el-option label="下拉选项"
                       value="下拉选项" />
            <el-option label="时间格式"
                       value="时间格式" />
          </el-select>
        </el-form-item>
        <el-form-item v-if="formData.parameterType === '下拉选项'"
                      label="数据字典"
                      prop="parameterFormat">
          <el-select v-model="formData.parameterFormat"
                     placeholder="请选择数据字典">
            <el-option v-for="item in dictTypes"
                       :key="item.dictType"
                       :label="item.dictName"
                       :value="item.dictType" />
          </el-select>
        </el-form-item>
        <el-form-item v-else-if="formData.parameterType === '时间格式'"
                      label="时间格式"
                      prop="parameterFormat">
          <el-select v-model="formData.parameterFormat"
                     placeholder="请选择时间格式">
            <el-option label="YYYY-MM-DD HH:mm:ss"
                       value="YYYY-MM-DD HH:mm:ss" />
            <el-option label="YYYY-MM-DD"
                       value="YYYY-MM-DD" />
          </el-select>
        </el-form-item>
        <el-form-item v-else
                      label="参数格式"
                      prop="parameterFormat">
          <el-input v-model="formData.parameterFormat"
                    placeholder="请输入参数格式" />
        </el-form-item>
        <!-- 关联产品类型 -->
        <!-- <el-form-item label="关联产品类型"
                      prop="parameterValue">
          <el-select v-model="formData.parameterValue"
                     placeholder="请选择关联产品类型">
            <el-option v-for="item in productTypes"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value" />
          </el-select>
        </el-form-item> -->
        <el-form-item label="标准值"
                      v-if="formData.parameterType2 === '1'"
                      prop="standardValue">
          <el-input v-model="formData.standardValue"
                    placeholder="请输入标准值" />
        </el-form-item>
        <el-form-item label="最大值"
                      v-if="formData.parameterType2 === '2'"
                      prop="standardValue">
          <el-input v-model="formData.standardValue"
                    placeholder="请输入标准值" />
        </el-form-item>
        <el-form-item label="最小值"
                      v-if="formData.parameterType2 === '2'"
                      prop="standardValue">
          <el-input v-model="formData.standardValue"
                    placeholder="请输入标准值" />
        </el-form-item>
        <el-form-item label="单位"
                      prop="unit">
          <el-input v-model="formData.unit"
                    placeholder="请输入单位" />
        </el-form-item>
        <el-form-item label="默认值"
                      v-if="formData.valueMode === '1'"
                      prop="defaultValue">
          <el-input v-model="formData.defaultValue"
                    placeholder="请输入默认值" />
        </el-form-item>
        <el-form-item label="最小值"
                      v-if="formData.valueMode === '2'"
                      prop="defaultMin">
          <el-input v-model="formData.defaultMin"
                    placeholder="请输入最小值" />
        </el-form-item>
        <el-form-item label="最大值"
                      v-if="formData.valueMode === '2'"
                      prop="defaultMax">
          <el-input v-model="formData.defaultMax"
                    placeholder="请输入最大值" />
        </el-form-item>
        <el-form-item label="是否必填"
                      prop="isRequired">
          <el-radio-group v-model="formData.isRequired">
            <el-radio label="1">是</el-radio>
            <el-radio label="0">否</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item label="备注"
                      prop="remark">
          <el-input v-model="formData.remark"
                    type="textarea"
                    :rows="3"
                    placeholder="请输入备注" />
        </el-form-item>
      </el-form>
      <template #footer>
@@ -217,6 +188,10 @@
    addParameter,
    updateParameter,
    delParameter,
    addBaseParam,
    editBaseParam,
    getBaseParamList,
    removeBaseParam,
    // getProductTypes as getProductTypesApi,
  } from "@/api/basicData/parameterMaintenance.js";
  import { listType } from "@/api/system/dict/type";
@@ -225,65 +200,86 @@
  const tableColumn = ref([
    {
      label: "参数编号",
      prop: "parameterCode",
      className: "code-cell",
    },
    {
      label: "参数名称",
      prop: "parameterName",
    },
    {
      label: "参数模式",
      prop: "parameterType2",
      prop: "paramName",
    },
    {
      label: "参数类型",
      prop: "parameterType",
      prop: "paramType",
      dataType: "tag",
      formatType: params => {
        const typeMap = {
          数值格式: "primary",
          文本格式: "info",
          下拉选项: "warning",
          时间格式: "success",
          1: "primary",
          2: "info",
          3: "warning",
          4: "success",
        };
        return typeMap[params] || "default";
      },
    },
    {
      label: "参数格式",
      prop: "parameterFormat",
    },
    // 关联产品类型列
    // {
    //   label: "关联产品类型",
    //   prop: "parameterValue",
    // },
    {
      label: "标准值",
      prop: "standardValue",
      className: row => {
        return row.parameterType == "数值格式" ? "quantity-cell" : "";
      formatData: val => {
        const labelMap = {
          1: "数值格式",
          2: "文本格式",
          3: "下拉选项",
          4: "时间格式",
        };
        return labelMap[val] || val;
      },
    },
    {
      label: "最大值",
      prop: "standardValue",
      className: row => {
        return row.parameterType == "数值格式" ? "quantity-cell" : "";
      label: "取值模式",
      prop: "valueMode",
      dataType: "tag",
      formatType: params => {
        return params === 2 ? "warning" : "success";
      },
    },
    {
      label: "最小值",
      prop: "standardValue",
      className: row => {
        return row.parameterType == "数值格式" ? "quantity-cell" : "";
      formatData: val => {
        return val === 2 ? "区间" : "单值";
      },
    },
    {
      label: "单位",
      prop: "unit",
    },
    {
      label: "默认值",
      prop: "defaultValue",
      formatData: (val, row) => {
        return row.valueMode === 2 ? "-" : val;
      },
    },
    {
      label: "最小值",
      prop: "defaultMin",
      formatData: (val, row) => {
        return row.valueMode === 1 ? "-" : val;
      },
    },
    {
      label: "最大值",
      prop: "defaultMax",
      formatData: (val, row) => {
        return row.valueMode === 1 ? "-" : val;
      },
    },
    {
      label: "是否必填",
      prop: "isRequired",
      dataType: "tag",
      formatType: params => {
        return params === 1 ? "danger" : "info";
      },
      formatData: val => {
        return val === 1 ? "是" : "否";
      },
    },
    {
      label: "备注",
      prop: "remark",
    },
    {
      label: "创建时间",
      prop: "createTime",
    },
    {
      label: "操作",
@@ -312,10 +308,18 @@
    size: 10,
    total: 0,
  });
  const handleValueModeChange = val => {
    if (val === "2") {
      formData.defaultMin = "";
      formData.defaultMax = "";
    } else {
      formData.defaultValue = "";
    }
  };
  // 搜索表单
  const searchForm = reactive({
    materialCode: "",
    paramName: "",
    productName: "",
  });
@@ -324,32 +328,21 @@
  const dialogTitle = ref("");
  const formRef = ref(null);
  const formData = reactive({
    parameterCode: "",
    parameterName: "",
    parameterType2: "1",
    parameterType: "",
    parameterFormat: "",
    // parameterValue: "",
    standardValue: "",
    id: null,
    paramName: "",
    paramType: "",
    valueMode: "1",
    unit: "",
    defaultValue: "",
    defaultMin: "",
    defaultMax: "",
    isRequired: "0",
    remark: "",
  });
  const rules = reactive({
    parameterCode: [
      { required: true, message: "请输入参数编号", trigger: "blur" },
    ],
    parameterName: [
      { required: true, message: "请输入参数名称", trigger: "blur" },
    ],
    parameterType: [
      { required: true, message: "请选择参数类型", trigger: "change" },
    ],
    parameterFormat: [
      { required: true, message: "请选择参数格式", trigger: "change" },
    ],
    // parameterValue: [
    //   { required: true, message: "请选择关联产品类型", trigger: "change" },
    // ],
    standardValue: [{ required: true, message: "请输入标准值", trigger: "blur" }],
    paramName: [{ required: true, message: "请输入参数名称", trigger: "blur" }],
    paramType: [{ required: true, message: "请选择参数类型", trigger: "change" }],
    valueMode: [{ required: true, message: "请选择取值模式", trigger: "change" }],
    unit: [{ required: true, message: "请输入单位", trigger: "blur" }],
  });
  // const productTypes = ref([]);
@@ -449,7 +442,7 @@
  /** 重置按钮操作 */
  const handleReset = () => {
    searchForm.materialCode = "";
    searchForm.paramName = "";
    searchForm.productName = "";
    page.current = 1;
    getList();
@@ -462,80 +455,21 @@
  const getList = () => {
    tableLoading.value = true;
    // 注释掉API调用,使用假数据
    /*const params = { ...searchForm, ...page };
                                                                                              parameterListPage(params)
                                                                                                .then(res => {
                                                                                                  tableLoading.value = false;
                                                                                                  tableData.value = res.data;
                                                                                                  page.total = res.total || 0;
                                                                                                })
                                                                                                .catch(() => {
                                                                                                  tableLoading.value = false;
                                                                                                });*/
    // 假数据
    setTimeout(() => {
      tableLoading.value = false;
      tableData.value = [
        {
          id: 1,
          parameterCode: "PARAM001",
          parameterName: "长度",
          parameterType2: "1",
          parameterType: "数值格式",
          parameterFormat: "",
          parameterValue: "type1",
          standardValue: "100",
          unit: "mm",
        },
        {
          id: 2,
          parameterCode: "PARAM002",
          parameterName: "温度",
          parameterType2: "2",
          parameterType: "数值格式",
          parameterFormat: "",
          parameterValue: "type1",
          standardValue: "25",
          unit: "℃",
        },
        {
          id: 3,
          parameterCode: "PARAM003",
          parameterName: "颜色",
          parameterType2: "1",
          parameterType: "文本格式",
          parameterFormat: "",
          parameterValue: "type2",
          standardValue: "红色",
          unit: "",
        },
        {
          id: 4,
          parameterCode: "PARAM004",
          parameterName: "状态",
          parameterType2: "1",
          parameterType: "下拉选项",
          parameterFormat: "status",
          parameterValue: "type3",
          standardValue: "正常",
          unit: "",
        },
        {
          id: 5,
          parameterCode: "PARAM005",
          parameterName: "创建时间",
          parameterType2: "1",
          parameterType: "时间格式",
          parameterFormat: "YYYY-MM-DD HH:mm:ss",
          parameterValue: "type2",
          standardValue: "2024-01-01 00:00:00",
          unit: "",
        },
      ];
      page.total = 5;
    }, 500);
    // 调用新接口 /baseParam/list
    getBaseParamList({ paramName: searchForm.paramName })
      .then(res => {
        tableLoading.value = false;
        if (res.code === 200) {
          tableData.value = res.data || [];
          page.total = res.data?.length || 0;
        } else {
          ElMessage.error(res.msg || "查询失败");
        }
      })
      .catch(() => {
        tableLoading.value = false;
        ElMessage.error("查询失败");
      });
  };
  // 获取产品类型列表 - 已注释
@@ -552,14 +486,16 @@
    isEdit.value = false;
    dialogTitle.value = "新增参数";
    // 重置表单
    formData.parameterCode = "";
    formData.parameterName = "";
    formData.parameterType2 = "1";
    formData.parameterType = "";
    formData.parameterFormat = "";
    // formData.parameterValue = "";
    formData.standardValue = "";
    formData.id = null;
    formData.paramName = "";
    formData.paramType = "";
    formData.valueMode = "1";
    formData.unit = "";
    formData.defaultValue = "";
    formData.defaultMin = "";
    formData.defaultMax = "";
    formData.isRequired = "0";
    formData.remark = "";
    dialogVisible.value = true;
  };
@@ -567,15 +503,22 @@
  const handleEdit = row => {
    isEdit.value = true;
    dialogTitle.value = "编辑参数";
    // 填充表单数据
    formData.parameterCode = row.parameterCode;
    formData.parameterName = row.parameterName;
    formData.parameterType2 = row.parameterType2 || "1";
    formData.parameterType = row.parameterType;
    formData.parameterFormat = row.parameterFormat;
    // formData.parameterValue = row.parameterValue;
    formData.standardValue = row.standardValue;
    formData.unit = row.unit;
    // 填充表单数据 - 将数字类型转换为字符串类型以匹配表单绑定
    formData.id = row.id;
    formData.paramName = row.paramName || "";
    formData.paramType = row.paramType !== undefined ? String(row.paramType) : "";
    formData.valueMode =
      row.valueMode !== undefined ? String(row.valueMode) : "1";
    formData.unit = row.unit || "";
    formData.defaultValue =
      row.defaultValue !== undefined ? String(row.defaultValue) : "";
    formData.defaultMin =
      row.defaultMin !== undefined ? String(row.defaultMin) : "";
    formData.defaultMax =
      row.defaultMax !== undefined ? String(row.defaultMax) : "";
    formData.isRequired =
      row.isRequired !== undefined ? String(row.isRequired) : "0";
    formData.remark = row.remark || "";
    dialogVisible.value = true;
  };
@@ -587,19 +530,15 @@
      type: "warning",
    })
      .then(() => {
        // 注释掉API调用,使用假数据
        /*delParameter(row.id)
                                                                                                .then(res => {
                                                                                                  ElMessage.success("删除成功");
                                                                                                  getList();
                                                                                                })
                                                                                                .catch(() => {
                                                                                                  ElMessage.error("删除失败");
                                                                                                });*/
        // 假数据模拟
        ElMessage.success("删除成功");
        getList();
        // 调用新接口 /baseParam/remove/{id}
        removeBaseParam(row.id)
          .then(res => {
            ElMessage.success("删除成功");
            getList();
          })
          .catch(() => {
            ElMessage.error("删除失败");
          });
      })
      .catch(() => {
        // 取消删除
@@ -610,22 +549,29 @@
  const handleSubmit = () => {
    formRef.value.validate(valid => {
      if (valid) {
        // 注释掉API调用,使用假数据
        /*const api = isEdit.value ? updateParameter : addParameter;
                                                                                                api(formData)
                                                                                                  .then(res => {
                                                                                                    ElMessage.success(isEdit.value ? "编辑成功" : "新增成功");
                                                                                                    dialogVisible.value = false;
                                                                                                    getList();
                                                                                                  })
                                                                                                  .catch(() => {
                                                                                                    ElMessage.error(isEdit.value ? "编辑失败" : "新增失败");
                                                                                                  });*/
        // 假数据模拟
        ElMessage.success(isEdit.value ? "编辑成功" : "新增成功");
        dialogVisible.value = false;
        getList();
        if (isEdit.value) {
          // 编辑使用新接口 /baseParam/edit
          editBaseParam(formData)
            .then(res => {
              ElMessage.success("编辑成功");
              dialogVisible.value = false;
              getList();
            })
            .catch(() => {
              // ElMessage.error("编辑失败");
            });
        } else {
          // 新增使用新接口 /baseParam/add
          addBaseParam(formData)
            .then(res => {
              ElMessage.success("新增成功");
              dialogVisible.value = false;
              getList();
            })
            .catch(() => {
              ElMessage.error("新增失败");
            });
        }
      } else {
        return false;
      }