ソースを参照

Merge branch 'master' of http://120.55.44.4:10080/xujunjie/GtDigManageWeb

# Conflicts:
#	.umirc.ts
hanxin 2 年 前
コミット
cb341646c4

+ 7 - 1
.umirc.ts

@@ -8,7 +8,8 @@ export default defineConfig({
   initialState: {},
   request: {},
   layout: {
-    title: '@umijs/max',
+    title: '金科环境数字化平台',
+    locale: false,
   },
   proxy: {
     '/api': {
@@ -29,6 +30,11 @@ export default defineConfig({
       component: './Home/index',
       layout: false
     },
+    {
+      name: '流程图管理',
+      path: '/flow',
+      component: './Flow/index',
+    },
     {
       name: '权限演示',
       path: '/access',

+ 16 - 11
src/app.ts → src/app.tsx

@@ -1,20 +1,26 @@
 // 运行时配置
-
-import { RequestConfig } from "@umijs/max";
-import { message } from "antd";
+import { RunTimeLayoutConfig, RequestConfig } from '@umijs/max';
+import { message } from 'antd';
+import UserDropdown from '@/components/UserDropdown';
+import { getToken } from '@/utils/utils';
 
 // 全局初始化数据配置,用于 Layout 用户信息和权限初始化
 // 更多信息见文档:https://umijs.org/docs/api/runtime-config#getinitialstate
 export async function getInitialState(): Promise<{ name: string }> {
-  return { name: '@umijs/max' };
+  return { name: 'admin' };
 }
 
-export const layout = () => {
+export const layout: RunTimeLayoutConfig = (initialState) => {
   return {
-    logo: 'https://img.alicdn.com/tfs/TB1YHEpwUT1gK0jSZFhXXaAtVXa-28-27.svg',
-    menu: {
-      locale: false,
+    navTheme: 'light',
+    layout: 'top',
+    contentWidth: 'Fluid',
+    fixedHeader: true,
+    fixSiderbar: true,
+    rightRender(initialState, setInitialState, runtimeConfig) {
+      return <UserDropdown />;
     },
+    logo: null,
   };
 };
 
@@ -61,7 +67,7 @@ export const request: RequestConfig = {
   requestInterceptors: [
     (config: any) => {
       if (!config.headers) config.headers = {};
-      config.headers['JWT-TOKEN'] = localStorage.token;
+      config.headers['JWT-TOKEN'] = getToken();
       return config;
     },
   ],
@@ -90,10 +96,9 @@ const tokenExpiredHandle = (code: number) => {
       tokenFlag = false;
     }, 50000);
     message.error('token失效,请重新登录');
-   
+
     return true;
   } else {
     return false;
   }
 };
-

+ 17 - 0
src/components/UserDropdown/index.less

@@ -0,0 +1,17 @@
+/* 自定义样式 */
+.action {
+  color: #1890ff;
+  cursor: pointer;
+  display: inline-block;
+  margin-left: 16px;
+
+  &:hover {
+    color: #1890ff;
+  }
+}
+
+.name {
+  margin-left: 8px;
+  margin-right: 30px;
+  color: #333;
+}

+ 30 - 0
src/components/UserDropdown/index.tsx

@@ -0,0 +1,30 @@
+// src/layouts/index.tsx
+import React from 'react';
+import { Link } from 'umi';
+import { Avatar, Dropdown, Menu, MenuProps } from 'antd';
+import { LogoutOutlined, UserOutlined } from '@ant-design/icons';
+import styles from './index.less';
+
+const items: MenuProps['items'] = [
+  {
+    key: '1',
+    label: <Link to="/profile">个人中心</Link>,
+    icon: <UserOutlined />,
+  },
+  {
+    key: '2',
+    label: <a href="/logout">退出登录</a>,
+    icon: <LogoutOutlined />,
+  },
+];
+
+export default function UserDropdown(props: any) {
+  return (
+    <Dropdown menu={{ items }}>
+      <a className={styles.action} onClick={(e) => e.preventDefault()}>
+        <Avatar icon={<UserOutlined />} />
+        <span className={styles.name}>admin</span>
+      </a>
+    </Dropdown>
+  );
+}

+ 87 - 0
src/global.less

@@ -0,0 +1,87 @@
+// Reset default browser styles
+html,
+body,
+ul,
+ol,
+li,
+dl,
+dt,
+dd,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+pre,
+code,
+form,
+fieldset,
+legend,
+input,
+textarea,
+p,
+blockquote,
+th,
+td,
+hr,
+button {
+  margin: 0;
+  padding: 0;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+  border: 0 none;
+  color: inherit;
+  background: transparent;
+  box-sizing: border-box;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+// Remove list styles on ul, ol
+ul,
+ol {
+  list-style: none;
+}
+
+// Remove link styles
+a {
+  text-decoration: none;
+  color: inherit;
+}
+
+// Remove table border
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+// Remove input styling for IE
+input[type='text'],
+input[type='password'],
+input[type='number'],
+textarea {
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  border-radius: 0;
+}
+
+// Remove button styling for IE
+button,
+input[type='submit'],
+input[type='reset'] {
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  border: 0 none;
+  background: none;
+  padding: 0;
+  cursor: pointer;
+}
+
+// Remove outline on focus
+*:focus {
+  outline: none;
+}

+ 10 - 9
src/pages/Flow/index.js

@@ -1,12 +1,12 @@
 import React, { useState, useEffect } from 'react';
 import { Form, Button, Table } from 'antd';
-import { connect, useNavigate } from "umi";
+import { connect, useNavigate } from 'umi';
 import AuditModal from './AuditModal';
 import styles from './Audit.less';
-
+import { PageContainer } from '@ant-design/pro-components';
 
 function Audit(props) {
-  const {  list = [], dispatch, loading } = props;
+  const { list = [], dispatch, loading } = props;
   let navigate = useNavigate();
   const [form] = Form.useForm();
   const [visible, setVisible] = useState({
@@ -33,7 +33,7 @@ function Audit(props) {
       ),
     },
   ];
-  const handleAuditOk = values => {
+  const handleAuditOk = (values) => {
     console.log(values);
     dispatch({
       type: 'flow/addAudit',
@@ -49,8 +49,9 @@ function Audit(props) {
       [type]: visible,
     });
   };
-  const setCurrentNode = item => {
-    if (item?.list) localStorage.setItem('currentAudit', JSON.stringify(item.list));
+  const setCurrentNode = (item) => {
+    if (item?.list)
+      localStorage.setItem('currentAudit', JSON.stringify(item.list));
     dispatch({
       type: 'flow/save',
       payload: {
@@ -67,7 +68,7 @@ function Audit(props) {
   }, []);
 
   return (
-    <div>
+    <PageContainer>
       <div className={styles.box}>
         <Button onClick={() => navigate(-1)}>返回</Button>
         <Form layout="inline" name="basic" autoComplete="off" form={form}>
@@ -91,10 +92,10 @@ function Audit(props) {
         onOk={handleAuditOk}
         onCancel={() => changeVisible('audit', false)}
       />
-    </div>
+    </PageContainer>
   );
 }
-export default connect(({  flow, loading }) => ({
+export default connect(({ flow, loading }) => ({
   userList: [],
   list: flow.auditList,
   loading: loading.effects,

+ 37 - 37
src/services/boom.js

@@ -10,11 +10,11 @@ import { stringify } from 'qs';
   node_id	查询某审批流程和某审批节点下最新版本的数据记录
  */
 export async function queryRecord(params) {
-  return request(`/purchase/record?${stringify(params)}`);
+  return request(`/api/v1/purchase/record?${stringify(params)}`);
 }
 //删除excel中单个sheet页
 export async function queryDelSheetRecord(params) {
-  const response = await request(`/purchase/bom/del-purchase-excel-sheet?${stringify(params)}`);
+  const response = await request(`/api/v1/purchase/bom/del-purchase-excel-sheet?${stringify(params)}`);
   if (response.code == 200) {
     // message.success('删除成功');
   }
@@ -22,43 +22,43 @@ export async function queryDelSheetRecord(params) {
 
 // 查询全部工作流
 export async function queryFlowList(params) {
-  return request(`/purchase/bom/flows?${stringify(params)}`);
+  return request(`/api/v1/purchase/bom/flows?${stringify(params)}`);
 }
 
 // 根据节点id查询所有version
 export async function queryVserionByNode(params, signal) {
-  return request(`/purchase/bom/flow/node?${stringify(params)}`, {
+  return request(`/api/v1/purchase/bom/flow/node?${stringify(params)}`, {
     signal,
   });
 }
 
 export async function commitSheet(params) {
-  return request(`/purchase/record`, {
+  return request(`/api/v1/purchase/record`, {
     method: 'POST',
     body: params,
   });
 }
 export async function approve(params) {
-  return request(`/purchase/audit/status`, {
+  return request(`/api/v1/purchase/audit/status`, {
     method: 'POST',
     body: params,
   });
 }
 export async function queryAuthority(params) {
   const depId = localStorage.depId;
-  return request(`/purchase/bom/user/excel/col?depId=${depId}`, {
+  return request(`/api/v1/purchase/bom/user/excel/col?depId=${depId}`, {
     method: 'POST',
     body: params,
   });
 }
 export async function addBomComment(params) {
-  return request(`/purchase/comment`, {
+  return request(`/api/v1/purchase/comment`, {
     method: 'POST',
     body: params,
   });
 }
 export async function queryBomComment(params) {
-  return request(`/purchase/comment?${stringify(params)}`);
+  return request(`/api/v1/purchase/comment?${stringify(params)}`);
 }
 
 /**
@@ -74,7 +74,7 @@ export async function queryBomComment(params) {
   "desc":"流转描述"
  */
 export async function submitNextNode(params) {
-  return request(`/purchase/next/node/submit`, {
+  return request(`/api/v1/purchase/next/node/submit`, {
     method: 'POST',
     body: params,
   });
@@ -87,7 +87,7 @@ export async function advanceSubmitNextNode(params) {
 }
 
 export async function queryDetail(params) {
-  let response = await request(`/purchase/record?${stringify(params)}`);
+  let response = await request(`/api/v1/purchase/record?${stringify(params)}`);
   let sheet = response.data;
   sheet.data = JSON.parse(sheet.data || '[]');
   sheet.data.forEach(item => {
@@ -98,14 +98,14 @@ export async function queryDetail(params) {
   return sheet;
 }
 export async function queryHistoryDetail(params) {
-  return request(`/purchase/record/history/detail?${stringify(params)}`);
+  return request(`/api/v1/purchase/record/history/detail?${stringify(params)}`);
 }
 export async function queryHistoryList(params) {
-  return request(`/purchase/record/history?${stringify(params)}`);
+  return request(`/api/v1/purchase/record/history?${stringify(params)}`);
 }
 
 export async function queryBoomFlowList(params) {
-  return request(`/purchase/bom/flows?${stringify(params)}`);
+  return request(`/api/v1/purchase/bom/flows?${stringify(params)}`);
 }
 //请求历史版本
 export async function queryVersionsTree(params) {
@@ -156,7 +156,7 @@ export async function queryListParentByUser(params) {
  * project_id
  */
 export async function queryProjectRecord(params) {
-  return request(`/purchase/bom/project/record?${stringify(params)}`);
+  return request(`/api/v1/purchase/bom/project/record?${stringify(params)}`);
 }
 /** 查看版本列表
  *  project_id		
@@ -164,11 +164,11 @@ export async function queryProjectRecord(params) {
     template_node_id	流程节点id
  */
 export async function queryVersionsList(params) {
-  return request(`/purchase/record/versions?${stringify(params)}`);
+  return request(`/api/v1/purchase/record/versions?${stringify(params)}`);
 }
 
 export async function queryBoomFlowDetail(params) {
-  let { data } = await request(`/purchase/bom/flow/info?${stringify(params)}`);
+  let { data } = await request(`/api/v1/purchase/bom/flow/info?${stringify(params)}`);
   const groups = {
     top: {
       position: { name: 'top' },
@@ -275,30 +275,30 @@ export async function queryBoomFlowDetail(params) {
   };
 }
 export async function updateNode(data) {
-  return request(`/purchase/bom/flow/${data.templateId}/${data.nodeId}`, {
+  return request(`/api/v1/purchase/bom/flow/${data.templateId}/${data.nodeId}`, {
     method: 'PUT',
     body: data.body,
   });
 }
 export async function addBoomFlow(data) {
-  return request(`/purchase/bom/flow/info`, {
+  return request(`/api/v1/purchase/bom/flow/info`, {
     method: 'POST',
     body: data,
   });
 }
 
 export async function queryAuditList(params) {
-  return request(`/purchase/flow/info?${stringify(params)}`);
+  return request(`/api/v1/purchase/flow/info?${stringify(params)}`);
 }
 
 export async function addAudit(data) {
-  return request(`/purchase/flow/info`, {
+  return request(`/api/v1/purchase/flow/info`, {
     method: 'POST',
     body: data,
   });
 }
 export async function addFlow(data) {
-  return request(`/purchase/bom/flow/info`, {
+  return request(`/api/v1/purchase/bom/flow/info`, {
     method: 'POST',
     body: data,
   });
@@ -316,7 +316,7 @@ export async function addFlow(data) {
     ]
  */
 export async function addAuditNode(data) {
-  return request(`/purchase/flow/info/${data.flowId}`, {
+  return request(`/api/v1/purchase/flow/info/${data.flowId}`, {
     method: 'POST',
     body: data.nodes,
   });
@@ -327,13 +327,13 @@ export async function queryOSSData() {
 }
 
 export async function queryRecordSheet(data) {
-  return request(`/purchase/record/sheet?${stringify(data)}`, {
+  return request(`/api/v1/purchase/record/sheet?${stringify(data)}`, {
     method: 'POST',
     body: data,
   });
 }
 export async function queryDingTemplateList() {
-  return request(`/purchase/bom/ding/template/list`);
+  return request(`/api/v1/purchase/bom/ding/template/list`);
 }
 
 export async function queryDDdepList(data) {
@@ -380,7 +380,7 @@ export async function bindDDCode(userId, code) {
 }
 
 export async function saveAuditFlowInfo(data) {
-  return request(`/purchase/flow/info`, {
+  return request(`/api/v1/purchase/flow/info`, {
     method: 'POST',
     body: data,
   });
@@ -392,7 +392,7 @@ export async function queryDepV2(params) {
 }
 
 export async function queryProcessFlows(params) {
-  let res = await request(`/purchase/process/get-flows?${stringify(params)}`, {
+  let res = await request(`/api/v1/purchase/process/get-flows?${stringify(params)}`, {
     method: 'GET',
   });
   return res.data;
@@ -408,7 +408,7 @@ export async function queryUserListByRoleID(params) {
 //新增工作流时调用接口 给项目绑定默认分类列表
 //purchase/bom/default-bind-classify?project_id=1
 export async function queryDefaultBindClassify(params) {
-  let res = await request(`/purchase/bom/default-bind-classify?${stringify(params)}`, {
+  let res = await request(`/api/v1/purchase/bom/default-bind-classify?${stringify(params)}`, {
     method: 'GET',
   });
   return res.data;
@@ -416,41 +416,41 @@ export async function queryDefaultBindClassify(params) {
 
 //获取分类列表
 export async function queryClassify() {
-  let res = await request(`/purchase/bom/get-classify`, {
+  let res = await request(`/api/v1/purchase/bom/get-classify`, {
     method: 'GET',
   });
   return res.data;
 }
 
 export async function queryBindClassify(params) {
-  let res = await request(`/purchase/bom/get-bind-classify?${stringify(params)}`, {
+  let res = await request(`/api/v1/purchase/bom/get-bind-classify?${stringify(params)}`, {
     method: 'GET',
   });
   return res.data;
 }
 
 export async function queryAddBindClassify(data) {
-  return request(`/purchase/bom/add-bind-classify`, {
+  return request(`/api/v1/purchase/bom/add-bind-classify`, {
     method: 'POST',
     body: data,
   });
 }
 
 export async function queryDelPurchaseExcel(params) {
-  let res = await request(`/purchase/bom/del-purchase-excel?${stringify(params)}`, {
+  let res = await request(`/api/v1/purchase/bom/del-purchase-excel?${stringify(params)}`, {
     method: 'GET',
   });
   return res;
 }
 //提交流转存储表单审批人历史记录
 export async function querySaveBomForm(data) {
-  return request(`/purchase/bom/save-bom-form`, {
+  return request(`/api/v1/purchase/bom/save-bom-form`, {
     method: 'POST',
     body: data,
   });
 }
 export async function queryGetBomForm(params) {
-  let res = await request(`/purchase/bom/get-bom-form?${stringify(params)}`, {
+  let res = await request(`/api/v1/purchase/bom/get-bom-form?${stringify(params)}`, {
     method: 'GET',
   });
   return res;
@@ -458,16 +458,16 @@ export async function queryGetBomForm(params) {
 
 //章管家失败,重新申请用印
 export async function queryTrySeal(params) {
-  let res = await request(`/purchase/bom/try-seal?${stringify(params)}`, {
+  let res = await request(`/api/v1/purchase/bom/try-seal?${stringify(params)}`, {
     method: 'GET',
   });
   return res;
 }
 
 export async function ChartTempOSSData(params) {
-  return request(`/purchase/bom/contract-file/${params.projectId}`);
+  return request(`/api/v1/purchase/bom/contract-file/${params.projectId}`);
 }
 // 设置最终版本
 export async function setLastVersion(excelId) {
-  return request(`/purchase/bom/set-last-version/${excelId}`);
+  return request(`/api/v1/purchase/bom/set-last-version/${excelId}`);
 }