Browse Source

设置页面发布

v7_master
超级管理员 2 years ago
parent
commit
31bfd63099
  1. 81
      src/api/DesignForm/tableButton.ts
  2. 33
      src/api/taskapi/management.ts
  3. 16
      src/api/taskapi/types.ts
  4. 17
      src/components/workflow/dialog/employeesDialog.vue
  5. 2
      src/components/workflow/selectResult.vue
  6. 1
      src/types/components.d.ts
  7. 2
      src/utils/request.ts
  8. 4
      src/utils/requestfile.ts
  9. 2
      src/views/sysworkflow/lowcodepage/lowCodeFormPage.vue
  10. 4
      src/views/sysworkflow/lowcodepage/pageList.vue
  11. 4
      src/views/sysworkflow/lowcodepage/pageListHeadTools.vue
  12. 500
      src/views/sysworkflow/lowcodepage/setUpPage.vue

81
src/api/DesignForm/tableButton.ts

@ -208,3 +208,84 @@ export const submitAndCancelButton = {
}
]
};
export const tipMstClass = [
{
value: 1,
label: '流程提醒',
},
{
value: 2,
label: '表单提醒',
},
]
export const tipMstTypeClass = [
{
value: 1,
label: '只提醒一次',
},
{
value: 2,
label: '周期性提醒',
},
]
export const repetitionPeriodClass = [
{
value: 1,
label: '每天',
},
{
value: 2,
label: 'N天',
},
{
value: 3,
label: '每小时',
},
{
value: 4,
label: 'N小时',
},
{
value: 5,
label: 'N分钟',
},
{
value: 6,
label: '每星期',
},
{
value: 7,
label: '每月',
}
]
export const weekForDay = [
{
value: 1,
label: '周一',
},
{
value: 2,
label: '周二',
},
{
value: 3,
label: '周三',
},
{
value: 4,
label: '周四',
},
{
value: 5,
label: '周五',
},
{
value: 6,
label: '周六',
},
{
value: 7,
label: '周日',
}
]

33
src/api/taskapi/management.ts

@ -149,3 +149,36 @@ export function authorizeWorkflow(data?:any){
data: data
});
}
//获取流程可见范围
export function gainFlowLookSee(data?:any){
return request({
url: '/systemapi/task_flow/gainFlowLookSee',
method: 'post',
data: data
});
}
//编辑可见范围
export function editLookPowerView(data?:any){
return request({
url: '/systemapi/task_flow/editLookPowerView',
method: 'post',
data: data
});
}
//编辑消息提醒
export function setUpMsg(data?:any){
return request({
url: '/systemapi/task_flow/setUpMsg',
method: 'post',
data: data
});
}
//获取消息设置
export function gainSetUpMsg(data?:any){
return request({
url: '/systemapi/task_flow/gainSetUpMsg',
method: 'post',
data: data
});
}

16
src/api/taskapi/types.ts

@ -93,3 +93,19 @@ export interface nodeUserInfo{
icon?:string;
iconToBase64?:string;
}
//提醒设置表单
export interface tipMsgInfo{
types:number; //1:流程提醒;2:表单提醒
tipClass:number; //1:只提醒一次;2:周期性提醒
specifyTime?:number; //指定时间
repetitionPeriod?:number; //重复周期
tipMsg?:string; //提示语句
}
//执行周期
export interface runWeekInfo {
week:number;
day:number;
hour:number;
minute:number;
}

17
src/components/workflow/dialog/employeesDialog.vue

