Initial commit

This commit is contained in:
linxd
2025-06-16 09:25:19 +08:00
commit d33c9cc7d3
391 changed files with 26497 additions and 0 deletions

35
.dockerignore Normal file
View File

@ -0,0 +1,35 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
**/node_modules
/src/utils/request-temp.js
# production
/.vscode
# misc
.DS_Store
npm-debug.log*
yarn-error.log
/coverage
.idea
yarn.lock
package-lock.json
*bak
.vscode
# visual studio code
.history
*.log
functions/mock
.temp/**
# umi
.umi
.umi-production
# screenshot
screenshot
.firebase

16
.editorconfig Normal file
View File

@ -0,0 +1,16 @@
# http://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab

4
.eslintignore Normal file
View File

@ -0,0 +1,4 @@
/lambda/
/scripts
/config
.history

20
.eslintrc.js Normal file
View File

@ -0,0 +1,20 @@
module.exports = {
extends: [require.resolve('@umijs/fabric/dist/eslint')],
globals: {
ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: true,
page: true,
REACT_APP_ENV: true,
//商城2.0跳转地址
REACT_APP_MALL_V2_URL: false,
//各系统跳转参数
REACT_APP_CLIENT_KEY: true,
// REACT_APP_CLIENT_SECRET: true,
//密码加密参数
REACT_APP_PASSWORD_CIPHERMODE: true,
REACT_APP_PASSWORD_PUBLICKEY: true,
//当前环境
START_ENV: true,
//询价查看报价跳转地址
REACT_APP_XUNJIA_REDIRECT: true,
},
};

40
.gitignore vendored Normal file
View File

@ -0,0 +1,40 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
**/node_modules
# roadhog-api-doc ignore
/src/utils/request-temp.js
_roadhog-api-doc
# production
/dist
/.vscode
# misc
.DS_Store
npm-debug.log*
yarn-error.log
/coverage
.idea
yarn.lock
package-lock.json
*bak
.vscode
# visual studio code
.history
*.log
functions/*
.temp/**
# umi
.umi
.umi-production
# screenshot
screenshot
.firebase
.eslintcache
build

6
.gitpod.yml Normal file
View File

@ -0,0 +1,6 @@
ports:
- port: 8000
onOpen: open-preview
tasks:
- init: npm install
command: npm start

23
.prettierignore Normal file
View File

@ -0,0 +1,23 @@
**/*.svg
package.json
.umi
.umi-production
/dist
.dockerignore
.DS_Store
.eslintignore
*.png
*.toml
docker
.editorconfig
Dockerfile*
.gitignore
.prettierignore
LICENSE
.eslintcache
*.lock
yarn-error.log
.history
CNAME
/build
/public

5
.prettierrc.js Normal file
View File

@ -0,0 +1,5 @@
const fabric = require('@umijs/fabric');
module.exports = {
...fabric.prettier,
};

5
.stylelintrc.js Normal file
View File

@ -0,0 +1,5 @@
const fabric = require('@umijs/fabric');
module.exports = {
...fabric.stylelint,
};

46
CODE_OF_CONDUCT.md Normal file
View File

@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at afc163@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Alipay.inc
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

87
azure-pipelines.yml Normal file
View File

@ -0,0 +1,87 @@
# Node.js
# Build a general Node.js project with npm.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript
name: ant design pro
trigger:
- master
jobs:
- job: lintAndBuild
pool:
vmImage: 'Ubuntu-16.04'
steps:
- checkout: self
clean: false
- script: npm install
displayName: install
- script: npm run lint
displayName: lint
- script: npm run tsc
displayName: tsc
- script: npm run build
env:
PROGRESS: none
displayName: build
- job: test
pool:
vmImage: 'Ubuntu-16.04'
container:
image: circleci/node:latest-browsers
options: '-u root'
steps:
- script: npm install
displayName: install
- script: npm run test:all
env:
PROGRESS: none
UMI_UI: none
displayName: test
- job: Windows
pool:
vmImage: 'windows-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '12.x'
- script: npm install
displayName: install
- script: npm run lint
displayName: lint
- script: npm run tsc
displayName: tsc
- script: npm run test:all
env:
PROGRESS: none
UMI_UI: none
displayName: test
- script: npm run build
env:
PROGRESS: none
displayName: build
- job: MacOS
pool:
vmImage: 'macOS-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '12.x'
- script: npm install
displayName: install
- script: npm run lint
displayName: lint
- script: npm run tsc
displayName: tsc
- script: npm run
env:
PROGRESS: none
UMI_UI: none
displayName: build

45
config/config.UAT.ts Normal file
View File

@ -0,0 +1,45 @@
import { defineConfig } from 'umi';
import proxy from './proxy';
export default defineConfig({
proxy: proxy['UAT'],
define:{
//商城2.0跳转地址
REACT_APP_MALL_V2_URL:'http://111.198.162.67/zglt/index_hzf.jsp?id=dev',
//各系统跳转参数
REACT_APP_CLIENT_KEY : 'KgPEkttG',
// REACT_APP_CLIENT_SECRET :'ae5bdb183c502355d2055b3de73300aa73cbfdf3',
//密码加密参数
REACT_APP_PASSWORD_CIPHERMODE:'1',
REACT_APP_PASSWORD_PUBLICKEY:'0428D625CEEB71CE823BD7D78DFEE7B122F2DA5C4D21E32253AD684D0FE21810394A799639C0CDFBFEB535A1DFD6A366A637E582CE0B1466A5FE7858841135DE6B',
//当前环境
START_ENV:'UAT',
//询价查看报价跳转地址
// REACT_APP_XUNJIA_REDIRECT: 'http://10.0.204.215:8280/provider_uat',
//询价-查看报价详情-虚拟用户uid
REACT_APP_XUNJIA_UID: 'admin_entrance',
// //智慧客服ws地址
// REACT_APP_CUSTOMERSERVICE_WS_REDIRECT: 'ws://10.242.31.158:18022/api/api/biz-customer-service',
//智慧客服用户中心地址
REACT_APP_CUSTOMERSERVICE_USERCENTER: 'http://10.242.31.158:18022/auth/oauth/authorize?response_type=code',
//智慧客服client_id
REACT_APP_CUSTOMERSERVICE_CLIENT_ID: 'COsHJydx',
//智慧客服地址
REACT_APP_CUSTOMERSERVICE_REDIRECT: 'http://10.242.31.158:8632',
// //智慧客服文档中心查看图片地址
// REACT_APP_CUSTOMERSERVICE_DOC_REDIRECT: 'http://cos.gz-tst.cos.tg.unicom.local/349553515466:mall/',
// //智慧客服加密公钥私钥ciphercode
// REACT_APP_CUSTOMERSERVICE_PUBLICKEY : '0428D625CEEB71CE823BD7D78DFEE7B122F2DA5C4D21E32253AD684D0FE21810394A799639C0CDFBFEB535A1DFD6A366A637E582CE0B1466A5FE7858841135DE6B',
// REACT_APP_CUSTOMERSERVICE_PRIVATEKEY : '4F7144028D4DCF88FA50F0E2B3FFDDCF63BBE17D1700537DCE037687D3AA3DA7',
// REACT_APP_CUSTOMERSERVICE_CIPHERCODE : 1,
},
});

45
config/config.dev.ts Normal file
View File

@ -0,0 +1,45 @@
import { defineConfig } from 'umi';
import proxy from './proxy';
export default defineConfig({
proxy: proxy['dev'],
define: {
//商城2.0跳转地址
REACT_APP_MALL_V2_URL: 'http://111.198.162.67/zglt/index_hzf.jsp?id=dev',
//各系统跳转参数
REACT_APP_CLIENT_KEY: 'KgPEkttG',
// REACT_APP_CLIENT_SECRET: 'ae5bdb183c502355d2055b3de73300aa73cbfdf3',
//密码加密参数
REACT_APP_PASSWORD_CIPHERMODE: '1',
REACT_APP_PASSWORD_PUBLICKEY: '0428D625CEEB71CE823BD7D78DFEE7B122F2DA5C4D21E32253AD684D0FE21810394A799639C0CDFBFEB535A1DFD6A366A637E582CE0B1466A5FE7858841135DE6B',
//当前环境
START_ENV: 'DEV',
//询价查看报价跳转地址
// REACT_APP_XUNJIA_REDIRECT: 'http://10.0.204.215:8080/provider_dev',
//询价-查看报价详情-虚拟用户uid
REACT_APP_XUNJIA_UID: 'admin_entrance',
//智慧客服用户中心地址
REACT_APP_CUSTOMERSERVICE_USERCENTER: 'http://10.242.31.158:8100/auth/oauth/authorize?response_type=code',
//智慧客服client_id
REACT_APP_CUSTOMERSERVICE_CLIENT_ID: 'COsHJydx',
//智慧客服地址
REACT_APP_CUSTOMERSERVICE_REDIRECT: 'http://10.242.31.158:8632',
// //智慧客服ws地址
// REACT_APP_CUSTOMERSERVICE_WS_REDIRECT: 'ws://10.242.37.148:18022/api/api/biz-customer-service',
// //智慧客服文档中心查看图片地址
// REACT_APP_CUSTOMERSERVICE_DOC_REDIRECT: 'http://cos.gz-tst.cos.tg.unicom.local/349553515466:mall/',
// //智慧客服加密公钥私钥ciphercode
// REACT_APP_CUSTOMERSERVICE_PUBLICKEY : '0428D625CEEB71CE823BD7D78DFEE7B122F2DA5C4D21E32253AD684D0FE21810394A799639C0CDFBFEB535A1DFD6A366A637E582CE0B1466A5FE7858841135DE6B',
// REACT_APP_CUSTOMERSERVICE_PRIVATEKEY : '4F7144028D4DCF88FA50F0E2B3FFDDCF63BBE17D1700537DCE037687D3AA3DA7',
// REACT_APP_CUSTOMERSERVICE_CIPHERCODE : 1,
},
});

