457 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			457 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|   | <template> | |||
|  |     <el-container | |||
|  |             id="methodObject" | |||
|  |             v-loading="loading" | |||
|  |             :element-loading-text="loadingText"> | |||
|  |         <el-header :style="{'padding': '0px 20px', height: headerHeight}"> | |||
|  |             <div class="header-div"> | |||
|  |                 <div :style="{'background-color': icon.color}" class="icon-div-repository"> | |||
|  |                     <i class="awsui-iconfont icon-dynamic-repository" v-html="icon.code"></i> | |||
|  |                 </div> | |||
|  |                 <div class="div-repository-title"> | |||
|  |                     <span class="text-general-color"> | |||
|  |                         {{methodName}} | |||
|  |                     </span> | |||
|  |                     <p class="text-second-color header-method-id"> | |||
|  |                         <b>({{methodId}})</b> | |||
|  |                     </p> | |||
|  |                 </div> | |||
|  |                 <div class="header-method-attr-config-icon"> | |||
|  |                     <el-tooltip content="文件属性配置" placement="bottom" :hide-after=2000> | |||
|  |                         <i style="cursor: pointer;" class="iconfont" @click="handleFileAttrConfig"></i> | |||
|  |                     </el-tooltip> | |||
|  |                 </div> | |||
|  |             </div> | |||
|  |         </el-header> | |||
|  |         <el-main style="padding: 0px 20px;"> | |||
|  |             <el-table | |||
|  |                     ref="table" | |||
|  |                     @row-click="clickTableRow" | |||
|  |                     highlight-current-row | |||
|  |                     :height="tableHeight" | |||
|  |                     :data="tableData" | |||
|  |                     size="small"> | |||
|  |                 <el-table-column | |||
|  |                         prop="no" | |||
|  |                         label="序号" | |||
|  |                         width="80" | |||
|  |                         align="center"> | |||
|  |                 </el-table-column> | |||
|  |                 <el-table-column | |||
|  |                         prop="icon" | |||
|  |                         label="图标" | |||
|  |                         width="130"> | |||
|  |                     <template slot-scope="scope"> | |||
|  |                         <img :src="scope.row.icon"> | |||
|  |                     </template> | |||
|  |                 </el-table-column> | |||
|  |                 <el-table-column | |||
|  |                         prop="name" | |||
|  |                         label="名称" | |||
|  |                         width="250"> | |||
|  |                 </el-table-column> | |||
|  |                 <el-table-column | |||
|  |                         prop="id" | |||
|  |                         label="ID"> | |||
|  |                 </el-table-column> | |||
|  |                 <el-table-column | |||
|  |                         prop="modelName" | |||
|  |                         label="所属模型" | |||
|  |                         width="180"> | |||
|  |                 </el-table-column> | |||
|  |                 <el-table-column | |||
|  |                         prop="modelId" | |||
|  |                         label="模型ID" | |||
|  |                         width="200"> | |||
|  |                 </el-table-column> | |||
|  |                 <el-table-column | |||
|  |                         prop="type" | |||
|  |                         label="类型" | |||
|  |                         width="200"> | |||
|  |                 </el-table-column> | |||
|  |                 <el-table-column | |||
|  |                         prop="operate" | |||
|  |                         label="操作" | |||
|  |                         align="center" | |||
|  |                         width="100"> | |||
|  |                     <template slot-scope="scope"> | |||
|  |                         <div class="operate-icon-display" style="text-align: center;height: 30px;line-height: 30px;"> | |||
|  |                             <p class="text-second-color"> | |||
|  |                                 <el-tooltip v-if="scope.row.showShapeConfig" content="数据显示规则配置" placement="bottom" :hide-after=2000> | |||
|  |                                     <i style="display: inline-block;cursor: pointer;margin-right: 10px;" class="iconfont" @click="handleShapeAnchorConfig(scope.row.id)"></i> | |||
|  |                                 </el-tooltip> | |||
|  |                                 <el-tooltip content="形状属性配置" placement="bottom" :hide-after=2000> | |||
|  |                                     <i style="display: inline-block;cursor: pointer;position: relative;font-size: 23px;top: 3px;" class="iconfont" @click="handleShapeAttrConfig(scope.row.id)"></i> | |||
|  |                                 </el-tooltip> | |||
|  |                             </p> | |||
|  |                         </div> | |||
|  |                     </template> | |||
|  |                 </el-table-column> | |||
|  |             </el-table> | |||
|  |         </el-main> | |||
|  |         <awsui-sidebar | |||
|  |                 :title=drawer.title | |||
|  |                 :append-to-body=false | |||
|  |                 :modal-append-to-body=false | |||
|  |                 :destroy-on-close=true | |||
|  |                 :modal=false | |||
|  |                 :visible.sync="drawer.visible" | |||
|  |                 :before-close="handleDrawerClose"> | |||
|  |             <div v-loading="drawer.loading"> | |||
|  |                 <div id="drawerBody" style="overflow-y: auto;"> | |||
|  |                     <!-- 扩展属性 --> | |||
|  |                     <div v-for="item in drawer.data" class="attr-row" @click="(item.isUse ? item.isUse = false : item.isUse = true)"> | |||
|  |                         <span>{{item.name}}<span class="text-second-color" style="font-size=12px;">({{item.id}})</span></span> | |||
|  |                         <i v-if="item.isUse" class="awsui-iconfont" style="float: right;color: #4E7FF9;"></i> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  |                 <div class="drawer-footer" :style="{'background-color': '#F2F2F2', height: drawer.footerHeight}"> | |||
|  |                     <div id="drawerFooter" style="float: right;position: relative;top: 9px;"> | |||
|  |                         <awsui-button size="large" style="width: 80px;" class="button-general-color" type="primary" :disabled="drawer.buttonDisabled" @click="saveAttrConfig">保存</awsui-button> | |||
|  |                         <awsui-button size="large" style="width: 80px;" @click="closeDrawer">取消</awsui-button> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  |             </div> | |||
|  |         </awsui-sidebar> | |||
|  |         <MethodShapeAnchorDlg | |||
|  |                 ref="methodShapeAnchorDlg" | |||
|  |                 :visible.sync="shapeAnchorConfig.visible" | |||
|  |                 :type="shapeAnchorConfig.type" | |||
|  |                 :methodId="shapeAnchorConfig.methodId" | |||
|  |                 :shapeName="shapeAnchorConfig.shapeName" | |||
|  |                 :wsId="shapeAnchorConfig.wsId" | |||
|  |                 v-on:cancel="shapeAnchorConfig.visible = false" | |||
|  |                 v-on:getResult="handleSaveShapeAnchorConfig" | |||
|  |                 /> | |||
|  |     </el-container> | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  |     import awsuiAxios from "../../awsuiAxios"; | |||
|  |     import MethodShapeAnchorDlg from "./MethodShapeAnchorDlg"; | |||
|  | 
 | |||
