From 5f9a36518ab30e6fdfbdb4b589a446614beeba5c Mon Sep 17 00:00:00 2001 From: "gao.zhiyuan" Date: Thu, 1 Jun 2023 10:58:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=90=E7=BB=B4=E9=A1=B9=E7=9B=AE=E7=9A=84?= =?UTF-8?q?=E5=8D=95=E6=95=B0=E6=8D=AE=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/lib/controllers/workOrder/index.js | 53 +++++- api/app/lib/routes/workOrder/index.js | 4 + web/client/assets/images/fs-logo.png | Bin 0 -> 4146 bytes web/client/src/components/index.js | 5 +- web/client/src/components/workflow/index.jsx | 32 ++-- web/client/src/components/workflow/view.jsx | 166 ++++++++---------- web/client/src/layout/actions/global.js | 1 + web/client/src/layout/reducers/global.js | 2 + .../workOrder/containers/jobOrder.jsx | 9 +- web/config.js | 7 +- web/package.json | 2 +- web/routes/attachment/index.js | 3 +- 12 files changed, 163 insertions(+), 121 deletions(-) create mode 100644 web/client/assets/images/fs-logo.png diff --git a/api/app/lib/controllers/workOrder/index.js b/api/app/lib/controllers/workOrder/index.js index 456b763..16c65f4 100644 --- a/api/app/lib/controllers/workOrder/index.js +++ b/api/app/lib/controllers/workOrder/index.js @@ -34,6 +34,57 @@ async function getEnabledWorkflowProcess (ctx) { } } +async function basicDataAllProject (ctx) { + try { + const { models } = ctx.fs.dc; + + const proRes = await models.ProjectCorrelation.findAndCountAll({ + where: { + del: false, + }, + order: [['updateTime', 'desc']], + }) + + let pepProjectIds = new Set() + for (let p of proRes.rows) { + if (p.pepProjectId) { + pepProjectIds.add(p.pepProjectId) + } + } + + const pepProjectRes = pepProjectIds.size ? + await clickHouse.projectManage.query( + ` + SELECT + t_pim_project.id AS id, + t_pim_project.project_name AS project_name, + t_pim_project.isdelete AS isdelete + FROM t_pim_project + WHERE id IN (${[...pepProjectIds].join(',')}, -1) + ` + ).toPromise() : + [] + const list = proRes.map(p => { + const corPro = pepProjectRes.find(pp => pp.id == p.pepProjectId) || {} + return { + value: p.id, + label: corPro.project_name || p.name, + disabled: corPro.isdelete == 1 + } + }) + + ctx.status = 200; + ctx.body = list + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: error`); + ctx.status = 400; + ctx.body = { + message: typeof error == 'string' ? error : undefined + } + } +} + module.exports = { - getEnabledWorkflowProcess + getEnabledWorkflowProcess, + basicDataAllProject }; \ No newline at end of file diff --git a/api/app/lib/routes/workOrder/index.js b/api/app/lib/routes/workOrder/index.js index fc669e4..c7004d1 100644 --- a/api/app/lib/routes/workOrder/index.js +++ b/api/app/lib/routes/workOrder/index.js @@ -5,4 +5,8 @@ const workOrder = require('../../controllers/workOrder'); module.exports = function (app, router, opts) { app.fs.api.logAttr['GET/workflow/process/enabled'] = { content: '获取工作流可用表单', visible: true }; router.get('/workflow/process/enabled', workOrder.getEnabledWorkflowProcess); + + // 单一数据源 + app.fs.api.logAttr['GET/basic-data/workflow/single/allProject'] = { content: '查询所有项目', visible: false }; + router.get('/basic-data/workflow/single/allProject', workOrder.basicDataAllProject); }; \ No newline at end of file diff --git a/web/client/assets/images/fs-logo.png b/web/client/assets/images/fs-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..44814f38fe67067a9e79e03f91eb651a35986b98 GIT binary patch literal 4146 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 { - const { successCallBack = () => { }, title, visible, clientHeight, postData, processId, user, dispatch, webEmis } = props; + const { successCallBack = () => { }, title, visible, clientHeight, postData, processId, user, dispatch, webEmis, webOa } = props; const [loading, setLoading] = useState(true); const [ifShowMessage, setIfShowMessage] = useState(true); - const [webUrl, setWebUrl] = useState(null); const [customVisible, setCustomVisible] = useState(false); const [draftId, setDraftId] = useState(); const iframeRef = React.createRef(); @@ -47,11 +46,9 @@ const WorkFlowModal = (props) => { } const handelApprovalCenter = (activeKey) => { - RouteRequest.get(RouteTable.getWebUrl + `?sys=emisWebUrl`).then(res => { - if (res.url) { - window.open(res.url + "/approval/center?activeKey=" + activeKey); - } - }); + if (webOa) { + window.open(webOa + "/approval/center?activeKey=" + activeKey); + } } const handelOk = () => { @@ -112,31 +109,22 @@ const WorkFlowModal = (props) => { } //监听message事件 window.addEventListener('message', receiveMessageFromIndex, false); - //获取企业统一认证管理平台web的URL - if (!webUrl) { - RouteRequest.get(RouteTable.getEmisWebUrl).then(res => { - if (res.url) { - setWebUrl(res.url); - } - }); - } + }, []) + console.log(webEmis, processId); return (
@@ -152,7 +140,7 @@ const WorkFlowModal = (props) => { - {webUrl && processId ? : ''} - -
-
- + return ( +
+ + +
+
+ + + | + 让世间万物拥有感知,服务人类社会于美好 + + +
+
+ + {webEmis && processId ? : ''} + +
+
+
-
*/} -
+ + - ) + ) } -function mapStateToProps(state) { - const { auth, global } = state; - return { - user: auth.user, - clientHeight: global.clientHeight, - } +function mapStateToProps (state) { + const { auth, global } = state; + return { + user: auth.user, + clientHeight: global.clientHeight, + webEmis: global.webEmis, + webOa: global.webOa + } } export default connect(mapStateToProps)(WorkFlowViewModal); \ No newline at end of file diff --git a/web/client/src/layout/actions/global.js b/web/client/src/layout/actions/global.js index b8bb3cd..f85270e 100644 --- a/web/client/src/layout/actions/global.js +++ b/web/client/src/layout/actions/global.js @@ -49,6 +49,7 @@ export function initApiRoot () { dcWeb: res.dcWeb, qiniu: res.qiniu, webEmis: res.webEmis, + webOa: res.webOa, } }) }); diff --git a/web/client/src/layout/reducers/global.js b/web/client/src/layout/reducers/global.js index 5873b24..84be4a5 100644 --- a/web/client/src/layout/reducers/global.js +++ b/web/client/src/layout/reducers/global.js @@ -50,6 +50,8 @@ function global (state = { pomsNotebook: payload.pomsNotebook, dcWeb: payload.dcWeb, qiniu: payload.qiniu, + webEmis: payload.webEmis, + webOa: payload.webOa, }).toJS(); case PEPPROJECTID: return Immutable.fromJS(state).merge({ diff --git a/web/client/src/sections/workOrder/containers/jobOrder.jsx b/web/client/src/sections/workOrder/containers/jobOrder.jsx index ddb69ab..e318f37 100644 --- a/web/client/src/sections/workOrder/containers/jobOrder.jsx +++ b/web/client/src/sections/workOrder/containers/jobOrder.jsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import { connect } from 'react-redux'; import moment from 'moment'; -import { WorkflowModal } from "$components" +import { WorkflowModal, WorkFlowViewModal } from "$components" import { EmisRequest, EmisApiTable } from "$utils" import { Card, Notification, Space, Button } from '@douyinfe/semi-ui'; import { IconArticle } from '@douyinfe/semi-icons'; @@ -27,6 +27,7 @@ const JobOrder = (props) => { workflowProcess.map(p => { return ( { ) }) } - { setWorkflowModalVisible(false) }} successCallBack={() => { setWorkflowModalVisible(false) }} + /> */} + ) diff --git a/web/config.js b/web/config.js index 356d192..8ac8a60 100644 --- a/web/config.js +++ b/web/config.js @@ -15,7 +15,8 @@ args.option(['u', 'api-url'], 'webapi的URL'); args.option('apiPomsUrl', 'webapi的URL 外网可访问'); args.option('apiAnxinyunUrl', '安心云 api'); args.option('apiEmisUrl', '企业管理 api'); -args.option('webEmisUrl', '企业管理 web'); +args.option('webEmisUrl', '统一认证 web - 统一认证 配置表单的'); +args.option('webOaUrl', 'OA web - 项企填表单的'); args.option('iotVcmpWeb', 'IOT 视频服务'); args.option('pomsMonitor', '运维监控 web'); args.option('pomsKubesphere', 'kubesphere web'); @@ -39,6 +40,7 @@ const API_URL = process.env.API_URL || flags.apiUrl; const API_POMS_URL = process.env.API_POMS_URL || flags.apiPomsUrl; const API_EMIS_URL = process.env.API_EMIS_URL || flags.apiEmisUrl; const WEB_EMIS_URL = process.env.WEB_EMIS_URL || flags.webEmisUrl; +const WEB_OA_URL = process.env.WEB_OA_URL || flags.webOaUrl; const API_ANXINYUN_URL = process.env.API_ANXINYUN_URL || flags.apiAnxinyunUrl; const IOT_VIDEO_WEB = process.env.IOT_VIDEO_WEB || flags.iotVcmpWeb; const POMS_MONITOR = process.env.POMS_MONITOR || flags.pomsMonitor; @@ -59,7 +61,7 @@ const ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURCE = process.env.ANXINCLOUD_QINIU_DOMA if ( !API_URL - || !API_EMIS_URL || !WEB_EMIS_URL + || !API_EMIS_URL || !WEB_EMIS_URL || !WEB_OA_URL || !API_ANXINYUN_URL || !POMS_MONITOR || !DC_WEB || !ANXINCLOUD_QINIU_AK || !ANXINCLOUD_QINIU_SK || !ANXINCLOUD_QINIU_BUCKET_RESOURCE || !ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURCE || !IOT_VIDEO_WEB) { @@ -106,6 +108,7 @@ const product = { opts: { apiUrl: API_POMS_URL, webEmis: WEB_EMIS_URL, + webOa: WEB_OA_URL, iotVcmpWeb: IOT_VIDEO_WEB, pomsMonitor: POMS_MONITOR, pomsKubesphere: POMS_KUBESPHERE, diff --git a/web/package.json b/web/package.json index 83f661d..4484060 100644 --- a/web/package.json +++ b/web/package.json @@ -7,7 +7,7 @@ "test": "mocha", "start-vite": "cross-env NODE_ENV=developmentVite npm run start-params", "start": "cross-env NODE_ENV=development npm run start-params", - "start-params": "node server -p 5600 -u http://localhost:4600 --apiPomsUrl http://localhost:4600 --apiAnxinyunUrl http://10.8.30.112:4100 --apiEmisUrl http://10.8.30.161:1111 --webEmisUrl http://10.8.30.161:1111 --qnak 5XrM4wEB9YU6RQwT64sPzzE6cYFKZgssdP5Kj3uu --qnsk w6j2ixR_i-aelc6I7S3HotKIX-ukMzcKmDfH6-M5 --qnbkt anxinyun-test --qndmn http://test.resources.anxinyun.cn --iotVcmpWeb https://mediaconsole.ngaiot.com --pomsMonitor http://monitor.anxinyun.cn/goto/PaEDLE84z?orgId=1 --pomsKubesphere https://k8sadmin.anxinyun.cn/ --pomsAmbari https://ambari.anxinyun.cn/ --pomsKowl https://kafka.anxinyun.cn/ --pomsPghero https://pghero.anxinyun.cn/ --pomsEs https://esc.anxinyun.cn/ --pomsNotebook https://inotebook.anxinyun.cn/ --dcWeb https://fsiot-oamss.anxinyun.cn", + "start-params": "node server -p 5600 -u http://localhost:4600 --apiPomsUrl http://localhost:4600 --apiAnxinyunUrl http://10.8.30.112:4100 --apiEmisUrl http://10.8.30.161:1111 --webEmisUrl http://10.8.30.161:1112 --webOaUrl http://10.8.30.161:8668 --qnak 5XrM4wEB9YU6RQwT64sPzzE6cYFKZgssdP5Kj3uu --qnsk w6j2ixR_i-aelc6I7S3HotKIX-ukMzcKmDfH6-M5 --qnbkt anxinyun-test --qndmn http://test.resources.anxinyun.cn --iotVcmpWeb https://mediaconsole.ngaiot.com --pomsMonitor http://monitor.anxinyun.cn/goto/PaEDLE84z?orgId=1 --pomsKubesphere https://k8sadmin.anxinyun.cn/ --pomsAmbari https://ambari.anxinyun.cn/ --pomsKowl https://kafka.anxinyun.cn/ --pomsPghero https://pghero.anxinyun.cn/ --pomsEs https://esc.anxinyun.cn/ --pomsNotebook https://inotebook.anxinyun.cn/ --dcWeb https://fsiot-oamss.anxinyun.cn", "deploy": "export NODE_ENV=production&& npm run build && node server", "build-dev": "cross-env NODE_ENV=development&&webpack --config webpack.config.js", "build": "cross-env NODE_ENV=production&&webpack --config webpack.config.prod.js" diff --git a/web/routes/attachment/index.js b/web/routes/attachment/index.js index 48b16ef..b4e88ef 100644 --- a/web/routes/attachment/index.js +++ b/web/routes/attachment/index.js @@ -19,7 +19,7 @@ module.exports = { entry: function (app, router, opts) { const getApiRoot = async function (ctx) { - const { apiUrl, iotVcmpWeb, pomsMonitor, pomsKubesphere, pomsAmbari, pomsKowl, pomsPghero, pomsEs, pomsNotebook, dcWeb, qiniu, webEmis, } = opts; + const { apiUrl, iotVcmpWeb, pomsMonitor, pomsKubesphere, pomsAmbari, pomsKowl, pomsPghero, pomsEs, pomsNotebook, dcWeb, qiniu, webEmis, webOa } = opts; ctx.status = 200; ctx.body = { @@ -35,6 +35,7 @@ module.exports = { dcWeb: dcWeb, qiniu: qiniu, webEmis, + webOa, }; };