43
config/config.prod.ts Normal file
View File

@ -0,0 +1,43 @@
import { defineConfig } from 'umi';
import proxy from './proxy';
export default defineConfig({
proxy: proxy['prod'],
define:{
//商城2.0跳转地址
REACT_APP_MALL_V2_URL:'http://111.198.162.67/zglt/index_hzf.jsp?id=dev',
//各系统跳转参数
REACT_APP_CLIENT_KEY : 'KgPEkttG',
// REACT_APP_CLIENT_SECRET :'ae5bdb183c502355d2055b3de73300aa73cbfdf3',
//密码加密参数
REACT_APP_PASSWORD_CIPHERMODE:'1',
REACT_APP_PASSWORD_PUBLICKEY:'04819CF427F9150FEEBD91E8D2346F203FC47312D212022A967D8372EA30B9581CCEEFCE2670BDDAF2E8DA1620EA73948126078ED9FF9773AA3A94EE6C80035A18',
//当前环境
START_ENV:'PROD',
//询价查看报价跳转地址
// REACT_APP_XUNJIA_REDIRECT: 'https://60.10.26.178/provider',
//询价-查看报价详情-虚拟用户uid
REACT_APP_XUNJIA_UID: 'admin_entrance',
//智慧客服用户中心地址
REACT_APP_CUSTOMERSERVICE_USERCENTER: 'https://uscm.chinaunicom.cn:18023/auth/oauth/authorize?response_type=code',
//智慧客服client_id
REACT_APP_CUSTOMERSERVICE_CLIENT_ID: 'COsHJydx',
//智慧客服地址
REACT_APP_CUSTOMERSERVICE_REDIRECT: 'https://uscm.chinaunicom.cn:18011',
// //智慧客服ws地址
// REACT_APP_CUSTOMERSERVICE_WS_REDIRECT: 'ws://uscm.unicom.local:18022/api/api/biz-customer-service',
// //智慧客服文档中心查看图片地址
// REACT_APP_CUSTOMERSERVICE_DOC_REDIRECT: 'http://cos.xx-pbc.cos.tg.unicom.local/349553515466:mall/',
// //智慧客服加密公钥私钥ciphercode
// REACT_APP_CUSTOMERSERVICE_PUBLICKEY : '0428D625CEEB71CE823BD7D78DFEE7B122F2DA5C4D21E32253AD684D0FE21810394A799639C0CDFBFEB535A1DFD6A366A637E582CE0B1466A5FE7858841135DE6B',
// REACT_APP_CUSTOMERSERVICE_PRIVATEKEY : '4F7144028D4DCF88FA50F0E2B3FFDDCF63BBE17D1700537DCE037687D3AA3DA7',
// REACT_APP_CUSTOMERSERVICE_CIPHERCODE : 1,
},
});

43
config/config.sim.ts Normal file
View File

@ -0,0 +1,43 @@
import { defineConfig } from 'umi';
import proxy from './proxy';
export default defineConfig({
proxy: proxy['sim'],
define: {
//商城2.0跳转地址
REACT_APP_MALL_V2_URL: 'http://111.198.162.67/zglt/index_hzf.jsp?id=dev',
//各系统跳转参数
REACT_APP_CLIENT_KEY: 'KgPEkttG',
// REACT_APP_CLIENT_SECRET: 'ae5bdb183c502355d2055b3de73300aa73cbfdf3',
//密码加密参数
REACT_APP_PASSWORD_CIPHERMODE: '1',
REACT_APP_PASSWORD_PUBLICKEY: '0428D625CEEB71CE823BD7D78DFEE7B122F2DA5C4D21E32253AD684D0FE21810394A799639C0CDFBFEB535A1DFD6A366A637E582CE0B1466A5FE7858841135DE6B',
//当前环境
START_ENV: 'sim',
//询价查看报价跳转地址
// REACT_APP_XUNJIA_REDIRECT: 'http://10.0.204.215:8080/provider',
//询价-查看报价详情-虚拟用户uid
REACT_APP_XUNJIA_UID: 'admin_entrance',
//智慧客服用户中心地址
REACT_APP_CUSTOMERSERVICE_USERCENTER: 'http://10.242.31.158:8100/auth/oauth/authorize?response_type=code',
//智慧客服client_id
REACT_APP_CUSTOMERSERVICE_CLIENT_ID: 'COsHJydx',
//智慧客服地址
REACT_APP_CUSTOMERSERVICE_REDIRECT: 'http://10.242.31.158:8632',
// //智慧客服ws地址
// REACT_APP_CUSTOMERSERVICE_WS_REDIRECT: 'ws://10.242.31.54:18022/api/api/biz-customer-service',
// //智慧客服文档中心查看图片地址
// REACT_APP_CUSTOMERSERVICE_DOC_REDIRECT: 'http://cos.xx-pbc.cos.tg.unicom.local/349553515466:mall/',
// //智慧客服加密公钥私钥ciphercode
// REACT_APP_CUSTOMERSERVICE_PUBLICKEY : '0428D625CEEB71CE823BD7D78DFEE7B122F2DA5C4D21E32253AD684D0FE21810394A799639C0CDFBFEB535A1DFD6A366A637E582CE0B1466A5FE7858841135DE6B',
// REACT_APP_CUSTOMERSERVICE_PRIVATEKEY : '4F7144028D4DCF88FA50F0E2B3FFDDCF63BBE17D1700537DCE037687D3AA3DA7',
// REACT_APP_CUSTOMERSERVICE_CIPHERCODE : 1,
},
});

38
config/config.ts Normal file
View File

@ -0,0 +1,38 @@
import { defineConfig } from 'umi';
import defaultSettings from './defaultSettings';
// import proxy from './proxy';
import PageRoutes from './router.config'
const { REACT_APP_ENV } = process.env;
export default defineConfig({
hash: true,
antd: {},
dva: {
hmr: true,
},
locale: {
default: 'zh-CN',
antd: true,
// default true, when it is true, will use `navigator.language` overwrite default
baseNavigator: true,
},
//全局加载样式
// dynamicImport: {
// loading: '@/components/PageLoading/index',
// },
targets: {
ie: 11,
},
// umi routes: https://umijs.org/docs/routing
routes: PageRoutes,
// Theme for antd: https://ant.design/docs/react/customize-theme-cn
theme: {
// ...darkTheme,
'primary-color': defaultSettings.primaryColor,
},
// @ts-ignore
title: false,
ignoreMomentLocale: true,
manifest: {
basePath: '/',
},
});

25
config/defaultSettings.ts Normal file
View File

@ -0,0 +1,25 @@
import { Settings as ProSettings } from '@ant-design/pro-layout';
type DefaultSettings = ProSettings & {
pwa: boolean;
};
const proSettings: DefaultSettings = {
navTheme: 'light',
primaryColor: '#b30000',
layout: 'side',
contentWidth: 'Fluid',
fixedHeader: false,
fixSiderbar: true,
colorWeak: false,
menu: {
locale: true,
},
title: '招投标系统',
pwa: false,
iconfontUrl: '',
};
export type { DefaultSettings };
export default proSettings;

98
config/proxy.ts Normal file
View File

@ -0,0 +1,98 @@
export default {
dev: {
// '/api/wfap/v1/audit/bill/find/by/procid': {
// target: 'http://10.242.37.148:8891/',//审批单 dev环境自动审批暂时用不到
// changeOrigin: true,
// pathRewrite: { '^': '' },
// },
'/api/*': {
// target: 'http://10.242.37.148:18022',//连接天宫的ng
target: 'http://localhost:3000',//连接天宫的ng
changeOrigin: true,
pathRewrite: { '^': '' },
},
},
UAT: {
'/api/core-service-ebtp-userinfo': {
target: 'http://localhost:18023',
changeOrigin: true,
pathRewrite: { '/api/core-service-ebtp-userinfo': '' },
},
'/api/biz-service-ebtp-bid': {
target: 'http://localhost:18003',
changeOrigin: true,
pathRewrite: { 'biz-service-ebtp-bid': '' },
},
'/api/biz-service-ebtp-extend': {
target: 'http://localhost:18018',
changeOrigin: true,
pathRewrite: { '/api/biz-service-ebtp-extend': '' },
},
'/api/biz-service-ebtp-project': {
target: 'http://localhost:18012',
changeOrigin: true,
pathRewrite: { '/api/biz-service-ebtp-project': '' },
},
'/api/sys-manager-ebtp-project': {
target: 'http://localhost:18030',
changeOrigin: true,
pathRewrite: { '/api/sys-manager-ebtp-project': '' },
},
'/api/biz-service-ebtp-rsms': {
target: 'http://localhost:18014',
changeOrigin: true,
pathRewrite: { '/api/biz-service-ebtp-rsms': '' },
},
'/api/biz-service-ebtp-agency': {
target: 'http://localhost:18099',
changeOrigin: true,
pathRewrite: { '/api/biz-service-ebtp-agency': '' },
},
'/api/biz-supplier-manage': {
target: 'http://localhost:18096',
changeOrigin: true,
pathRewrite: { '/api/biz-supplier-manage': '' },
}
// '/api/wfap/v1/audit/bill/find/by/procid': {
// target: 'http://10.242.31.158:8891/',//审批单 uat环境自动审批暂时用不到
// changeOrigin: true,
// pathRewrite: { '^': '' },
// },
// '/living/api/*': {
// // target: 'https://ai.cubigdata.cn:5001',//连接天宫的ng
// target: 'http://localhost:3000',//连接天宫的ng
// changeOrigin: true,
// pathRewrite: { '/living/api': '' },
// },
// '/api/*': {
// target: 'http://10.242.31.158:18022',//连接天宫的ng
// changeOrigin: true,
// pathRewrite: { '^': '' },
// },
// '/doc/v1.0/*': {
// target: 'http://10.242.31.158:8806',//连接天宫的ng
// changeOrigin: true,
// pathRewrite: { '^': '' },
// },
},
sim: {
// '/api/wfap/v1/audit/bill/find/by/procid': {
// target: 'http://10.242.31.158:8891/',//审批单 uat环境自动审批暂时用不到
// changeOrigin: true,
// pathRewrite: { '^': '' },
// },
'/api/*': {
target: 'http://10.242.31.54:18022',//连接天宫的ng
changeOrigin: true,
pathRewrite: { '^': '' },
},
},
prod: {
'/api/*': {
target: 'http://uscm.unicom.local:18022',//连接天宫的ng
changeOrigin: true,
pathRewrite: { '^': '' },
},
}
};

122
config/router.config.ts Normal file
View File

@ -0,0 +1,122 @@
import menuaZhaoBiao from './ZhaoBiao/router_menubProject.config';
import transfer from './router_transfer';
import home from './HomePage/router_home';
import juryRoom from './JuryRoom/router_menuJury.config';
import approvalForm from './router_approval_form';
import partyMemberTopic from './router_partyMemberTopic';
import highQualityOperation from './router_highQualityOperation';
import { elecBidEvaluation, monitor, monitorScreen } from './router_elecEvaluation';
export default [
//========================================================================登陆
...transfer,//跳转、登陆
{
path: '/userformal',
// component: '../layouts/UserLayout',
routes: [
{
name: 'login',
path: '/userformal/login',
component: './userformal/login',
},
],
},
{
path: '/loading',
routes: [
{
path: '/loading',
component: './Loading',
},
],
},
//日历组件暂时用
// {
// path: '/Calendar',
// component: './MainPage/ProjectManager/components/CalendarForm',
// },
//视频播放-视频播放列表(暂时用)
{
path: '/ElecEvaluation/Monitor/videoplay',
component: './ElecEvaluation/Monitor/RoomDetail/videoplay',
},
//富文本组件
// {
// path: '/editor',
// component: './MainPage/ProjectManager/components/WangEditor',
// },
//401错误页
{
exact: true,
path: '/401',
component: './401',
},
{
exact: true,
path: '/404',
component: './404',
},
//==========================================================================菜单路由
{
path: '/',
component: '../layouts/SecurityLayout',
routes: [
{
path: '/',
component: '../layouts/BasicLayout',
//authority: ['ebtp-expert'],
routes: [
{//专家登陆地址
path: '/',
redirect: '/userexpert/login',
},
...home,//各角色主页
...menuaZhaoBiao,//项目菜单所有路由
...elecBidEvaluation,//电子评标室-监控大屏
{//问卷调查
name: 'Questionnaire',
icon: 'UnorderedListOutlined',
path: '/Questionnaire',
routes: [
{//问卷调查
name: 'QuestionList',
path: '/Questionnaire/questionList',
component: './Questionnaire/questionList'
},
{//问卷调查新增
name: 'questionAdd',
path: '/Questionnaire/questionAdd',
component: './Questionnaire/questionAdd'
},
{//问卷统计
name: 'QuestionStatistics',
path: '/Questionnaire/questionStatistics',
component: './Questionnaire/questionStatistics'
},
],
},
{//我的工作台
name: 'workbench',
icon: 'DesktopOutlined',
//authority: ['ebtp-expert'],
path: '/workbench',
routes: [
{ name: 'commonFiles', path: '/workbench/files', component: './workbench/files/components/FilesList' },//共享文档下载-所有角色
{ name: 'commonFilesManage', path: '/workbench/filesManage', component: './workbench/filesManage/components/filesManage' },//共享文档管理-系统管理员
]
},
{ name: 'systemMessage', path: '/SystemMessage/message', component: './SystemMessage/message' },//系统消息-所有角色
{
component: './404',
},
],
},
{
component: './404',
},
],
},
{
component: './404',
},
];

9
jest.config.js Normal file
View File

@ -0,0 +1,9 @@
module.exports = {
testURL: 'http://localhost:8000',
testEnvironment: './tests/PuppeteerEnvironment',
verbose: false,
globals: {
ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: false,
localStorage: null,
},
};

10
jsconfig.json Normal file
View File

@ -0,0 +1,10 @@
{
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
}
}

172
mock/listTableList.ts Normal file
View File

@ -0,0 +1,172 @@
// eslint-disable-next-line import/no-extraneous-dependencies
import { Request, Response } from 'express';
import { parse } from 'url';
import { TableListItem, TableListParams } from '@/pages/ListTableList/data';
// mock tableListDataSource
const genList = (current: number, pageSize: number) => {
const tableListDataSource: TableListItem[] = [];
for (let i = 0; i < pageSize; i += 1) {
const index = (current - 1) * 10 + i;
tableListDataSource.push({
key: index,
disabled: i % 6 === 0,
href: 'https://ant.design',
avatar: [
'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
][i % 2],
name: `TradeCode ${index}`,
owner: '曲丽丽',
desc: '这是一段描述',
callNo: Math.floor(Math.random() * 1000),
status: Math.floor(Math.random() * 10) % 4,
updatedAt: new Date(),
createdAt: new Date(),
progress: Math.ceil(Math.random() * 100),
});
}
tableListDataSource.reverse();
return tableListDataSource;
};
let tableListDataSource = genList(1, 100);
function getRule(req: Request, res: Response, u: string) {
let realUrl = u;
if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') {
realUrl = req.url;
}
const { current = 1, pageSize = 10 } = req.query;
const params = (parse(realUrl, true).query as unknown) as TableListParams;
let dataSource = [...tableListDataSource].slice(
((current as number) - 1) * (pageSize as number),
(current as number) * (pageSize as number),
);
const sorter = JSON.parse(params.sorter as any);
if (sorter) {
dataSource = dataSource.sort((prev, next) => {
let sortNumber = 0;
Object.keys(sorter).forEach((key) => {
if (sorter[key] === 'descend') {
if (prev[key] - next[key] > 0) {
sortNumber += -1;
} else {
sortNumber += 1;
}
return;
}
if (prev[key] - next[key] > 0) {
sortNumber += 1;
} else {
sortNumber += -1;
}
});
return sortNumber;
});
}
if (params.filter) {
const filter = JSON.parse(params.filter as any) as {
[key: string]: string[];
};
if (Object.keys(filter).length > 0) {
dataSource = dataSource.filter((item) => {
return Object.keys(filter).some((key) => {
if (!filter[key]) {
return true;
}
if (filter[key].includes(`${item[key]}`)) {
return true;
}
return false;
});
});
}
}
if (params.name) {
dataSource = dataSource.filter((data) => data.name.includes(params.name || ''));
}
const result = {
data: dataSource,
total: tableListDataSource.length,
success: true,
pageSize,
current: parseInt(`${params.currentPage}`, 10) || 1,
};
return res.json(result);
}
function postRule(req: Request, res: Response, u: string, b: Request) {
let realUrl = u;
if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') {
realUrl = req.url;
}
const body = (b && b.body) || req.body;
const { method, name, desc, key } = body;
switch (method) {
/* eslint no-case-declarations:0 */
case 'delete':
tableListDataSource = tableListDataSource.filter((item) => key.indexOf(item.key) === -1);
break;
case 'post':
(() => {
const i = Math.ceil(Math.random() * 10000);
const newRule = {
key: tableListDataSource.length,
href: 'https://ant.design',
avatar: [
'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
][i % 2],
name,
owner: '曲丽丽',
desc,
callNo: Math.floor(Math.random() * 1000),
status: Math.floor(Math.random() * 10) % 2,
updatedAt: new Date(),
createdAt: new Date(),
progress: Math.ceil(Math.random() * 100),
};
tableListDataSource.unshift(newRule);
return res.json(newRule);
})();
return;
case 'update':
(() => {
let newRule = {};
tableListDataSource = tableListDataSource.map((item) => {
if (item.key === key) {
newRule = { ...item, desc, name };
return { ...item, desc, name };
}
return item;
});
return res.json(newRule);
})();
return;
default:
break;
}
const result = {
list: tableListDataSource,
pagination: {
total: tableListDataSource.length,
},
};
res.json(result);
}
export default {
'GET /api/rule': getRule,
'POST /api/rule': postRule,
};

