Compare commits

..

112 Commits

Author SHA1 Message Date
lcj
a8d8a76fd2 [add] 物资采购联系单模版 2025-08-19 10:10:07 +08:00
a661d4f24c 修改合规性手续模块 2025-08-18 20:16:39 +08:00
118b1820cf 处理消息 2025-08-15 17:02:56 +08:00
zt
f44904a5f1 物流追踪 2025-08-15 16:54:30 +08:00
8326c3110f 修改合规性手续模块 2025-08-15 16:40:23 +08:00
zt
fa5dc0e7ac 与线上同步端口 2025-08-15 11:36:16 +08:00
6bce3c3dea 修改合规性手续附件上传地址 2025-08-15 10:57:33 +08:00
33de0ea8eb 合并 2025-08-15 03:12:55 +08:00
0233c59e32 Merge remote-tracking branch 'origin/lcj' into lcj 2025-08-15 03:10:56 +08:00
b9bad1c006 Merge remote-tracking branch 'origin/lcj' 2025-08-15 03:09:02 +08:00
1cc9186022 111 2025-08-15 03:06:40 +08:00
zt
01678fda6a 物资和设计 2025-08-15 03:04:19 +08:00
e706540fe3 合并 2025-08-14 22:51:11 +08:00
55090acb64 合并 2025-08-14 16:49:54 +08:00
zt
9173e02471 物资和设计 2025-08-14 16:43:40 +08:00
zt
7a9a648d9a 收资,提资清单导出 2025-08-13 21:21:04 +08:00
92d5fefc26 总供应计划 2025-08-13 20:03:22 +08:00
zt
5199f104b9 收资,提资清单导出 2025-08-13 10:11:38 +08:00
a716991576 图纸评审 2025-08-13 09:58:18 +08:00
zt
bb7fa6f71e 收资,提资清单导出 2025-08-12 22:32:21 +08:00
zt
1a7ba72978 收资,提资清单导出 2025-08-12 21:38:56 +08:00
e4d1be276b 图纸评审 2025-08-12 19:04:24 +08:00
zt
f3d0db70f8 设计 2025-08-12 18:59:38 +08:00
ee88d9ea09 代码更新 2025-08-12 16:40:30 +08:00
604d1b6da2 工程量清单 2025-08-12 09:11:43 +08:00
zt
3aa5c53149 bug 2025-08-11 15:45:53 +08:00
55b96c059e Merge remote-tracking branch 'origin/lcj' into lcj 2025-08-10 14:38:21 +08:00
84204a59a3 111 2025-08-10 14:29:11 +08:00
zt
a6c915ce04 考勤,土地 2025-08-09 19:46:37 +08:00
zt
4ad8c2e20c 考勤,土地 2025-08-09 11:50:40 +08:00
5e86cb9b7d 更新 2025-08-08 20:01:40 +08:00
lcj
ad1ca2d429 [update] 人员关联、进度计划 2025-08-08 18:20:51 +08:00
zt
baea1dc7ab 考勤 2025-08-07 16:59:48 +08:00
71f18458d6 解决依赖冲突 2025-08-07 13:09:48 +08:00
86f0f21f86 增加审批流和修改统计bug 2025-08-07 11:05:04 +08:00
zt
0eeab2aadf 产值 2025-08-06 20:27:02 +08:00
ede1b40039 材料 2025-08-06 20:22:09 +08:00
zt
7b9e3a52f0 产值 2025-08-06 20:20:21 +08:00
lcj
054ecd92a1 [add] 查询分包管理人员,用户项目关联添加类型,班组打卡范围 2025-08-06 17:40:30 +08:00
3463845b13 完成库存111 2025-08-06 15:24:56 +08:00
0a0477977f 完成库存 2025-08-05 19:47:29 +08:00
lcj
fcf810ed7a [add] 消息通知 2025-08-05 19:15:37 +08:00
lcj
ce68cca915 [update] 修改施工进度计划、填报 2025-08-05 09:26:39 +08:00
89e88a957f 解决启动错误 2025-08-04 16:43:45 +08:00
c159cda767 修改表结构 2025-08-04 11:06:44 +08:00
lcj
0b3652ff70 [update] 修改app实名,修改施工进度计划和填报逻辑 2025-08-03 00:55:12 +08:00
9cc4ce105e 物资需求计划 2025-08-02 18:00:48 +08:00
zt
9212fb31a7 产值 2025-08-02 17:51:08 +08:00
7a7a40b13e 物资需求计划 2025-08-02 17:28:35 +08:00
zt
7657697d34 产值 2025-08-02 11:35:07 +08:00
e7bbe2f1ca 物资供应总计划 2025-08-01 21:16:26 +08:00
lcj
177fcd5f05 [add] 工单回复添加分包方,施工进度计划 [update] 修改app识别、实名,进度 2025-08-01 19:50:56 +08:00
zt
f030b825aa 产值 2025-08-01 19:06:36 +08:00
efb32a5367 多数据源的项目获取 2025-07-31 20:10:22 +08:00
lcj
1ed47f0ff3 [add] 查询进度填报详情 2025-07-31 19:15:19 +08:00
lcj
7a72c1a4a2 [add] 卷册目录、工程单价 2025-07-31 18:30:48 +08:00
lcj
a8f5c86ce9 [add] 卷册目录、工程单价 2025-07-31 11:15:33 +08:00
18ad351010 1 2025-07-30 10:33:33 +08:00
zt
0b1233339c 修改下生成模板 2025-07-29 17:13:57 +08:00
d45b3cccb8 多数据源的项目获取 2025-07-29 10:07:46 +08:00
lcj
c6efc08650 [add] 获取身份证、银行卡信息,人员实名、打卡,获取打卡信息 2025-07-29 08:56:19 +08:00
e79c6b1ed3 打卡范围 2025-07-28 20:16:33 +08:00
dd6aafde0a 打卡范围 2025-07-28 20:06:59 +08:00
d3bc55ea18 打卡范围 2025-07-28 20:02:03 +08:00
14abcc646b 打卡范围 2025-07-28 19:51:07 +08:00
c2933c68a7 土地流转 2025-07-25 20:56:15 +08:00
lcj
eaac167036 [update] 2025-07-25 15:58:03 +08:00
lcj
b9e9d6e855 [add] 加密放行接口 2025-07-23 11:38:04 +08:00
d08bdea8ec Merge remote-tracking branch 'origin/lcj' into lcj 2025-07-23 11:35:21 +08:00
6aed3167b3 加密问题 2025-07-23 11:33:06 +08:00
lcj
71a9cfafa4 [add] 违规记录 2025-07-23 11:16:37 +08:00
e89c99d2ca 加密问题 2025-07-22 19:25:31 +08:00
lcj
fe7a195362 [update] 修改算法 2025-07-22 09:43:33 +08:00
lcj
ccfe6b8f3e [add] 添加部门和分包关联 2025-07-18 19:32:34 +08:00
aade077977 增加百度云api的人脸和OCR 2025-07-18 18:37:27 +08:00
lcj
3dc6d94d60 [update] 部门、角色、用户关联 2025-07-11 19:14:06 +08:00
lcj
67fa422218 [add] 部门、角色、用户关联 2025-07-11 11:41:15 +08:00
888af08666 测回部门和角色权限逻辑 2025-07-10 18:01:31 +08:00
lcj
e623855b21 [add] 接口文档 2025-07-10 16:00:33 +08:00
lcj
7b9176dff5 [add] 角色,部门校验 2025-07-10 14:55:43 +08:00
lcj
81f4284b9c [add] 添加人员手机号、银行卡加密,添加施工人员分类 2025-07-09 19:51:56 +08:00
lcj
d51c0402ff [add] 添加设计原则,业主需求请求,设计变更,联系单变更、签证审批 2025-07-09 14:13:58 +08:00
lcj
de2012140e [add] 添加所属部门字段 2025-07-08 16:26:32 +08:00
c93565ad9c 添加角色和部门逻辑 2025-07-08 16:23:46 +08:00
019af8a7ae 添加了dept的顶级是否显示隐藏、指定部门是否有子集字段 2025-07-08 11:29:32 +08:00
lcj
67ff23e048 [add] 项目id校验拦截器 2025-07-08 09:27:48 +08:00
lcj
0f9e37b1a8 [update] 修改 2025-07-07 20:01:05 +08:00
lcj
d74f0cd354 [add] 物料接收领料单,明细模块增删改查、按模版导出接口 2025-07-06 14:38:28 +08:00
lcj
348ff6fc2b [add] 工作流按项目分类,设计变更工单、专项方案模块 2025-07-03 20:50:55 +08:00
3997e21d6c 联系单等各个单据的数据录入2 2025-07-03 20:49:08 +08:00
a4ed96f448 联系单等各个单据的数据录入 2025-07-03 20:22:41 +08:00
ed866615c6 联系单模型2 2025-07-03 17:30:09 +08:00
508086c29b 联系单模型 2025-07-03 17:22:21 +08:00
lcj
90c6d9dc69 [add] 图纸管理 2025-07-03 09:51:35 +08:00
lcj
275070a6ae [add] 技术标准管理模块 2025-07-02 15:40:37 +08:00
lcj
7f49b7882c [add] 工作流 2025-07-02 11:18:59 +08:00
lcj
bb9d654d57 [update] 合并代码 2025-07-02 09:22:21 +08:00
lcj
66912c4eb9 [add] 安全、质量知识库接入畅写回调保存文件 [update] 修改斯巴达中获取文件名字方法 2025-06-30 19:51:41 +08:00
lcj
3671f6c81a [add] 添加分包物料管理相关接口 [update] 修改分包包结构,修改知识库部分逻辑 2025-06-27 20:00:51 +08:00
lcj
48fb86cf84 [add] 添加安全、质量知识库,分包工器具,分包工器具记录, 2025-06-26 19:49:24 +08:00
lcj
51bd7ed5d8 [add] 用户文件关联,分包合同管理,分包单位类型,施工人员身份证加解密 2025-06-25 19:47:58 +08:00
lcj
e492c08eef [add] 添加 AI工单 识别记录模块相关逻辑,添加项目与部门关联 2025-06-25 09:08:06 +08:00
lcj
8bf9f47d62 [add] 同步前端代码 2025-06-24 10:44:10 +08:00
lcj
0edd267f78 [add]斯巴达识别图片并保存有问题的图片 [update]修改菜单权限 2025-06-23 19:50:27 +08:00
lcj
e42f1a0b8c [add] 新增AI工单等级设置,工单等级与岗位关联,斯巴达识别获取token接口 2025-06-20 19:56:47 +08:00
lcj
c2dd889c99 [add] 新增萤石摄像头图片定时清理 [update] 修改大屏位置数据返回逻辑 2025-06-19 19:42:26 +08:00
lcj
cd1779fffd [add] 新增萤石摄像头抓拍相关逻辑,获取方阵内光伏板、桩点支柱立架、箱变、逆变器地理信息接口 2025-06-18 19:56:23 +08:00
lcj
9d092facd0 [add] 新增萤石摄像头预置位相关逻辑 [update] 修改萤石摄像头相关逻辑 2025-06-17 18:03:23 +08:00
lcj
784c7c0783 [add] 接入萤石摄像头,新增子项目和摄像头预置位相关逻辑 [update] 修改geojson中方阵等重新上传逻辑 2025-06-13 18:30:05 +08:00
lcj
fbea1c2c2a [update] 修改光伏板和名称匹配逻辑 2025-06-09 19:59:39 +08:00
lcj
5bb201b272 [update] 修改项目列表和进度计划相关逻辑 2025-06-06 19:52:34 +08:00
lcj
e67d555685 [update] 修改进度计划相关逻辑 2025-06-03 19:45:52 +08:00
3467 changed files with 2536731 additions and 5895 deletions

