Browse Source

Merge branch 'qin_v21'

lwx_v25
herenshan112 7 months ago
parent
commit
0057fa186e
  1. 658
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/appFlow/simulateTaskFlow.vue
  2. 28
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/pageFlow.vue
  3. 442
      src/views/sysworkflow/lowcodepage/pageFlow/tableFlow.vue

658
src/views/sysworkflow/lowcodepage/appPage/appPageForm/appFlow/simulateTaskFlow.vue

@ -0,0 +1,658 @@
<!--
@ 作者: 秦东
@ 时间: 2025-05-08 08:34:12
@ 备注: 模拟任务
-->
<script lang="ts" setup>
import { Check, Delete, Edit, Message, Search, Star } from "@element-plus/icons-vue";
import {
haveCustomerFormVersion,
generateFlow,
echoTableFormPage,
realTimeUpdateFlow,
} from "@/api/taskapi/management";
import { nodeFlow, conditionInfo, nodelPeoples } from "@/api/taskapi/types";
import {
notAsA_BasisForJudgment,
asAnApprovalActionControl,
fixedValueControl,
timeControl,
timeEquation,
submitButton,
afreshSubmitButton,
} from "@/utils/workflow/const";
import { judgeSubmitCancel, startRunFlow } from "@/api/DesignForm/requestapi";
import { string2json, stringToObj } from "@/utils/DesignForm/form";
import FlowStep from "@/views/taskplatform/taskmanagement/flowStep.vue";
import { orgform, criteriaForPeopleList } from "@/api/hr/org/type";
import {
getOrgFormTree,
getOrgFormUserList,
searchUserCustomerFormList,
} from "@/api/hr/org/index";
const props = defineProps({
simuIsTrue: {
type: Boolean,
default: true,
},
formVersion: {
type: String,
default: "",
},
});
const squareUrl = "https://cube.elemecdn.com/9/c2/f0ee8a3c7c9638a54940382568c9dpng.png";
const emits = defineEmits(["update:simuIsTrue"]);
const isShow = computed({
get: () => {
getTaskFormData();
return props.simuIsTrue;
},
set: (val) => {
emits("update:simuIsTrue", val);
},
});
/**
@ 作者: 秦东
@ 时间: 2024-04-08 15:35:54
@ 功能: 表单基本数据结构
*/
const state = reactive<any>({
type: 1, // 123 4 5
formData: {
list: [],
form: {},
config: {},
powerstr: {},
},
dict: {},
formId: props.versionid,
id: 0,
loading: true,
});
const nodelUserList = reactive<nodelPeoples[]>([]);
const flowFactor = reactive<conditionInfo[]>([]); //
const formLoading = ref(false); //loading
const flowLoading = ref(false); //loading
const flowMap = ref<any[]>(); //
const nextStep = ref<number>(0);
const currentProgress = ref<number>(1);
const nodeKey = ref<string>("");
//
const gainFlowChart = reactive<nodeFlow>({
id: "0",
isRun: 1,
userKey: "",
});
/**
@ 作者: 秦东
@ 时间: 2024-04-09 16:49:09
@ 功能: 表单前置数据
*/
const beforeSubmit = (params: any) => {
params.formId = props.versionid;
params.id = "";
// emits("update:isopen", false);
return params;
};
/**
@ 作者: 秦东
@ 时间: 2024-04-09 16:41:20
@ 功能: 提交成功回调
*/
const afterSubmit = (type: string, val?: any) => {
// console.log("------------------>",type,val)
// console.log("------------------>",flowMap)
if (type === "success") {
}
};
/**
@ 作者: 秦东
@ 时间: 2024-04-09 16:50:01
@ 功能: 关闭操作
*/
const closeAppSubmit = () => {
emits("update:simuIsTrue", false);
};
//
const changeKeyVal = (key: any, val: any, type: any, attribute: any) => {
// console.log("--key--->",key)
// console.log("--val--->",val,Array.isArray(val))
// console.log("--type--->",type)
// console.log("--attribute--->",attribute)
// console.log("--type-1-true->",notAsA_BasisForJudgment.indexOf(type))
// console.log("--flowFactor--->",flowFactor)
// if(notAsA_BasisForJudgment.indexOf(type) != -1){
// console.log("--type--true->",notAsA_BasisForJudgment.indexOf(type))
// }
let unitsVal = val;
let isUpdateFlowChart = false;
//
if (notAsA_BasisForJudgment.indexOf(type) === -1) {
let isWrite = true;
flowFactor.forEach((item: any) => {
if (item.factorid == key) {
isWrite = false;
item.type = 3;
if (type == "checkbox") {
item.isCheckbox = true;
item.answers = val.map(String);
} else {
item.isCheckbox = false;
item.oneanswer = val.toString();
}
if (notAsA_BasisForJudgment.indexOf(type) === -1) {
isUpdateFlowChart = true;
}
}
});
if (isWrite) {
if (type == "checkbox") {
flowFactor.push({
factorid: key,
type: 3,
isCheckbox: true,
answers: val.map(String),
});
} else {
flowFactor.push({
factorid: key,
type: 3,
isCheckbox: false,
oneanswer: val.toString(),
});
}
isUpdateFlowChart = true;
}
// console.log("--flowFactor--->",flowFactor)
}
// console.log("--flowFactor--1->",unitsVal,timeControl,type)
//
if (
timeControl.indexOf(type) > -1 ||
fixedValueControl.indexOf(type) > -1 ||
type == "input"
) {
// console.log("--flowFactor--3->",unitsVal)
let addNewTime = true; //
flowFactor.forEach((item: any) => {
// console.log("--flowFactor--5->",item.type)
if (item.type == 2) {
addNewTime = false;
// console.log("--flowFactor--5====1->",item.type)
// console.log("--flowFactor--5====3->",item.customFields,item.customFields.length)
if (item.customFields && item.customFields.length > 0) {
// console.log("--flowFactor--5====2->",item.customFields)
let sunNewAdd = true;
item.customFields.forEach((sunItem: any) => {
// console.log("--flowFactor-4->",sunItem.wordfield , key,sunItem.wordfield == key)
if (sunItem.wordfield == key) {
sunNewAdd = false;
isUpdateFlowChart = true;
if (timeEquation.indexOf(attribute) === -1) {
//
sunItem.leftval = val.toString();
} else {
//
if (Array.isArray(val)) {
if (val.length >= 2) {
sunItem.leftval = val[0].toString();
sunItem.rightval = val[val.length - 1].toString();
}
}
}
}
});
if (sunNewAdd) {
isUpdateFlowChart = true;
if (timeEquation.indexOf(attribute) === -1) {
//
let customFieldInfo = {
wordfield: key,
optType: "1",
leftval: val.toString(),
};
item.customFields.push(customFieldInfo);
} else {
//
if (Array.isArray(val)) {
if (val.length >= 2) {
let customFieldInfo = {
wordfield: key,
optType: "6",
leftval: val[0].toString(),
leftoptType: "3",
rightoptType: "3",
rightval: val[val.length - 1].toString(),
};
item.customFields.push(customFieldInfo);
}
}
}
}
}
}
});
if (addNewTime) {
//
isUpdateFlowChart = true;
if (timeEquation.indexOf(attribute) === -1) {
//
let customFieldInfo = {
wordfield: key,
optType: "1",
leftval: val.toString(),
};
let condInfo = {
factorid: "customFields",
type: 2,
isCheckbox: false,
customFields: [customFieldInfo],
};
flowFactor.push(condInfo);
} else {
//
if (Array.isArray(val)) {
if (val.length >= 2) {
let customFieldInfo = {
wordfield: key,
optType: "6",
leftval: val[0].toString(),
leftoptType: "3",
rightoptType: "3",
rightval: val[val.length - 1].toString(),
};
let condInfo = {
factorid: "customFields",
type: 2,
isCheckbox: false,
customFields: [customFieldInfo],
};
flowFactor.push(condInfo);
}
}
}
}
}
//
if (asAnApprovalActionControl.indexOf(type) > -1) {
isUpdateFlowChart = true;
let isWriteUs = true;
nodelUserList.forEach((item: any) => {
if (item.factorid == key) {
isWriteUs = false;
item.userList = val;
}
});
if (isWriteUs) {
nodelUserList.push({
factorid: key,
userList: val,
});
}
}
// console.log("--flowFactor--->",flowFactor)
//
if (isUpdateFlowChart) {
flowLoading.value = true;
//
gainFlowChart.conditionList = flowFactor;
gainFlowChart.nodelPeople = nodelUserList;
gainFlowChart.oldFlow = flowMap;
// console.log("--gainFlowChart--->",gainFlowChart)
realTimeUpdateFlow(gainFlowChart).then((data: any) => {
// console.log("-new-->",data)
flowMap.value = data.data.flowList;
nextStep.value = data.data.nextStep;
currentProgress.value = data.data.Step;
nodeKey.value = data.data.nodeKey;
// // console.log("-1-->",flowMap.value)
flowLoading.value = false;
});
}
};
/**
@ 作者: 秦东
@ 时间: 2024-04-09 16:50:37
@ 功能: 保存草稿
*/
const saveDraftPage = (type: string, val?: any) => {
if (type === "success") {
}
};
const isFlowTable = ref(false); //
//
const getTaskFormData = () => {
formLoading.value = true;
flowLoading.value = true;
echoTableFormPage({ id: props.formVersion.toString() })
.then(({ data }) => {
// console.log("",data)
if (data.tableFormPage.flowIsOpen == 1 && data.tableFormPage.flowkeystr != "0") {
isFlowTable.value = true;
} else {
isFlowTable.value = false;
}
gainFlowChart.id = data.tableFormPage.flowkeystr;
console.log("表单数据--->1", data.flowPage.flowList);
flowMap.value = data.flowPage.flowList;
state.id = props.versionid;
state.formData = stringToObj(data.tableFormPage.mastesform);
state.formData.config.hideField = []; //:confighideField,
// console.log("tableFlow---echoTableFormPage---data.tableFormPage.mastesform",data.tableFormPage.mastesform)
state.dict = string2json(data.tableFormPage.dict);
state.formData.powerstr = string2json(data.tableFormPage.powerstr);
// judgeSubmitCancel({ name: data.tableFormPage.mastesformjson }).then(
// (datajud: any) => {
// if (datajud.code == 0) {
// if (datajud.data == 3 || datajud.data == 4) {
// state.formData.list.push(submitButton);
// }
// }
// }
// );
})
.finally(() => {
formLoading.value = false;
flowLoading.value = false;
});
};
/**********************************************************
* 关于选择发起人问题 *
* *
***********************************************************/
const treeData = ref<orgform[]>([]);
const tableData = ref<criteriaForPeopleList[]>();
const openManBox = ref(false);
const searchPeopel = reactive({
orgId: 309,
title: "",
page: 1,
pageSize: 8,
total: 50,
});
const defaultProps = {
children: "children",
label: "name",
};
const pickSimMan = reactive({
name: "",
num: "",
userKey: "",
icon: "",
});
const loadPeople = ref(false);
/**
@ 作者: 秦东
@ 时间: 2025-05-08 14:02:21
@ 功能: 搜索人员
*/
const serachPeople = () => {
loadPeople.value = true;
const params = {
pageInfo: {
pageIndex: searchPeopel.page,
pageSize: searchPeopel.pageSize,
},
name: searchPeopel.title,
department: searchPeopel.orgId,
};
getOrgFormUserList(params)
.then(({ data }) => {
tableData.value = data.list;
searchPeopel.total = data.total;
})
.finally(() => {
loadPeople.value = false;
});
};
const searckButPick = () => {
searchPeopel.page = 1;
serachPeople();
};
/**
@ 作者: 秦东
@ 时间: 2025-05-08 10:59:08
@ 功能: 打开发起人选择器
*/
const pickOnePeople = () => {
openManBox.value = true;
getTreeData();
serachPeople();
};
/**
@ 作者: 秦东
@ 时间: 2025-05-08 11:34:32
@ 功能: 关闭弹窗
*/
const handleClose = () => {
openManBox.value = false;
};
/**
@ 作者: 秦东
@ 时间: 2025-05-08 13:52:50
@ 功能: 翻页操作
*/
const fanyeSerace = (val: number) => {
searchPeopel.page = val;
serachPeople();
};
const getTreeData = () => {
// getRequest('deptList', {}).then((res: any) => {
// treeData.value = formatResult(res.data, 'transformDataToChild')
// })
getOrgFormTree({ id: searchPeopel.orgId })
.then(({ data }) => {
// console.log(data)
treeData.value = data.list;
})
.finally(() => {});
};
/**
@ 作者: 秦东
@ 时间: 2025-05-08 15:09:00
@ 功能: 我选中的人
*/
const pickManInfo = (val: any) => {
console.log("我选中的人----------》", val);
gainFlowChart.isRun = 2;
gainFlowChart.userKey = val.userkey;
pickSimMan.name = val.name;
pickSimMan.num = val.number;
pickSimMan.userKey = val.userkey;
pickSimMan.icon = val.icon
? val.icon
: val.icon_photo != null
? val.icon_photo
: squareUrl;
realTimeUpdateFlow(gainFlowChart).then((data: any) => {
// console.log("-new-->",data)
flowMap.value = data.data.flowList;
nextStep.value = data.data.nextStep;
currentProgress.value = data.data.Step;
nodeKey.value = data.data.nodeKey;
// // console.log("-1-->",flowMap.value)
flowLoading.value = false;
});
handleClose();
};
</script>
<template>
<div>
<el-drawer v-model="isShow" title="模拟测试流程" direction="rtl" size="900">
<template #header="{ close, titleId, titleClass }">
<h4 :id="titleId" :class="titleClass">模拟测试流程</h4>
<div>
<el-text v-if="pickSimMan.name != ''"
>当前执行人{{ pickSimMan.name
}}<el-text v-if="pickSimMan.num != ''"
>No.{{ pickSimMan.num }}</el-text
></el-text
>
<el-button type="primary" size="small" @click="pickOnePeople"
>选择发起人</el-button
>
</div>
</template>
<div class="common-layout">
<el-container>
<el-main
class="asMain"
v-loading="formLoading"
element-loading-text="Loading..."
>
<ak-form
ref="formEl"
:numrun="formType"
:form-data="state.formData"
:type="formType"
:dict="state.dict"
request-url="getFormContent"
add-url="saveFormContent"
edit-url="editFormContent"
:before-submit="beforeSubmit"
:after-submit="afterSubmit"
:close-app-submit="closeAppSubmit"
:change-key-val="changeKeyVal"
:save-draft-page="saveDraftPage"
/>
</el-main>
<el-aside
width="300px"
class="asBox"
v-loading="flowLoading"
element-loading-text="Loading..."
>
<el-text size="large">审批流程</el-text>
<FlowStep
v-model:flow-map="flowMap"
:next-step="nextStep"
:current-progress="currentProgress"
:node-key="nodeKey"
/>
</el-aside>
</el-container>
</div>
</el-drawer>
<el-dialog
v-model="openManBox"
title="请选择流程发起人"
width="500"
:before-close="handleClose"
:overflow="true"
>
<el-row>
<el-col :span="24">
<el-row :gutter="5">
<el-col :span="12">
<el-tree-select
v-model="searchPeopel.orgId"
:data="treeData"
node-key="id"
@node-click="handleNodeClick"
:props="defaultProps"
highlight-current
check-strictly
clearable
/>
</el-col>
<el-col :span="8">
<el-input
v-model="searchPeopel.title"
placeholder="请输入姓名或工号"
clearable
/>
</el-col>
<el-col :span="4">
<el-button type="primary" :icon="Search" @click="searckButPick"
>查询</el-button
>
</el-col>
</el-row>
</el-col>
<el-col :span="24">
<el-scrollbar
height="400px"
v-loading="loadPeople"
element-loading-text="Loading..."
>
<div
v-for="item in tableData"
class="userListBox active"
@click="pickManInfo(item)"
>
<el-avatar
shape="square"
:size="40"
:src="
item.icon != ''
? item.icon
: item.icon_photo != null
? item.icon_photo
: squareUrl
"
/>
<el-text class="userText">{{ item.name }}{{ item.number }}</el-text>
</div>
</el-scrollbar>
</el-col>
<el-col :span="24" class="footPage">
<el-pagination
size="small"
layout="prev, pager, next"
:total="searchPeopel.total"
v-model:current-page="searchPeopel.page"
v-model:page-size="searchPeopel.pageSize"
@current-change="fanyeSerace"
/>
</el-col>
</el-row>
<!-- <template #footer>
<div class="dialog-footer">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="handleClose">确定</el-button>
</div>
</template> -->
</el-dialog>
</div>
</template>
<style lang="scss" scoped>
.asBox {
border-left: 1px solid #ececec;
height: calc(100vh - 60px);
padding: 0px 5px;
}
.userListBox {
display: flex;
align-items: center;
cursor: pointer;
width: 100%;
height: 40px;
margin: 10px 0px 0px 0px;
// border-bottom: 1px solid #ececec;
.userText {
margin-left: 10px;
}
}
.userListBox:hover {
background-color: #a0cfff;
}
.footPage {
display: flex;
justify-content: center;
}
</style>

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

