94395ee8 by xukangle

Merge branch 'develop' into dev_20241202_xukangle

2 parents a277e5d1 74846114
......@@ -5,6 +5,7 @@ VITE_APP_TITLE = 数据资产管理系统
# VITE_API_BASEURL = https://swzl-test.csbr.cn/api
# VITE_API_BASEURL = http://localhost:9000
VITE_API_BASEURL = http://192.168.6.20:28052/
# 平台用户 接口请地址
VITE_APP_USER_API_BASEURL = gateway-server
......@@ -13,21 +14,31 @@ VITE_APP_AUTH_URL = 'ms-daop-auth-service'
# 系统管理 接口地址
VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service
# #配置服务
# VITE_APP_CONFIG_URL = 'ms-daop-configure-service'
# 文件上传请求地址
VITE_APP_ADD_FILE = ms-daop-import-data-service
# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
VITE_APP_DEBUG_TOOL =
# 是否开启代理
VITE_OPEN_PROXY = true
# vite serve base
VITE_SERVE_BASE = /
# 流程设计访问地址
VITE_BPMN_URL = https://workflow-swzl-test.csbr.cn
#流程服务
VITE_APP_WORK_FLOW_URL = 'ms-daop-workflow-service'
# 数据标准、元数据、数据目录 接口地址
VITE_APP_PLAN_BASEURL = ms-daop-zcgl-data-plan-service
#数据质量接口地址
VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service
......@@ -44,14 +55,18 @@ VITE_APP_CONFIG_URL = 'ms-daop-configure-service'
# 文件上传下载接口地址
VITE_APP_COMMON_URL = 'ms-daop-common-service'
#camunda服务
VITE_APP_CAMUNDA_URL = 'ms-daop-camunda-server'
#门户接口
VITE_API_PORTALURL = https://swzl-test.zgsjzc.com/portal
#数据资产接口地址
VITE_API_ASSET_BASEURL = ms-swzl-data-dam-service
#数据同步接口地址
VITE_API_DATA_SYNC = ms-swzl-data-sync-service
#消息接口
VITE_API_MESSAGE = ms-swzl-message-notification-service
......
......@@ -3,22 +3,31 @@ VITE_APP_TITLE = 数据资产管理系统
# 接口域名
VITE_API_BASEURL = http://192.168.6.20:28052/
# VITE_API_BASEURL = http://49.4.26.201:31709/
# # 平台用户 接口请地址
# VITE_APP_USER_API_BASEURL = gateway-server
# # 系统管理 接口地址
# VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service
# # 文件上传请求地址
# VITE_APP_ADD_FILE = ms-daop-import-data-service
# # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
# VITE_APP_DEBUG_TOOL =
# # 是否开启代理
# VITE_OPEN_PROXY = true
# # vite serve base
# VITE_SERVE_BASE = /
# # 流程设计访问地址
# VITE_BPMN_URL = https://workflow.zgsjzc.com
# # 数据标准、元数据、数据目录 接口地址
# VITE_APP_PLAN_BASEURL = ms-daop-jgjf-data-plan-service
# #数据质量接口地址
# VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service
......@@ -27,10 +36,13 @@ VITE_APP_TITLE = 数据资产管理系统
# #数据资产接口地址
# VITE_API_ASSET_BASEURL = ms-swzl-data-dam-service
# #数据同步接口地址
# VITE_API_DATA_SYNC = ms-swzl-data-sync-service
# #消息接口
# VITE_API_MESSAGE = ms-swzl-message-notification-service
# 平台用户 接口请地址
VITE_APP_USER_API_BASEURL = gateway-server
......@@ -42,16 +54,25 @@ VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service
# 文件上传请求地址
VITE_APP_ADD_FILE = ms-daop-import-data-service
# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
VITE_APP_DEBUG_TOOL =
# 是否开启代理
VITE_OPEN_PROXY = true
# vite serve base
VITE_SERVE_BASE = /
# 流程设计访问地址
VITE_BPMN_URL = https://workflow-swzl-test.csbr.cn
#流程服务
VITE_APP_WORK_FLOW_URL = 'ms-daop-workflow-service'
# 数据标准、元数据、数据目录 接口地址
VITE_APP_PLAN_BASEURL = ms-daop-zcgl-data-plan-service
#数据质量接口地址
VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service
......@@ -68,6 +89,9 @@ VITE_APP_DATA_SOURCE_URL = ms-daop-data-source-service
# 文件上传下载接口地址
VITE_APP_COMMON_URL = 'ms-daop-common-service'
#camunda服务
VITE_APP_CAMUNDA_URL = 'ms-daop-camunda-server'
#门户接口
VITE_API_PORTALURL = https://swzl-test.zgsjzc.com/portal
#新门户接口
......@@ -77,10 +101,16 @@ VITE_API_NEW_PORTAL = ms-daop-zcgl-asset-dam-service
VITE_APP_PERSONAL_URL = 'ms-daop-personel-service'
#数据资产接口地址
VITE_API_ASSET_BASEURL = ms-swzl-data-dam-service
#数据同步接口地址
VITE_API_DATA_SYNC = ms-swzl-data-sync-service
#消息接口
VITE_API_MESSAGE = ms-swzl-message-notification-service
#企业信息接口
VITE_APP_PERSONAL_URL = ms-daop-personel-service
# 是否在打包时生成 sourcemap
VITE_BUILD_SOURCEMAP = false
# 是否在打包时开启压缩,支持 gzip 和 brotli
......
......@@ -9,6 +9,7 @@ export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
ApprovalProcess: typeof import('./src/components/ApprovalProcess/src/ApprovalProcess.vue')['default']
Auth: typeof import('./src/components/Auth/index.vue')['default']
AuthAll: typeof import('./src/components/AuthAll/index.vue')['default']
ContentWrap: typeof import('./src/components/ContentWrap/src/ContentWrap.vue')['default']
......@@ -31,6 +32,7 @@ declare module '@vue/runtime-core' {
ImageUpload: typeof import('./src/components/ImageUpload/index.vue')['default']
LineageGraph: typeof import('./src/components/LineageGraph/index.vue')['default']
ListPanel: typeof import('./src/components/ListPanel/index.vue')['default']
LookBpmn: typeof import('./src/components/ApprovalProcess/src/components/LookBpmn.vue')['default']
Month: typeof import('./src/components/Schedule/component/month.vue')['default']
NotAllowed: typeof import('./src/components/NotAllowed/index.vue')['default']
PageHeader: typeof import('./src/components/PageHeader/index.vue')['default']
......
......@@ -22,7 +22,11 @@
"@vueuse/integrations": "^10.1.0",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"ant-design-vue": "^3.2.20",
"axios": "^1.4.0",
"bpmn-js": "^8.10.0",
"bpmn-js-token-simulation": "^0.10.0",
"camunda-bpmn-moddle": "^4.4.0",
"crypto-js": "^4.2.0",
"dayjs": "^1.11.7",
"echarts": "^5.4.3",
......@@ -32,6 +36,7 @@
"hotkeys-js": "^3.10.2",
"html2canvas": "^1.4.1",
"insert-css": "^2.0.0",
"jquery": "^3.7.1",
"lodash-es": "^4.17.21",
"md5": "^2.3.0",
"mitt": "^3.0.0",
......
......@@ -36,7 +36,7 @@ export const registerDelete = (params) => request({
});
/** 获取当前会员审批流程信息 */
export const getTenantApprove = (params={}) => request({
export const getTenantApprove = (params = {}) => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/register-approve/get-node`,
method: 'get',
params
......@@ -210,7 +210,7 @@ export const getServiceDetail = (params) => request({
export const getRegisterCatalogList = () => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-catalog-table/dam-list?isRegister=${'Y'}`,
method: 'get'
})
})
/*** -------------------- 资产目录管理 ------------------------ */
......@@ -241,8 +241,9 @@ export const dataSourcesList = [
// data
// })
export const getParamsList = (params) => request({
url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType?dictType=${params.dictType}`,
url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType`,
method: 'get',
params
})
/** 获取参数类型列表 */
......@@ -251,10 +252,11 @@ export const getParamsList = (params) => request({
// method: 'post',
// data: { paramCode: "DAM-TYPE" }
// })
export const getDamTypesList = (params) => request({
url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType?dictType=${params.dictType}`,
method: 'get',
})
// export const getDamTypesList = (params) => request({
// url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType`,
// method: 'get',
// params
// })
/** 获取所属主题的四级参数类型列表 */
// export const getSubjectDoaminList = () => request({
......@@ -262,10 +264,11 @@ export const getDamTypesList = (params) => request({
// method: 'post',
// data: { paramCode: "SUBJECT-DOMAIN" }
// })
export const getSubjectDoaminList = (params) => request({
url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType?dictType=${params.dictType}`,
method: 'get',
})
// export const getSubjectDoaminList = (params) => request({
// url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType`,
// method: 'get',
// params
// })
// 获取数据类型的接口
// export const getDataTypeList = () => request({
......@@ -273,11 +276,12 @@ export const getSubjectDoaminList = (params) => request({
// method: 'post',
// data: { paramCode: "DATA_TYPE" }
// })
// 新获取数据类型的接口
export const getDataTypeList = (params) => request({
url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType?dictType=${params.dictType}`,
method: 'get',
})
// // 新获取数据类型的接口
// export const getDataTypeList = (params) => request({
// url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType`,
// method: 'get',
// params
// })
export const getDamCatalogTable = (params) => request({
......@@ -302,19 +306,19 @@ export const registerCatalogSave = (params) => request({
/** 验证资产名称是否存在 */
export const existDamName = (params) => request({
url:`${import.meta.env.VITE_API_NEW_PORTAL}/dam-catalog-table/exists?damName=${params}`,
url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-catalog-table/exists?damName=${params}`,
method: 'get'
});
/** 获取资产目录基本信息的详情 */
export const getRegisterCatalogDetail = (guid) => request({
url:`${import.meta.env.VITE_API_NEW_PORTAL}/dam-catalog-table/detail?guid=${guid}`,
url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-catalog-table/detail?guid=${guid}`,
method: 'get'
});
/** 获取资产目录表的详情 */
export const getRegisterCatalogTableDetail = (subjectGuid) => request({
url:`${import.meta.env.VITE_API_NEW_PORTAL}/dam-catalog-table/get-table-detail?subjectGuid=${subjectGuid}`,
url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-catalog-table/get-table-detail?subjectGuid=${subjectGuid}`,
method: 'get'
});
......@@ -379,3 +383,9 @@ export const updateDissentState = (params) => request({
method: 'post',
data: params
})
// 获取数交所数据
export const getExchangeList = () => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/register-base/register-num`,
method: 'post'
})
......
......@@ -64,8 +64,7 @@ export const getQualityTableRule = (params) => request({
/** 删除质检表规则 */
export const deleteQualityTableRule = (params) => request({
url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model/conf/del?ruleConfGuid=${params}`,
method: 'delete',
data: params
method: 'delete'
})
/** 更新质检表规则的禁用和启用状态 */
......
......@@ -33,13 +33,6 @@ export const getSystemMenu = (params) => {
});
};
export const getCurrentUserInfo = (tenantGuid) => {
return request({
url: `${import.meta.env.VITE_APP_PERSONAL_URL}/staff/data/get-current-staff?tenantGuid=${tenantGuid}`,
method: "post",
});
};
// 获取当前用户对应的产品和菜单
export const getUserInfo = () => {
return request({
......@@ -275,3 +268,17 @@ export const getAllFlowData = (params) => request({
method: 'get',
params
})
// 获取资产/价值评估机构数据
export const getSingleList = (params) => request({
url: `${import.meta.env.VITE_APP_PERSONAL_URL}/tenant/singlePage`,
method: 'post',
data: params
})
// 获取当前登录人信息
export const getCurrentUserInfo = (params) => {
return request({
url: `${import.meta.env.VITE_APP_PERSONAL_URL}/staff/data/get-current-staff`,
method: "post",
params
});
};
......
import request from "@/utils/request";
import useUserStore from "@/store/modules/user";
const userStore = useUserStore()
const userData = JSON.parse(userStore.userData)
// 获取流程详情。
export const getProcessFlowDetail = (params) => request({
url: `${import.meta.env.VITE_APP_WORK_FLOW_URL}/work-flow/detail/?approvalGuid=${params}`,
method: 'post',
})
// 审批通过
export const passFlowData = (params) => request({
url: `${import.meta.env.VITE_APP_WORK_FLOW_URL}/work-flow/data/allow-flow`,
method: 'post',
data: params
})
// 审批驳回
export const rejectFlowData = (params) => request({
url: `${import.meta.env.VITE_APP_WORK_FLOW_URL}/work-flow/data/backup-flow`,
method: 'post',
data: params
})
// 审批撤销
export const revokeFlowData = (params) => request({
url: `${import.meta.env.VITE_APP_WORK_FLOW_URL}/work-flow/data/canal-flow`,
method: 'post',
data: params
})
// 删除流程
export const deleteFlowData = (params) => request({
url: `${import.meta.env.VITE_APP_WORK_FLOW_URL}/work-flow/data/del`,
method: 'post',
params
})
export const getFlowData = (params) => request({
url: `${import.meta.env.VITE_APP_WORK_FLOW_URL}/work-flow/data/page-list`,
method: 'post',
data: params
})
export const getCamundaDeploymentId = (flowType) => request({
url: `${import.meta.env.VITE_APP_WORK_FLOW_URL}/work-flow/data/get-camunda-deployment-id`,
method: 'post',
data: {
tenantGuid: userData.tenantGuid,
flowType:flowType,
staffGuid: userData.staffGuid,
}
})
export const getDetailDataPromise = (deploymentId)=> request({
url: `${import.meta.env.VITE_APP_CAMUNDA_URL}/process-definition/get-detail?deploymentId=${deploymentId}`,
method: 'get',
})
export const getProcessNodesPromise = (params)=>request({
url: `${import.meta.env.VITE_APP_CAMUNDA_URL}/process-definition/get-process-nodes`,
method: 'post',
data: params
})
import ApprovalProcess from './src/ApprovalProcess.vue'
export { ApprovalProcess }
<script setup lang="tsx">
import LookBpmn from "./components/LookBpmn.vue";
import useProcessStore from '@/store/modules/process'
import { cloneDeep } from 'lodash-es';
import { getProcessNodesPromise } from "@/api/modules/workFlowService"
const processStore = useProcessStore()
const props = defineProps({
deploymentId: {
type: String,
default: ''
},
processInstanceId: {
type: String,
default: ''
},
});
const tableData = ref<any>([])
const lookBpmnRef = ref()
// const contentRef = ref();
// const { height: contentHeight } = useElementSize(contentRef);
const renderProcessNodes = () => {
let param = {
deploymentId: props.deploymentId || null,
processInstanceId: props.processInstanceId || null,
};
getProcessNodesPromise(param).then((res:any) => {
if (res.code === "00000") {
let data = res.data;
if (data) {
data.forEach((i, index) => {
i.id = i.activityId;
i.staffName = "";
if (i.staffVOS && i.staffVOS.length > 1) {
i.staffVOS.forEach((j) => {
j.id = j.staffGuid;
j.processName = i.processName;
if (j.approvalState) {
i.approvalState = j.approvalState;
i.approvalSuggest = j.approvalSuggest;
i.approvalTime = j.approvalTime;
i.staffName = j.staffName;
}
});
i.children = i.staffVOS;
} else {
if (i.staffVOS) {
i.approvalState = i.staffVOS[i.staffVOS.length - 1].approvalState;
i.approvalSuggest =
i.staffVOS[i.staffVOS.length - 1].approvalSuggest;
i.approvalTime = i.staffVOS[i.staffVOS.length - 1].approvalTime;
i.staffName = i.staffVOS[i.staffVOS.length - 1].staffName;
} else {
if (i.organisationVOS) {
i.approvalState = "";
i.approvalSuggest = "";
i.approvalTime = "";
if (i.organisationVOS.length > 1) {
i.staffName =
i.organisationVOS[0].organisationName +
"等" +
i.organisationVOS.length +
"个部门";
} else {
i.staffName = i.organisationVOS[0].organisationName;
}
} else if (i.positionVOS != null && i.positionVOS.length > 0) {
i.approvalState = "";
i.approvalSuggest = "";
i.approvalTime = "";
if (i.positionVOS.length > 1) {
if (i.staffName) {
i.staffName =
i.staffName +
"," +
i.positionVOS[0].positionName +
"等" +
i.positionVOS.length +
"个岗位";
} else {
i.staffName = i.positionVOS[0].positionName;
}
} else {
if (i.staffName) {
i.staffName =
i.staffName + "," + i.positionVOS[0].positionName;
} else {
i.staffName = i.positionVOS[0].positionName;
}
}
} else if (i.candidateUsers != null && i.candidateUsers != "") {
i.approvalState = "";
i.approvalSuggest = "";
i.approvalTime = "";
if (i.candidateUsers.length > 1) {
i.staffName =
i.candidateUsers[0].staffName +
"等" +
i.candidateUsers.length +
"个人员";
if (i.candidateUsers) {
i.candidateUsers.forEach((j) => {
j.id = j.staffGuid;
j.processName = i.processName;
});
}
i.children = i.candidateUsers;
} else {
i.staffName = i.candidateUsers[0].staffName;
}
}
}
}
});
}
tableData.value = data
processStore.processNodes = cloneDeep(tableData.value)
localStorage.setItem('processTableData',JSON.stringify(tableData.value));
nextTick(()=>{
setTimeout(()=>{
getSpecialEventUserTaskList()
})
})
}
});
};
const getApprovalState = (val: string) => {
if (!val) {
return "-";
} else {
if (val == "W") {
return (val = "待提交");
} else if (val == "N") {
return (val = "初始");
} else if (val == "A") {
return (val = "审批中");
} else if (val == "Y") {
return (val = "已通过");
} else if (val == "F") {
return (val = "已完成");
} else if (val == "R") {
return (val = "已驳回");
} else if (val == "C") {
return (val = "已撤销");
} else {
return (val = "");
}
}
}
const getSpecialEventUserTaskList = () => {
lookBpmnRef.value.getDetailData(props.deploymentId)
};
onBeforeRouteLeave((to, from) =>{
processStore.clearStore()
})
onMounted(() => {
renderProcessNodes()
});
defineExpose({
renderProcessNodes
})
</script>
<template>
<div>
<!-- <Table :columns="columns" :data="tableData" :border="false"></Table> -->
<el-table tooltip-effect="light" :data="tableData" :border="false" >
<el-table-column type="index" label="节点" :width="140" align="left" >
<template #default="scope">
{{ scope.row.processName ||'-' }}
</template>
</el-table-column>
<el-table-column type="index" label="处理对象" :width="140" align="left" show-overflow-tooltip>
<template #default="scope">
{{ scope.row.staffName ||'-' }}
</template>
</el-table-column>
<el-table-column type="index" label="操作时间" :width="180" align="left" show-overflow-tooltip >
<template #default="scope">
{{ scope.row.approvalTime||'-'}}
</template>
</el-table-column>
<!-- <el-table-column type="index" label="申请人" :width="100" align="left" >
<template #default="scope">
{{ scope.row.applyName||'-'}}
</template>
</el-table-column>
<el-table-column label="申请时间" :width="180" align="left" >
<template #default="scope">
{{ scope.row.time||'-'}}
</template>
</el-table-column> -->
<el-table-column label="审批状态" :width="140" align="left" show-overflow-tooltip>
<template #default="scope">
<div v-if="scope.row.approvalState === 'A'" class='state-sty'>{{ getApprovalState(scope.row.approvalState) }}</div>
<div v-else-if="scope.row.approvalState === 'Y'" class='state-sty1'>{{getApprovalState(scope.row.approvalState) }}</div>
<div v-else-if="scope.row.approvalState === 'R'" class='state-sty2'>{{ getApprovalState(scope.row.approvalState) }}</div>
<div v-else>{{getApprovalState(scope.row.approvalState)}}</div>
</template>
</el-table-column>
<el-table-column label="审批原因" align="left" >
<template #default="scope">
{{ scope.row.approvalSuggest||'-'}}
</template>
</el-table-column>
</el-table>
<div class="bpmn-sty pt-20px" style="margin-top: 20px">
<span style="font-size:16px;color:#666">{{ '审批流程' }}</span>
<el-divider style="margin-bottom:10px!important;margin-top:10px!important" />
<LookBpmn ref="lookBpmnRef"></LookBpmn>
</div>
</div>
</template>
<style lang="scss" scoped>
.iframe-sty {
width: 100%;
border: none;
// height: 600px;
}
:deep(.el-table) {
.state-sty {
width: 52px;
height: 21px;
text-align: center;
line-height: 21px;
background: #FFEEE3;
border-radius: 3px;
color: #FF8623;
}
.state-sty1 {
width: 52px;
height: 21px;
text-align: center;
line-height: 21px;
background: #E3F0F0;
border-radius: 3px;
color: #4FA1A4;
}
.state-sty2 {
width: 52px;
height: 21px;
text-align: center;
line-height: 21px;
background: #FFE4E2;
border-radius: 3px;
color: #FE4638;
}
.state-sty3 {
width: 52px;
height: 21px;
text-align: center;
line-height: 21px;
background: #E3E3E3;
border-radius: 3px;
color: #323233;
}
}
</style>
......@@ -35,15 +35,9 @@ const routes: RouteRecordRaw[] = [
reuse: true
},
beforeEnter: (to, from) => {
if (to.query.type) {
to.meta.title = `详情-`;
return;
}
if (to.query.guid) {
to.meta.title = `编辑-`;
to.meta.title = to.query.type == 'edit' ? `编辑-${to.query.name}` : '新建资产登记';
to.meta.editPage = true;
}
}
},
{
path: 'register-detail',
......@@ -55,6 +49,9 @@ const routes: RouteRecordRaw[] = [
breadcrumb: false,
cache: true,
reuse: true
},
beforeEnter: (to, from) => {
to.meta.title = `详情-${to.query.name}`;
}
}
],
......
const useProcessStore = defineStore(
// 唯一ID
'process',
() => {
const processNodes = ref([])
const staffVOS = computed(() => { // 最后审批node
return processNodes.value.find((item:any) => item.approvalState)
})
const clearStore = () => {
processNodes.value = []
}
return {
processNodes,
staffVOS,
clearStore
}
},
{
persist:{
storage: sessionStorage,
paths: ['processNodes','staffVOS']
}
}
)
export default useProcessStore
\ No newline at end of file
......@@ -4,7 +4,7 @@ import router from '@/router'
import { ElMessage } from 'element-plus'
import apiUser from '@/api/modules/user'
import { getCurrentTime } from '@/utils/common'
import { getSystemMenu, getUserInfo, getTokenByCode, loginOut, refreshToken, editPasswordInterface, getCurrentUserInfo } from '@/api/modules/queryService'
import { getSystemMenu, getUserInfo, getTokenByCode, loginOut, refreshToken, editPasswordInterface, getCurrentUserInfo, getCurrentUserInfo } from '@/api/modules/queryService'
const useUserStore = defineStore(
// 唯一ID
......@@ -56,7 +56,7 @@ const useUserStore = defineStore(
currentTenantGuid.value = res.data.tenantInfoList && res.data.tenantInfoList.length ? res.data.tenantInfoList[0].guid : '';
localStorage.setItem('currentTenantGuid', currentTenantGuid.value);
let currentTenant = res.data.tenantInfoList?.[0];
getCurrentUserInfo(currentTenantGuid.value).then((res: any) => {
getCurrentUserInfo({tenantGuid: currentTenantGuid.value}).then((res: any) => {
console.log(res, 'getCurrentUserInfo');
if (res.code == '00000') {
localStorage.setItem('userData', JSON.stringify(res.data));
......@@ -108,10 +108,10 @@ const useUserStore = defineStore(
refreshToken: localStorage.getItem('refresh_token')
}).then((resInfo: any) => {
getTokenPromise.value = null;
if (resInfo.code == '00000'){
localStorage.setItem('token',resInfo.data.accessToken);
if (resInfo.code == '00000') {
localStorage.setItem('token', resInfo.data.accessToken);
token.value = resInfo.data.accessToken;
localStorage.setItem('refresh_token',resInfo.data.refreshToken);
localStorage.setItem('refresh_token', resInfo.data.refreshToken);
const expiresIn = (Date.now() + 1700000) + "";
localStorage.setItem('expiresIn', expiresIn);
} else {
......
......@@ -9,6 +9,7 @@ export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
ApprovalProcess: typeof import('./../components/ApprovalProcess/src/ApprovalProcess.vue')['default']
Auth: typeof import('./../components/Auth/index.vue')['default']
AuthAll: typeof import('./../components/AuthAll/index.vue')['default']
ContentWrap: typeof import('./../components/ContentWrap/src/ContentWrap.vue')['default']
......@@ -31,6 +32,7 @@ declare module '@vue/runtime-core' {
ImageUpload: typeof import('./../components/ImageUpload/index.vue')['default']
LineageGraph: typeof import('./../components/LineageGraph/index.vue')['default']
ListPanel: typeof import('./../components/ListPanel/index.vue')['default']
LookBpmn: typeof import('./../components/ApprovalProcess/src/components/LookBpmn.vue')['default']
Month: typeof import('./../components/Schedule/component/month.vue')['default']
NotAllowed: typeof import('./../components/NotAllowed/index.vue')['default']
PageHeader: typeof import('./../components/PageHeader/index.vue')['default']
......
......@@ -5,7 +5,6 @@
<script lang="ts" setup name="importTableField">
import { ref } from 'vue';
import {
getDataTypeList,
getParamsList
} from "@/api/modules/dataAsset";
import { pinyin } from 'pinyin-pro';
......@@ -80,7 +79,7 @@ const handleFileDataChange = (fileFields, files, sheetName, data) => {
}
const getFieldTypeList = () => {
getDataTypeList({
getParamsList({
dictType: "字段类型"
}).then((res: any) => {
fieldTypes.value = [];
......
......@@ -11,8 +11,7 @@ import {
getCurrentUserInfo
} from "@/api/modules/queryService";
import {
getDamTypesList,
getSubjectDoaminList,
getParamsList,
dataSourcesList,
registerCatalogSave,
existDamName,
......@@ -495,7 +494,7 @@ const addAssetTable = () => {
onBeforeMount(() => {
// const currentTenantGuid = localStorage.getItem('currentTenantGuid');
// getCurrentUserInfo(currentTenantGuid).then((res: any) => {
// getCurrentUserInfo({tenantGuid: currentTenantGuid}).then((res: any) => {
// console.log(res, 'getCurrentUserInfo');
// if (res.code == '00000') {
// localStorage.setItem('userData', JSON.stringify(res.data));
......@@ -581,7 +580,7 @@ onBeforeMount(() => {
}
return data;
}
getDamTypesList({
getParamsList({
dictType: "资产类型",
}).then((res: any) => {
if (res.code == proxy.$passCode) {
......@@ -592,7 +591,7 @@ onBeforeMount(() => {
proxy.$ElMessage.error(res.msg);
}
})
getSubjectDoaminList({
getParamsList({
dictType: "数据资产目录主题名称",
}).then((res: any) => {
if (res.code == proxy.$passCode) {
......
......@@ -9,8 +9,7 @@ import { ElMessageBox } from "element-plus";
import { useRouter, useRoute } from "vue-router";
import { MoreFilled } from "@element-plus/icons-vue";
import {
getSubjectDoaminList,
getDamTypesList,
getParamsList,
getDamCatalogTable,
registerCatalogDelete
} from "@/api/modules/dataAsset";
......@@ -260,7 +259,7 @@ onBeforeMount(() => {
proxy.$ElMessage.error(res.msg);
}
})
getSubjectDoaminList({
getParamsList({
dictType: "数据资产目录主题名称",
}).then((res: any) => {
if (res.code == proxy.$passCode) {
......
......@@ -258,13 +258,14 @@ const getDetailInfo = () => {
const data = res.data || {};
detailInfo.value = data;
assetDetailInfo.value = data;
if (fullPath === route.fullPath) {
document.title = `详情-${data.daName}`;
}
let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath);
if (tab) {
tab.meta.title = `详情-${data.daName}`;
}
deploymentId.value = data.camundaDeploymentId;
// if (fullPath === route.fullPath) {
// document.title = `详情-${data.daName}`;
// }
// let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath);
// if (tab) {
// tab.meta.title = `详情-${data.daName}`;
// }
isTextTruncated();
} else {
ElMessage.error(res.msg);
......@@ -293,11 +294,11 @@ onBeforeMount(() => {
});
onActivated(() => {
if (assetDetailInfo.value?.daName) {
if (fullPath === route.fullPath) {
document.title = `详情-${assetDetailInfo.value?.daName}`;
}
}
// if (assetDetailInfo.value?.daName) {
// if (fullPath === route.fullPath) {
// document.title = `详情-${assetDetailInfo.value?.daName}`;
// }
// }
});
onMounted(() => {
......@@ -399,7 +400,7 @@ const approveTableInfo: any = ref({
show: false
}
});
const deploymentId = ref('');
const tenantDetail: any = ref({});
/** 获取当前登录会员,服务商,企业等详情。 */
......@@ -1593,7 +1594,9 @@ const handleClickDamCatalogDetail = () => {
</ContentWrap>
<ContentWrap id="id-approveInfo" title="审批信息" expandSwicth style="margin-top: 15px"
:isExpand="approveInfoExpand" @expand="(v) => approveInfoExpand = v">
<Table :tableInfo="approveTableInfo" />
<!-- <Table :tableInfo="approveTableInfo" /> -->
<ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :definitionId="''">
</ApprovalProcess>
</ContentWrap>
<ContentWrap id="id-certificate" v-if="tabsInfo.tabs.find(t => t.name == 'certificate')" title="证件信息"
expandSwicth style="margin-top: 15px" :isExpand="certificateExpand" @expand="(v) => certificateExpand = v">
......
......@@ -1344,7 +1344,7 @@ const getDataBaseTableData = async (params = {}) => {
const dataBaseParams = {
pageIndex: dataBasePage.value.curr,
pageSize: dataBasePage.value.limit,
isDataAsset: checked.value ? 'Y' : 'N',
isDataAsset: checked.value ? 'Y' : '',
execGuid: execGuidInfo.value.execGuid,
tableGuid: tableGuid.value || selectedB.value || '',
databaseGuid: dataBaseGuid.value || selectedA.value || '',
......
......@@ -49,7 +49,7 @@ const getBizRuleConfigDetailData = async () => {
}
}
})
console.log('tableData', tableData.value)
tableFieldsLoading.value = false
} else {
......@@ -185,12 +185,12 @@ const tempRowData = ref<any>([]);
// 编辑行
const editRow = (row) => {
// console.log('编辑:', row);
// // 暂存编辑前的数据 用于取消编辑时恢复原始数据,先判断是否已经暂存过tempRowData通过fieldGuid
// if (!tempRowData.value.find((item) => item.fieldGuid === row.fieldGuid)) {
// tempRowData.value.push({ ...row });
// }
console.log('编辑:', row);
// 暂存编辑前的数据 用于取消编辑时恢复原始数据,先判断是否已经暂存过tempRowData通过fieldGuid
if (!tempRowData.value.find((item) => item.fieldGuid === row.fieldGuid)) {
tempRowData.value.push({ ...row });
}
console.log('tempRowData:', tempRowData.value);
// console.log('tempRowData:', tempRowData.value);
// if (row.fieldLengthCondition) {
// const arr = row.fieldLengthCondition.split('#'); // 按 '#' 分割
......@@ -273,7 +273,6 @@ const saveRow = (row) => {
}
if (tableData.value.find((item: any) => item.fieldGuid === row.fieldGuid)) {
console.log('tempRowData.value')
tableData.value.forEach(item => {
if (item.fieldGuid === row.fieldGuid) {
item.fieldLengthCondition = fieldLengthCondition
......@@ -284,6 +283,12 @@ const saveRow = (row) => {
item.notNull = tempRow.notNull
}
});
// 更新 tempRowData 中保存的数据
const tempRowIndex = tempRowData.value.findIndex((item) => item.fieldGuid === row.fieldGuid);
if (tempRowIndex !== -1) {
// 更新 tempRowData 为保存后的数据
tempRowData.value[tempRowIndex] = { ...row };
}
}
row.isEdit = false
}
......@@ -404,9 +409,20 @@ const cancel = () => {
// 点击取消
const cancelEdit = (row) => {
// console.log('取消编辑:', row, tempRowData.value);
// // 可在此恢复原始数据逻辑,要查找暂存的数据 tempRowData 中 fieldGuid 与当前行的 fieldGuid 相同的数据
// const tempRow = tempRowData.value.find((item) => item.fieldGuid === row.fieldGuid);
// Object.assign(row, tempRow);
// 可在此恢复原始数据逻辑,要查找暂存的数据 tempRowData 中 fieldGuid 与当前行的 fieldGuid 相同的数据
const tempRow = tempRowData.value.find((item) => item.fieldGuid === row.fieldGuid);
// 遍历tableData.value,找到当前行并恢复原始数据
tableData.value.forEach((item) => {
if (item.fieldGuid === tempRow.fieldGuid) {
// 恢复原始数据
item.fieldLengthCondition = tempRow.fieldLengthCondition;
item.fieldPrecision = tempRow.fieldPrecision;
item.isUnique = tempRow.isUnique;
item.notNull = tempRow.notNull;
item.fieldValueRange = tempRow.fieldValueRange;
}
});
row.isEdit = false; // 退出编辑状态
}
......
......@@ -23,7 +23,6 @@ import {
exportDictionary,
showDictionary,
getDataBaseList,
getDataTypeList,
getCoderuleList,
saveDictionaryData,
getDictionaryFileds,
......@@ -608,7 +607,7 @@ const getDataType = (type) => {
let params = {
paramCode: type
}
getDataTypeList(params).then((res: any) => {
getParamsList(params).then((res: any) => {
if (res.code == proxy.$passCode) {
const data = res.data
if (type == 'DATA_TYPE') {
......
......@@ -12,7 +12,7 @@ import Dialog from "@/components/Dialog/index.vue";
import useUserStore from "@/store/modules/user";
import useDataAssetStore from "@/store/modules/dataAsset";
import { onUploadFilePreview, onUploadFileDownload } from '@/api/modules/common';
import { getApproveList, getTenantApprove, registerApproveAllow, registerApproveBackup, getSubjectDoaminList } from "@/api/modules/dataAsset";
import { getApproveList, getTenantApprove, registerApproveAllow, registerApproveBackup, getParamsList } from "@/api/modules/dataAsset";
import { getDemandDetail, demandSave, competitionSave, marketSave, demandUpdate, competitionUpdate, marketUpdate, checkDemandName, getParamsDataList, getProductTypeList } from "@/api/modules/dataProduct";
import { getMatchDetail } from "@/api/modules/dataFinance";
import { useValidator } from '@/hooks/useValidator';
......@@ -1112,7 +1112,7 @@ const initMethodByInterfaceType = ref({
proxy.$ElMessage.error(res.msg);
}
})
getSubjectDoaminList().then((res: any) => {
getParamsList({dictType: 'SUBJECT-DOMAIN'}).then((res: any) => {
if (res.code == proxy.$passCode) {
subjectDomainListData.value = res.data || [];
let item = demandFormItems.value.find(item => item.field == 'subjectDomain');
......
......@@ -15,7 +15,7 @@ import { TableColumnWidth } from '@/utils/enum';
import TableTools from "@/components/Tools/table_tools.vue";
import Table from "@/components/Table/index.vue";
import Dialog from "@/components/Dialog/index.vue";
import { getDamTypesList } from "@/api/modules/dataAsset";
import { getParamsList } from "@/api/modules/dataAsset";
import {
changeNum,
} from "@/utils/common";
......@@ -299,7 +299,7 @@ onBeforeMount(() => {
// proxy.$ElMessage.error(res.msg);
// }
// })
getDamTypesList({
getParamsList({
dictType: "资产类型",
}).then((res: any) => {
if (res.code == proxy.$passCode) {
......
......@@ -14,7 +14,7 @@ import useDataAssetStore from "@/store/modules/dataAsset";
import { changeNum } from '@/utils/common';
import { onUploadFilePreview, onUploadFileDownload } from '@/api/modules/common';
import { getAreaData, getServiceTenants } from "@/api/modules/queryService";
import { getApproveList, getTenantApprove, registerApproveAllow, registerApproveBackup, getSubjectDoaminList, getServiceDetail } from "@/api/modules/dataAsset";
import { getApproveList, getTenantApprove, registerApproveAllow, registerApproveBackup, getParamsList, getServiceDetail } from "@/api/modules/dataAsset";
import { getProductList, getAddedProductList, getListingDetail, listingSave, listingUpdate, listingSavePortal, getParamsDataList } from "@/api/modules/dataProduct";
import { getMatchDetail } from "@/api/modules/dataFinance";
import { useValidator } from '@/hooks/useValidator';
......@@ -1191,7 +1191,7 @@ onBeforeMount(() => {
// ElMessage.error(res.msg);
// }
// });
getSubjectDoaminList({
getParamsList({
dictType: "数据资产目录主题名称",
}).then((res: any) => {
if (res.code == proxy.$passCode) {
......
......@@ -328,6 +328,20 @@ onBeforeMount(() => {
});
onActivated(() => {
let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath);
if (tab) {
if (route.query.detail) {
tab.meta.title = `新建规则(${route.query.planName})`;
if (fullPath === route.fullPath) {
document.title = tab.meta.title;
}
} else if (route.query.planName) {
tab.meta.title = `方案编辑-${route.query.planName}`;
if (fullPath === route.fullPath) {
document.title = tab.meta.title;
}
}
}
if (modelGuid.value || groupGuid.value) {
return;
}
......
......@@ -432,10 +432,12 @@ const open = (msg, type, isBatch = false) => {
if (res.code == proxy.$passCode) {
page.value.curr = 1;
getTableData();
// let node = qualityModelTreeRef.value.treeRef.store.nodesMap[currTableData.value.modelGroupGuid];
// node.loaded = false;
// node.expand();
getQualityGroupTreeData();
nextTick(() => {
let node = qualityModelTreeRef.value.treeRef.store.nodesMap[currTableData.value.modelGroupGuid];
node.loaded = false;
node.expand();
})
ElMessage.success('删除成功');
} else {
ElMessage.error(res.msg);
......@@ -599,7 +601,7 @@ const ruleTableBtnClick = (scope, btn) => {
}
});
} else if (type == "delete") {
ruleOpen("此操作将永久删除该质检, 是否继续?", "warning");
ruleOpen("此操作将永久删除该质检规则, 是否继续?", "warning");
}
};
......@@ -613,11 +615,10 @@ const ruleOpen = (msg, type, isBatch = false) => {
deleteQualityTableRule(guids).then((res: any) => {
if (res.code == proxy.$passCode) {
getRuleTableData();
// let node = qualityModelTreeRef.value.treeRef.store.nodesMap[lastSelectNode.value.data.guid];
// node.loaded = false;
// node.expand();
getQualityGroupTreeData();
ElMessage.success('删除质检表成功');
let node = qualityModelTreeRef.value.treeRef.store.nodesMap[lastSelectNode.value.data.guid];
node.loaded = false;
node.expand();
ElMessage.success('删除质检规则成功');
} else {
ElMessage.error(res.msg);
}
......@@ -883,9 +884,11 @@ onActivated(async () => {
if (lastSelectNode.value && lastSelectNode.value.data.guid == dataQualityStore.modelGroupGuid) {
getTableData();
}
// let node = qualityModelTreeRef.value.treeRef.store.nodesMap[dataQualityStore.modelGroupGuid];
// node.expand();
getQualityGroupTreeData();
nextTick(() => {
let node = qualityModelTreeRef.value.treeRef.store.nodesMap[dataQualityStore.modelGroupGuid];
node.expand();
})
dataQualityStore.set(null);
}
}
......@@ -921,7 +924,7 @@ onBeforeMount(() => {
d.label = d.ruleName;
d.value = d.ruleCode;
return d;
}) || [];
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check') || [];
searchItemList.value[2].options = ruleTypeList.value;
} else {
ElMessage.error(res.msg);
......
......@@ -158,7 +158,7 @@ onBeforeMount(() => {
d.label = d.ruleName;
d.value = d.ruleCode;
return d;
}) || [];
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check') || [];
} else {
ElMessage.error(res.msg);
}
......
......@@ -241,7 +241,7 @@ onBeforeMount(() => {
d.label = d.ruleName;
d.value = d.ruleCode;
return d;
}) || [];
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check') || [];
} else {
ElMessage.error(res.msg);
}
......@@ -262,6 +262,16 @@ onBeforeMount(() => {
})
})
onActivated(() => {
let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath);
if (tab && detailInfo.value?.ruleConfName) {
tab.meta.title = `编辑-${detailInfo.value.ruleConfName}(${detailInfo.value.subjectZhName})`
if (fullPath === route.fullPath) {
document.title = tab.meta.title;
}
}
});
</script>
<template>
......
......@@ -248,7 +248,7 @@ onBeforeMount(() => {
d.label = d.ruleName;
d.value = d.ruleCode;
return d;
}) || [];
})?.filter(d => d.ruleCode != 'rows_check' && d.ruleCode != 'volatility_check') || []; //先隐藏掉表行数检查和表行数波动率
} else {
ElMessage.error(res.msg);
}
......@@ -269,6 +269,16 @@ onBeforeMount(() => {
})
})
onActivated(() => {
let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath);
if (tab && route.query.name) {
tab.meta.title = `新建规则(${route.query.name})`;
if (fullPath === route.fullPath) {
document.title = tab.meta.title;
}
}
});
const cancel = () => {
ElMessageBox.confirm(
"当前页面尚未保存,确定放弃修改吗?",
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!