@ -54,6 +54,7 @@ let list = computed(()=> {
}]
})
let resList = computed(()=>{
console.log("checkedEmployessList.value",checkedEmployessList.value)
let data = [{
type: 'employee',
data: checkedEmployessList.value,
@ -76,7 +77,9 @@ let saveDialog = ()=> {
].map(item=>({
type: item.employeeName ? 1: 3,
targetId: item.id,
name: item.employeeName || item.departmentName
name: item.employeeName || item.departmentName,
icon: item.icon || item.icon,
iconToBase64: item.iconToBase64 || item.iconToBase64
}))
emits('change',checkedList)
}
@ -90,13 +93,17 @@ watch(()=> props.visible, (val:any)=>{
searchVal.value = "";
// console.log("props.data:",props.data)
if(props.data){
checkedEmployessList.value = props.data.filter((item:any)=>item.type===1).map(({name,targetId})=>({
checkedEmployessList.value = props.data.filter((item:any)=>item.type===1).map(({name,targetId,icon,iconToBase64})=>({
employeeName: name,
id: targetId
id: targetId,
icon:icon,
iconToBase64:iconToBase64
}));
checkedDepartmentList.value = props.data.filter((item:any)=>item.type===3).map(({name,targetId})=>({
checkedDepartmentList.value = props.data.filter((item:any)=>item.type===3).map(({name,targetId,icon,iconToBase64})=>({
departmentName: name,
id: targetId
id: targetId,
icon:icon,
iconToBase64:iconToBase64
}));
}

2
src/components/workflow/selectResult.vue

@ -15,7 +15,7 @@ let props = defineProps({
}
})
let emits = defineEmits(['del'])
console.log("已选择得内容",props.list)
</script>
<template>
<div class="select-result l">

1
src/types/components.d.ts

@ -70,6 +70,7 @@ declare module '@vue/runtime-core' {
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSlider: typeof import('element-plus/es')['ElSlider']
ElSpace: typeof import('element-plus/es')['ElSpace']
ElStep: typeof import('element-plus/es')['ElStep']
ElSteps: typeof import('element-plus/es')['ElSteps']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']

2
src/utils/request.ts

@ -74,6 +74,8 @@ service.interceptors.response.use(
localStorage.clear();
window.location.href = "/";
});
}else if (code === 10001 || code === 10002 || code === 10003) {
return Promise.reject(error.message);
} else {
ElMessage.error(msg || '系统出错');
}

4
src/utils/requestfile.ts

@ -72,7 +72,9 @@ service.interceptors.response.use(
localStorage.clear();
window.location.href = "/";
});
} else {
}else if (code === 10001 || code === 10002 || code === 10003) {
return Promise.reject(error.message);
} else {
ElMessage.error(msg || '系统出错');
}
}

2
src/views/sysworkflow/lowcodepage/lowCodeFormPage.vue

@ -217,7 +217,7 @@ onMounted(()=>{
</el-tabs>
<PageDesignEs v-if="tabsActive==1" v-model:state="state" v-model:form-key="formKeyStr" v-model:form-version="formVersion" :formconfigcont="formConfigCont" @judgeFormIsEdit="judgeFormIsEdit" @runNextWindows="runNextWindows" @closeFormPage="closeFormPage" />
<WorkFlow v-if="tabsActive==2" v-model:state="state" v-model:form-key="formKeyStr" v-model:form-version="formVersion" @judgeFlowIsEdit="judgeFlowIsEdit" @runNextWindows="runNextWindows" @closeFormPage="closeFormPage" />
<PageList v-if="tabsActive==3" v-model:state="state" v-model:form-key="formKeyStr" v-model:form-version="formVersion" :tabs-active="tabsActive" />
<PageList v-if="tabsActive==3" v-model:state="state" v-model:form-key="formKeyStr" v-model:form-version="formVersion" :tabs-active="tabsActive" @closeFormPage="closeFormPage" />
<SetUpPage v-if="tabsActive==4" v-model:state="state" v-model:form-key="formKeyStr" v-model:form-version="formVersion" @closeFormPage="closeFormPage" />
</el-drawer>
</div>

4
src/views/sysworkflow/lowcodepage/pageList.vue

@ -546,6 +546,8 @@ const listPageTools = (type: string) => {
break;
case "save":
saveFormListData()
case "close":
emits('closeFormPage')
break;
default:
}
@ -767,7 +769,7 @@ const getListInfo = () => {
<div class="main-body">
<div class="header">
<div class="field">
{{props.formKey}}
</div>
<PageListHeadTools @clearData="listPageTools" />
</div>

4
src/views/sysworkflow/lowcodepage/pageListHeadTools.vue

@ -4,10 +4,11 @@
<slot></slot>
<el-button
link
type="primary"
@click="btnClick(item.icon)"
v-for="item in btnList"
:key="item.icon"
:type="item.key==6?'danger':'primary'"
>
<i v-if="item.iconFont==''" :class="['icon-' + item.icon]" ></i><i v-if="item.iconFont!=''" :class="['fa ' + item.iconFont]" ></i>{{ item.label }}
</el-button>
@ -42,6 +43,7 @@
{ icon: 'json',iconFont:"", label: '生成脚本预览', key: 3 },
// { icon: 'vue', label: 'vue', key: 4 },
{ icon: 'save',iconFont:"fa-save", label: '保存', key: 5 },
{ icon: 'close',iconFont:"fa-close", label: '关闭', key: 6 }
]
if (props.showKey?.length) {
// key

500
src/views/sysworkflow/lowcodepage/setUpPage.vue

@ -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, //12
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>

Loading…
Cancel
Save