725 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			725 lines
		
	
	
		
			28 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|   | <template> | |||
|  |   <el-container> | |||
|  |     <div id="repositoryInfoProperty" style="height: 500px;width: 100%;overflow: auto;"> | |||
|  |       <template v-for="(group, i) in propertyData"> | |||
|  |         <div class="property-group"><p style="padding-left: 5px;"><b>{{group.groupPathName}}</b></p></div> | |||
|  |         <div style="margin: 0 50px 0 30px;"> | |||
|  |           <template v-for="(item, j) in group.data"> | |||
|  |             <!-- 模型名称单独处理 --> | |||
|  |             <template v-if="item.type=='string' && item.id == 'PLNAME'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input :size=size :disabled="item.readonly" v-model="item.value" @blur="saveRepositoryNameVal(item.value)"></el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--string类型--> | |||
|  |             <template v-if="item.type=='string' && item.id != 'PLNAME'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input :size=size :disabled="item.readonly" v-model="item.value" @blur="saveStringPropVal(item.id, item.value, item.attrSource)"></el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--textarea类型--> | |||
|  |             <template v-if="item.type=='textarea'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label" style="vertical-align: bottom;">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input | |||
|  |                     :size=size | |||
|  |                     type="textarea" | |||
|  |                     :rows="2" | |||
|  |                     placeholder="请输入内容" | |||
|  |                     v-model="item.value" | |||
|  |                     :disabled="item.readonly" | |||
|  |                     @blur="saveStringPropVal(item.id, item.value, item.attrSource)" | |||
|  |                   > | |||
|  |                   </el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--number类型--> | |||
|  |             <template v-if="item.type=='number'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input-number @change="saveNumberPropVal(item.id, item.value, item.attrSource)" :size=size style="width: 100%;cursor: pointer;" controls-position="right" :step="1" v-model="item.value" :disabled="item.readonly"></el-input-number> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--boolean类型--> | |||
|  |             <template v-if="item.type=='boolean'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <template> | |||
|  |                     <el-select @change="saveSingleSelectVal(item.id, item.value, item.attrSource)" :disabled="item.readonly" clearable :size=size style="width: 100%" v-model="item.value" placeholder="请选择"> | |||
|  |                       <el-option | |||
|  |                         v-for="option in item.options" | |||
|  |                         :key="option.value" | |||
|  |                         :label="option.label" | |||
|  |                         :value="option.value"> | |||
|  |                       </el-option> | |||
|  |                     </el-select> | |||
|  |                   </template> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--select类型--> | |||
|  |             <template v-if="item.type=='select'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <template> | |||
|  |                     <el-select @change="saveSingleSelectVal(item.id, item.value, item.attrSource)" :disabled="item.readonly" clearable :size=size style="width: 100%" v-model="item.value" placeholder="请选择"> | |||
|  |                       <el-option | |||
|  |                         v-for="option in item.options" | |||
|  |                         :key="option.value" | |||
|  |                         :label="option.label" | |||
|  |                         :value="option.value"> | |||
|  |                       </el-option> | |||
|  |                     </el-select> | |||
|  |                   </template> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--select_m类型--> | |||
|  |             <template v-if="item.type=='select_m'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <template> | |||
|  |                     <el-select @change="saveMultipleSelectVal(item.id, item.value, item.attrSource)"  :disabled="item.readonly" :size=size style="width: 100%" multiple v-model="item.value" placeholder="请选择"> | |||
|  |                       <el-option | |||
|  |                         v-for="option in item.options" | |||
|  |                         :key="option.value" | |||
|  |                         :label="option.label" | |||
|  |                         :value="option.value"> | |||
|  |                       </el-option> | |||
|  |                     </el-select> | |||
|  |                   </template> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--deptAddress类型(平台部门地址簿)--> | |||
|  |             <template v-if="item.type=='deptAddress'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input :size=size :disabled="item.readonly" readonly @click.native="choiceBpmOrgAddressComponent(group.groupPath, item.type, item.id, item.readonly)" v-model="item.value"></el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--userAddress类型(平台人员地址簿)--> | |||
|  |             <template v-if="item.type=='userAddress'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input :size=size :disabled="item.readonly" readonly @click.native="choiceBpmOrgAddressComponent(group.groupPath,item.type, item.id,  item.readonly)" v-model="item.value"></el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--relation-org-shape类型(PAL组织形状调用)--> | |||
|  |             <template v-if="item.type=='relationOrg'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input :size=size :disabled="item.readonly" readonly v-model="item.value"></el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--awsorg类型--> | |||
|  |             <template v-if="item.type=='awsorg'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input :size=size :disabled="item.readonly" readonly @click.native="choiceAwsOrgComponent(item.ref, item.type, item.id, item.label, item.readonly)" v-model="item.value"></el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--relation类型--> | |||
|  |             <template v-if="item.type=='relation'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input :size=size :disabled="item.readonly" readonly @click.native="choiceRelationComponent(item.ref, item.type, item.id, item.label, item.readonly, item.fileIds, item.shapeIds)" v-model="item.value"></el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--   link类型   --> | |||
|  |             <template v-if="item.type=='link' && item.id != 'PLNAME'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input :size=size :disabled="item.readonly" v-model="item.value" @blur="saveStringPropVal(item.id, item.value, item.attrSource)"></el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--   DateTimePicker 类型 --> | |||
|  |             <template v-if="item.type=='DateTimePicker'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-date-picker value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;" type="datetime" placeholder="请选择日期时间"  @blur="saveStringPropVal(item.id, item.value, item.attrSource)" :disabled="item.readonly" v-model="item.value" ></el-date-picker> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |             <!--   table 类型 --> | |||
|  |             <template v-if="item.type=='table'"> | |||
|  |               <div class="property-item"> | |||
|  |                 <label class="property-label">{{item.label}}</label> | |||
|  |                 <div class="property-value"> | |||
|  |                   <el-input :size=size :disabled="item.readonly" v-model="item.value.name"> | |||
|  |                     <template slot="suffix"> | |||
|  |                       <i style="font-size: 20px;line-height: 36px" class="el-icon-s-grid" @click="openTableDialog(item.id,item.value,item.attrSource)"></i> | |||
|  |                     </template> | |||
|  |                   </el-input> | |||
|  |                 </div> | |||
|  |               </div> | |||
|  |             </template> | |||
|  |           </template> | |||
|  |         </div> | |||
|  |       </template> | |||
|  |     </div> | |||
|  |     <BPMOrgAddress | |||
|  |       ref="palAwsOrgAddress" | |||
|  |       :visible.sync="bpmOrgAddress.visible" | |||
|  |       :addressType="bpmOrgAddress.addressType" | |||
|  |       v-on:cancel="bpmOrgAddress.visible = false" | |||
|  |       v-on:getResult="saveBpmOrgAddressResult" | |||
|  |       multiple | |||
|  |       :title="title" | |||
|  |       :multiple="bpmOrgAddress.multiple" | |||
|  |      /> | |||
|  |     <pal-relation-address | |||
|  |           ref="palRelationAddress" | |||
|  |           :visible.sync="palRelationAddressVisible" | |||
|  |           v-on:cancel="palRelationAddressVisible = false" | |||
|  |           v-on:getResult="saveRelationResult" | |||
|  |           :title="title" | |||
|  |           :selectFileId="relation.selectFileId" | |||
|  |           :selectShapeId="relation.selectShapeId" | |||
|  |           :relationType="relation.relationType" | |||
|  |           :categorys="relation.category" | |||
|  |           :methods="relation.method" | |||
|  |           :wsId="relation.wsId" | |||
|  |           :teamId="relation.teamId" | |||
|  |           :multiple = relation.multiple | |||
|  |     /> | |||
|  |     <el-container> | |||
|  |       <el-dialog | |||
|  |           id="tableDialog" | |||
|  |           width="500px" | |||
|  |           :visible.sync="tableDialogVisible" | |||
|  |           v-if="tableDialogVisible" | |||
|  |           :modal-append-to-body=true | |||
|  |           :close-on-click-modal=false | |||
|  |           :append-to-body=true | |||
|  |           :show-close=false | |||
|  |           destroy-on-close | |||
|  |       > | |||
|  |         <template slot="title"> | |||
|  |           <el-tooltip placement="top-start"> | |||
|  |             <div slot="content">{{ dialogTableNewValue.name }}</div> | |||
|  |             <el-input class="titleInput" v-model="dialogTableNewValue.name"/> | |||
|  |           </el-tooltip> | |||
|  |         </template> | |||
|  |         <div style="height: 300px;overflow: auto;"> | |||
|  |           <table class="table"> | |||
|  |             <tr> | |||
|  |               <td style="width: 25%"> | |||
|  |                 <el-tooltip placement="top-start"> | |||
|  |                   <div slot="content">{{ dialogTableNewValue.table[0].name }}</div> | |||
|  |                   <el-input class="headInput" v-model="dialogTableNewValue.table[0].name" size="mini"/> | |||
|  |                 </el-tooltip> | |||
|  |               </td> | |||
|  |               <td style="width: 55%"> | |||
|  |                 <el-tooltip placement="top-start"> | |||
|  |                   <div slot="content">{{ dialogTableNewValue.table[0].name }}</div> | |||
|  |                   <el-input class="headInput" v-model="dialogTableNewValue.table[0].desc" size="mini"/> | |||
|  |                 </el-tooltip> | |||
|  |               </td> | |||
|  |               <td><span style="font-size: 14px;color: #909399;font-weight: bold;font-family: PingFangSC-Light;">操作</span></td> | |||
|  |             </tr> | |||
|  |             <tr v-for="item in dialogTableNewValue.table.slice(1)"> | |||
|  |               <td> | |||
|  |                 <el-tooltip placement="top-start"> | |||
|  |                   <div slot="content">{{ item.name }}</div> | |||
|  |                   <el-input class="contentInput" v-model="item.name" size="mini"/> | |||
|  |                 </el-tooltip> | |||
|  |               </td> | |||
|  |               <td> | |||
|  |                 <el-tooltip placement="top-start"> | |||
|  |                   <div slot="content">{{ item.desc }}</div> | |||
|  |                   <el-input class="contentInput" v-model="item.desc" size="mini"/> | |||
|  |                 </el-tooltip> | |||
|  |               </td> | |||
|  |               <td><span style="color: red;text-decoration: underline" @click="deleteTableTr(item.id)">删除</span></td> | |||
|  |             </tr> | |||
|  |           </table> | |||
|  |         </div> | |||
|  |         <awsui-button style="margin-top: 10px;" class="button-general-color" type="primary" @click="addNewTr">新增</awsui-button> | |||
|  |         <span slot="footer" class="dialog-footer"> | |||
|  |         <awsui-button class="button-general-color" type="primary" @click="confirmTableDialog()">确定</awsui-button> | |||
|  |         <awsui-button @click="cancelTableDialog">取消</awsui-button> | |||
|  |       </span> | |||
|  |       </el-dialog> | |||
|  |     </el-container> | |||
|  |   </el-container> | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  |   import BPMOrgAddress from  "@/components/common/BPMOrgAddress/index.js";// pal平台组织架构地址簿,调用平台部门人员角色
 | |||