|  |     export default { | |||
|  |         name: "MethodObject", | |||
|  |         components: {MethodShapeAnchorDlg}, | |||
|  |         props: { | |||
|  |             parentHeaderHeight: { | |||
|  |                 type: String, | |||
|  |                 default: '0px' | |||
|  |             }, | |||
|  |             methodId: { | |||
|  |                 type: String, | |||
|  |                 default: '' | |||
|  |             }, | |||
|  |             methodName: { | |||
|  |                 type: String, | |||
|  |                 default: '' | |||
|  |             }, | |||
|  |             searchInput: { | |||
|  |                 type: String, | |||
|  |                 default: '' | |||
|  |             } | |||
|  |         }, | |||
|  |         data() { | |||
|  |             return { | |||
|  |                 loading: false, | |||
|  |                 loadingText: "加载中", | |||
|  |                 headerHeight: '45px', | |||
|  |                 tableHeight: (parseInt(this.$store.getters.getTopMainHeightFn) - 45 - parseInt(this.parentHeaderHeight)) + 'px', | |||
|  |                 tableData: [], | |||
|  |                 tableTempData: [], | |||
|  |                 icon: { | |||
|  |                     code: '', | |||
|  |                     color: '' | |||
|  |                 }, | |||
|  |                 drawer: { | |||
|  |                     title: '文件属性配置', | |||
|  |                     visible: false, | |||
|  |                     loading: false, | |||
|  |                     data: [], | |||
|  |                     type: 'file',// shape,file
 | |||
|  |                     shapeName: '', | |||
|  |                     footerHeight: '50px', | |||
|  |                     buttonDisabled: false | |||
|  |                 }, | |||
|  |                 shapeAnchorConfig: { | |||
|  |                     visible: false, | |||
|  |                     type: 'commonShapeConfig', | |||
|  |                     methodId: '', | |||
|  |                     shapeName: '', | |||
|  |                     wsId: '' | |||
|  |                 } | |||
|  |             } | |||
|  |         }, | |||
|  |         mounted() { | |||
|  |             this.initData(); | |||
|  |         }, | |||
|  |         methods: { | |||
|  |             initData() {// 初始化数据查询
 | |||
|  |                 const that = this; | |||
|  |                 that.loadingText = '加载中'; | |||
|  |                 that.loading = true; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_shape_definition_data_query', | |||
|  |                         methodId: that.methodId | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     that.loading = false; | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         for (let i = 0; i < ro.data.data.length; i++) { | |||
|  |                             ro.data.data[i].no = i + 1; | |||
|  |                             that.tableTempData.push(ro.data.data[i]); | |||
|  |                         } | |||
|  |                         that.icon = ro.data.icon; | |||
|  |                         that.search(that.searchInput); | |||
|  |                     } else { | |||
|  |                         alert('请求响应错误'); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                     that.loading = false; | |||
|  |                 }) | |||
|  |             }, | |||
|  |             handleDataNo(data) {// 处理数据的序号
 | |||
|  |                 for (let i = 0; i < data.length; i++) { | |||
|  |                     data[i].no = i+1; | |||
|  |                 } | |||
|  |                 return data; | |||
|  |             }, | |||
|  |             search(searchInput) { | |||
|  |                 if (searchInput && searchInput.trim() != '') {// 根据条件搜索
 | |||
|  |                     const data = []; | |||
|  |                     for (let i = 0; i < this.tableTempData.length; i++) { | |||
|  |                         if (this.tableTempData[i].name.indexOf(searchInput) > -1) { | |||
|  |                             data.push(this.tableTempData[i]); | |||
|  |                         } | |||
|  |                     } | |||
|  |                     this.tableData = this.handleDataNo(data); | |||
|  |                 } else {// 显示全部
 | |||
|  |                     this.tableData = this.handleDataNo(this.tableTempData); | |||
|  |                 } | |||
|  |             }, | |||
|  |             clickTableRow(row, column, event) { | |||
|  |                 this.$refs.table.setCurrentRow(row); | |||
|  |             }, | |||
|  |             /**********文件/形状属性配置***********/ | |||
|  |             handleShapeAttrConfig(shapeName) {// 形状属性配置
 | |||
|  |                 const that = this; | |||
|  |                 that.drawer.buttonDisabled = false; | |||
|  |                 that.drawer.data = []; | |||
|  |                 that.drawer.title = '形状属性配置'; | |||
|  |                 that.drawer.type = 'shape'; | |||
|  |                 that.drawer.shapeName = shapeName; | |||
|  |                 that.drawer.visible = true; | |||
|  |                 that.$nextTick(function(){ | |||
|  |                     that.initDrawerBodyHeight(); | |||
|  |                 }); | |||
|  |                 that.drawer.loading = true; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_shape_more_attr_config_query', | |||
|  |                         methodId: that.methodId, | |||
|  |                         shapeName: shapeName, | |||
|  |                         wsId: that.$store.getters.getWsIdFn | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     that.drawer.loading = false; | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         that.drawer.data = ro.data; | |||
|  |                     } else { | |||
|  |                         alert('请求响应错误'); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                     that.drawer.loading = false; | |||
|  |                 }) | |||
|  |             }, | |||
|  |             handleFileAttrConfig() { | |||
|  |                 const that = this; | |||
|  |                 that.drawer.buttonDisabled = false; | |||
|  |                 that.drawer.data = []; | |||
|  |                 that.drawer.title = '文件属性配置'; | |||
|  |                 that.drawer.type = 'file'; | |||
|  |                 that.drawer.shapeName = ''; | |||
|  |                 that.drawer.visible = true; | |||
|  |                 that.$nextTick(function(){ | |||
|  |                     that.initDrawerBodyHeight(); | |||
|  |                 }); | |||
|  |                 that.drawer.loading = true; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_file_more_attr_config_query', | |||
|  |                         methodId: that.methodId, | |||
|  |                         wsId: that.$store.getters.getWsIdFn | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     that.drawer.loading = false; | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         that.drawer.data = ro.data.moreAttr; | |||
|  |                     } else { | |||
|  |                         alert('请求响应错误'); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                     that.drawer.loading = false; | |||
|  |                 }) | |||
|  |             }, | |||
|  |             saveAttrConfig() {// 保存更多配置
 | |||
|  |                 const that = this; | |||
|  |                 const type = that.drawer.type; | |||
|  |                 if (that.drawer.data.length == 0) { | |||
|  |                     that.$message({message: '无相关属性进行保存',type: 'warning'}); | |||
|  |                     return; | |||
|  |                 } | |||
|  |                 that.drawer.buttonDisabled = true; | |||
|  |                 that.closeDrawer(); | |||
|  |                 that.loadingText = '正在更新资产库文件' | |||
|  |                 that.loading = true; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_more_attr_config_save', | |||
|  |                         attrData: JSON.stringify(that.drawer.data), | |||
|  |                         wsId: that.$store.getters.getWsIdFn, | |||
|  |                         type: that.drawer.type, | |||
|  |                         shapeName: that.drawer.shapeName, | |||
|  |                         methodId: that.methodId | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 // 查询数据
 | |||
|  |                 awsuiAxios.post(params).then(function (ro) { | |||
|  |                     that.loading = false; | |||
|  |                     if(ro.result == 'ok') { | |||
|  |                         that.$message({message: '更新成功',type: 'success'}); | |||
|  |                     } else { | |||
|  |                         that.$message.error(ro.msg); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                 }) | |||
|  |             }, | |||
|  |             closeDrawer() {// 关闭drawer
 | |||
|  |                 this.drawer.visible = false; | |||
|  |             }, | |||
|  |             handleDrawerClose(done) { | |||
|  |                 done(); | |||
|  |             }, | |||
|  |             initDrawerBodyHeight() { | |||
|  |                 if (document.getElementById("drawerBody") != null) { | |||
|  |                     document.getElementById("drawerBody").style.height = | |||
|  |                         parseInt(this.tableHeight) + parseInt(this.headerHeight) + parseInt(this.parentHeaderHeight) - 58 - parseInt(this.drawer.footerHeight) + 'px';// 68是drawer标题高度
 | |||
|  |                 } | |||
|  |             }, | |||
|  |             /********形状锚点配置*********/ | |||
|  |             handleShapeAnchorConfig(shapeName) { | |||
|  |                 this.shapeAnchorConfig.wsId = this.$store.getters.getWsIdFn; | |||
|  |                 this.shapeAnchorConfig.methodId = this.methodId; | |||
|  |                 this.shapeAnchorConfig.shapeName = shapeName; | |||
|  |                 this.shapeAnchorConfig.visible = true; | |||
|  |             }, | |||
|  |             handleSaveShapeAnchorConfig(result) { | |||
|  |                 const that = this; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_shape_config_save', | |||
|  |                         wsId: result.wsId, | |||
|  |                         methodId: result.methodId, | |||
|  |                         shapeId: result.shapeId, | |||
|  |                         data: JSON.stringify(result.data) | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         that.shapeAnchorConfig.visible = false; | |||
|  |                         that.$message({showClose: true,message: '保存成功',type: 'success'}); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                 }) | |||
|  |             } | |||
|  |         }, | |||
|  |         computed: { | |||
|  |             listenTopMainHeight() { | |||
|  |                 return this.$store.getters.getTopMainHeightFn; | |||
|  |             } | |||
|  |         }, | |||
|  |         watch: { | |||
|  |             listenTopMainHeight: function (newd, old) { | |||
|  |                 this.tableHeight = (parseInt(newd)) - parseInt(this.headerHeight) - parseInt(this.parentHeaderHeight) + 'px'; | |||
|  |                 this.initDrawerBodyHeight(); | |||
|  |             } | |||
|  |         } | |||
|  |     } | |||
|  | </script> | |||
|  | 
 | |||
|  | <style scoped> | |||
|  |     #methodObject >>> .awsui-sidebar__header { | |||
|  |         margin-bottom: 0px; | |||
|  |         padding: 15px 20px 15px 20px; | |||
|  |         border-bottom: 1px solid #f2f2f2; | |||
|  |         font-size: 16px; | |||
|  |     } | |||
|  |     .icon-div-repository { | |||
|  |         border-radius: 50%; | |||
|  |         margin-left: 15px; | |||
|  |         display: inline-block; | |||
|  |         width: 30px; | |||
|  |         height: 30px; | |||
|  |         text-align: center; | |||
|  |         line-height: 30px; | |||
|  |         vertical-align: middle; | |||
|  |     } | |||
|  |     .icon-dynamic-repository { | |||
|  |         color: white; | |||
|  |         font-size: 16px; | |||
|  |         /*position: relative;*/ | |||
|  |         /*top: -1px;*/ | |||
|  |     } | |||
|  |     .div-repository-title { | |||
|  |         display: inline-block; | |||
|  |         position: relative; | |||
|  |         left: 10px; | |||
|  |         text-align: center; | |||
|  |         height: 30px; | |||
|  |         line-height: 30px; | |||
|  |         vertical-align: middle; | |||
|  |     } | |||
|  |     .attr-row { | |||
|  |         padding: 10px 20px; | |||
|  |         height: 35px; | |||
|  |         line-height: 35px; | |||
|  |         vertical-align: middle; | |||
|  |     } | |||
|  |     .attr-row:hover { | |||
|  |         background-color: #f2f2f2; | |||
|  |     } | |||
|  |     .header-div { | |||
|  |         width: 100%; | |||
|  |         height: 100%; | |||
|  |         background-color: #F5F7FA; | |||
|  |         line-height: 43px; | |||
|  |         vertical-align: middle; | |||
|  |     } | |||
|  |     .header-method-id { | |||
|  |         display:inline-block; | |||
|  |         font-size:12px; | |||
|  |         /*-webkit-transform: scale(0.9);*/ | |||
|  |         position: relative; | |||
|  |         left: 0px; | |||
|  |     } | |||
|  |     .header-method-attr-config-icon { | |||
|  |         display:inline-block; | |||
|  |         height: 30px; | |||
|  |         line-height: 30px; | |||
|  |         vertical-align: middle; | |||
|  |         position:relative; | |||
|  |         left:10px; | |||
|  |     } | |||
|  | </style> |