|
@@ -4,7 +4,9 @@
|
|
|
is-footer-center
|
|
|
title="创建新的元素表"
|
|
|
@close="dialogClose"
|
|
|
- widths="1200px"
|
|
|
+ @save="saveFormAndElementHandle"
|
|
|
+ widths="56rem"
|
|
|
+ :loading="submitLoading"
|
|
|
>
|
|
|
<el-form
|
|
|
ref="formRef"
|
|
@@ -15,7 +17,7 @@
|
|
|
>
|
|
|
<el-row :gutter="60">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="表名">
|
|
|
+ <el-form-item label="表名" prop="tableName">
|
|
|
<el-input v-model="formModel.tableName" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
@@ -64,14 +66,37 @@
|
|
|
</el-form>
|
|
|
<hc-card-item>
|
|
|
<template #header>
|
|
|
- <div class="text-sm text-red">编辑元素信息(请谨慎操作)</div>
|
|
|
+ <el-tooltip
|
|
|
+ :visible="editVisible"
|
|
|
+ effect="light"
|
|
|
+ placement="bottom-start"
|
|
|
+ >
|
|
|
+ <template #content>
|
|
|
+ <div class="text-sm text-red">
|
|
|
+ 1.元素名称不能为空<br />
|
|
|
+ 2.数据类型不能为空<br />
|
|
|
+ 3.元素长度不能为空<br />
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-button
|
|
|
+ type="danger"
|
|
|
+ @mouseenter="editVisible = true"
|
|
|
+ @mouseleave="editVisible = false"
|
|
|
+ >
|
|
|
+ <HcIcon name="question" />
|
|
|
+ <span>编辑说明</span>
|
|
|
+ </el-button>
|
|
|
+ </el-tooltip>
|
|
|
</template>
|
|
|
<template #extra>
|
|
|
+ <el-button size="small" type="success" @click="addRowClick"
|
|
|
+ >新增</el-button
|
|
|
+ >
|
|
|
<el-button size="small" type="primary">快捷导入</el-button>
|
|
|
<el-button size="small" type="warning">下载导入模板</el-button>
|
|
|
</template>
|
|
|
|
|
|
- <hc-table :column="tableColumn" :datas="tableData">
|
|
|
+ <hc-table :column="tableColumn" :datas="editEleList">
|
|
|
<template #eName="{ row }">
|
|
|
<hc-table-input v-model="row.eName" />
|
|
|
</template>
|
|
@@ -84,8 +109,8 @@
|
|
|
<el-option
|
|
|
v-for="item in dataTypeList"
|
|
|
:key="item.id"
|
|
|
- :label="item.dictValue"
|
|
|
- :value="item.dictKey"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
></el-option>
|
|
|
</el-select>
|
|
|
</template>
|
|
@@ -117,12 +142,29 @@
|
|
|
<template #eInspectionMethod="{ row }">
|
|
|
<hc-table-input v-model="row.eInspectionMethod" />
|
|
|
</template>
|
|
|
+ <template #action="{ row, index }">
|
|
|
+ <el-link type="danger" @click="rowDelClick(row, index)"
|
|
|
+ >删除</el-link
|
|
|
+ >
|
|
|
+ </template>
|
|
|
</hc-table>
|
|
|
</hc-card-item>
|
|
|
</hc-dialog>
|
|
|
</template>
|
|
|
<script setup>
|
|
|
import { ref, watch } from "vue";
|
|
|
+import { getDictionaryData, getDictionaryName } from "~src/utils/tools";
|
|
|
+import mainApi from "~api/wbs/wbsforelement";
|
|
|
+import { useAppStore } from "~src/store";
|
|
|
+import {
|
|
|
+ deepClone,
|
|
|
+ formValidate,
|
|
|
+ getArrValue,
|
|
|
+ isNullES,
|
|
|
+ getObjValue,
|
|
|
+} from "js-fast-way";
|
|
|
+const store = useAppStore();
|
|
|
+const userInfo = ref(store.getUserInfo);
|
|
|
const props = defineProps({
|
|
|
ownerTypeList: {
|
|
|
type: Array,
|
|
@@ -132,6 +174,14 @@ const props = defineProps({
|
|
|
type: Array,
|
|
|
default: () => [],
|
|
|
},
|
|
|
+ wid: {
|
|
|
+ type: [String, Number],
|
|
|
+ default: "",
|
|
|
+ },
|
|
|
+ node: {
|
|
|
+ type: Object,
|
|
|
+ default: () => {},
|
|
|
+ },
|
|
|
});
|
|
|
//事件
|
|
|
const emit = defineEmits(["close"]);
|
|
@@ -143,20 +193,23 @@ const isShow = defineModel("modelValue", {
|
|
|
//监听显示
|
|
|
watch(isShow, (val) => {
|
|
|
if (val) {
|
|
|
- // getDataInfo();
|
|
|
- // geStandardTypeOptions();
|
|
|
+ getDataTypelist();
|
|
|
} else {
|
|
|
emit("close");
|
|
|
}
|
|
|
});
|
|
|
-const ownerTypeList = ref([]);
|
|
|
-const tableTypelist = ref([]);
|
|
|
+const ownerTypeList = ref(props.ownerTypeList);
|
|
|
+const tableTypelist = ref(props.tableTypelist);
|
|
|
+const wbsId = ref(props.wid);
|
|
|
+const node = ref(props.node);
|
|
|
//监听数据
|
|
|
watch(
|
|
|
- () => [props.ownerTypeList, props.tableTypelist],
|
|
|
- ([own, table]) => {
|
|
|
+ () => [props.ownerTypeList, props.tableTypelist, props.wid, props.node],
|
|
|
+ ([own, table, wbsid, nodeInfo]) => {
|
|
|
ownerTypeList.value = own;
|
|
|
tableTypelist.value = table;
|
|
|
+ wbsId.value = wbsid;
|
|
|
+ node.value = nodeInfo;
|
|
|
},
|
|
|
{ deep: true }
|
|
|
);
|
|
@@ -178,22 +231,133 @@ const formRules = {
|
|
|
trigger: "blur",
|
|
|
message: "请选择所属方",
|
|
|
},
|
|
|
+ wid: {
|
|
|
+ type: [String, Number],
|
|
|
+ default: "",
|
|
|
+ },
|
|
|
};
|
|
|
+
|
|
|
+const curEleTable = ref({});
|
|
|
const formModel = ref({});
|
|
|
+const editVisible = ref(false);
|
|
|
const tableColumn = [
|
|
|
- { key: "eName", name: "元素名称" },
|
|
|
- { key: "eType", name: "数据类型" },
|
|
|
+ { key: "eName", name: "元素名称", width: 150 },
|
|
|
+ { key: "eType", name: "数据类型", width: 120 },
|
|
|
{ key: "eLength", name: "长度" },
|
|
|
- { key: "eAllowDeviation", name: "允许偏差值" },
|
|
|
+ { key: "eAllowDeviation", name: "允许偏差值", width: 180 },
|
|
|
{ key: "eInspectionMethod", name: "检查方法和频率" },
|
|
|
- { key: "action", name: "操作", width: 100 },
|
|
|
+ { key: "action", name: "操作", width: 80, align: "center" },
|
|
|
];
|
|
|
-const tableData = ref([
|
|
|
- { name: "名称1", text: "文本1", color: "red" },
|
|
|
- { name: "名称2", text: "文本2", color: "blue" },
|
|
|
-]);
|
|
|
+const editEleList = ref([]);
|
|
|
const dataTypeList = ref([]);
|
|
|
-const setDefaultLength = () => {};
|
|
|
+const getDataTypelist = async () => {
|
|
|
+ if (dataTypeList.value.length > 1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ dataTypeList.value = await getDictionaryData("data_type", false);
|
|
|
+};
|
|
|
+const setDefaultLength = (row) => {
|
|
|
+ const dataTypeDefaultMap = {
|
|
|
+ 1: 250, //字符串
|
|
|
+ 2: 50, //整数
|
|
|
+ 3: 50, //小数
|
|
|
+ 4: 50, //日期
|
|
|
+ 5: 50, //数值
|
|
|
+ 6: 50, //签名
|
|
|
+ 7: 100, //文件
|
|
|
+ };
|
|
|
+ row.eLength = dataTypeDefaultMap[row.eType];
|
|
|
+};
|
|
|
+const rowDelClick = (row, index) => {
|
|
|
+ editEleList.value.splice(index, 1);
|
|
|
+};
|
|
|
+const addRowClick = () => {
|
|
|
+ editEleList.value.push({});
|
|
|
+};
|
|
|
+const submitLoading = ref(false);
|
|
|
+const editSubmitClick = async () => {
|
|
|
+ const formRes = await formValidate(formRef.value);
|
|
|
+ if (!formRes) return false;
|
|
|
+ for (let i = 0; i < editEleList.value.length; i++) {
|
|
|
+ if (!editEleList.value[i].id) {
|
|
|
+ window.$message.warning("请先将新增的元素点击保存");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!editEleList.value[i].eName) {
|
|
|
+ window.$message.warning("请填写第" + (i + 1) + "条元素名称");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!editEleList.value[i].eType) {
|
|
|
+ window.$message.warning("请选择第" + (i + 1) + "条数据类型");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!editEleList[i].value.eLength) {
|
|
|
+ window.$message.warning("请填写第" + (i + 1) + "条数据长度");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (editEleList.value.length > 0) {
|
|
|
+ editEleList.value.forEach((element) => {
|
|
|
+ element.eAllowDeviation =
|
|
|
+ (element.allow ? element.allow : "") +
|
|
|
+ (element.deviation ? element.deviation : "");
|
|
|
+ });
|
|
|
+ submitLoading.value = true;
|
|
|
+ const { error, code } = await mainApi.updateBatchElements(
|
|
|
+ editEleList.value,
|
|
|
+ curEleTable.value.initTableName
|
|
|
+ );
|
|
|
+ submitLoading.value = false;
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window?.$message?.success("操作成功");
|
|
|
+ dialogClose();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ window.$message.warning("请填写完整元素表信息");
|
|
|
+ }
|
|
|
+};
|
|
|
+const saveFormAndElementHandle = async () => {
|
|
|
+ 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;
|
|
|
+ formModel.value.type = 2; // '1'节点 '2'表
|
|
|
+ formModel.value.parentId = node.value.id;
|
|
|
+ for (let i = 0; i < editEleList.value.length; i++) {
|
|
|
+ if (!editEleList.value[i].eName) {
|
|
|
+ window.$message.warning("请填写第" + (i + 1) + "条元素名称");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!editEleList.value[i].eType) {
|
|
|
+ window.$message.warning("请选择第" + (i + 1) + "条数据类型");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!editEleList.value[i].eLength) {
|
|
|
+ window.$message.warning("请填写第" + (i + 1) + "条数据长度");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (editEleList.value.length > 0) {
|
|
|
+ editEleList.value.forEach((element) => {
|
|
|
+ element.eAllowDeviation =
|
|
|
+ (element.allow ? element.allow : "") +
|
|
|
+ (element.deviation ? element.deviation : "");
|
|
|
+ });
|
|
|
+ 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();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ window.$message.warning("请填写完整元素表信息");
|
|
|
+ }
|
|
|
+};
|
|
|
//关闭弹窗
|
|
|
const dialogClose = () => {
|
|
|
isShow.value = false;
|