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

335 lines
8.8 KiB

<!--
@ 作者: 秦东
@ 时间: 2024-05-31 09:22:06
@ 备注: 执行表格
-->
<script lang='ts' setup>
import { json2string,objToStringify,string2json,stringToObj } from '@/utils/DesignForm/form'
import { judgeSubmitCancel,gainAppPageInfo,getFieldRecord } from '@/api/DesignForm/requestapi'
import { Edit,Picture as IconPicture } from '@element-plus/icons-vue'
import { appPageDataInit,appWorkFlow } from "@/api/date/type"
import { notAsA_BasisForJudgment,asAnApprovalActionControl,fixedValueControl,timeControl,timeEquation,submitButton, afreshSubmitButton } from '@/utils/workflow/const'
const props = defineProps({
pickAppMenu:{
type:Object,
default(){
return {}
}
}
});
const activePage = ref(0) //默认选择的页面
const appInitData = ref<appPageDataInit>("")
//app表单
const stateForm = reactive<any>({
type: 1, // 1新增;2修改;3查看(表单模式) ;4查看; 5设计
formData: {
list: [],
form: {},
config: {},
powerstr:{}
},
dict: {},
formId: "1",
id: 0,
formId: 0,
versionId: 0,
loading: true
})
//表单列表
const stateList = reactive({
tableData: {
// tableProps: {}, //表格所有参数
columns: [],
config: {},
controlBtn:[],
operateBtn:[]
},
searchData: [],
loading: false,
attrObj: {},
config: {
pageSize:10,
searchIsShow:true,
searchFormIsShow:true,
openPageMode:"drawer"
},
tagList: {},
formId: props.formKey || '',
formList: [], // 所有可选表单数据源
name: '',
treeData: {}, // 左侧树相关
previewVisible: false,
tabsName: 'second',
formFieldList: [], // 表单数据源所有可选字段
formApi:{
type:"1",
addApiUrl:"",
editApiUrl:"",
delApiUrl:"",
lookApiUrl:""
},
dict: {},
refreshTable: true,
view:{
list:{
status:true,
isClick:false,
form:{
sortWord:"",
sortClass:1
}
},
date:{
status:false,
isClick:false,
form:{
startTime:"",
endTime:"",
dayType:1
}
}
,
time:{
status:false,
isClick:false,
form:{
sortWord:"",
sort:1
}
}
,
gantt:{
status:false,
isClick:false,
form:{
startTime:"",
endTime:"",
dayType:2,
sortWord:"",
sort:1
}
}
,
map:{
status:false,
isClick:false,
form:{
mapWord:"",
sortWord:"",
sort:1
}
}
}
})
const appFormTitle = ref("")
const versionTitle = ref<string>("") //表单名称
const versionId = ref<string>("") //表单版本号
const appFlowInfo = ref<appWorkFlow>("") //流程
const isFlow = ref(2)
const mastesformjson = ref("") //
/**
@ 作者: 秦东
@ 时间: 2024-06-03 09:54:30
@ 功能: 加载页面
*/
onMounted(() => {
initLoadData()
});
/**
@ 作者: 秦东
@ 时间: 2024-06-03 09:00:10
@ 功能: 初始化数据
*/
const initLoadData = () => {
console.log("initLoadData",props.pickAppMenu.type,props.pickAppMenu.type != 1)
if(props.pickAppMenu.type != 1){
appFormTitle.value = props.pickAppMenu.label
gainAppPageInfo({id:props.pickAppMenu.id})
.then((data)=>{
console.log("获取初始化表单数据bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",data)
appInitData.value = data.data
console.log("获取初始化表单数据---!",appInitData.value)
mastesformjson.value = data.data.appForm.mastesformjson
isFlow.value = data.data.appForm.flowIsOpen
if (data.data.page && data.data.pageList && data.data.appFlow){
activePage.value = 1
}else if (data.data.page && !data.data.pageList && data.data.appFlow){
activePage.value = 2
}else if (!data.data.page && !data.data.pageList && data.data.appFlow){
activePage.value = 3
}else if (!data.data.page && data.data.pageList && data.data.appFlow){
activePage.value = 1
}else if (data.data.page && !data.data.pageList && !data.data.appFlow){
activePage.value = 2
}else{
activePage.value = 1
}
versionId.value = data.data.appForm.id.toString()
versionTitle.value = data.data.appForm.name
if(data.data.pageList){
let stateData = string2json(data.data.appForm.listjson)
let holeControlAndConfigStateData = string2json(data.data.appForm.mastesformjson)
if(stateData.tableData.columns.length>0){
for(let i = 0;i<stateData.tableData.columns.length;i++){
for(let u = 0;u<holeControlAndConfigStateData.list.length;u++){
if(stateData.tableData.columns[i].id==holeControlAndConfigStateData.list[u].name){
stateData.tableData.columns[i].control = holeControlAndConfigStateData.list[u].control
stateData.tableData.columns[i].config = holeControlAndConfigStateData.list[u].config
}
}
if(stateData.tableData.columns[i].config!=undefined && stateData.tableData.columns[i].control!=undefined){
console.log(stateData.tableData.columns[i])
let paramx:string = ""+stateData.tableData.columns[i].control.optionsValue3Field
/*
在这里请求后台获取字段
*/
getFieldRecord(paramx).then(({ data }) => {
stateData.tableData.columns[i].options = data
if(stateData.searchData.length>0){
for(let j = 0;j<stateData.searchData.length;j++){
console.log(stateData.searchData[j])
if(stateData.searchData[j].id==stateData.tableData.columns[i].id){
stateData.searchData[j].options = data
}
}
}
})
}
}
}
stateList.tableData = stateData.tableData
stateList.searchData = stateData.searchData
stateList.loading = stateData.loading
stateList.attrObj = stateData.attrObj
stateList.config = stateData.config
stateList.tagList = stateData.tagList
stateList.formList = stateData.formList
stateList.name = stateData.name
stateList.treeData = stateData.treeData
stateList.previewVisible = stateData.previewVisible
stateList.formFieldList = stateData.formFieldList
stateList.formApi = stateData.formApi
stateList.dict = stateData.dict
stateList.refreshTable = stateData.refreshTable
stateList.view = stateData.view
}
if(data.data.page){
console.log("data.data.mastesform", data.data)
stateForm.id=data.data.appForm.version.toString()
stateForm.formId =data.data.appForm.cfid.toString()
stateForm.versionId =data.data.appForm.id.toString()
stateForm.formData = stringToObj(data.data.appForm.mastesform)
stateForm.dict = string2json(data.data.appForm.dict)
stateForm.formData.powerstr = string2json(data.data.appForm.powerstr)
console.log("data.data.mastesform", stateForm.formData)
judgeSubmitCancel({"name":data.data.appForm.mastesformjson})
.then((datajud:any) =>{
if(datajud.code == 0){
if (datajud.data == 3 || datajud.data == 4){
stateForm.formData.list.push(submitButton)
}
}
})
}
if(data.data.appFlow){
appFlowInfo.value = data.data.workFlow
}
})
}
}
/**
@ 作者: 秦东
@ 时间: 2024-06-03 09:26:17
@ 功能: 监听菜单数据变化
*/
watch(() => props.pickAppMenu,(val:any) => {
initLoadData()
},{
deep: true
})
function optionsValue3Get3(data: any,fieldName: string){
for(let i = 0; i < stateForm.formData.list.length; i++){
if(stateForm.formData.list[i].name==fieldName){
stateForm.formData.list[i].options = []
for(let j = 0;j<data.length;j++){
stateForm.formData.list[i].options.push(data[j])
}
}
}
}
</script>
<template>
<el-row>
<el-col :span="24" class="pageBox pageHeader">
<el-text class="wordFont">{{ appFormTitle}}</el-text>
</el-col>
<el-col :span="24">
<el-scrollbar class="scroBox">
<el-card class="tispMsg" shadow="always">
<AppPageList v-if="appInitData.pageList"
:data="stateList.tableData"
:search-data="stateList.searchData"
:config="stateList.config"
:form-id="appInitData.appForm.cfid.toString()"
:versionid="appInitData.versionId"
:versiontitle="versionTitle"
:sign-code="appInitData.signCode"
:pickAppMenu="props.pickAppMenu"
:viewPage="stateList.view"
/>
<AppFormPage
v-else
ref="formEl"
:number="props.pickAppMenu.id"
:isWorkFlow="isFlow"
:form-data="stateForm.formData"
:type="1"
:mastesformjson="mastesformjson"
:flowkey="appInitData.flowkey"
:groupid="appInitData.groupid"
:sign-code="appInitData.signCode"
:version-id="appInitData.versionId"
add-url="addData"
@optionsValue3Get3="optionsValue3Get3"
/>
</el-card>
</el-scrollbar>
</el-col>
</el-row>
</template>
<style lang='scss' scoped>
.pageBox{
padding: 0 15px;
.wordFont{
font-size: 20px;
}
}
.pageHeader{
display: flex;
align-items: center;
justify-content: space-between;
background-color: #FFFFFF;
padding:15px 15px 5px 15px;
margin-bottom: 15px;
}
.scroBox{
padding:0 15px;
height: calc(100vh - 110px);
.tispMsg{
margin:0 auto 15px auto;
}
}
</style>