|  |   import PalRelationAddress from  "@/components/common/PalRelationAddress/index.js"; | |||
|  |   import awsuiAxios from "../../awsuiAxios"; | |||
|  |   // pal关联关系地址簿
 | |||
|  |     export default { | |||
|  |       name: "RepositoryInfoProperty", | |||
|  |       components: {BPMOrgAddress, PalRelationAddress}, | |||
|  |       props: { | |||
|  |         id: { | |||
|  |           type: String, | |||
|  |           default: '' | |||
|  |         }, | |||
|  |         versionId: { | |||
|  |           type: String, | |||
|  |           default: '' | |||
|  |         }, | |||
|  |         repositoryRefresh: { | |||
|  |           type: Function, | |||
|  |           default: null | |||
|  |         } | |||
|  |       }, | |||
|  |       data() { | |||
|  |         return { | |||
|  |           bpmOrgAddress: { | |||
|  |             visible: false, | |||
|  |             addressType: "user", | |||
|  |             multiple: false | |||
|  |           }, | |||
|  |           palRelationAddressVisible: false, | |||
|  |           title: '', | |||
|  |           relation: { | |||
|  |             selectFileId: '', | |||
|  |             selectShapeId: '', | |||
|  |             relationType: 'shape', | |||
|  |             category: '', | |||
|  |             method: '', | |||
|  |             wsId: this.$store.getters.getWsIdFn, | |||
|  |             teamId: this.$store.getters.getTeamIdFn, | |||
|  |             multiple: false | |||
|  |           }, | |||
|  |           propertyData: [ | |||
|  |             { | |||
|  |               groupPath: 'basic', | |||
|  |               groupPathName: '基本属性', | |||
|  |               data: [] | |||
|  |             } | |||
|  |           ], | |||
|  |           size: 'medium', | |||
|  |           currPropertyId: '', | |||
|  |           currPropertyType: '', | |||
|  |           currGroup: '', | |||
|  |           currCategory: '', | |||
|  |           currMethod: '', | |||
|  |           currRelationType: '', | |||
|  |           currPropSource: '', | |||
|  |           tableDialogVisible: false, | |||
|  |           dialogTableId: '', | |||
|  |           dialogTableOldValue: {},    // 弹框表格值副本  刚打开dialog的值    点击取消会把该值保存到数据库
 | |||
|  |           dialogTableNewValue: {      // 弹框表格值  对表格的更新操作在此进行   点击确定会把该值保存到数据库
 | |||
|  |             name: '', | |||
|  |             table: [ | |||
|  |                 { id: '',name: '',desc: '' }, | |||
|  |             ] | |||
|  |           }, | |||
|  |           dialogTableAttrSource: undefined | |||
|  |         }; | |||
|  |       }, | |||
|  |       created() { | |||
|  |         this.initData(); | |||
|  |       }, | |||
|  |       methods: { | |||
|  |         initData() { | |||
|  |           const that = this; | |||
|  |           const data = { | |||
|  |             url:'jd', | |||
|  |             data:{ | |||
|  |               cmd: 'com.actionsoft.apps.coe.pal_processlevel_property_data_query', | |||
|  |               id: that.id, | |||
|  |               wsId: that.$store.getters.getWsIdFn, | |||
|  |               teamId: that.$store.getters.getTeamIdFn | |||
|  |             } | |||
|  |           }; | |||
|  |           // 查询数据
 | |||
|  |           awsuiAxios.post(data).then(function (ro) { | |||
|  |             if (ro.result == 'ok') { | |||
|  |               let propertyData = ro.data.propertyData; | |||
|  |               // table 类型value默认为空对象   初始赋值
 | |||
|  |               propertyData.forEach(item => { | |||
|  |                 item.data.forEach(item1 => { | |||
|  |                   if (item1.type == 'table' && JSON.stringify(item1.value) == '{}') { | |||
|  |                     item1.value = { | |||
|  |                       name: '未命名表单', | |||
|  |                       table: [ | |||
|  |                         { id: 'table_head',name: '命名',desc: '描述'} | |||
|  |                       ] | |||
|  |                     } | |||
|  |                   } | |||
|  |                 }) | |||
|  |               }) | |||
|  |               that.propertyData = propertyData; | |||
|  |             } else { | |||
|  |               that.$message.error(ro.msg); | |||
|  |             } | |||
|  |           }).catch(error=>{ | |||
|  |             console.log(error); | |||
|  |           }) | |||
|  |         }, | |||
|  |         openTableDialog(id,value,attrSource) { | |||
|  |           this.tableDialogVisible = true | |||
|  |           this.dialogTableId = id | |||
|  |           this.dialogTableOldValue = JSON.parse(JSON.stringify(value)) | |||
|  |           this.dialogTableNewValue = value | |||
|  |           this.dialogTableAttrSource = attrSource | |||
|  |         }, | |||
|  |         addNewTr() { | |||
|  |           this.dialogTableNewValue.table.push({ | |||
|  |             id: Date.now().toString(36),name: '',desc: '' | |||
|  |           }) | |||
|  |         }, | |||
|  |         deleteTableTr(id) { | |||
|  |           let index = this.dialogTableNewValue.table.findIndex(item => { | |||
|  |             return item.id == id | |||
|  |           }) | |||
|  |           this.dialogTableNewValue.table.splice(index,1) | |||
|  |         }, | |||
|  |         confirmTableDialog() { | |||
|  |           if (this.dialogTableAttrSource && this.dialogTableAttrSource == 'default') { | |||
|  |             this.saveDefaultpropToDb(this.dialogTableId, JSON.stringify(this.dialogTableNewValue)); | |||
|  |           } else { | |||
|  |             this.saveCustomPropToDb(this.dialogTableId, JSON.stringify(this.dialogTableNewValue)); | |||
|  |           } | |||
|  |           this.tableDialogVisible = false | |||
|  |         }, | |||
|  |         cancelTableDialog() { | |||
|  |           if (this.dialogTableAttrSource && this.dialogTableAttrSource == 'default') { | |||
|  |             this.saveDefaultpropToDb(this.dialogTableId, JSON.stringify(this.dialogTableOldValue)); | |||
|  |           } else { | |||
|  |             this.saveCustomPropToDb(this.dialogTableId, JSON.stringify(this.dialogTableOldValue)); | |||
|  |           } | |||
|  |           this.tableDialogVisible = false | |||
|  |         }, | |||
|  |         saveStringPropVal(attrId, value, attrSource) {// 保存文本属性内容
 | |||
|  |           if (value == undefined) { | |||
|  |             value = ''; | |||
|  |           } | |||
|  |           if (attrSource && attrSource == 'default') { | |||
|  |             this.saveDefaultpropToDb(attrId, value); | |||
|  |           } else { | |||
|  |             this.saveCustomPropToDb(attrId, value); | |||
|  |           } | |||
|  |         }, | |||
|  |         saveNumberPropVal(attrId, value, attrSource) {// 保存数字类型内容
 | |||
|  |           if (value == undefined) { | |||
|  |             value = ''; | |||
|  |           } | |||
|  |           if (attrSource && attrSource == 'default') { | |||
|  |             this.saveDefaultpropToDb(attrId, value); | |||
|  |           } else { | |||
|  |             this.saveCustomPropToDb(attrId, value); | |||
|  |           } | |||
|  |         }, | |||
|  |         saveSingleSelectVal(attrId, value, attrSource) {// 保存boolean,单选类型内容
 | |||
|  |           if (value == undefined) { | |||
|  |             value = ''; | |||
|  |           } | |||
|  |           if (attrSource && attrSource == 'default') { | |||
|  |             this.saveDefaultpropToDb(attrId, value); | |||
|  |           } else { | |||
|  |             this.saveCustomPropToDb(attrId, value); | |||
|  |           } | |||
|  |         }, | |||
|  |         saveMultipleSelectVal(attrId, value, attrSource) {// 保存多选类型内容
 | |||
|  |           value = value.join(','); | |||
|  |           if (attrSource && attrSource == 'default') { | |||
|  |             this.saveDefaultpropToDb(attrId, value); | |||
|  |           } else { | |||
|  |             this.saveCustomPropToDb(attrId, value); | |||
|  |           } | |||
|  |         }, | |||
|  |         saveDefaultpropToDb(attrId, value) {// 保存固定属性至数据库
 | |||
|  |           const that = this; | |||
|  |           const data = { | |||
|  |             url:'jd', | |||
|  |             data:{ | |||
|  |               cmd: 'com.actionsoft.apps.coe.pal_processlevel_default_attr_content_save', | |||
|  |               uuid: that.id, | |||
|  |               josnKey: attrId, | |||
|  |               josnContent: value | |||
|  |             } | |||
|  |           }; | |||
|  |           // 查询数据
 | |||
|  |           awsuiAxios.post(data).then(function (ro) { | |||
|  |             if (ro.result == 'ok') { | |||
|  |               // that.$message({
 | |||
|  |               //   message: '保存成功',
 | |||
|  |               //   type: 'success'
 | |||
|  |               // });
 | |||
|  |               that.initData(); | |||
|  |             } else { | |||
|  |               that.$message.error(ro.msg); | |||
|  |             } | |||
|  |           }).catch(error=>{ | |||
|  |             console.log(error); | |||
|  |           }) | |||
|  |         }, | |||
|  |         saveCustomPropToDb(attrId, value) {// 保存属性内容至数据库
 | |||
|  |           const that = this; | |||
|  |           const data = { | |||
|  |             url:'jd', | |||
|  |             data:{ | |||
|  |               cmd: 'com.actionsoft.apps.coe.pal_processlevel_more_attr_content_save', | |||
|  |               uuid: that.id, | |||
|  |               josnKey: attrId, | |||
|  |               josnContent: value | |||
|  |             } | |||
|  |           }; | |||
|  |           // 查询数据
 | |||
|  |           awsuiAxios.post(data).then(function (ro) { | |||
|  |             if (ro.result == 'ok') { | |||
|  |               // that.$message({
 | |||
|  |               //   message: '保存成功',
 | |||
|  |               //   type: 'success'
 | |||
|  |               // });
 | |||
|  |               that.initData(); | |||
|  |             } else { | |||
|  |               that.$message.error(ro.msg); | |||
|  |             } | |||
|  |           }).catch(error=>{ | |||
|  |             console.log(error); | |||
|  |           }) | |||
|  |         }, | |||
|  |         choiceRelationComponent(ref, type, id, label, readonly, fileIds, shapeIds) {// PAL模型/形状选择组件
 | |||
|  |           if (!readonly) { | |||
|  |             this.currPropertyId = id; | |||
|  |             this.currPropertyType = type; | |||
|  |             const method = ref.method; | |||
|  |             if (method.indexOf('.') > -1) { | |||
|  |               this.currCategory = method.substring(0, method.indexOf('.')); | |||
|  |               this.currMethod = method; | |||
|  |             } else { | |||
|  |               this.currCategory = method; | |||
|  |               this.currMethod = ''; | |||
|  |             } | |||
|  |             this.currPropSource = 'custom';// 自定义扩展属性
 | |||
|  |             this.relation.multiple = true; | |||
|  |             this.currRelationType = ref.type; | |||
|  |             this.title = label; | |||
|  |             this.relation.selectFileId = fileIds;// 已选中文件id
 | |||
|  |             this.relation.selectShapeId = shapeIds;// 已选中形状id
 | |||
|  |             this.relation.relationType = ref.type; | |||
|  |             this.relation.category = this.currCategory; | |||
|  |             this.relation.method = this.currMethod; | |||
|  |             this.relation.multiple = ref.multiple; | |||
|  |             this.palRelationAddressVisible = true; | |||
|  |           } | |||
|  |         }, | |||
|  |         choiceBpmOrgAddressComponent(group, type, id, readonly) {// 平台地址簿组件(责任部门责任人)
 | |||
|  |           if (!readonly) { | |||
|  |             this.currPropertyId = id; | |||
|  |             this.currPropertyType = type; | |||
|  |             if (type == "deptAddress") {// 责任部门
 | |||
|  |               this.title = '责任部门'; | |||
|  |               this.bpmOrgAddress.addressType = 'dept'; | |||
|  |               this.bpmOrgAddress.visible = true; | |||
|  |             } else if (type == "userAddress") {// 责任人
 | |||
|  |               this.title = '责任人'; | |||
|  |               this.bpmOrgAddress.addressType = 'user'; | |||
|  |               this.bpmOrgAddress.visible = true; | |||
|  |             } | |||
|  |           } | |||
|  |         }, | |||
|  |         choiceAwsOrgComponent(ref, type, id, label, readonly) {// AWS平台部门/人员/角色组件
 | |||
|  |           if (!readonly) { | |||
|  |             this.currPropertyId = id; | |||
|  |             this.currPropertyType = type; | |||
|  |             this.title = label; | |||
|  |             this.bpmOrgAddress.addressType = ref.scope.join(','); | |||
|  |             this.bpmOrgAddress.multiple = ref.multiple; | |||
|  |             this.bpmOrgAddress.visible = true; | |||
|  |           } | |||
|  |         }, | |||
|  |         saveBpmOrgAddressResult(data) { | |||
|  |           this.bpmOrgAddress.visible = false; | |||
|  |           // 保存
 | |||
|  |           const params = []; | |||
|  |           for (let i = 0; i < data.length; i++) { | |||
|  |             params.push({name: data[i].name, id: data[i].id, type: data[i].type}) | |||
|  |           } | |||
|  |           this.saveCustomPropToDb(this.currPropertyId, JSON.stringify(params)); | |||
|  |         }, | |||
|  |         // 调用关联组件保存函数
 | |||
|  |         saveRelationResult(data) { | |||
|  |           // 返回结果
 | |||
|  |           const jsonContent = { | |||
|  |             fileId : this.id, | |||
|  |             shapeId : "", | |||
|  |             shapeText : "", | |||
|  |             attrId : this.currPropertyId, | |||
|  |             relationFileId : '', | |||
|  |             relationShapeId : '', | |||
|  |             relationShapeText : '', | |||
|  |             groupPath : this.currGroup | |||
|  |           } | |||
|  |           const relationType = this.currRelationType; | |||
|  |           if (relationType == 'file') { | |||
|  |             const fileIds = []; | |||
|  |             for (let i = 0; i < data.length; i++) { | |||
|  |               fileIds.push(data[i].versionId); | |||
|  |             } | |||
|  |             jsonContent.relationFileId = fileIds.join(","); | |||
|  |           } | |||
|  |           else if (relationType == 'shapeAndFile') { | |||
|  |             let fileIds = []; | |||
|  |             let shapeIds = []; | |||
|  |             let shapeNames = []; | |||
|  |             for (let i = 0; i < data.length; i++) { | |||
|  |               if (data[i].children.length == 0) {    // 文件
 | |||
|  |                 fileIds.push(data[i].versionId); | |||
|  |                 shapeNames.push(data[i].name); | |||
|  |                 shapeIds.push(' ')  // push 空格
 | |||
|  |               }else {  // 形状
 | |||
|  |                 for (let j = 0; j < data[i].children.length; j++) { | |||
|  |                   fileIds.push(data[i].versionId) | |||
|  |                   shapeIds.push(data[i].children[j].shapeId) | |||
|  |                   shapeNames.push(data[i].children[j].name) | |||
|  |                 } | |||
|  |               } | |||
|  |             } | |||
|  |             jsonContent.relationFileId = fileIds.join(","); | |||
|  |             jsonContent.relationShapeId = shapeIds.join(","); | |||
|  |             jsonContent.relationShapeText = shapeNames.join(","); | |||
|  |           } | |||
|  |           else {// 形状
 | |||
|  |             const fileIds = []; | |||
|  |             const shapeIds = []; | |||
|  |             const shapeNames = []; | |||
|  |             for (let i = 0; i < data.length; i++) { | |||
|  |               const currFile = data[i]; | |||
|  |               const children = currFile.children; | |||
|  |               for (let j = 0; j < children.length; j++) { | |||
|  |                 const currShape = children[j]; | |||
|  |                 fileIds.push(currFile.id); | |||
|  |                 shapeIds.push(currShape.shapeId); | |||
|  |                 shapeNames.push(currShape.name); | |||
|  |               } | |||
|  |             } | |||
|  |             jsonContent.relationFileId = fileIds.join(","); | |||
|  |             jsonContent.relationShapeId = shapeIds.join(","); | |||
|  |             jsonContent.relationShapeText = shapeNames.join(","); | |||
|  |           } | |||
|  |           if (this.currPropSource == 'default') {// 固定属性,责任人、责任部门
 | |||
|  |             this.saveDefaultpropToDb(this.currPropertyId, JSON.stringify(jsonContent)); | |||
|  |           } else {// 自定义属性
 | |||
|  |             this.saveCustomPropToDb(this.currPropertyId, JSON.stringify(jsonContent)); | |||
|  |           } | |||
|  |           this.palRelationAddressVisible = false; | |||
|  |         }, | |||
|  |         saveRepositoryNameVal(name) {// 模型名称保存
 | |||
|  |           const that = this; | |||
|  |           const data = { | |||
|  |             url:'jd', | |||
|  |             data:{ | |||
|  |               cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_updatetitle', | |||
|  |               uuid: that.id, | |||
|  |               title: name, | |||
|  |             } | |||
|  |           }; | |||
|  |           // 查询数据
 | |||
|  |           awsuiAxios.post(data).then(function (ro) { | |||
|  |             if (ro.result == 'ok') { | |||
|  |               that.initData(); | |||
|  |               // 父页面左侧树和右侧
 | |||
|  |               if (that.repositoryRefresh && that.id) { | |||
|  |                 that.repositoryRefresh(that.id); | |||
|  |               } | |||
|  |             } else { | |||
|  |               that.$message.error(ro.msg); | |||
|  |             } | |||
|  |           }).catch(error=>{ | |||
|  |             console.log(error); | |||
|  |           }) | |||
|  |         } | |||
|  |       } | |||
|  |     } | |||
|  | </script> | |||
|  | 
 | |||
