数通互联化工云平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

287 lines
8.1 KiB

<!--
@ 作者: 秦东
@ 时间: 2023-10-11 08:39:10
@ 备注: 发起人节点操作
-->
<script lang='ts' setup>
import employeesDialog from '@/components/workflow/dialog/employeesDialog.vue'
import { AnalysisForm } from '@/components/workflow/drwer/analysisForm'
import $func from '@/utils/workflow/index'
import { useStore } from '@/store/workflow/index'
import { analysisForm,setFlowFormKeyPower } from '@/api/workflowapi/index'
import AssociatedFormsTinyace from '@/widget/associatedforms/associatedFormsTinyace.vue'
const props = defineProps({
formData:{
type:Object,
default(){
return {}
}
},
formKey:{
type:String,
default:""
},
formVersion:{
type:String,
default:""
},
nodeConfig:{
type: Object,
default: () => ({}),
},
});
const emits = defineEmits<{
(e: 'update:formData', val: any): void
}>()
const formData = computed({
get() {
return props.formData
},
set(val: formStruct) {
emits('update:formData', val)
}
});
//当前节点操作权限
// const
let flowPermission = ref([])
let promoterVisible = ref(false)
let checkedList = ref([])
let store = useStore()
let { setPromoter, setFlowPermission } = store
let approverConfig1 = computed(():any=> store.approverConfig1)
let promoterDrawer = computed(()=> store.promoterDrawer)
let flowPermission1 = computed(()=> store.flowPermission1)
let visible = computed({
get() {
return promoterDrawer.value
},
set() {
closeDrawer()
}
})
watch(flowPermission1, (val) => {
flowPermission.value = val.value
})
const addPromoter = () => {
checkedList.value = flowPermission.value
promoterVisible.value = true;
}
const surePromoter = (data:any) => {
flowPermission.value = data;
promoterVisible.value = false;
}
const savePromoter = () => {
setFlowPermission({
value: flowPermission.value,
flag: true,
id: flowPermission1.value.id
})
let powerAry = [];
if(powerUnitAry.value.recUnitAry.masterUnitList && powerUnitAry.value.recUnitAry.masterUnitList.length > 0){
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item:any)=>{
powerAry.push(item)
})
}
if(powerUnitAry.value.recUnitAry.sunUnitList && powerUnitAry.value.recUnitAry.sunUnitList.length > 0){
powerUnitAry.value.recUnitAry.sunUnitList.forEach((item:any)=>{
if(item.masterUnitList && item.masterUnitList.length > 0){
item.masterUnitList.forEach((itemSun:any) => {
// powerAry.push(item)
if(!powerAry.includes(itemSun)){
powerAry.push(itemSun)
}
})
}
});
}
// console.log("正确",formData.value)
if(formData.value.purview){
// console.log("正确")
let isNew = true
formData.value.purview.forEach((item:any)=>{
// console.log("正确---->",item.nodeKey)
if(item.nodeKey == "begin"){
item.powerAry=powerAry
isNew = false
}
});
if(isNew){
formData.value.purview.push({
nodeKey: "begin",
powerAry:powerAry
})
}
}else{
formData.value.purview = [{
nodeKey: "begin",
powerAry:powerAry
}]
}
// formData.value.purview.push({
// nodeKey: "begin",
// powerAry:powerAry
// }) {{props.formKey}}=>{{props.formVersion}}
let sendInfo: any = {
formKey:props.formKey.toString(),
formVersion:props.formVersion.toString(),
formData:JSON.stringify(formData.value),
formPower:JSON.stringify(formData.value.purview)
}
// console.log("sendInfo",sendInfo)
setFlowFormKeyPower(sendInfo)
// console.log("formDataAll",formData)
// console.log("formData",formData.value.purview)
closeDrawer()
}
const closeDrawer = () => {
setPromoter(false)
}
const powerUnitAry = ref<any>({
nodeKey:"",
recUnitAry:{
masterUnitList:[],
sunUnitList:[],
unitAllKey:[],
unitAllState:[]
}
})
/**
@ 作者: 秦东
@ 时间: 2024-03-13 08:24:54
@ 功能: 解析表单
*/
const jieForm = () => {
analysisForm({nodeKey:"begin",nodeJson:JSON.stringify(formData.value)})
.then((data)=>{
if(data.code == 0){
powerUnitAry.value = data.data
}
})
}
watch(()=>visible.value,(val:boolean)=>{
if(val){
jieForm();
}
})
const nodeSetUp = ref("first")
const contentpage = ref("")
</script>
<template>
<el-drawer v-model="visible" :append-to-body="true" title="发起人" class="set_promoter" :show-close="false" :size="550" :before-close="closeDrawer">
<div class="demo-drawer__content">
<div class="promoter_content drawer_content">
<el-tabs v-model="nodeSetUp" class="demo-tabs">
<el-tab-pane name="first">
<template #label>
<span class="wordKeyCss">属性设置</span>
</template>
<!-- <el-divider content-position="left">节点属性</el-divider> -->
<div class="info_box">
<p>{{ $func.arrToStr(flowPermission) || '所有人' }}</p>
<el-button type="primary" @click="addPromoter">添加/修改发起人</el-button>
</div>
</el-tab-pane>
<el-tab-pane name="second">
<template #label>
<span class="wordKeyCss">操作权限</span>
</template>
<!-- <el-divider content-position="left">操作权限</el-divider> -->
<div class="info_box">
<div class="table_name"><el-text class="mx-1" type="primary">主表</el-text></div>
<el-table v-if="powerUnitAry.recUnitAry.masterUnitList" :data="powerUnitAry.recUnitAry.masterUnitList" size="small" style="width: 100%; --el-table-border-color: none;" :header-cell-style="{background:'#eef1f6',color:'#606266'}" class="customer-no-border-table" >
<el-table-column prop="name" label="字段" />
<el-table-column label="可见" align="center" width="80">
<template #default="scope">
<el-checkbox v-model="scope.row.isLook" label="" />
</template>
</el-table-column>
<el-table-column label="可编辑" align="center" width="80">
<template #default="scope">
<el-checkbox v-model="scope.row.isEdit" label="" />
</template>
</el-table-column>
</el-table>
<el-row v-if="powerUnitAry.recUnitAry.sunUnitList" v-for="(item,index) in powerUnitAry.recUnitAry.sunUnitList" :key="index">
<el-col :span="24" class="table_name"><el-text class="mx-1" type="primary">{{item.name}}</el-text>子表</el-col>
<el-col :span="24">
<el-table v-if="item.masterUnitList" :data="item.masterUnitList" size="small" style="width: 100%; --el-table-border-color: none;" :header-cell-style="{background:'#eef1f6',color:'#606266'}">
<el-table-column prop="name" label="字段" />
<el-table-column label="可见" align="center" width="80">
<template #default="scope">
<el-checkbox v-model="scope.row.isLook" label="" />
</template>
</el-table-column>
<el-table-column label="可编辑" align="center" width="80">
<template #default="scope">
<el-checkbox v-model="scope.row.isEdit" label="" />
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
</div>
</el-tab-pane>
<el-tab-pane name="helpInstructions">
<template #label>
<span class="wordKeyCss">帮助说明</span>
</template>
<div class="info_box">
<QuillEditor v-model="props.nodeConfig.helpTips" height="400px" />
</div>
</el-tab-pane>
</el-tabs>
</div>
<div class="demo-drawer__footer clear">
<el-button type="primary" @click="savePromoter">确 定</el-button>
<el-button @click="closeDrawer"> </el-button>
</div>
<employees-dialog
v-model:visible="promoterVisible"
:isdepartment="true"
:data="checkedList"
@change="surePromoter"
/>
</div>
</el-drawer>
</template>
<style lang='scss' scoped>
.set_promoter {
.promoter_content {
padding: 0 0px;
.info_box{
padding: 0 20px;
}
.el-button {
margin-bottom: 20px;
}
p {
padding: 18px 0;
font-size: 14px;
line-height: 20px;
color: #000000;
}
}
}
.table_name{
padding : 10px 0
}
</style>