Browse Source

Merge branch 'qin_22'

lwx_v26
herenshan112 6 months ago
parent
commit
9902fba2bc
  1. 1
      src/components/workflow/drwer/approverDrawer.vue
  2. 332
      src/components/workflow/drwer/copyerDrawer.vue
  3. 371
      src/components/workflow/drwer/copyerSend.vue
  4. 686
      src/views/hr/archives/archivescont.vue
  5. 525
      src/views/hr/archives/basicinformation/editorg.vue
  6. 14
      src/views/hr/archives/index.vue
  7. 7
      src/views/sysworkflow/flow/flowDrawingBoard.vue
  8. 123
      src/views/sysworkflow/flow/index.vue
  9. 2
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/pageFlow.vue
  10. 424
      src/views/sysworkflow/lowcodepage/lowCodeFormPage.vue
  11. 2
      src/views/sysworkflow/lowcodepage/runApp/runAppForm.vue
  12. 9
      src/views/sysworkflow/lowcodepage/workFlow.vue

1
src/components/workflow/drwer/approverDrawer.vue

@ -601,6 +601,7 @@ const libraryList = ref([
<div class="demo-drawer__content"> <div class="demo-drawer__content">
<!--审批人设置主体--> <!--审批人设置主体-->
<div class="drawer_content"> <div class="drawer_content">
{{ approverConfig }}
<el-tabs v-model="nodeSetUp" class="demo-tabs"> <el-tabs v-model="nodeSetUp" class="demo-tabs">
<el-tab-pane name="first"> <el-tab-pane name="first">
<template #label> <template #label>

332
src/components/workflow/drwer/copyerDrawer.vue

@ -3,104 +3,128 @@
@ 时间: 2023-10-11 11:02:24 @ 时间: 2023-10-11 11:02:24
@ 备注: 抄送配置 @ 备注: 抄送配置
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import employeesDialog from '@/components/workflow/dialog/employeesDialog.vue' import employeesDialog from "@/components/workflow/dialog/employeesDialog.vue";
import $func from '@/utils/workflow/index' import $func from "@/utils/workflow/index";
import { useStore } from '@/store/workflow/index' import { useStore, setTypes, selectModes, selectRanges } from "@/store/workflow/index";
let copyerConfig = ref({})
let ccSelfSelectFlag = ref([]) let copyerConfig = ref({});
let copyerVisible = ref(false) let ccSelfSelectFlag = ref([]);
let checkedList = ref([]) let copyerVisible = ref(false);
let store = useStore() let checkedList = ref([]);
let { setCopyerConfig, setCopyer } = store let store = useStore();
let copyerDrawer = computed(()=> store.copyerDrawer) let { setCopyerConfig, setCopyer } = store;
let copyerConfig1 = computed(()=> store.copyerConfig1) let copyerDrawer = computed(() => store.copyerDrawer);
let copyerConfig1 = computed(() => store.copyerConfig1);
let visible = computed({ let visible = computed({
get() { get() {
return copyerDrawer.value return copyerDrawer.value;
}, },
set() { set() {
closeDrawer() closeDrawer();
} },
}) });
watch(copyerConfig1, (val) => { watch(copyerConfig1, (val) => {
copyerConfig.value = val.value; copyerConfig.value = val.value;
ccSelfSelectFlag.value = copyerConfig.value.ccSelfSelectFlag == 0 ? [] : [copyerConfig.value.ccSelfSelectFlag] ccSelfSelectFlag.value =
}) copyerConfig.value.ccSelfSelectFlag == 0 ? [] : [copyerConfig.value.ccSelfSelectFlag];
});
const addCopyer = () => { const addCopyer = () => {
copyerVisible.value = true; copyerVisible.value = true;
checkedList.value = copyerConfig.value.nodeUserList checkedList.value = copyerConfig.value.nodeUserList;
} };
const sureCopyer = (data:any) => { const sureCopyer = (data: any) => {
// console.log("",data) // console.log("",data)
copyerConfig.value.nodeUserList = data; copyerConfig.value.nodeUserList = data;
copyerVisible.value = false; copyerVisible.value = false;
} };
const saveCopyer = () => { const saveCopyer = () => {
copyerConfig.value.ccSelfSelectFlag = ccSelfSelectFlag.value.length == 0 ? 0 : 1; copyerConfig.value.ccSelfSelectFlag = ccSelfSelectFlag.value.length == 0 ? 0 : 1;
copyerConfig.value.error = !$func.copyerStr(copyerConfig.value); copyerConfig.value.error = !$func.copyerStr(copyerConfig.value);
setCopyerConfig({ setCopyerConfig({
value: copyerConfig.value, value: copyerConfig.value,
flag: true, flag: true,
id: copyerConfig1.value.id id: copyerConfig1.value.id,
}) });
closeDrawer(); closeDrawer();
} };
const closeDrawer = () => { const closeDrawer = () => {
setCopyer(false) setCopyer(false);
} };
</script> </script>
<template> <template>
<el-drawer v-model="visible" :append-to-body="true" title="抄送人设置" class="set_copyer" :show-close="false" :size="550" :before-close="saveCopyer"> <el-drawer
<div class="demo-drawer__content"> v-model="visible"
<div class="copyer_content drawer_content"> :append-to-body="true"
<el-button type="primary" @click="addCopyer">添加成员</el-button> title="抄送人设置"
<!-- <p class="selected_list"> class="set_copyer"
:show-close="false"
:size="550"
:before-close="saveCopyer"
>
<div class="demo-drawer__content">
<div class="copyer_content drawer_content">
<el-button type="primary" @click="addCopyer">添加成员</el-button>
<!-- <p class="selected_list">
<span v-for="(item,index) in copyerConfig.nodeUserList" :key="index">{{item.name}} <span v-for="(item,index) in copyerConfig.nodeUserList" :key="index">{{item.name}}
<img src="@/assets/images/add-close1.png" @click="$func.removeEle(copyerConfig.nodeUserList,item,'targetId')"> <img src="@/assets/images/add-close1.png" @click="$func.removeEle(copyerConfig.nodeUserList,item,'targetId')">
</span> </span>
<a v-if="copyerConfig.nodeUserList&&copyerConfig.nodeUserList.length!=0" @click="copyerConfig.nodeUserList=[]">清除</a> <a v-if="copyerConfig.nodeUserList&&copyerConfig.nodeUserList.length!=0" @click="copyerConfig.nodeUserList=[]">清除</a>
</p> --> </p> -->
<p class="selected_list"> <p class="selected_list">
<el-tag v-for="(item,index) in copyerConfig.nodeUserList" :key="index" closable type="info" effect="plain" class="tag_us" @close="$func.removeEle(copyerConfig.nodeUserList,item,'targetId')">{{item.name}}</el-tag> <el-tag
<el-tag v-if="copyerConfig.nodeUserList&&copyerConfig.nodeUserList.length!=0" type="danger" effect="dark" @click="copyerConfig.nodeUserList=[]">清除</el-tag> v-for="(item, index) in copyerConfig.nodeUserList"
</p> :key="index"
closable
type="info"
effect="plain"
class="tag_us"
@close="$func.removeEle(copyerConfig.nodeUserList, item, 'targetId')"
>{{ item.name }}</el-tag
>
<el-tag
v-if="copyerConfig.nodeUserList && copyerConfig.nodeUserList.length != 0"
type="danger"
effect="dark"
@click="copyerConfig.nodeUserList = []"
>清除</el-tag
>
</p>
<el-checkbox-group v-model="ccSelfSelectFlag" class="clear"> <el-checkbox-group v-model="ccSelfSelectFlag" class="clear">
<el-checkbox :label="1">允许发起人自选抄送人</el-checkbox> <el-checkbox :label="1">允许发起人自选抄送人</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
<div class="info_box"> <div class="info_box">
<QuillEditor v-model="copyerConfig.helpTips" height="400px" /> <QuillEditor v-model="copyerConfig.helpTips" height="400px" />
</div> </div>
</div>
</div> <div class="demo-drawer__footer clear">
<div class="demo-drawer__footer clear"> <el-button type="primary" @click="saveCopyer"> </el-button>
<el-button type="primary" @click="saveCopyer"> </el-button> <el-button @click="closeDrawer"> </el-button>
<el-button @click="closeDrawer"> </el-button> </div>
</div> <employees-role-dialog
<employees-role-dialog v-model:visible="copyerVisible"
v-model:visible="copyerVisible" :data="checkedList"
:data="checkedList" @change="sureCopyer"
@change="sureCopyer" />
/> </div>
</div> </el-drawer>
</el-drawer>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.set_copyer { .set_copyer {
.copyer_content { .copyer_content {
padding: 20px 20px 0; padding: 20px 20px 0;
.el-button { .el-button {
margin-bottom: 20px; margin-bottom: 20px;
} }
.el-checkbox { .el-checkbox {
margin-bottom: 20px; margin-bottom: 20px;
}
} }
}
} }
.approver_some .el-radio-group { .approver_some .el-radio-group {
@ -110,85 +134,87 @@ const closeDrawer = () => {
.approver_some .el-radio { .approver_some .el-radio {
display: block; display: block;
} }
.set_promoter{ .set_promoter {
.approver_content { .approver_content {
padding-bottom: 10px; padding-bottom: 10px;
border-bottom: 0px solid #f2f2f2; border-bottom: 0px solid #f2f2f2;
.el-radio{ .el-radio {
width:auto; width: auto;
}
} }
.approver_manager,.approver_self_select,.approver_some,.approver_self{ }
border-top: 1px solid #f2f2f2; .approver_manager,
} .approver_self_select,
.approver_self_select, .approver_some,
.approver_content{ .approver_self {
.el-button{ border-top: 1px solid #f2f2f2;
margin-bottom: 20px; }
} .approver_self_select,
.approver_content {
.el-button {
margin-bottom: 20px;
} }
.approver_content, }
.approver_some, .approver_content,
.approver_self_select{ .approver_some,
.el-radio-group{ .approver_self_select {
display: unset; .el-radio-group {
} display: unset;
.el-radio{
width: 27%;
margin-bottom: 20px;
height: 16px;
}
} }
.approver_manager p { .el-radio {
line-height: 32px; width: 27%;
} margin-bottom: 20px;
.approver_manager select { height: 16px;
width: 420px;
height: 32px;
background: rgba(255, 255, 255, 1);
border-radius: 4px;
border: 1px solid rgba(217, 217, 217, 1);
}
.approver_manager p.tip {
margin: 10px 0 22px 0;
font-size: 12px;
line-height: 16px;
color: #f8642d;
}
.approver_self {
padding: 28px 20px;
}
.approver_self_select,
.approver_manager,
.approver_content,
.approver_some {
padding: 20px 20px 20px 20px;
}
.approver_manager p:first-of-type,
.approver_some p {
line-height: 19px;
font-size: 14px;
margin-bottom: 14px;
}
.approver_self_select h3 {
margin: 5px 0 20px;
font-size: 14px;
font-weight: bold;
line-height: 19px;
} }
}
.approver_manager p {
line-height: 32px;
}
.approver_manager select {
width: 420px;
height: 32px;
background: rgba(255, 255, 255, 1);
border-radius: 4px;
border: 1px solid rgba(217, 217, 217, 1);
}
.approver_manager p.tip {
margin: 10px 0 22px 0;
font-size: 12px;
line-height: 16px;
color: #f8642d;
}
.approver_self {
padding: 28px 20px;
}
.approver_self_select,
.approver_manager,
.approver_content,
.approver_some {
padding: 20px 20px 20px 20px;
}
.approver_manager p:first-of-type,
.approver_some p {
line-height: 19px;
font-size: 14px;
margin-bottom: 14px;
}
.approver_self_select h3 {
margin: 5px 0 20px;
font-size: 14px;
font-weight: bold;
line-height: 19px;
}
} }
.selected_list{ .selected_list {
margin: 0; margin: 0;
line-height: 0; line-height: 0;
.tag_us{ .tag_us {
margin-right: 10px; margin-right: 10px;
} }
span{ span {
margin-top: 10px; margin-top: 10px;
} }
a{ a {
margin-top: 15px; margin-top: 15px;
} }
} }
</style> </style>

371
src/components/workflow/drwer/copyerSend.vue

@ -0,0 +1,371 @@
<!--
@ 作者: 秦东
@ 时间: 2025-05-26 14:59:22
@ 备注: 新版抄送节点
-->
<script lang="ts" setup>
import $func from "@/utils/workflow/index";
import { setTypes, selectModes, selectRanges } from "@/utils/workflow/const";
import { useStore } from "@/store/workflow/index";
import { matrixInfo } from "@/api/matrixapi/type";
let props = defineProps({
isFormFlow: {
type: Boolean,
default: true,
},
directormaxlevel: {
type: Number,
default: 4,
},
});
const isExecutor = ref(false);
let ccSelfSelectFlag = ref([]);
let copyerConfig = ref({});
let store = useStore();
let { setCopyerConfig, setCopyer } = store;
let copyerDrawer = computed(() => store.copyerDrawer);
let copyerConfig1 = computed(() => store.copyerConfig1);
let checkedList = ref<any[]>([]); //
let visible = computed({
get() {
return copyerDrawer.value;
},
set() {
closeDrawer();
},
});
const matrixFieldList = ref<matrixInfo>();
const nodeSendSetUp = ref("first");
watch(copyerConfig1, (val) => {
if (val.settype == 0) {
copyerConfig.value.settype = 1;
}
copyerConfig.value = val.value;
ccSelfSelectFlag.value =
copyerConfig.value.ccSelfSelectFlag == 0 ? [] : [copyerConfig.value.ccSelfSelectFlag];
});
onMounted(() => {
console.log("预加载数据建军节--------》", copyerConfig1.value);
if (copyerConfig1.settype == 0) {
copyerConfig.value.settype = 1;
}
});
//
watch(
() => copyerConfig.value.settype,
(val: any) => {
console.log("监听审批人设置选项", copyerConfig.value);
switch (val) {
case 10:
let sendOrg = {
id: 313,
idstr: "313",
level: 4,
all: 1,
};
govthree(sendOrg).then(({ data }) => {
// console.log("",data)
orgList.value = data;
nextTick(() => {
setOrgTree(copyerConfig.value.orgList);
});
});
break;
case 0:
copyerConfig.value.settype = 1;
break;
default:
break;
}
},
{
deep: true,
}
);
/**
@ 作者: 秦东
@ 时间: 2025-05-26 15:23:01
@ 功能: 写入数据
*/
const saveCopyer = () => {};
//
const closeDrawer = () => {
setCopyer(false);
};
/**
@ 作者: 秦东
@ 时间: 2025-05-26 16:23:35
@ 功能: 属性选择
*/
const changeType = (val: any) => {
copyerConfig.value.nodeUserList = [];
copyerConfig.value.examineMode = 1;
copyerConfig.value.noHanderAction = 2;
console.log("属性选择--->", val);
switch (val) {
case 2:
copyerConfig.value.directorLevel = 1; //
break;
case 7:
copyerConfig.value.examineEndDirectorLevel = 1; // n
break;
case 9:
matrixFieldList.value = copyerConfig.value.matrix; //
break;
default:
}
};
//
const isShowRatify = (id: number) => {
if (id == 8) {
return props.isFormFlow;
} else if (id == 4) {
return false;
} else {
return true;
}
};
/**
@ 作者: 秦东
@ 时间: 2025-05-27 14:19:31
@ 功能: 添加指定成员
*/
let approverVisible = ref(false);
const addApprover = () => {
approverVisible.value = true;
checkedList.value = copyerConfig.value.nodeUserList;
};
/**
@ 作者: 秦东
@ 时间: 2025-05-27 15:25:07
@ 功能: 更新指定成员数据
*/
const sureApprover = (data: any) => {
copyerConfig.value.nodeUserList = data;
approverVisible.value = false;
};
</script>
<template>
<el-drawer
v-model="visible"
:append-to-body="true"
title="抄送人设置"
class="set_promoter"
:show-close="false"
:size="550"
:before-close="saveCopyer"
>{{ props }}
<div class="demo-drawer__content">
<div class="drawer_content drawer_content">
{{ copyerConfig }}
<el-tabs v-model="nodeSendSetUp" class="demo-tabs">
<el-tab-pane name="first">
<template #label>
<span class="wordKeyCss">属性设置</span>
</template>
<div class="info_box">
<div class="approver_content">
<el-radio-group
v-model="copyerConfig.settype"
class="clear"
@change="changeType"
>
<template v-for="{ value, label } in setTypes" :key="value">
<el-radio
v-if="isShowRatify(value)"
:label="value"
style="width: auto"
>{{ label }}</el-radio
>
</template>
</el-radio-group>
</div>
<!--指定成员-->
<el-divider v-if="copyerConfig.settype == 1" content-position="left"
>指定成员</el-divider
>
<div v-if="copyerConfig.settype == 1" class="approver_manager">
<el-button type="primary" @click="addApprover">添加/修改成员</el-button>
<p class="selected_list">
<el-tag
v-for="(item, index) in copyerConfig.nodeUserList"
:key="index"
closable
type="info"
effect="plain"
class="tag_us"
@close="$func.removeEle(copyerConfig.nodeUserList, item, 'targetId')"
>{{ item.name }}</el-tag
>
<el-tag
v-if="copyerConfig.nodeUserList.length != 0"
type="danger"
effect="dark"
@click="copyerConfig.nodeUserList = []"
>清除</el-tag
>
</p>
</div>
<!--主管-->
<el-divider v-if="copyerConfig.settype == 2" content-position="left"
>主管</el-divider
>
<div v-if="copyerConfig.settype == 2" class="approver_manager">
<p>
<el-row :gutter="10">
<el-col v-if="isExecutor" :span="6">
<select v-model="copyerConfig.attribute" style="width: 100%">
<option value="1">发起人</option>
<option value="2">执行人</option>
</select>
</el-col>
<el-col :span="18">
<select v-model="copyerConfig.directorLevel">
<option
v-for="item in props.directormaxlevel"
:key="item"
:value="item"
>
{{ item == 1 ? "直接" : "第" + item + "级" }}主管
</option>
</select>
</el-col>
</el-row>
</p>
<p class="tip">找不到主管时由上级主管代审批</p>
</div>
<el-checkbox-group v-model="ccSelfSelectFlag" class="clear">
<el-checkbox :label="1">允许发起人自选抄送人</el-checkbox>
</el-checkbox-group>
</div>
</el-tab-pane>
<el-tab-pane name="helpInstructions">
<template #label>
<span class="wordKeyCss">帮助说明</span>
</template>
<div class="info_box">
<QuillEditor v-model="copyerConfig.helpTips" height="400px" />
</div>
</el-tab-pane>
</el-tabs>
</div>
<div class="demo-drawer__footer clear">
<el-button type="primary" @click="saveCopyer"> </el-button>
<el-button @click="closeDrawer"> </el-button>
</div>
</div>
<!--选择成员-->
<employees-dialog
v-model:visible="approverVisible"
:data="checkedList"
@change="sureApprover"
/>
</el-drawer>
</template>
<style lang="scss" scoped>
.approver_some .el-radio-group {
display: block;
}
.approver_manager .el-radio-group {
display: block;
}
.approver_some .el-radio {
display: block;
}
.set_promoter {
.approver_content {
padding-bottom: 10px;
border-bottom: 0px solid #f2f2f2;
.el-radio {
width: auto;
}
}
.approver_manager,
.approver_self_select,
.approver_some,
.approver_self {
border-top: 0px solid #f2f2f2;
}
.approver_self_select,
.approver_content {
.el-button {
margin-bottom: 20px;
}
}
.approver_content,
.approver_some,
.approver_self_select {
.el-radio-group {
display: unset;
}
.el-radio {
width: 27%;
margin-bottom: 20px;
height: 16px;
}
}
.approver_manager p {
line-height: 32px;
}
.approver_manager select {
width: 420px;
height: 32px;
background: rgba(255, 255, 255, 1);
border-radius: 4px;
border: 1px solid rgba(217, 217, 217, 1);
}
.approver_manager p.tip {
margin: 10px 0 22px 0;
font-size: 12px;
line-height: 16px;
color: #f8642d;
}
.approver_self {
padding: 28px 20px;
}
.approver_self_select,
.approver_manager,
.approver_content,
.approver_some {
padding: 20px 20px 20px 20px;
}
.approver_manager p:first-of-type,
.approver_some p {
line-height: 19px;
font-size: 14px;
margin-bottom: 14px;
}
.approver_self_select h3 {
margin: 5px 0 20px;
font-size: 14px;
font-weight: bold;
line-height: 19px;
}
}
.selected_list {
margin: 0;
line-height: 0;
.tag_us {
margin-right: 10px;
}
span {
margin-top: 10px;
}
a {
margin-top: 15px;
}
}
.info_box {
padding: 0 20px;
}
.wordKeyCss {
padding: 0 20px;
}
</style>

686
src/views/hr/archives/archivescont.vue

@ -3,120 +3,125 @@
@ 时间: 2024-08-31 14:15:47 @ 时间: 2024-08-31 14:15:47
@ 备注: 员工档案 @ 备注: 员工档案
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { getMyInfoing, editMyInfoIcon } from "@/api/hr/people/index"; import { getMyInfoing, editMyInfoIcon } from "@/api/hr/people/index";
import UserRole from "@/assets/icons/user.svg"; // import UserRole from "@/assets/icons/user.svg"; //
// //
import UserContent from "@/views/hr/archives/basicinformation/content.vue"; // import UserContent from "@/views/hr/archives/basicinformation/content.vue"; //
import EditUserContent from "@/views/hr/archives/basicinformation/editcontent.vue"; // import EditUserContent from "@/views/hr/archives/basicinformation/editcontent.vue"; //
import EditOrg from "@/views/hr/archives/basicinformation/editorg.vue"; // import EditOrg from "@/views/hr/archives/basicinformation/editorg.vue"; //
import OrgNexus from "@/views/hr/archives/basicinformation/orgnexus.vue"; // import OrgNexus from "@/views/hr/archives/basicinformation/orgnexus.vue"; //
import EmergencyContactPage from "@/views/hr/archives/basicinformation/emergencycontact.vue"; // import EmergencyContactPage from "@/views/hr/archives/basicinformation/emergencycontact.vue"; //
import WorkingCouplePage from "@/views/hr/archives/basicinformation/workingcouple.vue"; // import WorkingCouplePage from "@/views/hr/archives/basicinformation/workingcouple.vue"; //
import FamilyMembers from "@/views/hr/archives/basicinformation/familymembers.vue"; // import FamilyMembers from "@/views/hr/archives/basicinformation/familymembers.vue"; //
import EducationalExperience from "@/views/hr/archives/basicinformation/educationalexperience.vue"; // import EducationalExperience from "@/views/hr/archives/basicinformation/educationalexperience.vue"; //
import InnerWork from "@/views/hr/archives/basicinformation/innerwork.vue"; // import InnerWork from "@/views/hr/archives/basicinformation/innerwork.vue"; //
import OutsideWork from "@/views/hr/archives/basicinformation/outsideWork.vue"; // import OutsideWork from "@/views/hr/archives/basicinformation/outsideWork.vue"; //
import Editpwd from "@/views/hr/archives/basicinformation/editpwd.vue"; // import Editpwd from "@/views/hr/archives/basicinformation/editpwd.vue"; //
import Rewardsandpunishments from "@/views/hr/archives/basicinformation/rewardsandpunishments.vue"; //
import Appraisalrecord from "@/views/hr/archives/basicinformation/appraisalrecord.vue"; //
import Talentinventory from "@/views/hr/archives/basicinformation/talentinventory.vue"; //
import Employmentrelations from "@/views/hr/archives/basicinformation/employmentrelations.vue"; //
import Jobtitle from "@/views/hr/archives/basicinformation/jobtitle.vue"; //
import Certificates from "@/views/hr/archives/basicinformation/certificates.vue"; //
import PersonalityTest from "@/views/hr/archives/basicinformation/personalityTest.vue"; //
import Rewardsandpunishments from "@/views/hr/archives/basicinformation/rewardsandpunishments.vue"; //
import Appraisalrecord from "@/views/hr/archives/basicinformation/appraisalrecord.vue"; //
import Talentinventory from "@/views/hr/archives/basicinformation/talentinventory.vue"; //
import Employmentrelations from "@/views/hr/archives/basicinformation/employmentrelations.vue"; //
import Jobtitle from "@/views/hr/archives/basicinformation/jobtitle.vue"; //
import Certificates from "@/views/hr/archives/basicinformation/certificates.vue"; //
import PersonalityTest from "@/views/hr/archives/basicinformation/personalityTest.vue"; //
const props = defineProps({ const props = defineProps({
isShow: { isShow: {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
archivesdata: { archivesdata: {
type: Object, type: Object,
default() { default() {
return {}; return {};
}, },
}, },
}); });
const emits = defineEmits([ const emits = defineEmits(["update:isShow", "updatemyconting", "getarchivespageclick"]); //
"update:isShow",
"updatemyconting",
"getarchivespageclick",
]); //
/** /**
* 弹窗显示控制 * 弹窗显示控制
*/ */
const boxShow = computed({ const boxShow = computed({
get: () => props.isShow, get: () => props.isShow,
set: (val) => { set: (val) => {
emits("update:isShow", val); emits("update:isShow", val);
}, },
}); });
const activeName = ref("1"); // const activeName = ref("1"); //
const fileUploadIng = ref(false) const fileUploadIng = ref(false);
const userIcon = ref<string>(); // const userIcon = ref<string>(); //
const boxTitle = ref<string>(); // const boxTitle = ref<string>(); //
const userConting = ref<any>(""); // const userConting = ref<any>(""); //
const rowLoading = ref(false); const rowLoading = ref(false);
const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API + "/api/upordown"; // const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API + "/api/upordown"; //
const editMyOrgCont = ref(false); // const editMyOrgCont = ref(false); //
const editMyCont = ref(false); // const editMyCont = ref(false); //
/** /**
* 获取人员数据 * 获取人员数据
*/ */
const getjtcyList = () => { const getjtcyList = () => {
rowLoading.value = true; rowLoading.value = true;
getMyInfoing({ id: props.archivesdata.id, idstr: props.archivesdata.idstr }) getMyInfoing({ id: props.archivesdata.id, idstr: props.archivesdata.idstr })
.then((data) => { .then((data) => {
console.log("获取人员信息",data.data); console.log("获取人员信息", data.data);
userConting.value = data.data userConting.value = data.data;
}) })
.finally(() => { .finally(() => {
rowLoading.value = false; rowLoading.value = false;
}); });
} };
/** /**
* 关闭弹窗 * 关闭弹窗
*/ */
function closeArchivesBox() { function closeArchivesBox() {
emits("update:isShow", false); emits("update:isShow", false);
activeName.value = "1"; activeName.value = "1";
editMyCont.value = false; editMyCont.value = false;
} }
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-08-31 14:23:41 @ 时间: 2024-08-31 14:23:41
@ 功能: 监听弹窗打开 @ 功能: 监听弹窗打开
*/ */
watch(() => props.isShow,(val:Boolean) => { watch(
if(val){ () => props.isShow,
getjtcyList(); (val: Boolean) => {
boxTitle.value = "查看 " + props.archivesdata.name + "(工号:" + props.archivesdata.number + ")" + " 详情"; if (val) {
if (props.archivesdata.icon != "") { getjtcyList();
userIcon.value = props.archivesdata.icon; boxTitle.value =
}else if (props.archivesdata.iconphoto != "") { "查看 " +
userIcon.value = props.archivesdata.iconphoto; props.archivesdata.name +
}else{ "(工号:" +
userIcon.value = UserRole; props.archivesdata.number +
} ")" +
} " 详情";
},{deep:true}) if (props.archivesdata.icon != "") {
userIcon.value = props.archivesdata.icon;
} else if (props.archivesdata.iconphoto != "") {
userIcon.value = props.archivesdata.iconphoto;
} else {
userIcon.value = UserRole;
}
}
},
{ deep: true }
);
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-08-31 14:35:18 @ 时间: 2024-08-31 14:35:18
@ 功能: 上传前判断类型 @ 功能: 上传前判断类型
*/ */
const beforeAvatarUpload: UploadProps["beforeUpload"] = (rawFile) => { const beforeAvatarUpload: UploadProps["beforeUpload"] = (rawFile) => {
fileUploadIng.value = true fileUploadIng.value = true;
if (!/\.(png|jpg|gif|jpeg|svg|bmp)$/.test(rawFile.name)) { if (!/\.(png|jpg|gif|jpeg|svg|bmp)$/.test(rawFile.name)) {
ElMessage.warning("您上传的图片不符合要求!"); ElMessage.warning("您上传的图片不符合要求!");
fileUploadIng.value = false; fileUploadIng.value = false;
return false; return false;
} }
}; };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ -124,274 +129,305 @@ const beforeAvatarUpload: UploadProps["beforeUpload"] = (rawFile) => {
@ 功能: 上传成功 @ 功能: 上传成功
*/ */
const handleAvatarSuccess: UploadProps["onSuccess"] = ( const handleAvatarSuccess: UploadProps["onSuccess"] = (
response, response,
uploadFile, uploadFile,
uploadFiles uploadFiles
) => { ) => {
userIcon.value = URL.createObjectURL(uploadFile.raw!); userIcon.value = URL.createObjectURL(uploadFile.raw!);
// //
editMyInfoIcon({ editMyInfoIcon({
id: props.archivesdata.id, id: props.archivesdata.id,
iconpath: response.data.url, iconpath: response.data.url,
}).then((data) => { }).then((data) => {
ElMessage.success("编辑成功"); ElMessage.success("编辑成功");
emits("getarchivespageclick"); emits("getarchivespageclick");
}); });
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-08-31 14:46:59 @ 时间: 2024-08-31 14:46:59
@ 功能: 打开编辑行政组织 @ 功能: 打开编辑行政组织
*/ */
const editmvorg = () => { const editmvorg = () => {
editMyOrgCont.value = true; editMyOrgCont.value = true;
} };
/** /**
* 选项卡翻页 * 选项卡翻页
*/ */
const handleClickUser = (tab: any, event: Event) => { const handleClickUser = (tab: any, event: Event) => {
//console.log(tab, event) //console.log(tab, event)
}; };
</script> </script>
<template> <template>
<el-dialog <el-dialog
v-model="boxShow" v-model="boxShow"
custom-class="dialog_box" custom-class="dialog_box"
:title="boxTitle" :title="boxTitle"
top="50px" top="50px"
:before-close="closeArchivesBox" :before-close="closeArchivesBox"
width="80%" width="80%"
> >
<el-row v-loading="rowLoading" :gutter="20"> <el-row v-loading="rowLoading" :gutter="20">
<!--左侧区域--> <!--左侧区域-->
<el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8"> <el-col :xs="24" :sm="24" :md="12" :lg="8" :xl="8">
<el-card shadow="always" class="box-card-left"> <el-card shadow="always" class="box-card-left">
<el-row> <el-row>
<el-col v-loading="fileUploadIng" :span="24"> <el-col v-loading="fileUploadIng" :span="24">
<el-upload <el-upload
class="avatar-uploader" class="avatar-uploader"
:action="imgUploadApiUrl" :action="imgUploadApiUrl"
:show-file-list="false" :show-file-list="false"
:on-success="handleAvatarSuccess" :on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload" :before-upload="beforeAvatarUpload"
> >
<el-avatar :size="180" :src="userIcon" class="bianKuang" /> <el-avatar :size="180" :src="userIcon" class="bianKuang" />
</el-upload> </el-upload>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-text class="mx-1 username">{{ userConting.name }}</el-text> <el-text class="mx-1 username">{{ userConting.name }}</el-text>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-text class="mx-1 username">NO.{{ userConting.number }}</el-text> <el-text class="mx-1 username">NO.{{ userConting.number }}</el-text>
</el-col> </el-col>
<el-col :span="24"> <el-col :span="24">
<el-row class="user_cont"> <el-row class="user_cont">
<el-col :span="24" class="col_box"> <el-col :span="24" class="col_box">
<el-text class="cont_size"> <el-text class="cont_size">
<svg-icon icon-class="gender" class="svg_box"></svg-icon> <svg-icon icon-class="gender" class="svg_box"></svg-icon>
<span v-if="userConting.gender == 1"></span> <span v-if="userConting.gender == 1"></span>
<span v-else></span> <span v-else></span>
</el-text> </el-text>
</el-col> </el-col>
<el-col :span="24" class="col_box"> <el-col :span="24" class="col_box">
<el-text class="cont_size"> <el-text class="cont_size">
<svg-icon <svg-icon
icon-class="marriageregistration" icon-class="marriageregistration"
class="svg_box" class="svg_box"
></svg-icon> ></svg-icon>
<span v-if="userConting.maritalstatus == 2">已婚</span> <span v-if="userConting.maritalstatus == 2">已婚</span>
<span v-else-if="userConting.maritalstatus == 3">丧偶</span> <span v-else-if="userConting.maritalstatus == 3">丧偶</span>
<span v-else-if="userConting.maritalstatus == 4">离异</span> <span v-else-if="userConting.maritalstatus == 4">离异</span>
<span v-else>未婚</span> <span v-else>未婚</span>
</el-text> </el-text>
</el-col> </el-col>
<el-col :span="24" class="col_box"> <el-col :span="24" class="col_box">
<el-text class="cont_size"> <el-text class="cont_size">
<svg-icon icon-class="qxsp" class="svg_box"></svg-icon> <svg-icon icon-class="qxsp" class="svg_box"></svg-icon>
{{ userConting.myfolk }} {{ userConting.myfolk }}
</el-text> </el-text>
</el-col> </el-col>
<el-col :span="24" class="col_box"> <el-col :span="24" class="col_box">
<el-text class="cont_size"> <el-text class="cont_size">
<svg-icon <svg-icon icon-class="healthcondition" class="svg_box"></svg-icon>
icon-class="healthcondition" <span v-if="userConting.health == 2">良好</span>
class="svg_box" <span v-else-if="userConting.health == 3">较弱</span>
></svg-icon> <span v-else-if="userConting.health == 4">有生理缺陷</span>
<span v-if="userConting.health == 2">良好</span> <span v-else-if="userConting.health == 5">残废</span>
<span v-else-if="userConting.health == 3">较弱</span> <span v-else>一般</span>
<span v-else-if="userConting.health == 4">有生理缺陷</span> </el-text>
<span v-else-if="userConting.health == 5">残废</span> </el-col>
<span v-else>一般</span> <el-col :span="24" class="col_box">
</el-text> <el-text class="cont_size">
</el-col> <svg-icon icon-class="phone" class="svg_box"></svg-icon>
<el-col :span="24" class="col_box"> {{ userConting.mobilephone }}
<el-text class="cont_size"> </el-text>
<svg-icon icon-class="phone" class="svg_box"></svg-icon> </el-col>
{{ userConting.mobilephone }} <el-col :span="24" class="col_box">
</el-text> <el-text class="cont_size">
</el-col> <svg-icon icon-class="address" class="svg_box"></svg-icon>
<el-col :span="24" class="col_box"> {{ userConting.currentresidence }}
<el-text class="cont_size"> </el-text>
<svg-icon icon-class="address" class="svg_box"></svg-icon> </el-col>
{{ userConting.currentresidence }}
</el-text>
</el-col>
<el-col :span="24" class="col_box">
<el-text class="cont_size">
<svg-icon icon-class="zhiye" class="svg_box"></svg-icon>
{{ userConting.companyname }} / {{ userConting.maindeparmentname }}
</el-text>
</el-col>
<el-col :span="24" class="col_box">
<el-text class="cont_size">
<svg-icon
icon-class="iconfont-mingpian"
class="svg_box"
></svg-icon>
{{ userConting.positionname }}
</el-text>
</el-col>
</el-row>
</el-col>
<el-col :span="24">
<el-button
type="primary"
style="margin-top: 15px"
@click="editmvorg"
>
编辑主行政组织
</el-button>
</el-col>
</el-row>
</el-card>
</el-col>
<!--右侧区域-->
<el-col :xs="24" :sm="24" :md="12" :lg="16" :xl="16">
<el-card shadow="always" class="box-card">
<el-tabs
v-model="activeName"
class="demo-tabs"
@tab-click="handleClickUser"
>
<el-tab-pane label="基本信息" name="1" >
<UserContent
v-if="!editMyCont && activeName == '1'"
v-model:editShow="editMyCont"
:usercont="userConting"
:tabsid="activeName"
/>
<EditUserContent
v-if="editMyCont && activeName == '1'"
v-model:editShow="editMyCont"
:usercont="userConting"
:tabsid="activeName"
@refreshcontdata="refreshContPage"
/>
</el-tab-pane>
<el-tab-pane label="性格特性" name="2" >
<PersonalityTest v-if="activeName == '2'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="行政组织关系" name="3" >
<OrgNexus v-if="activeName == '3'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="紧急联系人" name="4" >
<EmergencyContactPage
v-if="activeName == '4'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="双职工" name="5" >
<WorkingCouplePage v-if="activeName == '5'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="家庭成员" name="6" >
<FamilyMembers v-if="activeName == '6'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="教育经历" name="7" >
<EducationalExperience
v-if="activeName == '7'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="集团内部工作履历" name="8" >
<InnerWork v-if="activeName == '8'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="集团外部工作履历" name="9" >
<OutsideWork v-if="activeName == '9'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="奖惩记录" name="10" >
<Rewardsandpunishments
v-if="activeName == '10'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="考评记录" name="11" >
<Appraisalrecord v-if="activeName == '11'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="人才盘点" name="12" >
<Talentinventory v-if="activeName == '12'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="员工用工关系" name="13" >
<Employmentrelations v-if="activeName == '13'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="职称信息" name="14" >
<Jobtitle v-if="activeName == '14'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="证书信息" name="15" >
<Certificates v-if="activeName == '15'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
<el-tab-pane label="修改登陆密码" name="16" >
<Editpwd v-if="activeName == '16'" :usercont="userConting" :tabsid="activeName" />
</el-tab-pane>
</el-tabs>
<el-col :span="24" class="col_box">
</el-card> <el-text class="cont_size">
</el-col> <svg-icon icon-class="zhiye" class="svg_box"></svg-icon>
</el-row> {{ userConting.companyname }} / {{ userConting.maindeparmentname }}
</el-dialog> </el-text>
<EditOrg </el-col>
v-model:editShow="editMyOrgCont" <el-col :span="24" class="col_box">
:usercont="userConting" <el-text class="cont_size">
:tabsid="activeName" <svg-icon icon-class="iconfont-mingpian" class="svg_box"></svg-icon>
@refreshcontdata="refreshContPage" {{ userConting.positionname }}
/> </el-text>
</el-col>
</el-row>
</el-col>
<el-col :span="24">
<el-button type="primary" style="margin-top: 15px" @click="editmvorg">
编辑主行政组织
</el-button>
</el-col>
</el-row>
</el-card>
</el-col>
<!--右侧区域-->
<el-col :xs="24" :sm="24" :md="12" :lg="16" :xl="16">
<el-card shadow="always" class="box-card">
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClickUser">
<el-tab-pane label="基本信息" name="1">
<UserContent
v-if="!editMyCont && activeName == '1'"
v-model:editShow="editMyCont"
:usercont="userConting"
:tabsid="activeName"
/>
<EditUserContent
v-if="editMyCont && activeName == '1'"
v-model:editShow="editMyCont"
:usercont="userConting"
:tabsid="activeName"
@refreshcontdata="refreshContPage"
/>
</el-tab-pane>
<el-tab-pane label="性格特性" name="2">
<PersonalityTest
v-if="activeName == '2'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="行政组织关系" name="3">
<OrgNexus
v-if="activeName == '3'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="紧急联系人" name="4">
<EmergencyContactPage
v-if="activeName == '4'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="双职工" name="5">
<WorkingCouplePage
v-if="activeName == '5'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="家庭成员" name="6">
<FamilyMembers
v-if="activeName == '6'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="教育经历" name="7">
<EducationalExperience
v-if="activeName == '7'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="集团内部工作履历" name="8">
<InnerWork
v-if="activeName == '8'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="集团外部工作履历" name="9">
<OutsideWork
v-if="activeName == '9'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="奖惩记录" name="10">
<Rewardsandpunishments
v-if="activeName == '10'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="考评记录" name="11">
<Appraisalrecord
v-if="activeName == '11'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="人才盘点" name="12">
<Talentinventory
v-if="activeName == '12'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="员工用工关系" name="13">
<Employmentrelations
v-if="activeName == '13'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="职称信息" name="14">
<Jobtitle
v-if="activeName == '14'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="证书信息" name="15">
<Certificates
v-if="activeName == '15'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
<el-tab-pane label="修改登陆密码" name="16">
<Editpwd
v-if="activeName == '16'"
:usercont="userConting"
:tabsid="activeName"
/>
</el-tab-pane>
</el-tabs>
</el-card>
</el-col>
</el-row>
</el-dialog>
<EditOrg
v-model:editShow="editMyOrgCont"
:usercont="userConting"
:tabsid="activeName"
@refreshcontdata="getjtcyList"
/>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.bjg { .bjg {
background-color: aqua; background-color: aqua;
height: 50px; height: 50px;
} }
.box-card-left { .box-card-left {
text-align: center; text-align: center;
.username { .username {
margin-top: 20px; margin-top: 20px;
font-size: 35px; font-size: 35px;
} }
.usernumber { .usernumber {
margin-top: 10px; margin-top: 10px;
font-size: 25px; font-size: 25px;
} }
.user_cont { .user_cont {
width: 90%; width: 90%;
margin: auto; margin: auto;
text-align: left; text-align: left;
.col_box { .col_box {
margin-top: 10px; margin-top: 10px;
.cont_size { .cont_size {
font-size: 16px; font-size: 16px;
.svg_box { .svg_box {
margin-right: 10px; margin-right: 10px;
} }
} }
} }
} }
} }
.bianKuang{ .bianKuang {
border: 1px solid #ccc; border: 1px solid #ccc;
} }
</style> </style>

525
src/views/hr/archives/basicinformation/editorg.vue

@ -3,315 +3,330 @@
@ 时间: 2023-06-20 08:15:45 @ 时间: 2023-06-20 08:15:45
@ 备注: 编辑行政组织 @ 备注: 编辑行政组织
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { editUserAboutOrg,teamClassCont } from '@/api/hr/people/type' import { editUserAboutOrg, teamClassCont } from "@/api/hr/people/type";
import { editMyOrgUndertake,haveTeamTimeList } from '@/api/hr/people/index' import { editMyOrgUndertake, haveTeamTimeList } from "@/api/hr/people/index";
import { positiongrade } from '@/api/hr/people/datacont' import { positiongrade } from "@/api/hr/people/datacont";
/** /**
* 行政组织 * 行政组织
*/ */
import { orgInfo,teamInfo } from '@/api/hr/org/type' import { orgInfo, teamInfo } from "@/api/hr/org/type";
import { getOrgTreeList,getTeamListCont } from '@/api/hr/org/index' import { getOrgTreeList, getTeamListCont } from "@/api/hr/org/index";
import { postinfo } from '@/api/hr/post/type' import { postinfo } from "@/api/hr/post/type";
import { getPostContNotSunPage } from '@/api/hr/post/index' import { getPostContNotSunPage } from "@/api/hr/post/index";
import { dutiesCont } from '@/api/hr/duties/type' import { dutiesCont } from "@/api/hr/duties/type";
import { getDuitesList } from '@/api/hr/duties/index' import { getDuitesList } from "@/api/hr/duties/index";
const props = defineProps({ const props = defineProps({
editShow:{ editShow: {
type:Boolean, type: Boolean,
default:false default: false,
}, },
tabsid:{ tabsid: {
type:String, type: String,
default:"1" default: "1",
}, },
usercont:{ usercont: {
type:Object, type: Object,
default(){ default() {
return {} return {};
} },
} },
}); });
const emits = defineEmits(["update:editShow","refreshcontdata"]); const emits = defineEmits(["update:editShow", "refreshcontdata"]);
const editUsAboutOrg = reactive<editUserAboutOrg>({id:"",personInCharge:"2"}); const editUsAboutOrg = reactive<editUserAboutOrg>({ id: "", personInCharge: "2" });
const editUsOrgFormRef = ref(ElForm); // const editUsOrgFormRef = ref(ElForm); //
const addLoading = ref(false) const addLoading = ref(false);
const fuZefanWei = ref(false) const fuZefanWei = ref(false);
/** /**
* 行政组织 * 行政组织
*/ */
const orgTreePostRef = ref(ElTree); const orgTreePostRef = ref(ElTree);
const orgOptionsList = ref<any>(); // const orgOptionsList = ref<any>(); //
const fatherPost = ref<postinfo[]>([]) // const fatherPost = ref<postinfo[]>([]); //
const teamContAry = ref<teamInfo[]>([]) // const teamContAry = ref<teamInfo[]>([]); //
const dutiesInfo = ref<dutiesCont[]>([]) // const dutiesInfo = ref<dutiesCont[]>([]); //
const teamList = ref<teamClassCont[]>([]) const teamList = ref<teamClassCont[]>([]);
/** /**
* 表单验证规则 * 表单验证规则
*/ */
const editPwdRules = reactive({ const editPwdRules = reactive({
orgid: [{ required: true, message: "请选择归属行政组织", trigger: "blur" }], orgid: [{ required: true, message: "请选择归属行政组织", trigger: "blur" }],
position: [{ required: true, message: "请选择岗位", trigger: "blur" }], position: [{ required: true, message: "请选择岗位", trigger: "blur" }],
jobid:[{ required: true, message: "请选择职务", trigger: "blur" }], jobid: [{ required: true, message: "请选择职务", trigger: "blur" }],
jobleve:[{ required: true, message: "请选择职务等级", trigger: "blur" }], jobleve: [{ required: true, message: "请选择职务等级", trigger: "blur" }],
teamid:[{ required: true, message: "请选择班组", trigger: "blur" }], teamid: [{ required: true, message: "请选择班组", trigger: "blur" }],
ruleid:[{ required: true, message: "请选择排班类型", trigger: "blur" }], ruleid: [{ required: true, message: "请选择排班类型", trigger: "blur" }],
personInCharge:[{ required: true, message: "请选择是否为负责人", trigger: "blur" }] personInCharge: [{ required: true, message: "请选择是否为负责人", trigger: "blur" }],
}); });
/** /**
* 弹窗显示控制 * 弹窗显示控制
*/ */
const addshow = computed({ const addshow = computed({
get: () => props.editShow, get: () => props.editShow,
set: (val) => { set: (val) => {
emits("update:editShow", val); emits("update:editShow", val);
}, },
}); });
const systemMenuTreeProps = { const systemMenuTreeProps = {
children: "child", children: "child",
label: "name", label: "name",
value:"id" value: "id",
} };
const propsdepartfuze ={ const propsdepartfuze = {
value: "id", value: "id",
label: "name", label: "name",
children: "child", children: "child",
multiple: true, multiple: true,
checkStrictly: true checkStrictly: true,
} };
/** /**
* 选中节点 * 选中节点
*/ */
const addOrgTreeNodeClick = (postData: orgInfo) => { const addOrgTreeNodeClick = (postData: orgInfo) => {
// console.log("",postData) // console.log("",postData)
getPostContNotSunPage({page:1,pagesize:10000,organization:postData.id?.toString()}) getPostContNotSunPage({
.then(({ data }) =>{ page: 1,
fatherPost.value = data.list pagesize: 10000,
}) organization: postData.id?.toString(),
} }).then(({ data }) => {
fatherPost.value = data.list;
});
};
/** /**
* 关闭弹窗 * 关闭弹窗
*/ */
function clostAddBoxJtnbgzjl(){ function clostAddBoxJtnbgzjl() {
emits("update:editShow", false); emits("update:editShow", false);
initJtwbgzjlData() initJtwbgzjlData();
} }
/** /**
* 初始化数据 * 初始化数据
*/ */
function initJtwbgzjlData(){ function initJtwbgzjlData() {
editUsOrgFormRef.value.resetFields(); editUsOrgFormRef.value.resetFields();
addLoading.value = false; addLoading.value = false;
editUsAboutOrg.id = "" editUsAboutOrg.id = "";
orgOptionsList.value?.splice(orgOptionsList.value.length); orgOptionsList.value?.splice(orgOptionsList.value.length);
} }
/** /**
* 获取行政组织数据 * 获取行政组织数据
*/ */
function haveOrgTreeInfo(){ function haveOrgTreeInfo() {
getOrgTreeList({}) getOrgTreeList({}).then(({ data }) => {
.then(({ data })=>{ orgOptionsList.value = data;
orgOptionsList.value = data });
})
} }
/** /**
* 获取班组数据 * 获取班组数据
*/ */
function haveTeamInfo(){ function haveTeamInfo() {
getTeamListCont({page:1,pagesize:10000}) getTeamListCont({ page: 1, pagesize: 10000 }).then(({ data }) => {
.then(({ data })=>{ teamContAry.value = data.list;
teamContAry.value = data.list });
})
} }
/** /**
* 获取职务列表 * 获取职务列表
*/ */
function getDutiesList(){ function getDutiesList() {
getDuitesList({page:1,pagesize:100000}) getDuitesList({ page: 1, pagesize: 100000 }).then(({ data }) => {
.then(( {data} )=>{ dutiesInfo.value = data.list;
dutiesInfo.value = data.list; });
})
} }
/** /**
* 获取排班类型 * 获取排班类型
*/ */
function getTeamClassList(){ function getTeamClassList() {
haveTeamTimeList({}) haveTeamTimeList({}).then((data) => {
.then(( data )=>{ teamList.value = data.data;
teamList.value = data.data; });
})
} }
/** /**
* 初始化岗位 * 初始化岗位
*/ */
function chushihuaPost(id: number){ function chushihuaPost(id: number) {
// editUsAboutOrg.position= 0 // editUsAboutOrg.position= 0
getPostContNotSunPage({page:1,pagesize:10000,organization:id?.toString()}) getPostContNotSunPage({ page: 1, pagesize: 10000, organization: id?.toString() }).then(
.then(({ data }) =>{ ({ data }) => {
fatherPost.value = data.list fatherPost.value = data.list;
}) }
);
} }
/** /**
* 监听数据 * 监听数据
*/ */
watch(() => props.editShow,() => { watch(
() => props.editShow,
if(props.editShow){ () => {
editUsAboutOrg.id = props.usercont.id.toString() if (props.editShow) {
// editUsAboutOrg.personInCharge = props.usercont.personincharge.toString() editUsAboutOrg.id = props.usercont.id.toString();
haveOrgTreeInfo(); // editUsAboutOrg.personInCharge = props.usercont.personincharge.toString()
haveTeamInfo(); haveOrgTreeInfo();
getDutiesList(); haveTeamInfo();
getTeamClassList(); getDutiesList();
chushihuaPost(props.usercont.adminorg); getTeamClassList();
// console.log("--2323232323->",editUsAboutOrg,props.usercont) chushihuaPost(props.usercont.adminorg);
console.log("监听数据--2323232323->", editUsAboutOrg, props.usercont);
editUsAboutOrg.orgid = props.usercont.adminorg //number;
editUsAboutOrg.position = props.usercont.position //number;
editUsAboutOrg.teamid = props.usercont.teamid //number;
editUsAboutOrg.jobid = props.usercont.jobid //number;
editUsAboutOrg.jobleve = props.usercont.jobleve //number;
editUsAboutOrg.ruleid = props.usercont.ruleid //string;
editUsAboutOrg.personInCharge = props.usercont.personincharge.toString() //number|string;
editUsAboutOrg.orgreslist = props.usercont.orgreslist //any;
editUsAboutOrg.resallorg = props.usercont.resallorg //any;
setPersonInCharge()
} editUsAboutOrg.orgid = props.usercont.adminorg; //number;
}) editUsAboutOrg.position = props.usercont.position; //number;
function setPersonInCharge(){ editUsAboutOrg.teamid = props.usercont.teamid; //number;
if(editUsAboutOrg.personInCharge == 1 || editUsAboutOrg.personInCharge == "1"){ editUsAboutOrg.jobid = props.usercont.jobid; //number;
fuZefanWei.value = true editUsAboutOrg.jobleve = props.usercont.jobleve; //number;
}else{ editUsAboutOrg.ruleid = props.usercont.ruleid; //string;
fuZefanWei.value = false editUsAboutOrg.personInCharge = props.usercont.personincharge.toString(); //number|string;
} editUsAboutOrg.orgreslist = props.usercont.orgreslist; //any;
} editUsAboutOrg.resallorg = props.usercont.resallorg; //any;
/** setPersonInCharge();
* 添加数据 }
*/ }
function submitAddJtnbgzjl(){ );
addLoading.value = true; function setPersonInCharge() {
editUsOrgFormRef.value.validate((isValid: boolean) => { if (editUsAboutOrg.personInCharge == 1 || editUsAboutOrg.personInCharge == "1") {
if (isValid) { fuZefanWei.value = true;
editUsAboutOrg.personInCharge = parseInt(editUsAboutOrg.personInCharge) } else {
editMyOrgUndertake(editUsAboutOrg) fuZefanWei.value = false;
.then(() =>{ }
ElMessage.success("编辑成功"); }
clostAddBoxJtnbgzjl(); /**
emits('refreshcontdata',props.usercont); * 添加数据
}) */
.finally(() =>{addLoading.value = false;}) function submitAddJtnbgzjl() {
}else{ addLoading.value = true;
addLoading.value = false; editUsOrgFormRef.value.validate((isValid: boolean) => {
} if (isValid) {
}); editUsAboutOrg.personInCharge = parseInt(editUsAboutOrg.personInCharge);
} editMyOrgUndertake(editUsAboutOrg)
.then(() => {
ElMessage.success("编辑成功");
clostAddBoxJtnbgzjl();
emits("refreshcontdata", props.usercont);
})
.finally(() => {
addLoading.value = false;
});
} else {
addLoading.value = false;
}
});
}
</script> </script>
<template> <template>
<el-dialog <el-dialog
v-model="addshow" v-model="addshow"
width="600" width="600"
title="编辑行政组织" title="编辑行政组织"
append-to-body append-to-body
:before-close="clostAddBoxJtnbgzjl" :before-close="clostAddBoxJtnbgzjl"
> <el-form >
ref="editUsOrgFormRef" <el-form
:model="editUsAboutOrg" ref="editUsOrgFormRef"
:rules="editPwdRules" :model="editUsAboutOrg"
label-width="140px" :rules="editPwdRules"
> label-width="140px"
<el-form-item label="归属行政组织" prop="orgid"> >
<el-tree-select <el-form-item label="归属行政组织" prop="orgid">
ref="orgTreePostRef" <el-tree-select
v-model="editUsAboutOrg.orgid" ref="orgTreePostRef"
placeholder="选择归属行政组织" v-model="editUsAboutOrg.orgid"
:data="orgOptionsList" placeholder="选择归属行政组织"
node-key="id" :data="orgOptionsList"
check-strictly node-key="id"
:props="systemMenuTreeProps" check-strictly
:render-after-expand="false" :props="systemMenuTreeProps"
class="orgTree" :render-after-expand="false"
@node-click="addOrgTreeNodeClick" class="orgTree"
/> @node-click="addOrgTreeNodeClick"
</el-form-item> />
<el-form-item label="岗位" prop="position"> </el-form-item>
<el-select v-model="editUsAboutOrg.position" clearable placeholder="请选择岗位" > <el-form-item label="岗位" prop="position">
<el-option <el-select v-model="editUsAboutOrg.position" clearable placeholder="请选择岗位">
v-for="item in fatherPost" <el-option
:key="item.id" v-for="item in fatherPost"
:label="item.name" :key="item.id"
:value="item.id" :label="item.name"
:disabled="!item.status" :value="item.id"
/> :disabled="!item.status"
</el-select> />
</el-form-item> </el-select>
<el-form-item label="职务" prop="jobid"> </el-form-item>
<el-select v-model="editUsAboutOrg.jobid" clearable filterable placeholder="请选择职务" > <el-form-item label="职务" prop="jobid">
<el-option <el-select
v-for="item in dutiesInfo" v-model="editUsAboutOrg.jobid"
:key="item.id" clearable
:label="item.name" filterable
:value="item.id" placeholder="请选择职务"
:disabled="!item.status" >
/> <el-option
</el-select> v-for="item in dutiesInfo"
</el-form-item> :key="item.id"
<el-form-item label="职务等级" prop="jobleve"> :label="item.name"
<el-select v-model="editUsAboutOrg.jobleve" placeholder="请选择职务等级" > :value="item.id"
<el-option :disabled="!item.status"
v-for="item in positiongrade" />
:key="item.id" </el-select>
:label="item.name" </el-form-item>
:value="item.id" <el-form-item label="职务等级" prop="jobleve">
/> <el-select v-model="editUsAboutOrg.jobleve" placeholder="请选择职务等级">
</el-select> <el-option
</el-form-item> v-for="item in positiongrade"
<el-form-item label="班组" prop="teamid"> :key="item.id"
<el-select v-model="editUsAboutOrg.teamid" placeholder="请选择班组" > :label="item.name"
<el-option :value="item.id"
v-for="item in teamContAry" />
:key="item.id" </el-select>
:label="item.name" </el-form-item>
:value="item.id" <el-form-item label="班组" prop="teamid">
/> <el-select v-model="editUsAboutOrg.teamid" placeholder="请选择班组">
</el-select> <el-option
</el-form-item> v-for="item in teamContAry"
<el-form-item label="排班类型" prop="ruleid"> :key="item.id"
<el-select v-model="editUsAboutOrg.ruleid" placeholder="请选择排班类型" > :label="item.name"
<el-option :value="item.id"
v-for="item in teamList" />
:key="item.id" </el-select>
:label="item.name" </el-form-item>
:value="item.id" <el-form-item label="排班类型" prop="ruleid">
/> <el-select v-model="editUsAboutOrg.ruleid" placeholder="请选择排班类型">
</el-select> <el-option
</el-form-item> v-for="item in teamList"
<el-form-item label="部门负责人" prop="personInCharge"> :key="item.id"
<el-switch :label="item.name"
v-model="editUsAboutOrg.personInCharge" :value="item.id"
inline-prompt />
active-text="是" </el-select>
inactive-text="否" </el-form-item>
active-value="1" <el-form-item label="部门负责人" prop="personInCharge">
inactive-value="2" <el-switch
size="large" v-model="editUsAboutOrg.personInCharge"
@change="setPersonInCharge" inline-prompt
/> active-text="是"
</el-form-item> inactive-text="否"
<el-form-item v-if="fuZefanWei" label="负责行政组织" prop="orgOptionsList" > active-value="1"
<el-cascader v-model="editUsAboutOrg.orgreslist" :options="orgOptionsList" :props="propsdepartfuze" clearable style="width:100%"></el-cascader> inactive-value="2"
</el-form-item> size="large"
</el-form> @change="setPersonInCharge"
<template #footer> />
<div class="dialog-footer"> </el-form-item>
<el-button type="primary" :loading="addLoading" @click="submitAddJtnbgzjl" > </el-button> <el-form-item v-if="fuZefanWei" label="负责行政组织" prop="orgOptionsList">
<el-button @click="clostAddBoxJtnbgzjl"> </el-button> <el-cascader
</div> v-model="editUsAboutOrg.orgreslist"
</template> :options="orgOptionsList"
</el-dialog> :props="propsdepartfuze"
clearable
style="width: 100%"
></el-cascader>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" :loading="addLoading" @click="submitAddJtnbgzjl"
> </el-button
>
<el-button @click="clostAddBoxJtnbgzjl"> </el-button>
</div>
</template>
</el-dialog>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped></style>
</style>

14
src/views/hr/archives/index.vue

@ -31,7 +31,7 @@ import { uploadUrl } from "@/api/DesignForm";
/** /**
* 引入页面 * 引入页面
*/ */
import ArchivesCont from "@/views/hr/archives/archivescont.vue"; import ArchivesContPage from "@/views/hr/archives/archivescont.vue";
import XingGeFengXi from "@/views/hr/archives/downpage/xingGeFengXi.vue"; import XingGeFengXi from "@/views/hr/archives/downpage/xingGeFengXi.vue";
import { ElScrollbar as ElScrollbarType } from "element-plus"; import { ElScrollbar as ElScrollbarType } from "element-plus";
@ -907,7 +907,7 @@ const gainTimeList = () => {
<el-table-column fixed="right" align="center" label="操作" width="100"> <el-table-column fixed="right" align="center" label="操作" width="100">
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-hasPerm="['127710903461228544']" v-hasPerm="['275256219474604032']"
type="primary" type="primary"
link link
size="small" size="small"
@ -927,7 +927,7 @@ const gainTimeList = () => {
@pagination="getArchivesPage" @pagination="getArchivesPage"
/> />
</el-card> </el-card>
<ArchivesCont <ArchivesContPage
v-model:isShow="archivesBox" v-model:isShow="archivesBox"
:archivesdata="peoplecont" :archivesdata="peoplecont"
@updatemyconting="updateMyCont" @updatemyconting="updateMyCont"
@ -1229,7 +1229,11 @@ const gainTimeList = () => {
<span>考评人员成绩统计表</span> <span>考评人员成绩统计表</span>
</template> </template>
<el-row v-loading="excelLoading" element-loading-text="文档上传中,请稍候..."> <el-row
v-hasPerm="['288626950073757696']"
v-loading="excelLoading"
element-loading-text="文档上传中,请稍候..."
>
<el-col :span="24"> <el-col :span="24">
<el-form <el-form
:model="stafftempForm" :model="stafftempForm"
@ -1269,7 +1273,7 @@ const gainTimeList = () => {
</el-upload> </el-upload>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row v-hasPerm="['288626950073757696']">
<el-col :span="24"> <el-col :span="24">
<el-progress <el-progress
:text-inside="true" :text-inside="true"

7
src/views/sysworkflow/flow/flowDrawingBoard.vue

@ -493,7 +493,12 @@ const clickOpenOrClose = () => {
:is-form-flow="props.isFormFlow" :is-form-flow="props.isFormFlow"
:customer-form-key="props.customerFormKey" :customer-form-key="props.customerFormKey"
/> />
<copyerDrawer /> <copyerDrawer
:directormaxlevel="directorMaxLeveling"
:node-config="nodeConfig"
:is-form-flow="props.isFormFlow"
:customer-form-key="props.customerFormKey"
/>
<conditionDrawer <conditionDrawer
:is-form-flow="props.isFormFlow" :is-form-flow="props.isFormFlow"
:customer-form-key="props.customerFormKey" :customer-form-key="props.customerFormKey"

123
src/views/sysworkflow/flow/index.vue

@ -3,72 +3,75 @@
@ 时间: 2023-05-26 09:19:46 @ 时间: 2023-05-26 09:19:46
@ 备注: @ 备注:
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import FlowDrawingBoard from '@/views/sysworkflow/flow/flowDrawingBoard.vue' import FlowDrawingBoard from "@/views/sysworkflow/flow/flowDrawingBoard.vue";
// //
const flowcont = ref() const flowcont = ref();
const drawer = ref(false) const drawer = ref(false);
const drawerWidht = ref() const drawerWidht = ref();
const openfloaw = ()=>{ const openfloaw = () => {
drawerWidht.value = flowcont.value?.clientWidth drawerWidht.value = flowcont.value?.clientWidth;
// console.log("clientHeight--->",drawerWidht.value) // console.log("clientHeight--->",drawerWidht.value)
drawer.value = true drawer.value = true;
} };
const isFormFlow = ref(false) const isFormFlow = ref(false);
const customerFormKey = ref<string>() const customerFormKey = ref<string>();
const scrollContainer = ref<any>(null)
const fixedElement = ref<any>(null)
const scrollToFixed = () =>{
// console.log("scrollToFixed",scrollContainer.value?.offsetTop)
// console.log("scrollToFixed",fixedElement.value?.offsetTop)
scrollContainer.value.scrollIntoView({
behavior: "smooth"
})
scrollContainer.value.scrollTop = fixedElement.value?.offsetTop - scrollContainer.value?.offsetTop
}
const scrollContainer = ref<any>(null);
const fixedElement = ref<any>(null);
const scrollToFixed = () => {
// console.log("scrollToFixed",scrollContainer.value?.offsetTop)
// console.log("scrollToFixed",fixedElement.value?.offsetTop)
scrollContainer.value.scrollIntoView({
behavior: "smooth",
});
scrollContainer.value.scrollTop =
fixedElement.value?.offsetTop - scrollContainer.value?.offsetTop;
};
</script> </script>
<template> <template>
<div ref="flowcont"> <div ref="flowcont">
<el-button type="primary" @click="openfloaw">添加</el-button> <el-button type="primary" @click="openfloaw">添加</el-button>
<FlowDrawingBoard v-model:open-drawer="drawer" :drawer-widht = "drawerWidht" :is-form-flow="isFormFlow" :customer-form-key="customerFormKey" /> <FlowDrawingBoard
v-model:open-drawer="drawer"
:drawer-widht="drawerWidht"
:is-form-flow="isFormFlow"
:customer-form-key="customerFormKey"
/>
<div ref="scrollContainer" style="height: 200px; overflow: auto;"> <div ref="scrollContainer" style="height: 200px; overflow: auto">
<!-- 这里是滚动内容 --> <!-- 这里是滚动内容 -->
<div ref="fixedElement">指定位置元素</div> <div ref="fixedElement">指定位置元素</div>
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
<br> <br />
</div>
</div> <button @click="scrollToFixed">滚动到指定位置</button>
<button @click="scrollToFixed">滚动到指定位置</button> </div>
</div>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.canvas_body{ .canvas_body {
height: 100%; height: 100%;
width: inherit; width: inherit;
} }
</style> </style>

2
src/views/sysworkflow/lowcodepage/appPage/appPageForm/pageFlow.vue

@ -649,7 +649,7 @@ const simulateFlow = () => {
v-model:form-data="state.formData" v-model:form-data="state.formData"
:form-version="formVersion" :form-version="formVersion"
/> />
<copyerDrawer /> <copyerSend :is-form-flow="isFormFlow" />
<conditionDrawer :is-form-flow="isFormFlow" :customer-form-key="appPageKey" /> <conditionDrawer :is-form-flow="isFormFlow" :customer-form-key="appPageKey" />
</div> </div>
</div> </div>

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

@ -3,37 +3,36 @@
@ 时间: 2024-03-09 08:58:23 @ 时间: 2024-03-09 08:58:23
@ 备注: 编辑表单页面 @ 备注: 编辑表单页面
--> -->
<script lang='ts' setup> <script lang="ts" setup>
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from "vue-router";
import { formStruct } from '@/api/DesignForm/types' import { formStruct } from "@/api/DesignForm/types";
import { customerFormConfig } from "@/api/DesignForm/type"; import { customerFormConfig } from "@/api/DesignForm/type";
import { getProductionMarkForm } from '@/api/DesignForm/requestapi' import { getProductionMarkForm } from "@/api/DesignForm/requestapi";
// import PageDesign from "@/views/sysworkflow/lowcodepage/pageDesign.vue" // import PageDesign from "@/views/sysworkflow/lowcodepage/pageDesign.vue"
import PageDesignEs from "@/views/sysworkflow/lowcodepage/pageDesignes.vue" import PageDesignEs from "@/views/sysworkflow/lowcodepage/pageDesignes.vue";
import WorkFlow from "@/views/sysworkflow/lowcodepage/workFlow.vue" import WorkFlow from "@/views/sysworkflow/lowcodepage/workFlow.vue";
import PageList from "@/views/sysworkflow/lowcodepage/pageList.vue" import PageList from "@/views/sysworkflow/lowcodepage/pageList.vue";
import SetUpPage from "@/views/sysworkflow/lowcodepage/setUpPage.vue" import SetUpPage from "@/views/sysworkflow/lowcodepage/setUpPage.vue";
const props = defineProps({ const props = defineProps({
drawerWith:{ drawerWith: {
type:Number, type: Number,
default:true default: true,
}, },
formKey:{ formKey: {
type:String, type: String,
default:"" default: "",
}, },
formGroupKey:{ formGroupKey: {
type:String, type: String,
default:"" default: "",
} },
}); });
const formConfigCont = reactive<customerFormConfig>({ const formConfigCont = reactive<customerFormConfig>({
formName:"", formName: "",
formlogo:"" formlogo: "",
}) });
const loading = ref(false) const loading = ref(false);
const pageDesignIsWrite = ref(true); const pageDesignIsWrite = ref(true);
const flowIsWrite = ref(true); const flowIsWrite = ref(true);
const emits = defineEmits(["refreshPage"]); const emits = defineEmits(["refreshPage"]);
@ -41,200 +40,233 @@ const drawerOpenOrClose = ref(true);
const tabsActive = ref(1); const tabsActive = ref(1);
const creetTabsActive = ref(1); const creetTabsActive = ref(1);
const route: any = useRoute().query || {} const route: any = useRoute().query || {};
const state = reactive<formStruct>({ const state = reactive<formStruct>({
formData: { formData: {
list: [], list: [],
form: { form: {
size: 'default', size: "default",
name:'', name: "",
formName: formConfigCont.formName formName: formConfigCont.formName,
}, },
config: { config: {
groupKey:props.formGroupKey groupKey: props.formGroupKey,
}, },
styles:{ styles: {
divStyle:{}, divStyle: {},
labelStyle:{}, labelStyle: {},
inputStyle:{} inputStyle: {},
},
purview:[]
}, },
editor: {}, purview: [],
loading: false, },
formDataPreview: {}, editor: {},
previewVisible: false, // loading: false,
designType: route.type, // search formDataPreview: {},
formDict: {}, previewVisible: false, //
formOtherData: { designType: route.type, // search
source: route.source || '', formDict: {},
formName: formConfigCont.formName formOtherData: {
} source: route.source || "",
}) formName: formConfigCont.formName,
},
});
//ID //ID
const formKeyStr = computed({ const formKeyStr = computed({
get() { get() {
return props.formKey return props.formKey;
}, },
set(val: formStruct) { set(val: formStruct) {
emits('update:formKey', val) emits("update:formKey", val);
} },
}); });
//ID //ID
const formVersion = ref<string>("") const formVersion = ref<string>("");
const judgeFormIsEdit = (val:boolean,wval:boolean) => { const judgeFormIsEdit = (val: boolean, wval: boolean) => {
pageDesignIsWrite.value = val; pageDesignIsWrite.value = val;
flowIsWrite.value = wval flowIsWrite.value = wval;
} };
const handleClick = (tab: TabsPaneContext, event: Event) =>{ const handleClick = (tab: TabsPaneContext, event: Event) => {
// console.log("--->",creetTabsActive.value,tab.paneName, event) // console.log("--->",creetTabsActive.value,tab.paneName, event)
switch (tab.paneName) { switch (tab.paneName) {
case 2: case 2:
if (creetTabsActive.value != 2){ if (creetTabsActive.value != 2) {
if(PreOperation()){ if (PreOperation()) {
creetTabsActive.value = tab.paneName creetTabsActive.value = tab.paneName;
} }
} }
break; break;
case 3: case 3:
if (creetTabsActive.value != 3){ if (creetTabsActive.value != 3) {
if(PreOperation()){ if (PreOperation()) {
creetTabsActive.value = tab.paneName creetTabsActive.value = tab.paneName;
} }
} }
break; break;
case 4: case 4:
if (creetTabsActive.value != 4){ if (creetTabsActive.value != 4) {
if(PreOperation()){ if (PreOperation()) {
creetTabsActive.value = tab.paneName creetTabsActive.value = tab.paneName;
} }
} }
break; break;
default: default:
tabsActive.value = 1 tabsActive.value = 1;
creetTabsActive.value = 1 creetTabsActive.value = 1;
break; break;
} }
} };
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-09 13:42:24 @ 时间: 2024-03-09 13:42:24
@ 功能: 判断tabs要执行得前置操作 @ 功能: 判断tabs要执行得前置操作
*/ */
const PreOperation = () =>{ const PreOperation = () => {
switch (creetTabsActive.value) { switch (creetTabsActive.value) {
case 2: case 2:
if(flowIsWrite.value){ if (flowIsWrite.value) {
ElMessageBox.alert('你设置的流程还未保存!', '温馨提示!', { ElMessageBox.alert("你设置的流程还未保存!", "温馨提示!", {
confirmButtonText: 'OK', confirmButtonText: "OK",
callback: (action: Action) => { callback: (action: Action) => {
tabsActive.value = 2 tabsActive.value = 2;
creetTabsActive.value = 2 creetTabsActive.value = 2;
} },
}); });
flowIsWrite.value = true flowIsWrite.value = true;
}else{ } else {
creetTabsActive.value = tabsActive.value creetTabsActive.value = tabsActive.value;
// console.log("-1-->",tabsActive.value,creetTabsActive.value) // console.log("-1-->",tabsActive.value,creetTabsActive.value)
} }
return true; return true;
break; break;
case 3: case 3:
return true; return true;
break; break;
case 4: case 4:
return true; return true;
break; break;
default: default:
if(pageDesignIsWrite.value){ if (pageDesignIsWrite.value) {
ElMessageBox.alert('你设置的表单还未保存!', '温馨提示!', { ElMessageBox.alert("你设置的表单还未保存!", "温馨提示!", {
confirmButtonText: 'OK', confirmButtonText: "OK",
callback: (action: Action) => { callback: (action: Action) => {
tabsActive.value = 1 tabsActive.value = 1;
creetTabsActive.value = 1 creetTabsActive.value = 1;
} },
}); });
pageDesignIsWrite.value = true pageDesignIsWrite.value = true;
}else{ } else {
creetTabsActive.value = tabsActive.value creetTabsActive.value = tabsActive.value;
tabsActive.value = 1 tabsActive.value = 1;
} }
return true; return true;
break; break;
} }
} };
const judgeFlowIsEdit = (val:boolean) => { const judgeFlowIsEdit = (val: boolean) => {
flowIsWrite.value = val; flowIsWrite.value = val;
// creetTabsActive.value = 2 // creetTabsActive.value = 2
} };
const closeFormPage = () => { const closeFormPage = () => {
emits("refreshPage","formPage"); emits("refreshPage", "formPage");
};
}
onBeforeMount(() => { onBeforeMount(() => {
getProductionMarkForm() getProductionMarkForm()
.then(({data})=>{ .then(({ data }) => {
formConfigCont.formlogo = data.formlogo formConfigCont.formlogo = data.formlogo;
formConfigCont.formName = data.formname formConfigCont.formName = data.formname;
state.formData.form.name = data.formlogo state.formData.form.name = data.formlogo;
state.formData.form.formName = data.formname state.formData.form.formName = data.formname;
state.formOtherData.formName = data.formname state.formOtherData.formName = data.formname;
}) })
.finally(()=>{ .finally(() => {});
});
})
})
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-03-11 08:44:43 @ 时间: 2024-03-11 08:44:43
@ 功能: 执行下一个窗口 @ 功能: 执行下一个窗口
*/ */
const runNextWindows = (val:number) => { const runNextWindows = (val: number) => {
creetTabsActive.value = val creetTabsActive.value = val;
tabsActive.value = val tabsActive.value = val;
} };
onMounted(()=>{ onMounted(() => {
// formKeyStr.value = "13" // formKeyStr.value = "13"
}) });
</script> </script>
<template> <template>
<div class="drawerClass"> <div class="drawerClass">
<el-drawer
<el-drawer v-model="drawerOpenOrClose" title="设置/编辑自定义表单" :with-header="false" :close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :size="props.drawerWith"> v-model="drawerOpenOrClose"
<el-tabs v-model="tabsActive" @tab-click="handleClick" :stretch="true" class="tabsMain"> title="设置/编辑自定义表单"
<el-tab-pane label="① 页面设计" :name="1"> :with-header="false"
</el-tab-pane> :close-on-click-modal="false"
<el-tab-pane label="② 流程设计" :name="2"> :close-on-press-escape="false"
</el-tab-pane> :destroy-on-close="true"
<el-tab-pane label="③ 列表设计" :name="3"> :size="props.drawerWith"
</el-tab-pane> >
<el-tab-pane label="④ 页面设置" :name="4"> <el-tabs
</el-tab-pane> v-model="tabsActive"
</el-tabs> @tab-click="handleClick"
<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" /> :stretch="true"
<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" /> class="tabsMain"
<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-tab-pane label="① 页面设计" :name="1"> </el-tab-pane>
</el-drawer> <el-tab-pane label="② 流程设计" :name="2"> </el-tab-pane>
</div> <el-tab-pane label="③ 列表设计" :name="3"> </el-tab-pane>
<el-tab-pane label="④ 页面设置" :name="4"> </el-tab-pane>
</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"
@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>
</template> </template>
<style lang='scss' scoped> <style lang="scss" scoped>
.tabsMain{ .tabsMain {
::v-deep .el-tabs__header{ ::v-deep .el-tabs__header {
margin: 0px; margin: 0px;
} }
::v-deep .el-tabs__nav-scroll{ ::v-deep .el-tabs__nav-scroll {
width: 50%!important; width: 50% !important;
margin: 0 auto!important; margin: 0 auto !important;
} }
::v-deep .el-drawer__body{ ::v-deep .el-drawer__body {
padding: 0; padding: 0;
} }
} }
</style> </style>

2
src/views/sysworkflow/lowcodepage/runApp/runAppForm.vue

@ -183,7 +183,7 @@ const initLoadData = () => {
if (props.pickAppMenu.type != 1) { if (props.pickAppMenu.type != 1) {
appFormTitle.value = props.pickAppMenu.label; appFormTitle.value = props.pickAppMenu.label;
gainAppPageInfo({ id: props.pickAppMenu.id }).then((data) => { gainAppPageInfo({ id: props.pickAppMenu.id }).then((data) => {
// console.log("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",data) // console.log("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", data);
appInitData.value = data.data; appInitData.value = data.data;
// console.log("---!",appInitData.value) // console.log("---!",appInitData.value)
mastesformjson.value = data.data.appForm.mastesformjson; mastesformjson.value = data.data.appForm.mastesformjson;

9
src/views/sysworkflow/lowcodepage/workFlow.vue

@ -569,7 +569,14 @@ onMounted(() => {
v-model:form-data="state.formData" v-model:form-data="state.formData"
:form-version="formVersion" :form-version="formVersion"
/> />
<copyerDrawer /> <copyerDrawer
:directormaxlevel="directorMaxLeveling"
:node-config="nodeConfig"
:is-form-flow="isFormFlow"
:customer-form-key="formKeyVal"
v-model:form-data="state.formData"
:form-version="formVersion"
/>
<conditionDrawer :is-form-flow="isFormFlow" :customer-form-key="formKeyVal" /> <conditionDrawer :is-form-flow="isFormFlow" :customer-form-key="formKeyVal" />
</el-col> </el-col>
</el-row> </el-row>

Loading…
Cancel
Save