Merge branch 'bjxz-dev' of http://139.9.66.234:18023/dhp/zhgdyun into bjxz-dev

This commit is contained in:
kun 2024-03-26 19:03:08 +08:00
commit b45de2e3a0
13 changed files with 569 additions and 12 deletions

View File

@ -0,0 +1,74 @@
/**
* api接口统一管理 综合教育培训考试系统--科目管理
*/
import {post, get} from '../../http'
// >>>>>>>>>>>>>>>>>>>>科目管理<<<<<<<<<<<<<<<<<<<<
// >>>>>>>>>>>>>>>>>>>>科目管理<<<<<<<<<<<<<<<<<<<<
export const getCheckListDataApi = data => post('xmgl/inspectionRecord/list', data); // 查询 我的整改 || 我的提交 列表
//获取详情信息
export const getCheckDetailsApi = data => post('xmgl/inspectionRecord/getProjectInspectionDetails', data); // 查询 详情基本信息
export const getCrewListDataApi = data => post('xmgl/systemUser/getProjectChilderSystemUserList', data); // 查询 所有整改人员
export const getCheckRecordListApi = data => post('xmgl/inspectionRectifyRecord/selectInspectionRectifyRecord', data); // 获取当前 数据的整改记录列表
export const addCheckReplyApi = data => post('xmgl/inspectionRectifyRecord/add', data); // 新增 整改 回复
export const addCheckAuditApi = data => post('xmgl/inspectionRectifyRecord/auditInspectionRectifyRecord', data); // 新增 整改 审核
//新增
export const addCheckListDataApi = data => post('xmgl/inspectionRecord/add', data); // 新增 整改信息
/**
* api接口统一管理
*/
// import {post,get} from '../http'
//甘特图-列表查询任务进度
export const getParentChildTaskListApi = data => post('xmgl/taskProgress/getParentChildList', data);
//分部分项工程管理
export const addTaskProgressApi = data => post('xmgl/taskProgress/add', data);
export const deleteTaskProgressApi = data => post('xmgl/taskProgress/delete', data);
export const editTaskProgressApi = data => post('xmgl/taskProgress/edit', data);
export const editProgressBindComponentApi = data => post('xmgl/taskProgress/editBimComponent', data);
export const getTaskProgressPageApi = data => post('xmgl/taskProgress/getParentChildPage', data);
//分部分项工程管理--BIMBASE中心进度管理
export const addTaskProgressRtApi = data => post('xmgl/taskProgressRt/add', data);
export const deleteTaskProgressRtApi = data => post('xmgl/taskProgressRt/delete', data);
export const editTaskProgressRtApi = data => post('xmgl/taskProgressRt/edit', data);
export const editProgressBindComponentRtApi = data => post('xmgl/taskProgressRt/editBimComponent', data);
export const getTaskProgressPageRtApi = data => post('xmgl/taskProgressRt/getParentChildPage', data);
//分部分项工程管理_详情-进度记录
export const getTaskProgressContentApi = data => get('xmgl/taskProgressContent/list', data);
//分部分项工程管理_详情-材料用量
export const getTaskProgressMaterialRelApi = data => get('xmgl/taskProgressMaterialRel/detailList', data);
//分部分项工程管理_上报进度
export const addTaskProgressContentApi = data => post('xmgl/taskProgressContent/add', data);
//分部分项工程管理_开始任务
export const addTaskProgressStart = data => post('xmgl/taskProgress/startTask', data);
//材料类型配置
export const addTaskProgressMaterialRelApi = data => post('xmgl/taskProgressMaterialType/add', data);
export const deleteTaskProgressMaterialRelApi = data => post('xmgl/taskProgressMaterialType/delete', data);
export const getTypeProgressMaterialRelApi = data => get('xmgl/taskProgressMaterialType/list', data);
//进度预警
export const getTaskProgressAlarmPageApi = data => get('xmgl/taskProgressAlarm/page', data);
//计划材料工程
export const getTaskProgressMaterialRelTreeApi = data => get('xmgl/taskProgressMaterialRel/tree/list', data);

View File

@ -83,7 +83,7 @@ if (process.env.NODE_ENV == 'development') {
// axios.defaults.baseURL ='http://101.43.164.214:45001/' //上海张江
// axios.defaults.baseURL ='http://101.43.164.214:45011/' //上海优益(上海建工)
// axios.defaults.baseURL = 'http://192.168.34.221:28889/' //郭圣雄本地
axios.defaults.baseURL ='http://192.168.34.221:9111/' //郭圣雄本地
// axios.defaults.baseURL ='http://192.168.34.221:9111/' //郭圣雄本地
// axios.defaults.baseURL = 'http://192.168.34.155:19111/' //彭洁本地
// axios.defaults.baseURL = 'http://182.90.224.237:51234' //郭圣雄远程
// axios.defaults.baseURL ='http://101.43.164.214:45020/' //沈阳和盈
@ -91,6 +91,7 @@ if (process.env.NODE_ENV == 'development') {
// axios.defaults.baseURL ='http://101.43.164.214:11111/' // 百色三标段项目
// axios.defaults.baseURL = 'http://125.88.207.86:8088/'//中建四局线上(最新)地址
// axios.defaults.baseURL = 'http://125.88.207.86:8099/'//中建四局(沙湖)线上(最新)地址
axios.defaults.baseURL = 'http://jxj.zhgdyun.com:15551/'//测试地址
} else if (process.env.NODE_ENV == 'debug') {

View File

@ -662,6 +662,60 @@ const routes2 = [
component: () =>
import("@/views/projectFront/safeManage/v2/business.vue"),
},
// 安全考试系统--科目管理
{
path: "/project/examSystem/subjectManagement",
name: "安全考试系统_科目管理",
component: () => import("@/views/projectFront/examSystem/subjectManagement/subjectManagement.vue"),
},
// 安全考试系统--学习资料
{
path: "/project/examSystem/learningMaterial",
name: "安全考试系统_学习资料",
component: () => import("@/views/projectFront/examSystem/learningMaterial/learningMaterial.vue"),
},
// 安全考试系统--题库管理
{
path: "/project/examSystem/questionManagement",
name: "安全考试系统_题库管理",
component: () => import("@/views/projectFront/examSystem/questionManagement/questionManagement.vue"),
},
// 安全考试系统--考试管理
{
path: "/project/examSystem/examManagement",
name: "安全考试系统_考试管理",
component: () => import("@/views/projectFront/examSystem/examManagement/examManagement.vue"),
},
// 安全考试系统--规章制度
{
path: "/project/examSystem/examRegulation",
name: "安全考试系统_规章制度",
component: () => import("@/views/projectFront/examSystem/examRegulation/examRegulation.vue"),
},
// 安全考试系统--安全手册
{
path: "/project/examSystem/safetyManual",
name: "安全考试系统_安全手册",
component: () => import("@/views/projectFront/examSystem/safetyManual/safetyManual.vue"),
},
// 安全考试系统--通知管理
{
path: "/project/examSystem/noticeManagement",
name: "安全考试系统_通知管理",
component: () => import("@/views/projectFront/examSystem/noticeManagement/noticeManagement.vue"),
},
// 安全考试系统--积分管理
{
path: "/project/examSystem/pointManagement",
name: "安全考试系统_积分管理",
component: () => import("@/views/projectFront/examSystem/pointManagement/pointManagement.vue"),
},
// 安全考试系统--培训管理
{
path: "/project/examSystem/trainRecord",
name: "安全考试系统_培训管理",
component: () => import("@/views/projectFront/examSystem/trainRecord/trainRecord.vue"),
},
{
path: "/project/environmentalMonitor/alarmValueSet",
name: "绿色施工_阈值设置1",

View File

@ -46,19 +46,19 @@ export default new Vuex.Store({
PAGESIZRS: [10, 20, 30, 50],
// UPLOADURL:' http://101.43.164.214:11111/upload/image/',// 百色
// FILEURL:' http://101.43.164.214:11111/image/',// 百色
UPLOADURL:'http://192.168.34.221:9111/upload/image/',// 郭圣雄
FILEURL:'http://192.168.34.221:9111/image/',//郭圣雄
// UPLOADURL:'http://192.168.34.221:9111/upload/image/',// 郭圣雄
// FILEURL:'http://192.168.34.221:9111/image/',//郭圣雄
// UPLOADURL:'http://10.0.1.43:6023/upload/image',//测试
// FILEURL:'http://10.0.1.43:6023/image/',//测试
// BASEURL: baseUrl
// ? baseUrl
// : window.location.protocol + "//" + window.location.host + "/", //正式环境
// UPLOADURL:
// window.location.protocol +
// "//" +
// window.location.host +
// "/upload/image", //正式环境
// FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境
BASEURL: baseUrl
? baseUrl
: window.location.protocol + "//" + window.location.host + "/", //正式环境
UPLOADURL:
window.location.protocol +
"//" +
window.location.host +
"/upload/image", //正式环境
FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境
//---------------------------------------------------------------------------------------------
// BASEURL: baseUrl
// ? baseUrl

View File

@ -0,0 +1,428 @@
<template>
<div class="fullHeight">
<div v-if="type != 'detail'">
<div class="searchBox whiteBlock">
<el-form :inline="true" size="medium" :model="queryInfo" class="demo-form-inline">
<el-form-item>
<el-button size="medium" type="primary" @click="refreshBtn">新增</el-button>
</el-form-item>
</el-form>
</div>
<div class="table_wrap whiteBlock">
<vue-scroll>
<el-table height="650" class="tables" :data="listData1" lazy row-key="id" default-expand-all
:tree-props="{ children: 'children' }">
<el-table-column width="200" prop="taskName" label="分部分项工程名称">
<template slot-scope="scope">
<span :title="scope.row.taskName"
style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;width: 150px;">
{{ scope.row.taskName }}
</span>
</template>
</el-table-column>
<el-table-column align="center" prop="startDate" label="计划开始时间"> </el-table-column>
<el-table-column align="center" prop="finishDate" label="计划完成时间"> </el-table-column>
<el-table-column align="center" prop="actualStartDate" label="实际开始时间"> </el-table-column>
<el-table-column align="center" prop="actualFinishDate" label="实际完成时间"></el-table-column>
<el-table-column align="center" prop="dutyUserName" label="负责人"></el-table-column>
<el-table-column width="300" label="操作" align="center">
<template slot-scope="scope">
<el-button @click.native.stop="addBefore(2, scope.row)" size="mini" type="text"
icon="el-icon-circle-plus-outline">
新增
</el-button>
<el-button size="mini" type="text" icon="el-icon-edit"
@click.native.stop="editBefore(scope.row)">
编辑
</el-button>
<el-button size="mini" type="text" class="delete-btn" icon="el-icon-delete"
@click.native.stop="deleteBefore(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</vue-scroll>
<el-pagination class="pagerBox" style="position: absolute; top: 85%; left: 40%"
@size-change="SizeChange" @current-change="CurrentChange" :current-page="pagInfo.pageNo"
:page-sizes="$store.state.PAGESIZRS" :page-size="pagInfo.pageSize"
layout="total, sizes, prev, pager, next" :total="Number(pagInfo.total)" background></el-pagination>
</div>
<!-- '新增父子级工程弹框' -->
<el-dialog :modal-append-to-body="false" :title="title" :visible.sync="dialogVisible" width="667px"
@close="close">
<div class="dialog_content">
<el-form ref="addEditForm" label-width="135px" size="medium" class="dialogFormBox"
:rules="addEditRules" :model="workerInfo">
<el-form-item label="分部分项名称" prop="taskName" v-if="dialogType == 3">
<el-input v-model="parentTaskName" placeholder="请输入" :disabled="dialogType == 3"></el-input>
</el-form-item>
<el-form-item v-else label="分部分项名称" prop="taskName">
<el-input v-model="workerInfo.taskName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item v-if="dialogType == 3" label="子分部分项名称" prop="taskName">
<el-input v-model="workerInfo.taskName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="计划开始时间" prop="startDate">
<el-date-picker @change="time1" v-model="workerInfo.startDate" type="date"
placeholder="请选择日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="计划结束时间" prop="finishDate">
<el-date-picker @change="time2" v-model="workerInfo.finishDate" :picker-options="dateBefore"
type="date" placeholder="请选择日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="实际开始时间" prop="actualStartDate">
<el-date-picker v-model="workerInfo.actualStartDate" type="date" placeholder="请选择日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="实际结束时间" prop="actualFinishDate">
<el-date-picker v-model="workerInfo.actualFinishDate" :picker-options="actualDateBefore"
type="date" placeholder="请选择日期" value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="负责人" prop="dutyUserName">
<el-select v-model="workerInfo.dutyUserId" placeholder="请选择">
<el-option v-for="item in principalLsit" :key="item.userId" :label="item.realName"
:value="item.userId"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="进度(%)" prop="progressRatio">
<el-input-number :disabled="workerInfo.status === 2" :max="100" style="width: 105%"
v-model="workerInfo.progressRatio" @input="validateInput"></el-input-number>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="workerInfo.remark" placeholder="请输入"></el-input>
</el-form-item>
</el-form>
</div>
<div class="dialog-footer">
<el-button class="cancleBtn" @click="dialogVisible = false" icon="el-icon-circle-close"
size="medium">取消
</el-button>
<el-button type="primary" icon="el-icon-circle-check" @click="submitBtn" size="medium">确定
</el-button>
</div>
</el-dialog>
<!-- 一级新增弹框 -->
<el-dialog :modal-append-to-body="false" width="600px" title="导入" :visible.sync="uploadShow"
@close="close2">
<div class="dialog-footer">
<el-button class="cancleBtn" @click="uploadShow = false" icon="el-icon-circle-close"
size="medium">取消
</el-button>
<el-button type="primary" icon="el-icon-circle-check" size="medium" @click="handleUploadConfirm">确定
</el-button>
</div>
</el-dialog>
</div>
</div>
</template>
<script>
import {
addTaskProgressApi, deleteTaskProgressApi, editTaskProgressApi, getTaskProgressPageApi
} from '@/assets/js/api/examSystem/subjectManagement'
export default {
// components: {
// detailpage
// },
mounted() { },
data() {
return {
subjectList: [
{id: 1,subjectName: '科目名称01', children:[{id: 1, subjectName: '子科目名称1'},{id: 2, subjectName: '子科目名称2'}]},
{id: 2,subjectName: '科目名称02', children:[{id: 1, subjectName: '子科目名称1'},{id: 2, subjectName: '子科目名称2'}]},
{id: 3,subjectName: '科目名称03', children:[{id: 1, subjectName: '子科目名称1'},{id: 2, subjectName: '子科目名称2'}]},
],
rowData: {},
parentTaskName: '', // taskName
pagInfo: {
pageNo: 1, //
pageSize: 10, //
total: 0 //
},
radio: 1,
uploadShow: false, //
dialogType: 1,
title: '',
daterange: [],
fileList: [], //
projectSn: '',
createUserId: '',
listData: [],
listData1: [],
dialogVisible: false, //
workerInfo: {
taskName: '',
startDate: '',
finishDate: '',
actualStartDate: '',
actualFinishDate: '',
dutyUserId: '',
progressRatio: '',
remark: '',
parentId: 0,
status: 0,
},
principalLsit: [], //
seedId: '',
showTime: false, //
queryInfo: {
taskName: '',
status: '',
actualStartDate: '',
actualFinishDate: ''
},
type: 'add',
addEditRules: {
taskName: [
{
required: true,
message: this.$t('message.personnelPosition.required'),
trigger: 'blur'
}
],
startDate: [
{
required: true,
message: this.$t('message.personnelPosition.required'),
trigger: 'blur'
}
],
finishDate: [
{
required: true,
message: this.$t('message.personnelPosition.required'),
trigger: 'blur'
}
]
},
times: '',
fileName: ''
}
},
computed: {
headers() {
return { Authorization: this.$store.state.userInfo.token }
},
},
created() {
this.projectSn = this.$store.state.projectSn
this.getProgressListData()
},
methods: {
//
handleUploadConfirm() {
if (this.fileName == '') {
this.$message.warning('请先上传文件')
return
} else {
this.uploadShow = false
this.$message.success('操作成功')
this.getProgressListData()
}
},
handleRadioChange(val) {
this.radio = val
},
//
getProgressListData() {
let data = {
projectSn: this.projectSn,
pageNo: this.pagInfo.pageNo,
pageSize: this.pagInfo.pageSize,
taskName: this.queryInfo.taskName,
status: this.queryInfo.status,
actualFinishDate_begin: this.queryInfo.actualStartDate,
actualFinishDate_end: this.queryInfo.actualFinishDate
}
getTaskProgressPageApi(data).then(res => {
if (res.code == 200) {
// this.listData = res.result.records
this.listData1 = res.result.records
this.pagInfo.total = res.result.total
}
})
},
//
addBefore(addType, value) {
if (addType == 1) {
this.title = '新增分项'
this.dialogType = 1
} else {
console.log('新增子分项点击', value)
this.title = '新增子分项'
this.dialogType = 3
this.workerInfo.parentId = value.id
this.parentTaskName = value.taskName
}
this.dialogVisible = true
},
//
editBefore(val) {
this.dialogType = 2
this.title = '编辑分项'
console.log('当前点击的行', val)
this.workerInfo = JSON.parse(JSON.stringify(val))
this.workerInfo.id = val.id
this.workerInfo.status = val.status
this.dialogVisible = true
},
//
submitBtn() {
this.$refs.addEditForm.validate(valid => {
if (valid) {
let data = {
taskName: this.workerInfo.taskName,
startDate: this.workerInfo.startDate,
finishDate: this.workerInfo.finishDate,
actualStartDate: this.workerInfo.actualStartDate,
actualFinishDate: this.workerInfo.actualFinishDate,
dutyUserId: this.workerInfo.dutyUserId,
progressRatio: this.workerInfo.progressRatio,
remark: this.workerInfo.remark,
parentId: this.workerInfo.parentId,
projectSn: this.projectSn
}
if (this.dialogType == 1) {
addTaskProgressApi(data).then(res => {
if (res.code == 200) {
this.$message.success(res.message)
this.dialogVisible = false
this.getProgressListData()
}
})
} else if (this.dialogType == 2) {
data.id = this.workerInfo.id
editTaskProgressApi(data).then(res => {
if (res.code == 200) {
this.$message.success(res.message)
this.dialogVisible = false
this.getProgressListData()
}
})
} else if (this.dialogType == 3) {
data.parentId = this.workerInfo.parentId
data.level = 2
addTaskProgressApi(data).then(res => {
if (res.code == 200) {
this.$message.success(res.message)
this.dialogVisible = false
this.getProgressListData()
}
})
}
} else {
return false
}
})
},
//
deleteBefore(value) {
this.$confirm(this.$t('message.quality.deleteHint'), this.$t('message.quality.hint'), {
confirmButtonText: this.$t('message.quality.confirm'),
cancelButtonText: this.$t('message.quality.cancel'),
type: 'warning'
})
.then(() => {
let data = {
id: value.id
}
deleteTaskProgressApi(data).then(res => {
if (res.code == 200) {
this.$message({
type: 'success',
message: this.$t('message.quality.successfullyDelete') + '!'
})
this.getProgressListData()
}
})
})
.catch(() => { })
},
close() {
this.workerInfo = {}
this.workerInfo.parentId = 0
this.$nextTick(() => {
this.$refs.addEditForm.clearValidate()
})
},
close2() {
this.fileName = ''
this.radio = 1
},
//
refreshBtn() {
this.daterange = []
this.pagInfo.pageNo = 1
this.pagInfo.pageSize = 10
this.queryInfo = {
status: '',
actualStartDate: '',
actualFinishDate: '',
taskName: ''
}
this.getProgressListData()
},
SizeChange(val) {
this.pagInfo.pageSize = val
this.getProgressListData()
},
CurrentChange(val) {
this.pagInfo.pageNo = val
this.getProgressListData()
},
changeDate() {
if (this.daterange) {
this.queryInfo.actualStartDate = this.daterange[0]
this.queryInfo.actualFinishDate = this.daterange[1]
} else {
this.queryInfo.actualStartDate = ''
this.queryInfo.actualFinishDate = ''
}
},
validateInput() {
let value = parseInt(this.workerInfo.progressRatio, 10)
if (isNaN(value) || value < 0 || value > 100 || Math.floor(value) !== value) {
this.workerInfo.progressRatio = ''
}
},
}
}
</script>
<style lang="less" scoped>
.down {
text-decoration: none;
color: #fff;
}
.expintBtn {
display: inline-block !important;
margin-right: 10px;
}
.table_wrap {
height: 800px;
overflow: auto;
}
.delete-btn {
color: #fe6565;
}
.dialogUplod {
height: 100px;
margin-left: 70px;
margin-top: 40px;
div {
margin-bottom: 20px;
}
}
</style>