Browse Source

Merge branch 'qin_26'

# Conflicts:
#	src/components/DesignForm/public/form/formItem.vue
#	src/components/DesignForm/tableListPage/formPageCont.vue
#	src/widget/number/index.vue
#	src/widget/urllink/index.vue
lwx_v27
herenshan112 3 weeks ago
parent
commit
c3a3824bc8
  1. 1
      package.json
  2. 1
      pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/list
  3. 1
      pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.info
  4. 0
      pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.lock
  5. 3
      pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.mod
  6. BIN
      pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.zip
  7. 1
      pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.ziphash
  8. 1
      pkg/mod/cache/download/golang.org/x/tools/gopls/@v/v0.20.0.info
  9. 9
      pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/golang/vscode-go/survey@v0.1.0
  10. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x165/583
  11. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x171/044
  12. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x171/044.p/15
  13. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x177/332.p/93
  14. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/646
  15. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/668
  16. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/668.p/36
  17. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/692.p/180
  18. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/2/002.p/156
  19. BIN
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/2/002.p/180
  20. 3
      pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/3/000.p/2
  21. 24
      pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/LICENSE
  22. 41
      pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/README.md
  23. 5
      pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/config.json
  24. 3
      pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/go.mod
  25. 9
      pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/survey.go
  26. 4
      src/api/DesignForm/filterUnit.ts
  27. 7
      src/api/DesignForm/flowPower.ts
  28. 6
      src/api/DesignForm/type.ts
  29. 17
      src/api/DesignForm/types.ts
  30. 42
      src/api/role/index.ts
  31. 31
      src/api/role/types.ts
  32. 4
      src/api/taskapi/management.ts
  33. 20
      src/api/taskapi/types.ts
  34. 10
      src/api/workflowapi/index.ts
  35. 14
      src/api/workflowapi/types.ts
  36. 1
      src/assets/icons/dels.svg
  37. 12
      src/components/DesignForm/aceDrawer.vue
  38. 42
      src/components/DesignForm/formControlPropertiNew.vue
  39. 10
      src/components/DesignForm/public/expand/org.vue
  40. 2
      src/components/DesignForm/public/expand/pickpost.vue
  41. 12
      src/components/DesignForm/public/form/childTable.vue
  42. 87
      src/components/DesignForm/public/form/formGroup.vue
  43. 233
      src/components/DesignForm/public/form/formItem.vue
  44. 19
      src/components/DesignForm/tableListPage/formPageCont.vue
  45. 2
      src/components/DesignForm/tableListPage/formPageContApp.vue
  46. 8
      src/components/DesignForm/tableListPage/index.vue
  47. 1276
      src/components/workflow/drwer/approverDrawer copy.vue
  48. 331
      src/components/workflow/drwer/approverDrawer.vue
  49. 40
      src/components/workflow/drwer/copyerSend.vue
  50. 377
      src/components/workflow/drwer/promoterDrawer.vue
  51. 2
      src/components/workflow/nodeWrap.vue
  52. 1
      src/layout/components/Sidebar/index.vue
  53. 7
      src/store/modules/user.ts
  54. 16
      src/views/login/index.vue
  55. 1
      src/views/public/orguser/orgalluser.vue
  56. 14
      src/views/system/monitor/cachelist/index.vue
  57. 14
      src/views/system/monitor/cachemonitor/index.vue
  58. 14
      src/views/system/monitor/datemonitor/index.vue
  59. 169
      src/views/system/monitor/online/index copy 2.vue
  60. 240
      src/views/system/monitor/online/index copy 3.vue
  61. 87
      src/views/system/monitor/online/index copy.vue
  62. 355
      src/views/system/monitor/online/index.vue
  63. 148
      src/views/system/monitor/online/roleConfig/addRoleGroup.vue
  64. 160
      src/views/system/monitor/online/roleConfig/editRoleGroup.vue
  65. 14
      src/views/system/monitor/servicemonitor/index.vue
  66. 14
      src/views/system/monitor/timing/index.vue
  67. 10
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/appFlow/simulateTaskFlow.vue
  68. 2
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/openAppFormPage.vue
  69. 54
      src/views/sysworkflow/lowcodepage/appPage/appPageForm/pageForm.vue
  70. 6
      src/views/sysworkflow/lowcodepage/appPage/createAppFormPage.vue
  71. 24
      src/views/sysworkflow/lowcodepage/pageFlow/appTableFlow.vue
  72. 26
      src/views/sysworkflow/lowcodepage/pageFlow/tableFlow.vue
  73. 1
      src/views/taskplatform/taskmanagement/flowStep.vue
  74. 3
      src/views/taskplatform/taskmanagement/lookFlowInfoApp.vue
  75. 67
      src/widget/associatedforms/index.vue
  76. 67
      src/widget/baidumap/index.vue
  77. 65
      src/widget/baidumap/indexLook.vue
  78. 68
      src/widget/carousel/index.vue
  79. 67
      src/widget/digitpage/index.vue
  80. 63
      src/widget/lowcodeimage/index.vue
  81. 64
      src/widget/lowcodetransfer/index.vue
  82. 61
      src/widget/number/index.vue
  83. 2
      src/widget/org/cont.vue
  84. 68
      src/widget/org/index.vue
  85. 63
      src/widget/orgcitys/index.vue
  86. 164
      src/widget/systemunit/deptOrgPage.vue
  87. 61
      src/widget/systemunit/deptOrgSearch.vue
  88. 62
      src/widget/systemunit/editTime.vue
  89. 61
      src/widget/systemunit/founder.vue
  90. 64
      src/widget/systemunit/founderTime.vue
  91. 67
      src/widget/systemunit/ownerPage.vue
  92. 73
      src/widget/urllink/index.vue
  93. 64
      src/widget/videoupload/index.vue
  94. 67
      src/widget/writingboard/index.vue
  95. 19
      vite.config.ts
  96. 196
      vite.config.ts.timestamp-1760425521146-db754b838977.mjs

1
package.json

@ -124,6 +124,7 @@
"postcss-html": "^1.5.0",
"postcss-scss": "^4.0.6",
"prettier": "^2.8.8",
"rollup-plugin-terser": "^7.0.2",
"sass": "^1.58.3",
"stylelint": "^15.5.0",
"stylelint-config-html": "^1.1.0",

1
pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/list

@ -0,0 +1 @@
v0.1.0

1
pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.info

@ -0,0 +1 @@
{"Version":"v0.1.0","Time":"2025-08-20T21:59:11Z"}

0
pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.lock

3
pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.mod

@ -0,0 +1,3 @@
module github.com/golang/vscode-go/survey
go 1.24.0

BIN
pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.zip

Binary file not shown.

1
pkg/mod/cache/download/github.com/golang/vscode-go/survey/@v/v0.1.0.ziphash

@ -0,0 +1 @@
h1:xb0wfrbGDzAH53rMZHzsRKysbpIE39IbHLf+QSw8VJA=

1
pkg/mod/cache/download/golang.org/x/tools/gopls/@v/v0.20.0.info

@ -0,0 +1 @@
{"Version":"v0.20.0","Time":"2025-07-28T18:28:48Z"}

9
pkg/mod/cache/download/sumdb/sum.golang.org/lookup/github.com/golang/vscode-go/survey@v0.1.0

@ -0,0 +1,9 @@
42389416
github.com/golang/vscode-go/survey v0.1.0 h1:xb0wfrbGDzAH53rMZHzsRKysbpIE39IbHLf+QSw8VJA=
github.com/golang/vscode-go/survey v0.1.0/go.mod h1:67MoCjDPlWMr9FZ2d5BhLYR//kGR/bmjhzjy6FXSM74=
go.sum database tree
45397085
Q08DMHCrmZD7Zsiq5TpsB/JTYZmvPijBiIqUxsz+8fY=
— sum.golang.org Az3grl4BXbPgBbxGJxcshVA2zNKOttFAyV8B6prkb9KDELwGDNlx0asydXInM0hqO92L4lcs/neWYXfoZ3iOd1BLfg8=

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x165/583

Binary file not shown.

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x171/044

Binary file not shown.

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x171/044.p/15

Binary file not shown.

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/0/x177/332.p/93

Binary file not shown.

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/646

Binary file not shown.

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/668

Binary file not shown.

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/668.p/36

Binary file not shown.

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/1/692.p/180

Binary file not shown.

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/2/002.p/156

Binary file not shown.

BIN
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/2/002.p/180

Binary file not shown.

3
pkg/mod/cache/download/sumdb/sum.golang.org/tile/8/3/000.p/2

