parent
250497377b
commit
f2899f62a7
@ -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' |
||||
|
@ -1,4 +1,4 @@ |
||||
## 说明 |
||||
基于致博的致博后台管理系统模板 |
||||
基于致博的智慧工地管理系统模板 |
||||
## 使用文档 |
||||
[文档地址](https://www.zilber.cn/doc/rp/) |
||||
|
@ -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": "资源管理" |
||||
} |
||||
} |
Binary file not shown.
After Width: | Height: | Size: 4.0 MiB |
After Width: | Height: | Size: 621 B |
After Width: | Height: | Size: 686 B |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 140 KiB |
@ -0,0 +1,66 @@ |
||||
import axios from '@/utils/request' |
||||
// 查询分页数据:
|
||||
export const iconstructionreportList = (arg) => { |
||||
return axios.request({ |
||||
url: '/iconstructionreport/list', |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
// 查询详情数据:
|
||||
export const iconstructionreportGetById = (arg) => { |
||||
return axios.request({ |
||||
url: `/iconstructionreport/getById`, |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 添加数据:
|
||||
export const iconstructionreportAdd = (arg) => { |
||||
return axios.request({ |
||||
url: '/iconstructionreport/add', |
||||
method: 'post', |
||||
data: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 修改数据:
|
||||
export const iconstructionreportUpdate = (arg) => { |
||||
return axios.request({ |
||||
url: '/iconstructionreport/update', |
||||
method: 'put', |
||||
data: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 删除数据:
|
||||
export const iconstructionreportDelete = (arg) => { |
||||
return axios.request({ |
||||
url: '/iconstructionreport/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', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,115 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { iconstructionreportList, iconstructionreportAdd, iconstructionreportUpdate, iconstructionreportDelete, iconstructionreportGetById, iproductionplanList } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
|
||||
const { proxy } = getCurrentInstance(); |
||||
|
||||
const state = reactive({ |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "施工报告管理", |
||||
baseModelName: '施工报告信息', |
||||
addBtnName: '新增施工报告', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: iconstructionreportList, |
||||
addFn: iconstructionreportAdd, |
||||
editFn: iconstructionreportUpdate, |
||||
deleteFn: iconstructionreportDelete, |
||||
detailFn: iconstructionreportGetById, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
columnCount: 1, |
||||
// rowControl: { |
||||
// showEditBtn: false, |
||||
// showDelBtn: false |
||||
// }, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'constructionReport:page:list', |
||||
edit: 'constructionReport:page:list', |
||||
delete: 'constructionReport:page:list', |
||||
detail: 'constructionReport:page:list', |
||||
}, |
||||
hideselection: true, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
beforeSubmit: function (params) { |
||||
let item = state.planList.find((item) => item.id == params.planId) |
||||
if (item) { |
||||
params.planName = item.planName |
||||
} |
||||
return params |
||||
}, |
||||
planList: [] |
||||
}) |
||||
onMounted(() => { |
||||
getPlanList() |
||||
}) |
||||
function getPlanList(params) { |
||||
iproductionplanList({ pageNo: 1, pageSize: 9999 }).then((res) => { |
||||
if (res.code == 200) { |
||||
state.planList = res.data.list |
||||
state.baseModelOptions = proxy.$util.setOptions({ |
||||
attrName: 'options',//树形 |
||||
data: state.baseModelOptions, //待赋值数据源 |
||||
key: "planId", //配置项的key |
||||
res: res, //返回结果 |
||||
path: res.data.list, |
||||
relation: { key: 'value', name: 'label', resKey: 'id', resName: 'planName' }, |
||||
everClear: true, |
||||
hasChildren: true, |
||||
}); |
||||
state.baseFilterOptions = proxy.$util.setOptions({ |
||||
attrName: 'options',//树形 |
||||
data: state.baseFilterOptions, //待赋值数据源 |
||||
key: "planId", //配置项的key |
||||
res: res, //返回结果 |
||||
path: res.data.list, |
||||
relation: { key: 'value', name: 'label', resKey: 'id', resName: 'planName' }, |
||||
everClear: true, |
||||
hasChildren: true, |
||||
}); |
||||
} |
||||
}) |
||||
} |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<BaseTablePage :tableOptions="state"> |
||||
<template v-slot:column> |
||||
<el-table-column type="index" align="center" label="序号" width="70" /> |
||||
<!-- <el-table-column label="材料使用" align="center" prop="materialsUse" /> |
||||
<el-table-column label="人力投入" align="center" prop="manpower" /> |
||||
<el-table-column label="质量安全" align="center" prop="qs" /> |
||||
<el-table-column label="机械设备运行" align="center" prop="equipmentOperation" /> --> |
||||
<el-table-column label="报告日期" align="center" prop="date" /> |
||||
<el-table-column label="报告周期(日/周/月)" align="center" prop="cycle" /> |
||||
<el-table-column label="项目名称" align="center" prop="planName" /> |
||||
<el-table-column label="建议" align="center" prop="advises" /> |
||||
<el-table-column label="总体施工进度" align="center" prop="totalProgress"> |
||||
<template #default="scope"> |
||||
<el-progress :stroke-width="6" :percentage="Number(scope.row.totalProgress)" /> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="创建人" align="center" prop="creator" /> |
||||
<el-table-column label="创建时间" align="center" prop="createTime" /> |
||||
</template> |
||||
<template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="200" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button v-hasPermi="['constructionReport:page:edit']" type="text" icon="EditPen" |
||||
@click="baseScope.handleEdit(scope.$index, scope.row)"> |
||||
修改 |
||||
</el-button> |
||||
<el-button v-hasPermi="['constructionReport:page:remove']" type="text" icon="Delete" |
||||
@click="baseScope.deleteTableData(scope.$index, scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped></style> |
@ -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: '请选择报告日期', |
||||
}, |
||||
}, |
||||
|
||||
|
||||
] |
||||
} |
@ -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', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,75 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { iengineerlogList, iengineerlogAdd, iengineerlogUpdate, iengineerlogDelete, iengineerlogGetById, iproductionplanList } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
|
||||
const { proxy } = getCurrentInstance(); |
||||
|
||||
const state = reactive({ |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "工程日志管理", |
||||
baseModelName: '工程日志信息', |
||||
addBtnName: '新增工程日志', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: iengineerlogList, |
||||
addFn: iengineerlogAdd, |
||||
editFn: iengineerlogUpdate, |
||||
deleteFn: iengineerlogDelete, |
||||
detailFn: iengineerlogGetById, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
columnCount: 1, |
||||
// rowControl: { |
||||
// showEditBtn: false, |
||||
// showDelBtn: false |
||||
// }, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'engineeringLog:page:list', |
||||
edit: 'engineeringLog:page:list', |
||||
delete: 'engineeringLog:page:list', |
||||
detail: 'engineeringLog:page:list', |
||||
}, |
||||
hideselection: true, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
}) |
||||
onMounted(() => { |
||||
}) |
||||
|
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<BaseTablePage :tableOptions="state"> |
||||
<template v-slot:column> |
||||
<el-table-column type="index" align="center" label="序号" width="70" /> |
||||
<el-table-column label="日期" align="center" prop="date" /> |
||||
<el-table-column label="天气" align="center" prop="weather" /> |
||||
<el-table-column label="温度" align="center" prop="temperature" /> |
||||
<el-table-column label="风力" align="center" prop="wind" /> |
||||
<el-table-column label="现场负责人" align="center" prop="principalName" /> |
||||
<el-table-column label="联系方式" align="center" prop="principalTel" /> |
||||
<el-table-column label="施工情况" align="center" prop="constructionSituation" /> |
||||
<el-table-column label="其他事项" align="center" prop="otherBusiness" /> |
||||
<el-table-column label="创建人" align="center" prop="creator" /> |
||||
<el-table-column label="创建时间" align="center" prop="createTime" /> |
||||
</template> |
||||
<template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="200" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button v-hasPermi="['engineeringLog:page:edit']" type="text" icon="EditPen" |
||||
@click="baseScope.handleEdit(scope.$index, scope.row)"> |
||||
修改 |
||||
</el-button> |
||||
<el-button v-hasPermi="['engineeringLog:page:remove']" type="text" icon="Delete" |
||||
@click="baseScope.deleteTableData(scope.$index, scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped></style> |
@ -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: '请输入其他事项',
|
||||
// },
|
||||
// },
|
||||
|
||||
] |
||||
} |
@ -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', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,72 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { iproductionplanList, iproductionplanAdd, iproductionplanUpdate, iproductionplanDelete, iproductionplanGetById } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
|
||||
// const { proxy } = getCurrentInstance(); |
||||
|
||||
const state = reactive({ |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "生产计划管理", |
||||
baseModelName: '生产计划信息', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: iproductionplanList, |
||||
addFn: iproductionplanAdd, |
||||
editFn: iproductionplanUpdate, |
||||
deleteFn: iproductionplanDelete, |
||||
detailFn: iproductionplanGetById, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
columnCount: 1, |
||||
addBtnName:"新增计划", |
||||
// rowControl: { |
||||
// showEditBtn: false, |
||||
// showDelBtn: false |
||||
// }, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'productionPlan:page:list', |
||||
edit: 'productionPlan:page:list', |
||||
delete: 'productionPlan:page:list', |
||||
detail: 'productionPlan:page:list', |
||||
}, |
||||
hideselection: true, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
}) |
||||
|
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<BaseTablePage :tableOptions="state"> |
||||
<template v-slot:column> |
||||
<el-table-column label="计划名称" align="center" prop="planName" /> |
||||
<el-table-column label="项目阶段" align="center" prop="projectStage" /> |
||||
<el-table-column label="计划描述" align="center" prop="description" /> |
||||
<el-table-column label="计划开始时间" align="center" prop="startTime" /> |
||||
<el-table-column label="计划结束时间" align="center" prop="endTime" /> |
||||
<el-table-column label="总工期(天)" align="center" prop="duration" /> |
||||
<el-table-column label="关键节点时间" align="center" prop="keystageTime" /> |
||||
<el-table-column label="计划负责人" align="center" prop="principal" /> |
||||
<el-table-column label="创建人" align="center" prop="creator" /> |
||||
<el-table-column label="创建时间" align="center" prop="createTime" /> |
||||
</template> |
||||
<template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="200" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button v-hasPermi="['productionPlan:page:edit']" type="text" icon="EditPen" |
||||
@click="baseScope.handleEdit(scope.$index, scope.row)"> |
||||
修改 |
||||
</el-button> |
||||
<el-button v-hasPermi="['productionPlan:page:remove']" type="text" icon="Delete" |
||||
@click="baseScope.deleteTableData(scope.$index, scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped></style> |
@ -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: '请输入计划描述',
|
||||
// },
|
||||
// },
|
||||
] |
||||
} |
@ -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', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,112 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { iprogressList, iprogressAdd, iprogressUpdate, iprogressDelete, iprogressGetById, iproductionplanList } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
|
||||
const { proxy } = getCurrentInstance(); |
||||
|
||||
const state = reactive({ |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "进度跟踪管理", |
||||
baseModelName: '进度跟踪信息', |
||||
addBtnName: '新增进度跟踪', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: iprogressList, |
||||
addFn: iprogressAdd, |
||||
editFn: iprogressUpdate, |
||||
deleteFn: iprogressDelete, |
||||
detailFn: iprogressGetById, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
columnCount: 1, |
||||
// rowControl: { |
||||
// showEditBtn: false, |
||||
// showDelBtn: false |
||||
// }, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'progressTracking:page:list', |
||||
edit: 'progressTracking:page:list', |
||||
delete: 'progressTracking:page:list', |
||||
detail: 'progressTracking:page:list', |
||||
}, |
||||
hideselection: true, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
beforeSubmit: function (params) { |
||||
let item = state.planList.find((item) => item.id == params.planId) |
||||
if (item) { |
||||
params.planName = item.planName |
||||
} |
||||
return params |
||||
}, |
||||
planList: [] |
||||
}) |
||||
onMounted(() => { |
||||
getPlanList() |
||||
}) |
||||
function getPlanList(params) { |
||||
iproductionplanList({ pageNo: 1, pageSize: 9999 }).then((res) => { |
||||
if (res.code == 200) { |
||||
state.planList = res.data.list |
||||
state.baseModelOptions = proxy.$util.setOptions({ |
||||
attrName: 'options',//树形 |
||||
data: state.baseModelOptions, //待赋值数据源 |
||||
key: "planId", //配置项的key |
||||
res: res, //返回结果 |
||||
path: res.data.list, |
||||
relation: { key: 'value', name: 'label', resKey: 'id', resName: 'planName' }, |
||||
everClear: true, |
||||
hasChildren: true, |
||||
}); |
||||
state.baseFilterOptions = proxy.$util.setOptions({ |
||||
attrName: 'options',//树形 |
||||
data: state.baseFilterOptions, //待赋值数据源 |
||||
key: "planId", //配置项的key |
||||
res: res, //返回结果 |
||||
path: res.data.list, |
||||
relation: { key: 'value', name: 'label', resKey: 'id', resName: 'planName' }, |
||||
everClear: true, |
||||
hasChildren: true, |
||||
}); |
||||
} |
||||
}) |
||||
} |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<BaseTablePage :tableOptions="state"> |
||||
<template v-slot:column> |
||||
<el-table-column label="项目名称" align="center" prop="planName" /> |
||||
<el-table-column label="当日完成进度 " align="center" prop="dayProgress"> |
||||
<template #default="scope"> |
||||
<el-progress :stroke-width="6" :percentage="Number(scope.row.dayProgress)" /> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="累计完成进度" align="center" prop="accumulativeProgress"> |
||||
<template #default="scope"> |
||||
<el-progress :stroke-width="6" :percentage="Number(scope.row.accumulativeProgress)" /> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="创建人" align="center" prop="creator" /> |
||||
<el-table-column label="创建时间" align="center" prop="createTime" /> |
||||
</template> |
||||
<template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="200" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button v-hasPermi="['progressTracking:page:edit']" type="text" icon="EditPen" |
||||
@click="baseScope.handleEdit(scope.$index, scope.row)"> |
||||
修改 |
||||
</el-button> |
||||
<el-button v-hasPermi="['progressTracking:page:remove']" type="text" icon="Delete" |
||||
@click="baseScope.deleteTableData(scope.$index, scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped></style> |
@ -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: [] |
||||
}, |
||||
}, |
||||
|
||||
] |
||||
} |
@ -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', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,128 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { listOne, addOne, editOne, deleteOne, byIdOne, listTwo, addTwo, editTwo, deleteTwo, byIdTwo } from './api' |
||||
import { baseModelOptions, baseFilterOptions, baseModelOptionstwo, baseFilterOptionstwo } from './options' |
||||
|
||||
const { proxy } = getCurrentInstance(); |
||||
const state = reactive({ |
||||
tabindex: 0, |
||||
show: true, |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "人力信息管理", |
||||
baseModelName: '人力信息', |
||||
addBtnName: '新增资源', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: listOne, |
||||
addFn: addOne, |
||||
editFn: editOne, |
||||
deleteFn: deleteOne, |
||||
detailFn: byIdOne, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
columnCount: 1, |
||||
// rowControl: { |
||||
// showEditBtn: false, |
||||
// showDelBtn: false |
||||
// }, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'resource:page:list', |
||||
edit: 'resource:page:list', |
||||
delete: 'resource:page:list', |
||||
detail: 'resource:page:list', |
||||
}, |
||||
hideselection: true, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
|
||||
}) |
||||
const table = ref() |
||||
function change(i) { |
||||
state.tabindex = i |
||||
state.show = false |
||||
state.getTableFn = i == 0 ? listOne : listTwo |
||||
state.addFn = i == 0 ? addOne : addTwo |
||||
state.editFn = i == 0 ? editOne : editTwo |
||||
state.deleteFn = i == 0 ? deleteOne : deleteTwo |
||||
state.detailFn = i == 0 ? byIdOne : byIdTwo |
||||
state.baseModelOptions = i == 0 ? baseModelOptions() : baseModelOptionstwo() |
||||
state.baseFilterOptions = i == 0 ? baseFilterOptions() : baseFilterOptionstwo() |
||||
state.title = i == 0 ? '人力信息管理' : '材料信息管理' |
||||
state.baseModelName = i == 0 ? '人力信息' : '材料信息' |
||||
setTimeout(() => { |
||||
state.show = true |
||||
}, 50) |
||||
} |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<div class="tabbox"> |
||||
<div @click="change(0)" :class="state.tabindex == 0 ? 'active' : ''" class="topbat">人力信息</div> |
||||
<div @click="change(1)" :class="state.tabindex == 1 ? 'active' : ''" class="topbat">材料信息</div> |
||||
</div> |
||||
<BaseTablePage :tableOptions="state" ref="table" v-if="state.show"> |
||||
<el-table-column label="序号" align="center" type="index" width="70" /> |
||||
<template v-slot:column v-if="state.tabindex == 0"> |
||||
<el-table-column label="人员姓名" align="center" prop="name" /> |
||||
<el-table-column label="工种" align="center" prop="workType" /> |
||||
<el-table-column label="数量(人)" align="center" prop="quantity" /> |
||||
<el-table-column label="计划投入时间(天)" align="center" prop="planDevoteTime" /> |
||||
<el-table-column label="实际投入时间(天)" align="center" prop="actualDevoteTime" /> |
||||
<el-table-column label="预计离场时间" align="center" prop="leaveTime" /> |
||||
</template> |
||||
<template v-slot:column v-else> |
||||
<el-table-column label="材料名称" align="center" prop="name" /> |
||||
<el-table-column label="规格型号" align="center" prop="specification" /> |
||||
<el-table-column label="单位" align="center" prop="unit" /> |
||||
<el-table-column label="计划需求量" align="center" prop="planNeed" /> |
||||
<el-table-column label="实际进厂量" align="center" prop="actualIn" /> |
||||
<el-table-column label="剩余量" align="center" prop="surplus" /> |
||||
<el-table-column label="供应商" align="center" prop="supplierName" /> |
||||
<el-table-column label="采购时间" align="center" prop="purchaseTime" /> |
||||
<el-table-column label="预计使用时间" align="center" prop="planUseTime" /> |
||||
</template> |
||||
<template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="200" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button v-hasPermi="['resource:page:edit']" type="text" icon="EditPen" |
||||
@click="baseScope.handleEdit(scope.$index, scope.row)"> |
||||
修改 |
||||
</el-button> |
||||
<el-button v-hasPermi="['resource:page:remove']" type="text" icon="Delete" |
||||
@click="baseScope.deleteTableData(scope.$index, scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped> |
||||
.tabbox { |
||||
display: flex; |
||||
align-items: center; |
||||
margin-bottom: 15px; |
||||
} |
||||
|
||||
.topbat { |
||||
border: 1px solid #ccc; |
||||
border-radius: 8px; |
||||
color: #333; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
width: 100px; |
||||
height: 45px; |
||||
margin-right: 20px; |
||||
cursor: pointer; |
||||
font-size: 16px; |
||||
} |
||||
|
||||
.active { |
||||
border: 1px solid #1188fb; |
||||
background: #1188fb; |
||||
color: #fff; |
||||
} |
||||
</style> |
@ -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: '请输入规格型号', |
||||
}, |
||||
}, |
||||
] |
||||
} |
@ -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', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,110 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { iresourcescheduleList, iresourcescheduleAdd, iresourcescheduleUpdate, iresourcescheduleDelete, iresourcescheduleGetById, iproductionplanList } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
|
||||
const { proxy } = getCurrentInstance(); |
||||
|
||||
const state = reactive({ |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "资源调度管理", |
||||
baseModelName: '资源调度信息', |
||||
addBtnName: '新增资源调度', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: iresourcescheduleList, |
||||
addFn: iresourcescheduleAdd, |
||||
editFn: iresourcescheduleUpdate, |
||||
deleteFn: iresourcescheduleDelete, |
||||
detailFn: iresourcescheduleGetById, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
columnCount: 1, |
||||
// rowControl: { |
||||
// showEditBtn: false, |
||||
// showDelBtn: false |
||||
// }, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'resourceScheduling:page:list', |
||||
edit: 'resourceScheduling:page:list', |
||||
delete: 'resourceScheduling:page:list', |
||||
detail: 'resourceScheduling:page:list', |
||||
}, |
||||
hideselection: true, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
beforeSubmit: function (params) { |
||||
let item = state.planList.find((item) => item.id == params.planId) |
||||
if (item) { |
||||
params.planName = item.planName |
||||
} |
||||
return params |
||||
}, |
||||
planList: [] |
||||
}) |
||||
onMounted(() => { |
||||
getPlanList() |
||||
}) |
||||
function getPlanList(params) { |
||||
iproductionplanList({ pageNo: 1, pageSize: 9999 }).then((res) => { |
||||
if (res.code == 200) { |
||||
state.planList = res.data.list |
||||
state.baseModelOptions = proxy.$util.setOptions({ |
||||
attrName: 'options',//树形 |
||||
data: state.baseModelOptions, //待赋值数据源 |
||||
key: "planId", //配置项的key |
||||
res: res, //返回结果 |
||||
path: res.data.list, |
||||
relation: { key: 'value', name: 'label', resKey: 'id', resName: 'planName' }, |
||||
everClear: true, |
||||
hasChildren: true, |
||||
}); |
||||
state.baseFilterOptions = proxy.$util.setOptions({ |
||||
attrName: 'options',//树形 |
||||
data: state.baseFilterOptions, //待赋值数据源 |
||||
key: "planId", //配置项的key |
||||
res: res, //返回结果 |
||||
path: res.data.list, |
||||
relation: { key: 'value', name: 'label', resKey: 'id', resName: 'planName' }, |
||||
everClear: true, |
||||
hasChildren: true, |
||||
}); |
||||
} |
||||
}) |
||||
} |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<BaseTablePage :tableOptions="state"> |
||||
<template v-slot:column> |
||||
<el-table-column label="计划名称" align="center" prop="planName" /> |
||||
<el-table-column label="当前进度" align="center" prop="currentProgress"> |
||||
<template #default="scope"> |
||||
<el-progress :stroke-width="6" :percentage="Number(scope.row.currentProgress)" /> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="计划开始时间" align="center" prop="startTime" /> |
||||
<el-table-column label="计划结束时间" align="center" prop="endTime" /> |
||||
<el-table-column label="调度建议" align="center" prop="advises" /> |
||||
<el-table-column label="创建人" align="center" prop="creator" /> |
||||
<el-table-column label="创建时间" align="center" prop="createTime" /> |
||||
</template> |
||||
<template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="200" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button v-hasPermi="['resourceScheduling:page:edit']" type="text" icon="EditPen" |
||||
@click="baseScope.handleEdit(scope.$index, scope.row)"> |
||||
修改 |
||||
</el-button> |
||||
<el-button v-hasPermi="['resourceScheduling:page:remove']" type="text" icon="Delete" |
||||
@click="baseScope.deleteTableData(scope.$index, scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped></style> |
@ -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: [] |
||||
}, |
||||
}, |
||||
|
||||
] |
||||
} |
@ -0,0 +1,51 @@ |
||||
import axios from '@/utils/request' |
||||
// 查询分页数据:
|
||||
export const iuserList = (arg) => { |
||||
return axios.request({ |
||||
url: '/iuser/list', |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json' |
||||
}) |
||||
} |
||||
// 查询详情数据:
|
||||
export const iuserGetById = (arg) => { |
||||
return axios.request({ |
||||
url: `/iuser/getById`, |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json' |
||||
}) |
||||
} |
||||
|
||||
// 添加数据:
|
||||
export const iuserAdd = (arg) => { |
||||
return axios.request({ |
||||
url: '/iuser/add', |
||||
method: 'post', |
||||
data: arg, |
||||
dataType: 'json' |
||||
}) |
||||
} |
||||
|
||||
// 修改数据:
|
||||
export const IuserUpdate = (arg) => { |
||||
return axios.request({ |
||||
url: '/iuser/update', |
||||
method: 'put', |
||||
data: arg, |
||||
dataType: 'json' |
||||
}) |
||||
} |
||||
|
||||
// 删除数据:
|
||||
export const iuserDelete = (arg) => { |
||||
return axios.request({ |
||||
url: '/iuser/delete', |
||||
method: 'delete', |
||||
params: { |
||||
id: arg.id[0] |
||||
}, |
||||
dataType: 'json' |
||||
}) |
||||
} |
@ -0,0 +1,66 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { iuserList, iuserAdd, IuserUpdate, iuserDelete, iuserGetById } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
|
||||
// const { proxy } = getCurrentInstance(); |
||||
|
||||
const state = reactive({ |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "实名管理", |
||||
baseModelName: '实名信息', |
||||
addBtnName: '新增人员', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: iuserList, |
||||
addFn: iuserAdd, |
||||
editFn: IuserUpdate, |
||||
deleteFn: iuserDelete, |
||||
detailFn: iuserGetById, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
columnCount: 1, |
||||
hideselection:true, |
||||
// rowControl: { |
||||
// showEditBtn: false, |
||||
// showDelBtn: false |
||||
// }, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'realName:page:list', |
||||
edit: 'realName:page:list', |
||||
delete: 'realName:page:list', |
||||
detail: 'realName:page:list', |
||||
}, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
}) |
||||
|
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<BaseTablePage :tableOptions="state"> |
||||
<template v-slot:column> |
||||
<el-table-column type="index" align="center" label="序号" width="70" /> |
||||
<el-table-column label="姓名" align="center" prop="name" /> |
||||
<el-table-column label="身份证" align="center" prop="idCard" /> |
||||
<el-table-column label="工种" align="center" prop="workType" /> |
||||
<el-table-column label="联系方式" align="center" prop="tel" /> |
||||
<el-table-column label="录入时间" align="center" prop="createTime" /> |
||||
</template> |
||||
<template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="300" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button plain type="text" icon="Edit" @click="baseScope.handleEdit(scope.$index, scope.row)" |
||||
v-hasPermi="['realName:page:edit']">修改</el-button> |
||||
<el-button type="text" @click="baseScope.deleteTableData(scope.$index, scope.row)" |
||||
v-hasPermi="['realName:page:remove']" icon="Delete">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped></style> |
@ -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: '请输入联系方式', |
||||
}, |
||||
}, |
||||
|
||||
] |
||||
} |
@ -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', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,65 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { isafeList, isafeAdd, isafeUpdate, isafeDelete, isafeGetById, iproductionplanList } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
|
||||
const { proxy } = getCurrentInstance(); |
||||
|
||||
const state = reactive({ |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "安全教育管理", |
||||
baseModelName: '安全教育信息', |
||||
addBtnName: '新增安全教育', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: isafeList, |
||||
addFn: isafeAdd, |
||||
editFn: isafeUpdate, |
||||
deleteFn: isafeDelete, |
||||
detailFn: isafeGetById, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
columnCount: 1, |
||||
// rowControl: { |
||||
// showEditBtn: false, |
||||
// showDelBtn: false |
||||
// }, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'safetyEducation:page:list', |
||||
edit: 'safetyEducation:page:list', |
||||
delete: 'safetyEducation:page:list', |
||||
detail: 'safetyEducation:page:list', |
||||
}, |
||||
hideselection: true, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
}) |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<BaseTablePage :tableOptions="state"> |
||||
<template v-slot:column> |
||||
<el-table-column label="姓名" align="center" prop="name" /> |
||||
<el-table-column label="安全教育时间" align="center" prop="date" /> |
||||
<el-table-column label="创建人" align="center" prop="creator" /> |
||||
<el-table-column label="创建时间" align="center" prop="createTime" /> |
||||
</template> |
||||
<template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="200" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button v-hasPermi="['safetyEducation:page:edit']" type="text" icon="EditPen" |
||||
@click="baseScope.handleEdit(scope.$index, scope.row)"> |
||||
修改 |
||||
</el-button> |
||||
<el-button v-hasPermi="['safetyEducation:page:remove']" type="text" icon="Delete" |
||||
@click="baseScope.deleteTableData(scope.$index, scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped></style> |
@ -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: '请选择安全教育时间', |
||||
}, |
||||
}, |
||||
|
||||
] |
||||
} |
@ -0,0 +1,66 @@ |
||||
import axios from '@/utils/request' |
||||
// 查询分页数据:
|
||||
export const vehicleList = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/list', |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
// 查询详情数据:
|
||||
export const vehicleGetById = (arg) => { |
||||
return axios.request({ |
||||
url: `/vehicle/getById`, |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 添加数据:
|
||||
export const vehicleAdd = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/add', |
||||
method: 'post', |
||||
data: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 修改数据:
|
||||
export const vehicleUpdate = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/update', |
||||
method: 'put', |
||||
data: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 删除数据:
|
||||
export const vehicleDelete = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/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', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,89 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { vehicleList, vehicleAdd, vehicleUpdate, vehicleDelete, vehicleGetById, iproductionplanList } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
|
||||
const { proxy } = getCurrentInstance(); |
||||
|
||||
const state = reactive({ |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "运输车辆管理", |
||||
baseModelName: '运输车辆信息', |
||||
addBtnName: '添加运输车辆', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: vehicleList, |
||||
addFn: vehicleAdd, |
||||
editFn: vehicleUpdate, |
||||
deleteFn: vehicleDelete, |
||||
detailFn: vehicleGetById, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
hideControl: true, |
||||
showAddBtn: false, |
||||
columnCount: 1, |
||||
rowControl: { |
||||
showEditBtn: false, |
||||
showDelBtn: false |
||||
}, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'constructionAchinery:page:list', |
||||
edit: 'constructionAchinery:page:list', |
||||
delete: 'constructionAchinery:page:list', |
||||
detail: 'constructionAchinery:page:list', |
||||
}, |
||||
hideselection: true, |
||||
baseQuery: { scope: 'aotomobile' }, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
|
||||
}) |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<BaseTablePage :tableOptions="state"> |
||||
<template v-slot:column> |
||||
<el-table-column type="index" align="center" label="序号" width="70" /> |
||||
<el-table-column label="设备名称" align="center" prop="deviceName" /> |
||||
<el-table-column label="IMEI" align="center" prop="imei" /> |
||||
<el-table-column label="设备型号" align="center" prop="mcType" /> |
||||
<el-table-column label="设备类型" align="center" prop="mcType"> |
||||
<template #default="scope"> |
||||
{{ scope.row.equipType == 'WIRED' ? '有线' : scope.row.equipType == 'WIRELESS' ? '无线' : '-' }} |
||||
</template> |
||||
</el-table-column> |
||||
|
||||
<el-table-column label="司机姓名" align="center" prop="driverName" /> |
||||
<el-table-column label="司机电话" align="center" prop="driverPhone" /> |
||||
<el-table-column label="车牌号" align="center" prop="vehicleNumber" /> |
||||
<el-table-column label="车架号" align="center" prop="carFrame" /> |
||||
<el-table-column label="激活时间" align="center" prop="activationTime" /> |
||||
<el-table-column label="设备SIM卡号" align="center" prop="sim" /> |
||||
<el-table-column label="平台到期时间" align="center" prop="expiration" /> |
||||
<el-table-column label="客户到期时间" align="center" prop="expiration" /> |
||||
<el-table-column label="是否启用" align="center" prop="createTime"> |
||||
<template #default="scope"> |
||||
{{ scope.row.enabledFlag == '0' ? '不启用' : scope.row.enabledFlag == '1' ? '启用' : '-' }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="备注" align="center" prop="reMark" /> |
||||
</template> |
||||
<!-- <template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="200" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button v-hasPermi="['constructionAchinery:page:edit']" type="text" icon="EditPen" |
||||
@click="baseScope.handleEdit(scope.$index, scope.row)"> |
||||
修改 |
||||
</el-button> |
||||
<el-button v-hasPermi="['constructionAchinery:page:remove']" type="text" icon="Delete" |
||||
@click="baseScope.deleteTableData(scope.$index, scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> --> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped></style> |
@ -0,0 +1,43 @@ |
||||
export const baseModelOptions = () => { |
||||
return [ |
||||
|
||||
] |
||||
} |
||||
|
||||
export const baseFilterOptions = () => { |
||||
return [ |
||||
{ |
||||
tag: 'el-input', |
||||
label: '设备名称:', |
||||
key: 'deviceName', |
||||
value: '', |
||||
default: '', |
||||
attribute: {//属性
|
||||
type: 'text', |
||||
placeholder: '请输入设备名称', |
||||
}, |
||||
}, |
||||
{ |
||||
tag: 'el-input', |
||||
label: 'IMEI:', |
||||
key: 'imei', |
||||
value: '', |
||||
default: '', |
||||
attribute: {//属性
|
||||
type: 'text', |
||||
placeholder: '请输入IMEI', |
||||
}, |
||||
}, |
||||
{ |
||||
tag: 'el-input', |
||||
label: '设备类型:', |
||||
key: 'mcType', |
||||
value: '', |
||||
default: '', |
||||
attribute: {//属性
|
||||
type: 'text', |
||||
placeholder: '请输入设备类型', |
||||
}, |
||||
}, |
||||
] |
||||
} |
@ -0,0 +1,66 @@ |
||||
import axios from '@/utils/request' |
||||
// 查询分页数据:
|
||||
export const vehicleList = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/list', |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
// 查询详情数据:
|
||||
export const vehicleGetById = (arg) => { |
||||
return axios.request({ |
||||
url: `/vehicle/getById`, |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 添加数据:
|
||||
export const vehicleAdd = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/add', |
||||
method: 'post', |
||||
data: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 修改数据:
|
||||
export const vehicleUpdate = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/update', |
||||
method: 'put', |
||||
data: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 删除数据:
|
||||
export const vehicleDelete = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/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', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,89 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { vehicleList, vehicleAdd, vehicleUpdate, vehicleDelete, vehicleGetById, iproductionplanList } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
|
||||
const { proxy } = getCurrentInstance(); |
||||
|
||||
const state = reactive({ |
||||
baseModelOptions: baseModelOptions(), |
||||
baseFilterOptions: baseFilterOptions(), |
||||
title: "施工机械管理", |
||||
baseModelName: '施工机械信息', |
||||
addBtnName: '添加施工机械', |
||||
editBtnName: '', |
||||
delBtnName: '', |
||||
primaryKey: 'id', |
||||
getTableFn: vehicleList, |
||||
addFn: vehicleAdd, |
||||
editFn: vehicleUpdate, |
||||
deleteFn: vehicleDelete, |
||||
detailFn: vehicleGetById, |
||||
showAddBtn: false, |
||||
showEditBtn: false, |
||||
showDeleteBtn: false, |
||||
hideControl: true, |
||||
columnCount: 1, |
||||
rowControl: { |
||||
showEditBtn: false, |
||||
showDelBtn: false |
||||
}, |
||||
permission: {//菜单管理中添加权限 |
||||
add: 'constructionAchinery:page:list', |
||||
edit: 'constructionAchinery:page:list', |
||||
delete: 'constructionAchinery:page:list', |
||||
detail: 'constructionAchinery:page:list', |
||||
}, |
||||
hideselection: true, |
||||
baseQuery: { scope: 'personal' }, |
||||
pageInfo: { total: 0, base: { limit: 8, current: 1 } }, |
||||
|
||||
}) |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<BaseTablePage :tableOptions="state"> |
||||
<template v-slot:column> |
||||
<el-table-column type="index" align="center" label="序号" width="70" /> |
||||
<el-table-column label="设备名称" align="center" prop="deviceName" /> |
||||
<el-table-column label="IMEI" align="center" prop="imei" /> |
||||
<el-table-column label="设备型号" align="center" prop="mcType" /> |
||||
<el-table-column label="设备类型" align="center" prop="mcType"> |
||||
<template #default="scope"> |
||||
{{ scope.row.equipType == 'WIRED' ? '有线' : scope.row.equipType == 'WIRELESS' ? '无线' : '-' }} |
||||
</template> |
||||
</el-table-column> |
||||
|
||||
<el-table-column label="司机姓名" align="center" prop="driverName" /> |
||||
<el-table-column label="司机电话" align="center" prop="driverPhone" /> |
||||
<el-table-column label="车牌号" align="center" prop="vehicleNumber" /> |
||||
<el-table-column label="车架号" align="center" prop="carFrame" /> |
||||
<el-table-column label="激活时间" align="center" prop="activationTime" /> |
||||
<el-table-column label="设备SIM卡号" align="center" prop="sim" /> |
||||
<el-table-column label="平台到期时间" align="center" prop="expiration" /> |
||||
<el-table-column label="客户到期时间" align="center" prop="expiration" /> |
||||
<el-table-column label="是否启用" align="center" prop="createTime"> |
||||
<template #default="scope"> |
||||
{{ scope.row.enabledFlag == '0' ? '不启用' : scope.row.enabledFlag == '1' ? '启用' : '-' }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="备注" align="center" prop="reMark" /> |
||||
</template> |
||||
<!-- <template #control="baseScope"> |
||||
<el-table-column label="操作" align="center" width="200" fixed="right"> |
||||
<template #default="scope"> |
||||
<el-button v-hasPermi="['constructionAchinery:page:edit']" type="text" icon="EditPen" |
||||
@click="baseScope.handleEdit(scope.$index, scope.row)"> |
||||
修改 |
||||
</el-button> |
||||
<el-button v-hasPermi="['constructionAchinery:page:remove']" type="text" icon="Delete" |
||||
@click="baseScope.deleteTableData(scope.$index, scope.row)">删除</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</template> --> |
||||
</BaseTablePage> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped></style> |
@ -0,0 +1,63 @@ |
||||
export const baseModelOptions = () => { |
||||
return [ |
||||
|
||||
] |
||||
} |
||||
|
||||
export const baseFilterOptions = () => { |
||||
return [ |
||||
{ |
||||
tag: 'el-input', |
||||
label: '设备名称:', |
||||
key: 'deviceName', |
||||
value: '', |
||||
default: '', |
||||
attribute: {//属性
|
||||
type: 'text', |
||||
placeholder: '请输入设备名称', |
||||
}, |
||||
}, |
||||
{ |
||||
tag: 'el-input', |
||||
label: 'IMEI:', |
||||
key: 'imei', |
||||
value: '', |
||||
default: '', |
||||
attribute: {//属性
|
||||
type: 'text', |
||||
placeholder: '请输入IMEI', |
||||
}, |
||||
}, |
||||
{ |
||||
tag: 'el-input', |
||||
label: '设备型号:', |
||||
key: 'mcType', |
||||
value: '', |
||||
default: '', |
||||
attribute: {//属性
|
||||
type: 'text', |
||||
placeholder: '请输入设备型号', |
||||
}, |
||||
}, |
||||
{ |
||||
tag: 'BaseSelect', |
||||
label: '设备类型:', |
||||
key: 'equipType', |
||||
value: '', |
||||
default: '', |
||||
rules: [ |
||||
{ required: true, message: '请选择设备类型', trigger: 'blur' }, |
||||
], |
||||
attribute: { //属性
|
||||
placeholder: '请选择设备类型', |
||||
options: [{ |
||||
value: "WIRED", |
||||
label: "有线" |
||||
},{ |
||||
value: "WIRELESS", |
||||
label: "无线" |
||||
}] |
||||
}, |
||||
}, |
||||
] |
||||
} |
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue