|
@@ -5,297 +5,153 @@
|
|
|
is-close
|
|
|
@close="drawerClose"
|
|
|
>
|
|
|
- <hc-body split>
|
|
|
- <template #left>
|
|
|
- <hc-card scrollbar>
|
|
|
- <template #header>
|
|
|
- <hc-search-input
|
|
|
- v-model="searchTreeName"
|
|
|
- @search="searchTreeNameClick"
|
|
|
- @clear="searchTreeNameClick"
|
|
|
- >
|
|
|
- <template #prepend>
|
|
|
- <el-select
|
|
|
- v-model="queryType"
|
|
|
- placeholder="类型"
|
|
|
- style="width: 75px"
|
|
|
- >
|
|
|
- <el-option label="节点" value="1" />
|
|
|
- <el-option label="表名" value="2" />
|
|
|
- </el-select>
|
|
|
- </template>
|
|
|
- </hc-search-input>
|
|
|
- </template>
|
|
|
- <hc-lazy-tree
|
|
|
- v-if="isTreeMode"
|
|
|
- :root-menu="treeMenuData"
|
|
|
- :menus="treeMenuDatas"
|
|
|
- :h-props="treeProps"
|
|
|
- tree-key="id"
|
|
|
- @load="treeLoadNode"
|
|
|
- @node-tap="treeNodeTap"
|
|
|
- @menu-tap="treeMenuClick"
|
|
|
- :autoExpandKeys="autoExpandKeys"
|
|
|
- >
|
|
|
- <template #nodeName="{ data }">
|
|
|
- <span class="text-16px font-400">{{
|
|
|
- data.nodeName
|
|
|
- }}</span>
|
|
|
- </template>
|
|
|
- </hc-lazy-tree>
|
|
|
- <template v-if="isTreeMode === false">
|
|
|
- <hc-data-tree
|
|
|
- defaultExpandAll
|
|
|
- ref="treeRef"
|
|
|
- :h-props="treeProps"
|
|
|
- tree-key="id"
|
|
|
- :datas="treeData"
|
|
|
- @node-tap="treeNodeTap"
|
|
|
- >
|
|
|
- <template #name="{ data }">
|
|
|
- <span class="text-16px font-400">{{
|
|
|
- data.title
|
|
|
- }}</span>
|
|
|
- </template>
|
|
|
- </hc-data-tree>
|
|
|
- </template>
|
|
|
- </hc-card>
|
|
|
- </template>
|
|
|
- <hc-card class="hc-desk-system-unit-temp">
|
|
|
- <template v-if="!isNullES(nodeInfo.id)">
|
|
|
- <hc-card-item title="节点信息">
|
|
|
- <el-descriptions
|
|
|
- :column="3"
|
|
|
- border
|
|
|
- direction="vertical"
|
|
|
- >
|
|
|
- <el-descriptions-item label="当前节点">{{
|
|
|
- nodeInfo.nodeName ?? "-"
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="节点类型:">{{
|
|
|
- nodeInfo.nodeTypeName ?? "-"
|
|
|
- }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="上级节点:">{{
|
|
|
- nodeInfo.parentName ?? "-"
|
|
|
- }}</el-descriptions-item>
|
|
|
- </el-descriptions>
|
|
|
- </hc-card-item>
|
|
|
- <hc-card-item title="当前已创建的元素表">
|
|
|
- <template #extra>
|
|
|
- <el-button size="small" type="primary"
|
|
|
- >新增</el-button
|
|
|
- >
|
|
|
- <el-button size="small" type="warning"
|
|
|
- >编辑</el-button
|
|
|
- >
|
|
|
- <el-button size="small" type="success"
|
|
|
- >排序</el-button
|
|
|
- >
|
|
|
- </template>
|
|
|
- <hc-table
|
|
|
- :column="tableColumn"
|
|
|
- :datas="tableData"
|
|
|
- :loading="tableLoading"
|
|
|
- :is-index="false"
|
|
|
- :is-current-row="false"
|
|
|
- >
|
|
|
- <template #tableType="{ row }">{{
|
|
|
- getDictionaryName(
|
|
|
- tableTypelist,
|
|
|
- row.tableType,
|
|
|
- true
|
|
|
- )
|
|
|
- }}</template>
|
|
|
- <template #tableOwner="{ row }">{{
|
|
|
- getDictionaryName(
|
|
|
- ownerTypeList,
|
|
|
- row.tableOwner,
|
|
|
- true
|
|
|
- )
|
|
|
- }}</template>
|
|
|
- <template #action="{ row, index }">
|
|
|
- <el-link
|
|
|
- type="warning"
|
|
|
- @click="editRowClick(row)"
|
|
|
- >修改</el-link
|
|
|
- >
|
|
|
- <el-link type="danger" @click="rowDelClick(row)"
|
|
|
- >删除</el-link
|
|
|
+ <div class="hc-project-wbs-tree flex">
|
|
|
+ <div class="header hc-flex">
|
|
|
+ <div class="name flex-1">
|
|
|
+ {{ dataInfo.wbsName }}
|
|
|
+ </div>
|
|
|
+ <div class="hc-flex">
|
|
|
+ <el-button hc-btn type="primary">导入划分</el-button>
|
|
|
+ <el-button hc-btn type="primary">元素设置</el-button>
|
|
|
+ <el-button hc-btn type="primary">元素公式设置</el-button>
|
|
|
+
|
|
|
+ <el-button hc-btn type="warning">节点参数设置</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="body">
|
|
|
+ <hc-body split>
|
|
|
+ <template #left>
|
|
|
+ <hc-card scrollbar>
|
|
|
+ <template #header>
|
|
|
+ <hc-search-input
|
|
|
+ v-model="searchTreeName"
|
|
|
+ @search="searchTreeNameClick"
|
|
|
+ @clear="searchTreeNameClick"
|
|
|
>
|
|
|
+ <template #prepend>
|
|
|
+ <el-select
|
|
|
+ v-model="queryType"
|
|
|
+ placeholder="类型"
|
|
|
+ style="width: 75px"
|
|
|
+ >
|
|
|
+ <el-option label="节点" value="1" />
|
|
|
+ <el-option label="表名" value="2" />
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </hc-search-input>
|
|
|
</template>
|
|
|
- </hc-table>
|
|
|
- </hc-card-item>
|
|
|
- </template>
|
|
|
- <hc-empty v-else title="请先点击左侧树节点" />
|
|
|
- </hc-card>
|
|
|
- </hc-body>
|
|
|
-
|
|
|
- <!-- 新增/修改 -->
|
|
|
- <hc-dialog
|
|
|
- v-model="isAddEditShow"
|
|
|
- widths="24rem"
|
|
|
- is-footer-center
|
|
|
- :title="formModel.id ? '修改' : '新增'"
|
|
|
- @close="addEditClose"
|
|
|
- @save="addEditSubmit"
|
|
|
- :loading="addEditLoading"
|
|
|
- >
|
|
|
- <el-form
|
|
|
- ref="formRef"
|
|
|
- :model="formModel"
|
|
|
- :rules="formRules"
|
|
|
- label-position="top"
|
|
|
- label-width="auto"
|
|
|
- >
|
|
|
- <el-form-item label="节点名称:" prop="nodeName">
|
|
|
- <el-input
|
|
|
- v-model="formModel.nodeName"
|
|
|
- clearable
|
|
|
- placeholder="请输入节点名称"
|
|
|
- class="is-right-btn"
|
|
|
- >
|
|
|
- <template #append>
|
|
|
- <el-button
|
|
|
- hc-btn
|
|
|
- type="primary"
|
|
|
- @click="aliasShowClick"
|
|
|
- >添加别名</el-button
|
|
|
+ <hc-lazy-tree
|
|
|
+ v-if="isTreeMode"
|
|
|
+ :root-menu="treeMenuData"
|
|
|
+ :menus="treeMenuDatas"
|
|
|
+ :h-props="treeProps"
|
|
|
+ tree-key="id"
|
|
|
+ @load="treeLoadNode"
|
|
|
+ @node-tap="treeNodeTap"
|
|
|
+ @menu-tap="treeMenuClick"
|
|
|
+ :autoExpandKeys="autoExpandKeys"
|
|
|
>
|
|
|
- </template>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="上级节点:">
|
|
|
- <el-input
|
|
|
- v-model="formModel.parentName"
|
|
|
- clearable
|
|
|
- disabled
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="节点类型:" prop="nodeType">
|
|
|
- <el-select
|
|
|
- v-model="formModel.nodeType"
|
|
|
- filterable
|
|
|
- clearable
|
|
|
- block
|
|
|
- placeholder="请选择节点类型"
|
|
|
- @change="nodeTypeChange"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in majorDatatype"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="划分编号"
|
|
|
- v-if="wbsType !== 2 && wbsType !== 5 && wbsType !== 3"
|
|
|
- >
|
|
|
- <el-input v-model="formModel.partitionCode"></el-input>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item
|
|
|
- label="唯一编码"
|
|
|
- v-if="(wbsType !== 5) & (wbsType !== 3)"
|
|
|
- >
|
|
|
- <el-input v-model="formModel.uniqueCode"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <template v-if="formModel.nodeType == 6 && wbsType !== 3">
|
|
|
- <el-form-item label="是否有混凝土">
|
|
|
- <el-radio-group
|
|
|
- v-model="formModel.isConcrete"
|
|
|
- size="small"
|
|
|
- >
|
|
|
- <el-radio :value="0">无</el-radio>
|
|
|
- <el-radio :value="1">有</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="是否试验节点">
|
|
|
- <el-radio-group
|
|
|
- v-model="formModel.isExpernode"
|
|
|
- size="small"
|
|
|
- >
|
|
|
- <el-radio :value="0">否</el-radio>
|
|
|
- <el-radio :value="1">是</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- </template>
|
|
|
- <el-form-item
|
|
|
- label="内业资料类型"
|
|
|
- prop="majorDataType"
|
|
|
- v-if="wbsType !== 2 && (wbsType !== 5) & (wbsType !== 3)"
|
|
|
- >
|
|
|
- <el-select
|
|
|
- v-model="formModel.majorDataType"
|
|
|
- placeholder="请选择"
|
|
|
- class="w-100p"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in majorDataTypeList"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="勾选相关联试验"
|
|
|
- prop="mixRatioTestIds"
|
|
|
- v-if="wbsType === 2 && formModel.nodeType === 53"
|
|
|
- >
|
|
|
- <div class="border-class">
|
|
|
- <el-scrollbar>
|
|
|
- <div v-loading="testTreeLoad">
|
|
|
+ <template #nodeName="{ data }">
|
|
|
+ <span class="text-16px font-400">{{
|
|
|
+ data.nodeName
|
|
|
+ }}</span>
|
|
|
+ </template>
|
|
|
+ </hc-lazy-tree>
|
|
|
+ <template v-if="isTreeMode === false">
|
|
|
<hc-data-tree
|
|
|
defaultExpandAll
|
|
|
+ ref="treeRef"
|
|
|
:h-props="treeProps"
|
|
|
tree-key="id"
|
|
|
- :datas="testTreeData"
|
|
|
- @check="TestTreeCheckChange"
|
|
|
- showCheckbox
|
|
|
- :defaultCheckedKeys="defaultCheckedKeys"
|
|
|
+ :datas="treeData"
|
|
|
+ @node-tap="treeNodeTap"
|
|
|
>
|
|
|
+ <template #name="{ data }">
|
|
|
+ <span class="text-16px font-400">{{
|
|
|
+ data.title
|
|
|
+ }}</span>
|
|
|
+ </template>
|
|
|
</hc-data-tree>
|
|
|
+ </template>
|
|
|
+ </hc-card>
|
|
|
+ </template>
|
|
|
+ <hc-card class="hc-desk-system-unit-temp">
|
|
|
+ <template v-if="!isNullES(nodeInfo.id)">
|
|
|
+ <div class="body-top">
|
|
|
+ <hc-card title="节点信息">
|
|
|
+ <hc-table
|
|
|
+ :is-index="false"
|
|
|
+ :column="nodeTableColumn"
|
|
|
+ :datas="nodeTableData"
|
|
|
+ >
|
|
|
+ <template #nodeType="{ row }">{{
|
|
|
+ getDictionaryName(
|
|
|
+ majorDatatype,
|
|
|
+ row.nodeType,
|
|
|
+ true
|
|
|
+ )
|
|
|
+ }}</template>
|
|
|
+ </hc-table>
|
|
|
+ </hc-card>
|
|
|
</div>
|
|
|
- </el-scrollbar>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="标准分类"
|
|
|
- v-if="formModel.isExistForm == 1"
|
|
|
- >
|
|
|
- <el-select
|
|
|
- v-model="formModel.className"
|
|
|
- placeholder="请选择"
|
|
|
- @change="changeStandType"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in standardTypeOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- label="单元名称"
|
|
|
- v-if="formModel.isExistForm == 1"
|
|
|
- >
|
|
|
- <el-select
|
|
|
- v-model="formModel.unitName"
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in unitOptions"
|
|
|
- :key="item.id"
|
|
|
- :label="item.dictValue"
|
|
|
- :value="item.dictKey"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </hc-dialog>
|
|
|
+ <div class="body-content">
|
|
|
+ <hc-card title="当前已创建的元素表">
|
|
|
+ <template #extra>
|
|
|
+ <el-button
|
|
|
+ size="small"
|
|
|
+ type="primary"
|
|
|
+ @click="createNew"
|
|
|
+ >创建元素表</el-button
|
|
|
+ >
|
|
|
+ <el-button size="small" type="warning"
|
|
|
+ >编辑元素表单</el-button
|
|
|
+ >
|
|
|
+ <el-button size="small" type="success"
|
|
|
+ >排序</el-button
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ <hc-table
|
|
|
+ :column="tableColumn"
|
|
|
+ :datas="tableData"
|
|
|
+ :loading="tableLoading"
|
|
|
+ :is-index="false"
|
|
|
+ :is-current-row="false"
|
|
|
+ >
|
|
|
+ <template #tableType="{ row }">{{
|
|
|
+ getDictionaryName(
|
|
|
+ tableTypelist,
|
|
|
+ row.tableType,
|
|
|
+ true
|
|
|
+ )
|
|
|
+ }}</template>
|
|
|
+ <template #tableOwner="{ row }">{{
|
|
|
+ getDictionaryName(
|
|
|
+ ownerTypeList,
|
|
|
+ row.tableOwner,
|
|
|
+ true
|
|
|
+ )
|
|
|
+ }}</template>
|
|
|
+ <template #action="{ row, index }">
|
|
|
+ <el-link
|
|
|
+ type="warning"
|
|
|
+ @click="editRowClick(row)"
|
|
|
+ >修改</el-link
|
|
|
+ >
|
|
|
+ <el-link
|
|
|
+ type="danger"
|
|
|
+ @click="rowDelClick(row)"
|
|
|
+ >删除</el-link
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </hc-table>
|
|
|
+ </hc-card>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <hc-empty v-else title="请先点击左侧树节点" />
|
|
|
+ </hc-card>
|
|
|
+ </hc-body>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
|
|
|
<!-- 调整排序 -->
|
|
|
<hc-dialog
|
|
@@ -328,63 +184,25 @@
|
|
|
</template>
|
|
|
</hc-dialog>
|
|
|
|
|
|
- <!-- 节点别名 -->
|
|
|
- <hc-dialog
|
|
|
- v-model="isAliasShow"
|
|
|
- widths="26rem"
|
|
|
- title="节点别名"
|
|
|
- is-footer-center
|
|
|
- @close="aliasDialogClose"
|
|
|
- >
|
|
|
- <el-form
|
|
|
- ref="formAliasRef"
|
|
|
- :model="formAliasModel"
|
|
|
- :rules="formAliasRules"
|
|
|
- label-position="top"
|
|
|
- label-width="auto"
|
|
|
- >
|
|
|
- <el-form-item prop="aliasName">
|
|
|
- <el-input
|
|
|
- v-model="formAliasModel.aliasName"
|
|
|
- placeholder="请输入节点别名"
|
|
|
- clearable
|
|
|
- class="is-right-btn"
|
|
|
- >
|
|
|
- <template v-if="formModel.id" #append>
|
|
|
- <el-button
|
|
|
- hc-btn
|
|
|
- type="primary"
|
|
|
- @click="addAliasName"
|
|
|
- >添加</el-button
|
|
|
- >
|
|
|
- </template>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <div
|
|
|
- v-if="aliasArr.length > 0"
|
|
|
- class="hc-tree-node-edit-form-alias-name"
|
|
|
- >
|
|
|
- <template v-for="(item, index) in aliasArr" :key="index">
|
|
|
- <el-tag
|
|
|
- closable
|
|
|
- type="primary"
|
|
|
- @close="aliasNameClose(index)"
|
|
|
- >{{ item }}</el-tag
|
|
|
- >
|
|
|
- </template>
|
|
|
- </div>
|
|
|
- <template #footer>
|
|
|
- <el-button hc-btn @click="aliasDialogClose">取消</el-button>
|
|
|
- <el-button
|
|
|
- hc-btn
|
|
|
- type="primary"
|
|
|
- :loading="submitAliasLoading"
|
|
|
- @click="aliasSubmit"
|
|
|
- >提交</el-button
|
|
|
- >
|
|
|
- </template>
|
|
|
- </hc-dialog>
|
|
|
+ <!-- 新增修改 -->
|
|
|
+ <TreeNodeEditDialog
|
|
|
+ v-model="isAddEditShow"
|
|
|
+ :node="formModel"
|
|
|
+ :type="Number(wbsType)"
|
|
|
+ :wid="dataInfo.id"
|
|
|
+ :tree-props="treeProps"
|
|
|
+ :node-type="majorDatatype"
|
|
|
+ :major-type="majorDataTypeList"
|
|
|
+ @close="addEditClose"
|
|
|
+ @change="treeNodeEditChange"
|
|
|
+ />
|
|
|
+ <!-- 创建新的元素表 -->
|
|
|
+ <createNewExcel
|
|
|
+ v-model="isCreateShow"
|
|
|
+ @close="createClose"
|
|
|
+ :tableTypelist="tableTypelist"
|
|
|
+ :ownerTypeList="ownerTypeList"
|
|
|
+ ></createNewExcel>
|
|
|
</hc-drawer>
|
|
|
</template>
|
|
|
|
|
@@ -392,7 +210,7 @@
|
|
|
import { nextTick, ref, watch, onMounted } from "vue";
|
|
|
import { HcDelMsg } from "hc-vue3-ui";
|
|
|
import { getDictionaryData, getDictionaryName } from "~src/utils/tools";
|
|
|
-import { getDictionary } from "~api/other";
|
|
|
+
|
|
|
import { getStoreValue, setStoreValue } from "~uti/storage";
|
|
|
import {
|
|
|
arrToId,
|
|
@@ -403,8 +221,10 @@ import {
|
|
|
isNullES,
|
|
|
} from "js-fast-way";
|
|
|
import mainApi from "~api/wbs/tree";
|
|
|
-import { getChildList } from "~api/other";
|
|
|
+
|
|
|
import { useAppStore } from "~src/store";
|
|
|
+import TreeNodeEditDialog from "./tree-node-edit.vue";
|
|
|
+import createNewExcel from "./create-new-excel.vue";
|
|
|
//缓存
|
|
|
const store = useAppStore();
|
|
|
const userInfo = ref(store.getUserInfo);
|
|
@@ -446,8 +266,9 @@ watch(
|
|
|
watch(isShow, (val) => {
|
|
|
if (val) getDataApi();
|
|
|
getMajorList();
|
|
|
- geStandardTypeOptions();
|
|
|
+
|
|
|
getOwnerTypelist();
|
|
|
+ getTableTypelist(Number(wbsType.value - 1));
|
|
|
});
|
|
|
//渲染完成
|
|
|
onMounted(() => {
|
|
@@ -459,8 +280,6 @@ const majorDatatype = ref([]);
|
|
|
const getDataApi = async () => {
|
|
|
isTreeMode.value = true;
|
|
|
const type = wbsType.value;
|
|
|
- console.log(wbsType.value, "wbsType.value");
|
|
|
-
|
|
|
let code = "";
|
|
|
if (type === 5) {
|
|
|
code = "lar_node_type"; //征拆
|
|
@@ -499,6 +318,7 @@ const getSearchData = async () => {
|
|
|
};
|
|
|
//节点详情
|
|
|
const nodeDetail = ref({});
|
|
|
+
|
|
|
const getNodeDetail = async (data1, node) => {
|
|
|
let parentName = "";
|
|
|
if (node.parent.data) {
|
|
@@ -518,51 +338,14 @@ const getNodeDetail = async (data1, node) => {
|
|
|
defaultCheckedKeys.value = nodeDetail.value.mixRatioTestIds
|
|
|
? nodeDetail.value.mixRatioTestIds.split(",")
|
|
|
: [];
|
|
|
+ const res = getObjValue(data);
|
|
|
+ nodeTableData.value = [res];
|
|
|
};
|
|
|
//内业资料类型
|
|
|
const majorDataTypeList = ref([]);
|
|
|
const getMajorList = async () => {
|
|
|
majorDataTypeList.value = await getDictionaryData("major_data_type", false);
|
|
|
};
|
|
|
-//标砖分类类型
|
|
|
-const standardTypeOptions = ref([]);
|
|
|
-const geStandardTypeOptions = async () => {
|
|
|
- const { data } = await getDictionary({
|
|
|
- code: "classification",
|
|
|
- });
|
|
|
- standardTypeOptions.value = await getDictionaryData(
|
|
|
- "classification",
|
|
|
- false
|
|
|
- );
|
|
|
-
|
|
|
- standardTypeOptions.value.forEach((element) => {
|
|
|
- // element.parentId=
|
|
|
- data.forEach((ele) => {
|
|
|
- if (ele.dictKey == element.value) {
|
|
|
- element.id = ele.id;
|
|
|
- }
|
|
|
- });
|
|
|
- });
|
|
|
- // 定义要过滤的 dictKey 值
|
|
|
- const targetKeys = [1, 2, 3, 4];
|
|
|
- // 过滤数组
|
|
|
- standardTypeOptions.value = standardTypeOptions.value.filter((item) =>
|
|
|
- targetKeys.includes(item.value)
|
|
|
- );
|
|
|
-};
|
|
|
-//单元名称
|
|
|
-const unitOptions = ref([]);
|
|
|
-const changeStandType = async (val) => {
|
|
|
- formModel.value.unitName = "";
|
|
|
- let parentId = "";
|
|
|
- standardTypeOptions.value.forEach((item) => {
|
|
|
- if (item.value == val) {
|
|
|
- parentId = item.id;
|
|
|
- }
|
|
|
- });
|
|
|
- const { data } = await getChildList({ current: 1, size: 10000, parentId });
|
|
|
- unitOptions.value = data;
|
|
|
-};
|
|
|
|
|
|
//树配置
|
|
|
const isTreeMode = ref(false);
|
|
@@ -581,6 +364,7 @@ const treeProps = {
|
|
|
};
|
|
|
const treeData = ref([]);
|
|
|
const autoExpandKeys = ref([]);
|
|
|
+const defaultCheckedKeys = ref([]);
|
|
|
//懒加载树
|
|
|
const treeLoadNode = async ({ item, level }, resolve) => {
|
|
|
const { tenant_id } = getObjValue(userInfo.value);
|
|
@@ -607,30 +391,7 @@ const treeMenuDatas = [
|
|
|
{ icon: "delete-bin", label: "删除节点", key: "del" },
|
|
|
];
|
|
|
//试验树数据
|
|
|
-const testTreeData = ref([]);
|
|
|
-const testTreeLoad = ref(false);
|
|
|
-const nodeTypeChange = async (val) => {
|
|
|
- const { tenant_id } = getObjValue(userInfo.value);
|
|
|
- const { id } = getObjValue(dataInfo.value);
|
|
|
- if (val === 53) {
|
|
|
- if (testTreeData.value.length > 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
- testTreeLoad.value = true;
|
|
|
- const { data } = await mainApi.getAlltree({
|
|
|
- tenantId: tenant_id,
|
|
|
- type: 1,
|
|
|
- wbsId: id,
|
|
|
- });
|
|
|
- testTreeLoad.value = false;
|
|
|
- testTreeData.value = data;
|
|
|
- }
|
|
|
-};
|
|
|
-const defaultCheckedKeys = ref([]);
|
|
|
-const TestTreeCheckChange = (_, { checkedKeys }) => {
|
|
|
- const newarr = [...checkedKeys];
|
|
|
- nodeDetail.value.mixRatioTestIds = newarr.join(",");
|
|
|
-};
|
|
|
+
|
|
|
//菜单被点击
|
|
|
const treeMenuClick = async ({ key, data, node, keys }) => {
|
|
|
nodeInfo.value = data;
|
|
@@ -650,6 +411,7 @@ const treeMenuClick = async ({ key, data, node, keys }) => {
|
|
|
formModel.value.partitionCode = "";
|
|
|
formModel.value.uniqueCode = "";
|
|
|
|
|
|
+ formModel.value.majorDataType = "";
|
|
|
await nextTick();
|
|
|
isAddEditShow.value = true;
|
|
|
} else if (key === "edit") {
|
|
@@ -683,72 +445,14 @@ const treeNodeTap = async ({ data, node, keys }) => {
|
|
|
await getNodeDetail(data, node);
|
|
|
await getTableData();
|
|
|
};
|
|
|
-//节点别名
|
|
|
-const isAliasShow = ref(false);
|
|
|
-
|
|
|
-//节点别名
|
|
|
-const formAliasRef = ref(null);
|
|
|
-const formAliasModel = ref({});
|
|
|
-const formAliasRules = {
|
|
|
- aliasName: {
|
|
|
- required: true,
|
|
|
- trigger: "blur",
|
|
|
- message: "请输入节点别名",
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
-//显示节点别名弹窗
|
|
|
-const aliasArr = ref([]);
|
|
|
-const aliasShowClick = () => {
|
|
|
- isAliasShow.value = true;
|
|
|
- aliasArr.value = [];
|
|
|
- const { fullName } = deepClone(formModel.value);
|
|
|
- if (isNullES(fullName)) return;
|
|
|
- aliasArr.value = fullName.split(",");
|
|
|
-};
|
|
|
-
|
|
|
-//添加别名
|
|
|
-const addAliasName = async () => {
|
|
|
- const formRes = await formValidate(formAliasRef.value);
|
|
|
- if (!formRes) return false;
|
|
|
|
|
|
- const { aliasName } = deepClone(formAliasModel.value);
|
|
|
- if (aliasArr.value.indexOf(aliasName) !== -1) {
|
|
|
- window.$message.warning("请不要重复别名");
|
|
|
- return;
|
|
|
- }
|
|
|
- aliasArr.value.push(aliasName);
|
|
|
- formAliasModel.value.aliasName = "";
|
|
|
-};
|
|
|
-
|
|
|
-//移除别名
|
|
|
-const aliasNameClose = (index) => {
|
|
|
- aliasArr.value.splice(index, 1);
|
|
|
-};
|
|
|
-
|
|
|
-//提交别名
|
|
|
-const submitAliasLoading = ref(false);
|
|
|
-const aliasSubmit = async () => {
|
|
|
- submitAliasLoading.value = true;
|
|
|
- const { id } = formModel.value;
|
|
|
- const fullName = aliasArr.value.join(",");
|
|
|
- const { isRes } = await mainApi.submitFullName({
|
|
|
- id: id,
|
|
|
- fullNames: fullName,
|
|
|
- });
|
|
|
- submitAliasLoading.value = false;
|
|
|
- const { data } = await mainApi.getDetail(id);
|
|
|
- formModel.value = data;
|
|
|
- if (!isRes) return;
|
|
|
- aliasDialogClose();
|
|
|
- window?.$message?.success("操作成功");
|
|
|
-};
|
|
|
-
|
|
|
-//关闭节点别名弹窗
|
|
|
-const aliasDialogClose = () => {
|
|
|
- isAliasShow.value = false;
|
|
|
- formAliasModel.value = {};
|
|
|
-};
|
|
|
+//节点信息
|
|
|
+const nodeTableColumn = ref([
|
|
|
+ { key: "nodeName", name: "当前节点", align: "center" },
|
|
|
+ { key: "nodeType", name: "节点类型", align: "center" },
|
|
|
+ { key: "parentName", name: "上级节点", align: "center" },
|
|
|
+]);
|
|
|
+const nodeTableData = ref([]);
|
|
|
//表格数据
|
|
|
const tableColumn = ref([
|
|
|
{ key: "tableName", name: "表单名称" },
|
|
@@ -806,47 +510,18 @@ const formRules = {
|
|
|
};
|
|
|
|
|
|
//新增、编辑节点提交
|
|
|
-const addEditLoading = ref(false);
|
|
|
-const addEditSubmit = async () => {
|
|
|
- //验证表单
|
|
|
- const isForm = await formValidate(formRef.value);
|
|
|
- if (!isForm) return false;
|
|
|
- addEditLoading.value = true;
|
|
|
- //处理表单
|
|
|
- const form = formModel.value;
|
|
|
- form.nodeTypeName = getDictionaryName(majorDatatype.value, form.nodeType);
|
|
|
- //发起请求
|
|
|
- let res;
|
|
|
- if (isNullES(form.id)) {
|
|
|
- console.log(nodeInfo.value, "nodeInfo.value");
|
|
|
-
|
|
|
- const { ancestors, id } = nodeInfo.value;
|
|
|
-
|
|
|
- form.parentId = id;
|
|
|
- form.ancestors = ancestors;
|
|
|
- form.wbsId = dataInfo.value.id;
|
|
|
- const { tenant_id } = getObjValue(userInfo.value);
|
|
|
- form.tenantId = tenant_id;
|
|
|
- res = await mainApi.submit(form);
|
|
|
- } else {
|
|
|
- res = await mainApi.submit(form);
|
|
|
- }
|
|
|
- //处理结果
|
|
|
- const { error, code } = getObjValue(res);
|
|
|
- addEditLoading.value = false;
|
|
|
- if (!error && code === 200) {
|
|
|
- window?.$message?.success("操作成功");
|
|
|
- addEditClose();
|
|
|
- setTreeMode();
|
|
|
- }
|
|
|
-};
|
|
|
|
|
|
//关闭 新增、编辑节点
|
|
|
const addEditClose = () => {
|
|
|
isAddEditShow.value = false;
|
|
|
formModel.value = {};
|
|
|
};
|
|
|
-
|
|
|
+//编辑节点被修改
|
|
|
+const treeNodeEditChange = () => {
|
|
|
+ isAddEditShow.value = false;
|
|
|
+ formModel.value = {};
|
|
|
+ console.log("编辑节点被修改");
|
|
|
+};
|
|
|
//树重加载
|
|
|
const setTreeMode = () => {
|
|
|
isTreeMode.value = false;
|
|
@@ -917,6 +592,20 @@ const drawerClose = () => {
|
|
|
|
|
|
const editRowClick = () => {};
|
|
|
const rowDelClick = () => {};
|
|
|
+
|
|
|
+//创建新的元素表
|
|
|
+const isCreateShow = ref(false);
|
|
|
+const createClose = () => {
|
|
|
+ isCreateShow.value = false;
|
|
|
+};
|
|
|
+const createNew = () => {
|
|
|
+ const { id } = nodeInfo.value;
|
|
|
+ if (id) {
|
|
|
+ isCreateShow.value = true;
|
|
|
+ } else {
|
|
|
+ window.$message.warning("请先选择在哪个节点下创建表");
|
|
|
+ }
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|
|
@@ -939,3 +628,49 @@ const rowDelClick = () => {};
|
|
|
border: 1px solid #dddfe6;
|
|
|
}
|
|
|
</style>
|
|
|
+<style scoped lang="scss">
|
|
|
+.hc-project-wbs-tree {
|
|
|
+ position: relative;
|
|
|
+ background: #ececec;
|
|
|
+ border-radius: 4px;
|
|
|
+ height: 100%;
|
|
|
+ flex-direction: column;
|
|
|
+ overflow: hidden;
|
|
|
+ .header {
|
|
|
+ color: white;
|
|
|
+ background: #54565a;
|
|
|
+ padding: 10px 14px;
|
|
|
+ flex-shrink: 0;
|
|
|
+ .name {
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .body {
|
|
|
+ flex: 1;
|
|
|
+ flex-basis: auto;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|
|
|
+<style lang="scss">
|
|
|
+.hc-project-wbs-tree .body {
|
|
|
+ .el-card.hc-card-box {
|
|
|
+ --el-card-padding: 12px;
|
|
|
+ --el-card-border-radius: 5px;
|
|
|
+ }
|
|
|
+ .hc-page-split-content {
|
|
|
+ position: relative;
|
|
|
+ .body-top {
|
|
|
+ position: relative;
|
|
|
+ height: 119.5px;
|
|
|
+ }
|
|
|
+ .body-content {
|
|
|
+ position: relative;
|
|
|
+ margin-top: 10px;
|
|
|
+ height: calc(100% - 129.5px);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|