From 986aa62ed00bee39363bab41b4eeb8259d446efd Mon Sep 17 00:00:00 2001 From: ludc <ludc@vci-tech.com> Date: 星期四, 16 一月 2025 18:20:32 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue | 1410 ++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 968 insertions(+), 442 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue index c5bcb1c..8810633 100644 --- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue +++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue @@ -1,46 +1,17 @@ <template> - <el-container> + <el-container v-loading="createViewLoading"> <el-aside> <basic-container> - <div ref="TreeBox" style="height: calc(100vh - 144px);!important;"> - <div class="headerCon"> - <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓 - </el-button> - <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼 - </el-button> - <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎 - </el-button> - <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭 - </el-button> - <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆 - </el-button> - <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small" - type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘 - </el-button> - <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small" - type="primary" @click="checkClickHandler">鍒涘缓绱㈠紩 - </el-button> - <el-button icon="el-icon-menu" plain size="small" style="width: 82px;text-align: center;padding-left: 1px" - type="primary" @click="checkClickHandler">涓�鑷存�ф鏌� - </el-button> - <el-button class="miniBtn" icon="el-icon-delete" plain size="small" - type="danger" @click="checkClickHandler">鍒犻櫎鏁版嵁 - </el-button> - <el-button class="smallBtn" plain size="small" - type="danger" @click="checkClickHandler">鍒犻櫎鍏ㄩ儴绫诲瀷 - </el-button> - <el-button class="smallBtn" plain size="small" type="primary">鏌ョ湅浣跨敤鑼冨洿 - </el-button> - </div> + <div ref="TreeBox" style="height: calc(100vh - 154px);!important;"> <!-- 宸︿晶鏍� --> - <div style="height: calc(100vh - 330px);"> - <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick"> - <span slot-scope="{ node, data }" class="el-tree-node__label"> - <span style="font-size: 15px"> - <i class="el-icon-s-promotion"></i> - {{ (node || {}).label }} - </span> - </span> + <div style="height: calc(100vh - 190px);"> + <avue-tree ref="tree" v-loading="treeLoading" :data="treeData" :option="treeOption" @node-click="nodeClick"> + <span slot-scope="{ node, data }" class="el-tree-node__label"> + <span> + <icon-show :name="data.icon"></icon-show> + {{ (node || {}).label }} + </span> + </span> </avue-tree> </div> </div> @@ -48,11 +19,69 @@ </el-aside> <el-main> <basic-container> - <div style="display: flex;justify-content: center; height: 230px"> - <div class="descBox" style="max-height: 100px"> - <el-descriptions :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�"> + <div> + <el-button v-if="permissionList.addBtn" class="button-custom-icon" plain size="small" type="primary" + @click="addClickHandler"> + <icon-show :name="permissionList.addBtn.source"></icon-show> + 鍒涘缓 + </el-button> + <el-button v-if="permissionList.editBtn" class="button-custom-icon" plain size="small" type="primary" + @click="editClickHandler"> + <icon-show :name="permissionList.editBtn.source"></icon-show> + 淇敼 + </el-button> + <el-button v-if="permissionList.delBtn" class="button-custom-icon" plain size="small" type="danger" + @click="deleteClickHandler"> + <icon-show :name="permissionList.delBtn.source"></icon-show> + 鍒犻櫎 + </el-button> + <el-button v-if="permissionList.importBtn" class="button-custom-icon" plain size="small" type="primary" + @click="upLoadClickHandler"> + <icon-show :name="permissionList.importBtn.source"></icon-show> + 瀵煎叆 + </el-button> + <el-button v-if="permissionList.exportBtn" class="button-custom-icon" plain size="small" type="primary" + @click="exportClickHandler"> + <icon-show :name="permissionList.exportBtn.source"></icon-show> + 瀵煎嚭 + </el-button> + <el-button v-if="permissionList.createViewBtn" class="button-custom-icon" plain size="small" + type="primary" @click="createViewClickHandler"> + <icon-show :name="permissionList.createViewBtn.source"></icon-show> + 鍒涘缓瑙嗗浘 + </el-button> + <el-button v-if="permissionList.createIndexBtn" class="button-custom-icon" plain size="small" + type="primary" @click="indexClickHandler"> + <icon-show :name="permissionList.createIndexBtn.source"></icon-show> + 鍒涘缓绱㈠紩 + </el-button> + <el-button v-if="permissionList.consistencyCheckBtn" class="button-custom-icon" plain size="small" type="primary" + @click="checkClickHandler"> + <icon-show :name="permissionList.consistencyCheckBtn.source"></icon-show> + 涓�鑷存�ф鏌� + </el-button> + <el-button v-if="permissionList.deleteDataBtn" class="button-custom-icon" plain size="small" type="danger" + @click="checkClickHandler"> + <icon-show :name="permissionList.deleteDataBtn.source"></icon-show> + 鍒犻櫎鏁版嵁 + </el-button> + <el-button v-if="permissionList.deleteEveryTypeBtn" class="button-custom-icon" plain size="small" type="danger" + @click="checkClickHandler"> + <icon-show :name="permissionList.deleteEveryTypeBtn.source"></icon-show> + 鍒犻櫎鍏ㄩ儴绫诲瀷 + </el-button> + <el-button v-if="permissionList.viewTheScopeBtn" class="button-custom-icon" plain size="small" type="primary" + @click="checkViewClickHandler"> + <icon-show :name="permissionList.viewTheScopeBtn.source"></icon-show> + 鏌ョ湅浣跨敤鑼冨洿 + </el-button> + </div> + <div style="display: flex;justify-content:left;margin-top: 15px;"> + <div class="descBox" style="width: 40%"> + <el-descriptions :column="2" border class="margin-top" size="medium" title="灞炴�т俊鎭�"> <el-descriptions-item :contentStyle="descriptionOption.contentStyle" - :labelStyle="descriptionOption.labelStyle"> + :labelStyle="descriptionOption.labelStyle" + :span="12"> <template slot="label"> 鍚嶇О </template> @@ -65,19 +94,29 @@ </template> <el-tag v-if="nodeRow.name">{{ nodeRow.name }}</el-tag> </el-descriptions-item> - <el-descriptions-item :contentStyle="descriptionOption.contentStyle" + <el-descriptions-item :contentStyle="descriptionOption.contentStyle+';min-width: 100px;'" :labelStyle="descriptionOption.labelStyle"> + <template slot="label"> + 鍥炬爣 + </template> + <span class="avue-icon"> + <icon-show :name="nodeRow.imageName"></icon-show> + </span> + </el-descriptions-item> + <el-descriptions-item :contentStyle="descriptionOption.contentStyle" + :labelStyle="descriptionOption.labelStyle" + :span="12"> <template slot="label"> 瀹炵幇绫� </template> <el-tooltip v-if="nodeRow.implClass" :content="nodeRow.implClass" class="item" effect="dark" placement="top-start"> - <el-tag style="max-width: 250px;overflow: hidden">{{ nodeRow.implClass }} - </el-tag> + <el-tag style="max-width: 100%;overflow: hidden;display: block">{{ nodeRow.implClass }}</el-tag> </el-tooltip> </el-descriptions-item> <el-descriptions-item :contentStyle="descriptionOption.contentStyle" - :labelStyle="descriptionOption.labelStyle"> + :labelStyle="descriptionOption.labelStyle" + :span="12"> <template slot="label"> 鎻忚堪 </template> @@ -85,7 +124,7 @@ </el-descriptions-item> </el-descriptions> </div> - <div class="descBox"> + <div class="descBox" style="width: 24%;"> <el-descriptions :column="1" border class="margin-top" size="medium" title="鐗堟湰瑙勫垯"> <el-descriptions-item :contentStyle="descriptionOption.contentStyle" :labelStyle="descriptionOption.labelStyle"> @@ -137,7 +176,7 @@ </el-descriptions> </div> - <div class="descBox"> + <div class="descBox" style="width: calc(36% - 40px);margin-right: 0"> <el-descriptions :column="1" border class="margin-top" size="medium" title="鐢熷懡鍛ㄦ湡"> <el-descriptions-item :contentStyle="descriptionOption.contentStyle" :labelStyle="descriptionOption.labelStyle"> @@ -146,11 +185,21 @@ </template> <el-tag v-if="nodeRow.lifeCycleId">{{ nodeRow.lifeCycleId }}</el-tag> </el-descriptions-item> + <el-descriptions-item :contentStyle="descriptionOption.contentStyle" + :labelStyle="descriptionOption.labelStyle"> + <template slot="label"> + 澶囬�夌敓鍛藉懆鏈� + </template> + <div v-if="nodeRow.lifeCycleIds"> + <el-tag v-for="item in nodeRow.lifeCycleIds.split(',')" style="margin-right: 5px;">{{ item }}</el-tag> + </div> + + </el-descriptions-item> </el-descriptions> </div> </div> - <div style="margin-top: 30px"> - <h3>灞炴�у垪琛�</h3> + <div style="margin-top: 25px;position: relative"> + <h3 style="margin: 0;position: absolute;top:0;z-index: 1000;">灞炴�у垪琛�</h3> <avue-crud :data="attrData" :option="attrOption"> @@ -168,121 +217,110 @@ class="avue-dialog" width="75%" @close="addDialogClose"> - <el-form ref="form" :model="form" :rules="rules" label-width="95px"> + <el-form ref="form" :model="form" :rules="rules" label-width="95px" size="small"> <div class="dialogForm"> - <div class="leftForm"> + <div class="leftForm" style="width: 40%"> <el-form-item label="绫诲瀷鍚嶇О锛�" prop="id"> <el-input v-model="form.id" :readOnly="title === 'edit'"></el-input> </el-form-item> - <el-form-item label="鏍囩锛�"> - <el-input v-model="form.name"></el-input> + <el-row :span="24"> + <el-col :span="12"> + <el-form-item label="鏍囩锛�" prop="name"> + <el-input v-model="form.name"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍥炬爣锛�" prop="imageName"> + <input-icon v-model="form.imageName" placeholder="璇烽�夋嫨鍥炬爣"></input-icon> + </el-form-item> + </el-col> + </el-row> + <el-form-item label="缁ф壙鑷細" prop="fName"> + <avue-input-tree v-model="form.fName" + :dic="inheritTreeData" + :disabled="title === 'add'" + :props="{label: 'id', value: 'id',children: 'children'}" + placeholder="璇烽�夋嫨涓氬姟绫诲瀷"></avue-input-tree> </el-form-item> - <el-form-item label="缁ф壙鑷細"> - <el-input v-model="form.fName" :readOnly="title === 'edit'"></el-input> - </el-form-item> - <el-form-item label="瀹炵幇绫伙細"> + <el-form-item label="瀹炵幇绫伙細" prop="implClass"> <el-input v-model="form.implClass"></el-input> </el-form-item> - <el-form-item label="鎻忚堪"> + <el-form-item label="鎻忚堪" prop="description"> <el-input v-model="form.description" :rows="2" type="textarea"></el-input> </el-form-item> </div> - <div class="centerForm"> - <el-form-item label="鐗堟湰瑙勫垯锛�" label-width="110px" prop="revLevel"> - <el-select v-model="form.revLevel"> - <el-option label="涓嶅彲淇" value="0"></el-option> - <el-option label="閲囩敤涓�绾х増鏈鐞�" value="1"></el-option> - <el-option label="閲囩敤浜岀骇鐗堟湰绠$悊" value="2"></el-option> - </el-select> + <div class="centerForm" style="width: 26%"> + <el-form-item label="鐗堟湰瑙勫垯锛�" label-width="100px" prop="revLevel" style="margin-bottom: 10px;"> + <el-radio v-model="form.revLevel" label="0" @input="revLevelChange">涓嶅彲淇</el-radio> + <br> + <el-radio v-model="form.revLevel" label="1" @input="revLevelChange">閲囩敤涓�绾х増鏈鐞�</el-radio> + <br> + <el-radio v-model="form.revLevel" label="2" @input="revLevelChange">閲囩敤浜岀骇鐗堟湰绠$悊</el-radio> </el-form-item> - <el-form-item v-if="form.revLevel !== '0'" label="鐗堟湰鍙疯鍒欙細" label-width="110px" prop="revisionRuleName"> - <div style="display: flex;gap: 5px;align-items: center"> - <el-input v-model="form.revisionRuleId" :readOnly="true"></el-input> - <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" - @click="versionAddHandler">娣诲姞 - </el-button> - <el-switch - v-model="form.inputRevisionFlag" - active-text="鎵嬪伐杈撳叆" - style="width: 300px"> - </el-switch> - </div> + <el-form-item v-if="form.revLevel !== '0'" label="鐗堟湰鍙疯鍒欙細" label-width="100px" prop="revisionRuleId" + style="margin-bottom: 5px;"> + <avue-select v-model="form.revisionRuleId" + :dic="versionData" + :disabled="form.inputRevisionFlag" + :filterable="true" + :props="{label: 'id', value: 'id'}" + placeholder="璇烽�夋嫨鐗堟湰鍙疯鍒�"></avue-select> + <el-switch + v-model="form.inputRevisionFlag" + active-text="鎵嬪伐杈撳叆" + style="width: 300px" + @change="form.revisionRuleId = ''"> + </el-switch> </el-form-item> - <el-form-item v-if="form.revLevel !== '0'" label="鍒嗛殧绗︼細" label-width="110px" prop="delimiter"> - <el-select v-model="form.delimiter" clearable> - <el-option label="." value="."></el-option> - <el-option label="-" value="-"></el-option> - </el-select> + <el-form-item v-if="form.revLevel !== '0'" label="鍒嗛殧绗︼細" label-width="100px" prop="delimiter" + style="margin-bottom: 5px;"> + <el-radio v-model="form.delimiter" label=""> </el-radio> + <el-radio v-model="form.delimiter" label=".">.</el-radio> + <el-radio v-model="form.delimiter" label="-">-</el-radio> </el-form-item> - <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="鐗堟鍙疯鍒欙細" label-width="110px" - prop="revLevel"> - <el-select v-model="form.versionRule" clearable> - <el-option label="1.2.3..." value="0"></el-option> - <el-option label="a.b.c..." value="1"></el-option> - <el-option label="0.1.2..." value="2"></el-option> - </el-select> + <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="鐗堟鍙疯鍒欙細" label-width="100px" + prop="versionRule"> + <el-radio v-model="form.versionRule" label="0">1.2.3...</el-radio> + <el-radio v-model="form.versionRule" label="1">a.b.c...</el-radio> + <el-radio v-model="form.versionRule" label="2">0.1.2...</el-radio> </el-form-item> </div> - <div class="rightForm"> + <div class="rightForm" style="width: 25%"> <el-form-item label="鐢熷懡鍛ㄦ湡锛�" label-width="138px" prop="lifeCycleId"> - <div style="display: flex;gap: 5px;align-items: center"> - <el-input v-model="form.lifeCycleId" :readOnly="true"></el-input> - <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" - @click="lifeAddHandler('input')">娣诲姞 - </el-button> - </div> + <avue-select v-model="form.lifeCycleId" + :dic="lifeData" + :filterable="true" + :props="{label: 'id', value: 'id'}" + placeholder="璇烽�夋嫨鐢熷懡鍛ㄦ湡"></avue-select> </el-form-item> - - <el-form-item label="澶囬�夌敓鍛藉懆鏈熷垪琛細" label-width="138px"> - <div style="display: flex; align-items: center"> - <div style="height: 200px; width: 280px; border: 1px solid #bdbbbb;overflow-y: auto"> - <!-- 鍐呭 --> - <el-table - :data="dialogLifeTable" - :show-header="false" - style="width: 100%"> - <el-table-column - align="center" - prop="id"> - </el-table-column> - <el-table-column - fixed="right" - label="鎿嶄綔" - width="60"> - <template slot-scope="scope"> - <el-button - size="small" - style="color:#F56C6C;" - type="text" - @click.native.prevent="dialogDeleteLifeTable(scope.$index)"> - 绉婚櫎 - </el-button> - </template> - </el-table-column> - </el-table> - </div> - <el-button plain size="mini" style="margin-left: 5px" type="success" - @click="lifeAddHandler('table')">娣诲姞 - </el-button> - - </div> + <el-form-item label="澶囬�夌敓鍛藉懆鏈熷垪琛細" label-width="138px" prop="subLifeCycleIdList"> + <avue-select v-model="form.subLifeCycleIdList" + :dic="subLifeData" + :filterable="true" + :props="{label: 'id', value: 'id'}" + multiple + placeholder="璇烽�夋嫨鐢熷懡鍛ㄦ湡" + type="tree" + @change="subLifeChange"></avue-select> </el-form-item> </div> </div> </el-form> <div class="bottomForm"> - <h3>灞炴�ф睜鍒楄〃</h3> <avue-crud :data="dialogAttrData" - :option="dialogAttrOption"> + :option="dialogAttrOption" + size="mini" + @row-del="dialogBottomAttrDel"> <template slot="menuLeft"> - <el-button icon="el-icon-plus" size="small" type="primary" @click="addDialogClickHandler">鍒涘缓</el-button> + <h3 style="display: inline-block;margin-right: 20px;margin-bottom: 10px;">灞炴�ф睜鍒楄〃</h3> + <el-button icon="el-icon-plus" size="mini" type="primary" @click="addDialogClickHandler">鍒涘缓</el-button> </template> </avue-crud> </div> <span slot="footer" class="dialog-footer"> - <el-button @click="addDialogClose">鍙� 娑�</el-button> - <el-button type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button> + <el-button size="small" type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button> + <el-button size="small" @click="addDialogClose">鍙� 娑�</el-button> </span> </el-dialog> @@ -312,64 +350,118 @@ > </avue-crud> <span slot="footer" class="dialog-footer"> - <el-button @click="dialogAttrClose">鍙� 娑�</el-button> - <el-button type="primary" @click="dialogAttrAddClickHandler">纭� 瀹�</el-button> + <el-button size="small" type="primary" @click="dialogAttrAddClickHandler">纭� 瀹�</el-button> + <el-button size="small" @click="dialogAttrClose">鍙� 娑�</el-button> </span> </el-dialog> + <!-- 瀵煎叆 --> + <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="瀵煎叆" + @updata="getTreeList"></upload-file> + + <!-- 鏌ョ湅浣跨敤鑼冨洿 --> <el-dialog v-dialogDrag - :visible.sync="dialogVersionVisible" + :visible.sync="checkViewVisible" append-to-body="true" class="avue-dialog" - title="鐗堟湰鍙疯鍒�" + title="鏌ョ湅浣跨敤鑼冨洿" width="60%" > - <avue-crud - :key="dialogVersionKey" - ref="dialogAttrCrud" - :data="dialogVersionData" - :option="dialogVersionOption" - :table-loading="dialogVersionLoading" - @row-click="dialogVersionRowClick" - @search-change="versionHandleSearch" - @search-reset="versionHandleReset" + ref="checkViewCrud" + :data="checkViewData" + :option="checkViewOption" + :table-loading="checkViewLoading" + @search-change="checkHandleSearch" + @search-reset="checkHandleReset" > </avue-crud> - - <span slot="footer" class="dialog-footer"> - <el-button @click="dialogVersionVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="dialogVersionAddClickHandler">纭� 瀹�</el-button> - </span> - </el-dialog> - <!-- 鐢熷懡鍛ㄦ湡 --> + <!-- 涓�鑷存�ф鏌� --> <el-dialog v-dialogDrag - :visible.sync="dialogLfeVisible" + :visible.sync="conCheckVisible" append-to-body="true" class="avue-dialog" - title="鐢熷懡鍛ㄦ湡妯℃澘" + title="涓�鑷存�ф鏌�" width="60%" > <avue-crud - :key="dialogLifeKey" - ref="dialogAttrCrud" - :data="dialogLifeData" - :option="dialogLifeOption" - :table-loading="dialogLifeLoading" - @row-click="dialogLifeRowClick" - @search-change="lifeHandleSearch" - @search-reset="lifeHandleReset" - > + :data="conCheckData" + :option="conCheckOption" + :table-loading="conCheckLoading"> </avue-crud> <span slot="footer" class="dialog-footer"> - <el-button @click="dialogLfeVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="dialogLifeAddClickHandler">纭� 瀹�</el-button> + <el-button size="small" type="primary" @click="repairClickHandler">淇� 澶�</el-button> + <el-button size="small" @click="conCheckVisible = false">鍙� 娑�</el-button> </span> + </el-dialog> + <!-- 鏌ョ湅绱㈠紩 --> + <el-dialog + v-dialogDrag + :visible.sync="indexVisible" + append-to-body="true" + class="avue-dialog" + title="绱㈠紩淇℃伅" + width="60%" + @close="indexDialogClose" + > + <div v-loading="indexLoading" style="display: flex;height: 500px;width: 100%"> + <basic-container> + <div style="height: 390px"> + <el-button plain size="mini" style="margin-bottom: 5px" type="danger" + @click="deleteIndexLeftTreeClickHandler">鍒犻櫎绱㈠紩 + </el-button> + <avue-tree + :data="indexLeftData" + :option="indexLeftOption" + @node-click="indexLeftNodeClick"></avue-tree> + </div> + </basic-container> + <div style="padding: 20px;width: 75%"> + <div> + <el-form ref="form" :model="indexForm" label-width="90px" size="mini"> + <el-form-item label="绱㈠紩鍚嶇О锛�"> + <el-input v-model="indexForm.name" :readOnly="indexFormRead"></el-input> + </el-form-item> + <el-form-item label="鎻忚堪锛�"> + <el-input v-model="indexForm.desc"></el-input> + </el-form-item> + </el-form> + <div style="display: flex;justify-content: center"> + <el-button plain size="mini" type="success" @click="rightIndexAddClick">澧炲姞</el-button> + <el-button plain size="mini" type="danger">鍒犻櫎</el-button> + </div> + </div> + <avue-crud + :data="indexData" + :option="indexOption"></avue-crud> + </div> + </div> + <el-dialog + v-dialogDrag + :visible.sync="indexAttrVisible" + append-to-body="true" + class="avue-dialog" + title="灞炴�т俊鎭�" + width="60%" + > + <avue-crud + :data="indexAttrData" + :option="indexAttrOption" + @row-click="indexAttrRowClick"></avue-crud> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="indexAttrClickAddHandler">纭� 瀹�</el-button> + <el-button @click="indexAttrVisible = false">鍙� 娑�</el-button> + </span> + </el-dialog> + <span slot="footer" class="dialog-footer"> + <el-button size="small" type="primary" @click="indexClickAddHandler">淇� 瀛�</el-button> + <el-button size="small" @click="indexDialogClose">鍙� 娑�</el-button> + </span> </el-dialog> </el-container> @@ -377,68 +469,177 @@ <script> import basicOption from '@/util/basic-option' -import {getBizTypes, addLifeCycle} from "@/api/modeling/businessType/api" +import { + getBizTypes, + addLifeCycle, + updateLifeCycle, + deleteBtmType, + createView, + expData, + getUsedBtmLinkList, + checkBtmConsistency, + executeRepair, + getIndexByCondition, + delIndex, + getAllAttributesByBtmId, + addIndex +} from "@/api/modeling/businessType/api" import {gridAttribute} from "@/api/modeling/attributePool/api"; import func from "@/util/func"; -import {getVersionRuleAllList} from "@/api/modeling/version/api"; +import {getUsedVersionRuleList, getVersionRuleAllList} from "@/api/modeling/version/api"; import {gridLifeCycle} from "@/api/modeling/lifeCycle/api"; +import {mapGetters} from "vuex"; export default { name: "index", data() { return { - dialogLifeDefalutData: [], // 鏌ヨ閲嶇疆榛樿鏁版嵁 - lifeType: '', - dialogLifeTable: [], - dialogLifeSaveRow: {}, - dialogLifeKey: Math.random(), - dialogLifeData: [], - dialogLifeOption: { + indexLoading: false, + indexFormRead: false, + indexAttrRow: {}, + indexAttrOption: { ...basicOption, - addBtn: false, - selection: false, - refreshBtn: false, - menu: false, - height: 450, - searchMenuSpan: 8, + height: 380, highlightCurrentRow: true, + addBtn: false, + refreshBtn: false, + editBtn: false, + delBtn: false, + selection: false, + menu: false, column: [ { - label: '鐢熷懡鍛ㄦ湡妯℃澘鍚�', + label: '灞炴�т俊鎭�', prop: 'id', - searchLabelWidth: 120, - search: true + sortable: true, + }, + ] + }, + indexAttrData: [], + indexData: [], + indexAttrVisible: false, + indexLeftNodeRow: {}, + indexForm: { + name: '', + desc: '' + }, + indexLeftData: [], + indexLeftOption: { + height: 'auto', + menu: false, + addBtn: false, + props: { + label: 'name', + value: 'id', + children: 'children', + }, + }, + indexOption: { + ...basicOption, + height: 280, + addBtn: false, + refreshBtn: false, + editBtn: false, + delBtn: false, + selection: false, + menu: false, + column: [ + { + label: '涓氬姟绫诲瀷鍚嶇О', + prop: 'typeName', + sortable: true, + }, + { + label: '绱㈠紩鍚嶇О', + prop: 'indexName', + sortable: true, + }, + { + label: '灞炴�у悕绉�', + prop: 'attrNames', + sortable: true, + }, + { + label: '鎻忚堪', + prop: 'desc', + sortable: true, + }, + ] + }, + indexVisible: false, + conDefaultCheckData: [], // 淇濈暀涓婁釜鎺ュ彛杩斿洖鐨勬暟鎹� + conCheckLoading: false, + conCheckOption: { + ...basicOption, + menu: false, + addBtn: false, + index: false, + selection: false, + refreshBtn: false, + header: false, + column: [ + { + label: '绫诲瀷鍚�', + prop: 'id', + width: 250, + }, + { + label: '鎿嶄綔', + prop: 'methods', + }, + { + label: '鐘舵��', + prop: 'status', + width: 250, } ] }, - dialogLifeLoading: false, - dialogLfeVisible: false, - dialogVersionDefalutData: [], // 鏌ヨ閲嶇疆榛樿鏁版嵁 - dialogSwitchValue: false, - dialogVersionSaveRow: {}, - dialogVersionVisible: false, - dialogVersionKey: Math.random(), - dialogVersionData: [], - dialogVersionOption: { + conCheckData: [], + conCheckVisible: false, + checkViewVisible: false, + checkViewData: [], + checkViewDataSearch: [], + checkViewLoading: false, + checkViewOption: { ...basicOption, addBtn: false, - selection: false, - refreshBtn: false, menu: false, - height: 450, searchMenuSpan: 8, - highlightCurrentRow: true, - // calcHeight: 100, + refreshBtn: false, + selection: false, + header: false, column: [ { - label: '鐗堟湰鍙疯鍒�', - prop: 'id', - searchLabelWidth: 110, + label: '鍚嶇О', + prop: 'name', + sortable: true, + }, + { + label: '鏉ユ簮', + prop: 'source', + sortable: true, search: true + }, + { + label: '璇存槑', + prop: 'description', } ] }, - dialogVersionLoading: false, + tipList: [ + "瀵煎叆涓氬姟鍚嶇О涓嶅彲涓虹┖涓旈摼鎺ョ被鍨嬪悕绉板彧鑳戒负鑻辨枃瀛楁瘝", + "瀵煎叆鐨勬枃浠跺寘鎷睘鎬с�佷笟鍔$被鍨嬨�佺敓鍛藉懆鏈熺瓑鏂囦欢", + "涓婁紶鐨勬枃浠朵负鍘嬬缉鏂囦欢锛屼笖鍘嬬缉鏍煎紡浠呰兘涓簔ip鏍煎紡" + ], + upFileType: ['zip'], + fileUrl: 'api/linkTypeController/impData', + createViewLoading: false, // 鍒涘缓瑙嗗浘 + versionAddFlag: false, + inheritTreeData: [], + lifeData: [],//鐢熷懡鍛ㄦ湡涓嬫媺鏁版嵁 + subLifeData: [],//澶囬�夌敓鍛藉懆鏈熶笅鎷夋暟鎹� + allLifeData: [], + versionData: [],//鐗堟湰瑙勫垯鏁版嵁 dialogAttrSelectList: [], searchAttrParams: {}, dialogAttrLoading: false, @@ -458,22 +659,29 @@ highlightCurrentRow: true, height: 450, searchMenuSpan: 8, + header: false, + selectable: function (row) { + return row.selectable; + }, column: [ { label: '灞炴�у悕', prop: 'id', sortable: true, search: true, + width: 260 }, { label: '灞炴�х被鍨�', prop: 'attributeDataType', sortable: true, + width: 150, }, { label: '鍒濆鍊�', prop: 'defaultValue', sortable: true, + width: 200 }, { label: '璇存槑', @@ -490,6 +698,9 @@ {required: true, message: '璇疯緭绫诲瀷鍚嶇О', trigger: 'blur'}, {validator: this.validateEnglishOnly, trigger: 'blur'} ], + imageName: [ + {required: true, message: '璇烽�夋嫨鍥炬爣', trigger: 'submit'}, + ], revLevel: [ {required: true, message: '璇烽�夋嫨鐗堟湰瑙勫垯', trigger: 'blur'}, ], @@ -503,24 +714,37 @@ editBtn: false, refreshBtn: false, selection: false, - height: 210, + height: 220, addBtn: false, + gridBtn: false, + columnBtn: false, + menuWidth: 100, // index:false, column: [ { label: '灞炴�у悕', prop: 'id', sortable: true, + width: 260, + }, + { + + prop: 'btmTypeId', + label: '涓氬姟绫诲瀷', + sortable: true, + width: 200 }, { label: '灞炴�х被鍨�', prop: 'attributeDataType', sortable: true, + width: 150, }, { label: '鍒濆鍊�', prop: 'defaultValue', sortable: true, + width: 200, }, { label: '璇存槑', @@ -544,22 +768,26 @@ { prop: 'id', label: '灞炴�у悕', - sortable: true + sortable: true, + width: 260 }, { prop: 'btmTypeId', label: '涓氬姟绫诲瀷', - sortable: true + sortable: true, + width: 200 }, { - prop: 'attrDataType', + prop: 'attributeDataType', label: '灞炴�х被鍨�', - sortable: true + sortable: true, + width: 150 }, { prop: 'defaultValue', label: '榛樿鍊�', - sortable: true + sortable: true, + width: 200 }, { prop: 'description', @@ -574,64 +802,240 @@ fName: '', // 缁ф壙鑷� implClass: '', // 瀹炵幇绫� description: '', // 鎻忚堪 - revLevel: '', // 鐗堟湰瑙勫垯 + revLevel: '2', // 鐗堟湰瑙勫垯 revisionRuleId: '',// 鐗堟湰鍙疯鍒� - inputRevisionFlag: false, // 鎵嬪伐杈撳叆 - versionRule: '', // 鐗堟鍙疯鍒� + inputRevisionFlag: false, // 鎵嬪伐杈撳叆, + delimiter: '', // 鍒嗛殧绗� + versionRule: '0', // 鐗堟鍙疯鍒� lifeCycleId: '', // 鐢熷懡鍛ㄦ湡 subLifeCycleId: '', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�, + subLifeCycleIdList: [], apNameArray: "", // 灞炴�ф睜鍒楄〃鈥欙紝鈥樺垎闅� }, nodeRow: {}, treeOption: { height: 'auto', - defaultExpandAll: false, + defaultExpandedKeys: ['topNode'], menu: false, addBtn: false, props: { - label: 'id', + label: 'TreeName', value: 'id', - children: 'children' + children: 'children', + name: 'name' } }, - treeData: [], + treeData: [ + { + TreeName: '涓氬姟绫诲瀷鏍�', + id: 'topNode', + children: [] + } + ], descriptionOption: { - labelStyle: 'text-align:center;width:100px;', - contentStyle: 'max-width:200px;text-align:center;word-break;break-all;' + labelStyle: 'text-align:center;width:110px;', + contentStyle: 'min-width:200px;text-align:center;word-break:break-all;' }, icons: { id: 'el-icon-finished', name: 'el-icon-tickets', desc: 'el-icon-chat-line-square' }, + treeLoading: false } }, created() { this.getTreeList(); + this.getVersionList(); + this.getLifeCycle(); + }, + computed: { + ...mapGetters(["permission"]), + permissionList() { + return { + addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false), + delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false), + editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false), + exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false), + importBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false), + consistencyCheckBtn: this.vaildData(this.permission[this.$route.query.id].USE, false), + createViewBtn: this.vaildData(this.permission[this.$route.query.id].ADD2, false), + createIndexBtn: this.vaildData(this.permission[this.$route.query.id].ADD3, false), + deleteDataBtn: this.vaildData(this.permission[this.$route.query.id].DELETE2, false), + deleteEveryTypeBtn: this.vaildData(this.permission[this.$route.query.id].DELETE3, false), + viewTheScopeBtn: this.vaildData(this.permission[this.$route.query.id].SEARCH, false), + }; + }, + }, + watch: { + 'form.lifeCycleId': { + handler(newval) { + if (this.form.lifeCycleId) { + this.subLifeData = this.allLifeData.filter(item => { + return item.id != this.form.lifeCycleId + }); + } else { + this.subLifeData = this.allLifeData + } + }, + } }, methods: { //鏍戣〃鏌ヨ getTreeList() { + this.treeLoading = true; getBizTypes().then(res => { const data = res.data.data.map(item => { - return item.attributes; + this.processChildren(item); // 澶勭悊姣忎釜鑺傜偣 + item.attributes.TreeName = item.attributes.id; + item.attributes.icon = item.attributes.imageName; + return item.attributes; // 杩斿洖澶勭悊鍚庣殑 attributes }); - this.treeData = data; - }) + this.treeData[0].children = data; + this.inheritTreeData = data; + this.treeLoading = false; + }); + }, + + // 澶勭悊鏍戝舰缁撴瀯 + processChildren(item) { + if (item.children && item.children.length > 0) { + item.attributes.children = item.children.map(child => { + child.attributes.TreeName = child.attributes.id; + child.attributes.icon = child.attributes.imageName; + this.processChildren(child); // 閫掑綊澶勭悊姣忎釜瀛愯妭鐐� + return child.attributes; // 鍙繑鍥炲瓙鑺傜偣鐨� attributes + }); + } }, // 鏍戠偣鍑� nodeClick(row) { - this.attrData = JSON.parse(row.attributes); + this.attrData = row.attributes ? JSON.parse(row.attributes) : []; this.nodeRow = row; }, - + //鑾峰彇鐗堟湰瑙勫垯鏁版嵁 + getVersionList() { + getVersionRuleAllList().then(res => { + this.versionData = res.data.data; + }); + }, + //鑾峰彇鐢熷懡鍛ㄦ湡鏁版嵁 + getLifeCycle() { + gridLifeCycle().then(res => { + this.allLifeData = res.data.data; + }); + }, // 鍒涘缓鎸夐挳 addClickHandler() { + if (func.isEmptyObject(this.nodeRow)) { + this.$message.error('璇烽�夋嫨瑕佹坊鍔犵殑鑺傜偣'); + return; + } this.title = 'add'; + this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id; + this.lifeData = this.allLifeData; + this.subLifeData = this.allLifeData; + this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 瀛楃涓瞗alse杞崲涓哄竷灏斿�� this.visible = true; }, + // 鏂板缂栬緫淇濆瓨 + addDialogSavaHandler() { + if (this.form.revLevel !== '0' && !this.form.inputRevisionFlag && (!this.form.revisionRuleId || this.form.revisionRuleId === "")) { + this.$message.error('璇锋鏌ョ増鏈彿瑙勫垯涓嶈兘涓虹┖'); + return; + } + this.form.lifeCycleIds = this.form.subLifeCycleIdList.join(','); + this.form.subLifeCycleId = this.form.subLifeCycleIdList.join(','); + this.form.apNameArray = this.dialogAttrData ? this.dialogAttrData.map(item => item.id).join(',') : ""; + this.$refs.form.validate((valid) => { + const saveFunction = this.title === 'add' ? addLifeCycle : updateLifeCycle; + if (valid) { + if (this.form.revLevel === 0) { + this.form.versionRule = ""; + } + saveFunction(this.form).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTreeList(); + this.resetForm(); + this.visible = false; + } + }) + } else { + return false; + } + }); + }, + + // 缂栬緫鎸夐挳鐐瑰嚮浜嬩欢 + editClickHandler() { + /** + * id 鍚嶇О + * name 鏍囩 + * implClass 瀹炵幇绫� + * fName 缁ф壙鑷� + * description 鎻忚堪 + * revLevel 鐗堟湰瑙勫垯 + * revisionRuleId 鐗堟湰鍙疯鍒� + * inputRevisionFlag 鎵嬪伐杈撳叆 + * delimiter 鍒嗛殧绗� + * versionRule 鐗堟鍙疯鍒� + * lifeCycleId 鐢熷懡鍛ㄦ湡 + * lifeCycleIds 鐢熷懡鍛ㄦ湡鍒楄〃 + * attributes 灞炴�ф睜鍒楄〃 + */ + if (func.isEmptyObject(this.nodeRow)) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + if (this.nodeRow.id === 'topNode') { + this.$message.error('璇烽�夋嫨瀛愯妭鐐硅繘琛屼慨鏀�') + return; + } + this.form = {...this.nodeRow}; + this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 瀛楃涓瞗alse杞崲涓哄竷灏斿�� + // this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id; + this.form.subLifeCycleIdList = this.nodeRow.lifeCycleIds ? this.nodeRow.lifeCycleIds.split(',') : []; + this.dialogAttrData = this.nodeRow.attributes ? JSON.parse(this.nodeRow.attributes) : []; + + function processChildren(item, fName) { + if (item.children && item.children.length > 0) { + item.children = item.children.map(child => { + processChildren(child, fName); // 閫掑綊澶勭悊姣忎釜瀛愯妭鐐� + if (fName == child.id) { + child.disabled = true; + } else { + child.disabled = false; + } + return child; + }); + } + }; + const inheritTreeData = this.inheritTreeData.map(item => { + processChildren(item, this.form.id); // 澶勭悊姣忎釜鑺傜偣 + if (this.form.id == item.id) { + item.disabled = true; + } else { + item.disabled = false; + } + return item; + }); + this.inheritTreeData = inheritTreeData + this.title = 'edit'; + this.visible = true; + }, + + subLifeChange(data) { + if (data.value.length == 0) { + this.lifeData = this.allLifeData + } else { + this.lifeData = this.allLifeData.filter(item => { + return !data.value.includes(item.id) + }); + } + }, // 瀵硅瘽妗� 灞炴�ф睜鍒楄〃澧炲姞鎸夐挳 addDialogClickHandler() { this.dialogAttrLoading = true; @@ -643,7 +1047,10 @@ // 鏌ヨ灞炴�ф睜鍒楄〃鏁版嵁 getAttrDialogDta() { gridAttribute(this.attrPage.currentPage, this.attrPage.pageSize, this.searchAttrParams).then(res => { - const data = res.data.data; + const data = res.data.data.map(item => { + item.selectable = !this.dialogAttrData.some(existingItem => existingItem.id === item.id); + return item; + }); this.dialogAttrSaveData = data; this.attrPage.total = res.data.total; this.dialogAttrLoading = false; @@ -665,7 +1072,9 @@ // 娣诲姞灞炴�ф睜 琛岀偣鍑� dialogAttrRowClickHandler(row) { - + if (!row.selectable) { + return; + } func.rowClickHandler( row, this.$refs.dialogAttrCrud, @@ -674,7 +1083,7 @@ this.attrLastIndex = newIndex; }, () => { - this.selectList = []; + this.dialogAttrSelectList = [row]; } ); }, @@ -713,165 +1122,20 @@ // 娣诲姞灞炴�ф睜 淇濆瓨 dialogAttrAddClickHandler() { - let hasDuplicate = false; - - // 鍏堝垱寤轰竴涓复鏃舵暟缁勬潵瀛樺偍涓嶉噸澶嶇殑椤� - const newItems = []; - this.dialogAttrSelectList.forEach(item => { - const exists = this.dialogAttrData.some(existingItem => existingItem.id === item.id); - - if (exists) { - hasDuplicate = true; - return; - } - - // 濡傛灉娌℃湁閲嶅椤癸紝鍒欏皢璇ラ」娣诲姞鍒颁复鏃舵暟缁勪腑 - newItems.push({ + this.dialogAttrData.push({ id: item.id, attributeDataType: item.attributeDataType, defaultValue: item.defaultValue, description: item.description }); }); - - if (hasDuplicate) { - this.$message.error('璇锋鏌ユ槸鍚︽湁娣诲姞閲嶅椤癸紒'); - } else { - // 濡傛灉娌℃湁閲嶅椤癸紝灏嗘柊椤规坊鍔犲埌 dialogAttrData - this.dialogAttrData.push(...newItems); - this.attrPollDialogVisible = false; - } + this.attrPollDialogVisible = false; }, - // 鐗堟湰瑙勫垯绠$悊娣诲姞 - versionAddHandler() { - this.dialogVersionVisible = true; - this.dialogVersionKey = Math.random(); // 鎵撳紑鏃跺埛鏂拌〃鏍奸伩鍏嶈〃鏍奸敊琛� - this.dialogVersionLoading = true; - getVersionRuleAllList().then(res => { - const data = res.data.data.map(item => { - return { - id: item.id - } - }); - this.dialogVersionData = data; - this.dialogVersionDefalutData = data; - this.dialogVersionLoading = false; - }).catch(err => { - this.$message.error(err) - }); - }, - - // 鐗堟湰瑙勫垯琛岀偣鍑� - dialogVersionRowClick(row) { - this.dialogVersionSaveRow = row; - }, - - // 鐗堟湰瑙勫垯鎼滅储 - versionHandleSearch(params, done) { - const {id} = params; - - if (!params.id) { - this.dialogVersionData = this.dialogVersionDefalutData; - return done(); - } - ; - - this.dialogVersionData = this.dialogVersionDefalutData.filter(item => { - return item.id && item.id.includes(id); - }); - - done(); - - }, - - // 鐗堟湰绠$悊缃┖ - versionHandleReset() { - this.dialogVersionData = this.dialogVersionDefalutData; - }, - - // 鐗堟湰鍙疯鍒欎繚瀛� - dialogVersionAddClickHandler() { - if (func.isEmptyObject(this.dialogVersionSaveRow)) { - this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); - return; - } - this.form.revisionRuleId = this.dialogVersionSaveRow.id; - this.dialogVersionVisible = false; - }, - - // 鐢熷懡鍛ㄦ湡鏂板 - lifeAddHandler(val) { - this.dialogLfeVisible = true; - this.dialogLifeKey = Math.random(); // 鎵撳紑鏃跺埛鏂拌〃鏍奸伩鍏嶈〃鏍奸敊琛� - this.dialogLifeLoading = true; - this.lifeType = val; - gridLifeCycle().then(res => { - const data = res.data.data.map(item => { - return { - id: item.id - } - }); - this.dialogLifeData = data; - this.dialogLifeDefalutData = data; - this.dialogLifeLoading = false - }).catch(err => { - this.$message.error(err) - }); - }, - - // 鐢熷懡鍛ㄦ湡琛岀偣鍑� - dialogLifeRowClick(row) { - this.dialogLifeSaveRow = row; - }, - - // 鐢熷懡鍛ㄦ湡淇濆瓨 - dialogLifeAddClickHandler() { - if (func.isEmptyObject(this.dialogLifeSaveRow)) { - this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); - return; - } - if (this.lifeType === 'input') { - this.form.lifeCycleId = this.dialogLifeSaveRow.id; - } else { - const flag = this.dialogLifeTable.some(item => item.id === this.dialogLifeSaveRow.id); - - if (flag) { - this.$message.error('宸插瓨鍦ㄧ浉鍚岀殑鏁版嵁锛岃娣诲姞鍏朵粬鏁版嵁'); - return; - } - this.dialogLifeTable.push(this.dialogLifeSaveRow); - } - this.dialogLfeVisible = false; - }, - - // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛ㄧЩ闄� - dialogDeleteLifeTable(index) { - this.dialogLifeTable.splice(index, 1) - }, - - // 鐢熷懡鍛ㄦ湡鎼滅储 - lifeHandleSearch(params, done) { - const {id} = params; - - if (!params.id) { - this.dialogLifeData = this.dialogLifeDefalutData; - return done(); - } - ; - - this.dialogLifeData = this.dialogLifeDefalutData.filter(item => { - return item.id && item.id.includes(id); - }); - - done(); - - }, - - // 鐢熷懡鍛ㄦ湡閲嶇疆 - lifeHandleReset() { - this.dialogLifeData = this.dialogLifeDefalutData; + // 灞炴�ф睜鍒犻櫎 + dialogBottomAttrDel(form, index) { + this.dialogAttrData.splice(index, 1); }, // 鍙兘杈撳叆鑻辨枃姝e垯鏍¢獙 @@ -885,28 +1149,326 @@ callback(); // 楠岃瘉閫氳繃 }, - // 鏂板缂栬緫淇濆瓨 - addDialogSavaHandler() { - console.log(this.form) - this.$refs.form.validate((valid) => { - if (valid) { - addLifeCycle(this.form).then(res => { - console.log(res); + // 娓呯┖琛ㄥ崟 + resetForm() { + const form = { + id: '', // 绫诲瀷鍚嶇О + name: '', // 鏍囩 + fName: '', // 缁ф壙鑷� + implClass: '', // 瀹炵幇绫� + description: '', // 鎻忚堪 + revLevel: '2', // 鐗堟湰瑙勫垯 + revisionRuleId: '',// 鐗堟湰鍙疯鍒� + inputRevisionFlag: 'false', // 鎵嬪伐杈撳叆 + delimiter: '', // 鍒嗛殧绗� + versionRule: '0', // 鐗堟鍙疯鍒� + lifeCycleId: '', // 鐢熷懡鍛ㄦ湡 + subLifeCycleId: '', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�, + subLifeCycleIdList: [], + lifeCycleIds: '', + apNameArray: "", // 灞炴�ф睜鍒楄〃鈥欙紝鈥樺垎闅� + }; + this.dialogAttrData = []; // 灏嗗睘鎬ф睜琛ㄦ牸缃┖ + this.form = {...form}; + this.$refs.form.clearValidate(); + }, + + // 鏂板缂栬緫瀵硅瘽妗嗗彇娑� + addDialogClose() { + this.resetForm(); + this.visible = false; + }, + + // 鐗堟湰瑙勫垯鍒囨崲 缃┖鍏朵粬鏉′欢 + revLevelChange() { + this.form.inputRevisionFlag = false; + this.form.delimiter = ""; + this.form.versionRule = "0"; + this.form.revisionRuleId = ""; + }, + + // 鍒犻櫎鎸夐挳 + deleteClickHandler() { + if (func.isEmptyObject(this.nodeRow)) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + + this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + const {id, oid, ts} = this.nodeRow; + const obj = {id, oid, ts}; + deleteBtmType(obj).then(res => { + if (res.data.code === 200) { + this.$message.success(res.data.obj); + this.getTreeList(); + } + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + + // 鍒涘缓瑙嗗浘 + createViewClickHandler() { + this.createViewLoading = true; + createView().then(res => { + if (res.data.code === 200) { + this.createViewLoading = false; + this.$message.success(res.data.obj); + } + }).catch(err => { + this.createViewLoading = false; + }) + }, + + // 瀵煎嚭 + exportClickHandler() { + if (func.isEmptyObject(this.nodeRow)) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + let name = this.nodeRow.id; + expData({name: name}).then(res => { + func.downloadFileByBlobHandler(res); + this.$message.success('瀵煎嚭鎴愬姛'); + }).catch(err => { + this.$message.error(err); + }); + }, + + // 瀵煎叆 + upLoadClickHandler() { + this.$refs.upload.visible = true; + }, + + // 鏌ョ湅浣跨敤鑼冨洿鎸夐挳 + checkViewClickHandler() { + if (func.isEmptyObject(this.nodeRow)) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹紒'); + return; + } + getUsedBtmLinkList({btmName: this.nodeRow.id}).then(res => { + if (res.data.code === 200) { + this.checkViewVisible = true; + const data = res.data.data.map(item => { + return { + name: this.nodeRow.id, + source: item + } + }); + this.checkViewData = data; + this.checkViewDataSearch = data; + } + }) + }, + + // 鏌ョ湅浣跨敤鑼冨洿鏌ヨ + checkHandleSearch(params, done) { + const {source} = params; + + if (!params.source) { + this.checkViewData = this.checkViewDataSearch; + return done(); + } + + this.checkViewData = this.checkViewDataSearch.filter(item => { + return item.source && item.source.includes(source); + }); + + done(); + + }, + + // 鏌ョ湅浣跨敤鑼冨洿閲嶇疆 + checkHandleReset() { + this.checkViewData = this.checkViewDataSearch; + }, + + // 涓�鑷存�ф鏌ユ寜閽偣鍑� + checkClickHandler() { + this.createViewLoading = true; + checkBtmConsistency().then(res => { + this.createViewLoading = false; + if (res && res.data && res.data.data) { + this.conCheckVisible = true; + this.conCheckLoading = true; + if (res.data.code === 200) { + const data = res.data.data[0]; + this.conDefaultCheckData = data; // 淇濈暀涓�浠藉師濮嬫暟鎹� + this.conCheckLoading = false; + const outputData = []; + Object.entries(data).forEach(([id, methods]) => { + let action; + + if (methods.includes('_CREATE')) { + action = methods.replace('_CREATE', '鍒涘缓琛�'); + } else if (methods.includes('_ADD')) { + action = methods.replace('_ADD', '澧炲姞鍒�'); + } else if (methods.includes('_DROP')) { + action = methods.replace('_DROP', '绉婚櫎鍒�'); + } else { + action = '鏈煡'; + } + outputData.push({ + id: id, + methods: action, + status: '鏈慨澶�' + }) + }) + this.conCheckData = outputData; + } + } else { + this.$message.success(res.data.msg); + } + }) + }, + + // 淇涓�鑷存�ф鏌� + repairClickHandler() { + const params = this.conDefaultCheckData; + executeRepair(params).then(res => { + if (res.data.obj) { + this.$message.success('淇鎴愬姛'); + this.conCheckData = []; + } else { + this.$message.error('淇澶辫触锛岃閲嶆柊灏濊瘯锛�'); + } + this.conCheckVisible = false; + }) + }, + + // 鍒涘缓绱㈠紩鎸夐挳鐐瑰嚮 + indexClickHandler() { + if (func.isEmptyObject(this.nodeRow)) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + this.getLeftIndex(); + this.indexVisible = true; + }, + + // 宸︿晶鏍戞洿鏂� + getLeftIndex() { + const params = { + "conditionMap[typename]": this.nodeRow.id + } + getIndexByCondition(params).then(res => { + if (res.data.code === 200) { + const data = res.data.data.map(item => { + return { + indexName: item.indexName, + name: `${item.indexName} ${item.attrNames}`, + id: item.oid + } }) - } else { - return false; + this.indexLeftData = data; } - }); + }) + }, - this.$refs.form.validate((valid) => { - if (valid) { - } else { - return false; + // 绱㈠紩宸︿晶鏍戠偣鍑� + indexLeftNodeClick(row) { + this.indexLeftNodeRow = row; + }, + + // 鍒犻櫎宸︿晶鏍戠储寮� + deleteIndexLeftTreeClickHandler() { + if (func.isEmptyObject(this.indexLeftNodeRow)) { + this.$message.error('璇烽�夋嫨涓�鏉℃暟鎹繘琛屽垹闄�'); + return; + } + const params = { + btmName: this.nodeRow.id, + indexName: this.indexLeftNodeRow.indexName + }; + delIndex(params).then(res => { + if (res.data.code === 200) { + this.$message.success('鍒犻櫎绱㈠紩鎴愬姛'); + this.getLeftIndex(); } - }); + }) + }, + //鍙充晶琛ㄦ牸娣诲姞灞炴�� + indexAttrClickAddHandler() { + if (func.isEmptyObject(this.indexAttrRow)) { + this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�'); + return; + } + this.indexData.push( + { + typeName: this.nodeRow.id, + attrNames: this.indexAttrRow.id, + indexName: this.indexForm.name, + desc: this.indexForm.desc + } + ) + this.indexFormRead = true; + this.indexAttrVisible = false; + }, + + // 鍙充晶灞炴�ц〃鏍艰鐐瑰嚮 + indexAttrRowClick(row) { + this.indexAttrRow = row; + }, + + // 鍙充晶琛ㄦ牸澧炲姞 + rightIndexAddClick() { + if (!this.indexForm.name) { + this.$message.error('璇疯緭鍏ョ储寮曞悕绉�'); + return; + } + + // 妫�鏌ユ槸鍚︿负鑻辨枃瀛楃 + const englishRegex = /^[A-Za-z]+$/; + if (!englishRegex.test(this.indexForm.name)) { + this.$message.error('绱㈠紩鍚嶇О鍙兘鍖呭惈鑻辨枃瀛楃'); + return; + } + this.indexLoading = true; + getAllAttributesByBtmId({btmId: this.nodeRow.id}).then(res => { + if (res.data.code === 200) { + const data = res.data.data.map(item => { + return { + id: item.id + } + }) + this.indexAttrData = data; + } + this.indexLoading = false; + this.indexAttrVisible = true; + }) + }, + + // 鍒涘缓淇濆瓨绱㈠紩 + indexClickAddHandler() { + const params = { + typeName: this.nodeRow.id, + attrNames: this.indexData.map(item => item.attrNames).join(','), + indexName: this.indexForm.name, + } + addIndex([params]).then(res => { + this.$message.success('鍒涘缓鎴愬姛'); + this.indexDialogClose(); + }).catch(err => { + this.indexDialogClose(); + }) + }, + + // 绱㈠紩瀵硅瘽妗嗗彇娑� + indexDialogClose() { + this.indexFormRead = false; + this.indexForm = {}; + this.indexData = []; + this.indexVisible = false; } - } } </script> @@ -926,66 +1488,30 @@ width: 100%; } - .headerCon { - .el-button { - width: 82px; - } - } -} - -.headerCon { - display: flex; - flex-wrap: wrap; - margin-bottom: 5px; - - .el-button + .el-button { - margin-left: 5px; + .el-tag { + line-height: 22px; + height: 24px; } - .el-button { - margin-top: 5px; + .el-radio { + margin-right: 20px; } -} - -.headerCon > .el-button:nth-child(4) { - margin-left: 0; -} - -.headerCon > .el-button:nth-child(7) { - margin-left: 0; -} - -.headerCon > .el-button:nth-child(10) { - margin-left: 0; -} - -.miniBtn { - width: 82px; - text-align: center; - padding-left: 7px; -} - -.smallBtn { - width: 82px; - text-align: center; - padding-left: 4.5px; } .descBox { - width: 32%; - margin-left: 20px; + margin-right: 20px; } .dialogForm { display: flex; - justify-content: space-around; + justify-content: space-between; } .dialogForm > div { - width: 29%; - border: 1px solid #eee; - padding: 25px 20px 5px 10px; /* 涓� 鍙� 涓� 宸� */ - box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* 娣诲姞闃村奖鏁堟灉 */ + border: 1px solid #EBEEF5; + border-radius: 2px; + padding: 15px 20px 0 10px; /* 涓� 鍙� 涓� 宸� */ + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); /* 娣诲姞闃村奖鏁堟灉 */ } -- Gitblit v1.9.3