@ -0,0 +1,3 @@
o
”@m°%q±£T `…ow!^ñ¾Z—{§�Ë�éÐvÍ빜5Ñ1 "sJ®YFØñ Ç
iÂéè¶9Z•Æ9Æ

24
pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/LICENSE

@ -0,0 +1,24 @@
vscode-go
The MIT License (MIT)
Original Work Copyright (c) 2015-2020 Microsoft Corporation
Current Work and Modifications Copyright (c) 2020-present The Go Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

41
pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/README.md

@ -0,0 +1,41 @@
# Go Developer Survey Configuration
This Go module serves the configuration file for the Go Developer Survey shown in the [VS Code Go extension](https://github.com/golang/vscode-go).
## Purpose
This module exists solely to host the `config.json` file. By hosting it as a Go module, it can be fetched via module proxy, providing a reliable and secure way for the VS Code Go extension to get the latest survey configuration.
This approach is inspired by the Go team's telemetry configuration module.
## `config.json`
The `config.json` file defines the parameters for the Go Developer Survey. It has the following structure:
```json
{
"StartDate": "2023-09-01T00:00:00Z",
"EndDate": "2023-10-01T00:00:00Z",
"URL": "https://google.com/survey/url"
}
```
- `StartDate`: The ISO 8601 timestamp for when the survey promotion should start.
- `EndDate`: The ISO 8601 timestamp for when the survey promotion should end.
- `URL`: The URL to the survey.
## Usage
This module is not intended to be used as a library. It is fetched by the VS Code Go extension.
## Tagging
The versioning scheme follows semantic versioning, with each change to the configuration being a **minor** version increment.
As this module is in the `survey/` subdirectory of its repository, the git tag **must** be prefixed with `survey/`. This is a requirement for Go modules located in subdirectories. For more details, see the [Go Modules documentation](https://go.dev/ref/mod#vcs-version).
For example, if the most recent tag is `survey/v0.1.0`, the new tag should be `survey/v0.2.0`.
## Release Process
When changes are made to `config.json`, a new version of this module must be released. This is done by creating a new git tag that follows the convention described above.

5
pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/config.json

@ -0,0 +1,5 @@
{
"StartDate": "2025-09-09T00:00:00Z",
"EndDate": "2025-10-01T00:00:00Z",
"URL": "https://google.qualtrics.com/jfe/form/SV_3wwSstC8vv4Ymkm"
}

3
pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/go.mod

@ -0,0 +1,3 @@
module github.com/golang/vscode-go/survey
go 1.24.0

9
pkg/mod/github.com/golang/vscode-go/survey@v0.1.0/survey.go

@ -0,0 +1,9 @@
// The survey package holds the config.json file defining the Go Developer
// Survey configuration.
//
// The survey configuration specifies the survey's start and end dates, and the
// URL for the survey.
//
// This package contains no actual Go code, and exists only so the config.json
// file can be served by module proxies.
package survey

4
src/api/DesignForm/filterUnit.ts

@ -6,7 +6,7 @@ import { layoutUnit } from "@/api/DesignForm/fieldUnit";
@ 功能: 解析出表单可作为AI变量的元素
*/
const analysisFromUnit = (unitInfo:formStruct) => {
console.log("解析出表单可作为AI变量的元素------------>",unitInfo)
// console.log("解析出表单可作为AI变量的元素------------>",unitInfo)
let optionsInfo = new Array
if(unitInfo.formData&&unitInfo.formData.list && unitInfo.formData.list.length>0 ){
unitInfo.formData.list.forEach((item:any) => {
@ -17,7 +17,7 @@ const analysisFromUnit = (unitInfo:formStruct) => {
//显示子表单字段
if(item.type=="table"){
item.list.forEach(eles => {
item.list.forEach((eles: { label: string; item: { label: string; }; unitName: string; name: any; }) => {
let labelName = ""
if(eles.label){
labelName = eles.label

7
src/api/DesignForm/flowPower.ts

@ -0,0 +1,7 @@
const allNodePwoer = inject('flowNodePower')
const currentNodePowerKey = inject('currentNodeKey')
export const ObtainAuthorization = (key:string,types?:number) => {
console.log("测试是否获取授权-1-->",allNodePwoer)
console.log("测试是否获取授权-2-->",currentNodePowerKey)
}

6
src/api/DesignForm/type.ts

@ -31,8 +31,9 @@ export type CustomerFormPageResult = PageResult<customerFormCont[]>;
//初始化表单基本信息
export interface customerFormConfig{
formname:string;
formName:string;
formlogo:string;
signCode:string;
}
//根据Id获取信息
export interface getContForId{
@ -206,7 +207,8 @@ export interface formTableField{
export interface tableButtonEs {
id?: string;
name?: string;
field?: string;
field?: any;
label?: string;
types?: string;
attribute:string;
pattern?: string;

17
src/api/DesignForm/types.ts

@ -10,9 +10,9 @@ export interface FormList {
tableData?: any // 子表时
options?: Options[] // radio;checkbox;select选项
styles:{
divStyle:{},
labelStyle:{},
inputStyle:{}
divStyle:any,
labelStyle:any,
inputStyle:any
}
}
export interface Options {
@ -118,15 +118,26 @@ export interface formData{
qrCodeOutside:boolean,
qrCodePrintStyle:any,
qrCodeShowFields:any,
labelPosition:string,
dataSource:string,
dataSourceConfig:{
id: string,
dataBaseName: string,
tableName: string,
tableKey: string,
dsn: {},
}
};
config: any;
events?:any;
styles:{
labelPosition:"",
divStyle:{},
labelStyle:{},
inputStyle:{}
};
purview?:any[];
aiConfig?:any[];
}
//表单基本信息
export interface formTableInfo{

42
src/api/role/index.ts

@ -1,6 +1,6 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { RoleQuery, RolePageResult, RoleForm } from './types';
import { RoleQuery, RolePageResult, RoleForm,RoleListTree,orgAndPostisListTree } from './types';
/**
*
@ -119,3 +119,43 @@ export function gainRoleList(data?: any) {
data: data
});
}
//获取角色树
export function giveRoleTree(): AxiosPromise<RoleListTree[]> {
return request({
url: "/systemapi/permission/giveRoleTree",
method: "POST"
});
}
//获取角色组树
export function giveRoleGroupTree(): AxiosPromise<RoleListTree[]> {
return request({
url: "/systemapi/permission/giveRoleGroupTree",
method: "POST"
});
}
//编辑角色
export function editRoleCont(data?: any) {
return request({
url: "/systemapi/permission/editRoleCont",
method: "POST",
data: data
});
}
//修改角色状态
export function editRoleStatus(data?: any) {
return request({
url: "/systemapi/permission/editRoleStatus",
method: "POST",
data: data
});
}
//获取行政组织加岗位树
export function getOrgPostTree(data?: any) : AxiosPromise<orgAndPostisListTree[]> {
return request({
url: "/systemapi/permission/getOrgPostTree",
method: "POST",
data: data
});
}

31
src/api/role/types.ts

@ -76,3 +76,34 @@ export interface RoleForm {
*/
status?: number;
}
export interface RoleListTree{
id:string|number;
label:string;
types:number;
status:boolean;
superior:string|number;
sort:number;
children?:RoleListTree[]
}
//编辑角色信息
export interface RoleFormInfo{
id?:string|number;
name:string;
type:string|number;
superior:string|number;
sort:number;
}
//行政组织加岗位树
export interface orgAndPostisListTree{
id:string|number;
label:string;
types:string;
typeName:string;
status:boolean;
superior:string|number;
key:string;
sort:number;
children?:orgAndPostisListTree[]
}

4
src/api/taskapi/management.ts

@ -77,7 +77,7 @@ export function generateFlow(data: nodeFlow):any{
//获取任务表单内容
export function gainTaskFormInfo(data: customerFormLogo):AxiosPromise<customerFormVersionCont> {
export function gainTaskFormInfo(data: customerFormLogo) {
return request({
url: '/systemapi/task_management/gainTaskFormInfo',
method: 'post',
@ -104,7 +104,7 @@ export function gainEditDataLog(data: any):any{
}
//添加任务是回显表单数据,若有流程回显流程
export function echoTableFormPage(data: any):any{
export function echoTableFormPage(data: any){
return request({
url: '/systemapi/task_management/echoTableFormPage',
method: 'post',

20
src/api/taskapi/types.ts

@ -41,6 +41,7 @@ export interface taskListCont{
//自定义表单标识符
export interface customerFormLogo{
id:string;
runFlowId?:string;
}
//自定义表单版本内容
export interface customerFormVersionCont{
@ -109,3 +110,22 @@ export interface runWeekInfo {
hour:number;
minute:number;
}
//节点赋权
export interface nodePoweInfo {
nodeKey:string;
powerAry:powerAryInfo[];
apiSetup?:apiSetupInfo
}
//节点福泉结构体
export interface powerAryInfo{
id:string;
isEdit:boolean;
isLook:boolean;
name:string;
status?:number
}
//节点福泉补充
export interface apiSetupInfo{
library?:any[];
title?:any[];
}

10
src/api/workflowapi/index.ts

@ -1,5 +1,6 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { powerNoke } from './types';
import {
formTableName,
@ -128,3 +129,12 @@ export function setFlowFormKeyPower(data: any) {
data: data
});
}
//获取所有组件状态
export function analyFormJsonMap(data: any): AxiosPromise<powerNoke> {
return request({
url: '/systemapi/task_flow/analyFormJsonMap',
method: 'post',
data: data
});
}

14
src/api/workflowapi/types.ts

@ -24,3 +24,17 @@ export interface optionsInfo{
label:string;
value:string;
}
export interface powerNoke{
nodeKey:string;
recUnitAry?:powerNokeInfo[]
}
export interface powerNokeInfo{
id: string;
name: string;
status: number;
isLook: boolean;
isEdit: boolean;
sort?: number;
list?:powerNoke[];
}

1
src/assets/icons/dels.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1761099470092" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4835" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M799.2 874.4c0 34.4-28.001 62.4-62.4 62.4H287.2c-34.4 0-62.4-28-62.4-62.4V212h574.4v662.4zM349.6 100c0-7.2 5.6-12.8 12.8-12.8h300c7.2 0 12.8 5.6 12.8 12.8v37.6H349.6V100z m636.8 37.6H749.6V100c0-48.001-39.2-87.2-87.2-87.2h-300c-48 0-87.2 39.199-87.2 87.2v37.6H37.6C16.8 137.6 0 154.4 0 175.2s16.8 37.6 37.6 37.6h112v661.6c0 76 61.6 137.6 137.6 137.6h449.6c76 0 137.6-61.6 137.6-137.6V212h112c20.8 0 37.6-16.8 37.6-37.6s-16.8-36.8-37.6-36.8zM512 824c20.8 0 37.6-16.8 37.6-37.6v-400c0-20.8-16.8-37.6-37.6-37.6s-37.6 16.8-37.6 37.6v400c0 20.8 16.8 37.6 37.6 37.6m-175.2 0c20.8 0 37.6-16.8 37.6-37.6v-400c0-20.8-16.8-37.6-37.6-37.6s-37.6 16.8-37.6 37.6v400c0.8 20.8 17.6 37.6 37.6 37.6m350.4 0c20.8 0 37.6-16.8 37.6-37.6v-400c0-20.8-16.8-37.6-37.6-37.6s-37.6 16.8-37.6 37.6v400c0 20.8 16.8 37.6 37.6 37.6" fill="" p-id="4836"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

12
src/components/DesignForm/aceDrawer.vue

@ -74,7 +74,7 @@ const jiShuDiGui = (val: []) => {
if (!Array.isArray(val)) return (jibuqi = 0);
val.forEach((item: any) => {
jibuqi++;
console.log("递归查数", jibuqi);
// console.log("", jibuqi);
if (item.children && item.children.length > 0) {
jiShuDiGui(item.children);
}
@ -113,7 +113,7 @@ const drawerBeforeClose = () => {
treeSelectAry.value = [];
};
onMounted(() => {
console.log("预览视图--------------------------------》", props.data);
// console.log("--------------------------------", props.data);
});
onUnmounted(() => {
if (Object.keys(editor.value).length !== 0) {
@ -217,7 +217,7 @@ const dialogConfirmTree = () => {
// })
// emits('confirm', treeSelectAry)
console.log("回填主表值", treeSelectAry.value);
// console.log("", treeSelectAry.value);
emits("confirmTree", treeSelectAry.value, props.data.type);
drawerBeforeClose();
};
@ -227,9 +227,9 @@ const dialogConfirmTree = () => {
@ 功能: 删除指定节点数据
*/
const pickDel = (val: treeStruct) => {
console.log("要删除得节点-->", val.value);
// console.log("-->", val.value);
delDiGui(treeSelectAry.value, val);
console.log("删除指定节点数据---结果-->", treeSelectAry);
// console.log("----->", treeSelectAry);
};
/**
@ 作者: 秦东
@ -237,7 +237,7 @@ const pickDel = (val: treeStruct) => {
@ 功能: 执行递归删除
*/
const delDiGui = (tree: treeStruct[], val: treeStruct) => {
console.log("要删除得节点-11->", tree, val.value);
// console.log("-11->", tree, val.value);
for (let i = 0; i < tree.length; i++) {
const node = tree[i];
if (node.value == val.value) {

42
src/components/DesignForm/formControlPropertiNew.vue

@ -1429,7 +1429,7 @@ const getPropByPath = (obj: any, path: string, val: any) => {
}
}
// liwenxuan end 250410
console.log("修改指定路径下的值", keyArr, tempObj);
// console.log("", keyArr, tempObj);
let i = 0;
for (i; i < keyArr.length - 1; i++) {
const key = keyArr[i];
@ -1623,12 +1623,12 @@ const openAttrDialog = (type?: string, tooltip?: string) => {
console.log("更多属性弹窗", controlData.value);
switch (type) {
case "treeSelect":
console.log("更多属性弹窗", controlData.value.control.data);
// console.log("", controlData.value.control.data);
editData = controlData.value.control.data;
break;
case "cascader":
console.log("更多属性级联", controlData.value.options);
// console.log("", controlData.value.options);
editData = controlData.value.options;
break;
case "optionsParams": //
@ -1647,12 +1647,12 @@ const openAttrDialog = (type?: string, tooltip?: string) => {
callback: (result: any) => {
switch (type) {
case "treeSelect":
console.log("更多属性弹窗会写数据:", result);
// console.log("", result);
controlData.value.control.data = result;
console.log(
"更多属性弹窗会写数据-----1------>:",
controlData.value.control.data
);
// console.log(
// "-----1------>",
// controlData.value.control.data
// );
break;
case "cascader":
controlData.value.options = result;
@ -1895,8 +1895,8 @@ const isNotWrite = (val: any) => {
return false;
};
const isNotWriteWord = (val: any) => {
console.log("isNotWriteWord---->", val);
console.log("isNotWriteWord--formField-->", props.formField);
// console.log("isNotWriteWord---->", val);
// console.log("isNotWriteWord--formField-->", props.formField);
if (
val.eventName === "filedNameKey" &&
props.customerformid != "" &&
@ -1921,7 +1921,7 @@ const formListmap = ref<any>();
const subUnit = ref<any>();
//
const digitPageSub = (val: any, envt: any) => {
console.log("默认值处理--->", val, envt, props.formData);
// console.log("--->", val, envt, props.formData);
// console.log("-1-->",props.formList)
// console.log("-2-->",props.formConfig)
@ -2161,7 +2161,7 @@ function haveOrgTreeInfo() {
//orgTreeLoading.value = true;
getOrgTreeList({ orgid: 309 })
.then(({ data }) => {
console.log("行政组织树对照值", data);
// console.log("", data);
@ -2993,7 +2993,7 @@ function associatedFormsHideDialoghandle() {
controlData.value.control.hideConditionHtmlCopy =
controlData.value.control.hideConditionHtml;
nextTick(() => {
aft.value.focusEditor();
aft.value.focusEditor
});
}
@ -3496,8 +3496,8 @@ watch(
)
);
} else {
console.log(changedOptions);
console.log(controlData.value.control.glxxsz);
// console.log(changedOptions);
// console.log(controlData.value.control.glxxsz);
for (var i = 0; i < changedOptions.length; i++) {
if (controlData.value.control.glxxsz[i] === undefined) {
//option
@ -3923,7 +3923,7 @@ const requiredText = (val: any) => {
@ 功能: 校验文本框改变
*/
const requiredTextRadio = (val: any) => {
console.log("校验文本框改变-->", val);
// console.log("-->", val);
if (val.type == radioVerify.type) {
if (typeof controlData.value.customRules == "object") {
if (Array.isArray(controlData.value.customRules)) {
@ -3992,7 +3992,7 @@ const requiredChangeSet = (val: boolean) => {
@ 功能: 单选改变事件
*/
const radioChangeSet = (val: any) => {
console.log("单选改变事件-222-->", val);
// console.log("-222-->", val);
let pickRadio = {};
let isTrue = true;
textUinrVerfy.forEach((item: any) => {
@ -4056,7 +4056,7 @@ watch(
// }
});
} else {
console.log("formData.value---------------", formData.value);
// console.log("formData.value---------------", formData.value);
if (formData.value.dataSourceConfi) {
formData.value.dataSourceConfig.id = "";
formData.value.dataSourceConfig.dataBaseName = "";
@ -4072,7 +4072,7 @@ watch(
}
formAttr.value.forEach((item) => {
console.log(item.label, "item.", item.type);
// console.log(item.label, "item.", item.type);
if (!item.hide) {
if (!item.type) {
// console.log(item.label, "item.", item.type);
@ -4269,7 +4269,7 @@ function resetClick(){
function delRowClick(param: any){
let key = param.key
console.log(key)
// console.log(key)
controlData.value.control.roleCheckDataList = controlData.value.control.roleCheckDataList.filter((item: { key: any; }) => item.key !== key);
let arr: any[] = []
controlData.value.control.roleCheckDataList.forEach((element: { key: string; }) => {
@ -4316,7 +4316,7 @@ const closeDataSource = () => {
*/
// const dataList = ref<dataBaseStruct[]>([]);
const updataBase = (val: any) => {
console.log("设定关联数据", val);
// console.log("", val);
formData.value.dataSourceConfig.id = val.id;
formData.value.dataSourceConfig.dataBaseName = val.dataBaseName;
formData.value.dataSourceConfig.tableName = val.tableName;

10
src/components/DesignForm/public/expand/org.vue

@ -11,7 +11,7 @@ const props = withDefaults(
defineProps<{
modelValue?: string;
disabled?: boolean;
data?: Object;
data?: any;
}>(),
{}
);
@ -24,7 +24,7 @@ const value = computed({
if(hasComma(props.modelValue)||multiple){
return commaStringToNumberArray(props.modelValue)
}else{
return props.modelValue * 1;
return props.modelValue;
}
} else {
return props.modelValue;
@ -131,13 +131,13 @@ function haveOrgTreeInfo() {
orgTreeLoading.value = true;
getOrgTreeList({ orgid: 309 })
.then(({ data }) => {
console.log("行政组织树对照值", data);
// console.log("", data);
//liwenxuan 250916 start
// IDIDididid
const targetIds = props.data.control.range
console.log(targetIds)
// console.log(targetIds)
if(targetIds&&targetIds.length>0){
//
const filteredTree = filterOrganizationTree(data, targetIds);
@ -233,7 +233,7 @@ function filterChildTargetIds(targetIds: any[], nodeMap: Map<any, any>) {
// ID
while (parentId !== undefined && nodeMap.has(parentId)) {
if (validTargetIds.includes(parentId)) {
console.log(`提示:ID ${currentId} 是目标ID ${parentId} 的子节点,已忽略`);
// console.log(`ID ${currentId} ID ${parentId} `);
return false; // ID
}
parentId = nodeMap.get(parentId).superior; //

2
src/components/DesignForm/public/expand/pickpost.vue

@ -71,7 +71,7 @@ function haveOrgTreeInfo() {
orgTreeLoading.value = true;
getOrgTreeList({ orgid: 309 })
.then(({ data }) => {
console.log("行政组织树对照值", data);
// console.log("", data);
orgTreeList.value = data;
})
.finally(() => {

12
src/components/DesignForm/public/form/childTable.vue

@ -63,7 +63,7 @@ onMounted(()=>{
}
})
const addColumn = () => {
console.log("如果编辑页禁用时--------->", tableDataNew.value);
// console.log("--------->", tableDataNew.value);
const temp: any = {};
if (props.data.list) {
props.data.list.forEach((item: any) => {
@ -71,15 +71,15 @@ const addColumn = () => {
temp[item.name] = item.control.modelValue;
}
});
console.log("如果编辑页禁用时-------temp:", temp);
console.log("如果编辑页禁用时-------jsonParseStringify:", jsonParseStringify(temp));
// console.log("-------temp:", temp);
// console.log("-------jsonParseStringify:", jsonParseStringify(temp));
tableDataNew.value.push(jsonParseStringify(temp));
}
};
const getText = (text: any, val: any, name: any) => {
console.log("text===>", text);
console.log("name===>", name);
console.log("val===>", val);
// console.log("text===>", text);
// console.log("name===>", name);
// console.log("val===>", val);
if (typeof text === "string") {
return text;
} else {

87
src/components/DesignForm/public/form/formGroup.vue

@ -16,7 +16,8 @@ import { constFormBtnEvent, constFormProps } from "@/api/DesignForm/utils";
import { Md5 } from "ts-md5";
import { jsonParseStringify } from "@/utils/DesignForm";
import request from "@/utils/request";
import { AnalysisCss } from "@/components/DesignForm/public/form/calculate/cssInfo.ts";
import { AnalysisCss } from "@/components/DesignForm/public/form/calculate/cssInfo";
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
@ -53,7 +54,7 @@ watch(
() => props.data,
(v: FormList[]) => {
dataList.value = v;
console.log("监听表单变化++++++++++>", v);
// console.log("++++++++++>", v);
},
{
deep: true,
@ -143,11 +144,11 @@ const draggableAdd = (evt: any) => {
const key = new Date().getTime().toString();
const obj: any = dataList.value[newIndex];
const isNested = evt.target && evt.target.getAttribute("data-type"); //
console.log("设计拖拽事件-----1------->", newIndex);
console.log("设计拖拽事件-----2------->", key);
console.log("设计拖拽事件-----3------->", obj);
console.log("设计拖拽事件-----4------->", isNested);
console.log("设计拖拽事件-----4------->", dataList.value);
// console.log("-----1------->", newIndex);
// console.log("-----2------->", key);
// console.log("-----3------->", obj);
// console.log("-----4------->", isNested);
// console.log("-----4------->", dataList.value);
if (
(isNested === "not-nested" && notNested(obj.type)) ||
((isNested === "not-table" || isNested === "not-flex") &&
@ -273,7 +274,7 @@ const groupClick = (item: any, ele?: string) => {
state.gridAdd = item.type === "grid";
// state.clone = !notNested(item.type)
state.clone = !notNestedTableFlex(item.type);
console.log("点击激活当前--->", store);
// console.log("--->", store);
};
//
const getFormItemStyle = (ele: FormList) => {
@ -494,7 +495,7 @@ function asfValueChanged(val: any) {
fillFieldsChild = fillFieldsChild.filter((element: any) => {
if (containsDangerousWords(element.filterCondition.gongShi.mathsFormula)) {
//alert("")
console.log("筛选条件非法===>" + element.filterCondition.conditionHtml);
// console.log("===>" + element.filterCondition.conditionHtml);
} else {
return element;
}
@ -752,6 +753,48 @@ function optionsValue3GetTable(data: any, fieldName: string) {
/*
*/
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
</script>
<template>
<draggable
@ -781,33 +824,37 @@ function optionsValue3GetTable(data: any, fieldName: string) {
v-if="linksIf(element)"
>
<!--选项卡组件-->
<template v-if="element.type === 'tabs'">
<template v-if="element.type === 'tabs' ">
<div class="form-tabs">
<el-tabs v-bind="element.control" :class="[element.config?.className]">
<template v-for="(item, tIndex) in element.columns">
<el-tab-pane
v-for="(item, tIndex) in element.columns"
:label="item.label"
:key="tIndex"
v-if="judgeIsShow(item.name)"
>
<form-group :data="item.list" data-type="not-nested" :org-and-man-tree="orgAndManTree" />
</el-tab-pane>
</template>
</el-tabs>
</div>
</template>
<!--标题组件-->
<template v-else-if="element.type === 'title'">
<template v-else-if="element.type === 'title' && judgeIsShow(element.name)">
<div
class="title"
:class="[element.config.className]"
v-bind="element.control"
:style="getFormItemLableStyle(element.styles)"
>
<span v-html="element.control.modelValue"></span>
<Tooltips :content="element.config.help" v-if="element.config.help" />
</div>
</template>
<!--文字组件-->
<template v-else-if="element.type === 'txt'">
<template v-else-if="element.type === 'txt' && judgeIsShow(element.name)">
<div
v-bind="element.control"
:class="[element.config.className]"
@ -815,7 +862,7 @@ function optionsValue3GetTable(data: any, fieldName: string) {
></div>
</template>
<!--表格组件-->
<template v-else-if="element.type === 'table'">
<template v-else-if="element.type === 'table' && judgeIsShow(element.name)">
<div class="form-table" v-if="type === 5">
{{ element.item ? (element.item.label ? element.item.label : 2) : 3 }}
<!-- <form-group :data="element.list" data-type="not-nested" /> -->
@ -831,7 +878,7 @@ function optionsValue3GetTable(data: any, fieldName: string) {
/>
</template>
<!--格栅布局-->
<template v-else-if="element.type === 'grid'">
<template v-else-if="element.type === 'grid' && judgeIsShow(element.name)">
<el-row
class="form-row"
:style="type === 5 ? 'padding: 0 0 20px 0;' : ''"
@ -862,7 +909,8 @@ function optionsValue3GetTable(data: any, fieldName: string) {
</el-row>
</template>
<!--卡片布局-->
<template v-else-if="element.type === 'card'">
<template v-else-if="element.type === 'card' && judgeIsShow(element.name)">
<el-collapse model-value="1">
<el-collapse-item :title="element.item.label" name="1">
<template #title v-if="element.help">
@ -874,13 +922,13 @@ function optionsValue3GetTable(data: any, fieldName: string) {
</el-collapse>
</template>
<!--分割线-->
<template v-else-if="element.type === 'divider'">
<template v-else-if="element.type === 'divider' && judgeIsShow(element.name)">
<el-divider v-bind="element.control">{{
element.item && element.item.label
}}</el-divider>
</template>
<!--div容器-->
<template v-else-if="element.type === 'div'">
<template v-else-if="element.type === 'div' && judgeIsShow(element.name)">
<div
class="div-layout"
v-bind="element.control"
@ -894,7 +942,8 @@ function optionsValue3GetTable(data: any, fieldName: string) {
</div>
</template>
<!--弹性布局-->
<template v-else-if="element.type === 'flex'">
<template v-else-if="element.type === 'flex' && judgeIsShow(element.name)" >
<!-- <form-group
:data="element.list"
data-type="not-nested"

233
src/components/DesignForm/public/form/formItem.vue

@ -58,11 +58,13 @@ import TextImg from "@/assets/image/tinymce.png";
import {
AnalysisCss,
AnalysisInputCss,
} from "@/components/DesignForm/public/form/calculate/cssInfo.ts";
} from "@/components/DesignForm/public/form/calculate/cssInfo";
import request from "@/utils/request";
import { getgovcont } from "@/api/hr/org/index";
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
@ -76,6 +78,7 @@ const props = withDefaults(
numrun?: any;
rowIndex?: any;
orgAndManTree?: any;
alldata?:any;
}>(),
{}
);
@ -631,6 +634,29 @@ const getFormItemInputStyle = (ele: any, sty: number) => {
};
const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API + "/api/upordown";
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
// console.log("--nodeKey-->", currentNodePowerKey);
// console.log("--purview-->", allNodePwoer);
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2024-07-27 14:17:16
@ -639,56 +665,75 @@ const imgUploadApiUrl = import.meta.env.VITE_APP_BASE_API + "/api/upordown";
const judgeIsShow = (key: string) => {
// console.log("--nodeKey-->", props.nodeKey);
// console.log("--purview-->", props.purview);
if (
props.nodeKey != undefined &&
props.purview != undefined &&
props.purview != null &&
props.purview != null &&
props.purview != "" &&
props.purview != ""
) {
if (props.purview.length < 1) {
return true;
} else {
let isShow = false;
if (Array.isArray(props.purview)) {
props.purview.forEach((item) => {
// console.log("--purview-->", item.nodeKey , props.nodeKey);
if (item.nodeKey == props.nodeKey) {
if (item.powerAry && item.powerAry.length > 0) {
item.powerAry.forEach((itm) => {
if (itm.id == key) {
// console.log(
// "",
// itm,
// itm.id == key,
// "--------->",
// itm.isLook
// );
isShow = itm.isLook;
}
});
}
}
});
}
return isShow;
}
} else {
return true;
let myPower = curNodePowerAry()
// console.log("-3-->",key)
// console.log("-4-->",myPower)
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
// if (
// props.nodeKey != undefined &&
// props.purview != undefined &&
// props.purview != null &&
// props.purview != null
// ) {
// if (props.purview.length < 1) {
// return true;
// } else {
// let isShow = false;
// if (Array.isArray(props.purview)) {
// props.purview.forEach((item) => {
// // console.log("--purview-->", item.nodeKey , props.nodeKey);
// if (item.nodeKey == props.nodeKey) {
// if (item.powerAry && item.powerAry.length > 0) {
// item.powerAry.forEach((itm: { id: string; isLook: boolean; }) => {
// if (itm.id == key) {
// // console.log(
// // "",
// // itm,
// // itm.id == key,
// // "--------->",
// // itm.isLook
// // );
// isShow = itm.isLook;
// }
// });
// }
// }
// });
// }
// return isShow;
// }
// } else {
// return true;
// }
};
/**
@ 作者: 秦东
@ 时间: 2024-07-27 15:11:42
@ 功能: 判断是否禁用
*/
const judgeIsDisabled = (key: string) => {
// console.log("", key);
// console.log("", key);
// console.log("-1-->",allNodePwoer)
// console.log("-2-->",currentNodePowerKey)
if (type.value === 3) {
return true; //
}
@ -699,48 +744,62 @@ const judgeIsDisabled = (key: string) => {
return true; //
}
// console.log("-------props.nodeKey----------->", props.purview);
if (
props.nodeKey != undefined &&
props.purview != undefined &&
props.purview != null &&
props.purview != null &&
props.purview != "" &&
props.purview != ""
) {
if (props.purview.length < 1) {
return false;
} else {
let isShow = true;
props.purview.forEach((item) => {
if (item.nodeKey == props.nodeKey) {
if (item.powerAry && item.powerAry.length > 0) {
item.powerAry.forEach((itm) => {
if (itm.id == key) {
// console.log(
// "",
// itm,
// itm.id == key,
// "--------->",
// itm.isLook
// );
isShow = !itm.isEdit;
}
});
}
}
});
return isShow;
}
} else {
return false;
let myPower = curNodePowerAry()
// console.log("-3-->",myPower)
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
// if (
// props.nodeKey != undefined &&
// props.purview != undefined &&
// props.purview != null &&
// props.purview != null
// ) {
// if (props.purview.length < 1) {
// return false;
// } else {
// let isShow = true;
// props.purview.forEach((item) => {
// if (item.nodeKey == props.nodeKey) {
// if (item.powerAry && item.powerAry.length > 0) {
// item.powerAry.forEach((itm: { id: string; isEdit: any; }) => {
// if (itm.id == key) {
// // console.log(
// // "",
// // itm,
// // itm.id == key,
// // "--------->",
// // itm.isLook
// // );
// isShow = !itm.isEdit;
// }
// });
// }
// }
// });
// return isShow;
// }
// } else {
// return false;
// }
};
/**
@ 作者: 秦东
@ 时间: 2024-08-02 13:02:49
@ 功能: 将时间戳转换成字符串
*/
const timeToString = (timeVal: any, types: int) => {
const timeToString = (timeVal: any, types: string) => {
// console.log("",timeVal,types)
let timeStr = "";
if (Array.isArray(timeVal)) {
@ -758,8 +817,8 @@ const timeToString = (timeVal: any, types: int) => {
timeStr = `${startTime.year}-${startTime.month}-${startTime.day} ${startTime.hours}:${startTime.minutes}:${startTime.seconds}${endTime.year}-${endTime.month}-${endTime.day} ${endTime.hours}:${endTime.minutes}:${endTime.seconds}`;
break;
case "week": //
let startWeek = getYearWeek(startTime);
let endWeek = getYearWeek(endTime);
let startWeek = getYearWeek(timeVal[0]);
let endWeek = getYearWeek(timeVal[1]);
timeStr = `${startWeek}${endWeek}`;
break;
case "timeCalss": //
@ -791,7 +850,7 @@ const timeToString = (timeVal: any, types: int) => {
timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
break;
case "week": //
timeStr = getYearWeek(timeVal);
timeStr = getYearWeek(timeVal[0]).toString();
break;
case "timeCalss": //
timeStr = `${hours}:${minutes}:${seconds}`;
@ -816,7 +875,7 @@ const timeToString = (timeVal: any, types: int) => {
timeStr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
break;
case "week": //
timeStr = getYearWeek(timeVal);
timeStr = getYearWeek(timeVal*1).toString();
break;
case "timeCalss": //
timeStr = `${hours}:${minutes}:${seconds}`;
@ -859,7 +918,7 @@ const timeToAry = (timestamp: number) => {
const getYearWeek = (timestamp: number) => {
const date = new Date(timestamp);
const firstDayOfYear = new Date(date.getFullYear(), 0, 1);
const pastDaysOfYear = (date - firstDayOfYear) / 86400000;
const pastDaysOfYear = (date.getTime() - firstDayOfYear.getTime()) / 86400000;
const weekNumber = Math.ceil((pastDaysOfYear + firstDayOfYear.getDay() + 1) / 7);
return weekNumber;
};
@ -887,7 +946,7 @@ const judgeRadio = (val: any, list: any) => {
@ 功能: 判断多选值
*/
const judgeCheckbox = (val: any, list: any) => {
let valAry = [];
let valAry: any[] = [];
if (Array.isArray(val)) {
if (val.length > 0) {
if (Array.isArray(list)) {
@ -910,7 +969,7 @@ const judgeCheckbox = (val: any, list: any) => {
*/
const selectValue = (val: any, list: any) => {
// console.log("",val,list)
let valAry = [];
let valAry: any[] = [];
if (val && val != "" && val != null) {
let pickSelect = val;
if (Array.isArray(val)) {
@ -991,7 +1050,7 @@ const uploadPic = (val: any) => {
@ 时间: 2024-11-29 13:46:36
@ 功能: 获取级联选择值
*/
const judjeCascader = (val: any[], options: any[]) => {
const judjeCascader = (val: any, options: any) => {
// console.log("val===========>", val);
if (val == "" || val == undefined || val == null) return "";
if (val && val.length < 0) return "";
@ -1043,6 +1102,8 @@ const diGuiJilian = (val: any, options: any[]) => {
});
return dataVal;
};
</script>
<template>
<BaiduMap
@ -1283,7 +1344,7 @@ const diGuiJilian = (val: any, options: any[]) => {
:type="data.type === 'password' ? 'password' : 'text'"
:style="getFormItemInputStyle(configStyle, 2)"
:input-style="getFormItemInputStyle(configStyle, 3)"
v-if="['input', 'password'].includes(data.type)"
v-if="['input', 'password'].includes(data.type) || judgeIsShow(data.name)"
@change="onValueChange(data.type)"
:placeholder="
data.control.placeholder

19
src/components/DesignForm/tableListPage/formPageCont.vue

@ -36,6 +36,7 @@ import { constFormBtnEvent, constFormProps } from "@/api/DesignForm/utils";
import RunFlowStep from "@/views/taskplatform/taskmanagement/runFlowStep.vue";
import { customerFormVersionCont } from "@/api/taskapi/types";
import { stringify } from "uuid";
import { nodePoweInfo } from "@/api/taskapi/types";
const props = defineProps({
isShow: {
@ -73,6 +74,9 @@ const formLoading = ref(false);
const flowAry = ref<any[]>(); //
const currentProgress = ref<number>(1); //
const runstep = ref(null);
const nodeKey = ref<string>("");
const currterNodePower = ref<nodePoweInfo[]>([])
//ID
const openOfClose = computed({
get() {
@ -279,7 +283,7 @@ let gainTaskFormInfoPromise: any[] = [];
*/
const getCustomrrFormInfo = () => {
gainTaskFormInfoPromise.push(
gainTaskFormInfo({ id: props.pageInfo.masters_key })
gainTaskFormInfo({ id: props.pageInfo.masters_key,runFlowId: props.pageInfo.runFlowId })
.then(({ data }) => {
//console.log(data)
//console.log(formState.formData.list)
@ -305,6 +309,11 @@ const getCustomrrFormInfo = () => {
gainTaskFormInfoData = data;
nodeKey.value = data.nodeKey?data.nodeKey:"";
if(data.structure.powerAry && Array.isArray(data.structure.powerAry) && data.structure.powerAry.length > 0){
currterNodePower.value = data.structure.powerAry
}
// console.log("------------>",data)
/* // console.log("获取自定义表单内容",data,data.structure)
formState.formData = stringToObj(data.structure.mastesform)
// console.log("--->",formState)
@ -331,6 +340,11 @@ const getCustomrrFormInfo = () => {
}
// console.log("------------>",changeFlowPick.value)
if(data.tableFormPage.powerAry && Array.isArray(data.tableFormPage.powerAry) && data.tableFormPage.powerAry.length > 0){
currterNodePower.value = data.tableFormPage.powerAry
}
nextTick(()=>{
// console.log("-1111-->",data.tableData)
formEl.value.setValue(data.tableData)
@ -447,6 +461,9 @@ function optionsValue3Get3(data: any, fieldName: any) {
//console.log("formPageCont","optionsValue3Get3")
emits("optionsValue4Get4", data, fieldName);
}
provide('flowNodePower', currterNodePower)
provide('currentNodeKey', nodeKey)
</script>
<template>
<el-drawer

2
src/components/DesignForm/tableListPage/formPageContApp.vue

@ -93,7 +93,7 @@ const pageLog = ref<any[]>([])
@ 功能: 获取自定义表单内容
*/
const getCustomrrFormInfo = () => {
gainTaskFormInfo({id:props.pageInfo.mastersKeyStr})
gainTaskFormInfo({id:props.pageInfo.mastersKeyStr,runFlowId: props.pageInfo.runFlowId })
.then(({data})=>{
// console.log("",data,data.structure)
formState.formData = stringToObj(data.structure.mastesform)

8
src/components/DesignForm/tableListPage/index.vue

@ -859,7 +859,7 @@ const selectionChange = (row: any) => {
@ 功能: 获取表格头内容
*/
const columnsFilter = computed(() => {
console.log("获取表格头内容", props.data.columns);
// console.log("", props.data.columns);
getPageData()
if (!state.columnsCheck?.length) {
return props.data.columns;
@ -893,7 +893,7 @@ const getListData = (page?: number) => {
if (page) {
state.currentPage = page;
}
console.log("筛选查询列表数据--->", page);
// console.log("--->", page);
getPageData();
};
watch(
@ -1571,13 +1571,13 @@ function optionsValue4Get4(data: any, fieldName: any) {
const judjeCascader = (val: any, options: any[]) => {
if (val.length < 0) return "";
let valAry = stringToObj(val);
console.log("获取级联选择值", stringToObj(val), val.length, options);
// console.log("", stringToObj(val), val.length, options);
if (!Array.isArray(valAry)) return "";
let title = "";
valAry.forEach((item: any) => {
// console.log("item", item);
console.log(item + "=============:", item, diGuiJilian(item, options));
// console.log(item + "=============:", item, diGuiJilian(item, options));
if (title == "") {
title = title + diGuiJilian(item, options);
} else {

1276
src/components/workflow/drwer/approverDrawer copy.vue

File diff suppressed because it is too large

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

@ -8,15 +8,22 @@ import { toRaw } from "vue";
import $func from "@/utils/workflow/index";
import { setTypes, selectModes, selectRanges } from "@/utils/workflow/const";
import { useStore } from "@/store/workflow/index";
import type { powerNoke,powerNokeInfo } from '@/api/workflowapi/types'
import {
getAllParentNode,
judgeOptionalNode,
analysisForm,
setFlowFormKeyPower,
analyFormJsonMap
} from "@/api/workflowapi/index";
import { govthree } from "@/api/opk/opk/api";
import PositionDialog from "@/components/workflow/dialog/positionDialog.vue";
import FormWord from "@/components/workflow/dialog/formWord.vue";
import MatrixPage from "@/components/workflow/dialog/matrix.vue";
@ -25,6 +32,7 @@ import MatrixPageIng from "@/components/workflow/dialog/matrixIng.vue";
import { formTableField } from "@/api/DesignForm/type";
import { gainFormTableField } from "@/api/DesignForm/requestapi";
import { matrixInfo } from "@/api/matrixapi/type";
import { formStruct } from "@/api/DesignForm/types";
let props = defineProps({
nodeConfig: {
@ -65,7 +73,9 @@ const orgProps = {
label: "name",
children: "child",
};
//
const powerNewUnitAry = ref<powerNoke>();
const activePickUnitGroupName = ref("")
const isLookAll = ref(false);
const isEditAll = ref(false);
@ -235,7 +245,7 @@ const saveApprover = () => {
flag: true,
id: approverConfig1.value.id,
});
let powerAry = [];
let powerAry: any[] = [];
if (
powerUnitAry.value.recUnitAry.masterUnitList &&
powerUnitAry.value.recUnitAry.masterUnitList.length > 0
@ -303,6 +313,87 @@ const saveApprover = () => {
setFlowFormKeyPower(sendInfo);
closeDrawer();
};
//
const saveNewApprover = () => {
// console.log("--props-->", props);
setApproverConfig({
value: approverConfig.value,
flag: true,
id: approverConfig1.value.id,
});
let untiPwoerAry: { id: string; name: string; status: number; isLook: boolean; isEdit: boolean; }[] = []
//
if(powerNewUnitAry.value?.recUnitAry && Array.isArray(powerNewUnitAry.value?.recUnitAry) && powerNewUnitAry.value?.recUnitAry.length > 0){
powerNewUnitAry.value?.recUnitAry.forEach((item: any) => {
untiPwoerAry.push({
id: item.id,
name: item.name,
status: item.status,
isLook: item.isLook,
isEdit: item.isEdit
});
if(item.list && Array.isArray(item.list) && item.list.length > 0){
item.list.forEach((listItem: any) => {
untiPwoerAry.push({
id: listItem.id,
name: listItem.name,
status: listItem.status,
isLook: listItem.isLook,
isEdit: listItem.isEdit
});
})
}
});
}
// console.log("---->", untiPwoerAry);
// console.log("", formData.value.purview);
if(formData.value.purview && Array.isArray(formData.value.purview) && formData.value.purview.length > 0){
let isNew = true;
formData.value.purview.forEach((item: any) => {
if (item.nodeKey == approverConfig1.value.value.nodeNumber) { //
// console.log("---1->",item.nodeKey,item.nodeKey == approverConfig1.value.value.nodeNumber, untiPwoerAry);
item.powerAry = untiPwoerAry;
isNew = false;
}
})
if (isNew) { //
// console.log("--2-->",approverConfig1.value.value.nodeNumber, untiPwoerAry);
formData.value.purview.push({
nodeKey: approverConfig1.value.value.nodeNumber,
powerAry: untiPwoerAry,
});
}
}else{ //
// console.log("--3-->",approverConfig1.value.value.nodeNumber, untiPwoerAry);
formData.value.purview = [
{
nodeKey: approverConfig1.value.value.nodeNumber,
powerAry: untiPwoerAry,
},
];
}
// console.log("formData.value.purview", formData.value.purview);
let sendInfo: any = {
formKey: props.customerFormKey.toString(),
formVersion: props.formVersion.toString(),
formData: JSON.stringify(formData.value),
formPower: JSON.stringify(formData.value.purview),
};
// console.log("sendInfo", sendInfo);
setFlowFormKeyPower(sendInfo);
closeDrawer();
}
const closeDrawer = () => {
setApprover(false);
isExecutor.value = false;
@ -332,7 +423,9 @@ const updateMatrix = (val: any) => {
// console.log("-222--->", approverConfig.value);
};
const formTableFielding = reactive<formTableField>({});
const formTableFielding = reactive<formTableField>({
masterTable: []
});
/**
@ 作者: 秦东
@ 时间: 2024-03-13 08:24:54
@ -343,7 +436,7 @@ const jieForm = () => {
analysisForm({
nodeKey: approverConfig1.value.value.nodeNumber,
nodeJson: JSON.stringify(formData.value),
}).then((data) => {
}).then((data:any) => {
if (data.code == 0) {
// console.log("--->", data.data);
powerUnitAry.value = data.data;
@ -353,6 +446,33 @@ const jieForm = () => {
}
});
//
analyFormJsonMap({
nodeKey: approverConfig1.value.value.nodeNumber,
nodeJson: JSON.stringify(formData.value),
}).then((data:any) => {
// console.log("",data)
if(data.code == 0){
powerNewUnitAry.value = data.data
// powerNewUnitAry.value?.nodeKey = data.data.nodeKey
// powerNewUnitAry.value?.recUnitAry = data.data.recUnitAry
if(data.data.recUnitAry && Array.isArray(data.data.recUnitAry) && data.data.recUnitAry.length > 0){
data.data.recUnitAry.forEach((item:powerNokeInfo,i:number)=>{
// if(item.id != "masterid"){
// return activePickUnitGroupName.value = item.id;
// }
if(i == 1){
activePickUnitGroupName.value = item.id;
}
})
}
}
// console.log("sadsadasdasd",powerNewUnitAry.value )
// powerNewUnitAry.value?.nodeKey = data
})
if (props.customerFormKey != "") {
gainFormTableField({ id: props.customerFormKey.toString() }).then((data) => {
// console.log('--->',data)
@ -532,7 +652,7 @@ const handleNodeClickOrg = (data: any, threePickAry: any) => {
) {
if (data.level <= 3) {
threePickAry.checkedKeys = threePickAry.checkedKeys.filter(
(item) => item !== data.id
(item: any) => item !== data.id
);
}
approverConfig.value.orgList = threePickAry.checkedKeys;
@ -623,6 +743,88 @@ const libraryList = ref([
value: 3,
},
]);
//
const editPowerLook = (val:powerNokeInfo) => {
// console.log("",val)
if(val.list && Array.isArray(val.list) && val.list.length > 0){
val.list.forEach((item:any)=>{
if(val.isLook){
item.isLook = val.isLook
}else{
val.isEdit = val.isLook
item.isLook = val.isLook
item.isEdit = val.isLook
}
})
}
}
//
const editPowerWorkLook = (master:powerNokeInfo,word:powerNokeInfo) => {
// console.log("master",master)
// console.log("word",word)
if(!word.isLook){
word.isEdit = word.isLook
}
isAllPick(master)
}
//
const editPowerSave = (val:powerNokeInfo) => {
if(val.list && Array.isArray(val.list) && val.list.length > 0){
val.list.forEach((item:any)=>{
if(val.isEdit){
val.isLook = val.isEdit
item.isEdit = val.isEdit
item.isLook = val.isEdit
}else{
val.isEdit = val.isEdit
item.isEdit = val.isEdit
}
})
}
}
//
const editPowerWorkSave = (master:powerNokeInfo,word:powerNokeInfo) => {
if(word.isEdit){
word.isLook = word.isEdit
}
isAllPick(master)
}
//
const isAllPick = (val:powerNokeInfo) => {
if(val.list && Array.isArray(val.list) && val.list.length > 0){
let lookNum = 0;
let editNum = 0;
val.list.forEach((item:any)=>{
if(item.isLook){
lookNum++;
}
if(item.isEdit){
editNum++;
}
})
if(lookNum > 0){
val.isLook = true
}else{
val.isLook = false
}
if(editNum > 0){
val.isEdit = true
}else{
val.isEdit = false
}
// console.log("master",val)
// console.log("lookNum",lookNum)
// console.log("editNum",editNum)
}
}
</script>
<template>
<el-drawer
@ -1019,7 +1221,121 @@ const libraryList = ref([
</template>
<!-- <el-divider content-position="left">操作权限</el-divider> -->
<div class="info_box">
<template v-for="item in powerNewUnitAry?.recUnitAry">
<template v-if="item.id=='masterid'">
<div class="table_name">
<el-text class="mx-1" type="primary">主表</el-text>
</div>
<el-table border :data="item.list">
<el-table-column prop="name" label="字段" />
<el-table-column align="center" width="80">
<template #header>
<el-checkbox
v-model="item.isLook"
label=""
@change="editPowerLook(item)"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isLook"
label=""
@change="editPowerWorkLook(item,scope.row)"
/>
</template>
</el-table-column>
<el-table-column align="center" width="120">
<template #header>
<el-checkbox
v-model="item.isEdit"
label=""
@change="editPowerSave(item)"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isEdit"
label=""
@change="editPowerWorkSave(item,scope.row)"
/>
</template>
</el-table-column>
</el-table>
</template>
</template>
<div class="table_name">
<el-text class="mx-1" type="primary">其他</el-text>
</div>
<el-tabs v-model="activePickUnitGroupName" class="demo-tabs" type="border-card">
<template v-for="item in powerNewUnitAry?.recUnitAry">
<template v-if="item.id!='masterid'">
<el-tab-pane :label="item.name" :name="item.id" >
<!-- <template #label>
<div class="checkBoxClass">
<span>{{item.name}}</span>
<div>
<el-checkbox
v-model="item.isLook"
label=""
/>
<el-checkbox
v-model="item.isEdit"
label=""
@change="editOpenOrClose"
/>
</div>
</div>
</template> -->
<el-table border :data="item.list">
<el-table-column prop="name" label="字段" />
<el-table-column align="center" width="80">
<template #header>
<el-checkbox
v-model="item.isLook"
label=""
@change="editPowerLook(item)"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isLook"
label=""
@change="editPowerWorkLook(item,scope.row)"
/>
</template>
</el-table-column>
<el-table-column align="center" width="120">
<template #header>
<el-checkbox
v-model="item.isEdit"
label=""
@change="editPowerSave(item)"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isEdit"
label=""
@change="editPowerWorkSave(item,scope.row)"
/>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</template>
</template>
</el-tabs>
<!-- <div class="table_name">
<el-text class="mx-1" type="primary">主表</el-text>
</div>
<el-table
@ -1094,7 +1410,7 @@ const libraryList = ref([
</el-table-column>
</el-table>
</el-col>
</el-row>
</el-row> -->
</div>
</el-tab-pane>
<el-tab-pane name="helpInstructions">
@ -1141,7 +1457,8 @@ const libraryList = ref([
</el-tabs>
</div>
<div class="demo-drawer__footer clear">
<el-button type="primary" @click="saveApprover"> </el-button>
<!-- <el-button type="primary" @click="saveApprover"> </el-button> -->
<el-button type="primary" @click="saveNewApprover"> </el-button>
<el-button @click="closeDrawer"> </el-button>
</div>
<!--选择成员-->

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

@ -89,7 +89,7 @@ watch(
copyerConfig1,
(val: any) => {
val.value.attribute = val.value.attribute * 1;
console.log("directormaxlevel", val.value, val.value.type);
// console.log("directormaxlevel", val.value, val.value.type);
matrixIsShow.value = false;
copyerConfig.value = val.value;
@ -150,7 +150,7 @@ watch(
}
);
onMounted(() => {
console.log("预加载数据建军节--------》", copyerConfig1.value);
// console.log("--------", copyerConfig1.value);
if (copyerConfig1.settype == 0) {
copyerConfig.value.settype = 1;
}
@ -159,7 +159,7 @@ onMounted(() => {
watch(
() => copyerConfig.value.settype,
(val: any) => {
console.log("监听审批人设置选项", copyerConfig.value);
// console.log("", copyerConfig.value);
switch (val) {
case 10:
let sendOrg = {
@ -262,7 +262,7 @@ const changeType = (val: any) => {
copyerConfig.value.nodeUserList = [];
copyerConfig.value.examineMode = 1;
copyerConfig.value.noHanderAction = 2;
console.log("属性选择--->", val);
// console.log("--->", val);
switch (val) {
case 2:
copyerConfig.value.directorLevel = 1; //
@ -334,7 +334,7 @@ const surePostApproverCopy = (data: any) => {
*/
const flowOrgTree = ref();
const setOrgTree = (val: any) => {
console.log("设置选项", val);
// console.log("", val);
if (Array.isArray(val)) {
flowOrgTree.value!.setCheckedKeys(val, true);
} else {
@ -362,13 +362,13 @@ const sureFormTableApproverCopy = (data: any) => {
@ 功能: 选中的哪个行政组织
*/
const handleNodeClickOrg = (data: any, threePickAry: any) => {
console.log("选中的哪个行政组织----data------->", data);
console.log("选中的哪个行政组织----checked------->", threePickAry);
console.log(
"选中的哪个行政组织----halfCheckedKeys------->",
threePickAry.halfCheckedKeys
);
console.log("选中的哪个行政组织----checkedKeys------->", threePickAry.checkedKeys);
// console.log("----data------->", data);
// console.log("----checked------->", threePickAry);
// console.log(
// "----halfCheckedKeys------->",
// threePickAry.halfCheckedKeys
// );
// console.log("----checkedKeys------->", threePickAry.checkedKeys);
if (
threePickAry.halfCheckedKeys &&
Array.isArray(threePickAry.halfCheckedKeys) &&
@ -380,10 +380,10 @@ const handleNodeClickOrg = (data: any, threePickAry: any) => {
threePickAry.checkedKeys.length > 0
) {
copyerConfig.value.orgList = threePickAry.checkedKeys;
console.log("选中的哪个行政组织----1------->", copyerConfig.value.orgList);
// console.log("----1------->", copyerConfig.value.orgList);
} else {
copyerConfig.value.orgList = [];
console.log("选中的哪个行政组织----2------->", copyerConfig.value.orgList);
// console.log("----2------->", copyerConfig.value.orgList);
}
} else {
if (
@ -397,10 +397,10 @@ const handleNodeClickOrg = (data: any, threePickAry: any) => {
);
}
copyerConfig.value.orgList = threePickAry.checkedKeys;
console.log("选中的哪个行政组织----3------->", copyerConfig.value.orgList);
// console.log("----3------->", copyerConfig.value.orgList);
} else {
copyerConfig.value.orgList = [];
console.log("选中的哪个行政组织----4------->", copyerConfig.value.orgList);
// console.log("----4------->", copyerConfig.value.orgList);
}
}
// if(copyerConfig.value.orgList && Array.isArray(copyerConfig.value.orgList)){
@ -435,10 +435,10 @@ const handleNodeClickOrg = (data: any, threePickAry: any) => {
// }
// }
// }
console.log(
"选中的哪个行政组织----copyerConfig.value.orgList------->",
copyerConfig.value.orgList
);
// console.log(
// "----copyerConfig.value.orgList------->",
// copyerConfig.value.orgList
// );
};
</script>
<template>

377
src/components/workflow/drwer/promoterDrawer.vue

@ -8,9 +8,10 @@ import employeesDialog from "@/components/workflow/dialog/employeesDialog.vue";
import { AnalysisForm } from "@/components/workflow/drwer/analysisForm";
import $func from "@/utils/workflow/index";
import { useStore } from "@/store/workflow/index";
import { analysisForm, setFlowFormKeyPower } from "@/api/workflowapi/index";
import type { powerNoke,powerNokeInfo } from '@/api/workflowapi/types'
import { analysisForm, setFlowFormKeyPower,analyFormJsonMap } from "@/api/workflowapi/index";
import AssociatedFormsTinyace from "@/widget/associatedforms/associatedFormsTinyace.vue";
import { formStruct } from "@/api/DesignForm/types";
const props = defineProps({
formData: {
@ -58,7 +59,7 @@ let store = useStore();
let { setPromoter, setFlowPermission } = store;
let approverConfig1 = computed((): any => store.approverConfig1);
let promoterDrawer = computed(() => store.promoterDrawer);
let flowPermission1 = computed(() => store.flowPermission1);
let flowPermission1 = computed((): any => store.flowPermission1);
let visible = computed({
get() {
return promoterDrawer.value;
@ -67,7 +68,7 @@ let visible = computed({
closeDrawer();
},
});
watch(flowPermission1, (val) => {
watch(flowPermission1, (val:any) => {
flowPermission.value = val.value;
});
@ -86,7 +87,7 @@ const savePromoter = () => {
id: flowPermission1.value.id,
});
// console.log(1);
let powerAry = [];
let powerAry:any = [];
if (
powerUnitAry.value.recUnitAry.masterUnitList &&
powerUnitAry.value.recUnitAry.masterUnitList.length > 0
@ -145,7 +146,7 @@ const savePromoter = () => {
// console.log("formKey--->",props.formKey.toString());
// console.log("formVersion--->",props.formVersion.toString());
// console.log("value--->",formData.value);
console.log("purview--->", formData.value.purview);
// console.log("purview--->", formData.value.purview);
let sendInfo: any = {
formKey: props.formKey.toString(),
@ -153,7 +154,7 @@ const savePromoter = () => {
formData: JSON.stringify(formData.value),
formPower: JSON.stringify(formData.value.purview),
};
console.log("sendInfo", sendInfo);
// console.log("sendInfo", sendInfo);
setFlowFormKeyPower(sendInfo);
// console.log("formDataAll",formData)
// console.log("formData",formData.value.purview)
@ -162,6 +163,79 @@ const savePromoter = () => {
const closeDrawer = () => {
setPromoter(false);
};
//
const powerNewUnitAry = ref<powerNoke>();
const activePickUnitGroupName = ref("")
//
const saveNoderPower = () => {
//
setFlowPermission({
value: flowPermission.value,
flag: true,
id: flowPermission1.value.id,
});
let untiPwoerAry: { id: string; name: string; status: number; isLook: boolean; isEdit: boolean; }[] = []
//
if(powerNewUnitAry.value?.recUnitAry && Array.isArray(powerNewUnitAry.value?.recUnitAry) && powerNewUnitAry.value?.recUnitAry.length > 0){
powerNewUnitAry.value?.recUnitAry.forEach((item: any) => {
untiPwoerAry.push({
id: item.id,
name: item.name,
status: item.status,
isLook: item.isLook,
isEdit: item.isEdit
});
if(item.list && Array.isArray(item.list) && item.list.length > 0){
item.list.forEach((listItem: any) => {
untiPwoerAry.push({
id: listItem.id,
name: listItem.name,
status: listItem.status,
isLook: listItem.isLook,
isEdit: listItem.isEdit
});
})
}
});
}
// console.log("", formData.value.purview);
if(formData.value.purview && Array.isArray(formData.value.purview) && formData.value.purview.length > 0){
let isNew = true;
formData.value.purview.forEach((item: any) => {
if (item.nodeKey == props.nodeConfig.nodeNumber) { //
item.powerAry = untiPwoerAry;
isNew = false;
}
})
if (isNew) { //
formData.value.purview.push({
nodeKey: props.nodeConfig.nodeNumber,
powerAry: untiPwoerAry,
});
}
}else{ //
formData.value.purview = [
{
nodeKey: props.nodeConfig.nodeNumber,
powerAry: untiPwoerAry,
},
];
}
let sendInfo: any = {
formKey: props.formKey.toString(),
formVersion: props.formVersion.toString(),
formData: JSON.stringify(formData.value),
formPower: JSON.stringify(formData.value.purview),
};
// console.log("", sendInfo);
setFlowFormKeyPower(sendInfo);
closeDrawer();
}
const powerUnitAry = ref<any>({
nodeKey: "",
@ -172,6 +246,7 @@ const powerUnitAry = ref<any>({
unitAllState: [],
},
});
/**
@ 作者: 秦东
@ 时间: 2024-03-13 08:24:54
@ -179,37 +254,65 @@ const powerUnitAry = ref<any>({
*/
const jieForm = () => {
// console.log("nodeConfig",props.nodeConfig)
analysisForm({
// analysisForm({
// nodeKey: props.nodeConfig.nodeNumber,
// nodeJson: JSON.stringify(formData.value),
// }).then((data:any) => {
// if (data.code == 0) {
// powerUnitAry.value = data.data;
// if (
// powerUnitAry.value.recUnitAry.masterUnitList &&
// powerUnitAry.value.recUnitAry.masterUnitList.length > 0
// ) {
// let allToal = powerUnitAry.value.recUnitAry.masterUnitList.length;
// let isAll = 0;
// let editAll = 0;
// powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
// if (item.isLook) {
// isAll++;
// }
// if (item.isEdit) {
// editAll++;
// }
// });
// if (isAll == allToal) {
// isLookAll.value = true;
// }
// if (editAll == allToal) {
// isEditAll.value = true;
// }
// }
// }
// });
//
analyFormJsonMap({
nodeKey: props.nodeConfig.nodeNumber,
nodeJson: JSON.stringify(formData.value),
}).then((data) => {
if (data.code == 0) {
powerUnitAry.value = data.data;
if (
powerUnitAry.value.recUnitAry.masterUnitList &&
powerUnitAry.value.recUnitAry.masterUnitList.length > 0
) {
let allToal = powerUnitAry.value.recUnitAry.masterUnitList.length;
let isAll = 0;
let editAll = 0;
powerUnitAry.value.recUnitAry.masterUnitList.forEach((item: any) => {
if (item.isLook) {
isAll++;
}
if (item.isEdit) {
editAll++;
}).then((data:any) => {
// console.log("",data)
if(data.code == 0){
powerNewUnitAry.value = data.data
// powerNewUnitAry.value?.nodeKey = data.data.nodeKey
// powerNewUnitAry.value?.recUnitAry = data.data.recUnitAry
if(data.data.recUnitAry && Array.isArray(data.data.recUnitAry) && data.data.recUnitAry.length > 0){
data.data.recUnitAry.forEach((item:powerNokeInfo,i:number)=>{
// if(item.id != "masterid"){
// return activePickUnitGroupName.value = item.id;
// }
if(i == 1){
activePickUnitGroupName.value = item.id;
}
});
if (isAll == allToal) {
isLookAll.value = true;
}
if (editAll == allToal) {
isEditAll.value = true;
}
})
}
}
});
// console.log("sadsadasdasd",powerNewUnitAry.value )
// powerNewUnitAry.value?.nodeKey = data
})
};
watch(
@ -290,6 +393,86 @@ const oneEditSet = (val: any) => {
}
}
};
//
const editPowerLook = (val:powerNokeInfo) => {
// console.log("",val)
if(val.list && Array.isArray(val.list) && val.list.length > 0){
val.list.forEach((item:any)=>{
if(val.isLook){
item.isLook = val.isLook
}else{
val.isEdit = val.isLook
item.isLook = val.isLook
item.isEdit = val.isLook
}
})
}
}
//
const editPowerWorkLook = (master:powerNokeInfo,word:powerNokeInfo) => {
// console.log("master",master)
// console.log("word",word)
if(!word.isLook){
word.isEdit = word.isLook
}
isAllPick(master)
}
//
const editPowerSave = (val:powerNokeInfo) => {
if(val.list && Array.isArray(val.list) && val.list.length > 0){
val.list.forEach((item:any)=>{
if(val.isEdit){
val.isLook = val.isEdit
item.isEdit = val.isEdit
item.isLook = val.isEdit
}else{
val.isEdit = val.isEdit
item.isEdit = val.isEdit
}
})
}
}
//
const editPowerWorkSave = (master:powerNokeInfo,word:powerNokeInfo) => {
if(word.isEdit){
word.isLook = word.isEdit
}
isAllPick(master)
}
//
const isAllPick = (val:powerNokeInfo) => {
if(val.list && Array.isArray(val.list) && val.list.length > 0){
let lookNum = 0;
let editNum = 0;
val.list.forEach((item:any)=>{
if(item.isLook){
lookNum++;
}
if(item.isEdit){
editNum++;
}
})
if(lookNum > 0){
val.isLook = true
}else{
val.isLook = false
}
if(editNum > 0){
val.isEdit = true
}else{
val.isEdit = false
}
// console.log("master",val)
// console.log("lookNum",lookNum)
// console.log("editNum",editNum)
}
}
</script>
<template>
<el-drawer
@ -322,7 +505,118 @@ const oneEditSet = (val: any) => {
</template>
<!-- <el-divider content-position="left">操作权限</el-divider> -->
<div class="info_box">
<template v-for="item in powerNewUnitAry?.recUnitAry">
<template v-if="item.id=='masterid'">
<div class="table_name">
<el-text class="mx-1" type="primary">主表</el-text>
</div>
<el-table border :data="item.list">
<el-table-column prop="name" label="字段" />
<el-table-column align="center" width="80">
<template #header>
<el-checkbox
v-model="item.isLook"
label=""
@change="editPowerLook(item)"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isLook"
label=""
@change="editPowerWorkLook(item,scope.row)"
/>
</template>
</el-table-column>
<el-table-column align="center" width="120">
<template #header>
<el-checkbox
v-model="item.isEdit"
label=""
@change="editPowerSave(item)"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isEdit"
label=""
@change="editPowerWorkSave(item,scope.row)"
/>
</template>
</el-table-column>
</el-table>
</template>
</template>
<div class="table_name">
<el-text class="mx-1" type="primary">其他</el-text>
</div>
<el-tabs v-model="activePickUnitGroupName" class="demo-tabs" type="border-card">
<template v-for="item in powerNewUnitAry?.recUnitAry">
<template v-if="item.id!='masterid'">
<el-tab-pane :label="item.name" :name="item.id" >
<!-- <template #label>
<div class="checkBoxClass">
<span>{{item.name}}</span>
<div>
<el-checkbox
v-model="item.isLook"
label=""
/>
<el-checkbox
v-model="item.isEdit"
label=""
@change="editOpenOrClose"
/>
</div>
</div>
</template> -->
<el-table border :data="item.list">
<el-table-column prop="name" label="字段" />
<el-table-column align="center" width="80">
<template #header>
<el-checkbox
v-model="item.isLook"
label=""
@change="editPowerLook(item)"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isLook"
label=""
@change="editPowerWorkLook(item,scope.row)"
/>
</template>
</el-table-column>
<el-table-column align="center" width="120">
<template #header>
<el-checkbox
v-model="item.isEdit"
label=""
@change="editPowerSave(item)"
/>
</template>
<template #default="scope">
<el-checkbox
v-model="scope.row.isEdit"
label=""
@change="editPowerWorkSave(item,scope.row)"
/>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</template>
</template>
</el-tabs>
<!-- <div class="table_name">
<el-text class="mx-1" type="primary">主表</el-text>
</div>
<el-table
@ -397,7 +691,7 @@ const oneEditSet = (val: any) => {
</el-table-column>
</el-table>
</el-col>
</el-row>
</el-row> -->
</div>
</el-tab-pane>
<el-tab-pane name="helpInstructions">
@ -412,7 +706,8 @@ const oneEditSet = (val: any) => {
</div>
<div class="demo-drawer__footer clear">
<el-button type="primary" @click="savePromoter"> </el-button>
<!-- <el-button type="primary" @click="savePromoter"> </el-button> -->
<el-button type="primary" @click="saveNoderPower"> </el-button>
<el-button @click="closeDrawer"> </el-button>
</div>
<employees-dialog
@ -445,4 +740,16 @@ const oneEditSet = (val: any) => {
.table_name {
padding: 10px 0;
}
.checkBoxClass{
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 10px 0 0;
span{
padding: 0 10px;
}
:deep .el-checkbox{
margin: 0px 0px 0px 10px;
}
}
</style>

2
src/components/workflow/nodeWrap.vue

@ -44,7 +44,7 @@ let defaultText = computed(() => {
return placeholderList[props.nodeConfig.type];
});
let showText = computed(() => {
console.log("props.nodeConfig.type===>", props.nodeConfig);
// console.log("props.nodeConfig.type===>", props.nodeConfig);
if (props.nodeConfig.type == 0) return $func.arrToStr(props.flowPermission) || "所有人";
if (props.nodeConfig.type == 1) return $func.setApproverStr(props.nodeConfig);
if (props.nodeConfig.type == 3) return $func.setApproverStr(props.nodeConfig);

1
src/layout/components/Sidebar/index.vue

@ -30,6 +30,7 @@ const { sidebarLogo } = storeToRefs(settingsStore);
:collapse-transition="false"
mode="vertical"
>
<sidebar-item
v-for="route in permissionStore.routes"
:key="route.path"

7
src/store/modules/user.ts

@ -33,17 +33,20 @@ export const useUserStore = defineStore("user", () => {
function login(loginData: LoginData) {
// console.log("登陆使用12222",loginData);
return new Promise<void>((resolve, reject) => {
// console.log("登陆使用--->",resolve, reject);
loginApiIng(loginData)
.then((response:any) => {
//console.log("登陆使用",response);
// console.log("登陆使用",response);
const { tokenType, accessToken, key, token,userinfo } = response.data;
tokenIng.value = key + "_" + token; // Bearer eyJhbGciOiJIUzI1NiJ9.xxx.xxx
userKey.value = key;
userToken.value = token;
// userInfoCont.value = userinfo
resolve();
resolve(response);
})
.catch((error:any) => {
// console.log("登陆使用--2->",error);
reject(error);
});
});

16
src/views/login/index.vue

@ -71,7 +71,7 @@
<el-button
size="default"
:loading="loading"
v-loading="loading"
type="primary"
class="w-full"
@click.prevent="handleLogin"
@ -96,7 +96,7 @@ import SvgIcon from "@/components/SvgIcon/index.vue";
//
import { useUserStore } from "@/store/modules/user";
import { ElMessage, ElMessageBox } from 'element-plus';
// API
import { LocationQuery, LocationQueryValue, useRoute } from "vue-router";
import { getCaptchaApiIng } from "@/api/auth";
@ -178,9 +178,10 @@ function handleLogin() {
loading.value = true;
userStore
.login(loginData.value)
.then(() => {
.then((datas:any) => {
// console.log("",datas)
ElMessage.success(datas.msg ||"登录成功");
const query: LocationQuery = route.query;
const redirect = (query.redirect as LocationQueryValue) ?? "/";
const otherQueryParams = Object.keys(query).reduce((acc: any, cur: string) => {
@ -189,16 +190,19 @@ function handleLogin() {
}
return acc;
}, {});
//console.log("",redirect,otherQueryParams);
router.push({ path: redirect, query: otherQueryParams });
getCaptcha();
})
.catch(() => {
.catch((error:any) => {
//
ElMessage.error(error.toString() || '系统出错');
loading.value = false;
getCaptcha();
})
.finally(() => {
loading.value = false;
});
}
});

1
src/views/public/orguser/orgalluser.vue

@ -239,6 +239,7 @@ const backfillData = () => {
<div>已选择{{ checkDataList.length }}</div>
<el-button type="danger" @click="delAllClick" size="small">全部移除</el-button>
</div>
{{ checkDataList }}
<el-table :data="checkDataList" style="height:680px">
<el-table-column prop="userName" label="照片" width="60px" align="center">
<template #default="scope">

14
src/views/system/monitor/cachelist/index.vue

@ -0,0 +1,14 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-21 10:06:51
@ 备注: 在线人数
-->
<script lang='ts' setup>
</script>
<template>
<div>缓存列表</div>
</template>
<style lang='scss' scoped>
</style>

14
src/views/system/monitor/cachemonitor/index.vue

@ -0,0 +1,14 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-21 10:06:51
@ 备注: 在线人数
-->
<script lang='ts' setup>
</script>
<template>
<div>在线人数</div>
</template>
<style lang='scss' scoped>
</style>

14
src/views/system/monitor/datemonitor/index.vue

@ -0,0 +1,14 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-21 10:06:51
@ 备注: 在线人数
-->
<script lang='ts' setup>
</script>
<template>
<div>数据监控</div>
</template>
<style lang='scss' scoped>
</style>

169
src/views/system/monitor/online/index copy 2.vue

@ -0,0 +1,169 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-21 10:06:51
@ 备注: 在线人数
-->
<script lang='ts' setup>
import { watch, ref, nextTick } from 'vue';
import { useRoute, useRouter } from 'vue-router';
const route = useRoute();
const router = useRouter()
const cacheMenuList = ref([])
const scrollBarRef = ref(null)
const tagsListRef = ref([])
// tag
const autoScrollNewTag = () => {
nextTick(() => {
//
let container = scrollBarRef.value.wrapRef;
// ()
let scrollWidth = container.scrollWidth;
//
let clientWidth = container.clientWidth;
//
let scrollX = scrollWidth - clientWidth;
scrollBarRef.value.scrollTo({
left: scrollX,
behavior: 'smooth' // 使
})
})
}
//
const autoScrollSelectedTag = () => {
nextTick(() => {
let container = scrollBarRef.value.wrapRef;
//
let scrollLeft = container.scrollLeft;
//
let wrapLeft = container.getBoundingClientRect();
// tag
let activeTagLeft = container.querySelector('.el-tag--primary').getBoundingClientRect();
scrollBarRef.value.scrollTo({
left: scrollLeft + (activeTagLeft.left - wrapLeft.left),
behavior: "smooth"
})
})
}
//
const scrollArrowHandler = (direction) => {
//
let scrollLeftX = scrollBarRef.value.wrapRef.scrollLeft;
scrollBarRef.value.scrollTo({
left: scrollLeftX + (direction == 'left' ? -100 : 100),
behavior: 'smooth' // 使
})
}
//
const navigatorTo = routeParams => {
router.push({
path: routeParams.path
})
}
//
const deleteCacheMenu = (routeParams, index) => {
//
if (routeParams.path === route.path) {
//
if (index < cacheMenuList.value.length - 1) {
router.push({
path: cacheMenuList.value[index + 1].path
})
} else if (index == cacheMenuList.value.length - 1 && cacheMenuList.value.length > 1) {
// tag tag,
router.push({
path: cacheMenuList.value[index - 1].path
})
}
}
cacheMenuList.value.splice(index, 1);
//
localStorage.setItem('menusList', JSON.stringify(cacheMenuList.value))
}
//
watch(() => route, (newRoute, oldRoute) => {
let isExit = cacheMenuList.value.some(item => item.path === newRoute.path)
if (!isExit) {
cacheMenuList.value.push({ ...newRoute });
//
localStorage.setItem('menusList', JSON.stringify(cacheMenuList.value))
// tag tag
autoScrollNewTag()
} else {
// tag tag
autoScrollSelectedTag()
}
}, {
immediate: true,
deep: true
})
</script>
<template>
<div class="scroll-test">
<el-icon @click="scrollArrowHandler('left')">
<ArrowLeft />
</el-icon>
<el-scrollbar wrap-class="scroll-wrap" ref="scrollBarRef" >
<div class="menu-wrapper">
<el-tag type="primary" effect="dark" size="large" closable >Tag 1</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 2</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 3</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 4</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 5</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 6</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 7</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 8</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 9</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 10</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 11</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 12</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 13</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 14</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 15</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 16</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 17</el-tag>
</div>
</el-scrollbar>
<el-icon @click="scrollArrowHandler('right')">
<ArrowRight />
</el-icon>
</div>
</template>
<style lang='scss' scoped>
.menu-wrapper {
width: 100%;
height: 50px;
display: flex;
align-items: center;
}
.el-tag {
flex-shrink: 0;
margin-left: 10px;
}
.el-scrollbar {
width: 100%;
height: 50px !important;
}
.scroll-test {
display: flex;
height: 50px;
align-items: center;
width: 100%;
}
</style>

240
src/views/system/monitor/online/index copy 3.vue

@ -0,0 +1,240 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-21 10:06:51
@ 备注: 在线人数
-->
<script lang='ts' setup>
const scrollBarRef = ref()
const setup = reactive({
roleId:"1",
appId:"stzl"
})
const pickuserrole = ref("first")
const systemTableData = ref([])
const roleUserTableData = ref([])
const dialogVisible = ref(false)
//
const scrollArrowHandler = (direction:string) => {
console.log("scrollBarRef----->",scrollBarRef.value)
//
let scrollLeftX = scrollBarRef.value.wrapRef.scrollLeft;
scrollBarRef.value.scrollTo({
left: scrollLeftX + (direction == 'left' ? -100 : 100),
behavior: 'smooth' // 使
})
}
//
const pickrole = (val:any) => {
setup.roleId = val
}
//
const roleHandleClose = () =>{
dialogVisible.value = false
}
//
const openHandleRoleBox = () => {
dialogVisible.value = true
}
onMounted(()=>{
for(let i=0;i<120;i++){
systemTableData.value.push({
date:i
})
}
})
</script>
<template>
<div class="roleBox">
<el-card shadow="always" class="roleCardBox">
<template #header>
<div class="caerHeader">
<svg-icon icon-class="arrow-left" size="30px" @click="scrollArrowHandler('left')"></svg-icon>
<el-scrollbar ref="scrollBarRef" class="scroBox">
<div class="scrollbar-flex-content">
<el-tag :type="setup.roleId == '1'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(1)">超级管理员</el-tag>
<el-tag :type="setup.roleId == '2'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(2)" >管理员</el-tag>
<el-tag :type="setup.roleId == '3'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(3)" >恒信高科全员权限</el-tag>
<el-tag :type="setup.roleId == '4'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(4)" >绩效考核管理员</el-tag>
<el-tag :type="setup.roleId == '5'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(5)" >恒信高科主要负责人</el-tag>
<el-tag :type="setup.roleId == '6'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(6)" >高管</el-tag>
<el-tag :type="setup.roleId == '7'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(7)" >内勤</el-tag>
<el-tag :type="setup.roleId == '8'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(8)" >焦炉热工项目组</el-tag>
<el-tag :type="setup.roleId == '9'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(9)" >公司排班专员</el-tag>
<el-tag :type="setup.roleId == '10'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(10)" >质检数据录入员</el-tag>
<el-tag :type="setup.roleId == '11'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(11)" >数据上传员</el-tag>
<el-tag :type="setup.roleId == '12'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(12)" >游客</el-tag>
<el-tag :type="setup.roleId == '13'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(13)" >仓储管理员</el-tag>
<el-tag :type="setup.roleId == '14'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(14)" >仓储专用</el-tag>
<el-tag :type="setup.roleId == '15'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(15)" >玖安高科管理员</el-tag>
<el-tag :type="setup.roleId == '16'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(16)" >生产部调度员</el-tag>
<el-tag :type="setup.roleId == '17'?'primary':'info'" effect="dark" size="large" closable @click="pickrole(17)" >生产部</el-tag>
</div>
</el-scrollbar>
<el-space wrap>
<svg-icon icon-class="arrow-right" size="30px" @click="scrollArrowHandler('right')"ss></svg-icon>
<svg-icon icon-class="add" size="30px" @click="openHandleRoleBox()"></svg-icon>
</el-space>
</div>
</template>
<el-scrollbar class="cardDobyBox">
<el-tabs v-model="setup.appId" tab-position="left" class="demo-tabs">
<el-tab-pane label="数通智联化工凭他" name="stzl">
<el-tabs v-model="pickuserrole" class="demo-tabs" >
<el-tab-pane label="权限配置" name="first">
<el-table
:data="systemTableData"
row-key="id"
border
default-expand-all
class="roleTableBox"
>
<el-table-column prop="date" label="赋权内容" />
<el-table-column prop="name" label="权限选项" >
<el-checkbox-group v-model="checkList">
<el-checkbox label="查看" value="1" />
<el-checkbox label="新增" value="2" />
<el-checkbox label="修改" value="Value A" />
<el-checkbox label="删除" value="Value A" />
</el-checkbox-group>
</el-table-column>
<el-table-column prop="address" label="数据范围">
<el-radio-group v-model="radio">
<el-radio :value="1">私有</el-radio>
<el-radio :value="2">本岗位</el-radio>
<el-radio :value="3">本部门</el-radio>
<el-radio :value="4">本集团</el-radio>
<el-radio :value="5">所有</el-radio>
<el-radio :value="9">指定行政组织</el-radio>
</el-radio-group>
</el-table-column>
</el-table>
<div class="butBox">
<el-button type="primary">确定赋权</el-button>
</div>
</el-tab-pane>
<el-tab-pane label="当前使用人" class="affix-container" name="second">
<el-table :data="systemTableData" class="roleTableBox" border>
<el-table-column fixed prop="date" label="照片" width="80" align="center" />
<el-table-column fixed prop="name" label="姓名" width="120" align="center" />
<el-table-column prop="address" label="工号" width="120" align="center" />
<el-table-column prop="address" label="联系方式" width="180" align="center"/>
<el-table-column prop="address" label="归属行政组织" />
<el-table-column fixed="right" prop="address" label="操作" align="center" width="120" >
<el-space wrap>
<el-button type="primary" size="small">
<svg-icon icon-class="eye-open" />
</el-button>
<el-button type="primary" size="small">
<svg-icon icon-class="dels" />
</el-button>
</el-space>
</el-table-column>
</el-table>
<div class="butBox">
<el-button type="success">添加使用人</el-button>
</div>
</el-tab-pane>
</el-tabs>
</el-tab-pane>
<el-tab-pane label="应用开发" name="Config">系统1</el-tab-pane>
</el-tabs>
</el-scrollbar>
</el-card>
<el-dialog
v-model="dialogVisible"
title="新增角色"
width="500"
:before-close="roleHandleClose"
draggable
>
<el-form label-width="auto" style="max-width: 100%">
<el-form-item label="角色名称">
<el-input />
</el-form-item>
<el-form-item label="排序">
<el-input :min="1" :max="30" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="dialogVisible = false">提交</el-button>
<el-button type="primary" @click="roleHandleClose">
取消
</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<style lang='scss' scoped>
.roleBox{
width: 100%;
height: calc(100vh - 170px);
padding: 15px 15px 0 15px;
.roleCardBox{
width: 100%;
height: 100%;
:deep .el-card__header{
padding: 10px;
}
.caerHeader{
display: flex;
width: 100%;
height: 40px;
align-items: center;
justify-content: space-between;
color: #c2c0c0;
overflow: hidden;
svg{
border: 1px solid #c2c0c0;
border-radius: 5px;
color: #c2c0c0;
cursor: pointer;
}
.scroBox{
width: calc(100% - 105px);
height: 50px;
margin-top: 10px;
span{
margin: 4px 3px 0 4px;
}
overflow: hidden;
}
.scrollbar-flex-content {
display: flex;
width: fit-content;
span{
cursor: pointer;
}
}
}
.cardDobyBox{
width: 100%;
height: calc(100vh - 280px);
}
.roleTableBox{
width: 100%;
margin-bottom: 10px;
height: calc(100vh - 400px);
}
}
}
.butBox{
width: 100%;
text-align: right;
}
</style>

87
src/views/system/monitor/online/index copy.vue

@ -0,0 +1,87 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-21 10:06:51
@ 备注: 在线人数
-->
<script lang='ts' setup>
</script>
<template>
<div class="roleBox">
<el-card shadow="always" class="roleCardBox">
<template #header>
<div class="caerHeader">
<svg-icon icon-class="arrow-left" size="30px"></svg-icon>
<el-scrollbar class="scroBox">
<div class="scrollbar-flex-content">
<el-tag type="primary" effect="dark" size="large" closable >Tag 1</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 2</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 3</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 4</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 5</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 6</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 7</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 8</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 9</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 10</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 11</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 12</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 13</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 14</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 15</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 16</el-tag>
<el-tag type="primary" effect="dark" size="large" closable >Tag 17</el-tag>
</div>
</el-scrollbar>
<el-space wrap>
<svg-icon icon-class="arrow-right" size="30px"></svg-icon>
<svg-icon icon-class="add" size="30px" ></svg-icon>
</el-space>
</div>
</template>
</el-card>
</div>
</template>
<style lang='scss' scoped>
.roleBox{
width: 100%;
height: calc(100vh - 170px);
padding: 15px 15px 0 15px;
.roleCardBox{
width: 100%;
height: 100%;
:deep .el-card__header{
padding: 10px;
}
.caerHeader{
display: flex;
width: 100%;
height: 40px;
align-items: center;
justify-content: space-between;
color: #c2c0c0;
overflow: hidden;
svg{
border: 1px solid #c2c0c0;
border-radius: 5px;
color: #c2c0c0;
cursor: pointer;
}
.scroBox{
width: calc(100% - 105px);
height: 50px;
margin-top: 10px;
span{
margin: 4px 3px 0 4px;
}
overflow: hidden;
}
.scrollbar-flex-content {
display: flex;
width: fit-content;
}
}
}
}
</style>

355
src/views/system/monitor/online/index.vue

@ -0,0 +1,355 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-21 10:06:51
@ 备注: 在线人数
-->
<script lang='ts' setup>
import { giveRoleTree,editRoleStatus,getOrgPostTree } from '@/api/role/index'
import type {RoleListTree,RoleFormInfo,orgAndPostisListTree} from '@/api/role/types'
import type { TreeNode,TreeInstance } from 'element-plus'
import { Search } from '@element-plus/icons-vue'
import { orgInfo } from "@/api/hr/org/type";
import { getOrgTreeList } from "@/api/hr/org/index";
import AddRoleGroup from '@/views/system/monitor/online/roleConfig/addRoleGroup.vue'
import EditRoleGroup from '@/views/system/monitor/online/roleConfig/editRoleGroup.vue'
const orgTree = ref<orgInfo[]>([])
const roleGroupOrInfo = ref(1)
const searchQuery = ref('')
const orgWorkRole = ref("org")
const appSysPick = ref("system")
const treeRef = ref<TreeInstance>()
const treeRefOrg = ref<TreeInstance>()
const roleListdata = ref<RoleListTree[]>([])
const orgPostisListdata = ref<orgAndPostisListTree[]>([])
const treeBoxHeight = ref(300)
const treeBoxHeightOrg = ref(300)
const roleLeft = ref()
const props = {
value: 'id',
label: 'label',
disabled:'status',
children: 'children',
}
const propsOrg = {
value: 'id',
label: 'name',
disabled:'status',
children: 'child',
}
const propsOrgPost = {
value: 'id',
label: 'label',
disabled:'status',
children: 'children',
}
const roleLoading = ref(false)
const openRoleGroup = ref(false)
const orgLoading = ref(false)
const orgPostLoading = ref(false)
//
const onQueryChanged = (query: string) => {
treeRef.value!.filter(query)
}
//
const onQueryChangedOrg = (query: string) => {
treeRefOrg.value!.filter(query)
}
const filterMethod = (query: string, node: any) => node.label!.includes(query)
const filterMethodOrg = (query: string, node: any) => node.name!.includes(query)
//
watch(()=>orgWorkRole.value,(val:string)=>{
console.log("监测赋权组",val)
switch(val){
case "org":
getOrgTreeAry();
break;
case "job":
getOrgPostisTree()
break;
case "role":
getRoleTree();
break;
default:
}
},{
deep:true
})
//
const pickRoleTree = (data:any) => {
if(data.status && data.types==1){
console.log("监测赋权组------->",data)
}
}
//
const pickOrgTree = (data:any) => {
console.log("监测赋权组------->",data)
}
//
const getRoleTree = () => {
roleLoading.value = true
giveRoleTree().then(({data})=>{
console.log("监测赋权组------->",data)
roleListdata.value=data;
roleLoading.value = false;
}).finally(()=>{roleLoading.value = false})
}
const editRoleCont = ref<RoleFormInfo>()
const openEditRoleGroup = ref(false)
//
const editMyInfoIcon = (data:RoleListTree,types:number) => {
console.log("编辑角色信息------->",data)
console.log("编辑角色信息---types---->",types)
switch(types){
case 1:
editRoleStatusBut(data.id,2)
break;
case 2:
editRoleStatusBut(data.id,1)
break;
case 3:
editRoleCont.value = {
id:data.id,
name:data.label,
type:data.types,
superior:data.superior,
sort:data.sort
}
openEditRoleGroup.value = true
break;
case 4:
ElMessageBox.confirm(
"您确定要删除此信息吗?一经删除!数据将不可恢复!请慎重操作!",
"警告",
{
confirmButtonText: '确定删除',
cancelButtonText: '取消删除',
type: 'warning',
}
).then(()=>{
editRoleStatusBut(data.id,3)
})
break;
default:
break;
}
}
//
const editRoleStatusBut = (id:string|number,types:number) => {
// console.log("--->",id)
editRoleStatus({id:id.toString(),status:types}).then((data:any)=>{
if(data.code==0){
ElMessage({
message: data.msg,
type: 'success',
})
getRoleTree()
}else{
ElMessage({
message: data.msg,
type: 'success',
})
}
})
}
//
const addRoleGroup = (types:number) => {
roleGroupOrInfo.value = types
openRoleGroup.value = true
}
//
const getOrgTreeAry = () => {
roleLoading.value = true
if(!Array.isArray(orgTree.value) || orgTree.value.length<=0){
getOrgTreeList({ orgid: 0 })
.then(({ data }) => {
orgTree.value = data
roleLoading.value = false
}).finally(()=>{roleLoading.value = false})
}else{
roleLoading.value = false
}
}
//
const getOrgPostisTree = () => {
orgPostLoading.value=true
if(!Array.isArray(orgPostisListdata.value) || orgPostisListdata.value.length<=0){
getOrgPostTree({id:"313"}).then(({data})=>{
console.log("获取行政组织及岗位--------->",data)
orgPostisListdata.value = data
orgPostLoading.value=false
}).finally(()=>{orgPostLoading.value=false})
}else{
orgPostLoading.value=true
}
}
onMounted(()=>{
getOrgTreeAry();
console.log("高度-----1---->",roleLeft.value?.offsetHeight)
nextTick(()=>{
treeBoxHeight.value = roleLeft.value?.offsetHeight - 140
treeBoxHeightOrg.value = roleLeft.value?.offsetHeight - 100
})
})
</script>
<template>
<div class="roleBox">
<div ref="roleLeft" class="roleLeft">
<el-tabs v-model="orgWorkRole" class="demo-tabs">
<el-tab-pane label="行政组织" name="org">
<template #label>
<el-text class="tabsTitle">行政组织</el-text>
</template>
<div class="searchBox">
<el-input v-model="searchQuery" placeholder="请输入要查找的行政组织" :suffix-icon="Search" @input="onQueryChangedOrg"/>
</div>
<el-tree-v2
ref="treeRefOrg"
style="max-width: 350px;"
:data="orgTree"
:props="propsOrg"
:filter-method="filterMethodOrg"
:height="treeBoxHeightOrg"
v-loading="roleLoading"
:highlight-current="true"
:check-on-click-node="true"
:expand-on-click-node="false"
@node-click="pickOrgTree"
>
</el-tree-v2>
</el-tab-pane>
<el-tab-pane label="岗位" name="job">
<template #label>
<el-text class="tabsTitle">岗位</el-text>
</template>
<div class="searchBox">
<el-input v-model="searchQuery" placeholder="请输入要查找的行政组织" :suffix-icon="Search" @input="onQueryChangedOrg"/>
</div>
<el-tree-v2
ref="treeRefOrg"
style="max-width: 350px;"
:data="orgPostisListdata"
:props="propsOrgPost"
:filter-method="filterMethodOrg"
:height="treeBoxHeightOrg"
v-loading="orgPostLoading"
:highlight-current="true"
:check-on-click-node="true"
:expand-on-click-node="false"
@node-click="pickOrgTree"
>
</el-tree-v2>
</el-tab-pane>
<el-tab-pane label="角色" name="role">
<template #label>
<el-text class="tabsTitle">角色</el-text>
</template>
<div class="butBox">
<el-button type="primary" @click="addRoleGroup(1)">新建角色组</el-button>
<el-button type="primary" @click="addRoleGroup(2)">新建角色</el-button>
</div>
<div class="searchBox">
<el-input v-model="searchQuery" placeholder="请输入要查找的角色" :suffix-icon="Search" @input="onQueryChanged"/>
</div>
<el-tree-v2
ref="treeRef"
style="max-width: 350px;"
:data="roleListdata"
:props="props"
:filter-method="filterMethod"
:height="treeBoxHeight"
v-loading="roleLoading"
:highlight-current="true"
:check-on-click-node="true"
:expand-on-click-node="false"
@node-click="pickRoleTree"
>
<template #default="{ node }" >
<div class="treeRoleBox">
<span>{{ node.label }}</span>
<div class="spanButBox">
<el-text v-if="node.disabled" type="warning" size="small" @click.stop="editMyInfoIcon(node.data,1)">禁用</el-text>
<el-text v-else type="success" size="small" @click.stop="editMyInfoIcon(node.data,2)">启用</el-text>
<el-text type="primary" size="small" @click.stop="editMyInfoIcon(node.data,3)">编辑</el-text>
<el-text type="danger" size="small" @click.stop="editMyInfoIcon(node.data,4)">删除</el-text>
</div>
</div>
</template>
</el-tree-v2>
</el-tab-pane>
</el-tabs>
</div>
<div class="roleright">
<el-tabs v-model="appSysPick" class="demo-tabs">
<el-tab-pane label="平台" name="system">
<template #label>
<el-text class="tabsTitleCont">平台</el-text>
</template>
</el-tab-pane>
<el-tab-pane label="应用" name="app">
<template #label>
<el-text class="tabsTitleCont">应用</el-text>
</template>
</el-tab-pane>
</el-tabs>
</div>
<AddRoleGroup v-if="openRoleGroup" v-model:show="openRoleGroup" :group-info="roleGroupOrInfo" @resthandel="getRoleTree" />
<EditRoleGroup v-if="openEditRoleGroup" v-model:show="openEditRoleGroup" :group-info="roleGroupOrInfo" :data="editRoleCont" @resthandel="getRoleTree" />
</div>
</template>
<style lang='scss' scoped>
.roleBox{
display: flex;
width: 100%;
height: calc(100vh - 170px);
padding: 15px 20px 0 20px;
justify-content: space-between;
.roleLeft{
width: 350px;
height: calc(100vh - 185px);
background-color: #FFFFFF;
.butBox{
display: flex;
justify-content: space-between;
padding: 0 10px 10px 10px;
}
.searchBox{
padding: 0 10px 10px 10px;
}
.treeBox{
height: calc(100vh - 330px);
}
}
.roleright{
width: calc(100% - 370px);
height: calc(100vh - 185px);
background-color: #FFFFFF;
}
.tabsTitle{
padding: 0 15px;
}
.tabsTitleCont{
padding: 0 35px;
}
.treeRoleBox{
display: flex;
justify-content: space-between;
width: 100%;
align-items: center;
}
.spanButBox{
span{
padding: 0 5px;
}
}
}
</style>

148
src/views/system/monitor/online/roleConfig/addRoleGroup.vue

@ -0,0 +1,148 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-23 13:00:55
@ 备注: 添加角色组
-->
<script lang='ts' setup>
import type { RoleFormInfo,RoleListTree } from '@/api/role/types'
import { giveRoleGroupTree,editRoleCont } from '@/api/role/index'
import type { FormInstance, FormRules } from 'element-plus'
const props = defineProps({
show:{
type: Boolean,
default: false,
},
groupInfo:{
type: Number,
default: 1,
}
})
const emits = defineEmits(["update:show","resthandel"]);
const isShow = computed({
get() {
return props.show;
},
set(val: boolean) {
emits("update:show", val);
},
});
const butLoading = ref(false)
const treeSelectData = ref<RoleListTree[]>([])
const formData = reactive<RoleFormInfo>({
id:"0",
name:"",
type:"2",
superior:"0",
sort:50
})
const ruleRoleFormRef = ref()
//
const rules = reactive<FormRules<RoleFormInfo>>({
name:[{ required: true, message: '请输入角色组名称', trigger: 'blur' },],
superior:[{ required: true, message: '请选择角色组归属', trigger: 'blur' },]
})
//
const handleClose = () => {
emits("update:show", false);
emits("resthandel");
treeSelectData.value=[];
butLoading.value = false;
}
//
const saveData = () =>{
butLoading.value = true
ruleRoleFormRef.value.validate((isValid: boolean)=>{
if(isValid){
formData.type=formData.type.toString()
editRoleCont(formData).then((data:any)=>{
if(data.code==0){
ElMessage({
message: data.msg,
type: 'success',
})
handleClose()
}else{
ElMessage({
message: data.msg,
type: 'success',
})
}
console.log("保存数据",data)
}).finally(()=>{ butLoading.value = false})
//
}else{
butLoading.value = false
}
})
}
onMounted(()=>{
if(props.groupInfo == 1){
treeSelectData.value.push({
id:"0",
label:"顶级分组",
types:2,
status:true,
superior:0,
sort:50,
children:[]
})
}
giveRoleGroupTree().then(({data})=>{
treeSelectData.value.push(...data)
if(props.groupInfo != 1 && Array.isArray(data)){
data.forEach((item:any,index:number)=>{
if(index == 0){
formData.superior = item.id
}
})
}
})
})
</script>
<template>
<el-dialog
v-model="isShow"
title="编辑角色"
width="500"
destroy-on-close
draggable
:before-close="handleClose"
>
<el-form
ref="ruleRoleFormRef"
style="width: 100%"
:model="formData"
:rules="rules"
label-width="auto"
>
<el-form-item label="所属角色组" prop="superior">
<el-tree-select
v-model="formData.superior"
:data="treeSelectData"
check-strictly
:render-after-expand="false"
style="width: 100%"
node-key="id"
/>
</el-form-item>
<el-form-item label="角色组名称" prop="name">
<el-input v-model="formData.name" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input-number v-model="formData.sort" :min="1" :max="1000000000000" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button v-loading="butLoading" @click="handleClose">取消</el-button>
<el-button v-loading="butLoading" type="primary" @click="saveData()">提交</el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped>
</style>

160
src/views/system/monitor/online/roleConfig/editRoleGroup.vue

@ -0,0 +1,160 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-23 13:00:55
@ 备注: 添加角色组
-->
<script lang='ts' setup>
import type { RoleFormInfo,RoleListTree } from '@/api/role/types'
import { giveRoleGroupTree,editRoleCont } from '@/api/role/index'
import type { FormInstance, FormRules } from 'element-plus'
const props = defineProps({
show:{
type: Boolean,
default: false,
},
data:{
type:Object,
default(){
return {}
}
},
groupInfo:{
type: Number,
default: 1,
}
})
const emits = defineEmits(["update:show","resthandel"]);
const isShow = computed({
get() {
return props.show;
},
set(val: boolean) {
emits("update:show", val);
},
});
const butLoading = ref(false)
const treeSelectData = ref<RoleListTree[]>([])
const formData = reactive<RoleFormInfo>({
id:"0",
name:"",
type:"2",
superior:"0",
sort:50
})
const ruleRoleFormRef = ref()
//
const rules = reactive<FormRules<RoleFormInfo>>({
name:[{ required: true, message: '请输入角色组名称', trigger: 'blur' },],
superior:[{ required: true, message: '请选择角色组归属', trigger: 'blur' },]
})
//
const handleClose = () => {
emits("update:show", false);
emits("resthandel");
treeSelectData.value=[];
butLoading.value = false;
}
//
const saveData = () =>{
butLoading.value = true
ruleRoleFormRef.value.validate((isValid: boolean)=>{
if(isValid){
editRoleCont(formData).then((data:any)=>{
if(data.code==0){
ElMessage({
message: data.msg,
type: 'success',
})
handleClose()
}else{
ElMessage({
message: data.msg,
type: 'success',
})
}
console.log("保存数据",data)
}).finally(()=>{ butLoading.value = false})
//
}else{
butLoading.value = false
}
})
}
onMounted(()=>{
if(props.data.type == 2){
treeSelectData.value.push({
id:"0",
label:"顶级分组",
types:2,
status:true,
superior:0,
sort:50,
children:[]
})
}
giveRoleGroupTree().then(({data})=>{
treeSelectData.value.push(...data)
if(props.data.type != 2 && Array.isArray(data)){
data.forEach((item:any,index:number)=>{
if(index == 0){
formData.superior = item.id
}
})
}
})
nextTick(()=>{
formData.id = props.data.id
formData.name = props.data.name
formData.type = props.data.type
formData.superior = props.data.superior
formData.sort = props.data.sort
})
})
</script>
<template>
<el-dialog
v-model="isShow"
title="编辑角色"
width="500"
destroy-on-close
draggable
:before-close="handleClose"
>
<el-form
ref="ruleRoleFormRef"
style="width: 100%"
:model="formData"
:rules="rules"
label-width="auto"
>
<el-form-item label="所属角色组" prop="superior">
<el-tree-select
v-model="formData.superior"
:data="treeSelectData"
check-strictly
:render-after-expand="false"
style="width: 100%"
node-key="id"
/>
</el-form-item>
<el-form-item label="角色组名称" prop="name">
<el-input v-model="formData.name" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input-number v-model="formData.sort" :min="1" :max="1000000000000" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button v-loading="butLoading" @click="handleClose">取消</el-button>
<el-button v-loading="butLoading" type="primary" @click="saveData()">提交</el-button>
</div>
</template>
</el-dialog>
</template>
<style lang='scss' scoped>
</style>

14
src/views/system/monitor/servicemonitor/index.vue

@ -0,0 +1,14 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-21 10:06:51
@ 备注: 在线人数
-->
<script lang='ts' setup>
</script>
<template>
<div>缓存监控</div>
</template>
<style lang='scss' scoped>
</style>

14
src/views/system/monitor/timing/index.vue

@ -0,0 +1,14 @@
<!--
@ 作者: 秦东
@ 时间: 2025-10-21 10:06:51
@ 备注: 在线人数
-->
<script lang='ts' setup>
</script>
<template>
<div>定时任务</div>
</template>
<style lang='scss' scoped>
</style>

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

@ -299,9 +299,13 @@ const changeKeyVal = (key: any, val: any, type: any, attribute: any) => {
}
}
console.log("改变表单值--flowFactor--->", isUpdateFlowChart);
// console.log("--flowFactor--->", isUpdateFlowChart);
let isTrue = false
if(changeFlowPick.value && Array.isArray(changeFlowPick.value) && changeFlowPick.value.includes(key)){
isTrue = true
}
//
if (isUpdateFlowChart) {
if (isUpdateFlowChart && isTrue) {
flowLoading.value = true;
//
gainFlowChart.conditionList = flowFactor;
@ -328,6 +332,7 @@ const saveDraftPage = (type: string, val?: any) => {
if (type === "success") {
}
};
const changeFlowPick = ref<string[]>([])
const isFlowTable = ref(false); //
//
const getTaskFormData = () => {
@ -341,6 +346,7 @@ const getTaskFormData = () => {
} else {
isFlowTable.value = false;
}
changeFlowPick.value = data.channerUpdate
gainFlowChart.id = data.tableFormPage.flowkeystr;
console.log("表单数据--->1", data.flowPage.flowList);
flowMap.value = data.flowPage.flowList;

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

@ -217,7 +217,7 @@ const handleAppPageClick = () => {};
const gainAppFormPageInit = () => {
if (props.menusInfo.id) {
gainAppPageInfo({ id: props.menusInfo.id }).then((data) => {
console.log("获取初始化表单数据----->", data);
// console.log("----->", data);
appInitData.value = data.data;
echatsViews.value = data.data.chartList;
if (data.data.page && data.data.pageList && data.data.appFlow) {

54
src/views/sysworkflow/lowcodepage/appPage/appPageForm/pageForm.vue

@ -154,7 +154,7 @@ const selectTemplate = (data: FormData) => {
const editversionstaus = (id: string) => {};
//
const openAceEditDrawer = (params: any) => {
console.log("打开脚本预览====:", params);
// console.log("====:", params);
const { type, direction, codeType, title, callback, content } = params;
drawer.direction = direction; // ltr/rtl
drawer.type = type; // type
@ -165,7 +165,7 @@ const openAceEditDrawer = (params: any) => {
let editData =
codeType === "json" ? json2string(content, true) : objToStringify(content, true);
console.log("打开脚本预览===1=:", type, editData);
// console.log("===1=:", type, editData);
switch (type) {
case "css":
editData = state.value.formData.config?.style || "";
@ -232,7 +232,7 @@ const openAceEditDrawer = (params: any) => {
break;
}
drawer.content = editData;
console.log("打开脚本预览==2=222=:", drawer.content);
// console.log("==2=222=:", drawer.content);
};
/**
@ 作者: 秦东
@ -315,7 +315,7 @@ const gainTableForm = () => {
.then((res: any) => {
if (res.code == 0) {
const result = res.data;
console.log("初始设计搜索时--1--->", result);
// console.log("--1--->", result);
formFieldAry.value = result.formField;
sunFormFieldAry.value = result.tableStructureMap;
// res.data=''
@ -483,7 +483,7 @@ function asfHandler(){
let configDataTitle_arr = state.value.formData.form.dataTitle
let configDataTitle = configDataTitle_arr.join(',');
console.log("config数据标题----->"+configDataTitle_arr)
// console.log("config----->"+configDataTitle_arr)
let relationArr: AsfRelation[] = []
@ -500,12 +500,12 @@ function asfHandler(){
configAllFields_arr.push(element.name)
});
let configAllFields = configAllFields_arr.join(',');
console.log("config所有控件名----->"+configAllFields_arr)
// console.log("config----->"+configAllFields_arr)
let configBgldbdtableKey = state.value.formData.form.name
console.log("config被关联的表单tablekey----->"+configBgldbdtableKey)
// console.log("configtablekey----->"+configBgldbdtableKey)
console.log(relationArr)
// console.log(relationArr)
@ -517,7 +517,7 @@ function asfHandler(){
*/
console.log(state.value.formData)
// console.log(state.value.formData)
}
@ -543,7 +543,7 @@ const editAppFormTable = () => {
menuId: props.menuId,
};
state.value.loading = true;
console.log("编辑App自定义表单",sendData)
// console.log("App",sendData)
editAppPageInfo(sendData)
.then((data: any) => {
state.value.loading = false;
@ -693,25 +693,25 @@ function optionsValue3Get3(data: any, fieldName: string) {
// 3174.15 2924.57 3326.15 3119.33
const dialogConfirm = (editVal: string) => {
// jsonstate.formData
console.log("生成脚本预览和导入", editVal);
console.log(
"生成脚本预览和导入----->",
drawer.type,
"==========",
drawer.callback,
"==========",
drawer
);
console.log("生成脚本预览和导入===========>", state.value.formData);
// console.log("", editVal);
// console.log(
// "----->",
// drawer.type,
// "==========",
// drawer.callback,
// "==========",
// drawer
// );
// console.log("===========>", state.value.formData);
try {
if (typeof drawer.callback === "function") {
console.log("1======2========>", drawer.codeType, stringToObj(editVal));
// console.log("1======2========>", drawer.codeType, stringToObj(editVal));
// callback
const newObj =
drawer.codeType === "json" ? string2json(editVal) : stringToObj(editVal);
drawer.callback(newObj);
console.log("1==============>");
// console.log("1==============>");
} else {
switch (drawer.type) {
case "css":
@ -720,7 +720,7 @@ const dialogConfirm = (editVal: string) => {
state.value.formData.config = {};
}
state.value.formData.config.style = editVal;
console.log("2==============>");
// console.log("2==============>");
break;
case "dict":
state.value.formDict = string2json(editVal);
@ -735,11 +735,11 @@ const dialogConfirm = (editVal: string) => {
state.value.formData.events = {};
}
state.value.formData.events[drawer.type] = stringToObj(editVal);
console.log("3==============>");
// console.log("3==============>");
break;
default:
state.value.formData = stringToObj(editVal);
console.log("4==============>");
// console.log("4==============>");
}
}
dialogCancel();
@ -754,8 +754,8 @@ const dialogConfirm = (editVal: string) => {
@ 功能: 级联选择与树
*/
const dialogConfirmTree = (val: treeStruct[], types: string) => {
console.log("级联选择与树", types);
console.log("级联选择与树", val);
// console.log("", types);
// console.log("", val);
// const newObj =
// drawer.codeType === 'json'? string2json(val): stringToObj(val)
// drawer.callback(newObj)

6
src/views/sysworkflow/lowcodepage/appPage/createAppFormPage.vue

@ -95,12 +95,18 @@ const state = reactive<formStruct>({
tableKey: "",
dsn: {},
},
qrCodeFlag: false,
qrCodeInside: false,
qrCodeOutside: false,
qrCodePrintStyle: undefined,
qrCodeShowFields: undefined
},
config: {
groupKey: props.formKey,
classify: 4,
},
styles: {
labelPosition: "",
divStyle: {},
labelStyle: {},
inputStyle: {},

24
src/views/sysworkflow/lowcodepage/pageFlow/appTableFlow.vue

@ -4,7 +4,7 @@
@ 备注: App表单有无流程处理
-->
<script lang="ts" setup>
import { nodeFlow, conditionInfo, nodelPeoples } from "@/api/taskapi/types";
import { nodeFlow, conditionInfo, nodelPeoples,nodePoweInfo } from "@/api/taskapi/types";
import request from "@/utils/request";
import {
haveCustomerFormVersion,
@ -66,6 +66,8 @@ const nextStep = ref<number>(0);
const currentProgress = ref<number>(1);
const nodeKey = ref<string>("");
const purviewAry = ref<any[]>([]);
const currterNodePower = ref<nodePoweInfo[]>([])
//
const gainFlowChart = reactive<nodeFlow>({
id: "0",
@ -115,6 +117,7 @@ const drawbox = computed({
},
});
const isFlowTable = ref(false); //
const changeFlowPick = ref<string[]>([])
//
const getTaskFormData = () => {
formLoading.value = true;
@ -129,7 +132,13 @@ const getTaskFormData = () => {
isFlowTable.value = false;
drawbox.value = 800;
}
nodeKey.value = data.flowPage.nodeKey;
if(data.tableFormPage.powerAry && Array.isArray(data.tableFormPage.powerAry) && data.tableFormPage.powerAry.length > 0){
currterNodePower.value = data.tableFormPage.powerAry
}
changeFlowPick.value = data.channerUpdate
nodeKey.value = data.flowPage.nodeKey?data.flowPage.nodeKey:"";
purviewAry.value = data.tableFormPage.powerAry;
gainFlowChart.id = data.tableFormPage.flowkeystr;
console.log("表单数据--->1", data.flowPage.flowList);
@ -376,9 +385,13 @@ const changeKeyVal = (key: any, val: any, type: any, attribute: any) => {
}
}
console.log("改变表单值--flowFactor--->", isUpdateFlowChart);
// console.log("--flowFactor--->", isUpdateFlowChart);
let isTrue = false
if(changeFlowPick.value && Array.isArray(changeFlowPick.value) && changeFlowPick.value.includes(key)){
isTrue = true
}
//
if (isUpdateFlowChart) {
if (isUpdateFlowChart && isTrue) {
flowLoading.value = true;
//
gainFlowChart.conditionList = flowFactor;
@ -623,6 +636,9 @@ function optionsValue3Get3(data: any, fieldName: string) {
}
}
}
provide('flowNodePower', currterNodePower)
provide('currentNodeKey', nodeKey)
</script>
<template>
<el-drawer

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

@ -4,7 +4,7 @@
@ 备注: 表单有无流程处理
-->
<script lang="ts" setup>
import { nodeFlow, conditionInfo, nodelPeoples } from "@/api/taskapi/types";
import { nodeFlow, conditionInfo, nodelPeoples,nodePoweInfo } from "@/api/taskapi/types";
import {
haveCustomerFormVersion,
generateFlow,
@ -56,7 +56,7 @@ const flowFactor = reactive<conditionInfo[]>([]); //表单组件
const flowMap = ref<any[]>(); //
const nextStep = ref<number>(0);
const currentProgress = ref<number>(1);
const nodeKey = ref<string>("");
const purviewAry = ref<any[]>([]);
//
const gainFlowChart = reactive<nodeFlow>({
@ -64,6 +64,8 @@ const gainFlowChart = reactive<nodeFlow>({
});
const nodelUserList = reactive<nodelPeoples[]>([]);
const nodeKey = ref<string>("");
const currterNodePower = ref<nodePoweInfo[]>([])
/**
@ 作者: 秦东
@ 时间: 2024-04-08 15:35:54
@ -108,6 +110,7 @@ const drawbox = computed({
},
});
const isFlowTable = ref(false); //
const changeFlowPick = ref<string[]>([])
//
const getTaskFormData = () => {
formLoading.value = true;
@ -120,7 +123,15 @@ const getTaskFormData = () => {
} else {
isFlowTable.value = false;
}
nodeKey.value = data.flowPage.nodeKey;
changeFlowPick.value = data.channerUpdate
// console.log("------------>",changeFlowPick.value)
if(data.tableFormPage.powerAry && Array.isArray(data.tableFormPage.powerAry) && data.tableFormPage.powerAry.length > 0){
currterNodePower.value = data.tableFormPage.powerAry
}
nodeKey.value = data.flowPage.nodeKey?data.flowPage.nodeKey:"";
purviewAry.value = data.tableFormPage.powerAry;
gainFlowChart.id = data.tableFormPage.flowkeystr;
@ -361,9 +372,14 @@ const changeKeyVal = (key: any, val: any, type: any, attribute: any) => {
}
}
let isTrue = false
if(changeFlowPick.value && Array.isArray(changeFlowPick.value) && changeFlowPick.value.includes(key)){
isTrue = true
}
// console.log("--flowFactor--->",flowFactor)
//
if (isUpdateFlowChart) {
if (isUpdateFlowChart && isTrue) {
flowLoading.value = true;
//
gainFlowChart.conditionList = flowFactor;
@ -514,6 +530,8 @@ function optionsValue3Get3(data: any, fieldName: string) {
/*
*/
provide('flowNodePower', currterNodePower)
provide('currentNodeKey', nodeKey)
</script>
<template>
<el-drawer

1
src/views/taskplatform/taskmanagement/flowStep.vue

@ -187,6 +187,7 @@ const updateNode = (val:any) =>{
</template>
</el-step>
</el-steps>
{{ openOrClose }}======={{ openclosebox }}
<OrgUserPage v-if="openOrClose" v-model:openclose="openOrClose" :preset-personnel="presetPersonnel" :selected-people="selectedPeople" @update-node="updateNode" />
<OrgAllUserPage v-if="openclosebox" v-model:openclosebox="openclosebox" :selected-people="selectedPeople" @update-node="updateNode" />
</div>

3
src/views/taskplatform/taskmanagement/lookFlowInfoApp.vue

@ -114,8 +114,7 @@ const gainFormData = () => {
currentProgress.value = props.flowLogInfo.currentStep;
// console.log("props.flowLogInfo--5-------->",props.flowLogInfo.mastesform)
formState.formData = stringToObj(props.flowLogInfo.mastesform);
gainTaskFormInfo({ id: props.flowLogInfo.mastersKeyStr })
gainTaskFormInfo({ id: props.flowLogInfo.mastersKeyStr ,runFlowId: props.flowLogInfo.runFlowIdStr })
.then((data: any) => {
if (data.data.logistrue) {
formState.formData.list.push(editLookFormCont);

67
src/widget/associatedforms/index.vue

@ -5,8 +5,8 @@
-->
<template>
<el-form-item v-bind="data.item" :prop="tProp || data.name" :class="config.className" :rules="itemRules as any"
:label="getLabel(data.item as FormItem)">
<input v-model="value" type="hidden">
:label="getLabel(data.item as FormItem)" v-if="judgeIsShow(data.name)">
<input v-model="value" type="hidden" :disabled="judgeIsEdit(data.name)">
<AssociatedForms :data="props.data" :form-props="formProps" :tablekey="props.tablekey"
:row-index="props.rowIndex" @value-changed="valueChanged" @value-changed-table="valueChangedTable"></AssociatedForms>
</el-form-item>
@ -21,6 +21,8 @@ import {
} from '@/api/DesignForm/utils'
import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -208,7 +210,66 @@ const valueChangedTable = (val: any) => {
}
//
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<style lang='scss' scoped>

67
src/widget/baidumap/index.vue

@ -11,6 +11,7 @@
:class="config.className"
:rules="itemRules"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
@ -21,9 +22,10 @@
<template v-else>
<input v-model="value" type="hidden" />
<input v-model="lngLat" type="hidden" />
<el-input v-model="address" >
<el-input v-model="address" :disabled="judgeIsEdit(data.name)">
<template #append>
<el-button class="fa fa-map-marker" @click="openPickMap" />
<el-button class="fa fa-map-marker" @click="openPickMap" :disabled="judgeIsEdit(data.name)"/>
</template>
</el-input>
<!-- <div :id="mapId" ref="myBaiduMapView" class="smallMapView"></div> -->
@ -42,6 +44,7 @@ import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import PickMap from './pickmap.vue'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
@ -269,6 +272,66 @@ const updateMapInfo = (ads:string,lng:any,lat:any) =>{
latitude.value = lat
// mapInit(mapObject)
}
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<style lang='scss' scoped>

65
src/widget/baidumap/indexLook.vue

@ -4,18 +4,81 @@
@ 备注:
-->
<template>
<div>
<div >
<el-input v-model="address" disabled />
<div :id="mapId" ref="myBaiduMapView" class="smallMapView"></div>
</div>
</template>
<script lang='ts' setup>
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
address: any
}>(),
{}
)
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
let mapId = "baiduMapView"+ Math.ceil(Math.random()*100000000000000);
const mapObject = ref<any>()
const mapShow = ref(false)

68
src/widget/carousel/index.vue

@ -10,8 +10,9 @@
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<input v-model="value" type="hidden" >
<input v-model="value" :disabled="judgeIsEdit(data.name)" type="hidden" >
</el-form-item>
<LowcodeCarousel :data="props.data"></LowcodeCarousel>
</template>
@ -23,6 +24,8 @@ import {
} from '@/api/DesignForm/utils'
import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -55,9 +58,9 @@ const value = computed({
} else if(formProps.value.model[props.data.name]) {
return formProps.value.model[props.data.name]
}else{
let imgAry = []
let imgAry: any[] = []
if(props.data && props.data.control && props.data.control.carsuselConfigArr && Array.isArray(props.data.control.carsuselConfigArr)){
props.data.control.carsuselConfigArr.forEach((item) => {
props.data.control.carsuselConfigArr.forEach((item: { imgUrl: any; }) => {
imgAry.push(item.imgUrl)
})
}
@ -162,7 +165,66 @@ const formatCustomRules = () => {
//
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}

67
src/widget/digitpage/index.vue

@ -10,6 +10,7 @@
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>
@ -20,12 +21,12 @@
</template>
<div v-if="type === 4" class="form-value" v-html="value"></div>
<template v-else>
<el-input v-model="value" :style="getFormItemInputStyle(configStyle,2)" :input-style="getFormItemInputStyle(configStyle,3)" oninput ="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^\./g, '')" :placeholder="data.control.placeholder?data.control.placeholder:'请输入'+getLabel(data.item)"></el-input>
<el-input v-model="value" :disabled="judgeIsEdit(data.name)" :style="getFormItemInputStyle(configStyle,2)" :input-style="getFormItemInputStyle(configStyle,3)" oninput ="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^\./g, '')" :placeholder="data.control.placeholder?data.control.placeholder:'请输入'+getLabel(data.item)"></el-input>
</template>
</el-form-item>
</template>
<script lang='ts' setup>
import { AnalysisCss,AnalysisInputCss } from '@/components/DesignForm/public/form/calculate/cssInfo.ts'
import { AnalysisCss,AnalysisInputCss } from '@/components/DesignForm/public/form/calculate/cssInfo'
import { orgInfo } from '@/api/hr/org/type'
import { getOrgTreeList } from '@/api/hr/org/index'
import {
@ -35,6 +36,10 @@ import {
import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -190,7 +195,65 @@ const getFormItemInputStyle = (ele: any,sty:number) => {
return AnalysisInputCss(ele?.inputStyle,sty)
}
}
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<style lang='scss' scoped>

63
src/widget/lowcodeimage/index.vue

@ -11,9 +11,10 @@
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<el-input v-show="false" v-model="imgUrl" placeholder="请输入"></el-input>
<el-input v-show="false" v-model="imgUrl" placeholder="请输入" :disabled="judgeIsEdit(data.name)"></el-input>
<LowcodeImage :data="props.data" v-model:imgUrl="imgUrl" :tablekey="props.tablekey" :form-table-set-up="props.formTableSetUp" @updateCont= "updateCont" ></LowcodeImage>
</el-form-item>
@ -27,6 +28,7 @@ import {
} from '@/api/DesignForm/utils'
import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -169,7 +171,66 @@ const updateCont = (val:any) =>{
value.value = val
}
//
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<style lang='scss' scoped>

64
src/widget/lowcodetransfer/index.vue

@ -10,8 +10,9 @@
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<input v-model="value" type="hidden" >
<input v-model="value" :disabled="judgeIsEdit(data.name)" type="hidden" >
</el-form-item>
<LowcodeTransfer :key="componentKey" :data="props.data" :selected-value="value" @checked-id-list-changed="checkedIdListChangedIndex" @update-model="updateModel" @re-render-component="reRenderComponent"></LowcodeTransfer>
@ -24,6 +25,8 @@ import {
} from '@/api/DesignForm/utils'
import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -260,7 +263,66 @@ const formatCustomRules = () => {
//
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}

61
src/widget/number/index.vue

@ -15,6 +15,7 @@ import { useRoute } from "vue-router";
import { FormItem, FormList } from "@/api/DesignForm/types";
import { gainNumber } from "@/api/DesignForm/requestapi";
import Tooltips from "@/components/DesignForm/tooltip.vue";
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
@ -198,6 +199,65 @@ const getFormItemLableStyle = (ele: any) => {
const configStyle = computed(() => {
return props.data.styles || {}
})
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<el-form-item
@ -206,6 +266,7 @@ const configStyle = computed(() => {
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label>
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>

2
src/widget/org/cont.vue

@ -119,7 +119,7 @@ onBeforeMount(() => {
//pickOrgVal(props.orgid)
getOrgTreeList({ orgid: 309 })
.then(({ data }) => {
console.log("行政组织树对照值", data);
// console.log("", data);
orgTreeList.value = data;
})

68
src/widget/org/index.vue

@ -14,6 +14,9 @@ import {
import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -173,6 +176,66 @@ onMounted(() => {
// console.log("");
haveOrgTreeInfo();
});
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<el-form-item
@ -181,6 +244,7 @@ onMounted(() => {
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
{{ getLabel(data.item) }}
@ -194,9 +258,9 @@ onMounted(() => {
:props="orgTreeProps"
:data="orgTreeList"
check-strictly
disabled
:render-after-expand="false"
clearable
disabled
/>
</template>
<template v-else>
@ -208,7 +272,7 @@ onMounted(() => {
:data="orgTreeList"
check-strictly
:render-after-expand="false"
clearable
:disabled="judgeIsEdit(data.name)"
/>
</template>
</el-form-item>

63
src/widget/orgcitys/index.vue

@ -15,6 +15,7 @@ import { FormItem, FormList } from '@/api/DesignForm/types'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import areaObj from './pca.json';
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
@ -252,6 +253,67 @@ const initAddressData = () =>{
province.value = provinceArr[0]
fullAddress.value = ""
}
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<el-form-item
@ -260,6 +322,7 @@ const initAddressData = () =>{
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
{{ getLabel(data.item) }}

164
src/widget/systemunit/deptOrgPage.vue

@ -15,6 +15,7 @@ import { getOrgEveryonePeople } from '@/api/displayboardapi/indexapi'
import { govthree } from '@/api/opk/opk/api'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
@ -161,7 +162,13 @@ const orgTree ={
label: 'name',
children:'child',
}
interface TreeNodeInfo {
value: number|string;
label: string;
}
const myOrg = ref("")
const orgLoading = ref(false)
const selectList = ref<TreeNodeInfo[]>([]);
onMounted(()=>{
orgLoading.value = true
getUserCont()
@ -175,30 +182,127 @@ onMounted(()=>{
if (orgId == null || orgId == "" || orgId == "0" || orgId == 0){
orgId = ""
}
nextTick(()=>{
govthree({id:companyId,all:1})
.then(({data})=>{
// console.log("",data,value.value)
// console.log("---->",Number.isNaN(value.value),isNaN(value.value))
orgList.value = data
if(Number.isNaN(value.value) || isNaN(value.value) || value.value == null || value.value == "" || value.value == "0" || value.value == 0 || value.value == undefined ){
nextTick(()=>{
value.value = orgId
// console.log("",orgList.value)
// console.log("",value.value)
// console.log("1111",orgId)
})
}
})
.finally(()=>{
orgLoading.value = false
})
})
selectList.value=[];
if(data.data.organization != "" && data.data.organizationgname != ""){
selectList.value.push({
value: data.data.organization*1,
label: data.data.organizationgname,
})
value.value = data.data.organization
myOrg.value = data.data.organizationgname
}else if(data.data.department != "" && data.data.departmentname != ""){
selectList.value.push({
value: data.data.department*1,
label: data.data.departmentname,
})
value.value = data.data.department
myOrg.value = data.data.department
}else if(data.data.company != "" && data.data.companyname != ""){
selectList.value.push({
value: data.data.company*1,
label: data.data.companyname,
})
value.value = data.data.company
myOrg.value = data.data.companyname
}else{
selectList.value.push({
value: 309,
label: "恒信高科",
})
value.value = "309"
myOrg.value = "恒信高科"
}
// nextTick(()=>{
// govthree({id:companyId,all:1})
// .then(({data})=>{
// // console.log("",data,value.value)
// // console.log("---->",Number.isNaN(value.value),isNaN(value.value))
// orgList.value = data
// if(Number.isNaN(value.value) || isNaN(value.value) || value.value == null || value.value == "" || value.value == "0" || value.value == 0 || value.value == undefined ){
// nextTick(()=>{
// value.value = orgId
// // console.log("",orgList.value)
// // console.log("",value.value)
// // console.log("1111",orgId)
// })
// }
// })
// .finally(()=>{
// orgLoading.value = false
// })
// })
})
})
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<el-form-item
@ -207,6 +311,7 @@ onMounted(()=>{
:class="config.className"
:label="getLabel(data.item as FormItem)"
:rules="itemRules as any"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>
@ -216,7 +321,20 @@ onMounted(()=>{
<span :style="getFormItemLableStyle(configStyle)" >{{ getLabel(data.item) }}</span>
</template>
<el-tree-select
<div class="inputbox" v-if="type!=4" style="width: 100%">
<el-select v-model="value" disabled placeholder="所属行政组织" style="width: 100%">
<el-option
v-for="item in selectList"
:key="item.value"
:label="item.label"
:value="item.value"
loading="peopleLoading"
/>
</el-select>
</div>
<el-text v-else class="wordColor">{{ myOrg }}</el-text>
<!-- <el-tree-select
v-loading="orgLoading"
element-loading-text="Loading..."
v-model="value"
@ -229,7 +347,7 @@ onMounted(()=>{
check-strictly
disabled
/>
/> -->
</el-form-item>
</template>

61
src/widget/systemunit/deptOrgSearch.vue

@ -7,6 +7,7 @@
import { orgAndPeople } from "@/api/displayboardapi/types";
import { getPeopleKey, getUserCont } from "@/api/hr/people/index";
import { govthree } from "@/api/opk/opk/api";
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
@ -82,6 +83,66 @@ onMounted(() => {
orgLoading.value = false;
});
});
//
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<el-tree-select

62
src/widget/systemunit/editTime.vue

@ -12,6 +12,7 @@ import { getPeopleKey,getUserCont } from '@/api/hr/people/index'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -184,6 +185,66 @@ const updateModel = (val: any) => {
attribute: controlAttribute
})
}
//
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<el-form-item
@ -192,6 +253,7 @@ const updateModel = (val: any) => {
:class="config.className"
:label="getLabel(data.item as FormItem)"
:rules="itemRules as any"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>

61
src/widget/systemunit/founder.vue

@ -11,6 +11,7 @@ import validate from '@/api/DesignForm/validate'
import { getPeopleKey,getUserCont } from '@/api/hr/people/index'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
@ -169,8 +170,65 @@ const getFormFounder = (val: any) => {
})
}
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<div>
@ -180,6 +238,7 @@ const getFormFounder = (val: any) => {
:class="config.className"
:label="getLabel(data.item as FormItem)"
:rules="itemRules as any"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>

64
src/widget/systemunit/founderTime.vue

@ -12,6 +12,8 @@ import { getPeopleKey,getUserCont } from '@/api/hr/people/index'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -173,6 +175,67 @@ const getCurrentTime = () => {
return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
}
//
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<el-form-item
@ -181,6 +244,7 @@ const getCurrentTime = () => {
:class="config.className"
:label="getLabel(data.item as FormItem)"
:rules="itemRules as any"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>

67
src/widget/systemunit/ownerPage.vue

@ -14,6 +14,7 @@ import { orgAndPeople } from '@/api/displayboardapi/types'
import { getOrgEveryonePeople } from '@/api/displayboardapi/indexapi'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
@ -201,6 +202,66 @@ const orgTreeProps ={
label: 'name',
children:'child',
}
//
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<el-form-item
@ -209,6 +270,7 @@ const orgTreeProps ={
:class="config.className"
:label="getLabel(data.item as FormItem)"
:rules="itemRules as any"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>
@ -219,8 +281,6 @@ const orgTreeProps ={
</template>
<el-tree-select
v-loading="peopleLoading"
element-loading-text="Loading..."
v-model="value"
:data="orgPeople"
:props="orgTreeProps"
@ -228,8 +288,7 @@ const orgTreeProps ={
:filterable="true"
node-key="id"
clearable
:disabled="type == 4"
:disabled="type == 4 || judgeIsEdit(data.name)"
/>
</el-form-item>

73
src/widget/urllink/index.vue

@ -12,6 +12,7 @@ import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import Tooltips from '@/components/DesignForm/tooltip.vue'
import { AnalysisCss,AnalysisInputCss } from '@/components/DesignForm/public/form/calculate/cssInfo'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -168,6 +169,65 @@ const getFormItemLableStyle = (ele: any) => {
const configStyle = computed(() => {
return props.data.styles || {}
})
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<template>
<el-form-item
@ -176,21 +236,16 @@ const configStyle = computed(() => {
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<template v-if="config.help" #label >
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>
<Tooltips :content="config.help" />
</template>
<template v-else #label>
<span :style="getFormItemLableStyle(configStyle)">{{ getLabel(data.item) }}</span>
</template>
<!-- <div v-if="type === 4" class="form-value" v-html="value"></div> -->
<div >
<el-input v-model="value">
<div v-if="type === 4" class="form-value" v-html="value"></div>
<template v-else>
<el-input v-model="value" :disabled="judgeIsEdit(data.name)">
<template #prepend>
<el-select v-model="urlVal" style="width: 115px">
<el-option label="http://" value="http://" />

64
src/widget/videoupload/index.vue

@ -10,6 +10,7 @@
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<input v-model="value" type="hidden" />
<VideoUploadPlay
@ -25,6 +26,9 @@ import VideoUploadPlay from "./videoUploadPlay.vue";
import { constControlChange, constFormProps } from "@/api/DesignForm/utils";
import validate from "@/api/DesignForm/validate";
import { FormItem, FormList } from "@/api/DesignForm/types";
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList;
@ -165,6 +169,66 @@ const formatCustomRules = () => {
});
return temp;
};
//
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<style lang="scss" scoped>
.imgbox {

67
src/widget/writingboard/index.vue

@ -10,8 +10,9 @@
:class="config.className"
:rules="itemRules as any"
:label="getLabel(data.item as FormItem)"
v-if="judgeIsShow(data.name)"
>
<input v-model="value" type="hidden" >
<input v-model="value" :disabled="judgeIsEdit(data.name)" type="hidden" >
</el-form-item>
<PaintBoard :img-src="value" @updataconbt="qianming" />
@ -24,6 +25,9 @@ import {
} from '@/api/DesignForm/utils'
import validate from '@/api/DesignForm/validate'
import { FormItem, FormList } from '@/api/DesignForm/types'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
const props = withDefaults(
defineProps<{
data: FormList
@ -164,6 +168,67 @@ const qianming = (val:any) =>{
value.value = val
}
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可编辑
*/
const judgeIsEdit = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = false
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = !item.isEdit
}
})
return isOk
}else{
return false
}
}
</script>
<style lang='scss' scoped>
.imgbox{

19
vite.config.ts

@ -13,6 +13,8 @@ import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
import UnoCSS from "unocss/vite";
import { terser } from 'rollup-plugin-terser';
import path from "path";
const pathSrc = path.resolve(__dirname, "src");
@ -139,7 +141,22 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
symbolId: "icon-[dir]-[name]",
}),
],
build: {
terserOptions: {
compress: {
drop_console: true, // 关闭所有的 console.log 打印
},
},
rollupOptions: {
plugins: [
terser({
compress: {
drop_console: true, // 关闭所有的 console.log 打印
},
}),
],
},
},
optimizeDeps: {
include: [
"vue",

196
vite.config.ts.timestamp-1760425521146-db754b838977.mjs

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save