Преглед на файлове

Merge branch 'master' of http://120.55.44.4:10080/xujunjie/GtDigManageWeb
解决冲突
# Conflicts:
# .umirc.ts

Renxy преди 2 години
родител
ревизия
23261f21ef

+ 0 - 4
.husky/commit-msg

@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
-npx --no-install max verify-commit $1

+ 0 - 4
.husky/pre-commit

@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
-npx --no-install lint-staged --quiet

+ 20 - 2
.umirc.ts

@@ -8,7 +8,8 @@ export default defineConfig({
   initialState: {},
   request: {},
   layout: {
-    title: '@umijs/max',
+    title: '金科环境数字化平台',
+    locale: false,
   },
   proxy: {
     '/api': {
@@ -26,6 +27,12 @@ export default defineConfig({
     {
       name: '首页',
       path: '/home',
+      component: './Home/index',
+      layout: false,
+    },
+    {
+      name: '流程图管理',
+      path: '/flow',
       component: './Flow/index',
     },
     {
@@ -34,10 +41,21 @@ export default defineConfig({
       component: './Access',
     },
     {
-      name: ' CRUD 示例',
+      name: 'CRUD 示例',
       path: '/table',
       component: './Table',
     },
+    {
+      name: '登录',
+      path: '/login',
+      component: './Login/index',
+      layout: false,
+    },
+    {
+      name: '文档管理',
+      path: '/fileManagement',
+      component: './FileManagement/index',
+    },
     {
       name: '合同管理',
       path: '/contract-manager',

+ 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;
   }
 };
-

BIN
src/assets/login-bg.png


BIN
src/assets/login-box-top.png


+ 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>
+  );
+}

+ 96 - 0
src/global.less

@@ -0,0 +1,96 @@
+// Reset default browser styles
+* {
+  box-sizing: border-box;
+}
+
+body,
+#root {
+  min-height: 100vh;
+}
+
+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;
+}

+ 8 - 0
src/pages/FileManagement/index.js

@@ -0,0 +1,8 @@
+import React from 'react';
+import { TreeSelect } from 'antd';
+
+function FileManagement(props) {
+  return <div>文档</div>;
+}
+
+export default FileManagement;

+ 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,

+ 141 - 0
src/pages/Login/index.js

@@ -0,0 +1,141 @@
+import React, { useRef, useState } from 'react';
+import { connect, useNavigate } from 'umi';
+import { Form, Select, Input, Button, message } from 'antd';
+import { queryDepList } from '@/services/user';
+import styles from './index.less';
+import { UserOutlined, LockOutlined } from '@ant-design/icons';
+import { storeToken } from '@/utils/utils';
+const { Option } = Select;
+
+function Login(props) {
+  const {
+    submitting,
+    params,
+    dispatch,
+  } = props;
+  const [depList, setDepList] = useState([]);
+  const [hasName, setHasName] = useState(false);
+  const formRef = useRef();
+  let navigate = useNavigate();
+  const onHandleChange = async (name) => {
+    if (!name) {
+      setDepList([]);
+      setHasName(false);
+      return;
+    }
+    try {
+      var res = await queryDepList(name);
+      setDepList(res.data);
+      setHasName(true);
+      formRef.current.setFieldsValue({
+        DepId: res.data[0]?.ID + '',
+      });
+    } catch (error) {
+      setDepList([]);
+      setHasName(true);
+      message.error('用户名不存在');
+    }
+  };
+
+  const handleSubmit = (values) => {
+    dispatch({
+      type: 'login/login',
+      payload: {
+        ...values,
+        // 防止浏览器自动填充
+        password: values.password2,
+      },
+      callback: (token) => {
+        storeToken(token);
+        navigate("/home");
+      },
+    });
+  };
+  return (
+    <div className={styles.main}>
+      <div className={styles.content}>
+        <Form
+          name="basic"
+          className={styles.inp_box}
+          labelCol={{ span: 0 }}
+          wrapperCol={{ span: 24 }}
+          onFinish={handleSubmit}
+          autoComplete="new-password"
+          ref={formRef}
+        >
+          <Form.Item
+            label=""
+            name="username"
+            autoComplete="off"
+            rules={[{ required: true, message: '请输入用户名' }]}
+          >
+            <Input
+              prefix={<UserOutlined className={styles.prefixIcon} />}
+              className={styles.inp}
+              size="large"
+              autoComplete="off"
+              placeholder="请输入用户名"
+              onBlur={(e) => onHandleChange(e.target.value)}
+            />
+          </Form.Item>
+          {hasName && (
+            <Form.Item
+              label=""
+              name="DepId"
+              rules={[{ required: true, message: '请选择部门' }]}
+            >
+              <Select placeholder="请选择部门" size="large">
+                {depList.map((item) => (
+                  <Option value={item.ID + ''} key={item.ID}>
+                    {item.Name}
+                  </Option>
+                ))}
+              </Select>
+            </Form.Item>
+          )}
+
+          <Form.Item
+            label=""
+            // 不使用password,防止浏览器自动填充表单
+            name="password2"
+            className={styles.inp}
+            rules={[{ required: true, message: '请输入密码' }]}
+          >
+            <Input.Password
+              prefix={<LockOutlined className={styles.prefixIcon} />}
+              className={styles.inp}
+              size="large"
+              placeholder="请输入密码"
+              autoComplete="new-password"
+            />
+          </Form.Item>
+
+          {/* <Form.Item
+          name="remember"
+          valuePropName="checked"
+          wrapperCol={{ offset: 8, span: 16 }}
+        >
+          <Checkbox>自动登录</Checkbox>
+        </Form.Item> */}
+
+          <Form.Item>
+            <Button
+              size="large"
+              style={{ width: '100%', marginTop: 24 }}
+              loading={submitting}
+              type="primary"
+              htmlType="submit"
+            >
+              登录
+            </Button>
+          </Form.Item>
+        </Form>
+      </div>
+    </div>
+  );
+}
+
+export default connect(({ login, loading }) => ({
+  login,
+  submitting: loading.effects['login/login'],
+}))(Login);

+ 75 - 0
src/pages/Login/index.less

@@ -0,0 +1,75 @@
+
+.main {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  background-image: url('@/assets/login-bg.png');
+  background-repeat: no-repeat;
+  background-position: 50%;
+  background-size: 100%;
+}
+
+.prefixIcon {
+  color: #42a0e0;
+  font-size: 18px;
+}
+
+.content {
+  width: 428px;
+  height: 300px;
+  border-radius: 8px;
+  padding-top: 162px;
+  background: #fff url('@/assets/login-box-top.png') no-repeat top center;
+
+  @media screen and (max-width: 576px) {
+    width: 95%;
+  }
+
+  .inp_box {
+    width: 80%;
+    margin: 0 auto;
+    padding-top: 40px;
+
+    a {
+      color: #999;
+    }
+  }
+
+  .inp {
+    input {
+      border-radius: 0px;
+      padding: 2px 4px;
+    }
+
+    i {
+      color: #42a0e0;
+      font-size: 18px;
+    }
+  }
+
+
+  .icon {
+    margin-left: 16px;
+    color: rgba(0, 0, 0, 0.2);
+    font-size: 24px;
+    vertical-align: middle;
+    cursor: pointer;
+    transition: color 0.3s;
+
+    &:hover {
+      color: #1890ff;
+    }
+  }
+
+  .other {
+    margin-top: 24px;
+    line-height: 22px;
+    text-align: left;
+
+    .register {
+      float: right;
+    }
+  }
+}

+ 27 - 0
src/pages/Login/models/login.js

@@ -0,0 +1,27 @@
+import { Login } from '@/services/user';
+
+export default {
+  namespace: 'login',
+
+  state: {},
+
+  effects: {
+    *login({ payload, callback }, { call, put }) {
+      try {
+        let response = null;
+        response = yield call(Login, payload);
+        const { user, token } = response.data;
+
+        callback?.(token);
+        // yield put({
+        //   type: 'changeLoginStatus',
+        //   payload: response,
+        // });
+      } catch (error) {
+        console.error(error);
+      }
+    },
+  },
+
+  reducers: {},
+};

+ 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}`);
 }

+ 11 - 0
src/services/user.js

@@ -44,3 +44,14 @@ export async function updateUser(param) {
 export async function queryDepV2(params) {
   return request(`/api/v2/dep?${stringify(params)}`);
 }
+export async function queryDepList(userName) {
+  return request(`/api/v2/user/dep`, {
+    params: { userName },
+  });
+}
+export async function Login(data) {
+  return request('/api/v2/user/login', {
+    method: 'POST',
+    data,
+  });
+}

+ 12 - 12
yarn.lock

@@ -3530,9 +3530,9 @@ camelize@^1.0.0:
   integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==
 
 caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464:
-  version "1.0.30001474"
-  resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001474.tgz#13b6fe301a831fe666cce8ca4ef89352334133d5"
-  integrity sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==
+  version "1.0.30001476"
+  resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001476.tgz#759906c53eae17133217d75b482f9dc5c02f7898"
+  integrity sha512-JmpktFppVSvyUN4gsLS0bShY2L9ZUslHLE72vgemBkS43JD2fOvKTKs+GtRwuxrtRGnwJFW0ye7kWRRlLJS9vQ==
 
 chalk@5.2.0:
   version "5.2.0"
@@ -4222,9 +4222,9 @@ eastasianwidth@^0.2.0:
   integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
 
 electron-to-chromium@^1.4.284:
-  version "1.4.355"
-  resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.355.tgz#539484310e5a94133bc3df8ba4b6a9dde7a506a4"
-  integrity sha512-056hxzEE4l667YeOccgjhRr5fTiwZ6EIJ4FpzGps4k3YcS8iAhiaBYUBrv5E2LDQJsussscv9EEUwAYKnv+ZKg==
+  version "1.4.356"
+  resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.356.tgz#b75a8a8c31d571f6024310cc980a08cd6c15a8c5"
+  integrity sha512-nEftV1dRX3omlxAj42FwqRZT0i4xd2dIg39sog/CnCJeCcL1TRd2Uh0i9Oebgv8Ou0vzTPw++xc+Z20jzS2B6A==
 
 elliptic@^6.5.3:
   version "6.5.4"
@@ -6036,9 +6036,9 @@ lines-and-columns@^1.1.6:
   integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
 
 lint-staged@^13.0.3:
-  version "13.2.0"
-  resolved "https://registry.npmmirror.com/lint-staged/-/lint-staged-13.2.0.tgz#b7abaf79c91cd36d824f17b23a4ce5209206126a"
-  integrity sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==
+  version "13.2.1"
+  resolved "https://registry.npmmirror.com/lint-staged/-/lint-staged-13.2.1.tgz#9d30a14e3e42897ef417bc98556fb757f75cae87"
+  integrity sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==
   dependencies:
     chalk "5.2.0"
     cli-truncate "^3.1.0"
@@ -9145,9 +9145,9 @@ typed-array-length@^1.0.4:
     is-typed-array "^1.1.9"
 
 typescript@^5.0.0:
-  version "5.0.3"
-  resolved "https://registry.npmmirror.com/typescript/-/typescript-5.0.3.tgz#fe976f0c826a88d0a382007681cbb2da44afdedf"
-  integrity sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==
+  version "5.0.4"
+  resolved "https://registry.npmmirror.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
+  integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
 
 umi-request@^1.4.0:
   version "1.4.0"