Compare commits

..

10 Commits

2044 changed files with 2456983 additions and 1309 deletions

View File

@ -5,7 +5,11 @@ VITE_APP_TITLE = 新能源项目管理平台
VITE_APP_ENV = 'development' 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/ # 应用访问路径 例如使用前缀 /admin/
VITE_APP_CONTEXT_PATH = '/' VITE_APP_CONTEXT_PATH = '/'

View File

@ -14,7 +14,7 @@ VITE_APP_MONITOR_ADMIN = '/admin/applications'
VITE_APP_SNAILJOB_ADMIN = '/snail-job' 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 # 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip VITE_BUILD_COMPRESS = gzip

View File

@ -4,7 +4,7 @@
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="renderer" content="webkit" /> <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" /> <link rel="icon" href="/favicon.ico" />
<title>新能源项目管理平台</title> <title>新能源项目管理平台</title>
<!--[if lt IE 11 <!--[if lt IE 11
@ -209,6 +209,8 @@
<div class="load_title">正在加载系统资源,请耐心等待</div> <div class="load_title">正在加载系统资源,请耐心等待</div>
</div> </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> <script type="module" src="/src/main.ts"></script>
</body> </body>
</html> </html>

View File

@ -20,8 +20,10 @@
"url": "https://gitee.com/JavaLionLi/plus-ui.git" "url": "https://gitee.com/JavaLionLi/plus-ui.git"
}, },
"dependencies": { "dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"@element-plus/icons-vue": "2.3.1", "@element-plus/icons-vue": "2.3.1",
"@highlightjs/vue-plugin": "2.1.0", "@highlightjs/vue-plugin": "2.1.0",
"@turf/turf": "^7.2.0",
"@vueup/vue-quill": "1.2.0", "@vueup/vue-quill": "1.2.0",
"@vueuse/core": "11.3.0", "@vueuse/core": "11.3.0",
"animate.css": "4.1.1", "animate.css": "4.1.1",
@ -33,21 +35,32 @@
"echarts": "5.5.0", "echarts": "5.5.0",
"element-plus": "2.8.8", "element-plus": "2.8.8",
"esbuild": "^0.25.0", "esbuild": "^0.25.0",
"ezuikit-js": "^8.1.10",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"fuse.js": "7.0.0", "fuse.js": "7.0.0",
"highlight.js": "11.9.0", "highlight.js": "11.9.0",
"image-conversion": "2.1.1", "image-conversion": "2.1.1",
"js-cookie": "3.0.5", "js-cookie": "3.0.5",
"js-md5": "^0.8.3",
"jsencrypt": "3.3.2", "jsencrypt": "3.3.2",
"jszip": "^3.10.1",
"lodash": "^4.17.21",
"md5": "^2.3.0",
"mitt": "^3.0.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"ol": "^10.5.0",
"pinia": "2.2.6", "pinia": "2.2.6",
"screenfull": "6.0.2", "screenfull": "6.0.2",
"spark-md5": "^3.0.2",
"vue": "3.5.13", "vue": "3.5.13",
"vue-cropper": "1.1.1", "vue-cropper": "1.1.1",
"vue-i18n": "10.0.5", "vue-i18n": "10.0.5",
"vue-json-pretty": "2.4.0", "vue-json-pretty": "2.4.0",
"vue-print-nb": "^1.7.5",
"vue-router": "4.4.5", "vue-router": "4.4.5",
"vue-types": "5.1.3", "vue-types": "5.1.3",
"vue3-print-nb": "^0.1.4",
"vue3-scroll-seamless": "^1.0.6",
"vxe-table": "4.5.22" "vxe-table": "4.5.22"
}, },
"devDependencies": { "devDependencies": {
@ -70,6 +83,7 @@
"fast-glob": "3.3.2", "fast-glob": "3.3.2",
"globals": "15.12.0", "globals": "15.12.0",
"postcss": "8.4.36", "postcss": "8.4.36",
"postcss-px-to-viewport": "^1.1.1",
"prettier": "3.2.5", "prettier": "3.2.5",
"sass": "1.72.0", "sass": "1.72.0",
"typescript": "5.7.2", "typescript": "5.7.2",

View File

@ -1,4 +1,4 @@
<template> <template loading="true">
<el-config-provider :locale="appStore.locale" :size="appStore.size"> <el-config-provider :locale="appStore.locale" :size="appStore.size">
<router-view /> <router-view />
</el-config-provider> </el-config-provider>
@ -8,13 +8,33 @@
import useSettingsStore from '@/store/modules/settings'; import useSettingsStore from '@/store/modules/settings';
import { handleThemeStyle } from '@/utils/theme'; import { handleThemeStyle } from '@/utils/theme';
import useAppStore from '@/store/modules/app'; import useAppStore from '@/store/modules/app';
import { getProjectTeam } from './utils/projectTeam';
const appStore = useAppStore(); const appStore = useAppStore();
onMounted(() => { onMounted(() => {
nextTick(() => { nextTick(() => {
// 初始化主题样式 // 初始化主题样式
handleThemeStyle(useSettingsStore().theme); handleThemeStyle(useSettingsStore().theme);
getProjectTeam();
}); });
}); });
</script> </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
*/ */
id?: string | number; id?: string | number;
principalPhone: string | number;
provider: string | number;
/** /**
* 机械名称 * 机械名称
*/ */
@ -82,7 +83,8 @@ export interface MachineryQuery extends PageQuery {
* 机械名称 * 机械名称
*/ */
machineryName?: string; machineryName?: string;
principalPhone: string | number;
provider: string | number;
/** /**
* 机械型号 * 机械型号
*/ */

View File

@ -45,6 +45,8 @@ export interface CompanyForm extends BaseEntity {
* 公司名称 * 公司名称
*/ */
companyName?: string; companyName?: string;
principalPhone?: string;
principal?: string;
/** /**
* 项目id * 项目id
@ -72,6 +74,8 @@ export interface CompanyQuery extends PageQuery {
* 公司名称 * 公司名称
*/ */
companyName?: string; companyName?: string;
principalPhone?: string;
principal?: string;
/** /**
* 项目id * 项目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 { 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 * @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 * @param data
@ -61,3 +109,97 @@ export const delConstructionUser = (id: string | number | Array<string | number>
method: 'delete' 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 { ContractorVO } from '@/api/project/contractor/types';
import { ProjectTeamVO } from '@/api/project/projectTeam/types'; import { ProjectTeamVO } from '@/api/project/projectTeam/types';
import { S } from 'node_modules/vite/dist/node/types.d-aGj9QkWt';
export interface ConstructionUserVO { export interface ConstructionUserVO {
/** /**
@ -182,6 +183,118 @@ export interface ConstructionUserVO {
*/ */
createTime: string; 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 { export interface ConstructionUserForm extends BaseEntity {
/** /**
@ -218,6 +331,10 @@ export interface ConstructionUserForm extends BaseEntity {
* 分包公司id * 分包公司id
*/ */
contractorId?: string | number; contractorId?: string | number;
/**
* 结算方式
*/
wageMeasureUnit?: string | number;
/** /**
* 班组id * 班组id
@ -345,6 +462,11 @@ export interface ConstructionUserForm extends BaseEntity {
remark?: string; remark?: string;
} }
export interface ConstructionUserStatusForm {
status: number | string;
idList: Array<string | number>;
}
export interface ConstructionUserQuery extends PageQuery { export interface ConstructionUserQuery extends PageQuery {
/** /**
* 微信id * 微信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?: 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 request from '@/utils/request';
import { AxiosPromise } from 'axios'; 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 * @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 * @param id
@ -61,3 +151,26 @@ export const delProject = (id: string | number | Array<string | number>) => {
method: 'delete' 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
*/ */
id: string | number; id: string;
/** /**
* 项目名称 * 项目名称
@ -13,7 +13,7 @@ export interface ProjectVO {
* 项目简称 * 项目简称
*/ */
shortName: string; shortName: string;
designId: string;
/** /**
* 父项目id * 父项目id
*/ */
@ -37,12 +37,12 @@ export interface ProjectVO {
/** /**
* 项目类型 * 项目类型
*/ */
type: string; projectType: string;
/** /**
* 项目类型1光伏 2风电 * 项目类型1光伏 2风电
*/ */
isType: number; projectCategory: number;
/** /**
* 删除时间 * 删除时间
@ -113,6 +113,25 @@ export interface ProjectVO {
* 创建时间 * 创建时间
*/ */
createTime: string; 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 { export interface ProjectForm extends BaseEntity {
@ -146,6 +165,16 @@ export interface ProjectForm extends BaseEntity {
*/ */
picUrl?: string; picUrl?: string;
/**
* 经度
*/
lng?: string;
/**
* 纬度
*/
lat?: string;
/** /**
* 备注 * 备注
*/ */
@ -154,12 +183,12 @@ export interface ProjectForm extends BaseEntity {
/** /**
* 项目类型 * 项目类型
*/ */
type?: string; projectType?: string;
/** /**
* 项目类型1光伏 2风电 * 项目类型1光伏 2风电
*/ */
isType?: number; projectCategory?: number;
/** /**
* 删除时间 * 删除时间
@ -197,9 +226,14 @@ export interface ProjectForm extends BaseEntity {
onStreamTime?: string; 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风电 * 项目类型1光伏 2风电
*/ */
isType?: number; projectCategory?: number;
/** /**
* 删除时间 * 删除时间
@ -273,6 +307,16 @@ export interface ProjectQuery extends PageQuery {
*/ */
projectSite?: string; projectSite?: string;
/**
* 经度
*/
lng?: string;
/**
* 纬度
*/
lat?: string;
/** /**
* 负责人 * 负责人
*/ */
@ -299,9 +343,14 @@ export interface ProjectQuery extends PageQuery {
onStreamTime?: string; 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
*/ */
id?: string | number; id?: string | number;
peopleNumber?: string | number;
/** /**
* 项目id * 项目id
*/ */
@ -62,7 +62,7 @@ export interface ProjectTeamQuery extends PageQuery {
* 项目id * 项目id
*/ */
projectId?: string | number; projectId?: string | number;
peopleNumber?: string | number;
/** /**
* 班组名称 * 班组名称
*/ */
@ -84,7 +84,7 @@ export interface ProjectTeamForemanResp {
* 班组id * 班组id
*/ */
id: string | number; id: string | number;
foremanList: foremanQuery[];
/** /**
* 班组名称 * 班组名称
*/ */
@ -94,7 +94,9 @@ export interface ProjectTeamForemanResp {
* 项目id * 项目id
*/ */
projectId: string | number; projectId: string | number;
}
export interface foremanQuery {
/** /**
* 班组长id * 班组长id
*/ */

View File

@ -24,6 +24,11 @@ export interface ProjectTeamMemberVO {
*/ */
postId: string | number; 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' 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 { 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; score: number;
id: string | number;
file: string;
/**
* 考试类型1线上考试 2线下考试
*/
/**
* 考试时间(时间戳/秒)
*/
examTime: number;
/** /**
* 用时时间(时间戳/秒) * 用时时间(时间戳/秒)
@ -38,11 +22,6 @@ export interface QuestionUserAnswerVO {
* 及格线/总分格式60,100 * 及格线/总分格式60,100
*/ */
pass: string; pass: string;
/**
* 文件地址
*/
file: string;
} }
export interface QuestionUserAnswerForm extends BaseEntity { export interface QuestionUserAnswerForm extends BaseEntity {
@ -50,7 +29,8 @@ export interface QuestionUserAnswerForm extends BaseEntity {
* 主键id * 主键id
*/ */
id?: string | number; id?: string | number;
teamId?: string | number;
userName?: string;
/** /**
* 项目id * 项目id
*/ */
@ -64,18 +44,23 @@ export interface QuestionUserAnswerForm extends BaseEntity {
/** /**
* 题库id列表 * 题库id列表
*/ */
bankIdList: Array<string | number>; bankId?: string | number;
/** /**
* 答案列表 * 答案列表
*/ */
answerList: Array<string>; answer?: string;
/** /**
* 得分 * 得分
*/ */
score?: number; score?: number;
/**
* 考试时间(时间戳/秒)
*/
examTime?: number;
/** /**
* 用时时间(时间戳/秒) * 用时时间(时间戳/秒)
*/ */
@ -93,45 +78,17 @@ export interface QuestionUserAnswerForm extends BaseEntity {
} }
export interface QuestionUserAnswerQuery extends PageQuery { export interface QuestionUserAnswerQuery extends PageQuery {
/**
* 项目id
*/
projectId?: string | number;
/** /**
* 用户id * 用户id
*/ */
userId?: string | number; userId?: string | number;
teamId?: string | number;
userName?: string;
projectId?: string | number;
/** /**
* 题库id列表 * 考试类型1线上考试 2线下考试
*/ */
bankIdList: Array<string | number>; examType?: string;
/**
* 答案列表
*/
answerList: Array<string>;
/**
* 得分
*/
score?: number;
/**
* 用时时间(时间戳/秒)
*/
takeTime?: number;
/**
* 及格线/总分格式60,100
*/
pass?: string;
/**
* 文件地址
*/
file?: 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
*/ */
id?: string | number; id?: string | number;
creatorName?: string;
/** /**
* 项目id * 项目id
@ -189,6 +190,7 @@ export interface SafetyLogQuery extends PageQuery {
* 项目id * 项目id
*/ */
projectId?: string | number; projectId?: string | number;
creatorName?: string;
/** /**
* 发生日期 * 发生日期

View File

@ -1,6 +1,7 @@
import { IdAndNameVO } from '@/api/types'; import { IdAndNameVO } from '@/api/types';
export interface TeamMeetingVO { export interface TeamMeetingVO {
pictureUrlList: Array<string>;
/** /**
* 主键id * 主键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 { OssQuery, OssVO } from './types';
import { AxiosPromise } from 'axios'; import { AxiosPromise } from 'axios';
@ -26,3 +26,8 @@ export function delOss(ossId: string | number | Array<string | number>) {
method: 'delete' 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

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