2
drone/.gitignore vendored
View File

@ -45,3 +45,5 @@ nbdist/
!*/build/*.java
!*/build/*.html
!*/build/*.xml
*.lck

View File

@ -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

View File

@ -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:
# 从数据源开关/默认关闭

View File

@ -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:

View File

@ -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 = '/'

View File

@ -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

View File

@ -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>

View File

@ -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",

View File

@ -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>

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

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

View 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'
});
};

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

View File

@ -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;
/**
* 机械型号
*/

View File

@ -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

View 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'
});
};

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

View 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'
});
};

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

View 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 = () => {};

View File

@ -0,0 +1,153 @@
export interface ProgressCategoryVO {
/**
* 主键id
*/
id: string | number;
/**
* 父类别id
*/
pid: string | number;
/**
* 类别名称
*/
name: string;
/**
* 计量方式1数量 2百分比
*/
unitType: string;
/**
* 项目id0表示共用
*/
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;
/**
* 项目id0表示共用
*/
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;
/**
* 项目id0表示共用
*/
projectId?: string | number;
/**
* 日期范围参数
*/
params?: any;
/**
* 方阵id
*/
matrixId?: string | number;
}

View 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'
});
};

View File

@ -0,0 +1,105 @@
export interface ProgressCategoryTemplateVO {
/**
* 类别名称
*/
name: string;
/**
* 计量方式0无 1数量 2百分比
*/
unitType: string;
/**
* 工作类型
*/
workType: string;
/**
* 项目id0表示共用
*/
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;
/**
* 项目id0表示共用
*/
projectId?: string | number;
/**
* 备注
*/
remark?: string;
}
export interface ProgressCategoryTemplateQuery {
/**
* 父类别id
*/
pid?: string | number;
/**
* 类别名称
*/
name?: string;
/**
* 计量方式0无 1数量 2百分比
*/
unitType?: string;
/**
* 工作类型
*/
workType?: string;
/**
* 项目id0表示共用
*/
projectId?: string | number;
/**
* 日期范围参数
*/
params?: any;
}

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

