diff --git a/ah-jjzhgd-web/src/api/basic/projectCost.js b/ah-jjzhgd-web/src/api/basic/projectCost.js new file mode 100644 index 0000000..0e60f89 --- /dev/null +++ b/ah-jjzhgd-web/src/api/basic/projectCost.js @@ -0,0 +1,37 @@ +import request from '@/utils/request' + +// 查询工程成本列表 +export function getProjectCostList(data) { + return request({ + url: '/background/back/area/getProCostList', + method: 'get', + params: data + }) +} + +// 新增工程成本 +export function addProjectCostItem(data) { + return request({ + url: '/background/back/area/addCost', + method: 'post', + data + }) +} + +// 编辑工程成本 +export function updateProjectCostItem(data) { + return request({ + url: '/background/back/area/updateCost', + method: 'post', + data + }) +} + +// 删除工程成本 +export function deleteProjectCostItem(data) { + return request({ + url: '/background/back/area/deleteCost', + method: 'post', + data + }) +} diff --git a/ah-jjzhgd-web/src/api/car-man/helmet.js b/ah-jjzhgd-web/src/api/car-man/helmet.js new file mode 100644 index 0000000..7e34817 --- /dev/null +++ b/ah-jjzhgd-web/src/api/car-man/helmet.js @@ -0,0 +1,46 @@ +import request from '@/utils/request' + +// 查询安全帽 +export function getHelmet(data) { + return request({ + url: '/background/back/personnel/getBindDetail', + method: 'get', + params: data + }) +} + +// 修改安全帽绑定 +export function updateHelmet(data) { + return request({ + url: '/background/back/personnel/bindDev', + method: 'post', + data + }) +} + +// 绑定安全帽 +export function bindHelmet(data) { + return request({ + url: '/background/back/personnel/bindDev', + method: 'post', + data + }) +} + +// 解绑安全帽 +export function unbindHelmet(data) { + return request({ + url: '/background/back/personnel/delBind', + method: 'get', + params: data + }) +} + +// 获取安全帽列表 +export function getHelmetList(data) { + return request({ + url: '/background/back/device/getDeviceListByType', + method: 'get', + params: data + }) +} diff --git a/ah-jjzhgd-web/src/views/basic/project/components/CostTable.vue b/ah-jjzhgd-web/src/views/basic/project/components/CostTable.vue new file mode 100644 index 0000000..5f3cb5a --- /dev/null +++ b/ah-jjzhgd-web/src/views/basic/project/components/CostTable.vue @@ -0,0 +1,263 @@ + + + diff --git a/ah-jjzhgd-web/src/views/basic/project/index.vue b/ah-jjzhgd-web/src/views/basic/project/index.vue index 8bcb291..37606eb 100644 --- a/ah-jjzhgd-web/src/views/basic/project/index.vue +++ b/ah-jjzhgd-web/src/views/basic/project/index.vue @@ -103,6 +103,7 @@ @@ -174,6 +199,8 @@ import { } from '@/api/car-man/staff' import ProfessionSelect from '@/views/man-car/staff/components/ProfessionSelect.vue' import AccessRecordTable from '@/views/man-car/staff/components/AccessRecordTable.vue' +import HelmetSelect from '@/views/man-car/staff/components/HelmetSelect.vue' +import { bindHelmet, getHelmet, unbindHelmet, updateHelmet } from '@/api/car-man/helmet' const defaultTmp = { teamId: '', @@ -183,8 +210,13 @@ const defaultTmp = { userType: '', userId: '' } + +const defaultTmp2 = { + devId: '' +} + export default { - components: { ProfessionSelect, TeamSelect, ProjectSelect, Pagination, AccessRecordTable }, + components: { HelmetSelect, ProfessionSelect, TeamSelect, ProjectSelect, Pagination, AccessRecordTable }, data() { return { tableKey: 0, @@ -203,13 +235,15 @@ export default { bidCode: '' }, tableHeight: 650, - showReviewer: false, temp: _.cloneDeep(defaultTmp), + temp2: _.cloneDeep(defaultTmp2), dialogFormVisible: false, dialogFormVisible2: false, dialogStatus: '', - downloadLoading: false, + bindVisible: false, currentUserId: '', + currentDevId: '', + currentBindId: '', textMap: { update: '编辑', create: '新增' @@ -222,6 +256,9 @@ export default { phone: [{ required: true, message: '不能为空', trigger: 'blur' }], userType: [{ required: true, message: '不能为空', trigger: 'blur' }], imageList: [{ required: true, validator: this.validateImageNum, message: '不能为空', trigger: 'change' }] + }, + rules2: { + devId: [{ required: true, message: '请选择', trigger: 'change' }] } } }, @@ -393,6 +430,12 @@ export default { this.imageList = [] this.delFiles = [] }, + handleClosedBindModal() { + this.$refs['dataForm2'].resetFields() + this.temp2 = _.cloneDeep(defaultTmp2) + this.currentDevId = '' + this.currentBindId = '' + }, handleValidateField(name, type) { this.$refs[name].validateField(type) }, @@ -412,6 +455,81 @@ export default { } this.imageList = uploadFiles this.handleValidateField('dataForm', 'imageList') + }, + handleBind(row) { + this.temp2.userId = row.userId + getHelmet({ userId: row.userId }).then(res => { + this.temp2.devId = res.data.devId + this.currentBindId = res.data.id + this.currentDevId = res.data.devId + this.bindVisible = true + }) + }, + bindHelmet() { + this.$refs['dataForm2'].validate((valid) => { + if (valid) { + bindHelmet({ userId: this.temp2.userId, devId: this.temp2.devId }).then((response) => { + this.$message({ + showClose: true, + message: response.msg, + type: 'success', + duration: 2000 + }) + this.getList() + }).finally(() => { + this.bindVisible = false + }) + } + }) + }, + updateBindHelmet() { + this.$refs['dataForm2'].validate((valid) => { + if (valid) { + updateHelmet({ id: this.currentBindId, devId: this.temp2.devId }).then((response) => { + this.$message({ + showClose: true, + message: response.msg, + type: 'success', + duration: 2000 + }) + this.getList() + }).finally(() => { + this.bindVisible = false + }) + } + }) + }, + handleUnbind(row) { + this.$confirm(`确定要解绑安全帽吗?`, { + type: 'warning', + title: '操作提示', + beforeClose: async(action, instance, done) => { + if (action === 'confirm') { + const { data } = await getHelmet({ userId: row.userId }) + if (!data) { + this.$message({ + showClose: true, + message: '暂未绑定安全帽', + type: 'success', + duration: 2000 + }) + return + } + unbindHelmet({ userId: row.userId }).then((response) => { + done() + this.$message({ + showClose: true, + message: response.msg, + type: 'success', + duration: 2000 + }) + this.getList() + }) + } else { + done() + } + } + }) } } }