Compare commits
112 Commits
034e5b87a7
...
prod
Author | SHA1 | Date | |
---|---|---|---|
a8d8a76fd2 | |||
a661d4f24c | |||
118b1820cf | |||
f44904a5f1 | |||
8326c3110f | |||
fa5dc0e7ac | |||
6bce3c3dea | |||
33de0ea8eb | |||
0233c59e32 | |||
b9bad1c006 | |||
1cc9186022 | |||
01678fda6a | |||
e706540fe3 | |||
55090acb64 | |||
9173e02471 | |||
7a9a648d9a | |||
92d5fefc26 | |||
5199f104b9 | |||
a716991576 | |||
bb7fa6f71e | |||
1a7ba72978 | |||
e4d1be276b | |||
f3d0db70f8 | |||
ee88d9ea09 | |||
604d1b6da2 | |||
3aa5c53149 | |||
55b96c059e | |||
84204a59a3 | |||
a6c915ce04 | |||
4ad8c2e20c | |||
5e86cb9b7d | |||
ad1ca2d429 | |||
baea1dc7ab | |||
71f18458d6 | |||
86f0f21f86 | |||
0eeab2aadf | |||
ede1b40039 | |||
7b9e3a52f0 | |||
054ecd92a1 | |||
3463845b13 | |||
0a0477977f | |||
fcf810ed7a | |||
ce68cca915 | |||
89e88a957f | |||
c159cda767 | |||
0b3652ff70 | |||
9cc4ce105e | |||
9212fb31a7 | |||
7a7a40b13e | |||
7657697d34 | |||
e7bbe2f1ca | |||
177fcd5f05 | |||
f030b825aa | |||
efb32a5367 | |||
1ed47f0ff3 | |||
7a72c1a4a2 | |||
a8f5c86ce9 | |||
18ad351010 | |||
0b1233339c | |||
d45b3cccb8 | |||
c6efc08650 | |||
e79c6b1ed3 | |||
dd6aafde0a | |||
d3bc55ea18 | |||
14abcc646b | |||
c2933c68a7 | |||
eaac167036 | |||
b9e9d6e855 | |||
d08bdea8ec | |||
6aed3167b3 | |||
71a9cfafa4 | |||
e89c99d2ca | |||
fe7a195362 | |||
ccfe6b8f3e | |||
aade077977 | |||
3dc6d94d60 | |||
67fa422218 | |||
888af08666 | |||
e623855b21 | |||
7b9176dff5 | |||
81f4284b9c | |||
d51c0402ff | |||
de2012140e | |||
c93565ad9c | |||
019af8a7ae | |||
67ff23e048 | |||
0f9e37b1a8 | |||
d74f0cd354 | |||
348ff6fc2b | |||
3997e21d6c | |||
a4ed96f448 | |||
ed866615c6 | |||
508086c29b | |||
90c6d9dc69 | |||
275070a6ae | |||
7f49b7882c | |||
bb9d654d57 | |||
66912c4eb9 | |||
3671f6c81a | |||
48fb86cf84 | |||
51bd7ed5d8 | |||
e492c08eef | |||
8bf9f47d62 | |||
0edd267f78 | |||
e42f1a0b8c | |||
c2dd889c99 | |||
cd1779fffd | |||
9d092facd0 | |||
784c7c0783 | |||
fbea1c2c2a | |||
5bb201b272 | |||
e67d555685 |
2
drone/.gitignore
vendored
@ -45,3 +45,5 @@ nbdist/
|
||||
!*/build/*.java
|
||||
!*/build/*.html
|
||||
!*/build/*.xml
|
||||
|
||||
*.lck
|
||||
|
@ -10,9 +10,9 @@ spring:
|
||||
# username: drone
|
||||
# password: JXL@zzx79
|
||||
master:
|
||||
url: jdbc:mysql://192.168.110.126:3306/drone?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: root
|
||||
password: 123456
|
||||
url: jdbc:mysql://192.168.110.2:13386/drone?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: drone
|
||||
password: X2J5DSD25ykn8Hii
|
||||
# 从库数据源
|
||||
slave:
|
||||
# 从数据源开关/默认关闭
|
||||
@ -64,11 +64,11 @@ spring:
|
||||
config:
|
||||
multi-statement-allow: true
|
||||
|
||||
minio:
|
||||
endpoint: "http://zmkg.cqet.top:9999"
|
||||
access-key: "admin"
|
||||
secret-key: "12345678"
|
||||
role-arn: "arn:aws:s3:::drone-?/*"
|
||||
role-session-name: "anysession"
|
||||
region: "cn-chengdu"
|
||||
duration-seconds: 3600
|
||||
#minio:
|
||||
# endpoint: "http://zmkg.cqet.top:9999"
|
||||
# access-key: "admin"
|
||||
# secret-key: "12345678"
|
||||
# role-arn: "arn:aws:s3:::drone-?/*"
|
||||
# role-session-name: "anysession"
|
||||
# region: "cn-chengdu"
|
||||
# duration-seconds: 3600
|
||||
|
@ -6,9 +6,9 @@ spring:
|
||||
druid:
|
||||
# 主库数据源
|
||||
master:
|
||||
url: jdbc:mysql://192.168.110.199:3306/drone?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
url: jdbc:mysql://192.168.110.199:13386/drone?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
|
||||
username: drone
|
||||
password: WDDAELfaZaNZNYtP
|
||||
password: X2J5DSD25ykn8Hii
|
||||
# 从库数据源
|
||||
slave:
|
||||
# 从数据源开关/默认关闭
|
||||
|
@ -69,13 +69,13 @@ spring:
|
||||
# redis 配置
|
||||
redis:
|
||||
# 地址
|
||||
host: 192.168.110.126
|
||||
host: 192.168.110.2
|
||||
# 端口,默认为6379
|
||||
port: 6379
|
||||
port: 9287
|
||||
# 数据库索引
|
||||
database: 2
|
||||
database: 7
|
||||
# 密码
|
||||
password: 123456
|
||||
password: syar23rdsaagdrsa
|
||||
# 连接超时时间
|
||||
timeout: 10s
|
||||
lettuce:
|
||||
@ -131,9 +131,9 @@ xss:
|
||||
urlPatterns: /system/*,/monitor/*,/tool/*
|
||||
|
||||
mqtt:
|
||||
broker: tcp://zmkg.cqet.top:9995
|
||||
username: cory18600000000
|
||||
password: cory18600000000
|
||||
broker: tcp://192.168.110.2:1883
|
||||
username: atiandon
|
||||
password: atiandon
|
||||
topics:
|
||||
# 设备 > 云平台
|
||||
- thing/product/+/osd # 设备定频上报的属性
|
||||
@ -174,13 +174,15 @@ deploy:
|
||||
# duration-seconds: 3600
|
||||
|
||||
minio:
|
||||
endpoint: "http://192.168.110.126:9000"
|
||||
access-key: "root"
|
||||
secret-key: "root123456"
|
||||
role-arn: "arn:aws:s3:::drone-?/*"
|
||||
role-session-name: "anysession"
|
||||
endpoint: "xny.yj-3d.com:9000"
|
||||
accessKeyID: "minioadmin"
|
||||
secretAccessKey: "CQyj20200808!"
|
||||
bucketName: "cory-create"
|
||||
roleARN: "arn:aws:s3:::cory-create/*"
|
||||
roleSessionName: "anysession"
|
||||
region: "cn-chengdu"
|
||||
duration-seconds: 3600
|
||||
useSSL: true
|
||||
durationSeconds: 3600
|
||||
|
||||
|
||||
ai:
|
||||
|
@ -5,7 +5,11 @@ VITE_APP_TITLE = 新能源项目管理平台
|
||||
VITE_APP_ENV = 'development'
|
||||
|
||||
# 开发环境
|
||||
VITE_APP_BASE_API = 'http://192.168.110.6:8899'
|
||||
VITE_APP_BASE_API = 'http://192.168.110.119:8899'
|
||||
|
||||
# 无人机接口地址
|
||||
|
||||
VITE_APP_BASE_DRONE_API = 'http://192.168.110.8:9136'
|
||||
|
||||
# 应用访问路径 例如使用前缀 /admin/
|
||||
VITE_APP_CONTEXT_PATH = '/'
|
||||
|
@ -14,7 +14,7 @@ VITE_APP_MONITOR_ADMIN = '/admin/applications'
|
||||
VITE_APP_SNAILJOB_ADMIN = '/snail-job'
|
||||
|
||||
# 生产环境
|
||||
VITE_APP_BASE_API = 'http://192.168.110.5:8899'
|
||||
VITE_APP_BASE_API = 'http://192.168.110.2:8899'
|
||||
|
||||
# 是否在打包时开启压缩,支持 gzip 和 brotli
|
||||
VITE_BUILD_COMPRESS = gzip
|
||||
|
@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="renderer" content="webkit" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<title>新能源项目管理平台</title>
|
||||
<!--[if lt IE 11
|
||||
@ -209,6 +209,8 @@
|
||||
<div class="load_title">正在加载系统资源,请耐心等待</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="./src/assets/sdk/YJEarth.min.js"></script>
|
||||
<script src="./src/utils/reconnecting-websocket.js"></script>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -20,8 +20,10 @@
|
||||
"url": "https://gitee.com/JavaLionLi/plus-ui.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||
"@element-plus/icons-vue": "2.3.1",
|
||||
"@highlightjs/vue-plugin": "2.1.0",
|
||||
"@turf/turf": "^7.2.0",
|
||||
"@vueup/vue-quill": "1.2.0",
|
||||
"@vueuse/core": "11.3.0",
|
||||
"animate.css": "4.1.1",
|
||||
@ -33,21 +35,32 @@
|
||||
"echarts": "5.5.0",
|
||||
"element-plus": "2.8.8",
|
||||
"esbuild": "^0.25.0",
|
||||
"ezuikit-js": "^8.1.10",
|
||||
"file-saver": "2.0.5",
|
||||
"fuse.js": "7.0.0",
|
||||
"highlight.js": "11.9.0",
|
||||
"image-conversion": "2.1.1",
|
||||
"js-cookie": "3.0.5",
|
||||
"js-md5": "^0.8.3",
|
||||
"jsencrypt": "3.3.2",
|
||||
"jszip": "^3.10.1",
|
||||
"lodash": "^4.17.21",
|
||||
"md5": "^2.3.0",
|
||||
"mitt": "^3.0.1",
|
||||
"nprogress": "0.2.0",
|
||||
"ol": "^10.5.0",
|
||||
"pinia": "2.2.6",
|
||||
"screenfull": "6.0.2",
|
||||
"spark-md5": "^3.0.2",
|
||||
"vue": "3.5.13",
|
||||
"vue-cropper": "1.1.1",
|
||||
"vue-i18n": "10.0.5",
|
||||
"vue-json-pretty": "2.4.0",
|
||||
"vue-print-nb": "^1.7.5",
|
||||
"vue-router": "4.4.5",
|
||||
"vue-types": "5.1.3",
|
||||
"vue3-print-nb": "^0.1.4",
|
||||
"vue3-scroll-seamless": "^1.0.6",
|
||||
"vxe-table": "4.5.22"
|
||||
},
|
||||
"devDependencies": {
|
||||
@ -70,6 +83,7 @@
|
||||
"fast-glob": "3.3.2",
|
||||
"globals": "15.12.0",
|
||||
"postcss": "8.4.36",
|
||||
"postcss-px-to-viewport": "^1.1.1",
|
||||
"prettier": "3.2.5",
|
||||
"sass": "1.72.0",
|
||||
"typescript": "5.7.2",
|
||||
|
@ -1,4 +1,4 @@
|
||||
<template>
|
||||
<template loading="true">
|
||||
<el-config-provider :locale="appStore.locale" :size="appStore.size">
|
||||
<router-view />
|
||||
</el-config-provider>
|
||||
@ -8,13 +8,33 @@
|
||||
import useSettingsStore from '@/store/modules/settings';
|
||||
import { handleThemeStyle } from '@/utils/theme';
|
||||
import useAppStore from '@/store/modules/app';
|
||||
|
||||
import { getProjectTeam } from './utils/projectTeam';
|
||||
const appStore = useAppStore();
|
||||
|
||||
onMounted(() => {
|
||||
nextTick(() => {
|
||||
// 初始化主题样式
|
||||
handleThemeStyle(useSettingsStore().theme);
|
||||
getProjectTeam();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<style>
|
||||
* {
|
||||
-webkit-touch-callout: none; /*系统默认菜单被禁用*/
|
||||
-webkit-user-select: none; /*webkit浏览器*/
|
||||
-khtml-user-select: none; /*早期浏览器*/
|
||||
-moz-user-select: none; /*火狐*/
|
||||
-ms-user-select: none; /*IE10*/
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
input {
|
||||
-webkit-user-select: auto; /*webkit浏览器*/
|
||||
user-select: auto;
|
||||
}
|
||||
textarea {
|
||||
user-select: auto;
|
||||
-webkit-user-select: auto; /*webkit浏览器*/
|
||||
}
|
||||
</style>
|
||||
|
430
plus-ui/src/api/air/index.ts
Normal file
@ -0,0 +1,430 @@
|
||||
import { request } from '../../utils/requset2.js';
|
||||
|
||||
// 开关空调
|
||||
export function airConditionerModeSwitch(data) {
|
||||
return request({
|
||||
url: '/dj/remote/debug/airConditionerModeSwitch',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 生成航线文件
|
||||
export function waypoint(data) {
|
||||
return request({
|
||||
url: '/dj/router/waypoint',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 创建任务 /dj/task/create
|
||||
export function taskCreate(data) {
|
||||
return request({
|
||||
url: '/dj/missions/create',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 下发任务 /dj/flightTaskPrepare
|
||||
export function flightTaskPrepare(data) {
|
||||
return request({
|
||||
url: '/dj/flightTaskPrepare',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 执行任务
|
||||
export function flightTaskExecute(data) {
|
||||
return request({
|
||||
url: '/dj/flightTaskExecute',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 取消任务
|
||||
export function flightTaskUndo(data) {
|
||||
return request({
|
||||
url: '/dj/flightTaskUndo',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 恢复航线
|
||||
export function flightTaskRecovery(data) {
|
||||
return request({
|
||||
url: '/dj/flightTaskRecovery',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 恢复航线
|
||||
export function flightTaskPause(data) {
|
||||
return request({
|
||||
url: '/dj/flightTaskPause',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 一键返航
|
||||
export function returnHome(data) {
|
||||
return request({
|
||||
url: '/dj/returnHome',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 无参飞行指令
|
||||
export function noDataFlight(data) {
|
||||
return request({
|
||||
url: '/dj/cmdFly/noDataFlight',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 有参飞行指令
|
||||
export function hasDataFlight(data) {
|
||||
return request({
|
||||
url: '/dj/cmdFly/hasDataFlight',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 开启指令
|
||||
export function drcModeEnte(data) {
|
||||
return request({
|
||||
url: '/dj/cmdFly/drcModeEnter',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 查询航线文件信息列表
|
||||
export function listPaths(query) {
|
||||
return request({
|
||||
url: '/system/paths/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
|
||||
// 删除航线文件信息
|
||||
export function delPaths(id) {
|
||||
return request({
|
||||
url: '/system/paths/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
// 查询任务列表
|
||||
export function listTasks(query) {
|
||||
return request({
|
||||
url: '/system/tasks/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
|
||||
// 查询无人机任务列表
|
||||
export function listMissions(query) {
|
||||
return request({
|
||||
url: '/system/missions/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
|
||||
// 删除无人机任务
|
||||
export function delMissions(id) {
|
||||
return request({
|
||||
url: '/system/missions/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
// 远程调试
|
||||
export function remoteDebug(data) {
|
||||
return request({
|
||||
url: '/dj/remote/debug/service',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 增强图传
|
||||
export function sdrWorkmodeSwitch(data) {
|
||||
return request({
|
||||
url: '/dj/remote/debug/sdrWorkmodeSwitch',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 查询视频设备列表
|
||||
export function listInfo(query) {
|
||||
return request({
|
||||
url: '/system/info/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
// 登录
|
||||
export function login(data) {
|
||||
return request({
|
||||
url: '/login',
|
||||
headers: {
|
||||
isToken: false,
|
||||
repeatSubmit: false
|
||||
},
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
// 获取文件
|
||||
export function getFileByflightId(data) {
|
||||
return request({
|
||||
url: '/dj/getFileByflightId',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 机场列表
|
||||
export function droneList(data) {
|
||||
return request({
|
||||
url: '/system/drone/list',
|
||||
method: 'get',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 监听网关
|
||||
export function gatewaysAdd(data) {
|
||||
return request({
|
||||
url: '/dj/gateways/add',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 关闭网关
|
||||
export function gatewaysRemove(data) {
|
||||
return request({
|
||||
url: '/dj/gateways/remove',
|
||||
method: 'delete',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 添加航线
|
||||
export function routerAdd(data) {
|
||||
return request({
|
||||
url: '/dj/router/add',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 复制航线 /dj/router/copy/{id}
|
||||
export function routerCopy(id) {
|
||||
return request({
|
||||
url: '/dj/router/copy/' + id,
|
||||
method: 'post'
|
||||
});
|
||||
}
|
||||
// 重命名文件
|
||||
|
||||
export function routerRename(data) {
|
||||
return request({
|
||||
url: '/dj/router/rename',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 获取文件
|
||||
export function takeoffList(data) {
|
||||
return request({
|
||||
url: '/system/takeoff/list',
|
||||
method: 'get',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 切换直播流
|
||||
export function liveChange(data) {
|
||||
return request({
|
||||
url: '/dj/live/change',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 设置清晰度 /dj/live/quality
|
||||
export function liveChangeQuality(data) {
|
||||
return request({
|
||||
url: '/dj/live/quality',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 开启直播
|
||||
export function liveStart(data) {
|
||||
return request({
|
||||
url: '/dj/live/start',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 关闭直播
|
||||
export function liveStop(data) {
|
||||
return request({
|
||||
url: '/dj/live/stop',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 静音模式开关
|
||||
export function propertySet(data) {
|
||||
return request({
|
||||
url: '/property/set',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 直播相机切换
|
||||
export function cameraChange(data) {
|
||||
return request({
|
||||
url: '/dj/live/camera/change',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 新建计划
|
||||
export function taskAdd(data) {
|
||||
return request({
|
||||
url: '/dj/task/add',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 计划列表
|
||||
export function taskList(data) {
|
||||
return request({
|
||||
url: '/dj/task/list',
|
||||
method: 'get',
|
||||
params: data
|
||||
});
|
||||
}
|
||||
// 新暂停
|
||||
export function flightTaskPauseNew(data) {
|
||||
return request({
|
||||
url: '/dj/task/flightTaskPause',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 新恢复
|
||||
export function flightTaskRecoveryNew(data) {
|
||||
return request({
|
||||
url: '/dj/task/flightTaskRecovery',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 取消任务
|
||||
export function flightTaskUndoNew(data) {
|
||||
return request({
|
||||
url: '/dj/task/flightTaskUndo',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 一键返航 post
|
||||
export function returnHomeNew(data) {
|
||||
return request({
|
||||
url: '/dj/task/returnHome',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 删除
|
||||
export function delMissionsNew(id) {
|
||||
return request({
|
||||
url: '/system/new/missions/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
// drc飞行控制 /dj/cmdFly/droneControl
|
||||
export function droneControl(data) {
|
||||
return request({
|
||||
url: '/dj/cmdFly/droneControl',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// drc急停 /dj/cmdFly/droneEmergencyStop
|
||||
export function droneEmergencyStop(data) {
|
||||
return request({
|
||||
url: '/dj/cmdFly/droneEmergencyStop',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 取消返航 /dj/returnHomeCancel
|
||||
export function returnHomeCancel(data) {
|
||||
return request({
|
||||
url: '/dj/returnHomeCancel',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// 导入航线
|
||||
export function returnImport(data) {
|
||||
return request({
|
||||
url: '/dj/router/import',
|
||||
method: 'post',
|
||||
data,
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// DRC心跳
|
||||
export function heartBeat(data) {
|
||||
return request({
|
||||
url: '/dj/cmdFly/heartBeat',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// AI识别
|
||||
export function aiInfo(data) {
|
||||
return request({
|
||||
url: '/minio/ai/info',
|
||||
method: 'get',
|
||||
params: data
|
||||
});
|
||||
}
|
||||
|
||||
// 当前最新任务
|
||||
export function getLatest(data) {
|
||||
return request({
|
||||
url: '/dj/task/getLatest',
|
||||
method: 'get',
|
||||
params: data
|
||||
});
|
||||
}
|
118
plus-ui/src/api/fileMangement/index.ts
Normal file
@ -0,0 +1,118 @@
|
||||
import { request } from '../../utils/requset2';
|
||||
// 获取文件列表
|
||||
export function getFiles(data) {
|
||||
return request({
|
||||
url: '/minio/file',
|
||||
method: 'get',
|
||||
data,
|
||||
params: data
|
||||
});
|
||||
}
|
||||
// 获取ai文件列表
|
||||
export function getAiFiles(data) {
|
||||
return request({
|
||||
url: '/minio/ai/file',
|
||||
method: 'get',
|
||||
data,
|
||||
params: data
|
||||
});
|
||||
}
|
||||
// 获取文件信息
|
||||
export function getInfo(data) {
|
||||
return request({
|
||||
url: '/minio/info',
|
||||
method: 'get',
|
||||
data,
|
||||
params: data,
|
||||
timeout: 30000
|
||||
});
|
||||
}
|
||||
// 获取ai文件信息
|
||||
export function getAiInfo(data) {
|
||||
return request({
|
||||
url: '/minio/ai/info',
|
||||
method: 'get',
|
||||
data,
|
||||
params: data,
|
||||
timeout: 30000
|
||||
});
|
||||
}
|
||||
// 下载文件
|
||||
export function fileDownload(params, onProgress) {
|
||||
return request({
|
||||
url: '/minio/download',
|
||||
method: 'post',
|
||||
params,
|
||||
responseType: 'blob',
|
||||
timeout: 0,
|
||||
// header: {
|
||||
// "Content-Length": Buffer.byteLength(JSON.stringify(params)),
|
||||
// },
|
||||
onDownloadProgress: (progressEvent) => {
|
||||
if (onProgress && typeof onProgress === 'function') {
|
||||
const { loaded, total } = progressEvent;
|
||||
console.log('progressEvent', progressEvent);
|
||||
const percentage = Math.round((loaded / total) * 100); // 计算百分比
|
||||
onProgress(percentage); // 调用传入的 onProgress 回调函数
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
// 删除文件
|
||||
export function deleteFile(data) {
|
||||
return request({
|
||||
url: '/minio/deleteBatch',
|
||||
method: 'delete',
|
||||
data,
|
||||
timeout: 0
|
||||
});
|
||||
}
|
||||
// 删除ai文件
|
||||
export function deleteAiFile(data) {
|
||||
return request({
|
||||
url: '/minio/ai/deleteBatch',
|
||||
method: 'delete',
|
||||
data,
|
||||
timeout: 0
|
||||
});
|
||||
}
|
||||
// 批量下载文件或目录
|
||||
export function downloadBatch(data, onProgress) {
|
||||
return request({
|
||||
url: '/minio/downloadBatch',
|
||||
method: 'post',
|
||||
responseType: 'blob',
|
||||
data,
|
||||
timeout: 0,
|
||||
onDownloadProgress: (progressEvent) => {
|
||||
if (onProgress && typeof onProgress === 'function') {
|
||||
const { loaded, total } = progressEvent;
|
||||
console.log('progressEvent', progressEvent);
|
||||
const percentage = Math.round((loaded / total) * 100); // 计算百分比
|
||||
onProgress(percentage); // 调用传入的 onProgress 回调函数
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 获取某个目录下面的所有文件的URL列表
|
||||
export function getUrlList(data) {
|
||||
return request({
|
||||
url: '/minio/urlList',
|
||||
method: 'post',
|
||||
data,
|
||||
params: data,
|
||||
timeout: 0
|
||||
});
|
||||
}
|
||||
// 获取某个目录下面的所有文件的URL列表
|
||||
|
||||
export function getAiUrlList(data) {
|
||||
return request({
|
||||
url: '/minio/ai/urlList',
|
||||
method: 'post',
|
||||
data,
|
||||
params: data,
|
||||
timeout: 0
|
||||
});
|
||||
}
|
136
plus-ui/src/api/gis/index.ts
Normal file
@ -0,0 +1,136 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import {
|
||||
QualityVO,
|
||||
Query,
|
||||
ConstructionUserVO,
|
||||
MachineryrVO,
|
||||
MaterialsVO,
|
||||
projectNewsVO,
|
||||
safetyInspectionVO,
|
||||
projectNewsDetailVO,
|
||||
weatherVO,
|
||||
safetyDayVO
|
||||
} from './type';
|
||||
/**
|
||||
* 查询大屏质量信息
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const getQualityList = (query?: Query): AxiosPromise<QualityVO> => {
|
||||
return request({
|
||||
url: '/quality/qualityInspection/gis',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询大屏项目新闻列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const getprojectNewsList = (query?: Query): AxiosPromise<projectNewsVO[]> => {
|
||||
return request({
|
||||
url: '/project/projectNews/list/gis',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取项目新闻详细信息
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const getprojectNewsDetailList = (id: number): AxiosPromise<projectNewsDetailVO> => {
|
||||
return request({
|
||||
url: '/project/projectNews/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询大屏安全信息
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const getsafetyInspectionList = (query?: Query): AxiosPromise<safetyInspectionVO> => {
|
||||
return request({
|
||||
url: '/safety/safetyInspection/gis',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询施工人员大屏数据
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const getConstructionUserList = (query?: Query): AxiosPromise<ConstructionUserVO> => {
|
||||
return request({
|
||||
url: '/project/constructionUser/gis',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询大屏机械列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const getMachineryrList = (query?: Query): AxiosPromise<MachineryrVO[]> => {
|
||||
return request({
|
||||
url: '/machinery/machinery/list/gis',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询大屏材料信息
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const getMaterialsList = (query?: Query): AxiosPromise<MaterialsVO[]> => {
|
||||
return request({
|
||||
url: '/materials/materials/list/gis',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询项目天气
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const getweatherList = (id?: string): AxiosPromise<weatherVO[]> => {
|
||||
return request({
|
||||
url: '/project/project/weather/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询项目安全天数
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const getSafetyDay = (id?: string): AxiosPromise<safetyDayVO> => {
|
||||
return request({
|
||||
url: '/project/project/safetyDay/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
92
plus-ui/src/api/gis/type.ts
Normal file
@ -0,0 +1,92 @@
|
||||
export interface QualityVO {
|
||||
count: number;
|
||||
correctSituation: string;
|
||||
list: Qualitylist[];
|
||||
}
|
||||
export interface Qualitylist {
|
||||
id: number;
|
||||
inspectionTypeLabel: string;
|
||||
inspectionHeadline: string;
|
||||
createTime: string;
|
||||
}
|
||||
|
||||
export interface Query {
|
||||
projectId: string | number;
|
||||
pageSize?: string | number;
|
||||
}
|
||||
|
||||
export interface ConstructionUserVO {
|
||||
peopleCount: number;
|
||||
attendanceCount: number;
|
||||
attendanceRate: string;
|
||||
}
|
||||
|
||||
export interface MachineryrVO {
|
||||
//机械名称
|
||||
machineryName: string;
|
||||
//机械数量
|
||||
machineryCount: string;
|
||||
}
|
||||
|
||||
export interface MaterialsVO {
|
||||
//材料名称
|
||||
materialsName: string;
|
||||
//计量单位
|
||||
weightId: string;
|
||||
//预计材料数量
|
||||
quantityCount: string;
|
||||
//入库数量
|
||||
putCount: string;
|
||||
//出库数量
|
||||
outCount: string;
|
||||
value: number;
|
||||
}
|
||||
|
||||
export interface projectNewsVO {
|
||||
id: string;
|
||||
title: string;
|
||||
|
||||
show?: boolean;
|
||||
}
|
||||
|
||||
export interface projectNewsDetailVO {
|
||||
id: string;
|
||||
title: string;
|
||||
content: string;
|
||||
file: string;
|
||||
}
|
||||
|
||||
export interface safetyInspectionVO {
|
||||
//站班会总数
|
||||
teamMeetingCount: string;
|
||||
//安全巡检总数
|
||||
safetyInspectionCount: string;
|
||||
//整改情况
|
||||
correctSituationCount: string;
|
||||
//站班会列表
|
||||
teamMeetingList: safetyInspectionlist[];
|
||||
}
|
||||
|
||||
export interface safetyInspectionlist {
|
||||
id: string;
|
||||
teamName: string;
|
||||
name: string;
|
||||
meetingDate: string;
|
||||
}
|
||||
|
||||
export interface weatherVO {
|
||||
date: string;
|
||||
week: string;
|
||||
tempMax: string;
|
||||
tempMin: string;
|
||||
dayStatus: string;
|
||||
dayIcon: string;
|
||||
nightStatus: string;
|
||||
nightIcon: string;
|
||||
sunRise: string;
|
||||
sunSet: string;
|
||||
}
|
||||
|
||||
export interface safetyDayVO {
|
||||
safetyDay: string;
|
||||
}
|
@ -45,7 +45,8 @@ export interface MachineryForm extends BaseEntity {
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
principalPhone: string | number;
|
||||
provider: string | number;
|
||||
/**
|
||||
* 机械名称
|
||||
*/
|
||||
@ -82,7 +83,8 @@ export interface MachineryQuery extends PageQuery {
|
||||
* 机械名称
|
||||
*/
|
||||
machineryName?: string;
|
||||
|
||||
principalPhone: string | number;
|
||||
provider: string | number;
|
||||
/**
|
||||
* 机械型号
|
||||
*/
|
||||
|
@ -45,6 +45,8 @@ export interface CompanyForm extends BaseEntity {
|
||||
* 公司名称
|
||||
*/
|
||||
companyName?: string;
|
||||
principalPhone?: string;
|
||||
principal?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
@ -72,6 +74,8 @@ export interface CompanyQuery extends PageQuery {
|
||||
* 公司名称
|
||||
*/
|
||||
companyName?: string;
|
||||
principalPhone?: string;
|
||||
principal?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
|
74
plus-ui/src/api/other/devicePreset/index.ts
Normal file
@ -0,0 +1,74 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { DevicePresetVO, DevicePresetForm, DevicePresetQuery } from '@/api/other/devicePreset/types';
|
||||
|
||||
/**
|
||||
* 查询摄像头预置位列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listDevicePreset = (query?: DevicePresetQuery): AxiosPromise<DevicePresetVO[]> => {
|
||||
return request({
|
||||
url: '/other/devicePreset/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询摄像头预置位详细
|
||||
* @param id
|
||||
*/
|
||||
export const getDevicePreset = (id: string | number): AxiosPromise<DevicePresetVO> => {
|
||||
return request({
|
||||
url: '/other/devicePreset/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增摄像头预置位
|
||||
* @param data
|
||||
*/
|
||||
export const addDevicePreset = (data: DevicePresetForm) => {
|
||||
return request({
|
||||
url: '/other/devicePreset',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改摄像头预置位
|
||||
* @param data
|
||||
*/
|
||||
export const updateDevicePreset = (data: DevicePresetForm) => {
|
||||
return request({
|
||||
url: '/other/devicePreset',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除摄像头预置位
|
||||
* @param id
|
||||
*/
|
||||
export const delDevicePreset = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/other/devicePreset/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 调用摄像头预置位
|
||||
* @param data
|
||||
*/
|
||||
export const callDevicePreset = (id: number | string) => {
|
||||
return request({
|
||||
url: '/other/devicePreset/move/' + id,
|
||||
method: 'put'
|
||||
});
|
||||
};
|
80
plus-ui/src/api/other/devicePreset/types.ts
Normal file
@ -0,0 +1,80 @@
|
||||
export interface DevicePresetVO {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
deviceSerial: string;
|
||||
|
||||
/**
|
||||
* 通道号
|
||||
*/
|
||||
channelNo: number;
|
||||
|
||||
/**
|
||||
* 预置点序号
|
||||
*/
|
||||
index: number;
|
||||
|
||||
/**
|
||||
* 预置点
|
||||
*/
|
||||
name: string;
|
||||
}
|
||||
|
||||
export interface DevicePresetForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
deviceSerial?: string;
|
||||
|
||||
/**
|
||||
* 通道号
|
||||
*/
|
||||
channelNo?: number | string;
|
||||
|
||||
/**
|
||||
* 预置点序号
|
||||
*/
|
||||
index?: number;
|
||||
|
||||
/**
|
||||
* 预置点
|
||||
*/
|
||||
name?: string;
|
||||
}
|
||||
|
||||
export interface DevicePresetQuery extends PageQuery {
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
deviceSerial?: string;
|
||||
|
||||
/**
|
||||
* 通道号
|
||||
*/
|
||||
channelNo?: number;
|
||||
|
||||
/**
|
||||
* 预置点序号
|
||||
*/
|
||||
index?: number;
|
||||
|
||||
/**
|
||||
* 预置点
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
91
plus-ui/src/api/other/ys7Device/index.ts
Normal file
@ -0,0 +1,91 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { Ys7DeviceVO, Ys7DeviceForm, Ys7DeviceQuery } from '@/api/other/ys7Device/types';
|
||||
|
||||
/**
|
||||
* 查询萤石摄像头列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listYs7Device = (query?: Ys7DeviceQuery): AxiosPromise<Ys7DeviceVO[]> => {
|
||||
return request({
|
||||
url: '/other/ys7Device/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询萤石摄像头详细
|
||||
* @param id
|
||||
*/
|
||||
export const getYs7Device = (id: string | number): AxiosPromise<Ys7DeviceVO> => {
|
||||
return request({
|
||||
url: '/other/ys7Device/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增萤石摄像头
|
||||
* @param data
|
||||
*/
|
||||
export const addYs7Device = (data: Ys7DeviceForm) => {
|
||||
return request({
|
||||
url: '/other/ys7Device',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改萤石摄像头
|
||||
* @param data
|
||||
*/
|
||||
export const updateYs7Device = (data: Ys7DeviceForm) => {
|
||||
return request({
|
||||
url: '/other/ys7Device',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除萤石摄像头
|
||||
* @param id
|
||||
*/
|
||||
export const delYs7Device = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/other/ys7Device/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/// 修改加密状态
|
||||
export const toggleEncrypt = (data?: any): AxiosPromise<{}> => {
|
||||
return request({
|
||||
url: '/other/ys7Device/video/encrypted',
|
||||
method: 'put',
|
||||
data
|
||||
});
|
||||
};
|
||||
|
||||
export const devicesLinkPro = (data: { id: string | number; projectId: string | number }): AxiosPromise<Ys7DeviceVO> => {
|
||||
return request({
|
||||
url: '/other/ys7Device/with/project',
|
||||
method: 'put',
|
||||
data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取 token
|
||||
* @param id
|
||||
*/
|
||||
export const getAccessToken = () => {
|
||||
return request({
|
||||
url: '/other/ys7Device/get/token',
|
||||
method: 'get'
|
||||
});
|
||||
};
|
131
plus-ui/src/api/other/ys7Device/types.ts
Normal file
@ -0,0 +1,131 @@
|
||||
export interface Ys7DeviceVO {
|
||||
id: any;
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId: string | number;
|
||||
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
deviceSerial: string;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
deviceName: string;
|
||||
|
||||
/**
|
||||
* 设备型号
|
||||
*/
|
||||
deviceType: string;
|
||||
|
||||
/**
|
||||
* 设备在线状态(0离线 1在线)
|
||||
*/
|
||||
status: number;
|
||||
|
||||
/**
|
||||
* 固件版本号
|
||||
*/
|
||||
deviceVersion: string;
|
||||
|
||||
/**
|
||||
* 设备添加时间
|
||||
*/
|
||||
deviceCreateTime: string;
|
||||
|
||||
/**
|
||||
* 视频加密(0关闭 1开启)
|
||||
*/
|
||||
videoEncrypted: string | number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
}
|
||||
|
||||
export interface Ys7DeviceForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
deviceSerial?: string;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
deviceName?: string;
|
||||
|
||||
/**
|
||||
* 设备型号
|
||||
*/
|
||||
deviceType?: string;
|
||||
|
||||
/**
|
||||
* 设备在线状态(0离线 1在线)
|
||||
*/
|
||||
status?: number;
|
||||
|
||||
/**
|
||||
* 固件版本号
|
||||
*/
|
||||
deviceVersion?: string;
|
||||
|
||||
/**
|
||||
* 视频加密(0关闭 1开启)
|
||||
*/
|
||||
videoEncrypted?: string | number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface Ys7DeviceQuery extends PageQuery {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
deviceSerial?: string;
|
||||
|
||||
/**
|
||||
* 设备名称
|
||||
*/
|
||||
deviceName?: string;
|
||||
|
||||
/**
|
||||
* 设备型号
|
||||
*/
|
||||
deviceType?: string;
|
||||
|
||||
/**
|
||||
* 设备在线状态(0离线 1在线)
|
||||
*/
|
||||
status?: number;
|
||||
|
||||
/**
|
||||
* 固件版本号
|
||||
*/
|
||||
deviceVersion?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
193
plus-ui/src/api/progress/plan/index.ts
Normal file
@ -0,0 +1,193 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import {
|
||||
ProgressCategoryVO,
|
||||
ProgressCategoryForm,
|
||||
ProgressCategoryQuery,
|
||||
ProgressPlanForm,
|
||||
lastTimeVo,
|
||||
workScheduleListVO,
|
||||
workScheduleListQuery,
|
||||
progressPlanDetailForm,
|
||||
pvModuleListQuery,
|
||||
pvModuleListVO
|
||||
} from '@/api/progress/plan/types';
|
||||
|
||||
/**
|
||||
* 查询进度类别列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listProgressCategory = (query?: ProgressCategoryQuery): AxiosPromise<ProgressCategoryVO[]> => {
|
||||
return request({
|
||||
url: '/progress/progressCategory/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询进度类别详细
|
||||
* @param id
|
||||
*/
|
||||
export const getProgressCategory = (id: string | number): AxiosPromise<ProgressCategoryVO> => {
|
||||
return request({
|
||||
url: '/progress/progressCategory/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增进度类别
|
||||
* @param data
|
||||
*/
|
||||
export const addProgressCategory = (data: ProgressCategoryForm) => {
|
||||
return request({
|
||||
url: '/progress/progressCategory',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改进度类别
|
||||
* @param data
|
||||
*/
|
||||
export const updateProgressCategory = (data: ProgressCategoryForm) => {
|
||||
return request({
|
||||
url: '/progress/progressCategory',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除进度类别
|
||||
* @param id
|
||||
*/
|
||||
export const delProgressCategory = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/progress/progressCategory/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询设施-方阵列表
|
||||
* @param data
|
||||
*/
|
||||
export const getProjectSquare = (projectId: string) => {
|
||||
return request({
|
||||
url: '/project/project/list/sub/matrix/' + projectId,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取进度类别最后一次进度信息
|
||||
* @param id
|
||||
*/
|
||||
export const lastTime = (id: string | number): AxiosPromise<lastTimeVo> => {
|
||||
return request({
|
||||
url: '/progress/progressCategory/lastTime/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增进度计划
|
||||
* @param data
|
||||
*/
|
||||
export const workScheduleAddPlan = (data: ProgressPlanForm) => {
|
||||
return request({
|
||||
url: '/progress/progressPlan',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取进度计划详细信息
|
||||
* @param params
|
||||
*/
|
||||
export const workScheduleList = (query: workScheduleListQuery): AxiosPromise<workScheduleListVO[]> => {
|
||||
return request({
|
||||
url: '/progress/progressPlan/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取进度类别坐标信息
|
||||
* @param params
|
||||
*/
|
||||
export const workScheduleListPosition = (id: string): AxiosPromise<any> => {
|
||||
return request({
|
||||
url: '/progress/progressCategory/coordinate/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增进度计划详情(百分比设施)
|
||||
* @param data
|
||||
*/
|
||||
export const workScheduleSubmit = (data: progressPlanDetailForm) => {
|
||||
return request({
|
||||
url: '/progress/progressPlanDetail/insert/percentage',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取进度计划详情未完成设施详细信息
|
||||
* @param params
|
||||
*/
|
||||
export const pvModuleList = (query: pvModuleListQuery): AxiosPromise<pvModuleListVO[]> => {
|
||||
return request({
|
||||
url: '/progress/progressPlanDetail/detail/unFinish/' + query.id,
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增进度计划详情(普通设施)
|
||||
* @param data
|
||||
*/
|
||||
export const addDaily = (data: progressPlanDetailForm) => {
|
||||
return request({
|
||||
url: '/progress/progressPlanDetail/insert/detail',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取进度计划详情已完成设施详细信息
|
||||
* @param params
|
||||
*/
|
||||
export const getDailyBook = (query: pvModuleListQuery): AxiosPromise<pvModuleListVO[]> => {
|
||||
return request({
|
||||
url: '/progress/progressPlanDetail/detail/finished/' + query.id,
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除进度计划详情
|
||||
* @param id
|
||||
*/
|
||||
export const deleteDaily = (query: { id: string; detailIdList: string[] }) => {
|
||||
return request({
|
||||
url: '/progress/progressPlanDetail/remove/detail',
|
||||
method: 'delete',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
export const workScheduleDel = () => {};
|
153
plus-ui/src/api/progress/plan/types.ts
Normal file
@ -0,0 +1,153 @@
|
||||
export interface ProgressCategoryVO {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 父类别id
|
||||
*/
|
||||
pid: string | number;
|
||||
|
||||
/**
|
||||
* 类别名称
|
||||
*/
|
||||
name: string;
|
||||
|
||||
/**
|
||||
* 计量方式(1数量 2百分比)
|
||||
*/
|
||||
unitType: string;
|
||||
|
||||
/**
|
||||
* 项目id(0表示共用)
|
||||
*/
|
||||
projectId: string | number;
|
||||
matrixId?: string | number;
|
||||
/**
|
||||
* 子对象
|
||||
*/
|
||||
children: ProgressCategoryVO[];
|
||||
threeChildren: any[];
|
||||
hasChildren: any;
|
||||
detailChildren: any;
|
||||
}
|
||||
|
||||
export interface ProgressCategoryForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 父类别id
|
||||
*/
|
||||
pid?: string | number;
|
||||
|
||||
/**
|
||||
* 类别名称
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* 计量方式(1数量 2百分比)
|
||||
*/
|
||||
unitType?: string;
|
||||
|
||||
/**
|
||||
* 项目id(0表示共用)
|
||||
*/
|
||||
projectId?: string | number;
|
||||
matrixId?: string | number;
|
||||
}
|
||||
|
||||
export interface ProgressPlanForm {
|
||||
projectId?: string | number;
|
||||
matrixId?: string | number;
|
||||
progressCategoryId?: string | number;
|
||||
startDate?: string;
|
||||
endDate?: string;
|
||||
planNumber?: number;
|
||||
detailList: {
|
||||
date: string;
|
||||
planNumber: number;
|
||||
}[];
|
||||
}
|
||||
|
||||
export interface workScheduleListVO {
|
||||
id: string | number;
|
||||
progressCategoryId: string | number;
|
||||
progressCategoryName: string;
|
||||
startDate: string;
|
||||
endDate: string;
|
||||
planNumber: number;
|
||||
finishedNumber: number;
|
||||
detailList: {
|
||||
id: string | number;
|
||||
date: string;
|
||||
planNumber: number;
|
||||
finishedNumber: number;
|
||||
aiFill: boolean;
|
||||
}[];
|
||||
}
|
||||
|
||||
export interface pvModuleListQuery {
|
||||
id: string | number;
|
||||
pageSize?: number;
|
||||
pageNum?: number;
|
||||
}
|
||||
|
||||
export interface pvModuleListVO {
|
||||
id: string | number;
|
||||
name: string;
|
||||
status: string;
|
||||
}
|
||||
|
||||
export interface progressPlanDetailForm {
|
||||
id: string | number;
|
||||
finishedNumber?: number;
|
||||
finishedDetailIdList?: any[];
|
||||
submitTime?: string;
|
||||
}
|
||||
|
||||
export interface workScheduleListQuery {
|
||||
progressCategoryId?: string | number;
|
||||
pageSize?: number;
|
||||
pageNum?: number;
|
||||
}
|
||||
|
||||
export interface lastTimeVo {
|
||||
endDate: string;
|
||||
leftNum: number;
|
||||
}
|
||||
|
||||
export interface ProgressCategoryQuery {
|
||||
/**
|
||||
* 父类别id
|
||||
*/
|
||||
pid?: string | number;
|
||||
|
||||
/**
|
||||
* 类别名称
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* 计量方式(1数量 2百分比)
|
||||
*/
|
||||
unitType?: string;
|
||||
|
||||
/**
|
||||
* 项目id(0表示共用)
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
/**
|
||||
* 方阵id
|
||||
*/
|
||||
matrixId?: string | number;
|
||||
}
|
63
plus-ui/src/api/progress/progressCategoryTemplate/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { ProgressCategoryTemplateVO, ProgressCategoryTemplateForm, ProgressCategoryTemplateQuery } from '@/api/progress/progressCategoryTemplate/types';
|
||||
|
||||
/**
|
||||
* 查询进度类别模版列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listProgressCategoryTemplate = (query?: ProgressCategoryTemplateQuery): AxiosPromise<ProgressCategoryTemplateVO[]> => {
|
||||
return request({
|
||||
url: '/progress/progressCategoryTemplate/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询进度类别模版详细
|
||||
* @param id
|
||||
*/
|
||||
export const getProgressCategoryTemplate = (id: string | number): AxiosPromise<ProgressCategoryTemplateVO> => {
|
||||
return request({
|
||||
url: '/progress/progressCategoryTemplate/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增进度类别模版
|
||||
* @param data
|
||||
*/
|
||||
export const addProgressCategoryTemplate = (data: ProgressCategoryTemplateForm) => {
|
||||
return request({
|
||||
url: '/progress/progressCategoryTemplate',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改进度类别模版
|
||||
* @param data
|
||||
*/
|
||||
export const updateProgressCategoryTemplate = (data: ProgressCategoryTemplateForm) => {
|
||||
return request({
|
||||
url: '/progress/progressCategoryTemplate',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除进度类别模版
|
||||
* @param id
|
||||
*/
|
||||
export const delProgressCategoryTemplate = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/progress/progressCategoryTemplate/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
105
plus-ui/src/api/progress/progressCategoryTemplate/types.ts
Normal file
@ -0,0 +1,105 @@
|
||||
export interface ProgressCategoryTemplateVO {
|
||||
/**
|
||||
* 类别名称
|
||||
*/
|
||||
name: string;
|
||||
|
||||
/**
|
||||
* 计量方式(0无 1数量 2百分比)
|
||||
*/
|
||||
unitType: string;
|
||||
|
||||
/**
|
||||
* 工作类型
|
||||
*/
|
||||
workType: string;
|
||||
|
||||
/**
|
||||
* 项目id(0表示共用)
|
||||
*/
|
||||
projectId: string | number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
|
||||
/**
|
||||
* 子对象
|
||||
*/
|
||||
children: ProgressCategoryTemplateVO[];
|
||||
}
|
||||
|
||||
export interface ProgressCategoryTemplateForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 父类别id
|
||||
*/
|
||||
pid?: string | number;
|
||||
|
||||
/**
|
||||
* 类别名称
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* 计量方式(0无 1数量 2百分比)
|
||||
*/
|
||||
unitType?: string;
|
||||
|
||||
/**
|
||||
* 工作类型
|
||||
*/
|
||||
workType?: string;
|
||||
|
||||
/**
|
||||
* 项目id(0表示共用)
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
}
|
||||
|
||||
export interface ProgressCategoryTemplateQuery {
|
||||
|
||||
/**
|
||||
* 父类别id
|
||||
*/
|
||||
pid?: string | number;
|
||||
|
||||
/**
|
||||
* 类别名称
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* 计量方式(0无 1数量 2百分比)
|
||||
*/
|
||||
unitType?: string;
|
||||
|
||||
/**
|
||||
* 工作类型
|
||||
*/
|
||||
workType?: string;
|
||||
|
||||
/**
|
||||
* 项目id(0表示共用)
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
||||
|
||||
|
||||
|
63
plus-ui/src/api/project/attendance/echarts.ts
Normal file
@ -0,0 +1,63 @@
|
||||
const grid = {
|
||||
left: 100,
|
||||
right: 100,
|
||||
top: 30,
|
||||
bottom: 50
|
||||
};
|
||||
|
||||
const color = ['#4FD6A9', '#409EFF', '#ECF5FF', '#FFC069'];
|
||||
const titleList = [
|
||||
{ name: '全勤人数', color: '#fff' },
|
||||
{ name: '半勤人数', color: '#fff' },
|
||||
{ name: '缺勤人数', color: '#000' },
|
||||
{ name: '请假人数', color: '#000' }
|
||||
];
|
||||
|
||||
// export const echartsConfig = (ref: any, list?: any) => {
|
||||
// const commandstatsIntance = echarts.init(ref, 'macarons');
|
||||
// };
|
||||
|
||||
export const option = (list?: any) => {
|
||||
const attendanceArray = list.map((item) => item.attendance);
|
||||
const halfAttendanceArray = list.map((item) => item.halfAttendance);
|
||||
const absenteeismArray = list.map((item) => item.absenteeism);
|
||||
const leaveArray = list.map((item) => item.leave);
|
||||
|
||||
const rawData = [attendanceArray, halfAttendanceArray, absenteeismArray, leaveArray];
|
||||
const series: any = titleList.map((item, sid) => {
|
||||
return {
|
||||
name: item.name,
|
||||
type: 'bar',
|
||||
stack: 'total',
|
||||
barWidth: '25',
|
||||
label: {
|
||||
show: true,
|
||||
color: item.color,
|
||||
fontSize: 10,
|
||||
formatter: function (params) {
|
||||
return params.value > 0 ? params.value : '';
|
||||
}
|
||||
},
|
||||
data: rawData[sid]
|
||||
};
|
||||
});
|
||||
const data = list.map((item) => item.clockDate);
|
||||
const option = {
|
||||
legend: {
|
||||
selectedMode: false,
|
||||
right: 0
|
||||
},
|
||||
grid,
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
show: false
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data
|
||||
},
|
||||
series,
|
||||
color
|
||||
};
|
||||
return option;
|
||||
};
|
99
plus-ui/src/api/project/attendance/index.ts
Normal file
@ -0,0 +1,99 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import {
|
||||
AttendanceVO,
|
||||
AttendanceForm,
|
||||
AttendanceQuery,
|
||||
AttendanceTwoWeekQuery,
|
||||
AttendanceTwoWeekVO,
|
||||
AttendanceMonthVO,
|
||||
AttendanceMonthQuery
|
||||
} from '@/api/project/attendance/types';
|
||||
|
||||
/**
|
||||
* 查询考勤列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listAttendance = (query?: AttendanceQuery): AxiosPromise<AttendanceVO[]> => {
|
||||
return request({
|
||||
url: '/project/constructionUser/list/attendance/total',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询近两周考勤列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listAttendanceTwoWeek = (query?: AttendanceTwoWeekQuery): AxiosPromise<AttendanceTwoWeekVO[]> => {
|
||||
return request({
|
||||
url: '/project/attendance/list/clockDate/twoWeek',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询施工人员月份考勤列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listAttendanceMonth = (query?: AttendanceMonthQuery): AxiosPromise<AttendanceMonthVO[]> => {
|
||||
return request({
|
||||
url: '/project/attendance/list/month/byUserId',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询考勤详细
|
||||
* @param id
|
||||
*/
|
||||
export const getAttendance = (id: string | number): AxiosPromise<AttendanceVO> => {
|
||||
return request({
|
||||
url: '/project/attendance/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增考勤
|
||||
* @param data
|
||||
*/
|
||||
export const addAttendance = (data: AttendanceForm) => {
|
||||
return request({
|
||||
url: '/project/attendance',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改考勤
|
||||
* @param data
|
||||
*/
|
||||
export const updateAttendance = (data: AttendanceForm) => {
|
||||
return request({
|
||||
url: '/project/attendance',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除考勤
|
||||
* @param id
|
||||
*/
|
||||
export const delAttendance = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/project/attendance/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
210
plus-ui/src/api/project/attendance/types.ts
Normal file
@ -0,0 +1,210 @@
|
||||
export interface AttendanceVO {
|
||||
/**
|
||||
* 人员姓名
|
||||
*/
|
||||
userName: string;
|
||||
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 人员id
|
||||
*/
|
||||
|
||||
/**
|
||||
* 上班打卡时间
|
||||
*/
|
||||
onClockTime: string;
|
||||
|
||||
/**
|
||||
* 下班打卡时间
|
||||
*/
|
||||
offClockTime: string;
|
||||
|
||||
/**
|
||||
* 打卡日期
|
||||
*/
|
||||
clockDate: string;
|
||||
|
||||
/**
|
||||
* 1正常,2迟到,3早退,4缺勤,5补卡
|
||||
*/
|
||||
clockStatus: string;
|
||||
|
||||
/**
|
||||
* 上下班(1上班,2下班)
|
||||
*/
|
||||
commuter: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
}
|
||||
|
||||
export interface AttendanceTwoWeekQuery {
|
||||
projectId?: string | number;
|
||||
}
|
||||
|
||||
export interface AttendanceMonthQuery {
|
||||
userId: string | number;
|
||||
clockMonth?: string;
|
||||
}
|
||||
|
||||
export interface AttendanceMonthVO {
|
||||
id: string | number;
|
||||
clockDate: string;
|
||||
status: string;
|
||||
attendanceList?: monthList[];
|
||||
clockList?: clockObject;
|
||||
}
|
||||
|
||||
interface clockObject {
|
||||
downClockTime?: string;
|
||||
downClockPic?: string;
|
||||
upClockTime?: string;
|
||||
upClockPic?: string;
|
||||
}
|
||||
|
||||
interface monthList {
|
||||
commuter: string;
|
||||
clockTime: string;
|
||||
clockStatus: string;
|
||||
}
|
||||
|
||||
export interface AttendanceTwoWeekVO {
|
||||
/**
|
||||
* 出勤人数
|
||||
*/
|
||||
attendance: string;
|
||||
|
||||
/**
|
||||
* 半勤人数
|
||||
|
||||
*/
|
||||
halfAttendance: string;
|
||||
|
||||
/**
|
||||
* 打卡日期
|
||||
*/
|
||||
clockDate: string;
|
||||
|
||||
/**
|
||||
* 缺勤人数
|
||||
|
||||
*/
|
||||
absenteeism: string;
|
||||
}
|
||||
|
||||
export interface AttendanceForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 人员id
|
||||
*/
|
||||
userId?: string | number;
|
||||
typeOfWork?: string;
|
||||
teamId?: string;
|
||||
clockDate?: string;
|
||||
|
||||
/**
|
||||
* 人脸照
|
||||
*/
|
||||
facePic?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 上班打卡时间
|
||||
*/
|
||||
onClockTime?: string;
|
||||
|
||||
/**
|
||||
* 下班打卡时间
|
||||
*/
|
||||
offClockTime?: string;
|
||||
|
||||
/**
|
||||
* 打卡日期
|
||||
*/
|
||||
clockDate?: string;
|
||||
|
||||
/**
|
||||
* 1正常,2迟到,3早退,4缺勤,5补卡
|
||||
*/
|
||||
clockStatus?: string;
|
||||
|
||||
/**
|
||||
* 代打人员id
|
||||
*/
|
||||
pinchUserId?: string | number;
|
||||
|
||||
/**
|
||||
* 多次打卡时间记录
|
||||
*/
|
||||
clockRecord?: string;
|
||||
|
||||
/**
|
||||
* 上下班(1上班,2下班)
|
||||
*/
|
||||
commuter?: string;
|
||||
|
||||
/**
|
||||
* 日薪
|
||||
*/
|
||||
dailyWage?: number;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
lng?: string;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
lat?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface AttendanceQuery extends PageQuery {
|
||||
/**
|
||||
* 人员姓名
|
||||
*/
|
||||
userName?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
typeOfWork?: string | number;
|
||||
teamId?: string | number;
|
||||
|
||||
/**
|
||||
* 打卡日期
|
||||
*/
|
||||
clockDate?: string;
|
||||
|
||||
/**
|
||||
* 1正常,2迟到,3早退,4缺勤,5补卡
|
||||
*/
|
||||
clockStatus?: string;
|
||||
|
||||
/**
|
||||
* 上下班(1上班,2下班)
|
||||
*/
|
||||
commuter?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
63
plus-ui/src/api/project/attendanceRecords/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { AttendanceVO, AttendanceForm, AttendanceQuery } from '@/api/project/attendance/types';
|
||||
|
||||
/**
|
||||
* 查询考勤列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listAttendance = (query?: AttendanceQuery): AxiosPromise<AttendanceVO[]> => {
|
||||
return request({
|
||||
url: '/project/attendance/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询考勤详细
|
||||
* @param id
|
||||
*/
|
||||
export const getAttendance = (id: string | number): AxiosPromise<AttendanceVO> => {
|
||||
return request({
|
||||
url: '/project/attendance/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增考勤
|
||||
* @param data
|
||||
*/
|
||||
export const addAttendance = (data: AttendanceForm) => {
|
||||
return request({
|
||||
url: '/project/attendance',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改考勤
|
||||
* @param data
|
||||
*/
|
||||
export const updateAttendance = (data: AttendanceForm) => {
|
||||
return request({
|
||||
url: '/project/attendance',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除考勤
|
||||
* @param id
|
||||
*/
|
||||
export const delAttendance = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/project/attendance/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
146
plus-ui/src/api/project/attendanceRecords/types.ts
Normal file
@ -0,0 +1,146 @@
|
||||
export interface AttendanceVO {
|
||||
/**
|
||||
* 人员姓名
|
||||
*/
|
||||
userName: string;
|
||||
|
||||
/**
|
||||
* 上班打卡时间
|
||||
*/
|
||||
onClockTime: string;
|
||||
|
||||
/**
|
||||
* 下班打卡时间
|
||||
*/
|
||||
offClockTime: string;
|
||||
|
||||
/**
|
||||
* 打卡日期
|
||||
*/
|
||||
clockDate: string;
|
||||
|
||||
/**
|
||||
* 1正常,2迟到,3早退,4缺勤,5补卡
|
||||
*/
|
||||
clockStatus: string;
|
||||
|
||||
/**
|
||||
* 上下班(1上班,2下班)
|
||||
*/
|
||||
commuter: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
}
|
||||
|
||||
export interface AttendanceForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 人员id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 人脸照
|
||||
*/
|
||||
facePic?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 上班打卡时间
|
||||
*/
|
||||
onClockTime?: string;
|
||||
|
||||
/**
|
||||
* 下班打卡时间
|
||||
*/
|
||||
offClockTime?: string;
|
||||
|
||||
/**
|
||||
* 打卡日期
|
||||
*/
|
||||
clockDate?: string;
|
||||
|
||||
/**
|
||||
* 1正常,2迟到,3早退,4缺勤,5补卡
|
||||
*/
|
||||
clockStatus?: string;
|
||||
|
||||
/**
|
||||
* 代打人员id
|
||||
*/
|
||||
pinchUserId?: string | number;
|
||||
|
||||
/**
|
||||
* 多次打卡时间记录
|
||||
*/
|
||||
clockRecord?: string;
|
||||
|
||||
/**
|
||||
* 上下班(1上班,2下班)
|
||||
*/
|
||||
commuter?: string;
|
||||
|
||||
/**
|
||||
* 日薪
|
||||
*/
|
||||
dailyWage?: number;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
lng?: string;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
lat?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface AttendanceQuery extends PageQuery {
|
||||
/**
|
||||
* 人员姓名
|
||||
*/
|
||||
userName?: string;
|
||||
teamId?: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 打卡日期
|
||||
*/
|
||||
clockDate?: string;
|
||||
|
||||
/**
|
||||
* 1正常,2迟到,3早退,4缺勤,5补卡
|
||||
*/
|
||||
clockStatus?: string;
|
||||
|
||||
/**
|
||||
* 上下班(1上班,2下班)
|
||||
*/
|
||||
commuter?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
@ -1,7 +1,33 @@
|
||||
import request from '@/utils/request';
|
||||
import request, { download } from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { ConstructionUserForm, ConstructionUserQuery, ConstructionUserVO } from '@/api/project/constructionUser/types';
|
||||
import {
|
||||
ConstructionUserForm,
|
||||
ConstructionUserQuery,
|
||||
ConstructionUserVO,
|
||||
skipType,
|
||||
ConstructionUserStatusForm,
|
||||
ConstructionUserPlayCardForm,
|
||||
ConstructionUserSalaryForm,
|
||||
ConstructionUserExitForm,
|
||||
ConstructionUserTemplateForm,
|
||||
ConstructionUserMembeForm,
|
||||
ConstructionMonthQuery
|
||||
} from '@/api/project/constructionUser/types';
|
||||
import { AttendanceMonthVO } from '../attendance/types';
|
||||
|
||||
/**
|
||||
* 查询施工人员月份考勤列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listConstructionMonth = (query?: ConstructionMonthQuery): AxiosPromise<AttendanceMonthVO[]> => {
|
||||
return request({
|
||||
url: '/project/constructionUser/list/attendance/month',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
/**
|
||||
* 查询施工人员列表
|
||||
* @param query
|
||||
@ -27,6 +53,28 @@ export const getConstructionUser = (id: string | number): AxiosPromise<Construct
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 人员迁移
|
||||
* @param data
|
||||
*/
|
||||
export const transferConstructionUser = (data: skipType) => {
|
||||
return request({
|
||||
url: '/project/constructionUser/change/project',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询项目以及项目下的分包公司列表
|
||||
*/
|
||||
export const getProjectContractorList = () => {
|
||||
return request({
|
||||
url: '/project/project/list/project/contractorList',
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增施工人员
|
||||
* @param data
|
||||
@ -61,3 +109,97 @@ export const delConstructionUser = (id: string | number | Array<string | number>
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改施工人员在职状态
|
||||
* @param data
|
||||
*/
|
||||
export const updateConstructionUserStatus = (data: ConstructionUserStatusForm) => {
|
||||
return request({
|
||||
url: '/project/constructionUser/batch/status',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 根据项目id批量修改施工人员打卡状态
|
||||
* @param data
|
||||
*/
|
||||
export const updateConstructionUserPlayCardStatus = (data: ConstructionUserPlayCardForm) => {
|
||||
return request({
|
||||
url: '/project/constructionUser/batch/clock',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改施工人员打卡状态
|
||||
* @param data
|
||||
*/
|
||||
export const updateConstructionUserPlayCardOneStatus = (data: ConstructionUserPlayCardForm) => {
|
||||
return request({
|
||||
url: '/project/constructionUser/clock',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改施工人员工资
|
||||
* @param data
|
||||
*/
|
||||
export const updateConstructionUserSalary = (data: ConstructionUserSalaryForm) => {
|
||||
return request({
|
||||
url: '/project/constructionUser/salary',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询施工人员入退场记录
|
||||
* @param query
|
||||
*/
|
||||
export const getConstructionUserExit = (query: ConstructionUserExitForm) => {
|
||||
return request({
|
||||
url: '/project/constructionUserExit/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 下载施工人员文件存储模板
|
||||
* @param query
|
||||
*/
|
||||
export const dowloadConstructionUserTemplate = (query: ConstructionUserTemplateForm) => {
|
||||
let { projectId } = query;
|
||||
const fileName = projectId + '_project.zip';
|
||||
return download('/project/constructionUserFile/exportFileTemplate', query, fileName);
|
||||
};
|
||||
|
||||
/**
|
||||
* 施工人员退场
|
||||
* @param data
|
||||
*/
|
||||
export const delConstructionUserMember = (data: ConstructionUserMembeForm) => {
|
||||
return request({
|
||||
url: '/project/projectTeamMember/',
|
||||
method: 'delete',
|
||||
data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 上传施工人员文件压缩包,批量导入存储施工人员文件
|
||||
* @param data
|
||||
*/
|
||||
export const importConstructionUserInfo = (file: string) => {
|
||||
return request({
|
||||
url: '/project/constructionUserFile/upload/zip',
|
||||
method: 'post',
|
||||
data: { file }
|
||||
});
|
||||
};
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { ContractorVO } from '@/api/project/contractor/types';
|
||||
import { ProjectTeamVO } from '@/api/project/projectTeam/types';
|
||||
import { S } from 'node_modules/vite/dist/node/types.d-aGj9QkWt';
|
||||
|
||||
export interface ConstructionUserVO {
|
||||
/**
|
||||
@ -182,6 +183,118 @@ export interface ConstructionUserVO {
|
||||
*/
|
||||
createTime: string;
|
||||
}
|
||||
export interface skipType {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId: string | number;
|
||||
|
||||
/**
|
||||
* 分包id
|
||||
*/
|
||||
contractorId: string | number;
|
||||
id: string | number;
|
||||
}
|
||||
|
||||
export interface ConstructionMonthQuery {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
userId: string | number;
|
||||
|
||||
/**
|
||||
* 打卡月份
|
||||
|
||||
*/
|
||||
clockMonth?: string | number;
|
||||
}
|
||||
|
||||
export interface ConstructionUserMembeForm {
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
id: string | number;
|
||||
/**
|
||||
* 用户姓名
|
||||
*/
|
||||
userName: string | number;
|
||||
/**
|
||||
* 文件路径
|
||||
*/
|
||||
filePath: string;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string | number;
|
||||
}
|
||||
|
||||
export interface ConstructionUserTemplateForm {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId: string | number;
|
||||
}
|
||||
|
||||
export interface ConstructionUserExitForm {
|
||||
/**
|
||||
* userId
|
||||
*/
|
||||
userId: number | string;
|
||||
}
|
||||
|
||||
export interface ConstructionUserSalaryForm {
|
||||
/**
|
||||
* 列表
|
||||
*/
|
||||
id: number | string;
|
||||
|
||||
/**
|
||||
* 工资
|
||||
*/
|
||||
salary?: number | string;
|
||||
}
|
||||
|
||||
export interface ConstructionUserPlayCardForm {
|
||||
/**
|
||||
* 项目
|
||||
*/
|
||||
projectId?: string | number;
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
id?: string | number;
|
||||
/**
|
||||
* 打卡状态
|
||||
*/
|
||||
clock: number | string;
|
||||
}
|
||||
|
||||
export interface skipOptionType {
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
projectName: string | number;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
id: string | number;
|
||||
/**
|
||||
* 子项
|
||||
*/
|
||||
contractorList: Array<skipTeamType>;
|
||||
}
|
||||
export interface skipTeamType {
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
name: string | number;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
id: string | number;
|
||||
}
|
||||
|
||||
export interface ConstructionUserForm extends BaseEntity {
|
||||
/**
|
||||
@ -218,6 +331,10 @@ export interface ConstructionUserForm extends BaseEntity {
|
||||
* 分包公司id
|
||||
*/
|
||||
contractorId?: string | number;
|
||||
/**
|
||||
* 结算方式
|
||||
*/
|
||||
wageMeasureUnit?: string | number;
|
||||
|
||||
/**
|
||||
* 班组id
|
||||
@ -345,6 +462,11 @@ export interface ConstructionUserForm extends BaseEntity {
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface ConstructionUserStatusForm {
|
||||
status: number | string;
|
||||
idList: Array<string | number>;
|
||||
}
|
||||
|
||||
export interface ConstructionUserQuery extends PageQuery {
|
||||
/**
|
||||
* 微信id
|
||||
|
40
plus-ui/src/api/project/constructionUserFile/index.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { ConstructionUserFileVO, ConstructionUserFileForm, ConstructionUserFileQuery } from '@/api/project/constructionUserFile/types';
|
||||
|
||||
/**
|
||||
* 查询施工人员文件存储列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listConstructionUserFile = (query?: ConstructionUserFileQuery): AxiosPromise<ConstructionUserFileVO[]> => {
|
||||
return request({
|
||||
url: '/project/constructionUserFile/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询施工人员文件存储详细
|
||||
* @param data
|
||||
*/
|
||||
export const setConstructionUserFile = (data: ConstructionUserFileForm): AxiosPromise<string | number> => {
|
||||
return request({
|
||||
url: '/project/constructionUserFile/save',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除施工人员文件存储
|
||||
* @param id
|
||||
*/
|
||||
export const delConstructionUserFile = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/project/constructionUserFile/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
137
plus-ui/src/api/project/constructionUserFile/types.ts
Normal file
@ -0,0 +1,137 @@
|
||||
export interface ConstructionUserFileVO {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
userId: string | number;
|
||||
|
||||
/**
|
||||
* 文件类型
|
||||
*/
|
||||
fileType: string;
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
fileName: string;
|
||||
|
||||
/**
|
||||
* 文件路径
|
||||
*/
|
||||
path: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
}
|
||||
|
||||
export interface ConstructionUserExitVO {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
userId: string | number;
|
||||
/**
|
||||
* 文件路径地址
|
||||
*/
|
||||
pathUrl: Array<string>;
|
||||
|
||||
/**
|
||||
* 身份证号码
|
||||
|
||||
*/
|
||||
sfzNumber: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId: string;
|
||||
/**
|
||||
* 班组id
|
||||
*/
|
||||
teamId: string;
|
||||
/**
|
||||
* 入场时间
|
||||
|
||||
*/
|
||||
entryDate: string;
|
||||
/**
|
||||
* 退场时间
|
||||
|
||||
*/
|
||||
leaveDate: string;
|
||||
|
||||
/**
|
||||
* 退场文件
|
||||
|
||||
*/
|
||||
path: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
}
|
||||
|
||||
export interface ConstructionUserFileForm extends BaseEntity {
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 文件类型
|
||||
*/
|
||||
fileList?: Array<fileListType>;
|
||||
}
|
||||
|
||||
interface fileListType {
|
||||
fileId: string | number;
|
||||
fileType: string | number;
|
||||
}
|
||||
|
||||
export interface ConstructionUserFileQuery {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 文件类型
|
||||
*/
|
||||
fileType?: string;
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
fileName?: string;
|
||||
|
||||
/**
|
||||
* 文件路径
|
||||
*/
|
||||
path?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
@ -51,6 +51,11 @@ export interface ContractorForm extends BaseEntity {
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 公司名称
|
||||
*/
|
||||
|
76
plus-ui/src/api/project/leave/index.ts
Normal file
@ -0,0 +1,76 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { LeaveVO, LeaveForm, LeaveQuery } from '@/api/project/leave/types';
|
||||
import { AuditReissueCardForm } from '../reissueCard/types';
|
||||
|
||||
/**
|
||||
* 查询施工人员请假申请列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listLeave = (query?: LeaveQuery): AxiosPromise<LeaveVO[]> => {
|
||||
return request({
|
||||
url: '/project/leave/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询施工人员请假申请详细
|
||||
* @param id
|
||||
*/
|
||||
export const getLeave = (id: string | number): AxiosPromise<LeaveVO> => {
|
||||
return request({
|
||||
url: '/project/leave/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增施工人员请假申请
|
||||
* @param data
|
||||
*/
|
||||
export const addLeave = (data: LeaveForm) => {
|
||||
return request({
|
||||
url: '/project/leave',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改施工人员请假申请
|
||||
* @param data
|
||||
*/
|
||||
export const updateLeave = (data: LeaveForm) => {
|
||||
return request({
|
||||
url: '/project/leave',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除施工人员请假申请
|
||||
* @param id
|
||||
*/
|
||||
export const delLeave = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/project/leave/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 管理员审核施工人员请假申请
|
||||
* @param data
|
||||
*/
|
||||
export const AuditReissueCard = (data: AuditReissueCardForm) => {
|
||||
return request({
|
||||
url: '/project/leave/review/manager',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
206
plus-ui/src/api/project/leave/types.ts
Normal file
@ -0,0 +1,206 @@
|
||||
export interface LeaveVO {
|
||||
/**
|
||||
* 申请人名字
|
||||
*/
|
||||
userName: string;
|
||||
id?: string | number;
|
||||
/**
|
||||
* 申请请假说明
|
||||
*/
|
||||
userExplain: string;
|
||||
status?: string;
|
||||
/**
|
||||
* 请假申请时间
|
||||
*/
|
||||
userTime: string;
|
||||
|
||||
/**
|
||||
* 请假类型(1事假 2病假)
|
||||
*/
|
||||
leaveType: string;
|
||||
|
||||
/**
|
||||
* 请假开始时间
|
||||
*/
|
||||
startTime: string;
|
||||
|
||||
/**
|
||||
* 请假结束时间
|
||||
*/
|
||||
endTime: string;
|
||||
|
||||
/**
|
||||
* 班组长名字
|
||||
*/
|
||||
gangerName: string;
|
||||
|
||||
/**
|
||||
* 班组长意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
gangerOpinion: string;
|
||||
|
||||
/**
|
||||
* 班组长说明
|
||||
*/
|
||||
gangerExplain: string;
|
||||
|
||||
/**
|
||||
* 班组长操作时间
|
||||
*/
|
||||
gangerTime: string;
|
||||
|
||||
/**
|
||||
* 管理员意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
managerOpinion: string;
|
||||
|
||||
/**
|
||||
* 管理员说明
|
||||
*/
|
||||
managerExplain: string;
|
||||
|
||||
/**
|
||||
* 管理员操作时间
|
||||
*/
|
||||
managerTime: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
managerName?: string;
|
||||
}
|
||||
|
||||
export interface LeaveForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 申请人id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 申请人名字
|
||||
*/
|
||||
userName?: string;
|
||||
|
||||
/**
|
||||
* 申请请假说明
|
||||
*/
|
||||
userExplain?: string;
|
||||
|
||||
/**
|
||||
* 请假申请时间
|
||||
*/
|
||||
userTime?: string;
|
||||
|
||||
/**
|
||||
* 请假类型(1事假 2病假)
|
||||
*/
|
||||
leaveType?: string;
|
||||
|
||||
/**
|
||||
* 请假开始时间
|
||||
*/
|
||||
startTime?: string;
|
||||
|
||||
/**
|
||||
* 请假结束时间
|
||||
*/
|
||||
endTime?: string;
|
||||
|
||||
/**
|
||||
* 班组长
|
||||
*/
|
||||
gangerId?: string | number;
|
||||
|
||||
/**
|
||||
* 班组长名字
|
||||
*/
|
||||
gangerName?: string;
|
||||
|
||||
/**
|
||||
* 班组长意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
gangerOpinion?: string;
|
||||
|
||||
/**
|
||||
* 班组长说明
|
||||
*/
|
||||
gangerExplain?: string;
|
||||
|
||||
/**
|
||||
* 班组长操作时间
|
||||
*/
|
||||
gangerTime?: string;
|
||||
|
||||
/**
|
||||
* 管理员意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
managerOpinion?: string;
|
||||
|
||||
/**
|
||||
* 管理员说明
|
||||
*/
|
||||
managerExplain?: string;
|
||||
|
||||
/**
|
||||
* 管理员操作时间
|
||||
*/
|
||||
managerTime?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 班组id
|
||||
*/
|
||||
teamId?: string | number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface LeaveQuery extends PageQuery {
|
||||
/**
|
||||
* 申请人名字
|
||||
*/
|
||||
userName?: string;
|
||||
|
||||
/**
|
||||
* 请假类型(1事假 2病假)
|
||||
*/
|
||||
leaveType?: string;
|
||||
|
||||
/**
|
||||
* 班组长意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
gangerOpinion?: string;
|
||||
|
||||
/**
|
||||
* 管理员意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
managerOpinion?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 班组id
|
||||
*/
|
||||
teamId?: string | number;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { ProjectForm, ProjectQuery, ProjectVO } from '@/api/project/project/types';
|
||||
import { childProjectQuery, ProjectForm, ProjectQuery, ProjectVO } from '@/api/project/project/types';
|
||||
|
||||
/**
|
||||
* 查询项目列表
|
||||
@ -16,6 +16,19 @@ export const listProject = (query?: ProjectQuery): AxiosPromise<ProjectVO[]> =>
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询项目dxf
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listDXFProject = (id: string | number): AxiosPromise<any> => {
|
||||
return request({
|
||||
url: '/project/projectFile/json/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询项目详细
|
||||
* @param id
|
||||
@ -51,6 +64,83 @@ export const updateProject = (data: ProjectForm) => {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 上传dxf文件
|
||||
* @param data
|
||||
*/
|
||||
export const upLoadProjectDXF = (data: any) => {
|
||||
return request({
|
||||
url: '/project/projectFile/upload/dxf',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 通过GeoJson新增设施-光伏板
|
||||
* @param data
|
||||
*/
|
||||
export const addProjectFacilities = (data: any) => {
|
||||
return request({
|
||||
url: '/facility/photovoltaicPanel/geoJson',
|
||||
method: 'post',
|
||||
data: data,
|
||||
headers: {
|
||||
'X-No-Cache': 'true'
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 通过GeoJson新增设施-光伏板桩点、立柱、支架
|
||||
* @param data
|
||||
*/
|
||||
export const addProjectPilePoint = (data: any) => {
|
||||
console.log('🚀 ~ addProjectPilePoint ~ data:', data);
|
||||
|
||||
return request({
|
||||
url: '/facility/photovoltaicPanelPoint/parts/geoJson',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 通过GeoJson新增设施-方阵
|
||||
* @param data
|
||||
*/
|
||||
export const addProjectSquare = (data: any) => {
|
||||
return request({
|
||||
url: '/facility/matrix/geoJson',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 通过GeoJson新增设施-箱变
|
||||
* @param data
|
||||
*/
|
||||
export const addBoxTransformer = (data: any) => {
|
||||
return request({
|
||||
url: '/facility/boxTransformer/geoJson',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 通过GeoJson新增设施-逆变器
|
||||
* @param data
|
||||
*/
|
||||
export const addInverter = (data: any) => {
|
||||
return request({
|
||||
url: '/facility/inverter/geoJson',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除项目
|
||||
* @param id
|
||||
@ -61,3 +151,26 @@ export const delProject = (id: string | number | Array<string | number>) => {
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增子项目
|
||||
* @param data
|
||||
*/
|
||||
export const addChildProject = (data: childProjectQuery) => {
|
||||
return request({
|
||||
url: '/project/project/sub',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询项目下的子项目列表
|
||||
* @param id
|
||||
*/
|
||||
export const getChildProject = (id: string | number): AxiosPromise<childProjectQuery[]> => {
|
||||
return request({
|
||||
url: '/project/project/list/sub/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
@ -2,7 +2,7 @@ export interface ProjectVO {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
id: string | number;
|
||||
id: string;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
@ -13,7 +13,7 @@ export interface ProjectVO {
|
||||
* 项目简称
|
||||
*/
|
||||
shortName: string;
|
||||
|
||||
designId: string;
|
||||
/**
|
||||
* 父项目id
|
||||
*/
|
||||
@ -37,12 +37,12 @@ export interface ProjectVO {
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
type: string;
|
||||
projectType: string;
|
||||
|
||||
/**
|
||||
* 项目类型(1光伏 2风电)
|
||||
*/
|
||||
isType: number;
|
||||
projectCategory: number;
|
||||
|
||||
/**
|
||||
* 删除时间
|
||||
@ -113,6 +113,25 @@ export interface ProjectVO {
|
||||
* 创建时间
|
||||
*/
|
||||
createTime: string;
|
||||
type?: string;
|
||||
}
|
||||
|
||||
export interface locationType {
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
lng: string;
|
||||
// 纬度
|
||||
lat: string;
|
||||
// 逆地理编码地址
|
||||
|
||||
projectSite: string;
|
||||
}
|
||||
|
||||
export interface childProjectQuery{
|
||||
projectName:string;
|
||||
pid:string;
|
||||
id?:string
|
||||
}
|
||||
|
||||
export interface ProjectForm extends BaseEntity {
|
||||
@ -146,6 +165,16 @@ export interface ProjectForm extends BaseEntity {
|
||||
*/
|
||||
picUrl?: string;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
lng?: string;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
lat?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ -154,12 +183,12 @@ export interface ProjectForm extends BaseEntity {
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
type?: string;
|
||||
projectType?: string;
|
||||
|
||||
/**
|
||||
* 项目类型(1光伏 2风电)
|
||||
*/
|
||||
isType?: number;
|
||||
projectCategory?: number;
|
||||
|
||||
/**
|
||||
* 删除时间
|
||||
@ -197,9 +226,14 @@ export interface ProjectForm extends BaseEntity {
|
||||
onStreamTime?: string;
|
||||
|
||||
/**
|
||||
* 打卡范围(09:00,18:00)
|
||||
* 打卡开始时间(09:00,18:00)
|
||||
*/
|
||||
punchRange?: string;
|
||||
playCardStart?: string;
|
||||
|
||||
/**
|
||||
* 打卡结束时间(09:00,18:00)
|
||||
*/
|
||||
playCardEnd?: string;
|
||||
|
||||
/**
|
||||
* 设计总量
|
||||
@ -256,12 +290,12 @@ export interface ProjectQuery extends PageQuery {
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
type?: string;
|
||||
projectType?: string;
|
||||
|
||||
/**
|
||||
* 项目类型(1光伏 2风电)
|
||||
*/
|
||||
isType?: number;
|
||||
projectCategory?: number;
|
||||
|
||||
/**
|
||||
* 删除时间
|
||||
@ -273,6 +307,16 @@ export interface ProjectQuery extends PageQuery {
|
||||
*/
|
||||
projectSite?: string;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
lng?: string;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
lat?: string;
|
||||
|
||||
/**
|
||||
* 负责人
|
||||
*/
|
||||
@ -299,9 +343,14 @@ export interface ProjectQuery extends PageQuery {
|
||||
onStreamTime?: string;
|
||||
|
||||
/**
|
||||
* 打卡范围(09:00,18:00)
|
||||
* 打卡开始时间(09:00,18:00)
|
||||
*/
|
||||
punchRange?: string;
|
||||
playCardStart?: string;
|
||||
|
||||
/**
|
||||
* 打卡结束时间(09:00,18:00)
|
||||
*/
|
||||
playCardEnd?: string;
|
||||
|
||||
/**
|
||||
* 设计总量
|
||||
|
@ -35,7 +35,7 @@ export interface ProjectTeamForm extends BaseEntity {
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
peopleNumber?: string | number;
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
@ -62,7 +62,7 @@ export interface ProjectTeamQuery extends PageQuery {
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
peopleNumber?: string | number;
|
||||
/**
|
||||
* 班组名称
|
||||
*/
|
||||
@ -84,7 +84,7 @@ export interface ProjectTeamForemanResp {
|
||||
* 班组id
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
foremanList: foremanQuery[];
|
||||
/**
|
||||
* 班组名称
|
||||
*/
|
||||
@ -94,7 +94,9 @@ export interface ProjectTeamForemanResp {
|
||||
* 项目id
|
||||
*/
|
||||
projectId: string | number;
|
||||
}
|
||||
|
||||
export interface foremanQuery {
|
||||
/**
|
||||
* 班组长id
|
||||
*/
|
||||
|
@ -24,6 +24,11 @@ export interface ProjectTeamMemberVO {
|
||||
*/
|
||||
postId: string | number;
|
||||
|
||||
/**
|
||||
* 施工人员姓名
|
||||
*/
|
||||
memberName: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
75
plus-ui/src/api/project/reissueCard/index.ts
Normal file
@ -0,0 +1,75 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { ReissueCardVO, ReissueCardForm, ReissueCardQuery, AuditReissueCardForm } from '@/api/project/reissueCard/types';
|
||||
|
||||
/**
|
||||
* 查询施工人员补卡申请列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listReissueCard = (query?: ReissueCardQuery): AxiosPromise<ReissueCardVO[]> => {
|
||||
return request({
|
||||
url: '/project/reissueCard/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询施工人员补卡申请详细
|
||||
* @param id
|
||||
*/
|
||||
export const getReissueCard = (id: string | number): AxiosPromise<ReissueCardVO> => {
|
||||
return request({
|
||||
url: '/project/reissueCard/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增施工人员补卡申请
|
||||
* @param data
|
||||
*/
|
||||
export const addReissueCard = (data: ReissueCardForm) => {
|
||||
return request({
|
||||
url: '/project/reissueCard',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改施工人员补卡申请
|
||||
* @param data
|
||||
*/
|
||||
export const updateReissueCard = (data: ReissueCardForm) => {
|
||||
return request({
|
||||
url: '/project/reissueCard',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除施工人员补卡申请
|
||||
* @param id
|
||||
*/
|
||||
export const delReissueCard = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/project/reissueCard/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 管理员审核施工人员补卡申请
|
||||
* @param data
|
||||
*/
|
||||
export const AuditReissueCard = (data: AuditReissueCardForm) => {
|
||||
return request({
|
||||
url: '/project/reissueCard/review/manager',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
173
plus-ui/src/api/project/reissueCard/types.ts
Normal file
@ -0,0 +1,173 @@
|
||||
export interface ReissueCardVO {
|
||||
/**
|
||||
* 申请人名字
|
||||
*/
|
||||
userName: string;
|
||||
id?: string | number;
|
||||
status?: string;
|
||||
managerName?: string;
|
||||
/**
|
||||
* 申请补卡说明
|
||||
*/
|
||||
userExplain: string;
|
||||
|
||||
/**
|
||||
* 补卡申请时间
|
||||
*/
|
||||
userTime: string;
|
||||
|
||||
/**
|
||||
* 班组长名字
|
||||
*/
|
||||
gangerName: string;
|
||||
|
||||
/**
|
||||
* 班组长意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
gangerOpinion: string;
|
||||
|
||||
/**
|
||||
* 班组长说明
|
||||
*/
|
||||
gangerExplain: string;
|
||||
|
||||
/**
|
||||
* 班组长操作时间
|
||||
*/
|
||||
gangerTime: string;
|
||||
|
||||
/**
|
||||
* 管理员意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
managerOpinion: string;
|
||||
|
||||
/**
|
||||
* 管理员说明
|
||||
*/
|
||||
managerExplain: string;
|
||||
|
||||
/**
|
||||
* 管理员操作时间
|
||||
*/
|
||||
managerTime: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
}
|
||||
export interface AuditReissueCardForm {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 管理员意见
|
||||
*/
|
||||
managerOpinion?: string;
|
||||
|
||||
/**
|
||||
* 管理员说明
|
||||
*/
|
||||
managerExplain?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface ReissueCardForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 申请人id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 申请补卡说明
|
||||
*/
|
||||
userExplain?: string;
|
||||
|
||||
/**
|
||||
* 班组长
|
||||
*/
|
||||
gangerId?: string | number;
|
||||
|
||||
/**
|
||||
* 班组长意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
gangerOpinion?: string;
|
||||
|
||||
/**
|
||||
* 班组长说明
|
||||
*/
|
||||
gangerExplain?: string;
|
||||
|
||||
/**
|
||||
* 管理员意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
managerOpinion?: string;
|
||||
|
||||
/**
|
||||
* 管理员说明
|
||||
*/
|
||||
managerExplain?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 考勤表主键id
|
||||
*/
|
||||
attendanceId?: string | number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface ReissueCardQuery extends PageQuery {
|
||||
/**
|
||||
* 申请人名字
|
||||
*/
|
||||
userName?: string;
|
||||
|
||||
/**
|
||||
* 班组长意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
gangerOpinion?: string;
|
||||
|
||||
/**
|
||||
* 管理员意见(1未读 2同意 3拒绝)
|
||||
*/
|
||||
managerOpinion?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 班组id
|
||||
*/
|
||||
teamId?: string | number;
|
||||
|
||||
/**
|
||||
* 补卡类型(1上班 2下班)
|
||||
*/
|
||||
reissueCardType?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
63
plus-ui/src/api/project/workerDailyReport/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { WorkerDailyReportVO, WorkerDailyReportForm, WorkerDailyReportQuery } from '@/api/project/workerDailyReport/types';
|
||||
|
||||
/**
|
||||
* 查询施工人员日报列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listWorkerDailyReport = (query?: WorkerDailyReportQuery): AxiosPromise<WorkerDailyReportVO[]> => {
|
||||
return request({
|
||||
url: '/project/workerDailyReport/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询施工人员日报详细
|
||||
* @param id
|
||||
*/
|
||||
export const getWorkerDailyReport = (id: string | number): AxiosPromise<WorkerDailyReportVO> => {
|
||||
return request({
|
||||
url: '/project/workerDailyReport/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增施工人员日报
|
||||
* @param data
|
||||
*/
|
||||
export const addWorkerDailyReport = (data: WorkerDailyReportForm) => {
|
||||
return request({
|
||||
url: '/project/workerDailyReport',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改施工人员日报
|
||||
* @param data
|
||||
*/
|
||||
export const updateWorkerDailyReport = (data: WorkerDailyReportForm) => {
|
||||
return request({
|
||||
url: '/project/workerDailyReport',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除施工人员日报
|
||||
* @param id
|
||||
*/
|
||||
export const delWorkerDailyReport = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/project/workerDailyReport/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
132
plus-ui/src/api/project/workerDailyReport/types.ts
Normal file
@ -0,0 +1,132 @@
|
||||
export interface WorkerDailyReportVO {
|
||||
/**
|
||||
* 申请人名字
|
||||
*/
|
||||
userName: string;
|
||||
userId?: string;
|
||||
id?: string;
|
||||
|
||||
/**
|
||||
* 今日完成工作
|
||||
*/
|
||||
todayCompletedWork: string;
|
||||
|
||||
/**
|
||||
* 未完成工作
|
||||
*/
|
||||
unfinishedWork: string;
|
||||
|
||||
/**
|
||||
* 明日工作
|
||||
*/
|
||||
tomorrowWork: string;
|
||||
|
||||
/**
|
||||
* 需协调与帮助
|
||||
*/
|
||||
coordinationHelp: string;
|
||||
}
|
||||
|
||||
export interface WorkerDailyReportForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
teamName?: string;
|
||||
resubmitReason?: string;
|
||||
reportDate?: string;
|
||||
isResubmit: string;
|
||||
|
||||
/**
|
||||
* 班组id
|
||||
*/
|
||||
teamId?: string | number;
|
||||
|
||||
/**
|
||||
* 申请人id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 申请人名字
|
||||
*/
|
||||
userName?: string;
|
||||
|
||||
/**
|
||||
* 今日完成工作
|
||||
*/
|
||||
todayCompletedWork?: string;
|
||||
|
||||
/**
|
||||
* 未完成工作
|
||||
*/
|
||||
unfinishedWork?: string;
|
||||
|
||||
/**
|
||||
* 明日工作
|
||||
*/
|
||||
tomorrowWork?: string;
|
||||
|
||||
/**
|
||||
* 需协调与帮助
|
||||
*/
|
||||
coordinationHelp?: string;
|
||||
|
||||
/**
|
||||
* 附件
|
||||
*/
|
||||
fileList?: Array<string>;
|
||||
dailyPieceItemVoList?: dailyPieceItemVO[];
|
||||
}
|
||||
|
||||
interface dailyPieceItemVO {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 计件类型
|
||||
*/
|
||||
pieceType?: string;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
pieceCount?: number;
|
||||
pieceUnit?: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface WorkerDailyReportQuery extends PageQuery {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 班组id
|
||||
*/
|
||||
teamId?: string | number;
|
||||
|
||||
/**
|
||||
* 申请人id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
/**
|
||||
* 申请人名字
|
||||
*/
|
||||
userName?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
isResubmit?: string;
|
||||
}
|
63
plus-ui/src/api/quality/qualityConstructionLog/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { QualityConstructionLogVO, QualityConstructionLogForm, QualityConstructionLogQuery } from '@/api/quality/qualityConstructionLog/types';
|
||||
|
||||
/**
|
||||
* 查询质量-施工日志列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listQualityConstructionLog = (query?: QualityConstructionLogQuery): AxiosPromise<QualityConstructionLogVO[]> => {
|
||||
return request({
|
||||
url: '/quality/qualityConstructionLog/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询质量-施工日志详细
|
||||
* @param id
|
||||
*/
|
||||
export const getQualityConstructionLog = (id: string | number): AxiosPromise<QualityConstructionLogVO> => {
|
||||
return request({
|
||||
url: '/quality/qualityConstructionLog/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增质量-施工日志
|
||||
* @param data
|
||||
*/
|
||||
export const addQualityConstructionLog = (data: QualityConstructionLogForm) => {
|
||||
return request({
|
||||
url: '/quality/qualityConstructionLog',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改质量-施工日志
|
||||
* @param data
|
||||
*/
|
||||
export const updateQualityConstructionLog = (data: QualityConstructionLogForm) => {
|
||||
return request({
|
||||
url: '/quality/qualityConstructionLog',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除质量-施工日志
|
||||
* @param id
|
||||
*/
|
||||
export const delQualityConstructionLog = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/quality/qualityConstructionLog/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
84
plus-ui/src/api/quality/qualityConstructionLog/types.ts
Normal file
@ -0,0 +1,84 @@
|
||||
export interface QualityConstructionLogVO {
|
||||
/**
|
||||
* 发生日期
|
||||
*/
|
||||
happenDate: string;
|
||||
id?: string | number;
|
||||
projectName: string;
|
||||
createTime: string;
|
||||
fileList: any[];
|
||||
file?: string;
|
||||
/**
|
||||
* 生产情况
|
||||
*/
|
||||
productionStatus: string;
|
||||
|
||||
/**
|
||||
* 技术质量安全工作
|
||||
*/
|
||||
technologyQuality: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
createBy: string;
|
||||
}
|
||||
|
||||
export interface QualityConstructionLogForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 发生日期
|
||||
*/
|
||||
happenDate?: string;
|
||||
|
||||
/**
|
||||
* 生产情况
|
||||
*/
|
||||
productionStatus?: string;
|
||||
|
||||
/**
|
||||
* 技术质量安全工作
|
||||
*/
|
||||
technologyQuality?: string;
|
||||
|
||||
/**
|
||||
* 附件
|
||||
*/
|
||||
file?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface QualityConstructionLogQuery extends PageQuery {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 发生日期
|
||||
*/
|
||||
happenDate?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
63
plus-ui/src/api/quality/qualityInspection/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { QualityInspectionVO, QualityInspectionForm, QualityInspectionQuery } from '@/api/quality/qualityInspection/types';
|
||||
|
||||
/**
|
||||
* 查询质量-检查工单列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listQualityInspection = (query?: QualityInspectionQuery): AxiosPromise<QualityInspectionVO[]> => {
|
||||
return request({
|
||||
url: '/quality/qualityInspection/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询质量-检查工单详细
|
||||
* @param id
|
||||
*/
|
||||
export const getQualityInspection = (id: string | number): AxiosPromise<QualityInspectionVO> => {
|
||||
return request({
|
||||
url: '/quality/qualityInspection/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增质量-检查工单
|
||||
* @param data
|
||||
*/
|
||||
export const addQualityInspection = (data: QualityInspectionForm) => {
|
||||
return request({
|
||||
url: '/quality/qualityInspection',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改质量-检查工单
|
||||
* @param data
|
||||
*/
|
||||
export const updateQualityInspection = (data: QualityInspectionForm) => {
|
||||
return request({
|
||||
url: '/quality/qualityInspection',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除质量-检查工单
|
||||
* @param id
|
||||
*/
|
||||
export const delQualityInspection = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/quality/qualityInspection/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
168
plus-ui/src/api/quality/qualityInspection/types.ts
Normal file
@ -0,0 +1,168 @@
|
||||
export interface QualityInspectionVO {
|
||||
verificationType: string;
|
||||
measure: string;
|
||||
/**
|
||||
* 巡检类型
|
||||
*/
|
||||
inspectionType: string;
|
||||
id?: string | number;
|
||||
projectName: string;
|
||||
rectificationFileList: any[];
|
||||
inspectionFile: string;
|
||||
correctorName: string;
|
||||
replyPeriodDate: string;
|
||||
rectificationTime: string;
|
||||
rectificationFile: string;
|
||||
verificationResult: string;
|
||||
/**
|
||||
* 巡检附件
|
||||
*/
|
||||
/**
|
||||
* 巡检标题
|
||||
*/
|
||||
inspectionHeadline: string;
|
||||
|
||||
/**
|
||||
* 巡检结果
|
||||
*/
|
||||
inspectionResult: string;
|
||||
|
||||
/**
|
||||
* 工单状态(1通知 2整改 3验证)
|
||||
*/
|
||||
inspectionStatus: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark: string;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
createBy: string;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
createTime: string;
|
||||
}
|
||||
|
||||
export interface QualityInspectionForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 巡检类型
|
||||
*/
|
||||
inspectionType?: string;
|
||||
|
||||
/**
|
||||
* 巡检标题
|
||||
*/
|
||||
inspectionHeadline?: string;
|
||||
|
||||
/**
|
||||
* 巡检结果
|
||||
*/
|
||||
inspectionResult?: string;
|
||||
|
||||
/**
|
||||
* 工单状态(1通知 2整改 3验证)
|
||||
*/
|
||||
inspectionStatus?: string;
|
||||
|
||||
/**
|
||||
* 巡检附件
|
||||
*/
|
||||
inspectionFile?: string;
|
||||
|
||||
/**
|
||||
* 班组id
|
||||
*/
|
||||
teamId?: string | number;
|
||||
|
||||
/**
|
||||
* 整改人(班组长)
|
||||
*/
|
||||
corrector?: string;
|
||||
|
||||
/**
|
||||
* 是否回复(1回复 2不回复)
|
||||
*/
|
||||
isReply?: string;
|
||||
|
||||
/**
|
||||
* 回复期限日期
|
||||
*/
|
||||
replyPeriodDate?: string;
|
||||
|
||||
/**
|
||||
* 整改反馈
|
||||
*/
|
||||
rectificationResult?: string;
|
||||
|
||||
/**
|
||||
* 整改时间
|
||||
*/
|
||||
rectificationTime?: string;
|
||||
|
||||
/**
|
||||
* 整改附件
|
||||
*/
|
||||
rectificationFile?: string;
|
||||
|
||||
/**
|
||||
* 验证结果
|
||||
*/
|
||||
verificationResult?: string;
|
||||
|
||||
/**
|
||||
* 验证状态(1通过 2未通过)
|
||||
*/
|
||||
verificationType?: string;
|
||||
|
||||
/**
|
||||
* 验证时间
|
||||
*/
|
||||
verificationTime?: string;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface QualityInspectionQuery extends PageQuery {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 巡检类型
|
||||
*/
|
||||
inspectionType?: string;
|
||||
|
||||
/**
|
||||
* 工单状态(1通知 2整改 3验证)
|
||||
*/
|
||||
inspectionStatus?: string;
|
||||
|
||||
/**
|
||||
* 班组id
|
||||
*/
|
||||
teamId?: string | number;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
87
plus-ui/src/api/safety/documentSafetyMeeting/index.ts
Normal file
@ -0,0 +1,87 @@
|
||||
import request from '@/utils/request';
|
||||
import {
|
||||
documentSafetyMeetingListFile,
|
||||
documentSafetyMeetingListFolder,
|
||||
documentSafetyMeetingListQuery,
|
||||
documentSafetyMeetingListVo,
|
||||
documentRecycleBinListQuery,
|
||||
documentRecycleBinListVO
|
||||
} from './type';
|
||||
import { AxiosPromise } from 'axios';
|
||||
// 查询安全会议结构
|
||||
export function documentCompletionTreeStructure(query: object) {
|
||||
return request({
|
||||
url: '/safety/documentSafetyMeeting/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
// 查询安全会议文件列表
|
||||
export function documentCompletionList(query: documentSafetyMeetingListQuery): AxiosPromise<documentSafetyMeetingListVo> {
|
||||
return request({
|
||||
url: '/safety/documentSafetyMeeting/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
// 安全会议添加
|
||||
export function documentCompletionAdd(data: documentSafetyMeetingListFile) {
|
||||
return request({
|
||||
url: '/safety/documentSafetyMeeting/file',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 安全会议修改文件名
|
||||
export function documentCompletionEdit(query: object) {
|
||||
return request({
|
||||
url: '/api/v1/system/documentSafetyMeeting/edit',
|
||||
method: 'put',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
// 安全会议删除文件
|
||||
export function documentCompletionDelete(id: string) {
|
||||
return request({
|
||||
url: '/safety/documentSafetyMeeting/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
// 安全会议获取指定id信息
|
||||
export function documentCompletionGet(id: string) {
|
||||
return request({
|
||||
url: '/safety/documentSafetyMeeting/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
// 新建文件夹
|
||||
export function newFolder(data: documentSafetyMeetingListFolder): AxiosPromise<any> {
|
||||
return request({
|
||||
url: '/safety/documentSafetyMeeting/folder',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 单文件下载
|
||||
export function uniFileDownload(query: object) {
|
||||
return request({
|
||||
url: '/api/v1/system/documentSafetyMeeting/safetyDataUniFileDownload',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
}
|
||||
// 回收站恢复
|
||||
export function completionDataRecyclingStation(id: string[]) {
|
||||
return request({
|
||||
url: '/safety/documentSafetyMeeting/recovery/' + id,
|
||||
method: 'put'
|
||||
});
|
||||
}
|
||||
// 回收站列表数据
|
||||
export function documentRecycleBinList(query: documentRecycleBinListQuery): AxiosPromise<documentRecycleBinListVO> {
|
||||
return request({
|
||||
url: '/safety/documentSafetyMeeting/recycleBin/list',
|
||||
method: 'get',
|
||||
params: { ...query, fileType: '2' }
|
||||
});
|
||||
}
|
61
plus-ui/src/api/safety/documentSafetyMeeting/type.ts
Normal file
@ -0,0 +1,61 @@
|
||||
export interface documentSafetyMeetingListFolder {
|
||||
//新增文件夹
|
||||
projectId: string;
|
||||
pid?: string;
|
||||
fileName: string;
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
export interface documentSafetyMeetingListFile {
|
||||
//新增文件
|
||||
file: any;
|
||||
req?: reqQuery;
|
||||
}
|
||||
|
||||
export interface reqQuery {
|
||||
projectId: string;
|
||||
pid?: string;
|
||||
}
|
||||
|
||||
export interface documentSafetyMeetingListQuery {
|
||||
projectId: string;
|
||||
pid?: string;
|
||||
//1文件 2文件夹 3图片
|
||||
fileType?: string;
|
||||
}
|
||||
|
||||
export interface documentSafetyMeetingListVo {
|
||||
projectId: string;
|
||||
id: string;
|
||||
pid: string;
|
||||
fileName: string;
|
||||
fileStatus?: string;
|
||||
filePath: string;
|
||||
fileSuffix: string;
|
||||
originalName: string;
|
||||
remark?: string;
|
||||
//1文件 2文件夹 3图片
|
||||
fileType?: string;
|
||||
}
|
||||
|
||||
export interface documentRecycleBinListQuery {
|
||||
projectId: string;
|
||||
pid?: string;
|
||||
fileType?: string;
|
||||
pageSize?: number;
|
||||
pageNum?: number;
|
||||
orderByColumn?: string;
|
||||
isAsc?: string;
|
||||
}
|
||||
|
||||
export interface documentRecycleBinListVO {
|
||||
id: string;
|
||||
projectId: string;
|
||||
pid?: string;
|
||||
fileName?: string;
|
||||
filePath?: number;
|
||||
fileSuffix?: number;
|
||||
fileStatus?: string;
|
||||
originalName?: string;
|
||||
remark?: string;
|
||||
}
|
@ -61,3 +61,15 @@ export const delQuestionUserAnswer = (id: string | number | Array<string | numbe
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 上传线下考试试卷存储
|
||||
* @param data
|
||||
*/
|
||||
export const uploadQuestionUserAnswer = (data: any) => {
|
||||
return request({
|
||||
url: '/safety/questionUserAnswer/upload/zip',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
@ -1,33 +1,17 @@
|
||||
export interface QuestionUserAnswerVO {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId: string | number;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
userId: string | number;
|
||||
|
||||
/**
|
||||
* 题库id列表
|
||||
*/
|
||||
bankIdList: Array<string | number>;
|
||||
|
||||
/**
|
||||
* 答案列表
|
||||
*/
|
||||
answerList: Array<string>;
|
||||
|
||||
/**
|
||||
* 得分
|
||||
*/
|
||||
score: number;
|
||||
id: string | number;
|
||||
file: string;
|
||||
/**
|
||||
* 考试类型(1线上考试 2线下考试)
|
||||
*/
|
||||
/**
|
||||
* 考试时间(时间戳/秒)
|
||||
*/
|
||||
examTime: number;
|
||||
|
||||
/**
|
||||
* 用时时间(时间戳/秒)
|
||||
@ -38,11 +22,6 @@ export interface QuestionUserAnswerVO {
|
||||
* 及格线/总分(格式:60,100)
|
||||
*/
|
||||
pass: string;
|
||||
|
||||
/**
|
||||
* 文件地址
|
||||
*/
|
||||
file: string;
|
||||
}
|
||||
|
||||
export interface QuestionUserAnswerForm extends BaseEntity {
|
||||
@ -50,7 +29,8 @@ export interface QuestionUserAnswerForm extends BaseEntity {
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
teamId?: string | number;
|
||||
userName?: string;
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
@ -64,18 +44,23 @@ export interface QuestionUserAnswerForm extends BaseEntity {
|
||||
/**
|
||||
* 题库id列表
|
||||
*/
|
||||
bankIdList: Array<string | number>;
|
||||
bankId?: string | number;
|
||||
|
||||
/**
|
||||
* 答案列表
|
||||
*/
|
||||
answerList: Array<string>;
|
||||
answer?: string;
|
||||
|
||||
/**
|
||||
* 得分
|
||||
*/
|
||||
score?: number;
|
||||
|
||||
/**
|
||||
* 考试时间(时间戳/秒)
|
||||
*/
|
||||
examTime?: number;
|
||||
|
||||
/**
|
||||
* 用时时间(时间戳/秒)
|
||||
*/
|
||||
@ -93,45 +78,17 @@ export interface QuestionUserAnswerForm extends BaseEntity {
|
||||
}
|
||||
|
||||
export interface QuestionUserAnswerQuery extends PageQuery {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
userId?: string | number;
|
||||
|
||||
teamId?: string | number;
|
||||
userName?: string;
|
||||
projectId?: string | number;
|
||||
/**
|
||||
* 题库id列表
|
||||
* 考试类型(1线上考试 2线下考试)
|
||||
*/
|
||||
bankIdList: Array<string | number>;
|
||||
|
||||
/**
|
||||
* 答案列表
|
||||
*/
|
||||
answerList: Array<string>;
|
||||
|
||||
/**
|
||||
* 得分
|
||||
*/
|
||||
score?: number;
|
||||
|
||||
/**
|
||||
* 用时时间(时间戳/秒)
|
||||
*/
|
||||
takeTime?: number;
|
||||
|
||||
/**
|
||||
* 及格线/总分(格式:60,100)
|
||||
*/
|
||||
pass?: string;
|
||||
|
||||
/**
|
||||
* 文件地址
|
||||
*/
|
||||
file?: string;
|
||||
examType?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
|
63
plus-ui/src/api/safety/questionsCategory/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { QuestionsCategoryVO, QuestionsCategoryForm, QuestionsCategoryQuery } from '@/api/safety/questionsCategory/types';
|
||||
|
||||
/**
|
||||
* 查询题库类别列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listQuestionsCategory = (query?: QuestionsCategoryQuery): AxiosPromise<QuestionsCategoryVO[]> => {
|
||||
return request({
|
||||
url: '/safety/questionsCategory/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询题库类别详细
|
||||
* @param id
|
||||
*/
|
||||
export const getQuestionsCategory = (id: string | number): AxiosPromise<QuestionsCategoryVO> => {
|
||||
return request({
|
||||
url: '/safety/questionsCategory/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增题库类别
|
||||
* @param data
|
||||
*/
|
||||
export const addQuestionsCategory = (data: QuestionsCategoryForm) => {
|
||||
return request({
|
||||
url: '/safety/questionsCategory',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改题库类别
|
||||
* @param data
|
||||
*/
|
||||
export const updateQuestionsCategory = (data: QuestionsCategoryForm) => {
|
||||
return request({
|
||||
url: '/safety/questionsCategory',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除题库类别
|
||||
* @param id
|
||||
*/
|
||||
export const delQuestionsCategory = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/safety/questionsCategory/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
41
plus-ui/src/api/safety/questionsCategory/types.ts
Normal file
@ -0,0 +1,41 @@
|
||||
export interface QuestionsCategoryVO {
|
||||
/**
|
||||
* 题库类别
|
||||
*/
|
||||
categoryName: string;
|
||||
id: string | number;
|
||||
}
|
||||
|
||||
export interface QuestionsCategoryForm extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 题库类别
|
||||
*/
|
||||
categoryName?: string;
|
||||
}
|
||||
|
||||
export interface QuestionsCategoryQuery extends PageQuery {
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
|
||||
/**
|
||||
* 题库类别
|
||||
*/
|
||||
categoryName?: string;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
@ -102,6 +102,7 @@ export interface SafetyLogForm extends BaseEntity {
|
||||
* 主键id
|
||||
*/
|
||||
id?: string | number;
|
||||
creatorName?: string;
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
@ -189,6 +190,7 @@ export interface SafetyLogQuery extends PageQuery {
|
||||
* 项目id
|
||||
*/
|
||||
projectId?: string | number;
|
||||
creatorName?: string;
|
||||
|
||||
/**
|
||||
* 发生日期
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { IdAndNameVO } from '@/api/types';
|
||||
|
||||
export interface TeamMeetingVO {
|
||||
pictureUrlList: Array<string>;
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@ -14,12 +15,12 @@ export interface TeamMeetingVO {
|
||||
/**
|
||||
* 班组
|
||||
*/
|
||||
team: IdAndNameVO;
|
||||
teamName: IdAndNameVO;
|
||||
|
||||
/**
|
||||
* 分包公司
|
||||
*/
|
||||
contractor: IdAndNameVO;
|
||||
contractorName: IdAndNameVO;
|
||||
|
||||
/**
|
||||
* 开会时间
|
||||
@ -29,7 +30,7 @@ export interface TeamMeetingVO {
|
||||
/**
|
||||
* 宣讲人
|
||||
*/
|
||||
compere: IdAndNameVO;
|
||||
compereName: IdAndNameVO;
|
||||
|
||||
/**
|
||||
* 参与人列表
|
||||
|
@ -1,4 +1,4 @@
|
||||
import request from '@/utils/request';
|
||||
import request, { download } from '@/utils/request';
|
||||
import { OssQuery, OssVO } from './types';
|
||||
import { AxiosPromise } from 'axios';
|
||||
|
||||
@ -26,3 +26,8 @@ export function delOss(ossId: string | number | Array<string | number>) {
|
||||
method: 'delete'
|
||||
});
|
||||
}
|
||||
|
||||
// 下载OSS对象存储
|
||||
export function downLoadOss(ossId: { id?: string | number; idList?: string | number | Array<string | number> }, url: string, fileName: string) {
|
||||
return download(url, ossId, fileName);
|
||||
}
|
||||
|
BIN
plus-ui/src/assets/fonts/Alibaba/Alibaba-PuHuiTi-Bold.otf
Normal file
BIN
plus-ui/src/assets/fonts/Alibaba/Alibaba-PuHuiTi-Medium.otf
Normal file
BIN
plus-ui/src/assets/fonts/Alibaba/AlimamaShuHeiTi-Bold.otf
Normal file
BIN
plus-ui/src/assets/fonts/D-Din/D-DIN-Bold.ttf
Normal file
BIN
plus-ui/src/assets/fonts/D-Din/D-DIN-Italic.ttf
Normal file
BIN
plus-ui/src/assets/fonts/D-Din/D-DIN.ttf
Normal file
BIN
plus-ui/src/assets/fonts/D-Din/D-DINCondensed-Bold.ttf
Normal file
BIN
plus-ui/src/assets/fonts/D-Din/D-DINCondensed.ttf
Normal file
BIN
plus-ui/src/assets/fonts/D-Din/D-DINExp-Bold.ttf
Normal file
BIN
plus-ui/src/assets/fonts/D-Din/D-DINExp-Italic.ttf
Normal file
BIN
plus-ui/src/assets/fonts/D-Din/D-DINExp.ttf
Normal file
BIN
plus-ui/src/assets/fonts/DOUYU/DOUYU.TTF
Normal file
BIN
plus-ui/src/assets/fonts/DOUYU/斗鱼追光体2.0.ttf
Normal file
BIN
plus-ui/src/assets/fonts/PangmenTi/PangMenZhengDaoBiaoTiTi-1.ttf
Normal file
BIN
plus-ui/src/assets/fonts/ReflectTi/SourceHanSansCN-Light.otf
Normal file
BIN
plus-ui/src/assets/fonts/ReflectTi/SourceHanSansCN-Medium_0.otf
Normal file
BIN
plus-ui/src/assets/fonts/ReflectTi/SourceHanSansCN-Regular.otf
Normal file
BIN
plus-ui/src/assets/fonts/Roboto/Roboto-Regular.ttf
Normal file
165
plus-ui/src/assets/fonts/fonts.scss
Normal file
@ -0,0 +1,165 @@
|
||||
@font-face {
|
||||
font-family: 'Rang_men_zheng'; //庞门正道字体
|
||||
src: url('./PangmenTi/PangMenZhengDaoBiaoTiTi-1.ttf');
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Rang_men_zheng_title'; //庞门正道标题体
|
||||
src: url('./PangMenZhengDaoBiaoTiTi/PangMenZhengDaoBiaoTiTi-1.ttf');
|
||||
font-weight: normal;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
// 思源字体
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSansCN-Bold';
|
||||
// src: url('./ReflectTi/SourceHanSansCN-Bold_0.otf'); //暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSansCN-ExtraLight';
|
||||
// src: url('./ReflectTi/SourceHanSansCN-ExtraLight.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSansCN-Heavy';
|
||||
// src: url('./ReflectTi/SourceHanSansCN-Heavy.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSansCN-Light';
|
||||
// src: url('./ReflectTi/SourceHanSansCN-Light.otf');
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSansCN-Medium';
|
||||
// src: url('./ReflectTi/SourceHanSansCN-Medium_0.otf');
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSansCN-Normal';
|
||||
// src: url('./ReflectTi/SourceHanSansCN-Normal.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
|
||||
@font-face {
|
||||
font-family: 'SourceHanSansCN-Regular';
|
||||
src: url('./ReflectTi/SourceHanSansCN-Regular.otf');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSansCN-Bold';
|
||||
// src: url('./ReflectTi/SourceHanSerifCN-Bold.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSansCN-ExtraLight';
|
||||
// src: url('./ReflectTi/SourceHanSerifCN-ExtraLight.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSerifCN-Heavy';
|
||||
// src: url('./ReflectTi/SourceHanSerifCN-Heavy.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSerifCN-Light';
|
||||
// src: url('./ReflectTi/SourceHanSerifCN-Light.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSerifCN-Medium';
|
||||
// src: url('./ReflectTi/SourceHanSerifCN-Medium.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSerifCN-Regular';
|
||||
// src: url('./ReflectTi/SourceHanSerifCN-Regular.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
// @font-face {
|
||||
// font-family: 'SourceHanSerifCN-SemiBold';
|
||||
// src: url('./ReflectTi/SourceHanSerifCN-SemiBold.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
|
||||
// 阿里巴巴普惠体
|
||||
@font-face {
|
||||
font-family: 'Alibaba-PuHuiTi-Bold';
|
||||
src: url('./Alibaba/Alibaba-PuHuiTi-Bold.otf');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
//阿里黑体
|
||||
@font-face {
|
||||
font-family: 'AlimamaShuHeiTi-Bold';
|
||||
src: url('./Alibaba/AlimamaShuHeiTi-Bold.otf');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
// @font-face {
|
||||
// font-family: 'Alibaba-PuHuiTi-Heavy';
|
||||
// src: url('./Alibaba/Alibaba-PuHuiTi-Heavy.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
// @font-face {
|
||||
// font-family: 'Alibaba-PuHuiTi-Light';
|
||||
// src: url('./Alibaba/Alibaba-PuHuiTi-Light.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
@font-face {
|
||||
font-family: 'Alibaba-PuHuiTi-Medium';
|
||||
src: url('./Alibaba/Alibaba-PuHuiTi-Medium.otf');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
// @font-face {
|
||||
// font-family: 'Alibaba-PuHuiTi-Regular';
|
||||
// src: url('./Alibaba/Alibaba-PuHuiTi-Regular.otf');//暂时没用
|
||||
// font-weight: normal;
|
||||
// font-style: normal;
|
||||
// }
|
||||
@font-face {
|
||||
font-family: 'DOUYUFont'; //斗鱼追光体
|
||||
src: url('./DouYu//斗鱼追光体2.0.ttf');
|
||||
font-weight: normal;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'D-Din';
|
||||
src: url('./D-Din//D-DIN.ttf');
|
||||
font-weight: normal;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Regular'; //Roboto
|
||||
src: url('./Roboto//Roboto-Regular.ttf');
|
||||
font-weight: normal;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
539
plus-ui/src/assets/iconfont/demo.css
Normal file
@ -0,0 +1,539 @@
|
||||
/* Logo 字体 */
|
||||
@font-face {
|
||||
font-family: "iconfont logo";
|
||||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
|
||||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
|
||||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-family: "iconfont logo";
|
||||
font-size: 160px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* tabs */
|
||||
.nav-tabs {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nav-tabs .nav-more {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
#tabs {
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
#tabs li {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
border-bottom: 2px solid transparent;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin-bottom: -1px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
|
||||
#tabs .active {
|
||||
border-bottom-color: #f00;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.tab-container .content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 页面布局 */
|
||||
.main {
|
||||
padding: 30px 100px;
|
||||
width: 960px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.main .logo {
|
||||
color: #333;
|
||||
text-align: left;
|
||||
margin-bottom: 30px;
|
||||
line-height: 1;
|
||||
height: 110px;
|
||||
margin-top: -50px;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.main .logo a {
|
||||
font-size: 160px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.helps {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.helps pre {
|
||||
padding: 20px;
|
||||
margin: 10px 0;
|
||||
border: solid 1px #e7e1cd;
|
||||
background-color: #fffdef;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.icon_lists {
|
||||
width: 100% !important;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
}
|
||||
|
||||
.icon_lists li {
|
||||
width: 100px;
|
||||
margin-bottom: 10px;
|
||||
margin-right: 20px;
|
||||
text-align: center;
|
||||
list-style: none !important;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.icon_lists li .code-name {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.icon_lists .icon {
|
||||
display: block;
|
||||
height: 100px;
|
||||
line-height: 100px;
|
||||
font-size: 42px;
|
||||
margin: 10px auto;
|
||||
color: #333;
|
||||
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
|
||||
-moz-transition: font-size 0.25s linear, width 0.25s linear;
|
||||
transition: font-size 0.25s linear, width 0.25s linear;
|
||||
}
|
||||
|
||||
.icon_lists .icon:hover {
|
||||
font-size: 100px;
|
||||
}
|
||||
|
||||
.icon_lists .svg-icon {
|
||||
/* 通过设置 font-size 来改变图标大小 */
|
||||
width: 1em;
|
||||
/* 图标和文字相邻时,垂直对齐 */
|
||||
vertical-align: -0.15em;
|
||||
/* 通过设置 color 来改变 SVG 的颜色/fill */
|
||||
fill: currentColor;
|
||||
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
|
||||
normalize.css 中也包含这行 */
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.icon_lists li .name,
|
||||
.icon_lists li .code-name {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
/* markdown 样式 */
|
||||
.markdown {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.markdown img {
|
||||
vertical-align: middle;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
color: #404040;
|
||||
font-weight: 500;
|
||||
line-height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.markdown h2,
|
||||
.markdown h3,
|
||||
.markdown h4,
|
||||
.markdown h5,
|
||||
.markdown h6 {
|
||||
color: #404040;
|
||||
margin: 1.6em 0 0.6em 0;
|
||||
font-weight: 500;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.markdown h1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.markdown h2 {
|
||||
font-size: 22px;
|
||||
}
|
||||
|
||||
.markdown h3 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.markdown h4 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.markdown h5 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown h6 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown hr {
|
||||
height: 1px;
|
||||
border: 0;
|
||||
background: #e9e9e9;
|
||||
margin: 16px 0;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.markdown p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.markdown>p,
|
||||
.markdown>blockquote,
|
||||
.markdown>.highlight,
|
||||
.markdown>ol,
|
||||
.markdown>ul {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.markdown ul>li {
|
||||
list-style: circle;
|
||||
}
|
||||
|
||||
.markdown>ul li,
|
||||
.markdown blockquote ul>li {
|
||||
margin-left: 20px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.markdown>ul li p,
|
||||
.markdown>ol li p {
|
||||
margin: 0.6em 0;
|
||||
}
|
||||
|
||||
.markdown ol>li {
|
||||
list-style: decimal;
|
||||
}
|
||||
|
||||
.markdown>ol li,
|
||||
.markdown blockquote ol>li {
|
||||
margin-left: 20px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
.markdown code {
|
||||
margin: 0 3px;
|
||||
padding: 0 5px;
|
||||
background: #eee;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.markdown strong,
|
||||
.markdown b {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown>table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
empty-cells: show;
|
||||
border: 1px solid #e9e9e9;
|
||||
width: 95%;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.markdown>table th {
|
||||
white-space: nowrap;
|
||||
color: #333;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.markdown>table th,
|
||||
.markdown>table td {
|
||||
border: 1px solid #e9e9e9;
|
||||
padding: 8px 16px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.markdown>table th {
|
||||
background: #F7F7F7;
|
||||
}
|
||||
|
||||
.markdown blockquote {
|
||||
font-size: 90%;
|
||||
color: #999;
|
||||
border-left: 4px solid #e9e9e9;
|
||||
padding-left: 0.8em;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
.markdown blockquote p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown .anchor {
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.markdown .waiting {
|
||||
color: #ccc;
|
||||
}
|
||||
|
||||
.markdown h1:hover .anchor,
|
||||
.markdown h2:hover .anchor,
|
||||
.markdown h3:hover .anchor,
|
||||
.markdown h4:hover .anchor,
|
||||
.markdown h5:hover .anchor,
|
||||
.markdown h6:hover .anchor {
|
||||
opacity: 1;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.markdown>br,
|
||||
.markdown>p>br {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
.hljs {
|
||||
display: block;
|
||||
background: white;
|
||||
padding: 0.5em;
|
||||
color: #333333;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.hljs-comment,
|
||||
.hljs-meta {
|
||||
color: #969896;
|
||||
}
|
||||
|
||||
.hljs-string,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable,
|
||||
.hljs-strong,
|
||||
.hljs-emphasis,
|
||||
.hljs-quote {
|
||||
color: #df5000;
|
||||
}
|
||||
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-type {
|
||||
color: #a71d5d;
|
||||
}
|
||||
|
||||
.hljs-literal,
|
||||
.hljs-symbol,
|
||||
.hljs-bullet,
|
||||
.hljs-attribute {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.hljs-section,
|
||||
.hljs-name {
|
||||
color: #63a35c;
|
||||
}
|
||||
|
||||
.hljs-tag {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.hljs-title,
|
||||
.hljs-attr,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-class,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo {
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.hljs-addition {
|
||||
color: #55a532;
|
||||
background-color: #eaffea;
|
||||
}
|
||||
|
||||
.hljs-deletion {
|
||||
color: #bd2c00;
|
||||
background-color: #ffecec;
|
||||
}
|
||||
|
||||
.hljs-link {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* 代码高亮 */
|
||||
/* PrismJS 1.15.0
|
||||
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
|
||||
/**
|
||||
* prism.js default theme for JavaScript, CSS and HTML
|
||||
* Based on dabblet (http://dabblet.com)
|
||||
* @author Lea Verou
|
||||
*/
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
color: black;
|
||||
background: none;
|
||||
text-shadow: 0 1px white;
|
||||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||
text-align: left;
|
||||
white-space: pre;
|
||||
word-spacing: normal;
|
||||
word-break: normal;
|
||||
word-wrap: normal;
|
||||
line-height: 1.5;
|
||||
|
||||
-moz-tab-size: 4;
|
||||
-o-tab-size: 4;
|
||||
tab-size: 4;
|
||||
|
||||
-webkit-hyphens: none;
|
||||
-moz-hyphens: none;
|
||||
-ms-hyphens: none;
|
||||
hyphens: none;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::-moz-selection,
|
||||
pre[class*="language-"] ::-moz-selection,
|
||||
code[class*="language-"]::-moz-selection,
|
||||
code[class*="language-"] ::-moz-selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
pre[class*="language-"]::selection,
|
||||
pre[class*="language-"] ::selection,
|
||||
code[class*="language-"]::selection,
|
||||
code[class*="language-"] ::selection {
|
||||
text-shadow: none;
|
||||
background: #b3d4fc;
|
||||
}
|
||||
|
||||
@media print {
|
||||
|
||||
code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
text-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
pre[class*="language-"] {
|
||||
padding: 1em;
|
||||
margin: .5em 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
:not(pre)>code[class*="language-"],
|
||||
pre[class*="language-"] {
|
||||
background: #f5f2f0;
|
||||
}
|
||||
|
||||
/* Inline code */
|
||||
:not(pre)>code[class*="language-"] {
|
||||
padding: .1em;
|
||||
border-radius: .3em;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.token.comment,
|
||||
.token.prolog,
|
||||
.token.doctype,
|
||||
.token.cdata {
|
||||
color: slategray;
|
||||
}
|
||||
|
||||
.token.punctuation {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.namespace {
|
||||
opacity: .7;
|
||||
}
|
||||
|
||||
.token.property,
|
||||
.token.tag,
|
||||
.token.boolean,
|
||||
.token.number,
|
||||
.token.constant,
|
||||
.token.symbol,
|
||||
.token.deleted {
|
||||
color: #905;
|
||||
}
|
||||
|
||||
.token.selector,
|
||||
.token.attr-name,
|
||||
.token.string,
|
||||
.token.char,
|
||||
.token.builtin,
|
||||
.token.inserted {
|
||||
color: #690;
|
||||
}
|
||||
|
||||
.token.operator,
|
||||
.token.entity,
|
||||
.token.url,
|
||||
.language-css .token.string,
|
||||
.style .token.string {
|
||||
color: #9a6e3a;
|
||||
background: hsla(0, 0%, 100%, .5);
|
||||
}
|
||||
|
||||
.token.atrule,
|
||||
.token.attr-value,
|
||||
.token.keyword {
|
||||
color: #07a;
|
||||
}
|
||||
|
||||
.token.function,
|
||||
.token.class-name {
|
||||
color: #DD4A68;
|
||||
}
|
||||
|
||||
.token.regex,
|
||||
.token.important,
|
||||
.token.variable {
|
||||
color: #e90;
|
||||
}
|
||||
|
||||
.token.important,
|
||||
.token.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.token.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.token.entity {
|
||||
cursor: help;
|
||||
}
|
211
plus-ui/src/assets/iconfont/demo_index.html
Normal file
@ -0,0 +1,211 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<title>iconfont Demo</title>
|
||||
<link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/>
|
||||
<link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/>
|
||||
<link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
|
||||
<link rel="stylesheet" href="demo.css">
|
||||
<link rel="stylesheet" href="iconfont.css">
|
||||
<script src="iconfont.js"></script>
|
||||
<!-- jQuery -->
|
||||
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
|
||||
<!-- 代码高亮 -->
|
||||
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
|
||||
<style>
|
||||
.main .logo {
|
||||
margin-top: 0;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.main .logo a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.main .logo .sub-title {
|
||||
margin-left: 0.5em;
|
||||
font-size: 22px;
|
||||
color: #fff;
|
||||
background: linear-gradient(-45deg, #3967FF, #B500FE);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="main">
|
||||
<h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
|
||||
<img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
|
||||
|
||||
</a></h1>
|
||||
<div class="nav-tabs">
|
||||
<ul id="tabs" class="dib-box">
|
||||
<li class="dib active"><span>Unicode</span></li>
|
||||
<li class="dib"><span>Font class</span></li>
|
||||
<li class="dib"><span>Symbol</span></li>
|
||||
</ul>
|
||||
|
||||
<a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=4936044" target="_blank" class="nav-more">查看项目</a>
|
||||
|
||||
</div>
|
||||
<div class="tab-container">
|
||||
<div class="content unicode" style="display: block;">
|
||||
<ul class="icon_lists dib-box">
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont"></span>
|
||||
<div class="name">问号</div>
|
||||
<div class="code-name">&#xe72d;</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<div class="article markdown">
|
||||
<h2 id="unicode-">Unicode 引用</h2>
|
||||
<hr>
|
||||
|
||||
<p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
|
||||
<ul>
|
||||
<li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
|
||||
<li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
|
||||
</ul>
|
||||
<blockquote>
|
||||
<p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
|
||||
</blockquote>
|
||||
<p>Unicode 使用步骤如下:</p>
|
||||
<h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
|
||||
<pre><code class="language-css"
|
||||
>@font-face {
|
||||
font-family: 'iconfont';
|
||||
src: url('iconfont.woff2?t=1748505165241') format('woff2'),
|
||||
url('iconfont.woff?t=1748505165241') format('woff'),
|
||||
url('iconfont.ttf?t=1748505165241') format('truetype');
|
||||
}
|
||||
</code></pre>
|
||||
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
|
||||
<pre><code class="language-css"
|
||||
>.iconfont {
|
||||
font-family: "iconfont" !important;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
</code></pre>
|
||||
<h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
|
||||
<pre>
|
||||
<code class="language-html"
|
||||
><span class="iconfont">&#x33;</span>
|
||||
</code></pre>
|
||||
<blockquote>
|
||||
<p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content font-class">
|
||||
<ul class="icon_lists dib-box">
|
||||
|
||||
<li class="dib">
|
||||
<span class="icon iconfont icon-wenhao"></span>
|
||||
<div class="name">
|
||||
问号
|
||||
</div>
|
||||
<div class="code-name">.icon-wenhao
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<div class="article markdown">
|
||||
<h2 id="font-class-">font-class 引用</h2>
|
||||
<hr>
|
||||
|
||||
<p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
|
||||
<p>与 Unicode 使用方式相比,具有如下特点:</p>
|
||||
<ul>
|
||||
<li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
|
||||
<li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
|
||||
</ul>
|
||||
<p>使用步骤如下:</p>
|
||||
<h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
|
||||
<pre><code class="language-html"><link rel="stylesheet" href="./iconfont.css">
|
||||
</code></pre>
|
||||
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
|
||||
<pre><code class="language-html"><span class="iconfont icon-xxx"></span>
|
||||
</code></pre>
|
||||
<blockquote>
|
||||
<p>"
|
||||
iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content symbol">
|
||||
<ul class="icon_lists dib-box">
|
||||
|
||||
<li class="dib">
|
||||
<svg class="icon svg-icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-wenhao"></use>
|
||||
</svg>
|
||||
<div class="name">问号</div>
|
||||
<div class="code-name">#icon-wenhao</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<div class="article markdown">
|
||||
<h2 id="symbol-">Symbol 引用</h2>
|
||||
<hr>
|
||||
|
||||
<p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
|
||||
这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
|
||||
<ul>
|
||||
<li>支持多色图标了,不再受单色限制。</li>
|
||||
<li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
|
||||
<li>兼容性较差,支持 IE9+,及现代浏览器。</li>
|
||||
<li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
|
||||
</ul>
|
||||
<p>使用步骤如下:</p>
|
||||
<h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
|
||||
<pre><code class="language-html"><script src="./iconfont.js"></script>
|
||||
</code></pre>
|
||||
<h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
|
||||
<pre><code class="language-html"><style>
|
||||
.icon {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
vertical-align: -0.15em;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
</code></pre>
|
||||
<h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
|
||||
<pre><code class="language-html"><svg class="icon" aria-hidden="true">
|
||||
<use xlink:href="#icon-xxx"></use>
|
||||
</svg>
|
||||
</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('.tab-container .content:first').show()
|
||||
|
||||
$('#tabs li').click(function (e) {
|
||||
var tabContent = $('.tab-container .content')
|
||||
var index = $(this).index()
|
||||
|
||||
if ($(this).hasClass('active')) {
|
||||
return
|
||||
} else {
|
||||
$('#tabs li').removeClass('active')
|
||||
$(this).addClass('active')
|
||||
|
||||
tabContent.hide().eq(index).fadeIn()
|
||||
}
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
19
plus-ui/src/assets/iconfont/iconfont.css
Normal file
@ -0,0 +1,19 @@
|
||||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 4936044 */
|
||||
src: url('iconfont.woff2?t=1748505165241') format('woff2'),
|
||||
url('iconfont.woff?t=1748505165241') format('woff'),
|
||||
url('iconfont.ttf?t=1748505165241') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
font-family: "iconfont" !important;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.icon-wenhao:before {
|
||||
content: "\e72d";
|
||||
}
|
||||
|
1
plus-ui/src/assets/iconfont/iconfont.js
Normal file
@ -0,0 +1 @@
|
||||
window._iconfont_svg_string_4936044='<svg><symbol id="icon-wenhao" viewBox="0 0 1024 1024"><path d="M463.99957 784.352211c0 26.509985 21.490445 48.00043 48.00043 48.00043s48.00043-21.490445 48.00043-48.00043c0-26.509985-21.490445-48.00043-48.00043-48.00043S463.99957 757.842226 463.99957 784.352211z" fill="#575B66" ></path><path d="M512 960c-247.039484 0-448-200.960516-448-448S264.960516 64 512 64 960 264.960516 960 512 759.039484 960 512 960zM512 128.287273c-211.584464 0-383.712727 172.128262-383.712727 383.712727 0 211.551781 172.128262 383.712727 383.712727 383.712727 211.551781 0 383.712727-172.159226 383.712727-383.712727C895.712727 300.415536 723.551781 128.287273 512 128.287273z" fill="#575B66" ></path><path d="M512 673.695256c-17.664722 0-32.00086-14.336138-32.00086-31.99914l0-54.112297c0-52.352533 39.999785-92.352318 75.32751-127.647359 25.887273-25.919957 52.67249-52.67249 52.67249-74.016718 0-53.343368-43.07206-96.735385-95.99914-96.735385-53.823303 0-95.99914 41.535923-95.99914 94.559333 0 17.664722-14.336138 31.99914-32.00086 31.99914s-32.00086-14.336138-32.00086-31.99914c0-87.423948 71.775299-158.559333 160.00086-158.559333s160.00086 72.095256 160.00086 160.735385c0 47.904099-36.32028 84.191695-71.424378 119.295794-27.839699 27.776052-56.575622 56.511974-56.575622 82.3356l0 54.112297C544.00086 659.328155 529.664722 673.695256 512 673.695256z" fill="#575B66" ></path></symbol></svg>',(n=>{var t=(e=(e=document.getElementsByTagName("script"))[e.length-1]).getAttribute("data-injectcss"),e=e.getAttribute("data-disable-injectsvg");if(!e){var i,o,c,d,s,a=function(t,e){e.parentNode.insertBefore(t,e)};if(t&&!n.__iconfont__svg__cssinject__){n.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}i=function(){var t,e=document.createElement("div");e.innerHTML=n._iconfont_svg_string_4936044,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?a(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(i,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),i()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(c=i,d=n.document,s=!1,r(),d.onreadystatechange=function(){"complete"==d.readyState&&(d.onreadystatechange=null,l())})}function l(){s||(s=!0,c())}function r(){try{d.documentElement.doScroll("left")}catch(t){return void setTimeout(r,50)}l()}})(window);
|
16
plus-ui/src/assets/iconfont/iconfont.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"id": "4936044",
|
||||
"name": "no name",
|
||||
"font_family": "iconfont",
|
||||
"css_prefix_text": "icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "577319",
|
||||
"name": "问号",
|
||||
"font_class": "wenhao",
|
||||
"unicode": "e72d",
|
||||
"unicode_decimal": 59181
|
||||
}
|
||||
]
|
||||
}
|
BIN
plus-ui/src/assets/iconfont/iconfont.ttf
Normal file
BIN
plus-ui/src/assets/iconfont/iconfont.woff
Normal file
BIN
plus-ui/src/assets/iconfont/iconfont.woff2
Normal file
BIN
plus-ui/src/assets/icons/svg/PDF.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
plus-ui/src/assets/icons/svg/danggerVerification.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
plus-ui/src/assets/icons/svg/derived.png
Normal file
After Width: | Height: | Size: 922 B |
BIN
plus-ui/src/assets/icons/svg/empty-CZvxqguX.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
plus-ui/src/assets/icons/svg/failure.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
plus-ui/src/assets/icons/svg/file.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
plus-ui/src/assets/icons/svg/file1.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
plus-ui/src/assets/icons/svg/print.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
plus-ui/src/assets/icons/svg/rectification.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
plus-ui/src/assets/icons/svg/successLogo.png
Normal file
After Width: | Height: | Size: 8.7 KiB |
BIN
plus-ui/src/assets/icons/svg/successVerification.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
plus-ui/src/assets/icons/svg/successful.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
plus-ui/src/assets/images/Attendancerate.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
plus-ui/src/assets/images/Group 1000015122.png
Normal file
After Width: | Height: | Size: 6.2 KiB |
BIN
plus-ui/src/assets/images/News.png
Normal file
After Width: | Height: | Size: 390 B |
BIN
plus-ui/src/assets/images/Quality.png
Normal file
After Width: | Height: | Size: 841 B |