495dd53e by lxs

合并

2 parents abc5146e 98d58c5e
...@@ -13,6 +13,7 @@ VITE_APP_AUTH_URL = 'ms-daop-auth-service' ...@@ -13,6 +13,7 @@ VITE_APP_AUTH_URL = 'ms-daop-auth-service'
13 13
14 # 系统管理 接口地址 14 # 系统管理 接口地址
15 VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service 15 VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service
16
16 # 文件上传请求地址 17 # 文件上传请求地址
17 VITE_APP_ADD_FILE = ms-daop-import-data-service 18 VITE_APP_ADD_FILE = ms-daop-import-data-service
18 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 19 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
...@@ -32,6 +33,10 @@ VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service ...@@ -32,6 +33,10 @@ VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service
32 # VITE_APP_CHECK_BASEURL = /mock 33 # VITE_APP_CHECK_BASEURL = /mock
33 VITE_APP_CHECK_BASEURL = ms-daop-zcgl-data-inventory 34 VITE_APP_CHECK_BASEURL = ms-daop-zcgl-data-inventory
34 35
36 # 数据字典接口地址
37 VITE_APP_CONFIG_URL = 'ms-daop-configure-service'
38
39
35 #门户接口 40 #门户接口
36 VITE_API_PORTALURL = https://swzl-test.zgsjzc.com/portal 41 VITE_API_PORTALURL = https://swzl-test.zgsjzc.com/portal
37 42
......
1 # 页面标题 1 # 页面标题
2 VITE_APP_TITLE = 数据资产管理系统 2 VITE_APP_TITLE = 数据资产管理系统
3 # 接口域名 3 # 接口域名
4 VITE_API_BASEURL = https://www.zgsjzc.com/api 4 VITE_API_BASEURL = http://192.168.6.20:28052/
5 # VITE_API_BASEURL = http://49.4.26.201:31709/ 5 # VITE_API_BASEURL = http://49.4.26.201:31709/
6 # # 平台用户 接口请地址
7 # VITE_APP_USER_API_BASEURL = gateway-server
8 # # 系统管理 接口地址
9 # VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service
10 # # 文件上传请求地址
11 # VITE_APP_ADD_FILE = ms-daop-import-data-service
12 # # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
13 # VITE_APP_DEBUG_TOOL =
14 # # 是否开启代理
15 # VITE_OPEN_PROXY = true
16 # # vite serve base
17 # VITE_SERVE_BASE = /
18 # # 流程设计访问地址
19 # VITE_BPMN_URL = https://workflow.zgsjzc.com
20 # # 数据标准、元数据、数据目录 接口地址
21 # VITE_APP_PLAN_BASEURL = ms-daop-jgjf-data-plan-service
22 # #数据质量接口地址
23 # VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service
24
25 # #门户接口
26 # VITE_API_PORTALURL = https://www.zgsjzc.com/portal
27
28 # #数据资产接口地址
29 # VITE_API_ASSET_BASEURL = ms-swzl-data-dam-service
30 # #数据同步接口地址
31 # VITE_API_DATA_SYNC = ms-swzl-data-sync-service
32 # #消息接口
33 # VITE_API_MESSAGE = ms-swzl-message-notification-service
6 # 平台用户 接口请地址 34 # 平台用户 接口请地址
7 VITE_APP_USER_API_BASEURL = gateway-server 35 VITE_APP_USER_API_BASEURL = gateway-server
36
37 #AUTH服务
38 VITE_APP_AUTH_URL = 'ms-daop-auth-service'
39
8 # 系统管理 接口地址 40 # 系统管理 接口地址
9 VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service 41 VITE_APP_API_BASEURL = ms-daop-zcgl-system-manager-service
42
10 # 文件上传请求地址 43 # 文件上传请求地址
11 VITE_APP_ADD_FILE = ms-daop-import-data-service 44 VITE_APP_ADD_FILE = ms-daop-import-data-service
12 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空 45 # 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
...@@ -16,14 +49,22 @@ VITE_OPEN_PROXY = true ...@@ -16,14 +49,22 @@ VITE_OPEN_PROXY = true
16 # vite serve base 49 # vite serve base
17 VITE_SERVE_BASE = / 50 VITE_SERVE_BASE = /
18 # 流程设计访问地址 51 # 流程设计访问地址
19 VITE_BPMN_URL = https://workflow.zgsjzc.com 52 VITE_BPMN_URL = https://workflow-swzl-test.csbr.cn
20 # 数据标准、元数据、数据目录 接口地址 53 # 数据标准、元数据、数据目录 接口地址
21 VITE_APP_PLAN_BASEURL = ms-daop-jgjf-data-plan-service 54 VITE_APP_PLAN_BASEURL = ms-daop-jgjf-data-plan-service
22 #数据质量接口地址 55 #数据质量接口地址
23 VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service 56 VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service
24 57
58 #数据盘点接口地址ms-daop-zcgl-data-inventory
59 # VITE_APP_CHECK_BASEURL = /mock
60 VITE_APP_CHECK_BASEURL = ms-daop-zcgl-data-inventory
61
62 # 数据字典接口地址
63 VITE_APP_CONFIG_URL = 'ms-daop-configure-service'
64
65
25 #门户接口 66 #门户接口
26 VITE_API_PORTALURL = https://www.zgsjzc.com/portal 67 VITE_API_PORTALURL = https://swzl-test.zgsjzc.com/portal
27 68
28 #数据资产接口地址 69 #数据资产接口地址
29 VITE_API_ASSET_BASEURL = ms-swzl-data-dam-service 70 VITE_API_ASSET_BASEURL = ms-swzl-data-dam-service
......
1 FROM 192.168.5.4:82/csbr/nginx:stable-alpine 1
2
3 FROM 192.168.6.22:8081/csbr/nginx:stable-alpine
2 VOLUME /tmp 4 VOLUME /tmp
3 #将当前文件夹的dist文件复制到容器的/usr/share/nginx/html目录 5 #将当前文件夹的dist文件复制到容器的/usr/share/nginx/html目录
4 COPY ./dist/* /usr/share/nginx/html/ 6 COPY ./dist/* /usr/share/nginx/html/
5 COPY ./dist/assets /usr/share/nginx/html/assets 7 COPY ./dist/assets /usr/share/nginx/html/assets
6 #COPY ./dist/importTemplate /usr/share/nginx/html/importTemplate
7 COPY default.conf /etc/nginx/conf.d/ 8 COPY default.conf /etc/nginx/conf.d/
8 #声明运行时容器暴露的端口(容器提供的服务端口) 9 #声明运行时容器暴露的端口(容器提供的服务端口)
9 EXPOSE 8911 10 RUN chown -R nginx:nginx /usr/share/nginx/html
11 EXPOSE 29900
10 #CMD:指定容器启动时要运行的命令 12 #CMD:指定容器启动时要运行的命令
11 CMD ["nginx", "-g", "daemon off;"] 13 CMD ["nginx", "-g", "daemon off;"]
......
...@@ -3,21 +3,22 @@ pipeline { ...@@ -3,21 +3,22 @@ pipeline {
3 //环境定义 3 //环境定义
4 environment{ 4 environment{
5 //服务名称 5 //服务名称
6 SVN_FOLD = "fe-swzl-asset-temp" 6 SVN_FOLD = "fe-data-asset-management"
7 //部署远程服务器 7 //部署远程服务器
8 //192.168.4.4服务器 8 //192.168.4.4服务器
9 //SSH_PATH = "csbr4.4" 9 //SSH_PATH = "csbr4.4"
10 //192.168.5.4 10 //192.168.5.4
11 SSH_PATH = "csbr5.2" 11 SSH_PATH = "csbr20"
12 SVN_TYPE = "dev"
12 //139.9.190.186 13 //139.9.190.186
13 //SSH_PATH = "csbr190.186" 14 //SSH_PATH = "csbr190.186"
14 //SVN_TYPE = "master" 15 //SVN_TYPE = "master"
15 //镜像版本号 16 //镜像版本号
16 image_tag = "1.0.0" 17 image_tag = "1.0.0"
17 //docker私服ip 18 //docker私服ip
18 ip = "192.168.5.4:82" 19 ip = "192.168.6.22:8081"
19 //前端端口号 20 //前端端口号
20 port = "8911" 21 port = "29900"
21 //映射端口号 22 //映射端口号
22 vport = "80" 23 vport = "80"
23 24
...@@ -49,8 +50,10 @@ pipeline { ...@@ -49,8 +50,10 @@ pipeline {
49 steps { 50 steps {
50 nodejs('node 16.20.2'){} 51 nodejs('node 16.20.2'){}
51 //配置私有npm仓库 52 //配置私有npm仓库
52 sh 'npm config set registry http://192.168.5.4:8001/repository/csbr-npm/' 53 // sh 'npm config set registry http://192.168.5.4:8001/repository/csbr-npm/'
53 sh 'yarn config set registry http://192.168.5.4:8001/repository/csbr-npm/' 54 // sh 'yarn config set registry http://192.168.5.4:8001/repository/csbr-npm/'
55 sh 'npm config set registry http://49.4.23.228:8001/repository/csbr-npm/'
56 sh 'yarn config set registry http://49.4.23.228:8001/repository/csbr-npm/'
54 // 配置后可通过下面方式来验证是否成功 57 // 配置后可通过下面方式来验证是否成功
55 sh 'npm config get registry' 58 sh 'npm config get registry'
56 sh 'npm install -g pnpm' 59 sh 'npm install -g pnpm'
...@@ -63,9 +66,9 @@ pipeline { ...@@ -63,9 +66,9 @@ pipeline {
63 steps { 66 steps {
64 //分分支构建 67 //分分支构建
65 script{ 68 script{
66 if(env.BRANCH_NAME=='master-asset'){ 69 if(env.BRANCH_NAME=='develop'){
67 //master-asset分支环境 70 //master-asset分支环境
68 echo 'start to deploy ${SVN_FOLD} on master-asset ...' 71 echo 'start to deploy ${SVN_FOLD} on develop ...'
69 sh ''' 72 sh '''
70 #docker rmi -f $(docker images | grep "none" | awk '{print $3}') 73 #docker rmi -f $(docker images | grep "none" | awk '{print $3}')
71 CID=$(docker ps -a | grep "${SVN_FOLD}" | awk '{print $1}') 74 CID=$(docker ps -a | grep "${SVN_FOLD}" | awk '{print $1}')
...@@ -77,15 +80,15 @@ pipeline { ...@@ -77,15 +80,15 @@ pipeline {
77 ##构建镜像到远程仓库 80 ##构建镜像到远程仓库
78 docker login "${ip}" -u admin -p E6w611g864wQ2 81 docker login "${ip}" -u admin -p E6w611g864wQ2
79 #docker tag "${SVN_FOLD}":"${image_tag}" "${ip}"/csbr/"${SVN_FOLD}":"${image_tag}" 82 #docker tag "${SVN_FOLD}":"${image_tag}" "${ip}"/csbr/"${SVN_FOLD}":"${image_tag}"
80 docker build -t "${ip}"/csbr/"${SVN_FOLD}":"${image_tag}" . 83 docker build -t "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}" .
81 docker push "${ip}"/csbr/"${SVN_FOLD}":"${image_tag}" 84 docker push "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}"
82 else 85 else
83 echo "不存在'${SVN_FOLD}'镜像,开始构建镜像" 86 echo "不存在'${SVN_FOLD}'镜像,开始构建镜像"
84 ##构建镜像到远程仓库 87 ##构建镜像到远程仓库
85 docker login "${ip}" -u admin -p E6w611g864wQ2 88 docker login "${ip}" -u admin -p E6w611g864wQ2
86 #docker tag "${SVN_FOLD}":"${image_tag}" "${ip}"/csbr/"${SVN_FOLD}":"${image_tag}" 89 #docker tag "${SVN_FOLD}":"${image_tag}" "${ip}"/csbr/"${SVN_FOLD}":"${image_tag}"
87 docker build -t "${ip}"/csbr/"${SVN_FOLD}":"${image_tag}" . 90 docker build -t "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}" .
88 docker push "${ip}"/csbr/"${SVN_FOLD}":"${image_tag}" 91 docker push "${ip}"/csbr/"${SVN_FOLD}""-${SVN_TYPE}":"${image_tag}"
89 fi 92 fi
90 ''' 93 '''
91 echo 'Depoly ${SVN_FOLD} success ...' 94 echo 'Depoly ${SVN_FOLD} success ...'
...@@ -107,14 +110,14 @@ pipeline { ...@@ -107,14 +110,14 @@ pipeline {
107 echo 'Deploying' 110 echo 'Deploying'
108 //分分支部署 111 //分分支部署
109 script{ 112 script{
110 if(env.BRANCH_NAME=='master-asset'){ 113 if(env.BRANCH_NAME=='develop'){
111 //master-asset分支环境 114 //master-asset分支环境
112 echo 'start to deploy ${SVN_FOLD} on master-asset ...' 115 echo 'start to deploy ${SVN_FOLD} on develop ...'
113 //调用Publish Over SSH插件,上传docker-compose.yaml文件并且执行deploy脚本 116 //调用Publish Over SSH插件,上传docker-compose.yaml文件并且执行deploy脚本
114 sshPublisher(publishers: [sshPublisherDesc(configName: "csbr5.3", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: """ 117 sshPublisher(publishers: [sshPublisherDesc(configName: "csbr20", transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: """
115 #使用k8s构建 118 #使用k8s构建
116 kubectl delete -f /mnt/k8s/production/fe-swzl-asset.yaml 119 kubectl delete -f /mnt/k8s/develop/daop-jgjf/fe-data-asset-management.yaml
117 kubectl apply -f /mnt/k8s/production/fe-swzl-asset.yaml 120 kubectl apply -f /mnt/k8s/develop/daop-jgjf/fe-data-asset-management.yaml
118 """, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/mnt/csbr/data', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'output/*.*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) 121 """, execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/mnt/csbr/data', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'output/*.*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
119 122
120 echo 'Depoly ${SVN_FOLD} success ...' 123 echo 'Depoly ${SVN_FOLD} success ...'
......
...@@ -2,48 +2,53 @@ server { ...@@ -2,48 +2,53 @@ server {
2 listen 80; 2 listen 80;
3 listen [::]:80; 3 listen [::]:80;
4 server_name localhost; 4 server_name localhost;
5 # server_name http://192.168.6.20:8052;
5 6
6 #charset koi8-r; 7
7 #access_log /var/log/nginx/host.access.log main; 8 # 设置允许跨域的域名,可以使用通配符 '*' 允许所有域访问
9 add_header 'Access-Control-Allow-Origin' * always;
10 # 设置允许的 HTTP 方法
11 add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
12 # 设置允许的请求头
13 add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Accept, Origin, X-Requested-With';
14 # 如果需要支持 cookie,可以设置以下 header
15 add_header 'Access-Control-Allow-Credentials' 'true';
16 # 缓存设置
17 add_header Cache-Control no-cache;
18 add_header Cache-Control private;
19 # # 预检请求处理
20 # if ($request_method = OPTIONS) {
21 # return 204;
22 # }
8 23
9 location / { 24 location / {
10 root /usr/share/nginx/html; 25 root /usr/share/nginx/html;
11 index index.html index.htm; 26 index index.html index.htm;
12 try_files $uri $uri/ /index.html; 27 try_files $uri $uri/ /index.html;
28 expires -1s;
29 }
30
31 location /api {
32 # 设置允许跨域的域名,可以使用通配符 '*' 允许所有域访问
33 add_header 'Access-Control-Allow-Origin' * always;
34 # 设置允许的 HTTP 方法
35 add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
36 # 设置允许的请求头
37 add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type, Accept, Origin, X-Requested-With';
38 # 如果需要支持 cookie,可以设置以下 header
39 add_header 'Access-Control-Allow-Credentials' 'true';
40 # 缓存设置
13 add_header Cache-Control no-cache; 41 add_header Cache-Control no-cache;
14 add_header Cache-Control private; 42 add_header Cache-Control private;
15 expires -1s; 43
44 # 使用 rewrite 将 /api 替换为 /new-api
45 rewrite ^/api/(.*)$ /$1 break;
46 proxy_pass http://192.168.6.20:28052;
16 } 47 }
17 48
18 #error_page 404 /404.html;
19 49
20 # redirect server error pages to the static page /50x.html
21 #
22 error_page 500 502 503 504 /50x.html; 50 error_page 500 502 503 504 /50x.html;
23 location = /50x.html { 51 location = /50x.html {
24 root /usr/share/nginx/html; 52 root /usr/share/nginx/html;
25 } 53 }
26
27 # proxy the PHP scripts to Apache listening on 127.0.0.1:80
28 #
29 #location ~ \.php$ {
30 # proxy_pass http://127.0.0.1;
31 #}
32
33 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
34 #
35 #location ~ \.php$ {
36 # root html;
37 # fastcgi_pass 127.0.0.1:9000;
38 # fastcgi_index index.php;
39 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
40 # include fastcgi_params;
41 #}
42
43 # deny access to .htaccess files, if Apache's document root
44 # concurs with nginx's one
45 #
46 #location ~ /\.ht {
47 # deny all;
48 #}
49 } 54 }
......
1 /** --------------------- 质量评估模型 ------------------------------- */
2
3 import request from "@/utils/request";
4
5 /** 获取质量评估方案资产名称列表 */
6 export const getQualityDamList = () => request({
7 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/dam-name-list`,
8 method: 'get'
9 })
10
11 /** 获取质量评估列表 */
12 export const getQualityList = (params) => request({
13 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/dam-list`,
14 method: 'post',
15 data: params
16 })
17
18 /** 获取可选择的资产目录列表 */
19 export const getDamList = () => request({
20 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/dam-catalog-table/dam-name-list`,
21 method: 'post',
22 data: {}
23 })
24
25 /** 获取资产目录的表列表 */
26 export const getDamTableList = (damGuid) => request({
27 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/dam-catalog-table/get-table-list?damGuid=${damGuid}`,
28 method: 'get'
29 })
30
31 /** 获取资产目录表的详情 */
32 export const getTableFields = (subjectGuid) => request({
33 url:`${import.meta.env.VITE_API_ASSET_BASEURL}/dam-catalog-table/get-table-detail?subjectGuid=${subjectGuid}`,
34 method: 'get'
35 });
36
37 /** 获取资产表的规则列表 */
38 export const getDamTableRulesList = (params) => request({
39 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model/list/rule-by-dam-guid`,
40 method: 'post',
41 data: params
42 })
43
44 /** 批量新增资产表的规则 */
45 export const saveDamTableRules = (params) => request({
46 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model/add`,
47 method: 'post',
48 data: params
49 })
50
51 /** 获取资产表的单个规则 */
52 export const getRuleConfDetail = (param) => request({
53 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model/conf/detail?ruleConfGuid=${param}`,
54 method: 'get'
55 })
56
57 /** 获取对应执行方案的规则详情 */
58 export const getRecordRuleConfDetail = (param) => request({
59 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model-record/conf/detail?ruleConfGuid=${param.ruleConfGuid}&planExecGuid=${param.planExecGuid}`,
60 method: 'get'
61 });
62
63 /** 编辑资产表的单个规则 */
64 export const updateDamTableRule = (params) => request({
65 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model/conf/update`,
66 method: 'post',
67 data: params
68 })
69
70 /** 删除资产表的单个规则 */
71 export const deleteDamTableRule = (ruleConfGuid, planGuid: any = null) => request({
72 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model/conf/del?ruleConfGuid=${ruleConfGuid}&planGuid=${planGuid}`,
73 method: 'delete'
74 })
75
76 // 获取规则类型的接口
77 export const getRuleTypeList = () => request({
78 url:`${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-rule/list`,
79 method: 'post',
80 data: {}
81 })
82
83 // 获取规则大类的接口
84 export const getLargeCategoryList = () => request({
85 url:`${import.meta.env.VITE_APP_API_BASEURL}/data-dict/get-data-list`,
86 method: 'post',
87 data: { paramCode: "LARGE-CATEGORY" }
88 })
89
90 // 获取规则小类的接口
91 export const getSmallCategoryList = () => request({
92 url:`${import.meta.env.VITE_APP_API_BASEURL}/data-dict/get-data-list`,
93 method: 'post',
94 data: { paramCode: "SMALL-CATEGORY" }
95 })
96
97 /** 表的逻辑条件和sql检验。 */
98 export const validateSubjectTableRule = (params) => request({
99 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/sql-operate/check-sql`,
100 method: 'post',
101 data: params
102 })
103
104 /** 自定义sql检验 */
105 export const validateCustomSql = (params) => request({
106 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model/conf/check-custom-sql`,
107 method: 'post',
108 data: params
109 })
110
111 /** 批量验证过滤条件 */
112 export const batchValidateSubjectTableRule = (params) => request({
113 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/sql-operate/batch-check-sql`,
114 method: 'post',
115 data: params
116 })
117
118 /** ---------- 第二步,规则权重设置接口 ------ - */
119
120 /** 获取规则大类统计 */
121 export const getModelRuleCount = (params) => request({
122 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model/list/model-rule-category-count`,
123 method: 'post',
124 data: params
125 })
126
127 /** 保存质量评估方案 */
128 export const saveQualityPlan = (params) => request({
129 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/add`,
130 method: 'post',
131 data: params
132 })
133
134 /** 更新质量方案 */
135 export const updateQualityPlan = (params) => request({
136 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/update`,
137 method: 'put',
138 data: params
139 })
140
141 /** 删除质量方案 */
142 export const deleteQualityPlan = (guids) => request({
143 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/del`,
144 method: 'delete',
145 data: guids
146 })
147
148 /** 获取方案详情,用于编辑 */
149 export const getPlanDetail = (params) => request({
150 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/detail/${params}`,
151 method: 'get'
152 })
153
154 /** 获取方案详情中的过滤条件,用于编辑 */
155 export const getPlanFilterDetail = (params) => request({
156 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/query-plan-filter?planGuid=${params}`,
157 method: 'get'
158 })
159
160 /** 手动执行方案 */
161 export const executePlan = (params) => request({
162 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/dam-exec-plan?planGuid=${params.planGuid}&reportGuid=${params.reportGuid}`,
163 method: 'post'
164 })
165
166 /** 获取方案查看详情列表数据。 */
167 export const getAssessDetailTableData = (params) => request({
168 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-analysis-report/page-exec-log-list`,
169 method: 'post',
170 data: params
171 })
172
173 /** 根据执行guid,获取方案执行详情。 */
174 export const getExecPlanDetailTableData = (params) => request({
175 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/query-exec-detail?&planExecGuid=${params.planExecGuid}`,
176 method: 'get'
177 })
178
179 /** 获取方案详情中每个表的规则详细执行列表数据。 */
180 export const getAssessTableRulesData = (params) => request({
181 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/query-exec-table-detail?planExecGuid=${params.planExecGuid}&qualityModelGuid=${params.qualityModelGuid}`,
182 method: 'get'
183 })
184
185 /** 下载脏数据 */
186 export const downloadDirtyData = (params) => request({
187 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/down-dirty-data`,
188 method: 'post',
189 data: params,
190 responseType: 'blob'
191 })
192
193 /** html转word接口 */
194 export const htmlToWord = (params) => request({
195 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-analysis-report/download/html-to-word`,
196 method: 'postJsonD',
197 data: params,
198 responseType: 'blob'
199 });
200
201 /** 获取方案执行表规则查看 */
202 export const getTableRuleDetail= (params) => request({
203 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-analysis-report/query-exec-table-rule-detail?reportExecGuid=${params}`,
204 method: 'get'
205 });
206
207 /** 获取数据质量一级指标得分统计 */
208 export const getLargeCategoryScore = (params) => request({
209 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-analysis-report/get-largeCategory-score?reportExecGuid=${params}`,
210 method: 'get'
211 });
212
213 /** 获取质量分析报告的详细内容,根绝报告guid。 */
214 export const getReportDetail = (params) => request({
215 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-analysis-report/get-report-data`,
216 method: 'post',
217 data: params
218 });
219
220 /** 获取方案执行明细 */
221 export const getPlanReportDetail= (params) => request({
222 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-analysis-report/query-exec-table-detail?reportExecGuid=${params.reportExecGuid}&planGuid=${params.planGuid}`,
223 method: 'get'
224 });
225
226 /** 下载sql语句执行 */
227 export const downPlanSql = (planGuid) => request({
228 url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-plan/down-plan-sql?planGuid=${planGuid}`,
229 method: 'post',
230 responseType: 'blob'
231 })
1 import request from "@/utils/request";
2
3 /**
4 * 流通撮合
5 **/
6
7 /** 获取已添加的数据产品列表 */
8 export const getMatchList = (params) => request({
9 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/circulation-matching/page-list`,
10 method: 'post',
11 data: params
12 })
13
14 /** 获取撮合详情 */
15 export const getMatchDetail = (params) => request({
16 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/circulation-matching/detail`,
17 method: 'get',
18 params
19 })
20
21 /** 新增撮合信息 */
22 export const matchSave = (params) => request({
23 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/circulation-matching/save`,
24 method: 'post',
25 data: params
26 });
27
28 /** 更新撮合信息 */
29 export const matchUpdate = (params) => request({
30 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/circulation-matching/update`,
31 method: 'post',
32 data: params
33 });
34
35 /** 删除撮合信息 */
36 export const matchDelete = (params) => request({
37 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/circulation-matching/delete`,
38 method: 'delete',
39 data: params
40 });
41
42 /** 获取撮合日志 */
43 export const getMatchLog = (params) => request({
44 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/circulation-matching/state-change-log-list`,
45 method: 'get',
46 params
47 });
48
49 /**
50 * 金融产品
51 **/
52 /** 获取金融产品列表。 */
53 export const getFinancialList = (params) => request({
54 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/financial-products/page-list`,
55 method: 'post',
56 data: params
57 })
58
59 /** 获取金融产品详情 */
60 export const getFinancialDetail = (params) => request({
61 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/financial-products/detail`,
62 method: 'get',
63 params
64 })
65
66 /** 新增金融产品信息 */
67 export const financialSave = (params) => request({
68 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/financial-products/save`,
69 method: 'post',
70 data: params
71 });
72
73 /** 更新金融产品信息 */
74 export const financialUpdate = (params) => request({
75 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/financial-products/update`,
76 method: 'post',
77 data: params
78 });
79
80 /** 删除金融产品信息 */
81 export const financialDelete = (params) => request({
82 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/financial-products/delete`,
83 method: 'delete',
84 data: params
85 });
86
87 /** 更新金融产品上架状态 */
88 export const financialUpdateStatus = (params) => request({
89 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/financial-products/update-listing-Status`,
90 method: 'post',
91 data: params
92 });
93
94 /** 验证金融产品名称唯一性 */
95 export const checkFinancialName = (params) => request({
96 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/financial-products/verify-data-name`,
97 method: 'get',
98 params
99 })
100
101 // 数据要素乘
102 export const orderStates = [{
103 value: 'N',
104 label: '待沟通'
105 }, {
106 value: 'I',
107 label: '沟通中'
108 }, {
109 value: 'R',
110 label: '达成意向'
111 }, {
112 value: 'C',
113 label: '合同拟定'
114 }, {
115 value: 'S',
116 label: '合同签署'
117 }, {
118 value: 'P',
119 label: '合同执行中'
120 }, {
121 value: 'Y',
122 label: '合同执行完'
123 }, {
124 value: 'D',
125 label: '撮合关闭'
126 }]
127
128 export const filterVal = (val, type) => {
129 if(type == 'orderState'){
130 const row = orderStates.filter(d => d.value == val);
131 return row.length?row[0].label:'--';
132 } else if(type == 'tenantNature'){
133 let approval = '--';
134 switch (val) {
135 case 1:
136 approval = '数据字典数据治理';
137 break;
138 case 2:
139 approval = '律师事务所';
140 break;
141 case 3:
142 approval = '会计师事务所';
143 break;
144 case 4:
145 approval = '金融机构';
146 break;
147 case 5:
148 approval = '资产评估机构';
149 break;
150 case 6:
151 approval = '申请数据资产化企业';
152 break;
153 case 7:
154 approval = '其他';
155 break;
156 default:
157 approval = '--';
158 break;
159 }
160 return approval;
161 }
162 }
163
164 export const filterStatus = (row, type) => {
165 let state = 'info'
166 if (type == 'orderState') {
167 switch (row[type]) {
168 case "N":
169 state = 'warning'
170 break;
171 case "I":
172 state = 'warning'
173 break;
174 case "R":
175 state = "warning"
176 break
177 case "C":
178 state = "warning"
179 break
180 case "S":
181 state = "primary"
182 break
183 case "P":
184 state = "primary"
185 break
186 case "Y":
187 state = 'success';
188 break;
189 case "D":
190 state = "info"
191 break
192 default:
193 state = "info"
194 break
195 }
196 }
197 return state;
198 }
...@@ -2,16 +2,174 @@ import request from "@/utils/request"; ...@@ -2,16 +2,174 @@ import request from "@/utils/request";
2 2
3 3
4 /** 4 /**
5 * 数据字典
6 **/
7
8 // 编码规则流水号
9 export const getCoderuleList = (params) => request({
10 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/code-rule/list`,
11 method: 'post',
12 data: params
13 })
14 // 获取数据类型的接口
15 export const getDataTypeList = (params) => request({
16 url: `${import.meta.env.VITE_APP_API_BASEURL}/data-dict/get-data-list`,
17 method: 'post',
18 data: params,
19 })
20 // 获取数据库列表
21 export const getDataBaseList = (params) => request({
22 url: `${import.meta.env.VITE_APP_API_BASEURL}/data-source/get-source-list`,
23 method: 'post',
24 data: params,
25 })
26
27 // 新增
28 export const addDictionary = (params) => request({
29 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/add`,
30 method: 'post',
31 data: params
32 })
33 // 删除
34 export const deleteDictionary = (params) => request({
35 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/del`,
36 method: 'delete',
37 data: params
38 })
39 // 删除数据字典前的校验
40 export const checkDeleteDictionary = (params) => request({
41 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/check-del`,
42 method: 'delete',
43 data: params
44 })
45 // 编辑校验数据结构删除的条件
46 export const checkDeleteDictionaryScheme = (params) => request({
47 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/check-del/dictionary-scheme`,
48 method: 'post',
49 data: params
50 })
51 // 分页查询
52 // export const getDictionary = (params) => request({
53 // url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/page-list`,
54 // method: 'post',
55 // data: params
56 // })
57 // 查询数据字典启用状态的数据
58 export const getDictionaryAll = (params) => request({
59 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/list-all`,
60 method: 'post',
61 params
62 })
63 // 修改
64 export const updateDictionary = (params) => request({
65 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/update`,
66 method: 'put',
67 data: params
68 })
69 // 详情
70 export const getDictionaryDetail = (params) => request({
71 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/detail/${params}`,
72 method: 'get'
73 })
74 // 查看数据字典数据
75 export const getDictionaryFileds = (params) => request({
76 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/dictionary-data/${params}`,
77 method: 'get'
78 })
79 // 数据字典启用停用
80 export const updateDictionaryState = (params) => request({
81 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/change-state`,
82 method: 'get',
83 params
84 })
85 // 检验是否存在
86 export const checkDictionary = (params) => request({
87 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/check-exist`,
88 method: 'get',
89 params
90 })
91 // 数据字典新增数据时生成编码规则
92 export const getDictionaryRuleData = (params) => request({
93 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/generate/code-rule/byGuid`,
94 method: 'get',
95 params
96 })
97 // 数据字典树形数据
98 export const getDictionaryTree = (params) => request({
99 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/tree-list`,
100 method: 'post',
101 params
102 })
103 // 保存动态数据字典数据
104 export const saveDictionaryData = (params) => request({
105 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/save/dictionary-data`,
106 method: 'post',
107 data: params
108 })
109 // 更新数据字典数据
110 export const updateDictionaryData = (params) => request({
111 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/update/dictionary-data`,
112 method: 'post',
113 data: params
114 })
115 // 删除数据字典数据
116 export const deleteDictionaryData = (params) => request({
117 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/del/dictionary-data`,
118 method: 'delete',
119 data: params
120 })
121 // 导入数据字典
122 export const importDictionary = (params) => request({
123 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/import/data-dictionary`,
124 method: 'post',
125 data: params
126 })
127 // 显示导入的数据字典数据
128 export const showDictionary = (params) => request({
129 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/import/show/data-dictionary`,
130 method: 'post',
131 data: params,
132 headers: {
133 'Content-Type': 'multipart/form-data'
134 }
135 })
136 // 导出数据字典模板
137 export const exportDictionary = (params) => request({
138 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/export/data-dictionary/schema`,
139 method: 'post',
140 data: params,
141 responseType: 'blob'
142 })
143 // 导出数据字典数据
144 export const exportDictionaryFileds = (params) => request({
145 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/export/data-dictionary/data`,
146 method: 'post',
147 data: params,
148 responseType: 'blob'
149 })
150 // 验证数据是否符合标准
151 export const checkDictionaryData = (params) => request({
152 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-dictionary-general/check/dictionary-data`,
153 method: 'post',
154 data: params
155 })
156
157
158 /**
5 * 获取数据级别 159 * 获取数据级别
6 * @param {Object} 160 * @param {Object}
7 * { paramCode: "DATA-CLASSIFY" } 161 * { paramCode: "DATA-CLASSIFY" }
8 * DATA-CLASSIFY 数据类别 162 * DATA-CLASSIFY 数据类别
9 * DATA-GRADE 数据级别 163 * DATA-GRADE 数据级别
10 */ 164 */
11 export const getLargeCategoryList = (data) => request({ 165 // export const getLargeCategoryList = (data) => request({
12 url:`${import.meta.env.VITE_APP_API_BASEURL}/data-dict/get-data-list`, 166 // url:`${import.meta.env.VITE_APP_API_BASEURL}/data-dict/get-data-list`,
13 method: 'post', 167 // method: 'post',
14 data 168 // data
169 // })
170 export const getLargeCategoryList = (params) => request({
171 url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType?dictType=${params.dictType}`,
172 method: 'get',
15 }) 173 })
16 174
17 175
...@@ -213,6 +371,18 @@ export const getCgTemplateClassifyTreeList = (data) => request({ ...@@ -213,6 +371,18 @@ export const getCgTemplateClassifyTreeList = (data) => request({
213 371
214 372
215 /**-------------------------分类分级目录--------------------------------- */ 373 /**-------------------------分类分级目录--------------------------------- */
374 /**
375 * 查询执行guid和目录名称
376 * @param {no params}
377 * @path /cg-dir/get-exec-guid-and-name
378 */
379 export const getExecGuidAndName = () => request({
380 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-dir/get-exec-guid-and-name`,
381 method: 'post',
382 })
383
384
385
216 386
217 /** 387 /**
218 * 分类分级目录树形列表 388 * 分类分级目录树形列表
...@@ -390,3 +560,152 @@ export const filterVal = (val, type) => { ...@@ -390,3 +560,152 @@ export const filterVal = (val, type) => {
390 } 560 }
391 return status; 561 return status;
392 } 562 }
563
564 /** 获取字典列表
565 * VITE_APP_PLAN_BASEURL 为环境变量 现在只是mock数据
566 */
567 export const getDictionary = (params) => request({
568 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/data-dictionary-general/list-all?state=1`,
569 method: 'post'
570 })
571
572
573
574 /** 业务规则配置-新增
575 * @param {Object}
576 * @path /biz-rule-config/save
577 */
578 export const saveBizRuleConfig = (data) => request({
579 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/biz-rule-config/save`,
580 method: 'post',
581 data
582 })
583
584
585 /**树形目录
586 * @param {Object}
587 * @path /db-dir/tree-list
588 */
589 export const getDbDirTreeList = (data) => request({
590 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/tree-list`,
591 method: 'post',
592 data
593 })
594
595 /**
596 * 数据库目录-表数据列表查询
597 * @param {Object}
598 * @path /db-dir/table/page-list
599 */
600 export const getDbDirTablePageList = (data) => request({
601 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/table/page-list`,
602 method: 'post',
603 data
604 })
605
606 /**
607 * 数据库目录-已有数据库列表
608 * @param {no params}
609 * @path /db-dir/data-source/list
610 */
611 export const getDbDirDataSourceList = (params) => request({
612 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/data-source/list?execGuid=${params.execGuid}`,
613 method: 'post',
614 })
615
616 /**
617 * 获取列表
618 * @param {Object}
619 * @path /db-dir/field/page-list
620 * @returns
621 */
622 export const getDbDirFieldPageList = (data) => request({
623 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/field/page-list`,
624 method: 'post',
625 data
626 })
627
628
629
630 /** 获取已有字段信息 */
631 export const getDsTableStructure= (data) => request({
632 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/field/list-by-table-guid`,
633 method: 'post',
634 data
635 });
636
637 /** 根据选择的连接池获取表列表 */
638 export const getDsTableByDs = (params) => request({
639 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/table/list-by-datasource-guid`,
640 method: 'post',
641 data: params
642 })
643
644 /** 根据数据表获取表结构 */
645 export const getDsData= (params) => request({
646 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/data-catalog-subject/table-column-list`,
647 method: 'post',
648 data: params
649 });
650
651
652 /**
653 * 数据库新建目录表
654 * @param {Object}
655 * @path /db-dir/table/save
656 */
657 export const saveDbDirTable = (data) => request({
658 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/table/save`,
659 method: 'post',
660 data
661 })
662
663 /**
664 * 数据库目录修改表
665 * @param {Object}
666 * @path /db-dir/table/update
667 */
668 export const updateDbDirTable = (data) => request({
669 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/table/update`,
670 method: 'post',
671 data
672 })
673
674 /**
675 * 生成建表sql语句
676 * @param {Object}
677 * @path /db-dir/table/create-table-sql
678 */
679 export const createTableSql = (data) => request({
680 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/db-dir/table/create-table-sql`,
681 method: 'post',
682 data
683 })
684
685
686
687
688 /*********************业务规则配置 ************数据库目录************************* */
689
690 /**
691 * 业务规则配置-详情
692 * @param {Object}
693 * @path /biz-rule-config/detail
694 * @returns
695 */
696 export const getBizRuleConfigDetail = (params) => request({
697 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/biz-rule-config/detail?tableGuid=${params.tableGuid}&execGuid=${params.execGuid}`,
698 method: 'get',
699 })
700
701 /**
702 * 业务规则配置-修改
703 * @param {Object}
704 * @path /biz-rule-config/update
705 * @returns
706 */
707 export const updateBizRuleConfig = (data) => request({
708 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/biz-rule-config/update`,
709 method: 'post',
710 data
711 })
......
...@@ -17,10 +17,11 @@ export const deleteMetaDataTask = (params) => request({ ...@@ -17,10 +17,11 @@ export const deleteMetaDataTask = (params) => request({
17 }) 17 })
18 // 分页查询 18 // 分页查询
19 export const getMetaDataTask = (params) => request({ 19 export const getMetaDataTask = (params) => request({
20 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/meta-collect-task/page-list`, 20 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/meta-collect-task/page-list`,
21 method: 'post', 21 method: 'post',
22 data: params 22 data: params
23 }) 23 })
24
24 // 修改 25 // 修改
25 export const updateMetaDataTask = (params) => request({ 26 export const updateMetaDataTask = (params) => request({
26 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/meta-collect-task/update`, 27 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/meta-collect-task/update`,
...@@ -92,7 +93,7 @@ export const getMetaDataSheet = (params) => request({ ...@@ -92,7 +93,7 @@ export const getMetaDataSheet = (params) => request({
92 }) 93 })
93 // 表字段查询 94 // 表字段查询
94 export const getMetaSheetField = (params) => request({ 95 export const getMetaSheetField = (params) => request({
95 url: `${import.meta.env.VITE_APP_PLAN_BASEURL}/meta-table/meta-table-field-list`, 96 url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/meta-table/meta-table-field-list`,
96 method: 'post', 97 method: 'post',
97 params 98 params
98 }) 99 })
......
1 import request from "@/utils/request";
2
3 /** 校验公司名称是否重复 */
4 export const checkCompanyName = (params) => request({
5 url: `${import.meta.env.VITE_API_PORTALURL}/portal/cooperate-register/verify-company-name`,
6 method: 'get',
7 params
8 })
9
10 /** 获取短信验证码 */
11 export const getRegisterCode = (params) => request({
12 url: `${import.meta.env.VITE_API_PORTALURL}/portal/sms/get-verify-code`,
13 method: 'post',
14 params
15 })
16
17 /** 校验短信验证码 */
18 export const checkRegisterCode = (params) => request({
19 url: `${import.meta.env.VITE_API_PORTALURL}/portal/sms/get-verify-code-validation`,
20 method: 'post',
21 params
22 })
23
24 /** 注册信息申请 */
25 export const registerInfoSave = (params) => request({
26 url: `${import.meta.env.VITE_API_PORTALURL}/portal/cooperate/save`,
27 method: 'post',
28 data: params
29 });
30
31 /** 获取注册信息列表。 */
32 export const getRegisterInfoList = (params) => request({
33 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/cooperate-register/page-list`,
34 method: 'post',
35 data: params
36 })
37
38 /** 获取注册信息详情 */
39 export const getRegiaterInfoDetail = (params) => request({
40 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/cooperate-register/detail`,
41 method: 'get',
42 params
43 })
44
45 /** 更新注册信息 */
46 export const registerInfoUpdate = (params) => request({
47 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/cooperate-register/update`,
48 method: 'post',
49 data: params
50 });
51
52 /** 删除注册信息 */
53 export const registerInfoDelete = (params) => request({
54 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/cooperate-register/delete`,
55 method: 'delete',
56 data: params
57 });
58
59 /** 验证管理员账号是否重复 */
60 export const checkAccount = (params) => request({
61 url: `${import.meta.env.VITE_API_ASSET_BASEURL}/cooperate-register/verify-admin-account`,
62 method: 'get',
63 params
64 })
65
66 /** 获取登录日志 */
67 export const getAccountLog = (params) => request({
68 url: `${import.meta.env.VITE_APP_API_BASEURL}/user/user-login-record`,
69 method: 'post',
70 data: params
71 })
72
73
74 /** 获取图形验证码 **/
75 export const getImgCodeSrc = (params={}) => request({
76 url: `${import.meta.env.VITE_API_PORTALURL}/portal/get-captcha`,
77 method: 'get',
78 params
79 })
80
81 /** 校验图形验证码 **/
82 export const checkImgCode = (params={}) => request({
83 url: `${import.meta.env.VITE_API_PORTALURL}/portal/check`,
84 method: 'post',
85 params
86 })
...@@ -209,8 +209,76 @@ const routes: RouteRecordRaw[] = [ ...@@ -209,8 +209,76 @@ const routes: RouteRecordRaw[] = [
209 cache: true 209 cache: true
210 }, 210 },
211 }, 211 },
212 ], 212 {
213 path: 'configure-rules',
214 name: 'configureRules',
215 component: () => import('@/views/data_inventory/configureRules.vue'),
216 meta: {
217 title: '配置业务规则',
218 sidebar: false,
219 breadcrumb: false,
220 cache: true,
221 reuse: true,
222 editPage: true,
223 activeMenu: '/data-inventory/classify-grade-catalogue',
224 },
225 },
226 {
227 path: 'table-create-existing',
228 name: 'tableCreateExisting',
229 component: () => import('@/views/data_inventory/tableCreateExisting.vue'),
230 meta: {
231 title: '已有表新建',
232 sidebar: false,
233 breadcrumb: false,
234 cache: true,
235 reuse: true
236 },
237 beforeEnter: (to, from) => {
238 if (to.query.domainName) {
239 to.meta.title = `已有表新建(${to.query.domainName})`;
240 to.meta.editPage = true;
241 }
242 }
243 },
244 {
245 path: 'table-create-file',
246 name: 'tableCreateFile',
247 component: () => import('@/views/data_inventory/tableCreateFile.vue'),
248 meta: {
249 title: '根据文件新建',
250 sidebar: false,
251 breadcrumb: false,
252 cache: true,
253 reuse: true
254 },
255 beforeEnter: (to, from) => {
256
213 } 257 }
258 },
259 ],
260 },
261 {
262 path: '/data-inventory/data-dictionary',
263 component: Layout,
264 meta: {
265 title: '数据字典',
266 icon: 'sidebar-cooperation',
267 },
268 children: [
269 {
270 path: '',
271 name: 'dictionary',
272 component: () => import('@/views/data_inventory/dictionary.vue'),
273 meta: {
274 title: '数据字典',
275 sidebar: false,
276 breadcrumb: false,
277 cache: true
278 },
279 },
280 ],
281 },
214 ] 282 ]
215 283
216 export default routes 284 export default routes
......
...@@ -101,6 +101,13 @@ const systemRoutes: RouteRecordRaw[] = [ ...@@ -101,6 +101,13 @@ const systemRoutes: RouteRecordRaw[] = [
101 // 动态路由(异步路由、导航栏路由) 101 // 动态路由(异步路由、导航栏路由)
102 const asyncRoutes: Route.recordMainRaw[] = [ 102 const asyncRoutes: Route.recordMainRaw[] = [
103 { 103 {
104 meta:{
105 title: '首页',
106 },
107 children: [
108 ],
109 },
110 {
104 meta: { 111 meta: {
105 title: '数据资产管理', 112 title: '数据资产管理',
106 }, 113 },
......
...@@ -218,7 +218,7 @@ const rulesDetailTableInfo: any = ref({ ...@@ -218,7 +218,7 @@ const rulesDetailTableInfo: any = ref({
218 oneRulesDetailDialogVisible.value = true; 218 oneRulesDetailDialogVisible.value = true;
219 } else { 219 } else {
220 detailJson.value[row.ruleConfGuid] = { isRequest: true }; 220 detailJson.value[row.ruleConfGuid] = { isRequest: true };
221 getRecordRuleConfDetail({ruleConfGuid: row.ruleConfGuid, planExecGuid: planExecGuid }).then((res: any) => { 221 getRecordRuleConfDetail({ ruleConfGuid: row.ruleConfGuid, planExecGuid: planExecGuid }).then((res: any) => {
222 detailLoading.value = false; 222 detailLoading.value = false;
223 oneRulesDetailDialogVisible.value = true; 223 oneRulesDetailDialogVisible.value = true;
224 if (res.code == proxy.$passCode) { 224 if (res.code == proxy.$passCode) {
......
...@@ -72,9 +72,12 @@ const tableInfo = ref({ ...@@ -72,9 +72,12 @@ const tableInfo = ref({
72 return status == 'Y' ? '有效' : '停用'; 72 return status == 'Y' ? '有效' : '停用';
73 } 73 }
74 }, 74 },
75 { label: "定义说明", width: 360, field: "description", }, 75 { label: "定义说明", width: 140, field: "description", },
76 { 76 {
77 label: "最低安全级别参考", field: "name", width: 140, 77 label: "最低安全级别参考", field: "name", width: 140, getName: (scope) => {
78 let dataGrade = scope.row.dataGrade;
79 return dataGrade + '级';
80 }
78 }, 81 },
79 { label: "修改人", field: "updateUserName", width: 140 }, 82 { label: "修改人", field: "updateUserName", width: 140 },
80 { label: "更新时间", field: "updateTime", width: 180 }, 83 { label: "更新时间", field: "updateTime", width: 180 },
...@@ -386,6 +389,7 @@ const getGradeListData = async () => { ...@@ -386,6 +389,7 @@ const getGradeListData = async () => {
386 389
387 const newCreateClass = () => { 390 const newCreateClass = () => {
388 drawerInfo.value.visible = true; 391 drawerInfo.value.visible = true;
392 classEditFormItems.value[2].options = treeListData.value;
389 drawerInfo.value.header.title = '添加分类'; 393 drawerInfo.value.header.title = '添加分类';
390 classEditFormItems.value.forEach(item => { 394 classEditFormItems.value.forEach(item => {
391 if (item.field == 'status') { 395 if (item.field == 'status') {
...@@ -702,7 +706,7 @@ onMounted(() => { ...@@ -702,7 +706,7 @@ onMounted(() => {
702 style="margin-top:16px; height: calc(100% - 161px)"> 706 style="margin-top:16px; height: calc(100% - 161px)">
703 <div class="tools_btns"> 707 <div class="tools_btns">
704 <el-button v-show="dataShowMethod == 'table'" type="primary" @click="newCreateClass">添加分类</el-button> 708 <el-button v-show="dataShowMethod == 'table'" type="primary" @click="newCreateClass">添加分类</el-button>
705 <el-button v-show="dataShowMethod == 'table'" @click="importClass">导入分类</el-button> 709 <!-- <el-button v-show="dataShowMethod == 'table'" @click="importClass">导入分类</el-button> -->
706 <el-button class="show-change-btn" @click="changeShowMethod">{{ '图形展示' }}</el-button> 710 <el-button class="show-change-btn" @click="changeShowMethod">{{ '图形展示' }}</el-button>
707 </div> 711 </div>
708 <Table v-show="dataShowMethod == 'table'" :tableInfo="tableInfo" /> 712 <Table v-show="dataShowMethod == 'table'" :tableInfo="tableInfo" />
......
...@@ -31,14 +31,14 @@ const getGradeListData = async () => { ...@@ -31,14 +31,14 @@ const getGradeListData = async () => {
31 // 获取数据类别 31 // 获取数据类别
32 const getDataGrade = async () => { 32 const getDataGrade = async () => {
33 const params = { 33 const params = {
34 paramCode: "DATA-CLASSIFY" 34 dictType: "数据类别"
35 } 35 }
36 const res: any = await getLargeCategoryList(params); 36 const res: any = await getLargeCategoryList(params);
37 if (res.code == proxy.$passCode) { 37 if (res.code == proxy.$passCode) {
38 // 提出value和label 作为select的options 38 // 提出value和label 作为select的options
39 const options = res.data.map((item: any) => ({ 39 const options = res.data.map((item: any) => ({
40 label: item.paramName, 40 label: item.label,
41 value: item.paramValue 41 value: item.value
42 })); 42 }));
43 newCreateGradeFormItems.value[1].options = options; 43 newCreateGradeFormItems.value[1].options = options;
44 classDataRef.value = options; 44 classDataRef.value = options;
...@@ -50,14 +50,14 @@ const getDataGrade = async () => { ...@@ -50,14 +50,14 @@ const getDataGrade = async () => {
50 // 获取数据级别 50 // 获取数据级别
51 const getDataClassify = async () => { 51 const getDataClassify = async () => {
52 const params = { 52 const params = {
53 paramCode: "DATA-GRADE" 53 dictType: "数据级别"
54 } 54 }
55 const res: any = await getLargeCategoryList(params); 55 const res: any = await getLargeCategoryList(params);
56 if (res.code == proxy.$passCode) { 56 if (res.code == proxy.$passCode) {
57 // 提出value和label 作为select的options 57 // 提出value和label 作为select的options
58 const options = res.data.map((item: any) => ({ 58 const options = res.data.map((item: any) => ({
59 label: item.paramName, 59 label: item.label,
60 value: item.paramValue 60 value: item.value
61 })); 61 }));
62 newCreateGradeFormItems.value[0].options = options; 62 newCreateGradeFormItems.value[0].options = options;
63 // 这里需要过滤已经在表格中数据级别 63 // 这里需要过滤已经在表格中数据级别
......
1 <template>
2 <el-select v-if="!readonly && isEdit && isSelectType(dbType, scope)" v-model="scope.row['defaultValue']" placeholder="请选择" collapse-tags-tooltip
3 filterable allow-create default-first-option :reserve-keyword="false">
4 <el-option v-for="opt in optionsConfig[dataType]" :key="opt['value']" :label="opt['label']" :value="opt['value']" />
5 </el-select>
6 <el-date-picker v-else-if="!readonly && isEdit && dataType === 'date'" v-model="scope.row['defaultValue']" type="date"
7 format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="请选择" />
8 <el-date-picker v-else-if="!readonly && isEdit && dbType === 'mysql' && dataType === 'datetime'"
9 v-model="scope.row['defaultValue']" placeholder="请选择" type="datetime" format="YYYY-MM-DD HH:mm:ss"
10 value-format="YYYY-MM-DD HH:mm:ss" />
11 <el-input v-else-if="!readonly && isEdit" v-model.trim="scope.row['defaultValue']" placeholder="请填写"
12 @input="(val) => inputChange(val, scope.row.dataType, scope)" />
13 <span v-else>{{ scope.row["defaultValue"] == null ? '--' : (isSelectType(dbType, scope) ?
14 (optionsConfig[dataType].find(s => s.value == scope.row["defaultValue"])?.label ??
15 scope.row["defaultValue"]) : scope.row["defaultValue"]) }}</span>
16 </template>
17
18 <script lang="ts" setup name="tableDefaultValue">
19 import { ref } from "vue";
20 import { useDefault } from "@/hooks/useDefault";
21 const { optionsConfig, inputChange, isSelectType } = useDefault()
22
23 const props = defineProps({
24 dbType: {
25 type: String,
26 default: ''
27 },
28 scope: {
29 type: Object,
30 default: {}
31 },
32 readonly: {
33 type: Boolean,
34 default: false
35 }
36 })
37
38 const isEdit = computed(() => {
39 return props.scope.row['isEdit'];
40 });
41
42 const dataType = computed(() => {
43 return props.scope.row['dataType'];
44 });
45
46 </script>
...\ No newline at end of file ...\ No newline at end of file
...@@ -7,7 +7,7 @@ import TableTools from '@/components/Tools/table_tools.vue'; ...@@ -7,7 +7,7 @@ import TableTools from '@/components/Tools/table_tools.vue';
7 import { getGradeList } from "@/api/modules/dataInventory"; 7 import { getGradeList } from "@/api/modules/dataInventory";
8 import { getLabelList, getClassifyGradeTreeList, saveLabel, getLabelPageList, deleteLabel, updateLabel } from "@/api/modules/dataLabel"; 8 import { getLabelList, getClassifyGradeTreeList, saveLabel, getLabelPageList, deleteLabel, updateLabel } from "@/api/modules/dataLabel";
9 import { CirclePlus, Delete } from "@element-plus/icons-vue"; 9 import { CirclePlus, Delete } from "@element-plus/icons-vue";
10 import { el, tr } from 'element-plus/es/locale'; 10
11 11
12 const { proxy } = getCurrentInstance() as any; 12 const { proxy } = getCurrentInstance() as any;
13 const dialogLabelFormRef = ref(); 13 const dialogLabelFormRef = ref();
...@@ -123,7 +123,7 @@ const treeInfo = ref<any>({ ...@@ -123,7 +123,7 @@ const treeInfo = ref<any>({
123 filter: true, 123 filter: true,
124 queryValue: "", 124 queryValue: "",
125 className: 'tree-list', 125 className: 'tree-list',
126 queryPlaceholder: "输入标准集名称搜索", 126 queryPlaceholder: "输入目录名称搜索",
127 props: { 127 props: {
128 label: "classifyName", 128 label: "classifyName",
129 value: "guid", 129 value: "guid",
...@@ -560,7 +560,6 @@ const searchClass = async (val: any, clear: boolean = false) => { ...@@ -560,7 +560,6 @@ const searchClass = async (val: any, clear: boolean = false) => {
560 return; 560 return;
561 } 561 }
562 if (val?.labelName?.length !== 0) { 562 if (val?.labelName?.length !== 0) {
563 console.log('调用了吗');
564 tableInfo.value.loading = true; 563 tableInfo.value.loading = true;
565 const params = { 564 const params = {
566 pageIndex: page.value.curr, 565 pageIndex: page.value.curr,
......
1 <route lang="yaml">
2 name: tableCreateFile
3 </route>
4
5 <script lang="ts" setup name="tableCreateFile">
6
7 import { ref } from "vue";
8 import { ElMessage, ElMessageBox, ElTable } from "element-plus";
9 import useUserStore from "@/store/modules/user";
10 import useDataCatalogStore from "@/store/modules/dataCatalog";
11 import expandPropertyDialog from "./expandPropertyDialog.vue";
12 import tableDefaultValue from "./components/tableDefaultValue.vue";
13 // import {
14 // getDatabase,
15 // getFileStandards,
16 // getDictionary,
17 // getSubjectFieldByFile,
18 // tableCategoryList,
19 // syncPolicys,
20 // getDataTypeList,
21 // tableModels,
22 // aggMethodList,
23 // getCharacterList,
24 // saveSubjectTable,
25 // updateSubjectTable,
26 // getTableStandardDetail,
27 // getSubjectDomainDetail,
28 // saveSubjectTableDraft,
29 // updateSubjectTableDraft,
30 // getFieldStandardTree,
31 // dimTypeList,
32 // getDimList,
33 // getSubjectTableDetail,
34 // checkSubjectTableData
35 // } from "@/api/modules/dataCatalogService";
36 import { useDefault } from "@/hooks/useDefault";
37 import uploadExcelFile from "./components/uploadExcelFile.vue";
38
39 const userStore = useUserStore();
40 const dataCatalogStore = useDataCatalogStore();
41 const { checkDefault } = useDefault();
42 const userData = JSON.parse(userStore.userData);
43 const { proxy } = getCurrentInstance() as any;
44 const router = useRouter();
45 const route = useRoute();
46 const isDimTable = route.query.isDim;
47 const subjectDomainGuid: any = ref(route.query.domainGuid);
48 const fullPath = route.fullPath;
49 const standardSetGuids = ref([]);
50 //记录已入库的表创建信息。
51 const originTableCreateInfo = ref({});
52
53 //记录当前正在编辑的表创建信息。
54 const tableCreateInfo: Ref<any> = ref({
55 guid: "",
56 isCreate: false,
57 inputNameValue: '',
58 isSync: 'Y', //是否默认同步数据。
59 sheetName: '', //所选择的sheet页。
60 tableData: [
61 {
62 //数据库表信息。
63 dataSourceGuid: '',
64 dataServerName: "",
65 dataServerChName: "",
66 enName: "",
67 chName: "",
68 subjectDomain: route.query.domainName,
69 subjectDomainGuid: subjectDomainGuid.value,
70 tableCategory: route.query.layereAttribute == '3' ? 6 : 1,
71 dimType: isDimTable ? 1 : null,
72 codeColumn: '',
73 codeName: '',
74 syncPolicy: 3,
75 characterSet: 'utf8mb3',
76 tableModel: 1, //若是聚合模型,下方出现一列聚合方式选择。处了主键列,其余列都需要选择。每个表里都要有主键。
77 description: "",
78 },
79 ],
80 partitionAttribute: {},
81 tableFields: [], // 字段标准数组。
82 });
83
84 const stepsInfo = ref({
85 step: 0,
86 list: [
87 { title: "上传文件", value: 1 },
88 { title: "设置属性字段", value: 2 },
89 ],
90 });
91
92 /** 上传的文件字段信息。 */
93 const fileTableFields: any = ref([]);
94 /** 上传的文件数据信息 */
95 const fileTableData: any = ref([]);
96 /** 上传的文件信息。 */
97 const uploadDataFileInfo: any = ref([]);
98
99 const handleFileDataChange = (fileFields, files, sheetName, data) => {
100 if (fileTableFields.value != fileFields) {//文件字段改变,下一步时需要清空。
101 fileTableFields.value = fileFields.slice(0);
102 tableCreateInfo.value.tableFields = [];
103 }
104 fileTableData.value = data;
105 uploadDataFileInfo.value = files;
106 tableCreateInfo.value.sheetName = sheetName;
107 console.log(files);
108 }
109
110 const uploadFileRef = ref();
111
112 // const getSubjectField = () => {
113 // tableFieldsLoading.value = true;
114 // getSubjectFieldByFile(fileTableFields.value.map(f => f.chName), tableCreateInfo.value.tableData[0].subjectDomainGuid).then((res: any) => {
115 // tableFieldsLoading.value = false;
116 // if (res.code == proxy.$passCode) {
117 // tableCreateInfo.value.tableFields = res.data?.map((field, i) => {
118 // field.dimOrdictionaryGuid = field.dictionaryGuid;
119 // field.fileFieldName = fileTableFields.value[i].chName;
120 // field.isEdit = true;
121 // !field.notNull && (field.notNull = 'N');
122 // return field;
123 // }) || [];
124 // } else {
125 // ElMessage.error(res.msg);
126 // }
127 // });
128 // }
129
130 const nextStep = () => {
131 uploadFileRef.value.fileFormRef.ruleFormRef.validate((valid) => {
132 if (valid) {
133 if (!fileTableFields.value.length) {
134 ElMessage({
135 type: "error",
136 message: "上传文件字段不能为空!",
137 });
138 return;
139 }
140 if (!fileTableData.value.length) {
141 tableCreateInfo.value.isSync = 'N';
142 } else {
143 tableCreateInfo.value.isSync = 'Y';
144 }
145 stepsInfo.value.step = 1;
146 // getDictionaryList();
147 // getDimListData();
148 // if (!fieldTypes.value.length) {
149 // getFieldTypeList();
150 // getCharacterListData();
151 // }
152 // if (!databaseList.value.length) {
153 // getDatabaseList();
154 // }
155 // getDomainDetail(subjectDomainGuid.value);
156 // if (!tableCreateInfo.value.tableFields.length) {
157 // getSubjectField();
158 // }
159 }
160 });
161 };
162
163 const isPrevious = ref(false);
164
165 /** 上一步 */
166 const previousStep = () => {
167 stepsInfo.value.step = 0;
168 isPrevious.value = true;
169 };
170
171 /** 记录是否开启字段标准,根据主题域相关信息获取 */
172 const isOpenStandard = ref(true);
173
174 const selectTableFieldRows = ref([]);
175
176 const tableStandardGuid = ref('');
177 const tableStandardDetail: any = ref({});
178 const fieldStandardSetGuids = ref([]);
179
180 // 实际显示的字段标准列表
181 const standardListOptions: any = ref([]);
182
183 const databaseList: any = ref([]);
184
185 //字段类型
186 const fieldTypes: any = ref([]);
187
188 //字符集
189 const characterList: any = ref([]);
190
191 //是否列表
192 const isNotList = ref([
193 {
194 label: "Y",
195 value: "Y",
196 },
197 {
198 label: "N",
199 value: "N",
200 },
201 ]);
202
203 const batchAddFieldStandardPage = ref({
204 pageSize: 50,
205 pageIndex: 1,
206 standardSetGuids: [],
207 approveState: 'Y',
208 name: '',
209 standardSetLevelCode: ""
210 });
211
212 const init = ref(true);
213
214 const fullscreenLoading = ref(false);
215
216 /** 表里有数据时不能修改字段类型,长度,精度 */
217 const hasSubjectData = ref(false);
218
219
220
221 /** 保存表 */
222 const saveTable = () => {
223 }
224 </script>
225
226 <template>
227 <div class="container_wrap full" v-loading.fullscreen.lock="fullscreenLoading">
228 <div class="content_main">
229 <div class="top_tool_wrap">
230 <StepBar :steps-info="stepsInfo" />
231 </div>
232 <uploadExcelFile ref="uploadFileRef" v-show="stepsInfo.step === 0" @fileDataChange="handleFileDataChange">
233 </uploadExcelFile>
234 <div class="second-step-content" v-show="stepsInfo.step === 1">
235 aaa
236 </div>
237 </div>
238 <div class="bottom_tool_wrap">
239 <template v-if="stepsInfo.step == 0">
240 <el-button type="primary" @click="nextStep">下一步</el-button>
241 </template>
242 <template v-else>
243 <el-checkbox v-model="tableCreateInfo.isSync" true-label="Y" :disabled="!fileTableData?.length"
244 false-label="N">同步数据(说明:勾选代表建表同时写入表格数据。)</el-checkbox>
245 <el-button @click="previousStep">上一步</el-button>
246 <el-button type="primary">保存为草稿</el-button>
247 <el-button type="primary" @click="saveTable">提交</el-button>
248 </template>
249 </div>
250
251 </div>
252 </template>
253
254 <style lang="scss" scoped>
255 .top_tool_wrap {
256 width: 100%;
257 height: 80px;
258 display: flex;
259 justify-content: center;
260 align-items: center;
261 border-bottom: 1px solid #d9d9d9;
262
263 :deep(.el-steps) {
264 width: 30%;
265 }
266 }
267
268 .content_main {
269 height: calc(100% - 40px);
270
271 .header-bg-title {
272 margin: 16px 16px 0px;
273 background: #F5F5F5;
274 padding-left: 16px;
275 height: 48px;
276 font-size: 14px;
277 color: #212121;
278 letter-spacing: 0;
279 line-height: 21px;
280 font-weight: 600;
281 display: flex;
282 align-items: center;
283 position: relative;
284
285 .preview-data-totals {
286 position: absolute;
287 right: 16px;
288 line-height: 32px;
289 font-size: 14px;
290 color: #666666;
291 font-weight: 400;
292 }
293
294 .fontC-4fa1a4 {
295 color: var(--el-color-primary);
296 }
297 }
298
299 .form-main {
300 border: 1px solid #d9d9d9;
301 margin: 0px 16px;
302 padding: 16px 16px 0px 16px;
303 height: 125px;
304
305 .dialog-form-inline {
306 align-items: flex-start;
307 }
308
309 :deep(.el-form) {
310 .item-label {
311 width: 100%;
312 }
313
314 .el-select {
315 max-width: 300px;
316 }
317 }
318 }
319
320 .table-main {
321 height: calc(100% - 350px);
322 border: 1px solid #d9d9d9;
323 margin: 0px 16px 16px 16px;
324 padding: 16px;
325 }
326
327 .empty-content {
328 display: flex;
329 align-items: center;
330 justify-content: center;
331 height: 100%;
332 width: 100%;
333 flex-direction: column;
334
335 .empty-text {
336 font-size: 14px;
337 color: #b2b2b2;
338 }
339 }
340
341 .second-step-content {
342 height: calc(100% - 80px);
343 width: 100%;
344 padding: 16px;
345
346 .tools_btns {
347 padding: 8px 0;
348 }
349
350 :deep(.el-table) {
351 .cell {
352
353 .prefix-or-suffix-cell {
354 display: inline-flex;
355 align-items: center;
356 }
357 }
358 }
359
360 .table_panel {
361 height: calc(100% - 114px);
362 }
363
364 :deep(.el-table) {
365 & td.el-table__cell {
366 padding: 3px 0;
367 height: 36px;
368 }
369 }
370 }
371 }
372
373 :deep(.el-dialog) {
374 .dialog-form-inline {
375 .checkbox_input {
376 display: flex;
377 flex-direction: column;
378
379 .input_panel {
380 margin: 0;
381 }
382 }
383
384 .select_group {
385 .el-form-item__content>.el-input {
386 margin-top: 21px;
387 }
388 }
389
390 .radio_panel {
391 .panel_content {
392 display: none;
393 }
394 }
395 }
396 }
397
398 :deep(.batchDialog) {
399 .el-tree-node__content {
400 padding-left: 8px !important;
401
402 .el-icon {
403 display: none;
404 }
405 }
406 }
407
408 .bottom_tool_wrap {
409 height: 40px;
410 padding: 0 16px;
411 border-top: 1px solid #d9d9d9;
412 display: flex;
413 justify-content: flex-end;
414 align-items: center;
415
416 .el-checkbox {
417 margin-right: 20px;
418 }
419
420 :deep(.el-checkbox__input.is-checked + .el-checkbox__label) {
421 color: var(--el-color-regular);
422 }
423 }
424 </style>
...@@ -137,6 +137,9 @@ const handleClassDataEdit = (params) => { ...@@ -137,6 +137,9 @@ const handleClassDataEdit = (params) => {
137 if (item.field === 'classStandardName') { 137 if (item.field === 'classStandardName') {
138 item.default = params.name 138 item.default = params.name
139 } 139 }
140 if (item.field === 'description') {
141 item.default = params.description
142 }
140 }) 143 })
141 } 144 }
142 145
...@@ -209,6 +212,15 @@ const classStandardFormItems = ref([{ ...@@ -209,6 +212,15 @@ const classStandardFormItems = ref([{
209 default: '', 212 default: '',
210 required: true, 213 required: true,
211 block: true, 214 block: true,
215 }, {
216 label: '分类描述',
217 type: 'textarea',
218 placeholder: '请输入',
219 field: 'description',
220 default: '',
221 clearable: true,
222 required: false,
223 block: true
212 }]); 224 }]);
213 225
214 const classStandardFormRules = ref({ 226 const classStandardFormRules = ref({
...@@ -235,6 +247,7 @@ const newCreateClassStandardDialogInfo = ref({ ...@@ -235,6 +247,7 @@ const newCreateClassStandardDialogInfo = ref({
235 if (newCreateClassStandardDialogInfo.value.title === '新增分类') { 247 if (newCreateClassStandardDialogInfo.value.title === '新增分类') {
236 newCreateClassStandardDialogInfo.value.submitBtnLoading = true; 248 newCreateClassStandardDialogInfo.value.submitBtnLoading = true;
237 const params = { 249 const params = {
250 description: info.description,
238 name: info.classStandardName, 251 name: info.classStandardName,
239 refGradeGuid: info.refGradeGuid, 252 refGradeGuid: info.refGradeGuid,
240 type: 'C' 253 type: 'C'
......
...@@ -4,14 +4,14 @@ ...@@ -4,14 +4,14 @@
4 4
5 <script lang="ts" setup name="importFile"> 5 <script lang="ts" setup name="importFile">
6 import { ref } from "vue"; 6 import { ref } from "vue";
7 import { useRoute,useRouter } from "vue-router" 7 import { useRoute, useRouter } from "vue-router"
8 import useUserStore from "@/store/modules/user"; 8 import useUserStore from "@/store/modules/user";
9 import { ElMessage, ElMessageBox } from "element-plus"; 9 import { ElMessage, ElMessageBox } from "element-plus";
10 import Tabs from '@/components/Tabs/index.vue' 10 import Tabs from '@/components/Tabs/index.vue'
11 import Table from '@/components/Table/index.vue' 11 import Table from '@/components/Table/index.vue'
12 import Dialog from '@/components/Dialog/index.vue' 12 import Dialog from '@/components/Dialog/index.vue'
13 import useCatchStore from "@/store/modules/catch"; 13 import useCatchStore from "@/store/modules/catch";
14 import { download, downFile,getDownloadUrl } from '@/utils/common' 14 import { download, downFile, getDownloadUrl } from '@/utils/common'
15 import { 15 import {
16 addImportData, 16 addImportData,
17 deleteImportData, 17 deleteImportData,
...@@ -45,15 +45,15 @@ const defaulttabs = [ ...@@ -45,15 +45,15 @@ const defaulttabs = [
45 { label: '数据字典导入', name: 'dictionary' }, 45 { label: '数据字典导入', name: 'dictionary' },
46 // { label: '质量模型导入', name: 'qualityModelGroup' }, 46 // { label: '质量模型导入', name: 'qualityModelGroup' },
47 // { label: '质量规则导入', name: 'qualityRule' }, 47 // { label: '质量规则导入', name: 'qualityRule' },
48 ] 48 ]
49 const importTabs = [ 49 const importTabs = [
50 { label: '导入文件数据', name: 'importFile' }, 50 { label: '导入文件数据', name: 'importFile' },
51 // { label: '质量模型导入', name: 'qualityModelGroup' }, 51 // { label: '质量模型导入', name: 'qualityModelGroup' },
52 // { label: '质量规则导入', name: 'qualityRule' }, 52 // { label: '质量规则导入', name: 'qualityRule' },
53 ] 53 ]
54 const tabsInfo = ref({ 54 const tabsInfo = ref({
55 activeName: '', 55 activeName: '',
56 tabs: isfileImport?importTabs:defaulttabs 56 tabs: isfileImport ? importTabs : defaulttabs
57 }) 57 })
58 58
59 const currTableData: any = ref<Object>({}); 59 const currTableData: any = ref<Object>({});
...@@ -232,7 +232,7 @@ const tableBtnClick = async (scope, btn) => { ...@@ -232,7 +232,7 @@ const tableBtnClick = async (scope, btn) => {
232 if (res && !res.msg) { 232 if (res && !res.msg) {
233 let name = row.errorFilePath; 233 let name = row.errorFilePath;
234 var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : ''; 234 var fileSuffix = name ? name.substring(name.lastIndexOf('.') + 1) : '';
235 let fileName = name ? name.substring(name.lastIndexOf('/') + 1) :'' 235 let fileName = name ? name.substring(name.lastIndexOf('/') + 1) : ''
236 download(res, fileName, fileSuffix); 236 download(res, fileName, fileSuffix);
237 } else { 237 } else {
238 res?.msg && ElMessage.error(res?.msg); 238 res?.msg && ElMessage.error(res?.msg);
...@@ -267,7 +267,7 @@ const batching = (type) => { ...@@ -267,7 +267,7 @@ const batching = (type) => {
267 return 267 return
268 } 268 }
269 open("此操作将永久删除, 是否继续?", "warning", true); 269 open("此操作将永久删除, 是否继续?", "warning", true);
270 } else if(type === 'importFile') { 270 } else if (type === 'importFile') {
271 if (isfileImport == '2' || isfileImport == '4') { 271 if (isfileImport == '2' || isfileImport == '4') {
272 dialogInfo.value.header.title = '导入数据' 272 dialogInfo.value.header.title = '导入数据'
273 dialogInfo.value.type = 'upload' 273 dialogInfo.value.type = 'upload'
...@@ -279,8 +279,8 @@ const batching = (type) => { ...@@ -279,8 +279,8 @@ const batching = (type) => {
279 dialogInfo.value.visible = true 279 dialogInfo.value.visible = true
280 } else { 280 } else {
281 router.push({ 281 router.push({
282 name:"importData", 282 name: "importData",
283 query:route.query 283 query: route.query
284 }) 284 })
285 } 285 }
286 } 286 }
...@@ -391,7 +391,7 @@ const importData = (info) => { ...@@ -391,7 +391,7 @@ const importData = (info) => {
391 uploadFiles.value.forEach((item: any, index: number) => { 391 uploadFiles.value.forEach((item: any, index: number) => {
392 params.append("uploadFile", item.raw); 392 params.append("uploadFile", item.raw);
393 }); 393 });
394 paramUrl = `${import.meta.env.VITE_APP_PLAN_BASEURL}/meta-collect-task/meta-collect-import?staffGuid=${userData.staffGuid}&databaseNameZh=${info.databaseNameZh}&databaseNameEn=${info.databaseNameEn}&isCover=${info.isCover}` 394 paramUrl = `${import.meta.env.VITE_APP_CHECK_BASEURL}/meta-collect-task/meta-collect-import?staffGuid=${userData.staffGuid}&databaseNameZh=${info.databaseNameZh}&databaseNameEn=${info.databaseNameEn}&isCover=${info.isCover}`
395 } else { 395 } else {
396 uploadFiles.value.forEach((item: any, index: number) => { 396 uploadFiles.value.forEach((item: any, index: number) => {
397 params.append("file", item.raw); 397 params.append("file", item.raw);
...@@ -643,7 +643,7 @@ const setUploadInfo = () => { ...@@ -643,7 +643,7 @@ const setUploadInfo = () => {
643 643
644 onActivated(() => { 644 onActivated(() => {
645 uploadSetting.value = cacheStore.getCatch('uploadSetting') ?? {} 645 uploadSetting.value = cacheStore.getCatch('uploadSetting') ?? {}
646 if(isfileImport) { 646 if (isfileImport) {
647 tabsActiveName.value = 'importFile' 647 tabsActiveName.value = 'importFile'
648 } else { 648 } else {
649 tabsActiveName.value = uploadSetting.value?.type || 'standard' 649 tabsActiveName.value = uploadSetting.value?.type || 'standard'
...@@ -660,8 +660,10 @@ onActivated(() => { ...@@ -660,8 +660,10 @@ onActivated(() => {
660 <Tabs v-if="!isfileImport" :tabs-info="tabsInfo" @tabChange="tabsChange" /> 660 <Tabs v-if="!isfileImport" :tabs-info="tabsInfo" @tabChange="tabsChange" />
661 <div class="table_tool_wrap"> 661 <div class="table_tool_wrap">
662 <div class="tools_btns"> 662 <div class="tools_btns">
663 <el-button type="primary" @click="batching('import')" v-if="tabsActiveName !== 'importFile'" v-preReClick>批量导入</el-button> 663 <el-button type="primary" @click="batching('import')" v-if="tabsActiveName !== 'importFile'"
664 <el-button type="primary" @click="batching('importFile')" v-if="tabsActiveName == 'importFile'" v-preReClick>文件导入</el-button> 664 v-preReClick>批量导入</el-button>
665 <el-button type="primary" @click="batching('importFile')" v-if="tabsActiveName == 'importFile'"
666 v-preReClick>文件导入</el-button>
665 <el-button @click="batching('delete')" v-preReClick>批量删除</el-button> 667 <el-button @click="batching('delete')" v-preReClick>批量删除</el-button>
666 <el-button @click="getFirstPageData" v-preReClick>刷新结果</el-button> 668 <el-button @click="getFirstPageData" v-preReClick>刷新结果</el-button>
667 </div> 669 </div>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!