|  | <style scoped> | |||
|  |   .property-group { | |||
|  |     height: 25px; | |||
|  |     line-height: 25px; | |||
|  |     vertical-align: center; | |||
|  |     margin: 30px 30px 15px 20px; | |||
|  |     border-left: 3px solid #4E7FF9; | |||
|  |   } | |||
|  |   .property-item { | |||
|  |     margin-top: 15px; | |||
|  |   } | |||
|  |   .property-label { | |||
|  |     width: 11%; | |||
|  |     display: inline-block; | |||
|  |     text-align: right; | |||
|  |     padding-right: 12px; | |||
|  |     vertical-align: middle; | |||
|  |   } | |||
|  |   .property-value { | |||
|  |     display: inline-block; | |||
|  |     width: 85%; | |||
|  |   } | |||
|  |   #tableDialog  >>> .el-dialog__body { | |||
|  |     padding: 10px 20px; | |||
|  |     color: #606266; | |||
|  |     font-size: 14px; | |||
|  |     word-break: break-all; | |||
|  |     cursor: pointer; | |||
|  |   } | |||
|  |   #tableDialog  >>> .el-input__inner { | |||
|  |     border: none; | |||
|  |     padding: 0; | |||
|  |     text-overflow: ellipsis; | |||
|  |     cursor: pointer; | |||
|  |   } | |||
|  |   .table { | |||
|  |     width: 100%; | |||
|  |   } | |||
|  |   .table tr td{ | |||
|  |     border-bottom: 1px solid #f2f2f2; | |||
|  |     padding:0 5px; | |||
|  |     white-space: normal; | |||
|  |   } | |||
|  |   .titleInput  >>> .el-input__inner { | |||
|  |     height: 25px; | |||
|  |     width: 100%; | |||
|  |     padding: 0; | |||
|  |     border: none; | |||
|  |     font-size: 18px; | |||
|  |     font-family: PingFangSC-Light; | |||
|  |   } | |||
|  |   .headInput >>> .el-input__inner { | |||
|  |     font-size: 14px; | |||
|  |     color: #909399; | |||
|  |     font-weight: bold; | |||
|  |     font-family: PingFangSC-Light; | |||
|  |   } | |||
|  |   .contentInput >>> .el-input__inner { | |||
|  |     font-size: 14px; | |||
|  |     color: #606266; | |||
|  |     font-family: PingFangSC-Light; | |||
|  |     background: transparent; | |||
|  |   } | |||
|  | </style> |