View 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'
});
};

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

View 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'
});
};

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

View File

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

View 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

View 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'
});
};

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

View File

@ -51,6 +51,11 @@ export interface ContractorForm extends BaseEntity {
*/
id?: string | number;
/**
* 主键id
*/
projectId?: string | number;
/**
* 公司名称
*/

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

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

View File

@ -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'
});
};

View File

@ -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;
/**
* 设计总量

View File

@ -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
*/

View File

@ -24,6 +24,11 @@ export interface ProjectTeamMemberVO {
*/
postId: string | number;
/**
* 施工人员姓名
*/
memberName: string;
/**
* 备注
*/

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

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

View 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'
});
};

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

View 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'
});
};

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

View 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'
});
};

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

View 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' }
});
}

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

View File

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

View File

@ -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;
/**
* 日期范围参数

View 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'
});
};

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

View File

@ -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;
/**
* 发生日期

View File

@ -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;
/**
* 参与人列表

View File

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

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

View 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">&#xe72d;</span>
<div class="name">问号</div>
<div class="code-name">&amp;#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"
>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
</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">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
</code></pre>
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
</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">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
</code></pre>
<h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
<pre><code class="language-html">&lt;style&gt;
.icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
&lt;/style&gt;
</code></pre>
<h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
&lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
&lt;/svg&gt;
</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>

View 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";
}

View 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);

View 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
}
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 841 B

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