diff --git a/folder-alias.json b/folder-alias.json index a643b7b4..18cac9a9 100644 --- a/folder-alias.json +++ b/folder-alias.json @@ -7,5 +7,11 @@ }, "server/form": { "description": "流程表单配置" + }, + "web/src/views/sitePersonnel": { + "description": "现场人员管理" + }, + "web/src/views/sitePersonnel/realName": { + "description": "实名制与信息管理" } } \ No newline at end of file diff --git a/package.json b/package.json index 25d02719..c39db36e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "zilber-admin", "version": "1.0.0", - "description": "致博后台管理系统", + "description": "智慧工地管理系统", "author": "ChengYu", "license": "MIT", "scripts": { diff --git a/web/.env.development b/web/.env.development index ab4b0e64..eb61da73 100644 --- a/web/.env.development +++ b/web/.env.development @@ -1,10 +1,10 @@ # 页面标题 -VITE_APP_TITLE = 致博管理系统 +VITE_APP_TITLE = 智慧工地管理系统 # 开发环境配置 VITE_APP_ENV = 'development' -# 致博管理系统/开发环境 +# 智慧工地管理系统/开发环境 VITE_APP_BASE_API = '/dev-api' # 开发环境-NODE-工作流接口 VITE_APP_BASE_PROCESS_API = 'http://127.0.0.1:3095/process' diff --git a/web/.env.production b/web/.env.production index c7d7688e..e38b5a98 100644 --- a/web/.env.production +++ b/web/.env.production @@ -1,10 +1,10 @@ # 页面标题 -VITE_APP_TITLE = 致博管理系统 +VITE_APP_TITLE = 智慧工地管理系统 # 生产环境配置 VITE_APP_ENV = 'production' -# 致博管理系统/生产环境 +# 智慧工地管理系统/生产环境 #VITE_APP_BASE_API = 'http://39.100.74.100:8080' VITE_APP_BASE_API = 'http://127.0.0.1:3095/ry' # 生产环境-NODE-工作流接口 diff --git a/web/.env.staging b/web/.env.staging index a0a4710e..a2cb9a98 100644 --- a/web/.env.staging +++ b/web/.env.staging @@ -1,10 +1,10 @@ # 页面标题 -VITE_APP_TITLE = 致博管理系统 +VITE_APP_TITLE = 智慧工地管理系统 # 生产环境配置 VITE_APP_ENV = 'staging' -# 致博管理系统/生产环境 +# 智慧工地管理系统/生产环境 VITE_APP_BASE_API = '/stage-api' # 生产环境-NODE-工作流接口 VITE_APP_BASE_PROCESS_API = 'http://127.0.0.1:3095/process' diff --git a/web/README.md b/web/README.md index bf45be22..d891e2a7 100644 --- a/web/README.md +++ b/web/README.md @@ -1,4 +1,4 @@ ## 说明 -基于致博的致博后台管理系统模板 +基于致博的智慧工地管理系统模板 ## 使用文档 [文档地址](https://www.zilber.cn/doc/rp/) diff --git a/web/folder-alias.json b/web/folder-alias.json new file mode 100644 index 00000000..52f24f09 --- /dev/null +++ b/web/folder-alias.json @@ -0,0 +1,32 @@ +{ + "src/views/constructionScheduling/construction-report": { + "description": "施工报告" + }, + "src/views/constructionScheduling/engineering-log": { + "description": "工程日志" + }, + "src/views/constructionScheduling/resource-scheduling": { + "description": "资源调度" + }, + "src/views/constructionScheduling/production-plan": { + "description": "生产计划" + }, + "src/views/constructionScheduling/progress-tracking": { + "description": "进度跟踪" + }, + "src/views/sitePersonnel/safety-education": { + "description": "安全教育" + }, + "src/views/sitePersonnel/realName": { + "description": "实名制与信息管理" + }, + "src/views/vehicleMachinery/car-manage": { + "description": "运输车辆管理" + }, + "src/views/vehicleMachinery/construction-achinery": { + "description": "施工机械管理" + }, + "src/views/constructionScheduling/resource-management": { + "description": "资源管理" + } +} \ No newline at end of file diff --git a/web/index.html b/web/index.html index cd1b7e97..f05f929d 100644 --- a/web/index.html +++ b/web/index.html @@ -7,7 +7,7 @@ - 致博管理系统 + 智慧工地管理系统 diff --git a/web/src/views/constructionScheduling/construction-report/options.js b/web/src/views/constructionScheduling/construction-report/options.js new file mode 100644 index 00000000..8c559aab --- /dev/null +++ b/web/src/views/constructionScheduling/construction-report/options.js @@ -0,0 +1,235 @@ +export const baseModelOptions = () => { + return [ + { + tag: "el-date-picker", + label: '报告日期:', + key: 'date', + value: '', + default: '', + rules: [ + { required: true, message: '请选择报告日期', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择报告日期', + }, + }, + + { + tag: 'BaseSelect', + label: '报告周期:', + key: 'cycle', + value: '', + default: '', + rules: [ + { required: true, message: '请选择报告周期', trigger: 'blur' }, + ], + attribute: { //属性 + placeholder: '请选择报告周期', + options: [{ + value: "日", + label: "日" + }, { + value: "周", + label: "周" + }, { + value: "月", + label: "月" + }] + }, + }, + { + tag: 'BaseSelect', + label: '项目名称:', + key: 'planId', + value: '', + default: '', + rules: [ + { required: true, message: '请选择项目名称', trigger: 'blur' }, + ], + attribute: { //属性 + placeholder: '请选择项目名称', + options: [] + }, + }, + // { + // tag: 'el-input', + // label: '材料使用:', + // key: 'materialsUse', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请选择材料使用', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入材料使用', + // }, + // }, + // { + // tag: 'el-input', + // label: '人力投入:', + // key: 'manpower', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请选择人力投入', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入人力投入', + // }, + // }, + // { + // tag: 'el-input', + // label: '质量安全:', + // key: 'qs', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请选择质量安全', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入质量安全', + // }, + // }, + // { + // tag: 'el-input', + // label: '机械设备运行:', + // key: 'equipmentOperation', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请选择机械设备运行', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入机械设备运行', + // }, + // }, + { + tag: 'el-input', + label: '建议:', + key: 'advises', + value: '', + default: '', + // rules: [ + // { required: true, message: '请输入报告周期', trigger: 'blur' }, + // ], + attribute: {//属性 + type: 'textarea', + placeholder: '请输入建议', + }, + }, + { + tag: 'el-input-number', + label: '总体进度:', + key: 'totalProgress', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入总体进度', trigger: 'blur' }, + ], + attribute: {//属性 + min: 0, + max: 100, + placeholder: '请输入总体进度', + }, + }, + ] +} + +export const baseFilterOptions = () => { + return [ + { + tag: 'BaseSelect', + label: '项目名称:', + key: 'planId', + value: '', + default: '', + rules: [ + { required: true, message: '请选择项目名称', trigger: 'blur' }, + ], + attribute: { //属性 + placeholder: '请选择项目名称', + options: [] + }, + }, + // { + // tag: 'el-input', + // label: '材料使用:', + // key: 'materialsUse', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请选择材料使用', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入材料使用', + // }, + // }, + // { + // tag: 'el-input', + // label: '人力投入:', + // key: 'manpower', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请选择人力投入', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入人力投入', + // }, + // }, + // { + // tag: 'el-input', + // label: '质量安全:', + // key: 'qs', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请选择质量安全', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入质量安全', + // }, + // }, + // { + // tag: 'el-input', + // label: '机械设备运行:', + // key: 'equipmentOperation', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请选择机械设备运行', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入机械设备运行', + // }, + // }, + + { + tag: "el-date-picker", + label: '报告日期:', + key: 'date', + value: '', + default: '', + rules: [ + { required: true, message: '请选择报告日期', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择报告日期', + }, + }, + + + ] +} \ No newline at end of file diff --git a/web/src/views/constructionScheduling/engineering-log/api.js b/web/src/views/constructionScheduling/engineering-log/api.js new file mode 100644 index 00000000..f50203db --- /dev/null +++ b/web/src/views/constructionScheduling/engineering-log/api.js @@ -0,0 +1,66 @@ +import axios from '@/utils/request' +// 查询分页数据: +export const iengineerlogList = (arg) => { + return axios.request({ + url: '/iengineerlog/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} +// 查询详情数据: +export const iengineerlogGetById = (arg) => { + return axios.request({ + url: `/iengineerlog/getById`, + method: 'get', + params: arg, + dataType: 'json', + + }) +} + +// 添加数据: +export const iengineerlogAdd = (arg) => { + return axios.request({ + url: '/iengineerlog/add', + method: 'post', + data: arg, + dataType: 'json', + + }) +} + +// 修改数据: +export const iengineerlogUpdate = (arg) => { + return axios.request({ + url: '/iengineerlog/update', + method: 'put', + data: arg, + dataType: 'json', + + }) +} + +// 删除数据: +export const iengineerlogDelete = (arg) => { + return axios.request({ + url: '/iengineerlog/delete', + method: 'delete', + params: { + id:arg.id[0] + }, + dataType: 'json', + + }) +} +// 查询分页数据: +export const iproductionplanList = (arg) => { + return axios.request({ + url: '/iproductionplan/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} \ No newline at end of file diff --git a/web/src/views/constructionScheduling/engineering-log/index.vue b/web/src/views/constructionScheduling/engineering-log/index.vue new file mode 100644 index 00000000..089668cb --- /dev/null +++ b/web/src/views/constructionScheduling/engineering-log/index.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/web/src/views/constructionScheduling/engineering-log/options.js b/web/src/views/constructionScheduling/engineering-log/options.js new file mode 100644 index 00000000..285c7fbc --- /dev/null +++ b/web/src/views/constructionScheduling/engineering-log/options.js @@ -0,0 +1,223 @@ +export const baseModelOptions = () => { + function validatePhoneNumber(phoneNumber) { + const regex = /^1[3-9]\d{9}$/; + return regex.test(phoneNumber); + } + const validatePass2 = (rule, value, callback) => { + if (value === '') { + callback(new Error('请输入现场负责人联系方式')) + } else { + if (!validatePhoneNumber(value)) { + callback(new Error('手机号格式不正确')) + return + } + callback() + } + } + return [ + { + tag: "el-date-picker", + label: '日期:', + key: 'date', + value: '', + default: '', + rules: [ + { required: true, message: '请选择日期', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择日期', + }, + }, + { + tag: 'el-input', + label: '天气:', + key: 'weather', + value: '', + default: '', + attribute: {//属性 + type: 'text', + placeholder: '请输入天气', + }, + }, + { + tag: 'el-input', + label: '温度:', + key: 'temperature', + value: '', + default: '', + attribute: {//属性 + type: 'text', + placeholder: '请输入温度', + }, + }, + + { + tag: 'el-input', + label: '风力:', + key: 'wind', + value: '', + default: '', + attribute: {//属性 + type: 'text', + placeholder: '请输入风力', + }, + }, + + { + tag: 'el-input', + label: '现场负责人:', + key: 'principalName', + value: '', + default: '', + rules: [ + { required: true, message: '请输入现场负责人', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入现场负责人', + }, + }, + { + tag: 'el-input', + label: '联系方式:', + key: 'principalTel', + value: '', + default: '', + rules: [ + { required: true, validator: validatePass2, trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入联系方式', + }, + }, + { + tag: 'el-input', + label: '施工情况:', + key: 'constructionSituation', + value: '', + default: '', + attribute: {//属性 + type: 'text', + placeholder: '请输入施工情况', + }, + }, + { + tag: 'el-input', + label: '其他事项:', + key: 'otherBusiness', + value: '', + default: '', + attribute: {//属性 + type: 'textarea', + placeholder: '请输入其他事项', + }, + }, + ] +} + +export const baseFilterOptions = () => { + return [ + { + tag: 'el-input', + label: '现场负责人:', + key: 'principalName', + value: '', + default: '', + rules: [ + { required: true, message: '请选择现场负责人', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入现场负责人', + }, + }, + { + tag: 'el-input', + label: '联系方式:', + key: 'principalTel', + value: '', + default: '', + rules: [ + { required: true, message: '请输入联系方式', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入联系方式', + }, + }, + // { + // tag: "el-date-picker", + // label: '日期:', + // key: 'date', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请选择日期', trigger: 'blur' }, + // ], + // attribute: {//属性 + // valueFormat: "YYYY-MM-DD", + // type: "date", + // placeholder: '请选择日期', + // }, + // }, + // { + // tag: 'el-input', + // label: '温度:', + // key: 'temperature', + // value: '', + // default: '', + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入温度', + // }, + // }, + // { + // tag: 'el-input', + // label: '天气:', + // key: 'weather', + // value: '', + // default: '', + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入天气', + // }, + // }, + // { + // tag: 'el-input', + // label: '风力:', + // key: 'wind', + // value: '', + // default: '', + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入风力', + // }, + // }, + // { + // tag: 'el-input', + // label: '施工情况:', + // key: 'constructionSituation', + // value: '', + // default: '', + // attribute: {//属性 + // type: 'textarea', + // placeholder: '请输入施工情况', + // }, + // }, + // { + // tag: 'el-input', + // label: '其他事项:', + // key: 'otherBusiness', + // value: '', + // default: '', + // attribute: {//属性 + // type: 'textarea', + // placeholder: '请输入其他事项', + // }, + // }, + + ] +} \ No newline at end of file diff --git a/web/src/views/constructionScheduling/production-plan/api.js b/web/src/views/constructionScheduling/production-plan/api.js new file mode 100644 index 00000000..952eb464 --- /dev/null +++ b/web/src/views/constructionScheduling/production-plan/api.js @@ -0,0 +1,56 @@ +import axios from '@/utils/request' +// 查询分页数据: +export const iproductionplanList = (arg) => { + return axios.request({ + url: '/iproductionplan/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} +// 查询详情数据: +export const iproductionplanGetById = (arg) => { + return axios.request({ + url: `/iproductionplan/getById`, + method: 'get', + params: arg, + dataType: 'json', + + }) +} + +// 添加数据: +export const iproductionplanAdd = (arg) => { + return axios.request({ + url: '/iproductionplan/add', + method: 'post', + data: arg, + dataType: 'json', + + }) +} + +// 修改数据: +export const iproductionplanUpdate = (arg) => { + return axios.request({ + url: '/iproductionplan/update', + method: 'put', + data: arg, + dataType: 'json', + + }) +} + +// 删除数据: +export const iproductionplanDelete = (arg) => { + return axios.request({ + url: '/iproductionplan/delete', + method: 'delete', + params: { + id:arg.id[0] + }, + dataType: 'json', + + }) +} \ No newline at end of file diff --git a/web/src/views/constructionScheduling/production-plan/index.vue b/web/src/views/constructionScheduling/production-plan/index.vue new file mode 100644 index 00000000..ad8ca59c --- /dev/null +++ b/web/src/views/constructionScheduling/production-plan/index.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/web/src/views/constructionScheduling/production-plan/options.js b/web/src/views/constructionScheduling/production-plan/options.js new file mode 100644 index 00000000..471fe0cc --- /dev/null +++ b/web/src/views/constructionScheduling/production-plan/options.js @@ -0,0 +1,251 @@ +export const baseModelOptions = () => { + return [ + { + tag: 'el-input', + label: '计划名称:', + key: 'planName', + value: '', + default: '', + rules: [ + { required: true, message: '请输入计划名称', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入计划名称', + }, + }, + { + tag: 'el-input', + label: '项目阶段:', + key: 'projectStage', + value: '', + default: '', + rules: [ + { required: true, message: '请输入项目阶段', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入项目阶段', + }, + }, + { + tag: 'el-input', + label: '计划描述:', + key: 'description', + value: '', + default: '', + rules: [ + { required: true, message: '请输入计划描述', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'textarea', + placeholder: '请输入计划描述', + }, + }, + { + tag: "el-date-picker", + label: '计划开始时间:', + key: 'startTime', + value: '', + default: '', + rules: [ + { required: true, message: '请选择计划开始时间', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择计划开始时间', + }, + }, + { + tag: "el-date-picker", + label: '计划结束时间:', + key: 'endTime', + value: '', + default: '', + rules: [ + { required: true, message: '请选择计划结束时间', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择计划结束时间', + }, + }, + { + tag: 'el-input-number', + label: '总工期(天):', + key: 'duration', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入总工期(天)', trigger: 'blur' }, + ], + attribute: {//属性 + min:0, + placeholder: '请输入总工期(天)', + }, + }, + { + tag: "el-date-picker", + label: '关键节点时间:', + key: 'keystageTime', + value: "", + default: "", + rules: [ + { + required: true, + message: "请选择关键节点时间", + trigger: "blur", + }, + ], + attribute: { + //属性 + placeholder: "请选择关键节点时间", + valueFormat: "YYYY-MM-DD", + type: "date", + }, + }, + { + tag: 'el-input', + label: '计划负责人:', + key: 'principal', + value: '', + default: '', + rules: [ + { required: true, message: '请输入计划负责人', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入计划负责人', + }, + }, + ] +} + +export const baseFilterOptions = () => { + return [ + { + tag: 'el-input', + label: '计划名称:', + key: 'planName', + value: '', + default: '', + rules: [ + { required: true, message: '请输入计划名称', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入计划名称', + }, + }, + { + tag: 'el-input', + label: '项目阶段:', + key: 'projectStage', + value: '', + default: '', + rules: [ + { required: true, message: '请输入项目阶段', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入项目阶段', + }, + }, + + // { + // tag: 'el-input', + // label: '总工期天数:', + // key: 'duration', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请输入总工期天数', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入总工期天数', + // }, + // }, + // { + // tag: "el-date-picker", + // label: '关键节点时间:', + // key: 'keystageTime', + // value: "", + // default: "", + // rules: [ + // { + // required: true, + // message: "请选择关键节点时间", + // trigger: "blur", + // }, + // ], + // attribute: { + // //属性 + // placeholder: "请选择关键节点时间", + // valueFormat: "YYYY-MM-DD", + // type: "date", + // }, + // }, + { + tag: "el-date-picker", + label: '计划开始时间:', + key: 'startTime', + value: '', + default: '', + rules: [ + { required: true, message: '请选择计划开始时间', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择计划开始时间', + }, + }, + { + tag: "el-date-picker", + label: '计划结束时间:', + key: 'endTime', + value: '', + default: '', + rules: [ + { required: true, message: '请选择计划结束时间', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择计划结束时间', + }, + }, + { + tag: 'el-input', + label: '计划负责人:', + key: 'principal', + value: '', + default: '', + rules: [ + { required: true, message: '请输入计划负责人', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入计划负责人', + }, + }, + + // { + // tag: 'el-input', + // label: '计划描述:', + // key: 'description', + // value: '', + // default: '', + // rules: [ + // { required: true, message: '请输入计划描述', trigger: 'blur' }, + // ], + // attribute: {//属性 + // type: 'text', + // placeholder: '请输入计划描述', + // }, + // }, + ] +} \ No newline at end of file diff --git a/web/src/views/constructionScheduling/progress-tracking/api.js b/web/src/views/constructionScheduling/progress-tracking/api.js new file mode 100644 index 00000000..4ba26c75 --- /dev/null +++ b/web/src/views/constructionScheduling/progress-tracking/api.js @@ -0,0 +1,66 @@ +import axios from '@/utils/request' +// 查询分页数据: +export const iprogressList = (arg) => { + return axios.request({ + url: '/iprogress/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} +// 查询详情数据: +export const iprogressGetById = (arg) => { + return axios.request({ + url: `/iprogress/getById`, + method: 'get', + params: arg, + dataType: 'json', + + }) +} + +// 添加数据: +export const iprogressAdd = (arg) => { + return axios.request({ + url: '/iprogress/add', + method: 'post', + data: arg, + dataType: 'json', + + }) +} + +// 修改数据: +export const iprogressUpdate = (arg) => { + return axios.request({ + url: '/iprogress/update', + method: 'put', + data: arg, + dataType: 'json', + + }) +} + +// 删除数据: +export const iprogressDelete = (arg) => { + return axios.request({ + url: '/iprogress/delete', + method: 'delete', + params: { + id:arg.id[0] + }, + dataType: 'json', + + }) +} +// 查询分页数据: +export const iproductionplanList = (arg) => { + return axios.request({ + url: '/iproductionplan/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} \ No newline at end of file diff --git a/web/src/views/constructionScheduling/progress-tracking/index.vue b/web/src/views/constructionScheduling/progress-tracking/index.vue new file mode 100644 index 00000000..fad783aa --- /dev/null +++ b/web/src/views/constructionScheduling/progress-tracking/index.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/web/src/views/constructionScheduling/progress-tracking/options.js b/web/src/views/constructionScheduling/progress-tracking/options.js new file mode 100644 index 00000000..0f5688b1 --- /dev/null +++ b/web/src/views/constructionScheduling/progress-tracking/options.js @@ -0,0 +1,54 @@ +export const baseModelOptions = () => { + return [ + { + tag: 'BaseSelect', + label: '项目名称:', + key: 'planId', + value: '', + default: '', + rules: [ + { required: true, message: '请选择项目名称', trigger: 'blur' }, + ], + attribute: { //属性 + placeholder: '请选择项目名称', + options: [] + }, + }, + { + tag: 'el-input-number', + label: '当日完成进度:', + key: 'dayProgress', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入当日完成进度', trigger: 'blur' }, + ], + attribute: {//属性 + min: 0, + max: 100, + placeholder: '请输入当日完成进度', + }, + }, + + ] +} + +export const baseFilterOptions = () => { + return [ + { + tag: 'BaseSelect', + label: '项目名称:', + key: 'planId', + value: '', + default: '', + rules: [ + { required: true, message: '请选择项目名称', trigger: 'blur' }, + ], + attribute: { //属性 + placeholder: '请选择项目名称', + options: [] + }, + }, + + ] +} \ No newline at end of file diff --git a/web/src/views/constructionScheduling/resource-management/api.js b/web/src/views/constructionScheduling/resource-management/api.js new file mode 100644 index 00000000..b88433a2 --- /dev/null +++ b/web/src/views/constructionScheduling/resource-management/api.js @@ -0,0 +1,98 @@ +import axios from '@/utils/request' +// 查询分页数据: +export const listOne = (arg) => { + return axios.request({ + url: '/imanpower/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} +export const listTwo = (arg) => { + return axios.request({ + url: '/imaterials/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} +// 查询详情数据: +export const byIdOne = (arg) => { + return axios.request({ + url: `/imanpower/getById`, + method: 'get', + params: arg, + dataType: 'json', + + }) +} +export const byIdTwo = (arg) => { + return axios.request({ + url: `/imaterials/getById`, + method: 'get', + params: arg, + dataType: 'json', + + }) +} +// 添加数据: +export const addOne = (arg) => { + return axios.request({ + url: '/imanpower/add', + method: 'post', + data: arg, + dataType: 'json', + }) +} +export const addTwo = (arg) => { + return axios.request({ + url: '/imaterials/add', + method: 'post', + data: arg, + dataType: 'json', + }) +} +// 修改数据: +export const editOne = (arg) => { + return axios.request({ + url: '/imanpower/update', + method: 'put', + data: arg, + dataType: 'json', + + }) +} +export const editTwo = (arg) => { + return axios.request({ + url: '/imaterials/update', + method: 'put', + data: arg, + dataType: 'json', + + }) +} +// 删除数据: +export const deleteOne = (arg) => { + return axios.request({ + url: '/imanpower/delete', + method: 'delete', + params: { + id: arg.id[0] + }, + dataType: 'json', + + }) +} +export const deleteTwo = (arg) => { + return axios.request({ + url: '/imaterials/delete', + method: 'delete', + params: { + id: arg.id[0] + }, + dataType: 'json', + + }) +} diff --git a/web/src/views/constructionScheduling/resource-management/index.vue b/web/src/views/constructionScheduling/resource-management/index.vue new file mode 100644 index 00000000..193a2fda --- /dev/null +++ b/web/src/views/constructionScheduling/resource-management/index.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/web/src/views/constructionScheduling/resource-management/options.js b/web/src/views/constructionScheduling/resource-management/options.js new file mode 100644 index 00000000..1d08555e --- /dev/null +++ b/web/src/views/constructionScheduling/resource-management/options.js @@ -0,0 +1,286 @@ +export const baseModelOptions = () => { + return [ + { + tag: 'el-input', + label: '人员姓名:', + key: 'name', + value: '', + default: '', + rules: [ + { required: true, message: '请输入人员姓名', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入人员姓名', + }, + }, + { + tag: 'el-input', + label: '工种:', + key: 'workType', + value: '', + default: '', + rules: [ + { required: true, message: '请输入工种', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入工种', + }, + }, + { + tag: 'el-input-number', + label: '数量(人):', + key: 'quantity', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入数量', trigger: 'blur' }, + ], + attribute: {//属性 + min: 0, + placeholder: '请输入数量', + }, + }, + { + tag: 'el-input-number', + label: '计划投入时间(天):', + key: 'planDevoteTime', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入计划投入时间', trigger: 'blur' }, + ], + attribute: {//属性 + min: 0, + placeholder: '请输入计划投入时间', + }, + }, + { + tag: 'el-input-number', + label: '实际投入时间(天):', + key: 'actualDevoteTime', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入实际投入时间', trigger: 'blur' }, + ], + attribute: {//属性 + min: 0, + placeholder: '请输入实际投入时间', + }, + }, + { + tag: "el-date-picker", + label: '预计离场时间:', + key: 'leaveTime', + value: '', + default: '', + rules: [ + { required: true, message: '请选择预计离场时间', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择预计离场时间', + }, + }, + + ] +} + +export const baseFilterOptions = () => { + return [ + { + tag: 'el-input', + label: '人员姓名:', + key: 'name', + value: '', + default: '', + rules: [ + { required: true, message: '请输入人员姓名', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入人员姓名', + }, + }, + { + tag: 'el-input', + label: '工种:', + key: 'workType', + value: '', + default: '', + rules: [ + { required: true, message: '请输入工种', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入工种', + }, + }, + + + ] +} + +export const baseModelOptionstwo = () => { + return [{ + tag: 'el-input', + label: '材料名称:', + key: 'name', + value: '', + default: '', + rules: [ + { required: true, message: '请输入材料名称', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入材料名称', + }, + }, + { + tag: 'el-input', + label: '规格型号:', + key: 'specification', + value: '', + default: '', + rules: [ + { required: true, message: '请输入规格型号', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入规格型号', + }, + }, + { + tag: 'el-input', + label: '单位:', + key: 'unit', + value: '', + default: '', + rules: [ + { required: true, message: '请输入单位', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入单位', + }, + }, + { + tag: 'el-input-number', + label: '计划需求量:', + key: 'planNeed', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入计划需求量', trigger: 'blur' }, + ], + attribute: {//属性 + min: 0, + placeholder: '请输入计划需求量', + }, + }, + { + tag: 'el-input-number', + label: '实际进厂量:', + key: 'actualIn', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入实际进厂量', trigger: 'blur' }, + ], + attribute: {//属性 + min: 0, + placeholder: '请输入实际进厂量', + }, + }, + { + tag: 'el-input-number', + label: '剩余量:', + key: 'surplus', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入剩余量', trigger: 'blur' }, + ], + attribute: {//属性 + min: 0, + placeholder: '请输入剩余量', + }, + }, + { + tag: 'el-input', + label: '供应商:', + key: 'supplierName', + value: '', + default: '', + // rules: [ + // { required: true, message: '请输入供应商', trigger: 'blur' }, + // ], + attribute: {//属性 + type: 'text', + placeholder: '请输入供应商', + }, + }, + { + tag: "el-date-picker", + label: '采购时间:', + key: 'purchaseTime', + value: '', + default: '', + // rules: [ + // { required: true, message: '请选择采购时间', trigger: 'blur' }, + // ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择采购时间', + }, + }, { + tag: "el-date-picker", + label: '预计使用时间:', + key: 'planUseTime', + value: '', + default: '', + // rules: [ + // { required: true, message: '请选择预计使用时间', trigger: 'blur' }, + // ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择预计使用时间', + }, + },] +} +export const baseFilterOptionstwo = () => { + return [{ + tag: 'el-input', + label: '材料名称:', + key: 'name', + value: '', + default: '', + rules: [ + { required: true, message: '请输入材料名称', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入材料名称', + }, + }, + { + tag: 'el-input', + label: '规格型号:', + key: 'specification', + value: '', + default: '', + rules: [ + { required: true, message: '请输入规格型号', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入规格型号', + }, + }, + ] +} \ No newline at end of file diff --git a/web/src/views/constructionScheduling/resource-scheduling/api.js b/web/src/views/constructionScheduling/resource-scheduling/api.js new file mode 100644 index 00000000..b07a7f83 --- /dev/null +++ b/web/src/views/constructionScheduling/resource-scheduling/api.js @@ -0,0 +1,66 @@ +import axios from '@/utils/request' +// 查询分页数据: +export const iresourcescheduleList = (arg) => { + return axios.request({ + url: '/iresourceschedule/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} +// 查询详情数据: +export const iresourcescheduleGetById = (arg) => { + return axios.request({ + url: `/iresourceschedule/getById`, + method: 'get', + params: arg, + dataType: 'json', + + }) +} + +// 添加数据: +export const iresourcescheduleAdd = (arg) => { + return axios.request({ + url: '/iresourceschedule/add', + method: 'post', + data: arg, + dataType: 'json', + + }) +} + +// 修改数据: +export const iresourcescheduleUpdate = (arg) => { + return axios.request({ + url: '/iresourceschedule/update', + method: 'put', + data: arg, + dataType: 'json', + + }) +} + +// 删除数据: +export const iresourcescheduleDelete = (arg) => { + return axios.request({ + url: '/iresourceschedule/delete', + method: 'delete', + params: { + id:arg.id[0] + }, + dataType: 'json', + + }) +} +// 查询分页数据: +export const iproductionplanList = (arg) => { + return axios.request({ + url: '/iproductionplan/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} \ No newline at end of file diff --git a/web/src/views/constructionScheduling/resource-scheduling/index.vue b/web/src/views/constructionScheduling/resource-scheduling/index.vue new file mode 100644 index 00000000..d0d88b10 --- /dev/null +++ b/web/src/views/constructionScheduling/resource-scheduling/index.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/web/src/views/constructionScheduling/resource-scheduling/options.js b/web/src/views/constructionScheduling/resource-scheduling/options.js new file mode 100644 index 00000000..82a982ae --- /dev/null +++ b/web/src/views/constructionScheduling/resource-scheduling/options.js @@ -0,0 +1,94 @@ +export const baseModelOptions = () => { + return [ + { + tag: 'BaseSelect', + label: '计划名称:', + key: 'planId', + value: '', + default: '', + rules: [ + { required: true, message: '请选择计划名称', trigger: 'blur' }, + ], + attribute: { //属性 + placeholder: '请选择计划名称', + options: [] + }, + }, + { + tag: 'el-input-number', + label: '当前进度:', + key: 'currentProgress', + value: 0, + default: 0, + rules: [ + { required: true, message: '请输入当前进度', trigger: 'blur' }, + ], + attribute: {//属性 + min: 0, + max: 100, + placeholder: '请输入当前进度', + }, + }, + { + tag: "el-date-picker", + label: '计划开始时间:', + key: 'startTime', + value: '', + default: '', + rules: [ + { required: true, message: '请选择计划开始时间', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择计划开始时间', + }, + }, + { + tag: "el-date-picker", + label: '计划结束时间:', + key: 'endTime', + value: '', + default: '', + rules: [ + { required: true, message: '请选择计划结束时间', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择计划结束时间', + }, + }, + { + tag: 'el-input', + label: '调度建议:', + key: 'advises', + value: '', + default: '', + attribute: {//属性 + type: 'textarea', + placeholder: '请输入调度建议', + }, + }, + ] +} + +export const baseFilterOptions = () => { + return [ + { + tag: 'BaseSelect', + label: '计划名称:', + key: 'planId', + value: '', + default: '', + rules: [ + { required: true, message: '请选择计划名称', trigger: 'blur' }, + ], + attribute: { //属性 + placeholder: '请选择计划名称', + options: [] + }, + }, + + ] +} \ No newline at end of file diff --git a/web/src/views/login.vue b/web/src/views/login.vue index cd290f54..4dc4d9f0 100644 --- a/web/src/views/login.vue +++ b/web/src/views/login.vue @@ -1,28 +1,33 @@ diff --git a/web/src/views/sitePersonnel/realName/options.js b/web/src/views/sitePersonnel/realName/options.js new file mode 100644 index 00000000..195846d2 --- /dev/null +++ b/web/src/views/sitePersonnel/realName/options.js @@ -0,0 +1,155 @@ +export const baseModelOptions = () => { + function validateIDCard(idCard) { + // 15 位身份证号码正则 + const regex15 = /^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}$/; + // 18 位身份证号码正则 + const regex18 = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[0-9Xx]$/; + + return regex15.test(idCard) || regex18.test(idCard); + } + const validatePass = (rule, value, callback) => { + if (value === '') { + callback(new Error('请输入身份证')) + } else { + if (!validateIDCard(value)) { + callback(new Error('身份证格式不正确')) + return + } + callback() + } + } + function validatePhoneNumber(phoneNumber) { + const regex = /^1[3-9]\d{9}$/; + return regex.test(phoneNumber); + } + const validatePass2 = (rule, value, callback) => { + if (value === '') { + callback() + } else { + if (!validatePhoneNumber(value)) { + callback(new Error('手机号格式不正确')) + return + } + callback() + } + } + return [ + { + tag: 'el-input', + label: '姓名:', + key: 'name', + value: '', + default: '', + rules: [ + { required: true, message: '请输入姓名', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入姓名', + }, + }, + { + tag: 'el-input', + label: '身份证:', + key: 'idCard', + value: '', + default: '', + rules: [ + { required: true, validator: validatePass, trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入身份证', + }, + }, + { + tag: 'el-input', + label: '工种:', + key: 'workType', + value: '', + default: '', + // rules: [ + // { required: true, message: '请输入工种', trigger: 'blur' }, + // ], + attribute: {//属性 + type: 'text', + placeholder: '请输入工种', + }, + }, + { + tag: 'el-input', + label: '联系方式:', + key: 'tel', + value: '', + default: '', + rules: [ + { required: false, validator: validatePass2, trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入联系方式', + }, + }, + + ] +} + +export const baseFilterOptions = () => { + return [ + { + tag: 'el-input', + label: '姓名:', + key: 'name', + value: '', + default: '', + rules: [ + { required: true, message: '请输入姓名', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入姓名', + }, + }, + { + tag: 'el-input', + label: '身份证:', + key: 'idCard', + value: '', + default: '', + rules: [ + { required: true, message: '请输入身份证', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入身份证', + }, + }, + { + tag: 'el-input', + label: '工种:', + key: 'workType', + value: '', + default: '', + // rules: [ + // { required: true, message: '请输入工种', trigger: 'blur' }, + // ], + attribute: {//属性 + type: 'text', + placeholder: '请输入工种', + }, + }, + { + tag: 'el-input', + label: '联系方式:', + key: 'tel', + value: '', + default: '', + + attribute: {//属性 + type: 'text', + placeholder: '请输入联系方式', + }, + }, + + ] +} \ No newline at end of file diff --git a/web/src/views/sitePersonnel/safety-education/api.js b/web/src/views/sitePersonnel/safety-education/api.js new file mode 100644 index 00000000..eefff638 --- /dev/null +++ b/web/src/views/sitePersonnel/safety-education/api.js @@ -0,0 +1,66 @@ +import axios from '@/utils/request' +// 查询分页数据: +export const isafeList = (arg) => { + return axios.request({ + url: '/isafe/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} +// 查询详情数据: +export const isafeGetById = (arg) => { + return axios.request({ + url: `/isafe/getById`, + method: 'get', + params: arg, + dataType: 'json', + + }) +} + +// 添加数据: +export const isafeAdd = (arg) => { + return axios.request({ + url: '/isafe/add', + method: 'post', + data: arg, + dataType: 'json', + + }) +} + +// 修改数据: +export const isafeUpdate = (arg) => { + return axios.request({ + url: '/isafe/update', + method: 'put', + data: arg, + dataType: 'json', + + }) +} + +// 删除数据: +export const isafeDelete = (arg) => { + return axios.request({ + url: '/isafe/delete', + method: 'delete', + params: { + id:arg.id[0] + }, + dataType: 'json', + + }) +} +// 查询分页数据: +export const iproductionplanList = (arg) => { + return axios.request({ + url: '/iproductionplan/list', + method: 'get', + params: arg, + dataType: 'json', + + }) +} \ No newline at end of file diff --git a/web/src/views/sitePersonnel/safety-education/index.vue b/web/src/views/sitePersonnel/safety-education/index.vue new file mode 100644 index 00000000..05601b8a --- /dev/null +++ b/web/src/views/sitePersonnel/safety-education/index.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/web/src/views/sitePersonnel/safety-education/options.js b/web/src/views/sitePersonnel/safety-education/options.js new file mode 100644 index 00000000..50020110 --- /dev/null +++ b/web/src/views/sitePersonnel/safety-education/options.js @@ -0,0 +1,69 @@ +export const baseModelOptions = () => { + return [ + { + tag: 'el-input', + label: '姓名:', + key: 'name', + value: '', + default: '', + rules: [ + { required: true, message: '请输入姓名', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入姓名', + }, + }, + { + tag: "el-date-picker", + label: '安全教育时间:', + key: 'date', + value: '', + default: '', + rules: [ + { required: true, message: '请选择安全教育时间', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择安全教育时间', + }, + }, + + ] +} + +export const baseFilterOptions = () => { + return [ + { + tag: 'el-input', + label: '姓名:', + key: 'name', + value: '', + default: '', + rules: [ + { required: true, message: '请输入姓名', trigger: 'blur' }, + ], + attribute: {//属性 + type: 'text', + placeholder: '请输入姓名', + }, + }, + { + tag: "el-date-picker", + label: '安全教育时间:', + key: 'date', + value: '', + default: '', + rules: [ + { required: true, message: '请选择安全教育时间', trigger: 'blur' }, + ], + attribute: {//属性 + valueFormat: "YYYY-MM-DD", + type: "date", + placeholder: '请选择安全教育时间', + }, + }, + + ] +} \ No newline at end of file diff --git a/web/src/views/system/role/options.js b/web/src/views/system/role/options.js index 9237c483..25910650 100644 --- a/web/src/views/system/role/options.js +++ b/web/src/views/system/role/options.js @@ -32,8 +32,8 @@ export const baseModelOptions = () => { tag: 'el-input-number', label: '角色顺序:', key: 'roleSort', - value: '', - default: '', + value: 0, + default: 0, attribute: {//属性 type: 'text', placeholder: '请输入角色顺序', diff --git a/web/src/views/system/user/profile/userAvatar.vue b/web/src/views/system/user/profile/userAvatar.vue index 8e9982aa..a46ee9e3 100644 --- a/web/src/views/system/user/profile/userAvatar.vue +++ b/web/src/views/system/user/profile/userAvatar.vue @@ -1,5 +1,7 @@