|
@@ -77,6 +77,7 @@
|
|
|
1.元素名称不能为空<br />
|
|
|
2.数据类型不能为空<br />
|
|
|
3.元素长度不能为空<br />
|
|
|
+ 4.编辑元素信息请谨慎操作<br />
|
|
|
</div>
|
|
|
</template>
|
|
|
<el-button
|
|
@@ -89,16 +90,33 @@
|
|
|
</el-button>
|
|
|
</el-tooltip>
|
|
|
</template>
|
|
|
- <template #extra v-if="!tableId">
|
|
|
+
|
|
|
+ <template #extra>
|
|
|
<el-button size="small" type="success" @click="addRowClick"
|
|
|
>新增</el-button
|
|
|
>
|
|
|
- <el-button size="small" type="primary" @click="uploadClick"
|
|
|
+ <el-button
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ @click="uploadClick"
|
|
|
+ v-if="!tableId"
|
|
|
>快捷导入</el-button
|
|
|
>
|
|
|
- <el-button size="small" type="warning">下载导入模板</el-button>
|
|
|
+ <el-button
|
|
|
+ size="small"
|
|
|
+ type="warning"
|
|
|
+ v-if="!tableId"
|
|
|
+ @click="downLoadFile"
|
|
|
+ :loading="downloadLoading"
|
|
|
+ >下载导入模板</el-button
|
|
|
+ >
|
|
|
</template>
|
|
|
-
|
|
|
+ <hc-search-input
|
|
|
+ v-model="queryValue"
|
|
|
+ @search="getEditEleList"
|
|
|
+ class="w-100 mb-4"
|
|
|
+ v-if="tableId"
|
|
|
+ />
|
|
|
<hc-table :column="tableColumn" :datas="editEleList">
|
|
|
<template #eName="{ row }">
|
|
|
<hc-table-input v-model="row.eName" />
|
|
@@ -145,10 +163,38 @@
|
|
|
<template #eInspectionMethod="{ row }">
|
|
|
<hc-table-input v-model="row.eInspectionMethod" />
|
|
|
</template>
|
|
|
+ <template #dynamicDict="{ row }" v-if="tableId">
|
|
|
+ <el-select v-model="row.dynamicDict" placeholder="请选择">
|
|
|
+ <el-option
|
|
|
+ v-for="item in dynamicDictList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
<template #action="{ row, index }">
|
|
|
- <el-link type="danger" @click="rowDelClick(row, index)"
|
|
|
+ <el-link
|
|
|
+ type="danger"
|
|
|
+ @click="rowDelClick(row, index)"
|
|
|
+ v-if="row.id"
|
|
|
>删除</el-link
|
|
|
>
|
|
|
+ <div v-else>
|
|
|
+ <el-link
|
|
|
+ v-if="tableId"
|
|
|
+ type="primary"
|
|
|
+ @click="addSaveClick(row, index)"
|
|
|
+ :loading="addSaveLoading"
|
|
|
+ >保存</el-link
|
|
|
+ >
|
|
|
+ <el-link
|
|
|
+ type="danger"
|
|
|
+ @click="rowDelClick(row, index)"
|
|
|
+ :loading="rowDelLoading"
|
|
|
+ >删除</el-link
|
|
|
+ >
|
|
|
+ </div>
|
|
|
</template>
|
|
|
</hc-table>
|
|
|
</hc-card-item>
|
|
@@ -210,7 +256,7 @@ import { ref, watch } from "vue";
|
|
|
import { getDictionaryData } from "~src/utils/tools";
|
|
|
import mainApi from "~api/wbs/wbsforelement";
|
|
|
import { useAppStore } from "~src/store";
|
|
|
-import { HcUploadFileApi } from "hc-vue3-ui";
|
|
|
+import { HcUploadFileApi, HcDelMsg } from "hc-vue3-ui";
|
|
|
import { formValidate, getArrValue, downloadBlob, type } from "js-fast-way";
|
|
|
const store = useAppStore();
|
|
|
const userInfo = ref(store.getUserInfo);
|
|
@@ -239,6 +285,19 @@ const props = defineProps({
|
|
|
type: String,
|
|
|
default: "",
|
|
|
},
|
|
|
+ initTableName: {
|
|
|
+ type: String,
|
|
|
+ default: "",
|
|
|
+ },
|
|
|
+
|
|
|
+ initTableId: {
|
|
|
+ type: String,
|
|
|
+ default: "",
|
|
|
+ },
|
|
|
+ eKey: {
|
|
|
+ type: String,
|
|
|
+ default: "",
|
|
|
+ },
|
|
|
});
|
|
|
//事件
|
|
|
const emit = defineEmits(["close"]);
|
|
@@ -251,6 +310,7 @@ const isShow = defineModel("modelValue", {
|
|
|
watch(isShow, (val) => {
|
|
|
if (val) {
|
|
|
getDataTypelist();
|
|
|
+ getDynamicDictList();
|
|
|
} else {
|
|
|
emit("close");
|
|
|
}
|
|
@@ -262,6 +322,9 @@ const wbsId = ref(props.wid);
|
|
|
const node = ref(props.node);
|
|
|
const modelTitle = ref(props.title);
|
|
|
const tableId = ref(props.tableId);
|
|
|
+const initTableName = ref(props.initTableName);
|
|
|
+const initTableId = ref(props.initTableId);
|
|
|
+const eKey = ref(props.eKey);
|
|
|
//监听数据
|
|
|
watch(
|
|
|
() => [
|
|
@@ -271,29 +334,52 @@ watch(
|
|
|
props.node,
|
|
|
props.title,
|
|
|
props.tableId,
|
|
|
+ props.initTableName,
|
|
|
+ props.initTableId,
|
|
|
+ props.eKey,
|
|
|
],
|
|
|
- ([own, table, wbsid, nodeInfo, til, tid]) => {
|
|
|
+ ([own, table, wbsid, nodeInfo, til, tid, tname, itid, ekey]) => {
|
|
|
ownerTypeList.value = own;
|
|
|
tableTypelist.value = table;
|
|
|
wbsId.value = wbsid;
|
|
|
node.value = nodeInfo;
|
|
|
modelTitle.value = til;
|
|
|
tableId.value = tid;
|
|
|
+ initTableName.value = tname;
|
|
|
+ initTableId.value = itid;
|
|
|
+ eKey.value = ekey;
|
|
|
},
|
|
|
{ deep: true }
|
|
|
);
|
|
|
watch(
|
|
|
tableId,
|
|
|
(val) => {
|
|
|
+ console.log(val, "val11111111");
|
|
|
+
|
|
|
if (val) {
|
|
|
getEditEleList();
|
|
|
+ tableColumn.value = [
|
|
|
+ { key: "eName", name: "元素名称", width: 150 },
|
|
|
+ { key: "eType", name: "数据类型", width: 120 },
|
|
|
+ { key: "eLength", name: "长度" },
|
|
|
+ { key: "eAllowDeviation", name: "允许偏差值", width: 180 },
|
|
|
+ { key: "eInspectionMethod", name: "检查方法和频率" },
|
|
|
+ { key: "dynamicDict", name: "动态字典" },
|
|
|
+ { key: "action", name: "操作", width: 80, align: "center" },
|
|
|
+ ];
|
|
|
} else {
|
|
|
editEleList.value = [];
|
|
|
+ tableColumn.value = [
|
|
|
+ { key: "eName", name: "元素名称", width: 150 },
|
|
|
+ { key: "eType", name: "数据类型", width: 120 },
|
|
|
+ { key: "eLength", name: "长度" },
|
|
|
+ { key: "eAllowDeviation", name: "允许偏差值", width: 180 },
|
|
|
+ { key: "eInspectionMethod", name: "检查方法和频率" },
|
|
|
+ { key: "action", name: "操作", width: 80, align: "center" },
|
|
|
+ ];
|
|
|
}
|
|
|
},
|
|
|
- {
|
|
|
- deep: true,
|
|
|
- }
|
|
|
+ { deep: true }
|
|
|
);
|
|
|
//表单
|
|
|
const formRef = ref(null);
|
|
@@ -319,18 +405,19 @@ const formRules = {
|
|
|
},
|
|
|
};
|
|
|
|
|
|
-const curEleTable = ref({});
|
|
|
const formModel = ref({});
|
|
|
const editVisible = ref(false);
|
|
|
-const tableColumn = [
|
|
|
+const tableColumn = ref([
|
|
|
{ key: "eName", name: "元素名称", width: 150 },
|
|
|
{ key: "eType", name: "数据类型", width: 120 },
|
|
|
{ key: "eLength", name: "长度" },
|
|
|
{ key: "eAllowDeviation", name: "允许偏差值", width: 180 },
|
|
|
{ key: "eInspectionMethod", name: "检查方法和频率" },
|
|
|
{ key: "action", name: "操作", width: 80, align: "center" },
|
|
|
-];
|
|
|
+]);
|
|
|
const editEleList = ref([]);
|
|
|
+const queryValue = ref("");
|
|
|
+
|
|
|
const getEditEleList = async () => {
|
|
|
const { data } = await mainApi.getTableElements({
|
|
|
id: tableId.value,
|
|
@@ -338,6 +425,12 @@ const getEditEleList = async () => {
|
|
|
type: 1,
|
|
|
});
|
|
|
editEleList.value = getArrValue(data);
|
|
|
+ const eleReg = /(-|>|<|≥|≤|±|【】)?([^≥≤±【】]*)/;
|
|
|
+ editEleList.value.forEach((element) => {
|
|
|
+ eleReg.exec(element.eAllowDeviation);
|
|
|
+ element.allow = RegExp.$1 ? RegExp.$1 : "";
|
|
|
+ element.deviation = RegExp.$2 ? RegExp.$2 : "";
|
|
|
+ });
|
|
|
};
|
|
|
const dataTypeList = ref([]);
|
|
|
const getDataTypelist = async () => {
|
|
@@ -346,6 +439,13 @@ const getDataTypelist = async () => {
|
|
|
}
|
|
|
dataTypeList.value = await getDictionaryData("data_type", false);
|
|
|
};
|
|
|
+const dynamicDictList = ref([]); //动态字典列表
|
|
|
+const getDynamicDictList = async () => {
|
|
|
+ if (dynamicDictList.value.length > 1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ dynamicDictList.value = await getDictionaryData("land_field_dict", false);
|
|
|
+};
|
|
|
const setDefaultLength = (row) => {
|
|
|
const dataTypeDefaultMap = {
|
|
|
1: 250, //字符串
|
|
@@ -358,17 +458,64 @@ const setDefaultLength = (row) => {
|
|
|
};
|
|
|
row.eLength = dataTypeDefaultMap[row.eType];
|
|
|
};
|
|
|
-const rowDelClick = (row, index) => {
|
|
|
- editEleList.value.splice(index, 1);
|
|
|
+const rowDelLoading = ref(false);
|
|
|
+const rowDelClick = async (row, index) => {
|
|
|
+ if (!row.id) {
|
|
|
+ editEleList.value.splice(index, 1);
|
|
|
+ } else {
|
|
|
+ HcDelMsg(async (resolve) => {
|
|
|
+ //发起请求
|
|
|
+ rowDelLoading.value = true;
|
|
|
+ const { isRes } = await mainApi.removeElement({
|
|
|
+ ids: row.id,
|
|
|
+ initTableName: initTableName.value,
|
|
|
+ eKey: row.ekey,
|
|
|
+ });
|
|
|
+ resolve(); //关闭弹窗
|
|
|
+ if (!isRes) return;
|
|
|
+ window?.$message?.success("操作成功");
|
|
|
+ });
|
|
|
+ }
|
|
|
};
|
|
|
const addRowClick = () => {
|
|
|
editEleList.value.push({});
|
|
|
};
|
|
|
+const addSaveLoading = ref(false);
|
|
|
+const addSaveClick = async (row) => {
|
|
|
+ if (!row.eName) {
|
|
|
+ window.$message.warning("请填写元素名称");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!row.eType) {
|
|
|
+ window.$message.warning("请选择数据类型");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ row.eAllowDeviation =
|
|
|
+ (row.allow ? row.allow : "") + (row.deviation ? row.deviation : "");
|
|
|
+ row.fId = initTableId.value;
|
|
|
+ row.initTableName = initTableName.value;
|
|
|
+ if (!row.eLength) {
|
|
|
+ window.$message.warning("请填写长度");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ addSaveLoading.value = true;
|
|
|
+ const { error, code, data } = await mainApi.saveElement(row);
|
|
|
+ addSaveLoading.value = false;
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window?.$message?.success("操作成功");
|
|
|
+ row.id = data.id;
|
|
|
+ row.ekey = data.ekey;
|
|
|
+ }
|
|
|
+};
|
|
|
const submitLoading = ref(false);
|
|
|
|
|
|
const saveFormAndElementHandle = async () => {
|
|
|
- const formRes = await formValidate(formRef.value);
|
|
|
- if (!formRes) return false;
|
|
|
+ if (!tableId.value) {
|
|
|
+ const formRes = await formValidate(formRef.value);
|
|
|
+ if (!formRes) return false;
|
|
|
+ }
|
|
|
+
|
|
|
formModel.value.wbsId = wbsId.value;
|
|
|
formModel.value.tenantId = userInfo.value.tenant_id;
|
|
|
formModel.value.nodeType = -1;
|
|
@@ -376,6 +523,13 @@ const saveFormAndElementHandle = async () => {
|
|
|
formModel.value.parentId = node.value.id;
|
|
|
formModel.value.nodeName = node.value.nodeName;
|
|
|
for (let i = 0; i < editEleList.value.length; i++) {
|
|
|
+ if (tableId.value) {
|
|
|
+ if (!editEleList.value[i].eName.id) {
|
|
|
+ window.$message.warning("请先将新增的元素点击保存");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (!editEleList.value[i].eName) {
|
|
|
window.$message.warning("请填写第" + (i + 1) + "条元素名称");
|
|
|
return;
|
|
@@ -397,13 +551,26 @@ const saveFormAndElementHandle = async () => {
|
|
|
});
|
|
|
submitLoading.value = true;
|
|
|
formModel.value.elementList = editEleList;
|
|
|
- const { error, code } = await mainApi.saveFormAndElement({
|
|
|
- ...formModel.value,
|
|
|
- });
|
|
|
- submitLoading.value = false;
|
|
|
- if (!error && code === 200) {
|
|
|
- window?.$message?.success("操作成功");
|
|
|
- dialogClose();
|
|
|
+
|
|
|
+ if (!tableId.value) {
|
|
|
+ const { error, code } = await mainApi.saveFormAndElement({
|
|
|
+ ...formModel.value,
|
|
|
+ });
|
|
|
+ submitLoading.value = false;
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window?.$message?.success("操作成功");
|
|
|
+ dialogClose();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const { error, code } = await mainApi.updateBatchElements(
|
|
|
+ editEleList.value,
|
|
|
+ initTableName.value
|
|
|
+ );
|
|
|
+ submitLoading.value = false;
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window?.$message?.success("操作成功");
|
|
|
+ dialogClose();
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
window.$message.warning("请填写完整元素表信息");
|