131
mock/newList.ts Normal file
View File

@ -0,0 +1,131 @@
import { Request, Response } from 'express';
//获取日历数据
const getCalendarList = (req:Request ,res: Response) => {
const body = req.body;
const { year,month } = body;
const getData = (month1: any,year1: any) => {
if(year1 == 2021 || year1 == '2021') {
let data: any
switch (month1) {
case 1:
data = {
'2021-01-01': {number: 2, message: ['10:00','13:40']},
'2021-01-07': {number: 3, message: ['11:00','13:40','13:40']},
'2021-01-08': {number: 1, message: ['13:00']},
'2021-01-14': {number: 2, message: ['12:10','13:40']},
'2021-01-25': {number: 3, message: ['10:30','13:40','13:40']},
}
break;
case 2:
data = {
'2021-02-06': {number: 1, message: ['10:00','13:40']},
'2021-02-12': {number: 5, message: ['10:00','13:40','10:00','13:40','10:00']},
}
break;
case 3:
data = {
'2021-03-09': {number: 6, message: ['10:00','13:40','10:00','13:40','10:00','13:40']},
'2021-03-15': {number: 1, message: ['10:00','13:40']},
'2021-03-21': {number: 4, message: ['10:00','13:40','10:00','13:40']},
'2021-03-22': {number: 2, message: ['10:00','13:40']},
'2021-03-30': {number: 3, message: ['10:00','13:40','13:40']},
}
break;
case 4:
data = {
'2021-04-01': {number: 2, message: ['10:00','13:40']},
'2021-04-07': {number: 2, message: ['10:00','13:40']},
'2021-04-08': {number: 2, message: ['10:00','13:40']},
'2021-04-14': {number: 2, message: ['10:00','13:40']},
'2021-04-19': {number: 2, message: ['10:00','13:40']},
}
break;
case 5:
data = {
'2021-05-03': {number: 2, message: ['10:00','13:40']},
'2021-05-09': {number: 2, message: ['10:00','13:40']},
'2021-05-18': {number: 2, message: ['10:00','13:40']},
'2021-05-22': {number: 2, message: ['10:00','13:40']},
}
break;
case 6:
data = {
'2021-06-01': {number: 2, message: ['10:00','13:40']},
'2021-06-07': {number: 2, message: ['10:00','13:40']},
'2021-06-09': {number: 2, message: ['10:00','13:40']},
'2021-06-14': {number: 2, message: ['10:00','13:40']},
'2021-06-21': {number: 2, message: ['10:00','13:40']},
}
break;
case 7:
data = {
'2021-07-08': {number: 2, message: ['10:00','13:40']},
'2021-07-09': {number: 2, message: ['10:00','13:40']},
'2021-07-10': {number: 2, message: ['10:00','13:40']},
'2021-07-14': {number: 2, message: ['10:00','13:40']},
'2021-07-24': {number: 2, message: ['10:00','13:40']},
}
break;
case 8:
data = {
'2021-08-12': {number: 2, message: ['10:00','13:40']},
'2021-08-13': {number: 2, message: ['10:00','13:40']},
'2021-08-14': {number: 2, message: ['10:00','13:40']},
'2021-08-19': {number: 2, message: ['10:00','13:40']},
}
break;
case 9:
data = {
'2021-09-11': {number: 2, message: ['10:00','13:40']},
'2021-09-17': {number: 2, message: ['10:00','13:40']},
'2021-09-18': {number: 2, message: ['10:00','13:40']},
}
break;
case 10:
data = {
'2021-10-02': {number: 2, message: ['10:00','13:40']},
'2021-10-10': {number: 2, message: ['10:00','13:40']},
}
break;
case 11:
data = {
'2021-11-12': {number: 2, message: ['10:00','13:40']},
'2021-11-13': {number: 2, message: ['10:00','13:40']},
'2021-11-14': {number: 2, message: ['10:00','13:40']},
'2021-11-15': {number: 2, message: ['10:00','13:40']},
'2021-11-16': {number: 2, message: ['10:00','13:40']},
}
break;
case 12:
data = {
'2021-12-07': {number: 2, message: ['10:00','13:40']},
'2021-12-08': {number: 2, message: ['10:00','13:40']},
'2021-12-14': {number: 2, message: ['10:00','13:40']},
}
break;
default:
}
return data
}
}
(() => {
const newRule = {
code: 200,
data: {
...getData(year,month-1),
...getData(year,month),
...getData(year,month+1)
},
message: "success",
success: true
}
return res.json(newRule);
})();
return;
}
export default {
'POST /api/calendar': getCalendarList,
}

105
mock/notices.ts Normal file
View File

@ -0,0 +1,105 @@
import { Request, Response } from 'express';
const getNotices = (req: Request, res: Response) => {
res.json([
{
id: '000000001',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
title: '你收到了 14 份新周报',
datetime: '2017-08-09',
type: 'notification',
},
{
id: '000000002',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png',
title: '你推荐的 曲妮妮 已通过第三轮面试',
datetime: '2017-08-08',
type: 'notification',
},
{
id: '000000003',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png',
title: '这种模板可以区分多种通知类型',
datetime: '2017-08-07',
read: true,
type: 'notification',
},
{
id: '000000004',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
title: '左侧图标用于区分不同的类型',
datetime: '2017-08-07',
type: 'notification',
},
{
id: '000000005',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
title: '内容不要超过两行字,超出时自动截断',
datetime: '2017-08-07',
type: 'notification',
},
{
id: '000000006',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
title: '曲丽丽 评论了你',
description: '描述信息描述信息描述信息',
datetime: '2017-08-07',
type: 'message',
clickClose: true,
},
{
id: '000000007',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
title: '朱偏右 回复了你',
description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
datetime: '2017-08-07',
type: 'message',
clickClose: true,
},
{
id: '000000008',
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
title: '标题',
description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
datetime: '2017-08-07',
type: 'message',
clickClose: true,
},
{
id: '000000009',
title: '任务名称',
description: '任务需要在 2017-01-12 20:00 前启动',
extra: '未开始',
status: 'todo',
type: 'event',
},
{
id: '000000010',
title: '第三方紧急代码变更',
description: '冠霖提交于 2017-01-06需在 2017-01-07 前完成代码变更任务',
extra: '马上到期',
status: 'urgent',
type: 'event',
},
{
id: '000000011',
title: '信息安全考试',
description: '指派竹尔于 2017-01-09 前完成更新并发布',
extra: '已耗时 8 天',
status: 'doing',
type: 'event',
},
{
id: '000000012',
title: 'ABCD 版本发布',
description: '冠霖提交于 2017-01-06需在 2017-01-07 前完成代码变更任务',
extra: '进行中',
status: 'processing',
type: 'event',
},
]);
};
export default {
'GET /api/notices': getNotices,
};

86
mock/profileBasicMock.ts Normal file
View File

@ -0,0 +1,86 @@
const basicGoods = [
{
id: '1234561',
name: '矿泉水 550ml',
barcode: '12421432143214321',
price: '2.00',
num: '1',
amount: '2.00',
},
{
id: '1234562',
name: '凉茶 300ml',
barcode: '12421432143214322',
price: '3.00',
num: '2',
amount: '6.00',
},
{
id: '1234563',
name: '好吃的薯片',
barcode: '12421432143214323',
price: '7.00',
num: '4',
amount: '28.00',
},
{
id: '1234564',
name: '特别好吃的蛋卷',
barcode: '12421432143214324',
price: '8.50',
num: '3',
amount: '25.50',
},
];
const basicProgress = [
{
key: '1',
time: '2017-10-01 14:10',
rate: '联系客户',
status: 'processing',
operator: '取货员 ID1234',
cost: '5mins',
},
{
key: '2',
time: '2017-10-01 14:05',
rate: '取货员出发',
status: 'success',
operator: '取货员 ID1234',
cost: '1h',
},
{
key: '3',
time: '2017-10-01 13:05',
rate: '取货员接单',
status: 'success',
operator: '取货员 ID1234',
cost: '5mins',
},
{
key: '4',
time: '2017-10-01 13:00',
rate: '申请审批通过',
status: 'success',
operator: '系统',
cost: '1h',
},
{
key: '5',
time: '2017-10-01 12:00',
rate: '发起退货申请',
status: 'success',
operator: '用户',
cost: '5mins',
},
];
const getProfileBasicData = {
basicGoods,
basicProgress,
};
export default {
'GET /api/profile/basic': getProfileBasicData,
};

5
mock/route.ts Normal file
View File

@ -0,0 +1,5 @@
export default {
'/api/auth_routes': {
'/form/advanced-form': { authority: ['admin', 'user'] },
},
};

154
mock/user.ts Normal file
View File

