Browse Source

修改显示方式

q_v1
herenshan112 1 month ago
parent
commit
ed080fcbb1
  1. 3
      src/api/lowCode/form/type.ts
  2. 16
      src/utils/pinia/stores/modules/userOrders.ts
  3. 12
      src/views/common/header/formTable/header.vue
  4. 9
      src/views/formTable/page/cardPage.vue
  5. 10
      src/views/formTable/page/cardPageNew.vue
  6. 293
      src/views/formTable/taskList.vue
  7. 8
      src/views/formTable/taskListPage.vue
  8. 19
      src/views/login/index.vue

3
src/api/lowCode/form/type.ts

@ -42,7 +42,8 @@ export interface tableFormStruct {
columns: any[]; columns: any[];
config: Object; config: Object;
controlBtn:any[]; controlBtn:any[];
operateBtn:any[] operateBtn:any[];
columnsCheck?:any;
}, },
searchData: any[]; searchData: any[];
loading: boolean; loading: boolean;

16
src/utils/pinia/stores/modules/userOrders.ts

@ -28,15 +28,23 @@ export const userStror = defineStore("user",() => {
loginApi(val) loginApi(val)
.then((data:any) => { .then((data:any) => {
console.log("登陆使用",data); console.log("登陆使用",data);
userKeying.value = data.data.key; if(data.code != 0){
userToken.value = data.data.token; ElMessage.error(data.msg ||"登录失败");
tokenIng.value = data.data.key; reject(data);
return data
}else{
ElMessage.success(data.msg ||"登录成功");
userKeying.value = data.data.key;
userToken.value = data.data.token;
tokenIng.value = data.data.key;
}
console.log("登陆使用---userKeying----->",userKeying.value,"===>", data.data.key); console.log("登陆使用---userKeying----->",userKeying.value,"===>", data.data.key);
console.log("登陆使用---userToken----->",userToken.value,"===>", data.data.token); console.log("登陆使用---userToken----->",userToken.value,"===>", data.data.token);
console.log("登陆使用---tokenIng----->",tokenIng.value,"===>", data.data.key); console.log("登陆使用---tokenIng----->",tokenIng.value,"===>", data.data.key);
resolve(); resolve(data);
return data return data
}) })
.catch((error:any) => { .catch((error:any) => {

12
src/views/common/header/formTable/header.vue

@ -4,7 +4,7 @@
@ 备注: 自定义应用头部 @ 备注: 自定义应用头部
--> -->
<script lang='ts' setup> <script lang='ts' setup>
import { useRouter } from 'vue-router' import { LocationQueryValueRaw, useRouter } from 'vue-router'
import { menuTree } from '@/api/lowCode/type' import { menuTree } from '@/api/lowCode/type'
const router = useRouter() const router = useRouter()
@ -33,8 +33,9 @@ const props = defineProps({
// //
const emits = defineEmits(["routerPage"]) const emits = defineEmits(["routerPage"])
const activeIndex = ref(1) const activeIndex = ref(1)
const menuList = ref<menuTree[]>(props.menuTree) // const menuList = ref<menuTree[]>(props.menuTree)
const menuDrop = ref(null) // const menuListTree = computed(() => props.menuTree)
// const menuDrop = ref(null) //
/** /**
@ 作者: 秦东 @ 作者: 秦东
@ 时间: 2024-10-30 15:09:45 @ 时间: 2024-10-30 15:09:45
@ -43,6 +44,9 @@ const menuDrop = ref(null) //下拉菜单属性
interface Tree { interface Tree {
type: number
isLock: number
isMain: LocationQueryValueRaw | LocationQueryValueRaw[]
label: string label: string
children?: Tree[] children?: Tree[]
} }
@ -50,7 +54,7 @@ interface Tree {
const handleNodeClick = (data: Tree) => { const handleNodeClick = (data: Tree) => {
console.log(data) console.log(data)
if(data.type!=1){ if(data.type!=1){
menuDrop.value.handleClose() // menuDrop.value.handleClose()
if(data.isLock==1){ if(data.isLock==1){
router.push({ path: "/form_table/taskList",query:{id: props.appKey,class:data.isMain}}); router.push({ path: "/form_table/taskList",query:{id: props.appKey,class:data.isMain}});
} }

9
src/views/formTable/page/cardPage.vue

@ -74,7 +74,7 @@ const appContent = reactive<any>({
}) })
const lookInfo = ref<any>({}) const lookInfo = ref<any>({})
const loadingList = ref(false) // const loadingList = ref(false) //
const taskScrollbar = ref(null) // const taskScrollbar = ref() //
const loadText = ref("数据加载中,请稍后......") const loadText = ref("数据加载中,请稍后......")
const _scrollTop = ref<number>(0) const _scrollTop = ref<number>(0)
const emits = defineEmits(['update:pageIdAry']) const emits = defineEmits(['update:pageIdAry'])
@ -82,7 +82,8 @@ const pageIdAry = ref<any[]>([])
const tableDataList = ref<any[]>([]); // const tableDataList = ref<any[]>([]); //
const state = reactive({ const state = reactive({
page:1, page:1,
pagesize: props.stateListInfo.config?.pageSize || 2 pagesize: props.stateListInfo.config?.pageSize || 2,
loading:false
}) })
const isOne = ref(props.stateListInfo.isOne) const isOne = ref(props.stateListInfo.isOne)
const pageTotal = ref<number>(0) // const pageTotal = ref<number>(0) //
@ -275,7 +276,7 @@ const columns = computed({
get() { get() {
return props.stateListInfo.tableData.columns return props.stateListInfo.tableData.columns
}, },
set(val: formStruct) { set(val: any) {
// emits('update:state', val) // emits('update:state', val)
} }
}); });
@ -724,7 +725,7 @@ const delTask = (val:any) => {
id: [val.masters_key], id: [val.masters_key],
isTrue: 2, isTrue: 2,
}; };
softDeletion(sendData).then((data) => { softDeletion(sendData).then((data:any) => {
ElNotification({ ElNotification({
title: "系统提示!", title: "系统提示!",
message: data.mag ? data.mag : "删除成功", message: data.mag ? data.mag : "删除成功",

10
src/views/formTable/page/cardPageNew.vue

@ -5,14 +5,11 @@
--> -->
<script lang='ts' setup> <script lang='ts' setup>
import request from '@/utils/axios/index' import request from '@/utils/axios/index'
import { gainAppPageInfo,judgeSubmitCancel,gainFormPageListCont,recalSendMsg,tableCusterField } from '@/api/lowCode/form/index' import { recalSendMsg,tableCusterField } from '@/api/lowCode/form/index'
import{ json2string,string2json } from '@/utils/lowCode/form' import{ json2string } from '@/utils/lowCode/form'
import { softDeletion,retractRunWorkFlow } from '@/api/lowCode/taskapi/management' import { softDeletion,retractRunWorkFlow } from '@/api/lowCode/taskapi/management'
import { Picture as IconPicture } from '@element-plus/icons-vue'
import SearchSelect from '@/components/lowCode/selectSearch.vue'
import AppPageInfo from '@/views/formTable/pageInfo.vue' import AppPageInfo from '@/views/formTable/pageInfo.vue'
import { EpPropMergeType } from 'element-plus/es/utils/index.mjs'
const props = defineProps({ const props = defineProps({
@ -476,10 +473,12 @@ const delTask = (val:any) => {
<el-card v-for="item in listPage" :key="item.id" class="taskCardBox" shadow="always"> <el-card v-for="item in listPage" :key="item.id" class="taskCardBox" shadow="always">
<template #header> <template #header>
<div class="card-header contentBetween"> <div class="card-header contentBetween">
<div> <div>
<el-checkbox v-if="item.isMyMsg" label="" :value="item.masters_key" /> <el-checkbox v-if="item.isMyMsg" label="" :value="item.masters_key" />
<span class="cardInfoTitle">{{ item.title }}</span> <span class="cardInfoTitle">{{ item.title }}</span>
</div> </div>
<div v-if="item.flowIsOpens==1" class="carHeadStaus"> <div v-if="item.flowIsOpens==1" class="carHeadStaus">
<el-tag v-if="item.taskStatus==1" type="warning">草稿</el-tag> <el-tag v-if="item.taskStatus==1" type="warning">草稿</el-tag>
@ -487,6 +486,7 @@ const delTask = (val:any) => {
<el-tag v-if="item.taskStatus==3" type="primary">审批中</el-tag> <el-tag v-if="item.taskStatus==3" type="primary">审批中</el-tag>
<el-tag v-if="item.taskStatus==4" type="info">归档</el-tag> <el-tag v-if="item.taskStatus==4" type="info">归档</el-tag>
</div> </div>
</div> </div>
</template> </template>

293
src/views/formTable/taskList.vue

@ -19,38 +19,45 @@ import Header from '@/views/common/header/formTable/header.vue'
import SearchSelect from '@/components/lowCode/selectSearch.vue' import SearchSelect from '@/components/lowCode/selectSearch.vue'
import CardPage from '@/views/formTable/page/cardPage.vue' import CardPage from '@/views/formTable/page/cardPage.vue'
import { getFieldRecord } from '@/api/lowCode'
import { tableButton } from '@/api/common/tableButton'
import { FormInstance } from 'element-plus'
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const appKey = ref<number>(route.query.key) const appKey = ref<string>(String(route.query.key))
const appId = ref<number>(route.query.id) const appId = ref<string>(String(route.query.id))
const taskTitle = ref<number>(route.query.title) const taskTitle = ref<string>(String(route.query.title))
const taskId = ref<number>(route.query.formid) const taskId = ref<string>(String(route.query.formid))
const taskKey = ref<number>(route.query.formKey) const taskKey = ref<string>(String(route.query.formKey))
const listLoading = ref(false) const listLoading = ref(false)
const appInitData = ref<appPageDataInit>("") const appInitData = ref<appPageDataInit>()
const mastesformjson = ref("") // const mastesformjson = ref("") //
const activeName = ref('1') const activeName = ref('1')
const taskScrollbar = ref() //
const loadingList = ref(false) //
const loadText = ref("数据加载中,请稍后......")
const _scrollTop = ref<number>(0)
// //
const stateList = reactive<tableFormStruct>({ const stateList = reactive<tableFormStruct>({
tableData: { tableData: {
// tableProps: {}, // // tableProps: {}, //
columns: [], columns: [],
config: {}, config: {},
controlBtn:[], controlBtn: [],
operateBtn:[] operateBtn: []
}, },
searchData: [], searchData: [],
loading: false, loading: false,
attrObj: {}, attrObj: {},
config: { config: {
pageSize:10, pageSize: 10,
searchIsShow:true, searchIsShow: true,
searchFormIsShow:true, searchFormIsShow: true,
openPageMode:"drawer" openPageMode: "drawer"
}, },
tagList: {}, tagList: {},
formId: taskId || '', formId: taskId || '',
formList: [], // formList: [], //
@ -59,88 +66,88 @@ const stateList = reactive<tableFormStruct>({
previewVisible: false, previewVisible: false,
tabsName: 'second', tabsName: 'second',
formFieldList: [], // formFieldList: [], //
formApi:{ formApi: {
type:"1", type: "1",
addApiUrl:"", addApiUrl: "",
editApiUrl:"", editApiUrl: "",
delApiUrl:"", delApiUrl: "",
lookApiUrl:"" lookApiUrl: ""
}, },
dict: {}, dict: {},
refreshTable: true, refreshTable: true,
view:{ view: {
list:{ list: {
status:true, status: true,
isClick:false, isClick: false,
form:{ form: {
sortWord:"", sortWord: "",
sortClass:1, sortClass: 1,
title:[] title: []
} }
}, },
date:{ date: {
status:false, status: false,
isClick:false, isClick: false,
form:{ form: {
startTime:"", startTime: "",
endTime:"", endTime: "",
dayType:1, dayType: 1,
title:[] title: []
} }
} },
,
time:{ time: {
status:false, status: false,
isClick:false, isClick: false,
form:{ form: {
sortWord:"", sortWord: "",
sort:1, sort: 1,
title:[] title: []
} }
} },
,
gantt:{ gantt: {
status:false, status: false,
isClick:false, isClick: false,
form:{ form: {
startTime:"", startTime: "",
endTime:"", endTime: "",
dayType:2, dayType: 2,
sortWord:"", sortWord: "",
sort:1, sort: 1,
title:[] title: []
} }
} },
,
map:{
status:false,
isClick:false,
form:{
mapWord:"",
sortWord:"",
sort:1,
title:[]
}
},
card:{
status:false,
isClick:false,
form:{
sort:1,
sortWord:"",
imgWork:"",
imgWidth:50,
imgHeight:50,
imgBorderRadius:5,
imgPadding:2,
titleWork:"",
describe:"",
ranks:3,
title:[]
}
}
}
map: {
status: false,
isClick: false,
form: {
mapWord: "",
sortWord: "",
sort: 1,
title: []
}
},
card: {
status: false,
isClick: false,
form: {
sort: 1,
sortWord: "",
imgWork: "",
imgWidth: 50,
imgHeight: 50,
imgBorderRadius: 5,
imgPadding: 2,
titleWork: "",
describe: "",
ranks: 3,
title: []
}
}
},
isOpen: false
}) })
/** /**
@ -317,8 +324,8 @@ const unitIsShow = (val:tableButton,unitName:string) => {
@ 时间: 2024-11-04 13:59:42 @ 时间: 2024-11-04 13:59:42
@ 功能: 功能按钮动作 @ 功能: 功能按钮动作
*/ */
const setUpClick = (val:string,id:string) => { const setUpClick = (val:any) => {
console.log("功能按钮动作",val,"----id----->",id,"-----formId---->") console.log("功能按钮动作",val,"----id----->-----formId---->")
if(val.key == "newAdd"){ if(val.key == "newAdd"){
}else{ }else{
@ -332,7 +339,7 @@ const setUpClick = (val:string,id:string) => {
id: pageIdAry.value, id: pageIdAry.value,
isTrue: 2, isTrue: 2,
}; };
softDeletion(sendData).then((data) => { softDeletion(sendData).then((data: { mag: any }) => {
// console.log('cancel!',data) // console.log('cancel!',data)
ElNotification({ ElNotification({
title: "温馨提示!", title: "温馨提示!",
@ -483,11 +490,76 @@ const getPageData = () => {
const openLook = (val:any) => { const openLook = (val:any) => {
console.log("查看表单详情--->",val) console.log("查看表单详情--->",val)
} }
const transformOption = (val:any,dataVal:any) => {}
/**
@ 作者: 秦东
@ 时间: 2025-12-22 11:10:54
@ 功能: 监听滚动条状态
*/
const onHandleAppTaskScroll = (event:any) => {
console.log("onHandleScroll",loadingList.value, event)
if (loadingList.value === true) {
return
}
let wrapRef = taskScrollbar.value.wrapRef
taskScrollbar.value.moveY = wrapRef.scrollTop * 100 / wrapRef.clientHeight
taskScrollbar.value.moveX = wrapRef.scrollLeft * 100 / wrapRef.clientWidth
let poor = wrapRef.scrollHeight - wrapRef.clientHeight
if (event.scrollTop + 2 >= poor) {
_scrollTop.value = event.scrollTop
loadingList.value=true
state.currentPage++
// console.log("searchInfo.page",searchInfo.page++)
getPageData()
}
}
const requeryList = () => {
console.log("重置查询列表:")
state.currentPage = 1
tableDataList.value = []
nextTick(() => {
getPageData()
})
}
/**
@ 作者: 秦东
@ 时间: 2024-11-06 14:23:25
@ 功能: 删除按钮
*/
const delTask = (val:any) => {
console.log("删除按钮", val,val.masters_key)
ElMessageBox.confirm(
'是否要删除此信息?已经删除将不可恢复!请慎重操作',
'删除提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
let sendData = {
id: [val.masters_key],
tableKey:val.tableKey,
isTrue: 2,
};
softDeletion(sendData).then((data: any) => {
ElNotification({
title: "系统提示!",
message: data.mag ? data.mag : "删除成功",
type: "success",
});
requeryList()
})
})
.catch(() => {})
}
</script> </script>
<template> <template>
<div> <div>
<Header :header-title="taskTitle" :app-key="appKey" menu-tree="" :call-back-click="true" /> <Header :header-title="taskTitle" :app-key="appKey" :call-back-click="true" />
<div ref="container" class="table-list-comm"> <div ref="container" class="table-list-comm">
<div class="contentBetween"> <div class="contentBetween">
@ -502,7 +574,7 @@ const openLook = (val:any) => {
{{ item.label }} {{ item.label }}
</el-button> </el-button>
</div> </div>
<SvgIcon icon-class="search" :size="20" @click="openSearch" /> <SvgIcon icon-class="search" :size="'20px'" @click="openSearch" />
<el-drawer <el-drawer
v-model="drawerOpen" v-model="drawerOpen"
@ -523,7 +595,7 @@ const openLook = (val:any) => {
v-model="item.value" v-model="item.value"
type="datetime" type="datetime"
:placeholder="'请选择'+item.label" :placeholder="'请选择'+item.label"
:shortcuts="shortcuts"
v-if="unitIsShow(item,'time')" v-if="unitIsShow(item,'time')"
/> />
<SearchSelect <SearchSelect
@ -648,24 +720,9 @@ const openLook = (val:any) => {
</table> </table>
</el-card> </el-card>
<el-card class="taskCardBox" shadow="always">
<table>
<tbody @click="openLook(item)">
<tr>
<td class="cardInfoTitle">发起人</td>
<td class="cardInfoTitle"></td>
</tr>
</tbody>
</table>
<div class="cardFoot contentBetween">
<el-checkbox label="" value="Value B" />
<el-button-group>
<el-button type="warning" size="small">修改</el-button>
<el-button type="danger" size="small" @click="delTask(item)">删除</el-button>
</el-button-group>
</div>
</el-card>
</el-checkbox-group> </el-checkbox-group>
<div v-if="loadingList" class="loading">{{loadText}}</div>
</el-scrollbar> </el-scrollbar>
</div> </div>
</template> </template>

8
src/views/formTable/taskListPage.vue

@ -6,14 +6,12 @@
<script lang='ts' setup> <script lang='ts' setup>
import { useRoute,useRouter } from 'vue-router' import { useRoute,useRouter } from 'vue-router'
import request from '@/utils/axios/index' import request from '@/utils/axios/index'
import { appPageDataInit } from '@/api/common/type'
import { tableFormStruct } from '@/api/lowCode/form/type' import { tableFormStruct } from '@/api/lowCode/form/type'
import { gainAppPageInfo,judgeSubmitCancel,gainFormPageListCont } from '@/api/lowCode/form/index' import { gainAppPageInfo,judgeSubmitCancel } from '@/api/lowCode/form/index'
import { inputUnit,timeUnit,choiceUnit,switchUnit,orgUnit,checkboxUnit } from '@/api/lowCode/form/fieldUnit' import { inputUnit,timeUnit,choiceUnit,switchUnit,orgUnit,checkboxUnit } from '@/api/lowCode/form/fieldUnit'
import { useDesignFormStore } from '@/utils/pinia/stores/lowCode/designForm' import{ string2json,stringToObj } from '@/utils/lowCode/form'
import{ json2string,string2json,stringToObj } from '@/utils/lowCode/form'
import{ submitButton,submitFlowButton } from '@/utils/lowCode/const' import{ submitButton,submitFlowButton } from '@/utils/lowCode/const'
import { appWorkFlow,nodePoweInfo,powerAryInfo } from '@/api/workFlow/type' import { appWorkFlow,nodePoweInfo } from '@/api/workFlow/type'
import { softDeletion } from '@/api/lowCode/taskapi/management' import { softDeletion } from '@/api/lowCode/taskapi/management'
import SvgIcon from '@/components/svgIcon/index.vue' import SvgIcon from '@/components/svgIcon/index.vue'

19
src/views/login/index.vue

@ -101,7 +101,8 @@ const submitLoginForm = () => {
loginForm.value.validate((valid: any) => { loginForm.value.validate((valid: any) => {
if (valid) { if (valid) {
userPinia.login(loginInfo) userPinia.login(loginInfo)
.then(()=>{ .then((data:any)=>{
console.log("登陆输出:",data);
const query: LocationQuery = route.query; const query: LocationQuery = route.query;
const redirect = (query.redirect as LocationQueryValue) ?? "/"; const redirect = (query.redirect as LocationQueryValue) ?? "/";
@ -141,14 +142,16 @@ const submitLoginForm = () => {
*/ */
const judgingEnvironment = () => { const judgingEnvironment = () => {
let huanjing = window.navigator.userAgent.toLowerCase() let huanjing = window.navigator.userAgent.toLowerCase()
if( (huanjing.match(/MicroMessenger/i) == 'micromessenger') && (huanjing.match(/wxwork/i) == 'wxwork') ){ const isWechat = huanjing.match(/micromessenger/i) !== null
return 3; const isWxWork = huanjing.match(/wxwork/i) !== null
}else if( huanjing.match(/MicroMessenger/i) == 'micromessenger' ){
return 2; if( isWechat && isWxWork ){
return 3; //
}else if( isWechat ){
return 2; //
}else{ }else{
return 1; return 1; //
} }
return 3;
} }
</script> </script>
<template> <template>
@ -171,7 +174,7 @@ const judgingEnvironment = () => {
<el-input v-model="loginInfo.username" clearable /> <el-input v-model="loginInfo.username" clearable />
</el-form-item> </el-form-item>
<el-form-item label="密码:" prop="password"> <el-form-item label="密码:" prop="password">
<el-input v-model="loginInfo.password" type="password" autocomplete="off" clearable /> <el-input v-model="loginInfo.password" type="password" autocomplete="off" clearable show-password />
</el-form-item> </el-form-item>
<el-form-item label="验证码:" prop="captcha"> <el-form-item label="验证码:" prop="captcha">
<el-row> <el-row>

Loading…
Cancel
Save