1348 lines
		
	
	
		
			63 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			1348 lines
		
	
	
		
			63 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|   | <template> | |||
|  |     <awsui-layout id="methodAttribute" :style="{height: mainHeight}"> | |||
|  |         <awsui-aside class="attr-aside" width="280px"> | |||
|  |             <div style="height: 60px;line-height: 60px;text-align: center;"> | |||
|  |                 <awsui-button style="width: 130px;" :disabled="createBtnDisabled" :class="{'button-general-color': !createBtnDisabled}" type="primary" @click="createAttrDefine">新建属性</awsui-button> | |||
|  |             </div> | |||
|  |             <div> | |||
|  |                 <div style="border-bottom: 1px solid #F0F0F0;"></div> | |||
|  |             </div> | |||
|  |             <div :style="{'overflow': 'auto', 'height': treeHeight}"> | |||
|  |                 <el-tree | |||
|  |                         ref="tree" | |||
|  |                         v-loading="tree.loading" | |||
|  |                         :element-loading-text="tree.loadingText" | |||
|  |                         :data="tree.data" | |||
|  |                         :props="tree.props" | |||
|  |                         :highlight-current=true | |||
|  |                         :expand-on-click-node=false | |||
|  |                         @node-click="handleNodeClick" | |||
|  |                         node-key="id" | |||
|  |                         :default-expanded-keys="tree.defaultExpandedKeys"> | |||
|  |                     <span slot-scope="{node, data}"> | |||
|  |                       <i class="awsui-iconfont tree-content-icon tree-content-icon-padding" :style="{'color': data.iconColor}" v-html="node.data.iconCode"></i> | |||
|  |                       <span>{{node.label}}</span> | |||
|  |                       <span v-if="methodDataType != 'all' && data.type == 'attr'"><i class="awsui-iconfont" :style="{'margin-left': '3px','font-size':'13px','color': data.isUse ? '#00CC00' : '#DDDDDD'}"></i></span> | |||
|  |                     </span>' | |||
|  |                 </el-tree> | |||
|  |             </div> | |||
|  |         </awsui-aside> | |||
|  |         <awsui-main style="height: 100%;position: relative;"> | |||
|  |             <div v-if="methodDataType == 'all'" :key="key1"> | |||
|  |                 <el-table | |||
|  |                         :height="(parseInt(mainHeight) - 20 + 'px')" | |||
|  |                         :data="tableData" | |||
|  |                         v-loading="loading" | |||
|  |                         :element-loading-text="loadingText" | |||
|  |                         :row-style="{height:'50px'}" | |||
|  |                         :cell-style="{padding:'0px'}" | |||
|  |                         @cell-click="updateAttrDefine" | |||
|  |                         style="width: 100%"> | |||
|  |                     <el-table-column | |||
|  |                             prop="no" | |||
|  |                             label="序号" | |||
|  |                             width="80" | |||
|  |                             align="center"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="title" | |||
|  |                             label="属性名称" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="key" | |||
|  |                             label="属性代码" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="typeName" | |||
|  |                             label="属性类型" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="refName" | |||
|  |                             label="关联内容" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="groupPathName" | |||
|  |                             label="所属目录" | |||
|  |                             width="160"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="value" | |||
|  |                             label="默认值" | |||
|  |                             width="120"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="scopeName" | |||
|  |                             label="作用范围" | |||
|  |                             min-width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="readonly" | |||
|  |                             label="是否只读" | |||
|  |                             width="80" | |||
|  |                             align="center"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             <awsui-switch | |||
|  |                                     v-model="scope.row.readonly" | |||
|  |                                     active-color="#4E7FF9" | |||
|  |                                     inactive-color="#E2E2E2" | |||
|  |                                     :disabled="scope.row.type == 'relation' || scope.row.type == 'awsorg'" | |||
|  |                                     @change="handleChangeReadonlyAndValid(scope.row.id, scope.row.title, scope.row.readonly,scope.row.isRequired, scope.row.isValid)"> | |||
|  |                             </awsui-switch> | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                     <el-table-column | |||
|  |                         prop="readonly" | |||
|  |                         label="是否必填" | |||
|  |                         width="80" | |||
|  |                         align="center"> | |||
|  |                       <template slot-scope="scope"> | |||
|  |                         <awsui-switch | |||
|  |                             v-model="scope.row.isRequired" | |||
|  |                             active-color="#4E7FF9" | |||
|  |                             inactive-color="#E2E2E2" | |||
|  |                             @change="handleChangeReadonlyAndValid(scope.row.id, scope.row.title, scope.row.readonly,scope.row.isRequired, scope.row.isValid)"> | |||
|  |                         </awsui-switch> | |||
|  |                       </template> | |||
|  |                     </el-table-column> | |||
|  |                     <el-table-column | |||
|  |                             prop="isValid" | |||
|  |                             label="是否有效" | |||
|  |                             width="80" | |||
|  |                             align="center"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             <awsui-switch | |||
|  |                                     v-model="scope.row.isValid" | |||
|  |                                     active-color="#4E7FF9" | |||
|  |                                     inactive-color="#E2E2E2" | |||
|  |                                     @change="handleChangeReadonlyAndValid(scope.row.id, scope.row.title, scope.row.readonly,scope.row.isRequired, scope.row.isValid)"> | |||
|  |                             </awsui-switch> | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                     <el-table-column | |||
|  |                     prop="operation" | |||
|  |                     label="操作" | |||
|  |                     width="50"> | |||
|  |                     <template slot-scope="scope"> | |||
|  |                         <div class="operate-icon-display"> | |||
|  |                             <i class="el-icon-delete" style="cursor: pointer;" @click.stop="removeAttr(scope.row.id, scope.row.title)"></i> | |||
|  |                         </div> | |||
|  |                     </template> | |||
|  |                     </el-table-column> | |||
|  |                 </el-table> | |||
|  |             </div> | |||
|  |             <div v-if="methodDataType == 'file'" class="attr" :key="key2"> | |||
|  |                 <el-table | |||
|  |                         row-key="id" | |||
|  |                         :height="(parseInt(mainHeight) - 20 + 'px')" | |||
|  |                         v-loading="loading" | |||
|  |                         :element-loading-text="loadingText" | |||
|  |                         :data="tableData" | |||
|  |                         :row-style="{height:'50px'}" | |||
|  |                         :cell-style="{padding:'0px'}" | |||
|  |                         @cell-mouse-enter="handleAttrMouseEnter" | |||
|  |                         @cell-mouse-leave="handleAttrMouseLeave" | |||
|  |                         style="width: 100%"> | |||
|  |                     <el-table-column | |||
|  |                             prop="move" | |||
|  |                             label="" | |||
|  |                             align="center" | |||
|  |                             width="20"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             <div class="operate-icon-display"> | |||
|  |                                 <p class="text-second-color"> | |||
|  |                                     <i style="display: inline-block;cursor: pointer;" class="awsui-iconfont"></i> | |||
|  |                                 </p> | |||
|  |                             </div> | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                     <el-table-column | |||
|  |                             prop="no" | |||
|  |                             label="排序" | |||
|  |                             width="80" | |||
|  |                             align="center"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="key" | |||
|  |                             label="属性代码" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="title" | |||
|  |                             label="属性名称(默认)" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="newTitle" | |||
|  |                             label="属性名称" | |||
|  |                             width="180"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             <awsui-input v-if="scope.row.isUpdate" class="input-update-attr-name" v-model="scope.row.newTitle" @input="updateAttrDbInfo(scope.row.id, scope.row.newTitle, scope.row.sort)" placeholder="请输入新的属性名称"></awsui-input> | |||
|  |                             <span v-else>{{scope.row.newTitle}}</span> | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                     <el-table-column | |||
|  |                             prop="typeName" | |||
|  |                             label="属性类型" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="refName" | |||
|  |                             label="关联内容" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="value" | |||
|  |                             label="默认值" | |||
|  |                             width="150"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="readonly" | |||
|  |                             label="只读" | |||
|  |                             width="100" | |||
|  |                             align="center"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             {{scope.row.readonly ? "是" : "否"}} | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                     <el-table-column | |||
|  |                             prop="groupPathName" | |||
|  |                             label="所属目录" | |||
|  |                             width="160"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="scopeName" | |||
|  |                             label="作用范围" | |||
|  |                             min-width="200"/> | |||
|  |                     <el-table-column v-if="methodId=='process.bpmn2'" | |||
|  |                                      prop="bpmFileShow" | |||
|  |                                      label="审批显示" | |||
|  |                                      width="100" | |||
|  |                                      align="center"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             <awsui-switch | |||
|  |                                     v-model="scope.row.bpmFileShow" | |||
|  |                                     active-color="#4E7FF9" | |||
|  |                                     inactive-color="#E2E2E2" | |||
|  |                                     @change="handleChangeBpmShow(scope.row.id, scope.row.title, scope.row.bpmFileShow, 'bpmFileShow')"> | |||
|  |                             </awsui-switch> | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                 </el-table> | |||
|  |             </div> | |||
|  |             <div v-if="methodDataType == 'shape'" class="attr" :key="key3"> | |||
|  |                 <el-table | |||
|  |                         row-key="id" | |||
|  |                         :height="(parseInt(mainHeight) - 20 + 'px')" | |||
|  |                         v-loading="loading" | |||
|  |                         :element-loading-text="loadingText" | |||
|  |                         :data="tableData" | |||
|  |                         :row-style="{height:'50px'}" | |||
|  |                         :cell-style="{padding:'0px'}" | |||
|  |                         @cell-mouse-enter="handleAttrMouseEnter" | |||
|  |                         @cell-mouse-leave="handleAttrMouseLeave" | |||
|  |                         style="width: 100%"> | |||
|  |                     <el-table-column | |||
|  |                             prop="move" | |||
|  |                             label="" | |||
|  |                             align="center" | |||
|  |                             width="20"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             <div class="operate-icon-display"> | |||
|  |                                 <p class="text-second-color"> | |||
|  |                                     <i style="display: inline-block;cursor: pointer;" class="awsui-iconfont"></i> | |||
|  |                                 </p> | |||
|  |                             </div> | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                     <el-table-column | |||
|  |                             prop="no" | |||
|  |                             label="排序" | |||
|  |                             width="80" | |||
|  |                             align="center"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="key" | |||
|  |                             label="属性代码" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="title" | |||
|  |                             label="属性名称(默认)" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="newTitle" | |||
|  |                             label="属性名称" | |||
|  |                             width="180"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             <awsui-input v-if="scope.row.isUpdate" class="input-update-attr-name" v-model="scope.row.newTitle" @input="updateAttrDbInfo(scope.row.id, scope.row.newTitle, scope.row.sort)" placeholder="请输入新的属性名称"></awsui-input> | |||
|  |                             <span v-else>{{scope.row.newTitle}}</span> | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                     <el-table-column | |||
|  |                             prop="typeName" | |||
|  |                             label="属性类型" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="refName" | |||
|  |                             label="关联内容" | |||
|  |                             width="180"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="value" | |||
|  |                             label="默认值" | |||
|  |                             width="120"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="readonly" | |||
|  |                             label="只读" | |||
|  |                             width="100" | |||
|  |                             align="center"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             {{scope.row.readonly ? "是" : "否"}} | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                     <el-table-column | |||
|  |                             prop="groupPathName" | |||
|  |                             label="所属目录" | |||
|  |                             width="160"/> | |||
|  |                     <el-table-column | |||
|  |                             prop="scopeName" | |||
|  |                             label="作用范围" | |||
|  |                             min-width="200"/> | |||
|  |                     <el-table-column v-if="methodId=='process.bpmn2'" | |||
|  |                                      prop="bpmShapeShow" | |||
|  |                                      label="审批显示" | |||
|  |                                      width="100" | |||
|  |                                      align="center"> | |||
|  |                         <template slot-scope="scope"> | |||
|  |                             <awsui-switch | |||
|  |                                     v-model="scope.row.bpmShapeShow" | |||
|  |                                     active-color="#4E7FF9" | |||
|  |                                     inactive-color="#E2E2E2" | |||
|  |                                     @change="handleChangeBpmShow(scope.row.id, scope.row.title, scope.row.bpmShapeShow, 'bpmShapeShow')"> | |||
|  |                             </awsui-switch> | |||
|  |                         </template> | |||
|  |                     </el-table-column> | |||
|  |                 </el-table> | |||
|  |             </div> | |||
|  |         </awsui-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;margin: 20px 0 20px 20px;padding-left: 10px"> | |||
|  |                     <awsui-form ref="attrForm" :model="attrForm" label-position="top" :rules="rules" style= "margin-right: 20px;"> | |||
|  |                         <awsui-form-item label="属性代码" prop="key"> | |||
|  |                             <awsui-input v-model="attrForm.key" :disabled="!attrForm.isCreate" placeholder="请输入属性代码,由数字、字母、下划线组成"></awsui-input> | |||
|  |                         </awsui-form-item> | |||
|  |                         <awsui-form-item label="属性名称" prop="title"> | |||
|  |                             <awsui-input v-model="attrForm.title" placeholder="请输入属性名称"></awsui-input> | |||
|  |                         </awsui-form-item> | |||
|  |                         <awsui-form-item label="所属目录"> | |||
|  |                             <awsui-select v-model="attrForm.groupPath" :options="attrForm.groupOpts"></awsui-select> | |||
|  |                         </awsui-form-item> | |||
|  |                         <awsui-form-item label="类型"> | |||
|  |                             <awsui-select v-model="attrForm.type" :disabled="!attrForm.isCreate" :options="attrForm.typeOpts" @change="changeAttrType"></awsui-select> | |||
|  |                         </awsui-form-item> | |||
|  |                       <awsui-form-item label="属性描述" prop="desc"> | |||
|  |                         <awsui-input v-model="attrForm.desc" placeholder="请输入属性描述"></awsui-input> | |||
|  |                       </awsui-form-item> | |||
|  |                         <!-- relation限制 --> | |||
|  |                         <template v-if="attrForm.type=='relation'"> | |||
|  |                             <awsui-form-item label="关联的建模方法"> | |||
|  |                                 <awsui-select v-model="attrForm.relationRef.method" :options="attrForm.relationMethodScopeOpts" placeholder="请选择建模分类或建模方法"></awsui-select> | |||
|  |                             </awsui-form-item> | |||
|  |                             <awsui-form-item label="关联范围"> | |||
|  |                                 <awsui-select v-model="attrForm.relationRef.type" :options="attrForm.relationTypeOpts" placeholder="请选择关联范围"></awsui-select> | |||
|  |                             </awsui-form-item> | |||
|  |                             <awsui-form-item label="是否多选"> | |||
|  |                                 <awsui-select v-model="attrForm.relationRef.multiple" :options="attrForm.multipleOpts" placeholder="请选择关联范围"></awsui-select> | |||
|  |                             </awsui-form-item> | |||
|  |                         </template> | |||
|  |                         <!-- awsorg限制 --> | |||
|  |                         <template v-if="attrForm.type=='awsorg'"> | |||
|  |                             <awsui-form-item label="BPM组织架构范围选择"> | |||
|  |                                 <awsui-select v-model="attrForm.awsorgRef.scope" multiple :options="attrForm.awsorgScopeOpts" multiple placeholder="请选择组织架构范围"></awsui-select> | |||
|  |                             </awsui-form-item> | |||
|  |                             <awsui-form-item label="是否多选"> | |||
|  |                                 <awsui-select v-model="attrForm.awsorgRef.multiple" :options="attrForm.multipleOpts" placeholder="请选择关联范围"></awsui-select> | |||
|  |                             </awsui-form-item> | |||
|  |                         </template> | |||
|  |                         <!-- select限制 --> | |||
|  |                         <template v-if="attrForm.type=='select'"> | |||
|  |                             <awsui-form-item label="选择范围"> | |||
|  |                                 <awsui-input v-model="attrForm.ref" placeholder="请输入选择范围,例如选项1,选项2,选项3"></awsui-input> | |||
|  |                             </awsui-form-item> | |||
|  |                         </template> | |||
|  |                         <!-- select_m限制 --> | |||
|  |                         <template v-if="attrForm.type=='select_m'"> | |||
|  |                             <awsui-form-item label="选择范围"> | |||
|  |                                 <awsui-input v-model="attrForm.ref" placeholder="请输入选择范围,例如选项1,选项2,选项3"></awsui-input> | |||
|  |                             </awsui-form-item> | |||
|  |                         </template> | |||
|  |                         <template v-if="attrForm.type=='string' || attrForm.type=='textarea'"> | |||
|  |                             <awsui-form-item label="默认值" prop="value"> | |||
|  |                                 <awsui-input v-model="attrForm.value" placeholder="请输入属性默认值"></awsui-input> | |||
|  |                             </awsui-form-item> | |||
|  |                         </template> | |||
|  |                         <awsui-form-item label=""> | |||
|  |                             <div | |||
|  |                                  class="div-button-small" | |||
|  |                                  :style="{'border-right': '0px','cursor':readOnlyCursor ? 'not-allowed':'', 'background-color': attrForm.readonly ? '#eef5fe' : '', 'color': attrForm.readonly ? '#4E7FF9' : ''}" | |||
|  |                                  @click="(!readOnlyCursor) && changeReadOnly()" | |||
|  |                             > | |||
|  | 
 | |||