@ -0,0 +1,154 @@
import { Request, Response } from 'express';
function getFakeCaptcha(req: Request, res: Response) {
return res.json('captcha-xxx');
}
// 代码中会兼容本地 service mock 以及部署站点的静态数据
export default {
// 支持值为 Object 和 Array
'GET /api/currentUser': {
name: 'Serati Ma',
avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',
userid: '00000001',
email: 'antdesign@alipay.com',
signature: '海纳百川,有容乃大',
title: '交互专家',
group: '蚂蚁集团某某某事业群某某平台部某某技术部UED',
tags: [
{
key: '0',
label: '很有想法的',
},
{
key: '1',
label: '专注设计',
},
{
key: '2',
label: '辣~',
},
{
key: '3',
label: '大长腿',
},
{
key: '4',
label: '川妹子',
},
{
key: '5',
label: '海纳百川',
},
],
notifyCount: 12,
unreadCount: 11,
country: 'China',
geographic: {
province: {
label: '浙江省',
key: '330000',
},
city: {
label: '杭州市',
key: '330100',
},
},
address: '西湖区工专路 77 号',
phone: '0752-268888888',
},
// GET POST 可省略
'GET /api/users': [
{
key: '1',
name: 'John Brown',
age: 32,
address: 'New York No. 1 Lake Park',
},
{
key: '2',
name: 'Jim Green',
age: 42,
address: 'London No. 1 Lake Park',
},
{
key: '3',
name: 'Joe Black',
age: 32,
address: 'Sidney No. 1 Lake Park',
},
],
'POST /api/login/account': (req: Request, res: Response) => {
const { password, userName, type } = req.body;
if (password === 'ant.design' && userName === 'admin') {
res.send({
status: 'ok',
type,
currentAuthority: 'admin',
});
return;
}
if (password === 'ant.design' && userName === 'user') {
res.send({
status: 'ok',
type,
currentAuthority: 'user',
});
return;
}
if (type === 'mobile') {
res.send({
status: 'ok',
type,
currentAuthority: 'admin',
});
return;
}
res.send({
status: 'error',
type,
currentAuthority: 'guest',
});
},
'POST /api/register': (req: Request, res: Response) => {
res.send({ status: 'ok', currentAuthority: 'user' });
},
'GET /api/500': (req: Request, res: Response) => {
res.status(500).send({
timestamp: 1513932555104,
status: 500,
error: 'error',
message: 'error',
path: '/base/category/list',
});
},
'GET /api/404': (req: Request, res: Response) => {
res.status(404).send({
timestamp: 1513932643431,
status: 404,
error: 'Not Found',
message: 'No message available',
path: '/base/category/list/2121212',
});
},
'GET /api/403': (req: Request, res: Response) => {
res.status(403).send({
timestamp: 1513932555104,
status: 403,
error: 'Unauthorized',
message: 'Unauthorized',
path: '/base/category/list',
});
},
'GET /api/401': (req: Request, res: Response) => {
res.status(401).send({
timestamp: 1513932555104,
status: 401,
error: 'Unauthorized',
message: 'Unauthorized',
path: '/base/category/list',
});
},
'GET /api/login/captcha': getFakeCaptcha,
};

175
package.json Normal file
View File

@ -0,0 +1,175 @@
{
"name": "ant-design-pro",
"version": "4.2.1",
"private": true,
"description": "An out-of-box UI solution for enterprise applications",
"scripts": {
"start-dev": "cross-env UMI_UI=none UMI_ENV=dev LOGIN_PATH=ebtp-frontend umi dev --port=3000",
"start-UAT": "cross-env NODE_OPTIONS=--openssl-legacy-provider UMI_UI=none UMI_ENV=UAT LOGIN_PATH=ebtp-frontend umi dev --port=3000",
"start-sim": "cross-env UMI_UI=none UMI_ENV=sim LOGIN_PATH=ebtp-frontend umi dev --port=3000",
"start-prod": "cross-env UMI_UI=none UMI_ENV=prod LOGIN_PATH=prod/ebtp-frontend umi dev --port=3000",
"build-dev": "cross-env UMI_ENV=dev LOGIN_PATH=ebtp-frontend umi build",
"build-UAT": "cross-env UMI_ENV=UAT LOGIN_PATH=ebtp-frontend umi build",
"build-sim": "cross-env UMI_ENV=sim LOGIN_PATH=ebtp-frontend umi build",
"build-prod": "cross-env UMI_ENV=prod LOGIN_PATH=prod/ebtp-frontend umi build",
"analyze": "cross-env ANALYZE=1 umi build",
"build": "umi build",
"deploy": "npm run site && npm run gh-pages",
"dev": "npm run start:dev",
"docker-hub:build": "docker build -f Dockerfile.hub -t ant-design-pro ./",
"docker-prod:build": "docker-compose -f ./docker/docker-compose.yml build",
"docker-prod:dev": "docker-compose -f ./docker/docker-compose.yml up",
"docker:build": "docker-compose -f ./docker/docker-compose.dev.yml build",
"docker:dev": "docker-compose -f ./docker/docker-compose.dev.yml up",
"docker:push": "npm run docker-hub:build && npm run docker:tag && docker push antdesign/ant-design-pro",
"docker:tag": "docker tag ant-design-pro antdesign/ant-design-pro",
"fetch:blocks": "pro fetch-blocks && npm run prettier",
"gh-pages": "gh-pages -d dist",
"i18n-remove": "pro i18n-remove --locale=zh-CN --write",
"postinstall": "umi g tmp",
"lint": "umi g tmp && npm run lint:js && npm run lint:style && npm run lint:prettier",
"lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ",
"lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && npm run lint:style",
"lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src",
"lint:prettier": "prettier --check \"src/**/*\" --end-of-line auto",
"lint:style": "stylelint --fix \"src/**/*.less\" --syntax less",
"prettier": "prettier -c --write \"src/**/*\"",
"site": "npm run fetch:blocks && npm run build",
"start:dev": "cross-env REACT_APP_ENV=dev MOCK=none umi dev",
"start:no-mock": "cross-env MOCK=none umi dev",
"start:no-ui": "cross-env UMI_UI=none umi dev",
"start:pre": "cross-env REACT_APP_ENV=pre umi dev",
"start:test": "cross-env REACT_APP_ENV=test MOCK=none umi dev",
"pretest": "node ./tests/beforeTest",
"test": "umi test",
"test:all": "node ./tests/run-tests.js",
"test:component": "umi test ./src/components",
"tsc": "tsc --noEmit"
},
"lint-staged": {
"**/*.less": "stylelint --syntax less",
"**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js",
"**/*.{js,jsx,tsx,ts,less,md,json}": [
"prettier --write"
]
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 10"
],
"dependencies": {
"@ant-design/icons": "4.6.2",
"@ant-design/pro-card": "1.11.8",
"@ant-design/pro-descriptions": "1.7.0",
"@ant-design/pro-layout": "6.16.2",
"@ant-design/pro-list": "1.6.0",
"@ant-design/pro-table": "2.34.0",
"@material-ui/core": "4.11.3",
"@types/react-cookies": "0.1.0",
"@umijs/route-utils": "1.0.37",
"antd": "4.15.1",
"array-move": "3.0.1",
"axios": "0.21.1",
"classnames": "2.3.1",
"dva": "2.4.1",
"echarts": "^5.2.2",
"echarts-for-react": "^3.0.2",
"lodash": "4.17.21",
"moment": "^2.29.4",
"omit.js": "2.0.2",
"prop-types": "15.7.2",
"qs": "6.10.1",
"react": "16.14.0",
"react-axios": "2.0.5",
"react-cookies": "0.1.1",
"react-dom": "16.14.0",
"react-fast-marquee": "1.3.2",
"react-helmet-async": "^1.0.9",
"react-player": "^2.12.0",
"react-signature-canvas": "^1.0.3",
"react-sortable-hoc": "^1.11.0",
"sm-crypto": "0.2.5",
"umi": "^3.4.8",
"umi-request": "^1.3.5",
"use-merge-value": "1.0.2",
"wangeditor": "4.7.5"
},
"devDependencies": {
"@ant-design/pro-cli": "^1.0.18",
"@types/classnames": "^2.2.7",
"@types/express": "^4.17.0",
"@types/history": "^4.7.2",
"@types/jest": "^26.0.0",
"@types/lodash": "^4.14.144",
"@types/qs": "^6.5.3",
"@types/react": "^16.9.17",
"@types/react-dom": "^16.8.4",
"@types/react-helmet": "^6.1.0",
"@types/react-signature-canvas": "^1.0.2",
"@umijs/fabric": "^2.2.0",
"@umijs/plugin-blocks": "^2.0.5",
"@umijs/preset-ant-design-pro": "^1.2.0",
"@umijs/preset-react": "^1.4.8",
"@umijs/preset-ui": "^2.0.9",
"@umijs/yorkie": "^2.0.3",
"carlo": "^0.9.46",
"chalk": "^4.0.0",
"cross-env": "^7.0.3",
"cross-port-killer": "^1.1.1",
"detect-installer": "^1.0.1",
"enzyme": "^3.11.0",
"eslint": "^7.1.0",
"express": "^4.17.1",
"gh-pages": "^3.0.0",
"jsdom-global": "^3.0.2",
"lint-staged": "^10.0.0",
"mockjs": "^1.0.1-beta3",
"prettier": "^2.0.1",
"pro-download": "1.0.1",
"puppeteer-core": "^5.0.0",
"react-iframe": "^1.8.0",
"react-pdf-js": "^4.0.1",
"stylelint": "^13.0.0",
"typescript": "^3.9.7"
},
"engines": {
"node": ">=10.0.0"
},
"checkFiles": [
"src/**/*.js*",
"src/**/*.ts*",
"src/**/*.less",
"config/**/*.js*",
"scripts/**/*.js"
],
"create-umi": {
"ignoreScript": [
"docker*",
"functions*",
"site",
"generateMock"
],
"ignoreDependencies": [
"netlify*",
"serverless"
],
"ignore": [
".dockerignore",
".git",
".github",
".gitpod.yml",
"CODE_OF_CONDUCT.md",
"Dockerfile",
"Dockerfile.*",
"lambda",
"LICENSE",
"netlify.toml",
"README.*.md",
"azure-pipelines.yml",
"docker",
"CNAME",
"create-umi"
]
}
}

