|
|
|
@ -4,7 +4,223 @@ |
|
|
|
@ 备注: 页面设置 |
|
|
|
--> |
|
|
|
<script lang='ts' setup> |
|
|
|
import { Delete, Edit, Search, Share, Upload } from '@element-plus/icons-vue' |
|
|
|
import { tipMstClass,tipMstTypeClass,repetitionPeriodClass,weekForDay,runWeekInfo } from '@/api/DesignForm/tableButton' |
|
|
|
import { tipMsgInfo } from '@/api/taskapi/types' |
|
|
|
import { gainFlowLookSee,editLookPowerView,setUpMsg,gainSetUpMsg } from '@/api/taskapi/management' |
|
|
|
import employeesDialog from '@/components/workflow/dialog/employeesDialog.vue' |
|
|
|
|
|
|
|
import type { FormInstance, FormRules } from 'element-plus' |
|
|
|
|
|
|
|
const props = defineProps({ |
|
|
|
formKey:{ |
|
|
|
type:String, |
|
|
|
default:"" |
|
|
|
}, |
|
|
|
formVersion:{ |
|
|
|
type:String, |
|
|
|
default:"" |
|
|
|
}, |
|
|
|
tabsActive:{ |
|
|
|
type:Number, |
|
|
|
default:1 |
|
|
|
}, |
|
|
|
state:{ |
|
|
|
type:Object, |
|
|
|
default(){ |
|
|
|
return {} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
const emits = defineEmits<{ |
|
|
|
(e: 'update:state', val: formStruct): void |
|
|
|
(e: 'update:formKey', val: string): void |
|
|
|
(e: 'update:formVersion', val: string): void |
|
|
|
(e: 'judgeFlowIsEdit', val: boolean): void |
|
|
|
(e: 'runNextWindows', val: number): void |
|
|
|
(e: 'closeFormPage'): void |
|
|
|
}>() |
|
|
|
|
|
|
|
const ruleFormRef = ref<FormInstance>() |
|
|
|
const isShow = ref(false) |
|
|
|
let checkedList = ref<any[]>([]) |
|
|
|
const powLookList = ref([]) |
|
|
|
const activePageIndex = ref<number>(1) |
|
|
|
const handselect = (key: string, keyPath: string[]) => { |
|
|
|
console.log("handselect---->",key, keyPath) |
|
|
|
activePageIndex.value = key |
|
|
|
switch(key){ |
|
|
|
case "2": |
|
|
|
gainSetUpMsgInfo(); |
|
|
|
break; |
|
|
|
default: |
|
|
|
getLookView(); |
|
|
|
} |
|
|
|
} |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-13 09:35:00 |
|
|
|
@ 功能: 关闭页面 |
|
|
|
*/ |
|
|
|
const closePage = () => { |
|
|
|
emits("closeFormPage") |
|
|
|
} |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-13 16:13:00 |
|
|
|
@ 功能: 获取可见范围 |
|
|
|
*/ |
|
|
|
const getLookView = () => { |
|
|
|
gainFlowLookSee({id:props.formVersion}) |
|
|
|
.then(({data})=>{ |
|
|
|
console.log("获取可见范围",data) |
|
|
|
powLookList.value = data |
|
|
|
}) |
|
|
|
} |
|
|
|
onMounted(()=>{ |
|
|
|
getLookView() |
|
|
|
}) |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-15 11:09:01 |
|
|
|
@ 功能: 刷新可见范围 |
|
|
|
*/ |
|
|
|
const surePromoter = (data:any) => { |
|
|
|
// console.log("刷新可见范围",data) |
|
|
|
powLookList.value = data; |
|
|
|
isShow.value = false; |
|
|
|
editLookPowerView({id:props.formVersion,listData:data}) |
|
|
|
.then(({data})=>{ |
|
|
|
// console.log("刷新可见范围--->",data) |
|
|
|
}) |
|
|
|
} |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-15 11:15:03 |
|
|
|
@ 功能: iconIsShow |
|
|
|
*/ |
|
|
|
const iconIsShow = (data:any) => { |
|
|
|
if(data.type == 3){ |
|
|
|
return 3 |
|
|
|
}else if(data.type == 2){ |
|
|
|
return 2 |
|
|
|
} |
|
|
|
return 1 |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-15 15:38:51 |
|
|
|
@ 功能: 提醒页面功能 |
|
|
|
*/ |
|
|
|
/** =================================================================================================================== */ |
|
|
|
const ruleFormRefTip = ref(ElForm); |
|
|
|
const tipForm = reactive<tipMsgInfo>({ |
|
|
|
types:1, //1:流程提醒;2:表单提醒 |
|
|
|
tipClass:2 //1:只提醒一次;2:周期性提醒 |
|
|
|
}) |
|
|
|
const zhouqiVal = reactive<runWeekInfo>({ |
|
|
|
week:0, |
|
|
|
day:0, |
|
|
|
hour:0, |
|
|
|
minute:0 |
|
|
|
}) |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-15 16:21:29 |
|
|
|
@ 功能: 时间周全 |
|
|
|
*/ |
|
|
|
const shortcuts = [ |
|
|
|
{ |
|
|
|
text: '今天', |
|
|
|
value: new Date(), |
|
|
|
}, |
|
|
|
{ |
|
|
|
text: '昨天', |
|
|
|
value: () => { |
|
|
|
const date = new Date() |
|
|
|
date.setDate(date.getDate() - 1) |
|
|
|
return date |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
text: '一周后', |
|
|
|
value: () => { |
|
|
|
const date = new Date() |
|
|
|
date.setDate(date.getDate() - 7) |
|
|
|
return date |
|
|
|
}, |
|
|
|
}, |
|
|
|
] |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-18 08:41:45 |
|
|
|
@ 功能: 获取消息设置 |
|
|
|
*/ |
|
|
|
const gainSetUpMsgInfo = () => { |
|
|
|
|
|
|
|
gainSetUpMsg({id:props.formKey.toString()}) |
|
|
|
.then((data) => { |
|
|
|
// console.log("获取消息设置-====-->",data.data.ruleCont) |
|
|
|
if(data.code == 0){ |
|
|
|
let ruleCont = data.data.ruleCont |
|
|
|
tipForm.types = ruleCont.tipForm.types |
|
|
|
tipForm.tipClass = ruleCont.tipForm.tipClass |
|
|
|
tipForm.specifyTime = ruleCont.tipForm.specifyTime?ruleCont.tipForm.specifyTime:"" |
|
|
|
tipForm.repetitionPeriod= ruleCont.tipForm.repetitionPeriod?ruleCont.tipForm.repetitionPeriod:"" |
|
|
|
tipForm.tipMsg= ruleCont.tipForm.tipMsg |
|
|
|
zhouqiVal.week = ruleCont.attribute.week; |
|
|
|
zhouqiVal.day = ruleCont.attribute.day; |
|
|
|
zhouqiVal.hour = ruleCont.attribute.hour; |
|
|
|
zhouqiVal.minute = ruleCont.attribute.minute; |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-18 08:55:59 |
|
|
|
@ 功能: 重置消息提醒表单 |
|
|
|
*/ |
|
|
|
const resetForm = (formEl: FormInstance | undefined) => { |
|
|
|
tipForm.types = 1 |
|
|
|
tipForm.tipClass = 2 |
|
|
|
// tipForm.specifyTime =1 |
|
|
|
// tipForm.repetitionPeriod=1 |
|
|
|
tipForm.tipMsg="" |
|
|
|
zhouqiVal.week = 0; |
|
|
|
zhouqiVal.day = 0; |
|
|
|
zhouqiVal.hour = 0; |
|
|
|
zhouqiVal.minute = 0; |
|
|
|
if (!formEl) return |
|
|
|
formEl.resetFields() |
|
|
|
} |
|
|
|
/** |
|
|
|
@ 作者: 秦东 |
|
|
|
@ 时间: 2024-04-18 09:15:55 |
|
|
|
@ 功能: 提交消息提醒设置 |
|
|
|
*/ |
|
|
|
const submitForm = () =>{ |
|
|
|
let sendInfo = { |
|
|
|
id:props.formKey.toString(), |
|
|
|
setCont:JSON.stringify({ |
|
|
|
tipForm:tipForm, |
|
|
|
attribute:zhouqiVal |
|
|
|
}) |
|
|
|
} |
|
|
|
setUpMsg(sendInfo) |
|
|
|
.then((data)=>{ |
|
|
|
console.log("获取消息设置-====-->",data) |
|
|
|
if(data.code == 0){ |
|
|
|
ElMessage({ |
|
|
|
message: data.msg, |
|
|
|
type: 'success', |
|
|
|
}) |
|
|
|
}else{ |
|
|
|
ElMessage.error(data.msg) |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
</script> |
|
|
|
<template> |
|
|
|
<div class="common-layout"> |
|
|
|
@ -13,25 +229,244 @@ |
|
|
|
<el-card class="setUpPageMenue" shadow="always"> |
|
|
|
<el-scrollbar class=" boxScroll"> |
|
|
|
<el-menu |
|
|
|
default-active="2" |
|
|
|
default-active="1" |
|
|
|
active-text-color="#409EFF" |
|
|
|
background-color="#FFFFFF" |
|
|
|
class="el-menu-vertical-demo" |
|
|
|
@open="handleOpen" |
|
|
|
@close="handleClose" |
|
|
|
@select="handselect" |
|
|
|
> |
|
|
|
<el-menu-item index="1"> |
|
|
|
<el-icon><icon-menu /></el-icon> |
|
|
|
<i class="fa fa-crosshairs"></i> |
|
|
|
<span>可见范围</span> |
|
|
|
</el-menu-item> |
|
|
|
<el-menu-item index="2"> |
|
|
|
<i class="fa fa-commenting-o"></i> |
|
|
|
<span>消息提醒</span> |
|
|
|
</el-menu-item> |
|
|
|
</el-menu> |
|
|
|
</el-scrollbar> |
|
|
|
</el-card> |
|
|
|
</el-aside> |
|
|
|
<el-main> |
|
|
|
<el-card class="setUpPageMenue" shadow="always"> |
|
|
|
<el-scrollbar class="boxScroll"> |
|
|
|
|
|
|
|
<el-card v-if="activePageIndex==1" class="setUpPageMenue" shadow="always"> |
|
|
|
<template #header> |
|
|
|
<div class="card-header"> |
|
|
|
<span>可见范围</span> |
|
|
|
<i @click="closePage" class="fa fa-close"></i> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<el-scrollbar class="boxScroll_main"> |
|
|
|
<el-row> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-space wrap size="default"> |
|
|
|
<el-tag v-for="item in powLookList" :key="item.targetId" type="plain" effect="plain"> |
|
|
|
<i v-if="iconIsShow(item)==3" class="fa fa-home"></i> |
|
|
|
<i v-else-if="iconIsShow(item)==2" class="fa fa-group "></i> |
|
|
|
<i v-else class="fa fa-user"></i> {{item.name}} |
|
|
|
</el-tag> |
|
|
|
</el-space> |
|
|
|
</el-col> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-button type="primary" :icon="Edit" class="box_top" @click="isShow=true">编辑可见范围</el-button> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-scrollbar> |
|
|
|
</el-card> |
|
|
|
<el-card v-if="activePageIndex==2" class="setUpPageMenue" shadow="always"> |
|
|
|
<template #header> |
|
|
|
<div class="card-header"> |
|
|
|
<span>消息提醒</span> |
|
|
|
<i @click="closePage" class="fa fa-close"></i> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<el-scrollbar class="boxScroll_main"> |
|
|
|
<el-form |
|
|
|
ref="ruleFormRef" |
|
|
|
:model="tipForm" |
|
|
|
:rules="rules" |
|
|
|
label-width="auto" |
|
|
|
class="demo-ruleForm" |
|
|
|
status-icon |
|
|
|
> |
|
|
|
<el-form-item label="提醒类型" prop="name"> |
|
|
|
<el-select |
|
|
|
v-model="tipForm.types" |
|
|
|
clearable |
|
|
|
placeholder="提醒类型" |
|
|
|
style="width: 240px" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in tipMstClass" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="提醒周期类型" prop="name"> |
|
|
|
<el-select |
|
|
|
v-model="tipForm.tipClass" |
|
|
|
clearable |
|
|
|
placeholder="提醒周期类型" |
|
|
|
style="width: 240px" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in tipMstTypeClass" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="tipForm.tipClass==1" label="指定提醒时间" prop="name"> |
|
|
|
<el-date-picker |
|
|
|
v-model="tipForm.specifyTime" |
|
|
|
type="datetime" |
|
|
|
placeholder="请选择时间" |
|
|
|
:shortcuts="shortcuts" |
|
|
|
value-format="x" |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-else label="提醒周期" prop="name"> |
|
|
|
<el-row> |
|
|
|
<el-col :span="24" class="zhouqiBox"> |
|
|
|
<el-select |
|
|
|
v-model="tipForm.repetitionPeriod" |
|
|
|
clearable |
|
|
|
placeholder="提醒周期" |
|
|
|
style="width: 100px" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in repetitionPeriodClass" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
<el-row> |
|
|
|
<el-col v-if="tipForm.repetitionPeriod==1||tipForm.repetitionPeriod==4" :span="24" class="zhouqiBox"> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.hour" |
|
|
|
class="mx-4 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>小时</template> |
|
|
|
</el-input> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.minute" |
|
|
|
class="mx-1 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>分钟</template> |
|
|
|
</el-input> |
|
|
|
</el-col> |
|
|
|
<el-col v-if="tipForm.repetitionPeriod==2" :span="24" class="zhouqiBox"> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.day" |
|
|
|
class="mx-4 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>天</template> |
|
|
|
</el-input> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.hour" |
|
|
|
class="mx-4 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>小时</template> |
|
|
|
</el-input> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.minute" |
|
|
|
class="mx-1 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>分钟</template> |
|
|
|
</el-input> |
|
|
|
</el-col> |
|
|
|
<el-col v-if="tipForm.repetitionPeriod==3||tipForm.repetitionPeriod==5" :span="24" class="zhouqiBox"> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.minute" |
|
|
|
class="mx-1 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>分钟</template> |
|
|
|
</el-input> |
|
|
|
</el-col> |
|
|
|
<el-col v-if="tipForm.repetitionPeriod==6" :span="24" class="zhouqiBox"> |
|
|
|
<el-select |
|
|
|
v-model="zhouqiVal.week" |
|
|
|
clearable |
|
|
|
placeholder="选择周几" |
|
|
|
class="timeBox" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in weekForDay" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.hour" |
|
|
|
class="mx-4 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>小时</template> |
|
|
|
</el-input> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.minute" |
|
|
|
class="mx-1 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>分钟</template> |
|
|
|
</el-input> |
|
|
|
</el-col> |
|
|
|
<el-col v-if="tipForm.repetitionPeriod==7" :span="24" class="zhouqiBox"> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.day" |
|
|
|
class="mx-4 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>日</template> |
|
|
|
</el-input> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.hour" |
|
|
|
class="mx-4 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>小时</template> |
|
|
|
</el-input> |
|
|
|
<el-input |
|
|
|
v-model="zhouqiVal.minute" |
|
|
|
class="mx-1 timeBox" |
|
|
|
|
|
|
|
> |
|
|
|
<template #append>分钟</template> |
|
|
|
</el-input> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="提醒语句" prop="name"> |
|
|
|
<el-input v-model="tipForm.tipMsg" type="textarea" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="name"> |
|
|
|
<el-button type="primary" @click="submitForm"> |
|
|
|
提交 |
|
|
|
</el-button> |
|
|
|
<el-button @click="resetForm(ruleFormRef)">重置</el-button> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</el-scrollbar> |
|
|
|
</el-card> |
|
|
|
<employees-dialog |
|
|
|
v-model:visible="isShow" |
|
|
|
:isdepartment="true" |
|
|
|
:data="powLookList" |
|
|
|
@change="surePromoter" |
|
|
|
/> |
|
|
|
|
|
|
|
</el-main> |
|
|
|
</el-container> |
|
|
|
</div> |
|
|
|
@ -48,6 +483,17 @@ |
|
|
|
::v-deep .el-card__body{ |
|
|
|
padding: 0; |
|
|
|
} |
|
|
|
.card-header{ |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: space-between; |
|
|
|
i{ |
|
|
|
font-size:15px; |
|
|
|
color:#ff0000; |
|
|
|
font-weight: 100; |
|
|
|
cursor: pointer; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
.asideBox{ |
|
|
|
@ -66,18 +512,34 @@ |
|
|
|
.boxScroll{ |
|
|
|
height: calc(100vh - 70px); |
|
|
|
margin-top: 5px; |
|
|
|
.menuBox { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
width:100%; |
|
|
|
height: 40px; |
|
|
|
line-height:40px; |
|
|
|
border-left: 5px solid #409EFF; |
|
|
|
padding-left: 25px; |
|
|
|
} |
|
|
|
.menuBox.active{ |
|
|
|
border-left: 5px solid #FFFFFF; |
|
|
|
} |
|
|
|
.el-menu-item{ |
|
|
|
border-left: 5px solid #FFFFFF; |
|
|
|
} |
|
|
|
.el-menu-item:hover{ |
|
|
|
background-color: #f1f1f1f1!important; |
|
|
|
border-left: 5px solid #f1f1f1f1; |
|
|
|
} |
|
|
|
.el-menu-item.is-active { |
|
|
|
color: var(--el-menu-active-color); |
|
|
|
background-color: #e4e4e4e4; |
|
|
|
border-left: 5px solid; |
|
|
|
} |
|
|
|
} |
|
|
|
.boxScroll_main{ |
|
|
|
height: calc(100vh - 110px); |
|
|
|
margin-top: 5px; |
|
|
|
padding: 0 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
.box_top{ |
|
|
|
margin-top: 15px; |
|
|
|
} |
|
|
|
.zhouqiBox{ |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: left; |
|
|
|
} |
|
|
|
.timeBox{ |
|
|
|
width: 150px; |
|
|
|
} |
|
|
|
</style> |
|
|
|
|