|  |                                 <span>只读</span> | |||
|  |                             </div> | |||
|  |                             <div | |||
|  |                                 class="div-button-small" | |||
|  |                                 :style="{'border-right': '0px','background-color': attrForm.isRequired ? '#eef5fe' : '', 'color': attrForm.isRequired ? '#4E7FF9' : ''}" | |||
|  |                                 @click="attrForm.isRequired = attrForm.isRequired ? false : true"> | |||
|  |                               <span>必填</span> | |||
|  |                             </div> | |||
|  |                             <div | |||
|  |                                  class="div-button-small" | |||
|  |                                  :style="{'background-color': attrForm.isValid ? '#eef5fe' : '', 'color': attrForm.isValid ? '#4E7FF9' : ''}" | |||
|  |                                  @click="attrForm.isValid = attrForm.isValid ? false : true"> | |||
|  |                                 <span>有效</span> | |||
|  |                             </div> | |||
|  |                         </awsui-form-item> | |||
|  |                         <awsui-form-item label="作用范围"> | |||
|  |                             <div | |||
|  |                                  class="div-button" | |||
|  |                                  :style="{'border-right': '0px', 'background-color': attrForm.fileScope ? '#eef5fe' : '', 'color': attrForm.fileScope ? '#4E7FF9' : ''}" | |||
|  |                                  @click="attrForm.fileScope = attrForm.fileScope ? false : true"> | |||
|  |                                 <span>文件属性</span> | |||
|  |                             </div> | |||
|  |                             <div | |||
|  |                                  class="div-button" | |||
|  |                                  :style="{'background-color': attrForm.shapeScope ? '#eef5fe' : '', 'color': attrForm.shapeScope ? '#4E7FF9' : ''}" | |||
|  |                                  @click="attrForm.shapeScope = attrForm.shapeScope ? false : true"> | |||
|  |                                 <span>形状属性</span> | |||
|  |                             </div> | |||
|  |                         </awsui-form-item> | |||
|  |                         <awsui-form-item v-if="attrForm.shapeScope" label="形状选择"> | |||
|  |                             <awsui-select v-model="attrForm.shapeScopeValue" placeholder="空值则等同于全选" clearable multiple :options="attrForm.shapeOpts"></awsui-select> | |||
|  |                         </awsui-form-item> | |||
|  |                     </awsui-form> | |||
|  |                 </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="saveDrawerData">保存</awsui-button> | |||
|  |                         <awsui-button size="large" style="width: 80px;" @click="closeDrawer">取消</awsui-button> | |||
|  |                     </div> | |||
|  |                 </div> | |||
|  |             </div> | |||
|  |         </awsui-sidebar> | |||
|  |     </awsui-layout> | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  |     import awsuiAxios from "../../awsuiAxios"; | |||
|  |     import Sortable from 'sortablejs'; | |||
|  |     export default { | |||
|  |         name: "MethodAttribute", | |||
|  |         components: {Sortable}, | |||
|  |         props: { | |||
|  |             parentHeaderHeight: { | |||
|  |                 type: String, | |||
|  |                 default: '0px' | |||
|  |             }, | |||
|  |             methodId: { | |||
|  |                 type: String, | |||
|  |                 default: '' | |||
|  |             }, | |||
|  |             methodName: { | |||
|  |                 type: String, | |||
|  |                 default: '' | |||
|  |             }, | |||
|  |             searchInput: { | |||
|  |                 type: String, | |||
|  |                 default: '' | |||
|  |             }, | |||
|  |             methodDataType: {// 数据查询类型,全部,文件属性,形状属性
 | |||
|  |                 type: String, | |||
|  |                 default: 'all' | |||
|  |             } | |||
|  |         }, | |||
|  |         data() { | |||
|  |             return { | |||
|  |                 readOnlyCursor: false, | |||
|  |                 key1: Math.random(), | |||
|  |                 key2: Math.random(), | |||
|  |                 key3: Math.random(), | |||
|  |                 createBtnDisabled: false, | |||
|  |                 mainHeight: (parseInt(this.$store.getters.getTopMainHeightFn) - parseInt(this.parentHeaderHeight)) + 'px', | |||
|  |                 treeHeight: (parseInt(this.$store.getters.getTopMainHeightFn) - parseInt(this.parentHeaderHeight) - 61) + 'px', | |||
|  |                 loading: false, | |||
|  |                 loadingText: '加载中', | |||
|  |                 tree: { | |||
|  |                     data: [], | |||
|  |                     defaultExpandedKeys: [], | |||
|  |                     props: { | |||
|  |                         children: 'children', | |||
|  |                         label: 'label' | |||
|  |                     }, | |||
|  |                     loading: false, | |||
|  |                     loadingText: '加载中' | |||
|  |                 }, | |||
|  |                 tableData: [], | |||
|  |                 tableDataTemp: [], | |||
|  |                 nodeData: null, | |||
|  |                 drawer: { | |||
|  |                     title: '新增属性', | |||
|  |                     visible: false, | |||
|  |                     loading: false, | |||
|  |                     footerHeight: '50px', | |||
|  |                     buttonDisabled: false | |||
|  |                 }, | |||
|  |                 attrForm: { | |||
|  |                     isCreate: true,// 是否新建
 | |||
|  |                     id: '', | |||
|  |                     key: '', | |||
|  |                     title: '', | |||
|  |                     newTitle: '', | |||
|  |                     type: '', | |||
|  |                     desc: '', | |||
|  |                     ref: '', | |||
|  |                     relationRef: {// 关联pal组织架构
 | |||
|  |                         method: '', | |||
|  |                         type: '', | |||
|  |                         multiple: 'false', | |||
|  |                     }, | |||
|  |                     awsorgRef: {// 关联bpm组织架构
 | |||
|  |                         scope: [], | |||
|  |                         multiple: 'false' | |||
|  |                     }, | |||
|  |                     value: '', | |||
|  |                     readonly: false, | |||
|  |                     isRequired: false, | |||
|  |                     isValid: true, | |||
|  |                     groupPathName: '', | |||
|  |                     groupPath: '', | |||
|  |                     fileScope: false, | |||
|  |                     shapeScope: false, | |||
|  |                     shapeScopeValue: [], | |||
|  |                     scopeName: '', | |||
|  |                     sort: '', | |||
|  |                     bpmFileShow: false, | |||
|  |                     bpmShapeShow: false, | |||
|  | 
 | |||
|  |                     typeOpts: [], | |||
|  |                     relationMethodScopeOpts: [], | |||
|  |                     relationTypeOpts: [], | |||
|  |                     awsorgScopeOpts: [], | |||
|  |                     multipleOpts: [ | |||
|  |                         { | |||
|  |                             "label" : '多选', | |||
|  |                             "value" : "true" | |||
|  |                         }, | |||
|  |                         { | |||
|  |                             "label" : '单选', | |||
|  |                             "value" : "false"// value为false select不识别,改为字符串false
 | |||
|  |                         } | |||
|  |                     ], | |||
|  |                     groupOpts: [], | |||
|  |                     shapeOpts: [] | |||
|  |                 }, | |||
|  |                 rules: { | |||
|  |                     key: [ | |||
|  |                         { required: true, message: '请输入属性代码', trigger: 'blur' }, | |||
|  |                         { min: 1, max: 255, message: '长度在 255 个字符以内', trigger: 'blur' } | |||
|  |                     ], | |||
|  |                     title: [ | |||
|  |                         { required: true, message: '请输入属性名称', trigger: 'blur' }, | |||
|  |                         { min: 1, max: 255, message: '长度在 255 个字符以内', trigger: 'blur' } | |||
|  |                     ], | |||
|  |                     value: [ | |||
|  |                         { required: false, message: '请输入属性名称', trigger: 'blur' }, | |||
|  |                         { min: 1, max: 255, message: '长度在 255 个字符以内', trigger: 'blur' } | |||
|  |                     ], | |||
|  |                     desc: [ | |||
|  |                       { required: true, message: '请输入属性描述', trigger: 'blur' }, | |||
|  |                       { min: 1, max: 20, message: '长度在 20 个字符以内', trigger: 'blur' } | |||
|  |                     ] | |||
|  |                 }, | |||
|  |             } | |||
|  |         }, | |||
|  |         mounted() { | |||
|  |             // 火狐浏览器拖拽问题
 | |||
|  |             document.body.ondrop = function (event) { | |||
|  |                 event.preventDefault(); | |||
|  |                 event.stopPropagation(); | |||
|  |             } | |||
|  |             this.initTreeData(); | |||
|  |         }, | |||
|  |         methods: { | |||
|  |             initTreeData() {// 初始化树
 | |||
|  |                 const that = this; | |||
|  |                 that.tree.loadingText = '加载中'; | |||
|  |                 that.tree.loading = true; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_attr_tree_data_query', | |||
|  |                         methodId: that.methodId, | |||
|  |                         wsId: that.$store.getters.getWsIdFn | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     that.tree.loading = false; | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         if (ro.data.length > 0) { | |||
|  |                             that.tree.defaultExpandedKeys.push(ro.data[0].id); | |||
|  |                         } | |||
|  |                         for (let i = 0; i < ro.data.length; i++) { | |||
|  |                             if (ro.data.children) { | |||
|  |                                 for (let j = 0; j < ro.data.children.length; j++) { | |||
|  |                                     ro.data[i].children[j].isUse = false; | |||
|  |                                 } | |||
|  |                             } | |||
|  | 
 | |||
|  |                         } | |||
|  |                         that.tree.data = ro.data; | |||
|  |                         that.initTableData(); | |||
|  |                     } else { | |||
|  |                         alert('请求响应错误'); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                     that.loading = false; | |||
|  |                 }) | |||
|  |             }, | |||
|  |             initTableData() {// 初始化表格
 | |||
|  |                 const that = this; | |||
|  |                 that.tableData = []; | |||
|  |                 this.tableDataTemp = []; | |||
|  |                 that.loadingText = '加载中'; | |||
|  |                 that.loading = true; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_attr_table_data_query', | |||
|  |                         methodId: that.methodId, | |||
|  |                         wsId: that.$store.getters.getWsIdFn, | |||
|  |                         type: that.methodDataType | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     that.loading = false; | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         const lightTreeIds = []; | |||
|  |                         for (let i = 0; i < ro.data.length; i++) { | |||
|  |                             ro.data[i].randomNum = Math.random(); | |||
|  |                             if (that.methodDataType != 'all') { | |||
|  |                                 ro.data[i].isUpdate = false; | |||
|  |                                 if (ro.data[i].isUse) { | |||
|  |                                     lightTreeIds.push(ro.data[i].id); | |||
|  |                                 } | |||
|  |                             } | |||
|  |                         } | |||
|  |                         // 处理树右侧点亮图标
 | |||
|  |                         for (let i = 0; i < that.tree.data.length; i++) { | |||
|  |                             if (that.tree.data[i].children) { | |||
|  |                                 for (let j = 0; j < that.tree.data[i].children.length; j++) { | |||
|  |                                     if (lightTreeIds.indexOf(that.tree.data[i].children[j].id) > -1) { | |||
|  |                                         that.tree.data[i].children[j].isUse = true; | |||
|  |                                     } else { | |||
|  |                                         that.tree.data[i].children[j].isUse = false; | |||
|  |                                     } | |||
|  |                                 } | |||
|  |                             } | |||
|  |                         } | |||
|  |                         that.tableDataTemp = ro.data; | |||
|  |                         that.search(); | |||
|  |                         if (that.methodDataType != 'all') { | |||
|  |                             that.$nextTick(function(){ | |||
|  |                                 that.rowDrop(); | |||
|  |                             }); | |||
|  |                         } | |||
|  |                     } else { | |||
|  |                         alert('请求响应错误'); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                     that.loading = false; | |||
|  |                 }) | |||
|  |             }, | |||
|  |             search() {// 查询
 | |||
|  |                 if (this.nodeData == null) { | |||
|  |                     const data = JSON.parse(JSON.stringify(this.tableDataTemp)); | |||
|  |                     for (let i = 0; i < data.length; i++) { | |||
|  |                         data[i].no = i + 1; | |||
|  |                     } | |||
|  |                     this.tableData = data; | |||
|  |                 } else { | |||
|  |                     const data = []; | |||
|  |                     let index = 1; | |||
|  |                     if (this.nodeData.type == 'group') { | |||
|  |                         for (let i = 0; i < this.tableDataTemp.length; i++) { | |||
|  |                             if (this.tableDataTemp[i].groupPath == this.nodeData.id) { | |||
|  |                                 const item = JSON.parse(JSON.stringify(this.tableDataTemp[i])); | |||
|  |                                 item.no = index++; | |||
|  |                                 data.push(item); | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } else { | |||
|  |                         for (let i = 0; i < this.tableDataTemp.length; i++) { | |||
|  |                             if (this.tableDataTemp[i].key == this.nodeData.id) { | |||
|  |                                 const item = JSON.parse(JSON.stringify(this.tableDataTemp[i])); | |||
|  |                                 item.no = index++; | |||
|  |                                 data.push(item); | |||
|  |                                 break; | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } | |||
|  |                     this.tableData = data; | |||
|  |                 } | |||
|  |             }, | |||
|  |             //行拖拽
 | |||
|  |             rowDrop() { | |||
|  |                 const tbody = document.querySelector('.el-table__body-wrapper tbody') | |||
|  |                 const that = this; | |||
|  |                 Sortable.create(tbody, { | |||
|  |                     onEnd({ newIndex, oldIndex }) { | |||
|  |                         if (newIndex != oldIndex) { | |||
|  |                             const oldId = that.tableData[oldIndex].id;// 被拖拽的属性
 | |||
|  |                             let referenceId = ''; | |||
|  |                             let position = ''; | |||
|  |                             // 重点在整体混合排序之后点击树大类进行某个大类之下的属性单独排序的处理
 | |||
|  |                             if (newIndex - oldIndex == 1) {// 下移一位
 | |||
|  |                                 referenceId = that.tableData[newIndex].id; | |||
|  |                                 position = 'bottom'; | |||
|  |                             } else if (oldIndex - newIndex == 1) {// 上移一位
 | |||
|  |                                 referenceId = that.tableData[newIndex].id; | |||
|  |                                 position = 'top'; | |||
|  |                             } else if (newIndex == 0) {// 拖拽到开头位置
 | |||
|  |                                 // 放置在原0位置属性的上方
 | |||
|  |                                 referenceId = that.tableData[0].id; | |||
|  |                                 position = 'top';// oldId在referenceId的上方
 | |||
|  |                             } else if (newIndex == that.tableData.length - 1) {// 放到了结尾位置
 | |||
|  |                                 // 放置在原结尾位置属性的下方
 | |||
|  |                                 referenceId = that.tableData[that.tableData.length - 1].id; | |||
|  |                                 position = 'bottom';// oldId在referenceId的下方
 | |||
|  |                             } else {// 放到了中间位置
 | |||
|  |                                 // 放置在原位置属性的上方
 | |||
|  |                                 referenceId = that.tableData[newIndex].id; | |||
|  |                                 position = 'top';// oldId在referenceId的上方
 | |||
|  |                             } | |||
|  |                             // 修改dataTableTemp
 | |||
|  |                             let currRow = null;// 被拖拽的行
 | |||
|  |                             for (let i = 0; i < that.tableDataTemp.length; i++) { | |||
|  |                                 if (that.tableDataTemp[i].id == oldId) { | |||
|  |                                     currRow = that.tableDataTemp.splice(i, 1)[0];// 删除此行
 | |||
|  |                                     break; | |||
|  |                                 } | |||
|  |                             } | |||
|  |                             // 移动位置
 | |||
|  |                             for (let i = 0; i < that.tableDataTemp.length; i++) { | |||
|  |                                 if (that.tableDataTemp[i].id == referenceId) { | |||
|  |                                     if (position == 'top') { | |||
|  |                                         that.tableDataTemp.splice(i, 0, currRow); | |||
|  |                                         break; | |||
|  |                                     } else if (position == 'bottom') { | |||
|  |                                         that.tableDataTemp.splice(i+1, 0, currRow); | |||
|  |                                         break; | |||
|  |                                     } | |||
|  | 
 | |||
|  |                                 } | |||
|  |                             } | |||
|  |                             // 保存
 | |||
|  |                             const attrs = []; | |||
|  |                             for (let i = 0; i < that.tableDataTemp.length; i++) { | |||
|  |                                 attrs.push({ | |||
|  |                                     id: that.tableDataTemp[i].id, | |||
|  |                                     newTitle: that.tableDataTemp[i].newTitle | |||
|  |                                 }); | |||
|  |                             } | |||
|  |                             const params = { | |||
|  |                                 url:'jd', | |||
|  |                                 data:{ | |||
|  |                                     cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_attr_file_and_shape_sort_update', | |||
|  |                                     methodId: that.methodId, | |||
|  |                                     wsId: that.$store.getters.getWsIdFn, | |||
|  |                                     type: that.methodDataType, | |||
|  |                                     attrs: JSON.stringify(attrs), | |||
|  |                                 } | |||
|  |                             }; | |||
|  |                             // 查询数据
 | |||
|  |                             awsuiAxios.post(params).then(function (ro) { | |||
|  |                                 if(ro.result == 'ok') { | |||
|  |                                     that.$message({message: '移动成功',type: 'success'}); | |||
|  |                                     that.search(); | |||
|  |                                 } else { | |||
|  |                                     that.$message.error(ro.msg); | |||
|  |                                 } | |||
|  |                             }).catch(error=>{ | |||
|  |                                 console.log(error); | |||
|  |                             }) | |||
|  |                         } | |||
|  |                     } | |||
|  |                 }) | |||
|  |             }, | |||
|  |             // 清空form数据
 | |||
|  |             clearDrawerForm() { | |||
|  |                 this.attrForm = { | |||
|  |                     isCreate: true,// 是否新建
 | |||
|  |                     id: '', | |||
|  |                     key: '', | |||
|  |                     title: '', | |||
|  |                     newTitle: '', | |||
|  |                     type: '', | |||
|  |                     desc: '', | |||
|  |                     ref: '', | |||
|  |                     relationRef: {// 关联pal组织架构
 | |||
|  |                         method: '', | |||
|  |                         type: '', | |||
|  |                         multiple: 'false', | |||
|  |                     }, | |||
|  |                     awsorgRef: {// 关联bpm组织架构
 | |||
|  |                         scope: [], | |||
|  |                         multiple: 'false' | |||
|  |                     }, | |||
|  |                     value: '', | |||
|  |                     readonly: false, | |||
|  |                     isRequired: false, | |||
|  |                     isValid: true, | |||
|  |                     groupPathName: '', | |||
|  |                     groupPath: '', | |||
|  |                     fileScope: false, | |||
|  |                     shapeScope: false, | |||
|  |                     shapeScopeValue: [], | |||
|  |                     scopeName: '', | |||
|  |                     sort: '', | |||
|  |                     bpmFileShow: false, | |||
|  |                     bpmShapeShow: false, | |||
|  | 
 | |||
|  |                     typeOpts: [], | |||
|  |                     relationMethodScopeOpts: [], | |||
|  |                     relationTypeOpts: [], | |||
|  |                     awsorgScopeOpts: [], | |||
|  |                     multipleOpts: [ | |||
|  |                         { | |||
|  |                             "label" : '多选', | |||
|  |                             "value" : "true" | |||
|  |                         }, | |||
|  |                         { | |||
|  |                             "label" : '单选', | |||
|  |                             "value" : "false"// value为false select不识别,改为字符串false
 | |||
|  |                         } | |||
|  |                     ], | |||
|  |                     groupOpts: [], | |||
|  |                     shapeOpts: [] | |||
|  |                 }; | |||
|  |             }, | |||
|  |             closeDrawer() {// 关闭drawer
 | |||
|  |                 this.drawer.visible = false; | |||
|  |             }, | |||
|  |             handleDrawerClose(done) { | |||
|  |                 done(); | |||
|  |             }, | |||
|  |             initDrawer(title) { | |||
|  |                 const that = this; | |||
|  |                 that.drawer.buttonDisabled = false; | |||
|  |                 that.drawer.title = title; | |||
|  |                 that.drawer.visible = true; | |||
|  |                 that.$nextTick(function(){ | |||
|  |                     that.initDrawerBodyHeight(); | |||
|  |                 }); | |||
|  |             }, | |||
|  |             createAttrDefine() {// 全部-新建属性配置xml数据
 | |||
|  |                 this.clearDrawerForm(); | |||
|  |                 const form = this.attrForm; | |||
|  |                 form.isCreate = true; | |||
|  |                 // 获取所有形状
 | |||
|  |                 this.initDrawer('新增属性'); | |||
|  |                 this.getAttrOptsParam(''); | |||
|  |             }, | |||
|  |             // 全部-修改属性配置的xml定义文件
 | |||
|  |             updateAttrDefine(row, column, cell, event) { | |||
|  |                 if (column.property == 'readonly' || column.property == 'isValid') { | |||
|  |                     return false; | |||
|  |                 } | |||
|  |                 this.clearDrawerForm(); | |||
|  |                 const form = this.attrForm; | |||
|  |                 form.isCreate = false; | |||
|  |                 form.id = row.id; | |||
|  |                 form.key = row.key; | |||
|  |                 form.title = row.title; | |||
|  |                 form.newTitle = row.newTitle; | |||
|  |                 form.type = row.type; | |||
|  |                 form.ref = row.ref; | |||
|  |                 if (form.type == 'relation') { | |||
|  |                     form.relationRef.method = row.relationRef.method; | |||
|  |                     form.relationRef.type = row.relationRef.type; | |||
|  |                     form.relationRef.multiple = row.relationRef.multiple ? "true" : "false"; | |||
|  |                 } | |||
|  |                 if (form.type == 'awsorg') { | |||
|  |                     form.awsorgRef.scope = row.awsorgRef.scope; | |||
|  |                     form.awsorgRef.multiple = row.awsorgRef.multiple ? "true" : "false"; | |||
|  |                 } | |||
|  |                 // 类型为pal bpm 时 只读行为不可选
 | |||
|  |                 let arr = ['relation','awsorg']; | |||
|  |                 let type = form.type; | |||
|  |                 if(arr.includes(type)){ | |||
|  |                     this.readOnlyCursor = true; | |||
|  |                     form.readonly = false; | |||
|  |                 }else{ | |||
|  |                     this.readOnlyCursor = false; | |||
|  |                     form.readonly = row.readonly; | |||
|  |                 } | |||
|  |                 form.value = row.value; | |||
|  |                 form.desc = row.desc | |||
|  |                 form.isValid = row.isValid; | |||
|  |                 form.isRequired = row.isRequired | |||
|  |                 form.groupPath = row.groupPath; | |||
|  |                 form.groupPathName = row.groupPathName; | |||
|  |                 form.bpmFileShow = row.bpmFileShow; | |||
|  |                 form.bpmShapeShow = row.bpmFileShow; | |||
|  |                 this.initDrawer('修改属性'); | |||
|  |                 this.getAttrOptsParam(row.scope); | |||
|  |                  console.log(this.attrForm) | |||
|  |             }, | |||
|  |             // 获取一些选择框参数
 | |||
|  |             getAttrOptsParam(scope) { | |||
|  |                 const form = this.attrForm; | |||
|  |                 const that = this; | |||
|  |                 that.drawer.loading = true; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_attr_shape_option_query', | |||
|  |                         methodId: that.methodId | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     that.drawer.loading = false; | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         form.typeOpts = ro.data.typeOpts; | |||
|  |                         form.relationMethodScopeOpts = ro.data.relationMethodScopeOpts; | |||
|  |                         form.relationTypeOpts = ro.data.relationTypeOpts; | |||
|  |                         form.awsorgScopeOpts = ro.data.awsorgScopeOpts; | |||
|  |                         form.groupOpts = ro.data.groupOpts; | |||
|  |                         form.shapeOpts = ro.data.shapeOpts; | |||
|  |                         form.shapeScopeValue = []; | |||
|  |                         if (scope.indexOf('%') > -1) { | |||
|  |                             form.fileScope = true; | |||
|  |                         } | |||
|  |                         if (scope.indexOf("*") > -1 || (scope.indexOf('%') > -1 && scope.indexOf(',') > -1) || (scope.indexOf('%') == -1 && scope.length > 0)) { | |||
|  |                             form.shapeScope = true; | |||
|  |                             const shapeIds = scope.split(','); | |||
|  |                             for (let i = 0; i < form.shapeOpts.length; i++) { | |||
|  |                                 if (shapeIds.indexOf(form.shapeOpts[i].value) > -1) { | |||
|  |                                     form.shapeScopeValue.push(form.shapeOpts[i].value); | |||
|  |                                 } | |||
|  |                             } | |||
|  |                         } | |||
|  |                         if (form.isCreate) { | |||
|  |                             form.type = form.typeOpts[0].value; | |||
|  |                             const currNode = that.$refs.tree.getCurrentNode(); | |||
|  |                             if (currNode == null) { | |||
|  |                                 form.groupPath = form.groupOpts[0].value; | |||
|  |                             } else if (currNode.type == 'group') { | |||
|  |                                 form.groupPath = currNode.id; | |||
|  |                             } else { | |||
|  |                                 form.groupPath = that.$refs.tree.getNode(currNode.pid).data.id; | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } else { | |||
|  |                         alert('请求响应错误'); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                     that.drawer.loading = false; | |||
|  |                 }) | |||
|  |             }, | |||
|  |             // 新增、修改保存
 | |||
|  |             saveDrawerData() { | |||
|  |                 const form = this.attrForm; | |||
|  |                 const that = this; | |||
|  |                 let scope = []; | |||
|  |                 if (form.fileScope) { | |||
|  |                     scope.push('%') | |||
|  |                 } | |||
|  |                 if (form.shapeScope) { | |||
|  |                     if (form.shapeScopeValue.length == 0) { | |||
|  |                         // 一个也没选,默认为全选
 | |||
|  |                         scope.push("*") | |||
|  |                     } else if (form.shapeScopeValue.length == form.shapeOpts.length){ | |||
|  |                         scope.push("*") | |||
|  |                     } else { | |||
|  |                         scope = scope.concat(form.shapeScopeValue); | |||
|  |                     } | |||
|  |                 } | |||
|  |                 if (!(/^\w+$/.test(form.key))) { | |||
|  |                     that.$message({message: '[属性代码]请输入数字、字母、下划线的组合',type: 'warning'}); | |||
|  |                     return false; | |||
|  |                 } | |||
|  |                 if (scope.length == 0) { | |||
|  |                     that.$message({message: '[作用范围]不允许为空',type: 'warning'}); | |||
|  |                     return false; | |||
|  |                 } | |||
|  | 
 | |||
|  | 
 | |||
|  |                 if (form.type == 'string' || form.type == 'textarea' || form.type == 'number') { | |||
|  |                     form.ref = ''; | |||
|  |                 } | |||
|  |                 if (form.type == 'boolean') { | |||
|  |                     form.ref = '是,否'; | |||
|  |                 } | |||
|  |                 if (form.type == 'select' || form.type == 'select_m') { | |||
|  |                     if (form.ref == '') { | |||
|  |                         that.$message({message: '[选择范围]不允许为空',type: 'warning'}); | |||
|  |                         return false; | |||
|  |                     } | |||
|  |                 } | |||
|  |                 if (form.type == 'awsorg') { | |||
|  |                     if (form.awsorgRef.scope == '') { | |||
|  |                         that.$message({message: '[BPM组织架构范围选择]不允许为空',type: 'warning'}); | |||
|  |                         return false; | |||
|  |                     } | |||
|  |                     form.ref = form.awsorgRef; | |||
|  |                     form.ref.multiple = form.ref.multiple == 'true' ? true : false;// 转换为boolean
 | |||
|  |                     form.ref = JSON.stringify(form.ref); | |||
|  |                 } | |||
|  |                 if (form.type == 'relation') { | |||
|  |                     if (form.relationRef.method == '') { | |||
|  |                         that.$message({message: '[关联的建模方法]不允许为空',type: 'warning'}); | |||
|  |                         return false; | |||
|  |                     } | |||
|  |                     if (form.relationRef.type == '') { | |||
|  |                         that.$message({message: '[关联范围]不允许为空',type: 'warning'}); | |||
|  |                         return false; | |||
|  |                     } | |||
|  |                     form.ref = form.relationRef; | |||
|  |                     form.ref.multiple = form.ref.multiple == 'true' ? true : false;// 转换为boolean
 | |||
|  |                     form.ref = JSON.stringify(form.ref); | |||
|  |                 } | |||
|  |                 const data = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd : 'com.actionsoft.apps.coe.pal_pl_manage_method_attr_add_or_update_save', | |||
|  |                         methodId: that.methodId, | |||
|  |                         isCreate: form.isCreate, | |||
|  |                         key: form.key, | |||
|  |                         title: form.title, | |||
|  |                         type: form.type, | |||
|  |                         desc: form.desc, | |||
|  |                         ref: form.ref, | |||
|  |                         value: form.value, | |||
|  |                         readonly: form.readonly, | |||
|  |                         isRequired: form.isRequired, | |||
|  |                         groupPath: form.groupPath, | |||
|  |                         isValid: form.isValid, | |||
|  |                         bpmFileShow: form.bpmFileShow, | |||
|  |                         bpmShapeShow: form.bpmShapeShow | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 data.data.scope = scope; | |||
|  |                 this.$refs['attrForm'].validate((valid) => { | |||
|  |                     if (valid) { | |||
|  |                         that.drawer.buttonDisabled = true; | |||
|  |                         awsuiAxios.post(data).then(function (ro) { | |||
|  |                             if (ro.result == 'ok') { | |||
|  |                                 // 成功,刷新当前页面
 | |||
|  |                                 let msg = '修改'; | |||
|  |                                 if (form.isCreate) { | |||
|  |                                     msg = '新增'; | |||
|  |                                 } | |||
|  |                                 that.$message({message: msg + '成功',type: 'success'}); | |||
|  |                                 that.closeDrawer(); | |||
|  |                                 that.clearDrawerForm(); | |||
|  |                                 that.initTreeData(); | |||
|  |                             } else { | |||
|  |                                 that.$message({message: ro.msg, type: 'warning'}); | |||
|  |                                 that.drawer.buttonDisabled = false; | |||
|  |                             } | |||
|  |                         }).catch(error=>{ | |||
|  |                             console.log(error); | |||
|  |                         }) | |||
|  |                     } else { | |||
|  |                         return false; | |||
|  |                     } | |||
|  |                 }); | |||
|  | 
 | |||
|  |             }, | |||
|  |             handleNodeClick(data) { | |||
|  |                 this.nodeData = data; | |||
|  |                 this.search(); | |||
|  |             }, | |||
|  |             // 变更是否只读,必填,有效
 | |||
|  |             handleChangeReadonlyAndValid(id, name, readonly,isRequired, isValid,) { | |||
|  |                 const that = this; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_attr_readonly_and_valid_update', | |||
|  |                         methodId: that.methodId, | |||
|  |                         key: id, | |||
|  |                         readonly: readonly, | |||
|  |                         isRequired, | |||
|  |                         isValid: isValid | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         that.$message({message: '修改成功',type: 'success'}); | |||
|  |                         for (let i = 0; i < that.tableDataTemp.length; i++) { | |||
|  |                             if (id == that.tableDataTemp[i].id) { | |||
|  |                                 that.tableDataTemp[i].readonly = readonly; | |||
|  |                                 that.tableDataTemp[i].isRequired = isRequired; | |||
|  |                                 that.tableDataTemp[i].isValid = isValid; | |||
|  |                                 that.tableDataTemp[i].randomNum = Math.random(); | |||
|  |                                 that.search(); | |||
|  |                                 break; | |||
|  |                             } | |||
|  |                         } | |||
|  |                         // that.initTableData();
 | |||
|  |                     } else { | |||
|  |                         that.$message({message: ro.msg,type: 'warning'}); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                     that.drawer.loading = false; | |||
|  |                 }) | |||
|  |             }, | |||
|  |             handleChangeBpmShow(id, name, bpmShow, type) {// 变更是否在bpm运行时显示的通配
 | |||
|  |                 const that = this; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_attr_bpm_show_update', | |||
|  |                         methodId: that.methodId, | |||
|  |                         key: id, | |||
|  |                         bpmShow: bpmShow, | |||
|  |                         type: type | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         that.$message({message: '修改成功',type: 'success'}); | |||
|  |                         for (let i = 0; i < that.tableDataTemp.length; i++) { | |||
|  |                             if (id == that.tableDataTemp[i].id) { | |||
|  |                                 if (type == 'bpmFileShow') { | |||
|  |                                     that.tableDataTemp[i].bpmFileShow = bpmShow; | |||
|  |                                 } else if (type == 'bpmShapeShow') { | |||
|  |                                     that.tableDataTemp[i].bpmShapeShow = bpmShow; | |||
|  |                                 } | |||
|  |                                 that.tableDataTemp[i].randomNum = Math.random(); | |||
|  |                                 that.search(); | |||
|  |                                 break; | |||
|  |                             } | |||
|  |                         } | |||
|  |                         // that.initTableData();
 | |||
|  |                     } else { | |||
|  |                         that.$message({message: ro.msg,type: 'warning'}); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                     that.drawer.loading = false; | |||
|  |                 }) | |||
|  |             }, | |||
|  |             handleAttrMouseEnter(row, column, cell, event) {// 文件属性行移入显示属性修改输入框
 | |||
|  |                 for (let i = 0; i < this.tableData.length; i++) { | |||
|  |                     if (row.id == this.tableData[i].id) { | |||
|  |                         this.tableData[i].isUpdate = true; | |||
|  |                     } else { | |||
|  |                         this.tableData[i].isUpdate = false; | |||
|  |                     } | |||
|  |                 } | |||
|  |             }, | |||
|  |             handleAttrMouseLeave(row, column, cell, event) {// 文件属性行移出隐藏属性修改输入框
 | |||
|  |                 for (let i = 0; i < this.tableData.length; i++) { | |||
|  |                     if (row.id == this.tableData[i].id) { | |||
|  |                         this.tableData[i].isUpdate = false; | |||
|  |                     } | |||
|  |                 } | |||
|  |             }, | |||
|  |             updateAttrDbInfo(attrId, newTitle, orderIndex) {// 更新属性名称信息
 | |||
|  |                 const that = this; | |||
|  |                 const params = { | |||
|  |                     url:'jd', | |||
|  |                     data:{ | |||
|  |                         cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_attr_file_and_shape_update', | |||
|  |                         methodId: that.methodId, | |||
|  |                         wsId: that.$store.getters.getWsIdFn, | |||
|  |                         type: that.methodDataType, | |||
|  |                         attrId: attrId, | |||
|  |                         newTitle: newTitle, | |||
|  |                         orderIndex: orderIndex | |||
|  |                     } | |||
|  |                 }; | |||
|  |                 awsuiAxios.post(params).then(function (ro) {// 查询数据总条数
 | |||
|  |                     if (ro.result == 'ok') { | |||
|  |                         that.$message({message: '修改成功',type: 'success'}); | |||
|  |                         // 把临时的数据进行更新
 | |||
|  |                         for (let i = 0; i < that.tableDataTemp.length; i++) { | |||
|  |                             if (attrId == that.tableDataTemp[i].id) { | |||
|  |                                 that.tableDataTemp[i].newTitle = newTitle; | |||
|  |                             } | |||
|  |                         } | |||
|  |                     } else { | |||
|  |                         alert('请求响应错误'); | |||
|  |                     } | |||
|  |                 }).catch(error=>{ | |||
|  |                     console.log(error); | |||
|  |                     that.drawer.loading = false; | |||
|  |                 }) | |||
|  | 
 | |||
|  |             }, | |||
|  |             removeAttr(attrId, title) { | |||
|  |                 let confirmText = [ | |||
|  |                     "确定要删除吗?", | |||
|  |                     '注意:将一并删除该属性在所有资产库的文件属性和形状属性中的配置信息(不包含业务内容数据)' | |||
|  |                 ]; | |||
|  |                 const newDatas = []; | |||
|  |                 const h = this.$createElement; | |||
|  |                 for (const i in confirmText) { | |||
|  |                     newDatas.push(h("p", null, confirmText[i])) | |||
|  |                 } | |||
|  |                 this.$confirm('提示', { | |||
|  |                     message: h("div", null, newDatas), | |||
|  |                     confirmButtonText: '确定', | |||
|  |                     confirmButtonClass: 'button-general-color', | |||
|  |                     cancelButtonText: '取消', | |||
|  |                     type: 'warning' | |||
|  |                 }).then(() => { | |||
|  |                     const that = this; | |||
|  |                     const params = { | |||
|  |                         url:'jd', | |||
|  |                         data:{ | |||
|  |                             cmd: 'com.actionsoft.apps.coe.pal_pl_manage_method_attr_remove', | |||
|  |                             methodId: that.methodId, | |||
|  |                             attrId: attrId | |||
|  |                         } | |||
|  |                     }; | |||
|  |                     // 查询数据
 | |||
|  |                     awsuiAxios.post(params).then(function (ro) { | |||
|  |                         if(ro.result == 'ok') { | |||
|  |                             that.$message({ | |||
|  |                                 message: '删除成功', | |||
|  |                                 type: 'success' | |||
|  |                             }); | |||
|  |                             that.initTreeData(); | |||
|  |                         } else { | |||
|  |                             that.$message(ro.msg); | |||
|  |                         } | |||
|  |                     }).catch(error=>{ | |||
|  |                         console.log(error); | |||
|  |                     }) | |||
|  |                 }).catch(() => { | |||
|  |                 }); | |||
|  |             }, | |||
|  |             changeReadOnly(){ | |||
|  |                 if(this.attrForm.readonly){ | |||
|  |                     this.attrForm.readonly = false; | |||
|  |                 }else{ | |||
|  |                     this.attrForm.readonly = true; | |||
|  |                 } | |||
|  | 
 | |||
|  |             }, | |||
|  |             changeAttrType(obj) { | |||
|  | 
 | |||
|  |                 // 类型为pal bpm 时 只读行为不可选
 | |||
|  |                 let arr = ['relation','awsorg']; | |||
|  |                 if(arr.includes(obj)){ | |||
|  |                     this.readOnlyCursor = true; | |||
|  |                     this.attrForm.readonly = false; | |||
|  |                 }else{ | |||
|  |                     this.readOnlyCursor = false; | |||
|  |                 } | |||
|  |                 this.attrForm.ref = ''; | |||
|  |                 this.attrForm.relationRef.value = ''; | |||
|  |                 this.attrForm.relationRef.multiple = 'false'; | |||
|  |                 this.attrForm.relationRef.type = ''; | |||
|  |                 this.attrForm.awsorgRef.scope = []; | |||
|  |                 this.attrForm.awsorgRef.multiple = 'false'; | |||
|  |                 this.attrForm.value = ''; | |||
|  |             }, | |||
|  |             initDrawerBodyHeight() { | |||
|  |                 if (document.getElementById("drawerBody") != null) { | |||
|  |                     document.getElementById("drawerBody").style.height = | |||
|  |                         parseInt(this.mainHeight) -40 + parseInt(this.parentHeaderHeight) - 58 - parseInt(this.drawer.footerHeight) + 'px';// 68是drawer标题高度
 | |||
|  |                 } | |||
|  |             }, | |||
|  |         }, | |||
|  |         computed: { | |||
|  |             listenTopMainHeight() { | |||
|  |                 return this.$store.getters.getTopMainHeightFn; | |||
|  |             } | |||
|  |         }, | |||
|  |         watch: { | |||
|  |             listenTopMainHeight: function (newd, old) { | |||
|  |                 this.mainHeight = (parseInt(newd)) - parseInt(this.parentHeaderHeight) + 'px'; | |||
|  |                 this.treeHeight = (parseInt(newd) - parseInt(this.parentHeaderHeight) - 61) + 'px'; | |||
|  |                 this.initDrawerBodyHeight(); | |||
|  |             }, | |||
|  |             methodDataType: function(newV, oldV) { | |||
|  |                 this.nodeData = null; | |||
|  |                 if (this.$refs.tree) { | |||
|  |                     this.$refs.tree.setCurrentKey(null); | |||
|  |                 } | |||
|  |                 if (newV != 'all') { | |||
|  |                     this.createBtnDisabled = true; | |||
|  |                 } else { | |||
|  |                     this.createBtnDisabled = false; | |||
|  |                 } | |||
|  |                 this.initTableData(); | |||
|  |             } | |||
|  | 
 | |||
|  |         } | |||
|  |     } | |||
|  | </script> | |||
|  | 
 | |||