@ -19,6 +19,9 @@ import {
judgeFormFlowIsOpen,
openFormFlow,
} from "@/api/workflowapi/index";
import SimulateTaskFlow from "@/views/sysworkflow/lowcodepage/appPage/appPageForm/appFlow/simulateTaskFlow.vue";
import FlowImgSrc from "@/assets/images/3.png";
const props = defineProps({
appCont: {
@ -526,6 +529,16 @@ const closwFormFlow = () => {
// emits('judgeFlowIsEdit', false)
openOrCloseFormFlow(2);
};
/**
@ 作者: 秦东
@ 时间: 2025-05-06 11:32:22
@ 功能: 模拟工作流
*/
const simuIsTrue = ref(false);
const simulateFlow = () => {
simuIsTrue.value = true;
};
</script>
<template>
<el-main class="mainBox">
@ -562,8 +575,8 @@ const closwFormFlow = () => {
<el-icon class="el-icon--left"><Delete /></el-icon>
禁用
</el-button>
<el-button size="small" plain @click="clearCanvas">
<el-icon class="el-icon--left"><Delete /></el-icon>
<el-button size="small" plain @click="simulateFlow">
<el-icon class="el-icon--left"><SetUp /></el-icon>
模拟测试
</el-button>
<el-button size="small" plain @click="clearCanvas">
@ -589,6 +602,12 @@ const closwFormFlow = () => {
</div>
</div>
<div>
<SimulateTaskFlow
v-if="simuIsTrue"
v-model:simu-is-true="simuIsTrue"
:form-version="props.formVersion"
/>
<section class="dingflow-design" style="top: 80px">
<div class="zoom">
<div
@ -695,4 +714,9 @@ const closwFormFlow = () => {
.flowButBox {
padding: 7px 0;
}
.asBox {
border-left: 1px solid #ececec;
height: calc(100vh - 60px);
padding: 0px 5px;
}
</style>

442
src/views/sysworkflow/lowcodepage/pageFlow/tableFlow.vue

@ -27,29 +27,29 @@ import {
import FlowStep from "@/views/taskplatform/taskmanagement/flowStep.vue";
const props = defineProps({
isopen:{
type:Boolean,
default:true
},
versionid:{
type:String,
default:""
},
versiontitle:{
type:String,
default:""
},
drawerwith:{
type:Number,
default:0
},
cfid:{
type:String,
default:""
}
isopen: {
type: Boolean,
default: true,
},
versionid: {
type: String,
default: "",
},
versiontitle: {
type: String,
default: "",
},
drawerwith: {
type: Number,
default: 0,
},
cfid: {
type: String,
default: "",
},
});
const formLoading = ref(false) //loading
const flowLoading = ref(false) //loading
const formLoading = ref(false); //loading
const flowLoading = ref(false); //loading
const flowFactor = reactive<conditionInfo[]>([]); //
const flowMap = ref<any[]>(); //
@ -420,211 +420,231 @@ const closeAppSubmit = () => {
@ 时间: 2024-04-09 16:50:37
@ 功能: 保存草稿
*/
const saveDraftPage = (type: string,val?:any) => {
if (type === 'success') {
emits("searchquery")
if(isFlowTable.value){
if(val.code == 0){
let sendInfo ={
id:val.data.uuid,
flowList:flowMap.value,
state:1
}
startRunFlow(sendInfo)
.then((data:any)=>{
// console.log("--------1---------->",data)
})
}
}
}
closeAppSubmit()
}
const saveDraftPage = (type: string, val?: any) => {
if (type === "success") {
emits("searchquery");
if (isFlowTable.value) {
if (val.code == 0) {
let sendInfo = {
id: val.data.uuid,
flowList: flowMap.value,
state: 1,
};
startRunFlow(sendInfo).then((data: any) => {
// console.log("--------1---------->",data)
});
}
}
}
closeAppSubmit();
};
//liwenxuan 20250206 start
let qrCodeImgInside = ""
const qrCodeInsideDialogFlag = ref(false)
function showFillFormQrCode(){
//,,app,,
//,,,
//cfid
if(state.formData.form.qrCodeFlag==true&&state.formData.form.qrCodeInside==true){
getQrCodeImgInside().then(({ data }) => {
qrCodeImgInside = data
if(qrCodeInsideDialogFlag.value==false){
//console.log(qrCodeImgInside)
qrCodeInsideDialogFlag.value = true
}
})
}else{
alert("请先开启表单二维码功能")
}
let qrCodeImgInside = "";
const qrCodeInsideDialogFlag = ref(false);
function showFillFormQrCode() {
//,,app,,
//,,,
//cfid
if (
state.formData.form.qrCodeFlag == true &&
state.formData.form.qrCodeInside == true
) {
getQrCodeImgInside().then(({ data }) => {
qrCodeImgInside = data;
if (qrCodeInsideDialogFlag.value == false) {
//console.log(qrCodeImgInside)
qrCodeInsideDialogFlag.value = true;
}
});
} else {
alert("请先开启表单二维码功能");
}
}
function getQrCodeImgInside() {
return request({
url: "/javasys/lowCode/QrCode/getQrCodeImgInside",
method: "post",
data: {
cfid: props.cfid,
},
});
return request({
url: "/javasys/lowCode/QrCode/getQrCodeImgInside",
method: "post",
data: {
cfid: props.cfid,
},
});
}
//liwenxuan 20250206 end
function optionsValue3Get3(data: any,fieldName: string){
//console.log("tableFlow","optionsValue3Get3")
if(fieldName.startsWith("childTable---")){
let tableAndFieldNameArr = fieldName.split("---")
for(let i = 0; i < state.formData.list.length; i++){
if(state.formData.list[i].name==tableAndFieldNameArr[1]){
for(let u = 0; u < state.formData.list[i].list.length; u++){
if(state.formData.list[i].list[u].name==tableAndFieldNameArr[2]){
state.formData.list[i].list[u].options = []
for(let j = 0;j<data.length;j++){
state.formData.list[i].list[u].options.push(data[j])
}
}
}
}
}
}else{
for(let i = 0; i < state.formData.list.length; i++){
if(state.formData.list[i].name==fieldName){
state.formData.list[i].options = []
for(let j = 0;j<data.length;j++){
state.formData.list[i].options.push(data[j])
}
}
}
}
function optionsValue3Get3(data: any, fieldName: string) {
//console.log("tableFlow","optionsValue3Get3")
if (fieldName.startsWith("childTable---")) {
let tableAndFieldNameArr = fieldName.split("---");
for (let i = 0; i < state.formData.list.length; i++) {
if (state.formData.list[i].name == tableAndFieldNameArr[1]) {
for (let u = 0; u < state.formData.list[i].list.length; u++) {
if (state.formData.list[i].list[u].name == tableAndFieldNameArr[2]) {
state.formData.list[i].list[u].options = [];
for (let j = 0; j < data.length; j++) {
state.formData.list[i].list[u].options.push(data[j]);
}
}
}
}
}
} else {
for (let i = 0; i < state.formData.list.length; i++) {
if (state.formData.list[i].name == fieldName) {
state.formData.list[i].options = [];
for (let j = 0; j < data.length; j++) {
state.formData.list[i].options.push(data[j]);
}
}
}
}
}
/*
*/
</script>
<template>
<el-drawer v-model="drawerOpenOrClose" v-loading="loadingData" :title="versiontitle" :close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :size="drawbox" class="drawerClass" >
<!-- liwenxuan 20250206 在列表新增数据页增加扫码填单按钮显示填单二维码 start -->
<!-- 自定义抽屉头部 -->
<template #header>
<div v-if="state.formData.form.qrCodeFlag==true&&state.formData.form.qrCodeInside==true" class="drawer-header" >
{{versiontitle}}
<div class="flex-grow"></div>
<el-button size="small" style="margin-right: 15px" @click="showFillFormQrCode" >扫码填单</el-button>
</div>
</template>
<!-- liwenxuan 20250206 在列表新增数据页增加扫码填单按钮显示填单二维码 end -->
<div v-if="isFlowTable" class="common-layout">
<el-container>
<el-main v-loading="formLoading" element-loading-text="Loading...">
<ak-form
ref="formEl"
:numrun="formType"
:form-data="state.formData"
:type="formType"
:dict="state.dict"
request-url="getFormContent"
add-url="saveFormContent"
edit-url="editFormContent"
:before-submit="beforeSubmit"
:after-submit="afterSubmit"
:close-app-submit="closeAppSubmit"
:change-key-val="changeKeyVal"
:save-draft-page="saveDraftPage"
/>
</el-main>
<el-aside v-loading="flowLoading" element-loading-text="Loading..." width="350px" class="flowBox">
<el-text size="large">审批流程</el-text>
<FlowStep v-model:flow-map="flowMap" :next-step="nextStep" :current-progress="currentProgress" :node-key="nodeKey" />
</el-aside>
</el-container>
</div>
<!--无流程表单-->
<div v-else class="common-layout">
<el-drawer
v-model="drawerOpenOrClose"
v-loading="loadingData"
:title="versiontitle"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
:size="drawbox"
class="drawerClass"
>
<!-- liwenxuan 20250206 在列表新增数据页增加扫码填单按钮显示填单二维码 start -->
<!-- 自定义抽屉头部 -->
<template #header>
<div
v-if="
state.formData.form.qrCodeFlag == true &&
state.formData.form.qrCodeInside == true
"
class="drawer-header"
>
{{ versiontitle }}
<div class="flex-grow"></div>
<el-button size="small" style="margin-right: 15px" @click="showFillFormQrCode"
>扫码填单</el-button
>
</div>
</template>
<!-- liwenxuan 20250206 在列表新增数据页增加扫码填单按钮显示填单二维码 end -->
<ak-form
ref="formEl"
v-loading="formLoading" element-loading-text="Loading..."
:form-data="state.formData"
:type="formType"
:numrun="formType"
:dict="state.dict"
request-url="getFormContent"
add-url="saveFormContent"
edit-url="editFormContent"
:before-submit="beforeSubmit"
:after-submit="afterSubmit"
:close-app-submit="closeAppSubmit"
:save-draft-page="saveDraftPage"
@optionsValue3Get3="optionsValue3Get3"
/>
</div>
</el-drawer>
<el-dialog
v-model="qrCodeInsideDialogFlag"
class="glxxsztc"
top="150px"
:close-on-click-modal="false"
title="内部二维码"
:show-close="false"
style="margin-top: 70px"
width="25%"
>
<img :src="qrCodeImgInside" style="width: 80%;height: 50%;" />
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="qrCodeInsideDialogFlag = false">
确定
</el-button>
</div>
</template>
</el-dialog>
<div v-if="isFlowTable" class="common-layout">
<el-container>
<el-main v-loading="formLoading" element-loading-text="Loading...">
<ak-form
ref="formEl"
:numrun="formType"
:form-data="state.formData"
:type="formType"
:dict="state.dict"
request-url="getFormContent"
add-url="saveFormContent"
edit-url="editFormContent"
:before-submit="beforeSubmit"
:after-submit="afterSubmit"
:close-app-submit="closeAppSubmit"
:change-key-val="changeKeyVal"
:save-draft-page="saveDraftPage"
/>
</el-main>
<el-aside
v-loading="flowLoading"
element-loading-text="Loading..."
width="350px"
class="flowBox"
>
<el-text size="large">审批流程</el-text>
<FlowStep
v-model:flow-map="flowMap"
:next-step="nextStep"
:current-progress="currentProgress"
:node-key="nodeKey"
/>
</el-aside>
</el-container>
</div>
<!--无流程表单-->
<div v-else class="common-layout">
<ak-form
ref="formEl"
v-loading="formLoading"
element-loading-text="Loading..."
:form-data="state.formData"
:type="formType"
:numrun="formType"
:dict="state.dict"
request-url="getFormContent"
add-url="saveFormContent"
edit-url="editFormContent"
:before-submit="beforeSubmit"
:after-submit="afterSubmit"
:close-app-submit="closeAppSubmit"
:save-draft-page="saveDraftPage"
@optionsValue3Get3="optionsValue3Get3"
/>
</div>
</el-drawer>
<el-dialog
v-model="qrCodeInsideDialogFlag"
class="glxxsztc"
top="150px"
:close-on-click-modal="false"
title="内部二维码"
:show-close="false"
style="margin-top: 70px"
width="25%"
>
<img :src="qrCodeImgInside" style="width: 80%; height: 50%" />
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="qrCodeInsideDialogFlag = false">
确定
</el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped>
.common-layout{
height: calc(100vh - 55px);
padding: 0 15px;
.el-main{
height: calc(100vh - 55px);
padding:0;
}
.flowBox{
height: calc(100vh - 55px);
border-left: 1px solid #ccc;
padding: 0 15px;
}
.el-header{
padding:0 10px;
line-height:30px;
text-align:right;
font-size:20px;
i{
cursor:pointer;
}
}
.drawer-header {
display: flex;
align-items: center;
//padding: 12px;
}
<style lang="scss" scoped>
.common-layout {
height: calc(100vh - 55px);
padding: 0 15px;
.el-main {
height: calc(100vh - 55px);
padding: 0;
}
.flowBox {
height: calc(100vh - 55px);
border-left: 1px solid #ccc;
padding: 0 15px;
}
.el-header {
padding: 0 10px;
line-height: 30px;
text-align: right;
font-size: 20px;
i {
cursor: pointer;
}
}
.drawer-header {
display: flex;
align-items: center;
//padding: 12px;
}
.flex-grow {
/* 占据剩余的可用空间,将后面的元素推到右边 */
flex-grow: 1;
}
.flex-grow {
/* 占据剩余的可用空间,将后面的元素推到右边 */
flex-grow: 1;
}
.drawer-close {
cursor: pointer;
//margin-left: 8px;
}
.drawer-close {
cursor: pointer;
//margin-left: 8px;
}
}
</style>

Loading…
Cancel
Save