1
public/CNAME Normal file
View File

@ -0,0 +1 @@
preview.pro.ant.design

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
public/home_bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -0,0 +1,209 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>信息发布屏</title>
</head>
<body>
<div class="document-flex">
<div class="document-left">
<div class="document-left-content">
<span class="document-time" id="time">--:--:--</span>
<span class="document-date" id="date">----.--.-- 星期--</span>
<span class="document-title" id="title">吉林联通电子评标室</span>
<span class="document-num" id="num">(该会议室最多可容纳人数:--</span>
</div>
<div class="document-left-bottom">
</div>
</div>
<div class="document-right">
<div class="document-right-block">
<p class="white-text">
&nbsp;&nbsp;&nbsp;会议名称:<span id="meetingName">——</span><br />
&nbsp;&nbsp;&nbsp;会议事项:<span id="meetingItem">——</span><br />
&nbsp;&nbsp;&nbsp;会议时间:<span id="meetingTimes">——</span><br />
&nbsp;&nbsp;&nbsp;预约人员:<span id="bookBy">——</span><br />
&nbsp;&nbsp;&nbsp;联系方式:<span id="bookTel">——</span><br />
</p>
</div>
</div>
</div>
</body>
<style>
body {
width: 100%;
/* background: #efefef; */
background-image: url("background.jpg");
background-size: 100% 100%;
background-repeat: no-repeat;
margin: 0;
padding: 0;
list-style: none;
text-decoration: none;
border: none;
}
.document-flex {
display: flex;
justify-content: flex-start;
height: 100vh;
}
.document-left {
background: #40415df2;
width: 33vw;
}
.document-right {
display: flex;
align-items: center;
justify-content: center;
width: 67vw;
}
.document-right-block {
background: linear-gradient(to top, #d91615cc, #df6859cc) no-repeat center;
width: 60vw;
overflow: hidden;
font-size: 32px;
font-family: ;
line-height: 64px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
/* height: 100%; */
/* width: 100%; */
}
.document-right-block p {
width: 60vw;
}
.document-right-block .white-text {
color: #fefefe;
}
.document-left-content {
height: calc(100vh - 40px);
color: #FFFFFF;
font-family: ;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
}
.document-left-content span {
display: block;
margin-top: 40px;
}
.document-time {
font-size: 48px;
}
.document-title {
font-size: 38px;
letter-spacing: 1px;
line-height: 60px;
}
.document-date,
.document-num {
font-size: 24px;
}
.document-left-bottom {
background: #da251e;
height: 40px;
width: 33vw;
}
</style>
<script src="../../officecontrol/jquery.js"></script>
<script type="text/javascript">
function show(data) {
$("#meetingName").html(data.meetingName);
$("#meetingItem").html("评标");
$("#meetingTimes").html(data.meetingTimes);
$("#num").html("(该会议室最多可容纳人数:" + data.roomCapacity + "");
$("#bookBy").html(data.bookBy);
$("#bookTel").html(data.bookTel);
}
function hidden() {
$("#meetingName").html("——");
$("#meetingItem").html("——");
$("#meetingTimes").html("——");
$("#num").html("(该会议室最多可容纳人数:--");
$("#bookBy").html("——");
$("#bookTel").html("——");
}
function time() {
var now = new Date(); // 获取当前时间
var year = now.getFullYear(); // 获取年份
var month = now.getMonth() + 1; // 获取月份(从0开始计数)
var day = now.getDate(); // 获取日期
var hour = now.getHours(); // 获取小时
var minute = now.getMinutes(); // 获取分钟
var second = now.getSeconds(); // 获取秒钟
var weekday = now.getDay(); // 获取星期几(从0开始计数0代表星期日)
var weekMap = { 0: "星期日", 1: "星期一", 2: "星期二", 3: "星期三", 4: "星期四", 5: "星期五", 6: "星期六" };
$("#time").html((hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":" + (second < 10 ? "0" + second : second));
$("#date").html(year + "." + month + "." + day + " " + weekMap[weekday]);
}
function search() {
$.ajax({
url: "/api/biz-service-ebtp-evaluation/v1/informationscreen/getInformationScreenToday/0022",
type: "GET",
success: function (res) {
if (res.data) {
show(res.data);
}
},
error: function (re) {
hidden();
}
});
}
search();
var interval1 = setInterval(function () {
search();
}, 600000);
var interval2 = setInterval(function () {
time();
}, 1000);
var elem = document.documentElement;
function openFullscreen() {
if (elem.requestFullscreen) {
elem.requestFullscreen();
} else if (elem.webkitRequestFullscreen) { /* Safari */
elem.webkitRequestFullscreen();
} else if (elem.msRequestFullscreen) { /* IE11 */
elem.msRequestFullscreen();
}
}
function closeFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) { /* Safari */
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) { /* IE11 */
document.msExitFullscreen();
}
}
document.addEventListener('click', function () {
if (document.fullscreenElement) {
closeFullscreen();
} else {
openFullscreen();
}
});
</script>
</html>

25
public/logo.svg Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 115.9 87.3" style="enable-background:new 0 0 115.9 87.3;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<g id="图层_1-2">
<path class="st0" d="M111.5,33c-5.8-5.9-15.3-5.9-21.2-0.1c0,0-0.1,0.1-0.1,0.1l-3.7,3.7L81,31.1l-7,7l5.5,5.5L74,49.2l7,7
l5.6-5.5l3.7,3.7c5.9,5.9,15.4,5.9,21.3,0C117.4,48.4,117.4,38.9,111.5,33L111.5,33 M104.5,47.3c-2,2-5.3,2-7.3,0c0,0,0,0,0,0
l-3.7-3.7l3.7-3.6c2-2,5.3-2,7.3,0C106.5,42,106.5,45.3,104.5,47.3"/>
<path class="st0" d="M0,43.7c-0.1,8.3,6.6,15,14.9,15.1c4,0,7.9-1.6,10.8-4.5l3.7-3.7l5.6,5.5l7-7l-5.6-5.5l5.6-5.5l-7-7l-5.5,5.5
L25.7,33c-5.8-5.9-15.3-6-21.2-0.1C1.6,35.7,0,39.6,0,43.7 M9.9,43.7c0-2.9,2.4-5.2,5.2-5.2c1.4,0,2.7,0.6,3.6,1.5l3.7,3.7
l-3.7,3.7c-2,2-5.3,2-7.3,0C10.4,46.3,9.9,45,9.9,43.7"/>
<path class="st0" d="M64.9,43.7l18-18c5.9-5.9,5.9-15.4,0-21.3s-15.4-5.9-21.3,0L58,8.1l-3.7-3.7c-5.9-5.9-15.4-5.9-21.3,0
s-5.9,15.4,0,21.3l0,0l18,18l-18,18c-5.9,5.9-5.8,15.4,0,21.3s15.4,5.8,21.3,0l3.7-3.7c0,0,1.3,1.4,3.7,3.7
c5.9,5.9,15.4,5.9,21.3,0c5.9-5.9,5.9-15.4,0-21.3L64.9,43.7 M40,18.7c-2.1-2-2.2-5.2-0.3-7.3c2-2.1,5.2-2.2,7.3-0.3
c0.1,0.1,0.2,0.2,0.3,0.3c1.9,2,3.7,3.6,3.7,3.6l-5.5,5.5l7,7L58,22l5.5,5.5l7-7L64.9,15c0,0,1.7-1.7,3.7-3.7
c2.1-2,5.4-1.8,7.3,0.3c1.9,2,1.9,5.1,0,7.1l-18,18C57.9,36.7,42.1,20.8,40,18.7 M75.9,75.9c-2,2-5.3,2-7.3,0
c-1.9-2-3.7-3.7-3.7-3.7l5.6-5.5l-7-7L58,65.3l-5.5-5.5l-7,7l5.5,5.5l-3.7,3.7c-2,2-5.3,2-7.3,0c-2-2-2-5.3,0-7.3l0,0
c2.1-2.1,18-18,18-18l18,18C78,70.6,78,73.9,75.9,75.9"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

5
public/pro_icon.svg Normal file
View File

@ -0,0 +1,5 @@
<svg width="42" height="42" xmlns="http://www.w3.org/2000/svg">
<g>
<path fill="#070707" d="m6.717392,13.773912l5.6,0c2.8,0 4.7,1.9 4.7,4.7c0,2.8 -2,4.7 -4.9,4.7l-2.5,0l0,4.3l-2.9,0l0,-13.7zm2.9,2.2l0,4.9l1.9,0c1.6,0 2.6,-0.9 2.6,-2.4c0,-1.6 -0.9,-2.4 -2.6,-2.4l-1.9,0l0,-0.1zm8.9,11.5l2.7,0l0,-5.7c0,-1.4 0.8,-2.3 2.2,-2.3c0.4,0 0.8,0.1 1,0.2l0,-2.4c-0.2,-0.1 -0.5,-0.1 -0.8,-0.1c-1.2,0 -2.1,0.7 -2.4,2l-0.1,0l0,-1.9l-2.7,0l0,10.2l0.1,0zm11.7,0.1c-3.1,0 -5,-2 -5,-5.3c0,-3.3 2,-5.3 5,-5.3s5,2 5,5.3c0,3.4 -1.9,5.3 -5,5.3zm0,-2.1c1.4,0 2.2,-1.1 2.2,-3.2c0,-2 -0.8,-3.2 -2.2,-3.2c-1.4,0 -2.2,1.2 -2.2,3.2c0,2.1 0.8,3.2 2.2,3.2z" class="st0" id="Ant-Design-Pro"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 677 B

File diff suppressed because one or more lines are too long

1
public/screen/jsencrypt.min.js vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

13
src/assets/drag.less Normal file
View File

@ -0,0 +1,13 @@
.row-dragging {
background: #fafafa;
border: 1px solid #ccc;
z-index: 99999999;
}
.row-dragging td {
padding: 16px;
}
.row-dragging .drag-visible {
visibility: visible;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/assets/img/kefu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

720
src/assets/ld_style.less Normal file
View File

@ -0,0 +1,720 @@
@import '~antd/es/style/themes/default.less';
.bidContent{
padding: 0 24px;
background: #fff;
}
.pl0{
padding-left: 4px;
padding-top: 16px;
padding-bottom: 24px;
}
.fr{
float: right;
}
.tr{
text-align: left;
}
.tc{
text-align: center;
}
.m10{
margin: 10px 0;
display: block;
}
.ml5{
margin-left: 5px;
}
.ml20{
margin-left: 15px;
}
.ml10{
margin-left: 10px;
}
.mb10{
margin-bottom: 10px;
}
.mb0{
margin-bottom: 0;
}
.mt10{
margin-top: 10px;
}
.mt20{
margin-top: 20px;
}
.p10{
padding: 0 10px;
}
.no-padding{
.p10{
padding: 0;
}
}
.mb20{
margin-bottom: 20px;
}
.mb10{
margin-bottom: 10px;
}
.mt10{
margin-top: 10px;
}
.ml30{
margin-left: 30px;
}
.f12{
font-size: 12px;
}
.red{
color: #ff4d4f;
}
.center{
text-align: center;
}
.bidContent .ant-pro-table-search{
padding: 0;
margin-bottom: 0;
}
.bidContent .proSearch .ant-form{
height: 48px;
}
.bidContent .title{
font-size: 15px;
padding-bottom: 20px;
}
.bidContent .title .ml40{
margin-left: 40px;
}
.bidContent .title .f12{
font-size: 12px;
color: #ff4d4f;
margin-left: 8px;
}
.bidContent .title .purple{
color: #e600e6;
margin-left: 15px;
}
.bidContent .name {
color: #333;
padding: 0 15px 10px 0;
margin: 0;
font-weight: 700;
font-size: 16px;
}
.bidContent .name span{
margin-left: 15px;
}
.bidContent .process{
display: inline-block;
width: 60%;
}
.bidContent .process .ant-progress-line{
width: 40%;
}
.bidContent .block{
display: inline-block;
float: right;
}
.bidContent .titName{
border-bottom: 1px solid #ff4d4f;
height: 35px;
margin-bottom: 10px;
}
.bidContent .titName .f16{
font-size: 16px;
color: #ff4d4f;
}
.bidContent .centerBtn{
text-align: center;
margin: 20px 0;
}
.bidContent .red{
color: #ff4d4f;
}
.bidContent .blue{
color: #684dff;
}
.bidContent .explain{
border: 1px solid #ddd;
padding: 10px;
margin-top: 20px;
}
.bidContent .green{
background-color: #00a700;
display: inline-block;
padding: 4px 10px;
color: #fff;
}
.bidContent .ulList{
padding: 6px;
border: 1px solid #ddd;
}
.bidContent .ulList li{
width: 25%;
border: 1px solid #ddd;
padding: 4px 12px;
// float: left;
display: inline-block;
}
.bidContent .ulList li span{
color: #ff4d4f;
margin-left: 8px;
}
.uploadResponse{
background: #fff;
}
.uploadResponse .first-title{
margin-left: 24px;
}
.uploadResponse .name {
color: #333;
padding: 0 15px 10px 0;
margin: 0;
font-weight: 700;
font-size: 16px;
}
.uploadResponse .file{
color: #cb0000;
border-left: 5px solid #cb0000;
line-height: 18px;
padding-left: 7px;
margin: 3px 0;
}
.uploadResponse .message{
margin-top: 0;
border-top: 0;
border-bottom: 1px solid #cb0000;
margin-bottom: 0;
.text{
background-color: #cb0000;
padding: 3px 8px;
color: #fff;
display: inline-block;
margin-top: 8px;
}
}
.uploadResponse .table-mess{
.mess{
width: 33.33%;
display: inline-block;
}
}
.uploadResponse .b-red{
background-color: #b30000 !important;
border-color: #b30000 !important;
color: #fff;
float: right;
margin-left: 20px;
}
.uploadResponse .red.ant-statistic{
display: inline-block;
}
.uploadResponse .red .ant-statistic-title{
display: inline-block;
font-size: 13px;
color: #333;
}
.uploadResponse .red .ant-statistic-content{
display: inline-block;
font-size: 14px;
color: #b30000;
}
.biddingResponse{
background: #fff;
}
.biddingResponse .exportBtn{
text-align: right;
}
.biddingResponse .exportBtn button{
background: #b30000;
border: none;
margin: 16px 24px 16px 0;
}
.projectsInvolved .ant-form-item-control-input-content{
text-align: left;
width: 160px;
}
.left-menu{
float: left;
}
.right-table{
margin: 4px 24px 24px 224px;
}
.right-table .ant-pagination::after{
clear: none;
}
.right-table .ant-table-content{
overflow: auto hidden;
}
.right-table .ant-table-wrapper{
clear: none;
}
.right-table h4{
line-height: 40px;
color: #cb0000;
margin-top: 4px;
}
.no-clear{
clear: none;
}
.right-content{
margin-left: 200px;
}
.right-content table{
clear: none;
}
.labelTable label{
display: block;
}
.h45 .ant-collapse-header{
height: 45px!important;
}
.bprWidth{
width: calc(100% - 200px);
}
.borderB{
line-height: 40px;
border-bottom: 3px solid #980000;
}
.addForm .w50{
width: 50%;
display: inline-flex;
}
.addForm .w50 label{
display: block;
text-align: right;
width: 106px;
margin-right: 6px;
}
.addForm .label label{
width: 106px;
display: block;
text-align: right;
margin-right: 6px;
white-space: initial !important;
}
.ant-form-item-label{
white-space: initial !important;
}
.bidContent .ant-tabs-content-holder{
margin-top: 0;
}
.bidContent .ant-table-pagination.ant-pagination{
margin: 16px 0;
}
.whiteBg{
background: #fff;
}
.mb16{
margin-bottom: 16px;
text-align: right;
}
.pt16{
padding-top: 16px;
}
.tableTop .ant-table-wrapper{
clear: none !important;
}
.relative{
position: relative;
}
.relative .show-left{
position: absolute;
left: 0;
top: 0;
bottom: 0;
}
.ant-table-wrapper{
clear: none;
}
.ant-card-body::after{
clear: none;
}
.ant-table-wrapper::after{
clear: none;
}
.ant-spin-blur{
clear: none;
}
.pro-list .ant-pro-table-list-toolbar-container{
height: 0;
padding: 16px 0 0 0;
}
.searchH .ant-pro-table-search{
margin-bottom: 0;
padding: 0 !important;
}
.proSearch .ant-pro-table-search{
padding: 0;
margin: 0;
}
.searchH .ant-table-tbody .ant-btn-primary{
background: none;
border: none;
color: #1890ff;
text-shadow: none;
box-shadow: none;
letter-spacing: -2px;
}
.table-btn .ant-btn-primary{
background: none;
border-color: none;
text-shadow: none;
box-shadow: none;
border: none;
color: #1890ff !important;
}
.mb8{
margin-bottom: 8px;
}
.tab-mb10 .ant-tabs-nav{
margin-bottom: 10px;
}
.end{
background: #fff;
margin-top: 24px;
}
.end .red-font{
color: #ff0000;
font-size: 13px;
}
.end .mtb16{
margin: 16px 0;
}
.right-btn{
text-align: right;
margin-right: 16px;
padding-top: 16px;
}
.right-add{
text-align: right;
margin-bottom: 16px;
}
.tip{
font-size: 12px;
color: #999;
}
.white-bg{
background: #fff;
}
.white-bg .ant-empty-normal{
margin: 0;
padding: 32px 0;
}
.white-bg .tips{
padding: 16px 24px;
}
.white-bg .tips p{
margin-bottom: 0;
font-size: 13px;
}
.h40{
height: 40px;
}
.p0{
padding: 0;
}
.h48 .ant-collapse-header{
height: 48px !important;
}
.pro-list .ant-pro-table-list-toolbar{
height: 0;
}
.pro-list .ant-pro-list-row{
padding: 0 !important;
}
.pro-list .pro-type{
width: 40px;
height: 40px;
line-height: 40px;
color: #fff;
font-weight: 700;
font-size: 16px;
border-radius: 50px;
background: #f87f7f;
text-align: center;
}
.pro-list .ant-list-item-meta-content{
line-height: 40px;
}
.checkStyle .ant-checkbox-inner{
display: inline-block;
}
.m0 .ant-tabs-tab{
margin-right: 0 !important;
margin-left: 2px !important;
}
.configure-table a{
margin-right: 15px;
}
.configure-table button{
padding: 0;
margin-right: 15px;
}
.display-cancel{
display: none;
}
.deploy-form .ant-row{
position: relative;
width: 100%;
}
.deploy-form .ant-form-item-label{
width: 160px;
left: 0;
}
.deploy-form .ant-form-item-control{
left: 160px;
top: -32px;
}
.deploy-form .l70 .ant-form-item-control{
left: 70px;
}
.tips{
color: #bf241f;
span{
cursor: pointer;
color: blue;
text-decoration:underline;
}
}
.btnBox{
text-align: center;
.last{
margin-right: 20px;
}
}
.p10{
tr{
td{
padding: 8px 12px;
}
}
}
.ml50{
margin-left: 50px;
}
.tab-reasult .ant-tabs-nav{
margin-bottom: 0;
}
.tab-reasult .ant-pro-table-list-toolbar-container{
padding-top: 0;
}
.subject{
margin-right: 30px;
}
.subject span{
color: #999;
margin-left: 6px;
}
.tableW{
width: 50%;
float: left;
}
.mt20{
margin-top: 20px;
}
.mt20::after{
content: "";
clear: both;
display: block;
}
.mb20{
margin-bottom: 20px;
}
.mt10{
margin-top: 10px;
}
.title-block{
.contain{
width: 25%;
display: inline-block;
border-left: 1px solid #dadada;
box-sizing: border-box;
padding: 5px 15px;
div{
color: #b30000;
font-weight: 700;
font-size: 18px;
height: 40px;
}
.name{
font-size: 13px;
font-weight: normal;
color: #333;
padding: 0;
}
p{
margin-bottom: 0;
}
span{
color: #1890ff;
margin-right: 5px;
}
}
.contain:first-child{
border-left: none;
vertical-align: bottom;
}
}
.mb10{
margin-bottom: 10px;
.ant-card-body{
padding: 18px 24px;
}
}
.pt0 .ant-card-body{
padding-top: 0;
}
.cardH{
height: calc(100vh - 76px);
overflow: hidden;
}
.left-btn{
width: 10%;
display: inline-block;
}
.right-main{
width: 90%;
height: calc(100vh - 172px);
overflow: auto;
display: inline-block;
vertical-align: top;
border-left: 1px solid #ececec;
padding-left: 20px;
.form-title{
border: none;
height: 50px;
}
.remarks{
border: none;
}
input.form-title::-webkit-input-placeholder {
color: #333;
font-size: 18px;
}
.ant-form-horizontal .ant-form-item-label{
width: 80px;
}
.ant-form-item-control-input{
width: 400px;
}
}
.form-width{
.ant-form-horizontal .ant-form-item-label{
width: 80px;
}
.ant-form-item-control-input{
width: 400px;
}
}
.cardH .block{
margin-top: 30px;
p{
margin-bottom: 0;
}
.ant-radio-wrapper{
display: block;
margin-top: 10px;
}
.ant-checkbox-wrapper{
display: flex;
margin-top: 10px;
}
.ant-checkbox-wrapper + .ant-checkbox-wrapper{
margin-left: 0;
}
.radio{
color: #1890ff;
border: 1px solid #1890ff;
font-size: 8px;
margin-left: 8px;
border-radius: 6px;
padding: 0px 2px;
}
.check{
color: #ff5200;
border: 1px solid #ff5200;
font-size: 8px;
margin-left: 8px;
border-radius: 6px;
padding: 0px 2px;
}
}
::-webkit-scrollbar-track-piece { //滚动条凹槽的颜色,还可以设置边框属性
background-color:#f8f8f8;
}
::-webkit-scrollbar {//滚动条的宽度
width:6px;
height:6px;
}
::-webkit-scrollbar-thumb {//滚动条的设置
background-color:#dddddd;
background-clip:padding-box;
min-height:28px;
}
::-webkit-scrollbar-thumb:hover {
background-color:#bbb;
}
.add-option{
margin-top: 10px;
}
.width100{
width: 70px;
display: inline-block;
}
.input-style{
height: 35px;
border: 1px solid #dadada;
border-radius: 5px;
width: 220px;
}
.answer-bg{
background-color: #fff;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
z-index: 100;
overflow: auto;
padding-bottom: 30px;
.center-main{
width: 60%;
margin: 0 auto;
}
.answer-tit{
text-align: center;
font-weight: 500;
font-size: 20px;
padding: 20px 0;
}
.gray{
color: #666;
}
}
.model-container{
.ant-modal-body{
padding: 0;
}
.model-time{
margin-left: 300px;
}
.model-title{
input[type='text']{
text-align: center;
margin-top: 30px;
font-size: 20px;
color: #b30000;
}
}
.remarks{
padding: 0 30px;
text-indent: 2em;
resize: none;
margin-top: 16px;
}
}

25
src/assets/logo.svg Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 115.9 87.3" style="enable-background:new 0 0 115.9 87.3;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<g id="图层_1-2">
<path class="st0" d="M111.5,33c-5.8-5.9-15.3-5.9-21.2-0.1c0,0-0.1,0.1-0.1,0.1l-3.7,3.7L81,31.1l-7,7l5.5,5.5L74,49.2l7,7
l5.6-5.5l3.7,3.7c5.9,5.9,15.4,5.9,21.3,0C117.4,48.4,117.4,38.9,111.5,33L111.5,33 M104.5,47.3c-2,2-5.3,2-7.3,0c0,0,0,0,0,0
l-3.7-3.7l3.7-3.6c2-2,5.3-2,7.3,0C106.5,42,106.5,45.3,104.5,47.3"/>
<path class="st0" d="M0,43.7c-0.1,8.3,6.6,15,14.9,15.1c4,0,7.9-1.6,10.8-4.5l3.7-3.7l5.6,5.5l7-7l-5.6-5.5l5.6-5.5l-7-7l-5.5,5.5
L25.7,33c-5.8-5.9-15.3-6-21.2-0.1C1.6,35.7,0,39.6,0,43.7 M9.9,43.7c0-2.9,2.4-5.2,5.2-5.2c1.4,0,2.7,0.6,3.6,1.5l3.7,3.7
l-3.7,3.7c-2,2-5.3,2-7.3,0C10.4,46.3,9.9,45,9.9,43.7"/>
<path class="st0" d="M64.9,43.7l18-18c5.9-5.9,5.9-15.4,0-21.3s-15.4-5.9-21.3,0L58,8.1l-3.7-3.7c-5.9-5.9-15.4-5.9-21.3,0
s-5.9,15.4,0,21.3l0,0l18,18l-18,18c-5.9,5.9-5.8,15.4,0,21.3s15.4,5.8,21.3,0l3.7-3.7c0,0,1.3,1.4,3.7,3.7
c5.9,5.9,15.4,5.9,21.3,0c5.9-5.9,5.9-15.4,0-21.3L64.9,43.7 M40,18.7c-2.1-2-2.2-5.2-0.3-7.3c2-2.1,5.2-2.2,7.3-0.3
c0.1,0.1,0.2,0.2,0.3,0.3c1.9,2,3.7,3.6,3.7,3.6l-5.5,5.5l7,7L58,22l5.5,5.5l7-7L64.9,15c0,0,1.7-1.7,3.7-3.7
c2.1-2,5.4-1.8,7.3,0.3c1.9,2,1.9,5.1,0,7.1l-18,18C57.9,36.7,42.1,20.8,40,18.7 M75.9,75.9c-2,2-5.3,2-7.3,0
c-1.9-2-3.7-3.7-3.7-3.7l5.6-5.5l-7-7L58,65.3l-5.5-5.5l-7,7l5.5,5.5l-3.7,3.7c-2,2-5.3,2-7.3,0c-2-2-2-5.3,0-7.3l0,0
c2.1-2.1,18-18,18-18l18,18C78,70.6,78,73.9,75.9,75.9"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

6
src/assets/lq_style.less Normal file
View File

@ -0,0 +1,6 @@
@import '~antd/es/style/themes/default.less';
.form-style .ant-select-selection-placeholder{
color: #333;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
src/assets/monitor/left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Some files were not shown because too many files have changed in this diff Show More