|  | <style scoped> | |||
|  |     #methodAttribute >>> .el-tree-node__content { | |||
|  |         background-color: #f8f8f8; | |||
|  |     } | |||
|  |     #methodAttribute >>> .el-tree-node__content:hover { | |||
|  |         /*background-color: #F5F7FA;*/ | |||
|  |         background-color: #d4d4d4; | |||
|  |     } | |||
|  |     #methodAttribute >>> .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content { | |||
|  |         background-color: #F5F7FA; | |||
|  |         color: #4E7FF9; | |||
|  |     } | |||
|  |     #methodAttribute >>> .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content .awsui-iconfont { | |||
|  |         color: #4E7FF9 !important; | |||
|  |     } | |||
|  |     #methodAttribute >>> .awsui-main { | |||
|  |         padding: 10px; | |||
|  |     } | |||
|  |     #methodAttribute >>> .awsui-sidebar__header { | |||
|  |         margin-bottom: 0px; | |||
|  |         padding: 15px 20px 15px 20px; | |||
|  |         border-bottom: 1px solid #f2f2f2; | |||
|  |         font-size: 16px; | |||
|  |     } | |||
|  |     .attr-aside { | |||
|  |         background-color: #f8f8f8; | |||
|  |         overflow: hidden; | |||
|  |     } | |||
|  |     #methodAttribute >>> .input-update-attr-name input { | |||
|  |         border-style: dashed !important; | |||
|  |     } | |||
|  |     #methodAttribute >>> .el-table__row .operate-icon-display{ | |||
|  |         display: none; | |||
|  |     } | |||
|  |     #methodAttribute >>> .el-table__row:hover .operate-icon-display{ | |||
|  |         display: inline-block; | |||
|  |     } | |||
|  |     .attr { | |||
|  |         cursor: move; | |||
|  |     } | |||
|  |     .div-button-small { | |||
|  |       display:inline-block; | |||
|  |       width: 32.8%; | |||
|  |       height: 35px; | |||
|  |       border: 1px solid #e9e9e9; | |||
|  |       line-height: 37px; | |||
|  |       vertical-align: middle; | |||
|  |       text-align: center; | |||
|  |       cursor: pointer; | |||
|  |     } | |||
|  |     .div-button { | |||
|  |         display:inline-block; | |||
|  |         width: 49%; | |||
|  |         height: 35px; | |||
|  |         border: 1px solid #e9e9e9; | |||
|  |         line-height: 37px; | |||
|  |         vertical-align: middle; | |||
|  |         text-align: center; | |||
|  |         cursor: pointer; | |||
|  |     } | |||
|  |     #methodAttribute /deep/ .el-table__body-wrapper:hover { | |||
|  |         cursor: pointer; | |||
|  |     } | |||
|  | </style> |