提交代码
parent
de8a16c52a
commit
2a70b01a3f
|
|
@ -19,16 +19,16 @@ export default {
|
|||
props: {
|
||||
src: {
|
||||
type: String,
|
||||
default: ""
|
||||
default: "",
|
||||
},
|
||||
width: {
|
||||
type: [Number, String],
|
||||
default: ""
|
||||
default: "",
|
||||
},
|
||||
height: {
|
||||
type: [Number, String],
|
||||
default: ""
|
||||
}
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
realSrc() {
|
||||
|
|
@ -47,7 +47,7 @@ export default {
|
|||
}
|
||||
let real_src_list = this.src.split(",");
|
||||
let srcList = [];
|
||||
real_src_list.forEach(item => {
|
||||
real_src_list.forEach((item) => {
|
||||
if (isExternal(item)) {
|
||||
return srcList.push(item);
|
||||
}
|
||||
|
|
@ -60,7 +60,7 @@ export default {
|
|||
},
|
||||
realHeight() {
|
||||
return typeof this.height == "string" ? this.height : `${this.height}px`;
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,23 +1,30 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="项目主键" prop="projectId">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
size="small"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input
|
||||
v-model="queryParams.projectId"
|
||||
placeholder="请输入项目主键"
|
||||
v-model="queryParams.projectName"
|
||||
placeholder="请输入项目项目名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门主键" prop="deptId">
|
||||
<el-form-item label="部门名称" prop="deptName">
|
||||
<el-input
|
||||
v-model="queryParams.deptId"
|
||||
placeholder="请输入部门主键"
|
||||
v-model="queryParams.deptName"
|
||||
placeholder="请输入部门名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工作时间">
|
||||
<el-form-item label="出勤时间">
|
||||
<el-date-picker
|
||||
v-model="daterangeWorkDate"
|
||||
style="width: 240px"
|
||||
|
|
@ -28,24 +35,16 @@
|
|||
end-placeholder="结束日期"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="删除标识" prop="isDel">
|
||||
<el-select v-model="queryParams.isDel" placeholder="请选择删除标识" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.sys_common_isdel"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
|
|
@ -53,7 +52,8 @@
|
|||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['project:surProjectAttendance:add']"
|
||||
>新增</el-button>
|
||||
>新增</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
|
|
@ -64,8 +64,9 @@
|
|||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['project:surProjectAttendance:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
|
|
@ -75,7 +76,8 @@
|
|||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['project:surProjectAttendance:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
|
|
@ -85,52 +87,62 @@
|
|||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['project:surProjectAttendance:export']"
|
||||
>导出</el-button>
|
||||
>导出</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="surProjectAttendanceList" @selection-change="handleSelectionChange">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="surProjectAttendanceList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="主键" align="center" prop="id" />
|
||||
<el-table-column label="项目主键" align="center" prop="projectId" />
|
||||
<el-table-column label="部门主键" align="center" prop="deptId" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||
<el-table-column label="部门名称" align="center" prop="deptName" />
|
||||
<el-table-column label="劳务人员" align="center" prop="servicePersonnel" />
|
||||
<el-table-column label="监理人员" align="center" prop="supervisorPersonnel" />
|
||||
<el-table-column label="总包人员" align="center" prop="contractorPersonnel" />
|
||||
<el-table-column label="工作时间" align="center" prop="workDate" width="180">
|
||||
<el-table-column label="出勤时间" align="center" prop="workDate" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.workDate, '{y}-{m}-{d}') }}</span>
|
||||
<span>{{ parseTime(scope.row.workDate, "{y}-{m}-{d}") }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="删除标识" align="center" prop="isDel">
|
||||
<el-table-column label="数据状态" align="center" prop="isDel">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel"/>
|
||||
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提交时间" align="center" prop="workDate" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{i}") }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:surProjectAttendance:edit']"
|
||||
>修改</el-button>
|
||||
>修改</el-button
|
||||
> -->
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:surProjectAttendance:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
|
|
@ -156,11 +168,13 @@
|
|||
<el-input v-model="form.contractorPersonnel" placeholder="请输入总包人员" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工作时间" prop="workDate">
|
||||
<el-date-picker clearable
|
||||
<el-date-picker
|
||||
clearable
|
||||
v-model="form.workDate"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择工作时间">
|
||||
placeholder="请选择工作时间"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="删除标识" prop="isDel">
|
||||
|
|
@ -186,11 +200,17 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { listSurProjectAttendance, getSurProjectAttendance, delSurProjectAttendance, addSurProjectAttendance, updateSurProjectAttendance } from "@/api/project/surProjectAttendance";
|
||||
import {
|
||||
listSurProjectAttendance,
|
||||
getSurProjectAttendance,
|
||||
delSurProjectAttendance,
|
||||
addSurProjectAttendance,
|
||||
updateSurProjectAttendance,
|
||||
} from "@/api/project/surProjectAttendance";
|
||||
|
||||
export default {
|
||||
name: "SurProjectAttendance",
|
||||
dicts: ['sys_common_isdel'],
|
||||
dicts: ["sys_common_isdel"],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
|
|
@ -218,15 +238,16 @@ export default {
|
|||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
projectId: null,
|
||||
projectName: null,
|
||||
deptId: null,
|
||||
deptName: null,
|
||||
workDate: null,
|
||||
isDel: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
rules: {},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
|
@ -237,11 +258,11 @@ export default {
|
|||
getList() {
|
||||
this.loading = true;
|
||||
this.queryParams.params = {};
|
||||
if (null != this.daterangeWorkDate && '' != this.daterangeWorkDate) {
|
||||
if (null != this.daterangeWorkDate && "" != this.daterangeWorkDate) {
|
||||
this.queryParams.params["beginWorkDate"] = this.daterangeWorkDate[0];
|
||||
this.queryParams.params["endWorkDate"] = this.daterangeWorkDate[1];
|
||||
}
|
||||
listSurProjectAttendance(this.queryParams).then(response => {
|
||||
listSurProjectAttendance(this.queryParams).then((response) => {
|
||||
this.surProjectAttendanceList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
|
|
@ -267,7 +288,7 @@ export default {
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
|
|
@ -284,9 +305,9 @@ export default {
|
|||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
this.ids = selection.map((item) => item.id);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
|
|
@ -297,8 +318,8 @@ export default {
|
|||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getSurProjectAttendance(id).then(response => {
|
||||
const id = row.id || this.ids;
|
||||
getSurProjectAttendance(id).then((response) => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改项目出勤";
|
||||
|
|
@ -306,16 +327,16 @@ export default {
|
|||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateSurProjectAttendance(this.form).then(response => {
|
||||
updateSurProjectAttendance(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addSurProjectAttendance(this.form).then(response => {
|
||||
addSurProjectAttendance(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
|
|
@ -327,19 +348,27 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除项目出勤编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delSurProjectAttendance(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
this.$modal
|
||||
.confirm('是否确认删除项目出勤编号为"' + ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delSurProjectAttendance(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('project/surProjectAttendance/export', {
|
||||
...this.queryParams
|
||||
}, `surProjectAttendance_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
this.download(
|
||||
"project/surProjectAttendance/export",
|
||||
{
|
||||
...this.queryParams,
|
||||
},
|
||||
`surProjectAttendance_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,44 +1,25 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="项目主键" prop="projectId">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
size="small"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input
|
||||
v-model="queryParams.projectId"
|
||||
v-model="queryParams.projectName"
|
||||
placeholder="请输入项目主键"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门主键" prop="deptId">
|
||||
<el-form-item label="部门名称" prop="deptName">
|
||||
<el-input
|
||||
v-model="queryParams.deptId"
|
||||
placeholder="请输入部门主键"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="保险类型" prop="insuranceType">
|
||||
<el-select v-model="queryParams.insuranceType" placeholder="请选择保险类型" clearable>
|
||||
<el-option
|
||||
v-for="dict in dict.type.sur_project_insurance_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="保保单号" prop="insuranceNumber">
|
||||
<el-input
|
||||
v-model="queryParams.insuranceNumber"
|
||||
placeholder="请输入保保单号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="保险状态" prop="insuranceState">
|
||||
<el-input
|
||||
v-model="queryParams.insuranceState"
|
||||
placeholder="请输入保险状态"
|
||||
v-model="queryParams.deptName"
|
||||
placeholder="请输入部门名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
|
|
@ -51,22 +32,52 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据状态" prop="isDel">
|
||||
<el-form-item label="保险单号" prop="insuranceNumber">
|
||||
<el-input
|
||||
v-model="queryParams.isDel"
|
||||
placeholder="请输入数据状态"
|
||||
v-model="queryParams.insuranceNumber"
|
||||
placeholder="请输入保险单号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="保险类型" prop="insuranceType">
|
||||
<el-select
|
||||
v-model="queryParams.insuranceType"
|
||||
placeholder="请选择保险类型"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.sur_project_insurance_type"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="保险状态" prop="insuranceState">
|
||||
<el-select
|
||||
v-model="queryParams.insuranceState"
|
||||
placeholder="请选择保险类型"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.sur_project_insurance_state"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
|
|
@ -74,7 +85,8 @@
|
|||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['project:surProjectInsurance:add']"
|
||||
>新增</el-button>
|
||||
>新增</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
|
|
@ -85,8 +97,9 @@
|
|||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['project:surProjectInsurance:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
|
|
@ -96,7 +109,8 @@
|
|||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['project:surProjectInsurance:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
|
|
@ -106,63 +120,123 @@
|
|||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['project:surProjectInsurance:export']"
|
||||
>导出</el-button>
|
||||
>导出</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="surProjectInsuranceList" @selection-change="handleSelectionChange">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="surProjectInsuranceList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="主键" align="center" prop="id" />
|
||||
<el-table-column label="项目主键" align="center" prop="projectId" />
|
||||
<el-table-column label="部门主键" align="center" prop="deptId" />
|
||||
<el-table-column label="保险类型" align="center" prop="insuranceType">
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||
<el-table-column label="部门名称" align="center" prop="deptName" />
|
||||
<el-table-column label="保险类型" align="center" prop="insuranceTypeName" />
|
||||
<el-table-column label="保险状态" align="center" prop="insuranceState">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sur_project_insurance_type" :value="scope.row.insuranceType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="保保单号" align="center" prop="insuranceNumber" />
|
||||
<el-table-column label="保险文书" align="center" prop="insuranceFile" />
|
||||
<el-table-column label="保险状态" align="center" prop="insuranceState" />
|
||||
<el-table-column label="保险生效时间" align="center" prop="beginDate" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="保险截至时间" align="center" prop="endDate" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
|
||||
<svg
|
||||
v-if="scope.row.insuranceState == '1'"
|
||||
style="
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
top: -2px;
|
||||
vertical-align: middle;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="3100"
|
||||
>
|
||||
<path
|
||||
d="M802.922882 383.309012 428.076612 758.155283 220.943065 551.154765c-22.317285-22.317285-22.317285-55.993269 0-78.310553 22.450315-22.450315 55.993269-22.450315 78.443583 0l128.689964 128.689964L724.613352 304.999482c22.450315-22.450315 55.993269-22.450315 78.30953 0C825.373197 327.316767 825.373197 360.858698 802.922882 383.309012zM512 64.322981c-246.155283 0-447.677019 201.521736-447.677019 447.677019s201.521736 447.677019 447.677019 447.677019 447.677019-201.521736 447.677019-447.677019S758.155283 64.322981 512 64.322981z"
|
||||
fill="#22C134"
|
||||
p-id="3101"
|
||||
></path>
|
||||
</svg>
|
||||
<svg
|
||||
v-else
|
||||
style="
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
top: -2px;
|
||||
vertical-align: middle;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="3472"
|
||||
>
|
||||
<path
|
||||
d="M512 981.333333C252.8 981.333333 42.666667 771.2 42.666667 512S252.8 42.666667 512 42.666667s469.333333 210.133333 469.333333 469.333333-210.133333 469.333333-469.333333 469.333333z m44.245333-469.333333l159.914667-159.914667a31.274667 31.274667 0 1 0-44.245333-44.245333L512 467.754667 352.085333 307.84a31.274667 31.274667 0 1 0-44.245333 44.245333L467.754667 512l-159.914667 159.914667a31.274667 31.274667 0 1 0 44.245333 44.245333L512 556.245333l159.914667 159.914667a31.274667 31.274667 0 1 0 44.245333-44.245333L556.245333 512z"
|
||||
fill="#F5222D"
|
||||
p-id="3473"
|
||||
></path>
|
||||
</svg>
|
||||
<span
|
||||
v-if="scope.row.insuranceState == '1'"
|
||||
style="font-weight: 700; color: rgb(34, 193, 52)"
|
||||
>
|
||||
已办理
|
||||
</span>
|
||||
<span
|
||||
v-if="scope.row.insuranceState == '0'"
|
||||
style="font-weight: 700; color: rgb(245, 34, 45)"
|
||||
>
|
||||
未办理
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="保险公司" align="center" prop="companyName" />
|
||||
<el-table-column label="保险单号" align="center" prop="insuranceNumber" />
|
||||
<el-table-column label="数据状态" align="center" prop="isDel">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel"/>
|
||||
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.insuranceState == 1"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-link"
|
||||
@click="handleDownload(scope.row)"
|
||||
v-hasPermi="['project:surProjectInsurance:edit']"
|
||||
>保险合同</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="scope.row.insuranceState == 1"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:surProjectInsurance:edit']"
|
||||
>修改</el-button>
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="scope.row.insuranceState == 1"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:surProjectInsurance:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
|
|
@ -189,25 +263,29 @@
|
|||
<el-input v-model="form.insuranceNumber" placeholder="请输入保保单号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="保险文书" prop="insuranceFile">
|
||||
<file-upload v-model="form.insuranceFile"/>
|
||||
<file-upload v-model="form.insuranceFile" />
|
||||
</el-form-item>
|
||||
<el-form-item label="保险状态" prop="insuranceState">
|
||||
<el-input v-model="form.insuranceState" placeholder="请输入保险状态" />
|
||||
</el-form-item>
|
||||
<el-form-item label="保险生效时间" prop="beginDate">
|
||||
<el-date-picker clearable
|
||||
<el-date-picker
|
||||
clearable
|
||||
v-model="form.beginDate"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择保险生效时间">
|
||||
placeholder="请选择保险生效时间"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="保险截至时间" prop="endDate">
|
||||
<el-date-picker clearable
|
||||
<el-date-picker
|
||||
clearable
|
||||
v-model="form.endDate"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择保险截至时间">
|
||||
placeholder="请选择保险截至时间"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="保险公司" prop="companyName">
|
||||
|
|
@ -229,11 +307,21 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { listSurProjectInsurance, getSurProjectInsurance, delSurProjectInsurance, addSurProjectInsurance, updateSurProjectInsurance } from "@/api/project/surProjectInsurance";
|
||||
import {
|
||||
listSurProjectInsurance,
|
||||
getSurProjectInsurance,
|
||||
delSurProjectInsurance,
|
||||
addSurProjectInsurance,
|
||||
updateSurProjectInsurance,
|
||||
} from "@/api/project/surProjectInsurance";
|
||||
|
||||
export default {
|
||||
name: "SurProjectInsurance",
|
||||
dicts: ['sur_project_insurance_type'],
|
||||
dicts: [
|
||||
"sur_project_insurance_type",
|
||||
"sur_project_insurance_state",
|
||||
"sys_common_isdel",
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
|
|
@ -259,7 +347,9 @@ export default {
|
|||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
projectId: null,
|
||||
projectName: null,
|
||||
deptId: null,
|
||||
deptName: null,
|
||||
insuranceType: null,
|
||||
insuranceNumber: null,
|
||||
insuranceFile: null,
|
||||
|
|
@ -271,13 +361,9 @@ export default {
|
|||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
projectId: [
|
||||
{ required: true, message: "项目主键不能为空", trigger: "blur" }
|
||||
],
|
||||
deptId: [
|
||||
{ required: true, message: "部门主键不能为空", trigger: "blur" }
|
||||
],
|
||||
}
|
||||
projectId: [{ required: true, message: "项目主键不能为空", trigger: "blur" }],
|
||||
deptId: [{ required: true, message: "部门主键不能为空", trigger: "blur" }],
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
|
@ -287,7 +373,7 @@ export default {
|
|||
/** 查询项目保险列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listSurProjectInsurance(this.queryParams).then(response => {
|
||||
listSurProjectInsurance(this.queryParams).then((response) => {
|
||||
this.surProjectInsuranceList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
|
|
@ -316,7 +402,7 @@ export default {
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
|
|
@ -332,9 +418,9 @@ export default {
|
|||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
this.ids = selection.map((item) => item.id);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
|
|
@ -345,8 +431,8 @@ export default {
|
|||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getSurProjectInsurance(id).then(response => {
|
||||
const id = row.id || this.ids;
|
||||
getSurProjectInsurance(id).then((response) => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改项目保险";
|
||||
|
|
@ -354,16 +440,16 @@ export default {
|
|||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateSurProjectInsurance(this.form).then(response => {
|
||||
updateSurProjectInsurance(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addSurProjectInsurance(this.form).then(response => {
|
||||
addSurProjectInsurance(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
|
|
@ -375,19 +461,31 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除项目保险编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delSurProjectInsurance(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
this.$modal
|
||||
.confirm('是否确认删除项目保险编号为"' + ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delSurProjectInsurance(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('project/surProjectInsurance/export', {
|
||||
...this.queryParams
|
||||
}, `surProjectInsurance_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
this.download(
|
||||
"project/surProjectInsurance/export",
|
||||
{
|
||||
...this.queryParams,
|
||||
},
|
||||
`surProjectInsurance_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
},
|
||||
/** 预览 */
|
||||
handledownload(row) {
|
||||
window.open("/jhapi" + row.credentialFile);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="保险公司" align="center" prop="companyName" />
|
||||
<el-table-column label="保保单号" align="center" prop="insuranceNumber" />
|
||||
<el-table-column label="保险单号" align="center" prop="insuranceNumber" />
|
||||
<el-table-column label="办理时间" align="center" prop="createTime" width="180">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.endDate, "{y}-{m}-{d} {H}:{i}") }}</span>
|
||||
|
|
@ -135,8 +135,8 @@
|
|||
<el-form-item label="保险公司" prop="companyName">
|
||||
<el-input v-model="form.companyName" placeholder="请输入保险公司" />
|
||||
</el-form-item>
|
||||
<el-form-item label="保保单号" prop="insuranceNumber">
|
||||
<el-input v-model="form.insuranceNumber" placeholder="请输入保保单号" />
|
||||
<el-form-item label="保险单号" prop="insuranceNumber">
|
||||
<el-input v-model="form.insuranceNumber" placeholder="请输入保险单号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="保险合同" prop="insuranceFile">
|
||||
<file-upload v-model="form.insuranceFile" :limit="1" :fileType="['pdf']" />
|
||||
|
|
@ -390,7 +390,7 @@ export default {
|
|||
`surProjectInsurance_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
},
|
||||
/** 下载证书 */
|
||||
/** 预览 */
|
||||
handledownload(row) {
|
||||
window.open("/jhapi" + row.credentialFile);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1,164 +1,218 @@
|
|||
<template>
|
||||
<div class="project-schedule-dlg">
|
||||
<el-dialog title="形象进度管理" :visible.sync="open" width="1200px" append-to-body :close-on-click-modal="false"
|
||||
:close-on-press-escape="false">
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="形象图片" prop="image">
|
||||
<image-upload v-model="form.image" :limit="2" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划节点" prop="plannedNode">
|
||||
<el-input v-model="form.plannedNode" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12"> <el-form-item label="实际节点" prop="actualNode">
|
||||
<el-input v-model="form.actualNode" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<template v-if="!isFinish">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="融资、招采进展" prop="purchaseProgress">
|
||||
<el-input v-model="form.purchaseProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="12"> <el-form-item label="报建、设计进展" prop="designProgress">
|
||||
<el-input v-model="form.designProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item></el-col>
|
||||
</template>
|
||||
<template v-if="isFinish">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="结算进展" prop="purchaseProgress">
|
||||
<el-input v-model="form.purchaseProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="12"> <el-form-item label="运维进展" prop="designProgress">
|
||||
<el-input v-model="form.designProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item></el-col>
|
||||
</template>
|
||||
<div class="project-schedule-dlg">
|
||||
<el-dialog
|
||||
title="形象进度管理"
|
||||
:visible.sync="open"
|
||||
width="1200px"
|
||||
append-to-body
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="形象图片" prop="image">
|
||||
<image-upload v-model="form.image" :limit="2" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划节点" prop="plannedNode">
|
||||
<el-input
|
||||
v-model="form.plannedNode"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实际节点" prop="actualNode">
|
||||
<el-input
|
||||
v-model="form.actualNode"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<template v-if="!isFinish">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="融资、招采进展" prop="purchaseProgress">
|
||||
<el-input
|
||||
v-model="form.purchaseProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报建、设计进展" prop="designProgress">
|
||||
<el-input
|
||||
v-model="form.designProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/> </el-form-item
|
||||
></el-col>
|
||||
</template>
|
||||
<template v-if="isFinish">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="结算进展" prop="purchaseProgress">
|
||||
<el-input
|
||||
v-model="form.purchaseProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="运维进展" prop="designProgress">
|
||||
<el-input
|
||||
v-model="form.designProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/> </el-form-item
|
||||
></el-col>
|
||||
</template>
|
||||
|
||||
<el-col :span="24"> <el-form-item label="施工进展" prop="constructionProgress">
|
||||
<el-input v-model="form.constructionProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="12"><el-form-item label="验收进展" prop="acceptanceProgress">
|
||||
<el-input v-model="form.acceptanceProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="施工进展" prop="constructionProgress">
|
||||
<el-input
|
||||
v-model="form.constructionProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="12"
|
||||
><el-form-item label="验收进展" prop="acceptanceProgress">
|
||||
<el-input
|
||||
v-model="form.acceptanceProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/> </el-form-item
|
||||
></el-col>
|
||||
|
||||
<el-col :span="12"><el-form-item label="下周计划" prop="planForNextWeek">
|
||||
<el-input v-model="form.planForNextWeek" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="24"><el-form-item label="存在问题" prop="existingProblem">
|
||||
<el-input v-model="form.existingProblem" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="24"> <el-form-item label="问题推进情况" prop="problemProgress">
|
||||
<el-input v-model="form.problemProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item></el-col>
|
||||
|
||||
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
<el-col :span="12"
|
||||
><el-form-item label="下周计划" prop="planForNextWeek">
|
||||
<el-input
|
||||
v-model="form.planForNextWeek"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="24"
|
||||
><el-form-item label="存在问题" prop="existingProblem">
|
||||
<el-input
|
||||
v-model="form.existingProblem"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/> </el-form-item
|
||||
></el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="问题推进情况" prop="problemProgress">
|
||||
<el-input
|
||||
v-model="form.problemProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/> </el-form-item
|
||||
></el-col>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { addSurProjectSchedule, getLastOne } from "@/api/project/surProjectSchedule";
|
||||
|
||||
export default {
|
||||
name: 'RuoyiUiProjectScheduleDlg',
|
||||
dicts: ['sys_common_isdel'],
|
||||
data() {
|
||||
return {
|
||||
isFinish:false,
|
||||
elKey: 0,
|
||||
open: false,
|
||||
prj: null,
|
||||
// 表单参数
|
||||
form: {
|
||||
id: null,
|
||||
projectId: null,
|
||||
image: null,
|
||||
plannedNode: null,
|
||||
actualNode: null,
|
||||
purchaseProgress: null,
|
||||
designProgress: null,
|
||||
constructionProgress: null,
|
||||
acceptanceProgress: null,
|
||||
planForNextWeek: null,
|
||||
existingProblem: null,
|
||||
problemProgress: null,
|
||||
isDel: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
};
|
||||
},
|
||||
name: "RuoyiUiProjectScheduleDlg",
|
||||
|
||||
mounted() {
|
||||
dicts: ["sys_common_isdel"],
|
||||
data() {
|
||||
return {
|
||||
isFinish: false,
|
||||
elKey: 0,
|
||||
open: false,
|
||||
prj: null,
|
||||
// 表单参数
|
||||
form: {
|
||||
id: null,
|
||||
projectId: null,
|
||||
image: null,
|
||||
plannedNode: null,
|
||||
actualNode: null,
|
||||
purchaseProgress: null,
|
||||
designProgress: null,
|
||||
constructionProgress: null,
|
||||
acceptanceProgress: null,
|
||||
planForNextWeek: null,
|
||||
existingProblem: null,
|
||||
problemProgress: null,
|
||||
isDel: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null,
|
||||
},
|
||||
// 表单校验
|
||||
rules: {},
|
||||
};
|
||||
},
|
||||
|
||||
},
|
||||
mounted() {},
|
||||
|
||||
methods: {
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
this.form.projectId = this.prj.id;
|
||||
addSurProjectSchedule(this.form).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
cancel() {
|
||||
methods: {
|
||||
submitForm() {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
this.form.projectId = this.prj.id;
|
||||
addSurProjectSchedule(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
},
|
||||
reset() {
|
||||
let obj = {};
|
||||
this.id = "";
|
||||
this.form.image = obj.image || '';
|
||||
this.form.plannedNode = obj.plannedNode || '';
|
||||
this.form.actualNode = obj.actualNode || '';
|
||||
this.form.purchaseProgress = obj.purchaseProgress || '';
|
||||
this.form.designProgress = obj.designProgress || '';
|
||||
this.form.constructionProgress = obj.constructionProgress || '';
|
||||
this.form.acceptanceProgress = obj.acceptanceProgress || '';
|
||||
this.form.planForNextWeek = obj.planForNextWeek || '';
|
||||
this.form.existingProblem = obj.existingProblem || '';
|
||||
this.form.problemProgress = obj.problemProgress || '';
|
||||
this.resetForm("form");
|
||||
},
|
||||
showDialog(prj) {
|
||||
this.isFinish=prj.projectType==4;
|
||||
this.prj = prj;
|
||||
this.open = true;
|
||||
this.loadLastData();
|
||||
},
|
||||
loadLastData() {
|
||||
getLastOne(this.prj.id).then(d => {
|
||||
let obj = d.data || {};
|
||||
this.form.image = obj.image || '';
|
||||
this.form.plannedNode = obj.plannedNode || '';
|
||||
this.form.actualNode = obj.actualNode || '';
|
||||
this.form.purchaseProgress = obj.purchaseProgress || '';
|
||||
this.form.designProgress = obj.designProgress || '';
|
||||
this.form.constructionProgress = obj.constructionProgress || '';
|
||||
this.form.acceptanceProgress = obj.acceptanceProgress || '';
|
||||
this.form.planForNextWeek = obj.planForNextWeek || '';
|
||||
this.form.existingProblem = obj.existingProblem || '';
|
||||
this.form.problemProgress = obj.problemProgress || '';
|
||||
})
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
cancel() {
|
||||
this.open = false;
|
||||
},
|
||||
reset() {
|
||||
let obj = {};
|
||||
this.id = "";
|
||||
this.form.image = obj.image || "";
|
||||
this.form.plannedNode = obj.plannedNode || "";
|
||||
this.form.actualNode = obj.actualNode || "";
|
||||
this.form.purchaseProgress = obj.purchaseProgress || "";
|
||||
this.form.designProgress = obj.designProgress || "";
|
||||
this.form.constructionProgress = obj.constructionProgress || "";
|
||||
this.form.acceptanceProgress = obj.acceptanceProgress || "";
|
||||
this.form.planForNextWeek = obj.planForNextWeek || "";
|
||||
this.form.existingProblem = obj.existingProblem || "";
|
||||
this.form.problemProgress = obj.problemProgress || "";
|
||||
this.resetForm("form");
|
||||
},
|
||||
showDialog(prj) {
|
||||
this.isFinish = prj.projectType == 4;
|
||||
this.prj = prj;
|
||||
this.open = true;
|
||||
this.loadLastData();
|
||||
},
|
||||
loadLastData() {
|
||||
getLastOne(this.prj.id).then((d) => {
|
||||
let obj = d.data || {};
|
||||
this.form.image = obj.image || "";
|
||||
this.form.plannedNode = obj.plannedNode || "";
|
||||
this.form.actualNode = obj.actualNode || "";
|
||||
this.form.purchaseProgress = obj.purchaseProgress || "";
|
||||
this.form.designProgress = obj.designProgress || "";
|
||||
this.form.constructionProgress = obj.constructionProgress || "";
|
||||
this.form.acceptanceProgress = obj.acceptanceProgress || "";
|
||||
this.form.planForNextWeek = obj.planForNextWeek || "";
|
||||
this.form.existingProblem = obj.existingProblem || "";
|
||||
this.form.problemProgress = obj.problemProgress || "";
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -2,135 +2,238 @@
|
|||
<div class="app-container">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="项目名称" prop="projectId">
|
||||
<el-input
|
||||
v-model="queryParams.projectName"
|
||||
placeholder="请输入项目名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="责任主体" prop="projectDeptId" v-hasPermi="['project:project:zgs']">
|
||||
<el-select v-model="queryParams.projectDeptId" placeholder="请选择责任主体" clearable>
|
||||
<el-option
|
||||
v-for="dict in depts"
|
||||
:key="dict.deptId"
|
||||
:label="dict.deptName"
|
||||
:value="dict.deptId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间">
|
||||
<el-date-picker
|
||||
v-model="daterangeMarksTime"
|
||||
style="width: 240px"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
size="small"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="项目名称" prop="projectId">
|
||||
<el-input
|
||||
v-model="queryParams.projectName"
|
||||
placeholder="请输入项目名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="责任主体"
|
||||
prop="projectDeptId"
|
||||
v-hasPermi="['project:project:zgs']"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.projectDeptId"
|
||||
placeholder="请选择责任主体"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in depts"
|
||||
:key="dict.deptId"
|
||||
:label="dict.deptName"
|
||||
:value="dict.deptId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="提交时间">
|
||||
<el-date-picker
|
||||
v-model="daterangeMarksTime"
|
||||
style="width: 240px"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
size="mini"
|
||||
@click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
|
||||
>重置</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-if="1==2"
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['project:surProjectSchedule:add']"
|
||||
>新增</el-button>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
v-if="1 == 2"
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['project:surProjectSchedule:add']"
|
||||
>新增</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['project:surProjectSchedule:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['project:surProjectSchedule:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['project:surProjectSchedule:export']"
|
||||
>导出</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar
|
||||
:showSearch.sync="showSearch"
|
||||
@queryTable="getList"
|
||||
></right-toolbar>
|
||||
</el-row>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['project:surProjectSchedule:edit']"
|
||||
>修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['project:surProjectSchedule:remove']"
|
||||
>删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['project:surProjectSchedule:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="loading" :data="surProjectScheduleList" @selection-change="handleSelectionChange" >
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="surProjectScheduleList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="编号" align="center" prop="id" />
|
||||
<el-table-column label="项目名称" align="left" prop="projectName" show-overflow-tooltip width="200"/>
|
||||
<el-table-column
|
||||
label="项目名称"
|
||||
align="left"
|
||||
prop="projectName"
|
||||
show-overflow-tooltip
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column label="形象图片" align="center" prop="image" width="100">
|
||||
<template slot-scope="scope">
|
||||
<image-preview :src="scope.row.image" :width="50" :height="50"/>
|
||||
<el-image
|
||||
ref="preview"
|
||||
style="width: 50px; height: 50px"
|
||||
:src="getImageUrl(scope.row.image)"
|
||||
@click="onPreview(scope.row.image)"
|
||||
></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="计划节点" align="left" prop="plannedNode" show-overflow-tooltip/>
|
||||
<el-table-column label="实际节点" align="left" prop="actualNode" show-overflow-tooltip/>
|
||||
<el-table-column label="融资、招采进展" align="left" prop="purchaseProgress" show-overflow-tooltip width="160"/>
|
||||
<el-table-column label="报建、设计进展" align="left" prop="designProgress" show-overflow-tooltip width="160"/>
|
||||
<el-table-column label="施工进展" align="left" prop="constructionProgress" show-overflow-tooltip/>
|
||||
<el-table-column label="验收进展" align="left" prop="acceptanceProgress" show-overflow-tooltip/>
|
||||
<el-table-column label="下周计划" align="left" prop="planForNextWeek" show-overflow-tooltip/>
|
||||
<el-table-column label="存在问题" align="celeftnter" prop="existingProblem" show-overflow-tooltip />
|
||||
<el-table-column label="问题推进情况" align="left" prop="problemProgress" show-overflow-tooltip width="160"/>
|
||||
<el-table-column
|
||||
label="计划节点"
|
||||
align="left"
|
||||
prop="plannedNode"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="实际节点"
|
||||
align="left"
|
||||
prop="actualNode"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="融资、招采进展"
|
||||
align="left"
|
||||
prop="purchaseProgress"
|
||||
show-overflow-tooltip
|
||||
width="160"
|
||||
/>
|
||||
<el-table-column
|
||||
label="报建、设计进展"
|
||||
align="left"
|
||||
prop="designProgress"
|
||||
show-overflow-tooltip
|
||||
width="160"
|
||||
/>
|
||||
<el-table-column
|
||||
label="施工进展"
|
||||
align="left"
|
||||
prop="constructionProgress"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="验收进展"
|
||||
align="left"
|
||||
prop="acceptanceProgress"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="下周计划"
|
||||
align="left"
|
||||
prop="planForNextWeek"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="存在问题"
|
||||
align="celeftnter"
|
||||
prop="existingProblem"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="问题推进情况"
|
||||
align="left"
|
||||
prop="problemProgress"
|
||||
show-overflow-tooltip
|
||||
width="160"
|
||||
/>
|
||||
<el-table-column label="提交时间" align="left" prop="createTime" width="160">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{s}') }}</span>
|
||||
<span>{{ parseTime(scope.row.createTime, "{y}-{m}-{d} {h}:{s}") }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200" fixed="right">
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
class-name="small-padding fixed-width"
|
||||
width="200"
|
||||
fixed="right"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="1==2"
|
||||
<el-button
|
||||
v-if="1 == 2"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:surProjectSchedule:edit']"
|
||||
>修改</el-button>
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:surProjectSchedule:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
|
|
@ -138,67 +241,123 @@
|
|||
/>
|
||||
|
||||
<!-- 添加或修改形象进度对话框 -->
|
||||
<el-dialog :title="title" v-if="open" :visible.sync="open" width="1200px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
<el-dialog
|
||||
:title="title"
|
||||
v-if="open"
|
||||
:visible.sync="open"
|
||||
width="1200px"
|
||||
append-to-body
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="形象图片" prop="image">
|
||||
<image-upload v-model="form.image" :limit="2"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划节点" prop="plannedNode">
|
||||
<el-input v-model="form.plannedNode" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col><el-col :span="12">
|
||||
<el-form-item label="实际节点" prop="actualNode">
|
||||
<el-input v-model="form.actualNode" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col><el-col :span="12">
|
||||
<el-form-item label="融资、招采进展" prop="purchaseProgress">
|
||||
<el-input v-model="form.purchaseProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col><el-col :span="12">
|
||||
<el-form-item label="报建、设计进展" prop="designProgress">
|
||||
<el-input v-model="form.designProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col><el-col :span="24">
|
||||
<el-form-item label="施工进展" prop="constructionProgress">
|
||||
<el-input v-model="form.constructionProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col><el-col :span="12">
|
||||
<el-form-item label="验收进展" prop="acceptanceProgress">
|
||||
<el-input v-model="form.acceptanceProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col><el-col :span="12">
|
||||
<el-form-item label="下周计划" prop="planForNextWeek">
|
||||
<el-input v-model="form.planForNextWeek" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col><el-col :span="24">
|
||||
<el-form-item label="存在问题" prop="existingProblem">
|
||||
<el-input v-model="form.existingProblem" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col><el-col :span="24">
|
||||
<el-form-item label="问题推进情况" prop="problemProgress">
|
||||
<el-input v-model="form.problemProgress" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
<el-form-item label="形象图片" prop="image">
|
||||
<image-upload v-model="form.image" :limit="2" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划节点" prop="plannedNode">
|
||||
<el-input
|
||||
v-model="form.plannedNode"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item> </el-col
|
||||
><el-col :span="12">
|
||||
<el-form-item label="实际节点" prop="actualNode">
|
||||
<el-input
|
||||
v-model="form.actualNode"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item> </el-col
|
||||
><el-col :span="12">
|
||||
<el-form-item label="融资、招采进展" prop="purchaseProgress">
|
||||
<el-input
|
||||
v-model="form.purchaseProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item> </el-col
|
||||
><el-col :span="12">
|
||||
<el-form-item label="报建、设计进展" prop="designProgress">
|
||||
<el-input
|
||||
v-model="form.designProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item> </el-col
|
||||
><el-col :span="24">
|
||||
<el-form-item label="施工进展" prop="constructionProgress">
|
||||
<el-input
|
||||
v-model="form.constructionProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item> </el-col
|
||||
><el-col :span="12">
|
||||
<el-form-item label="验收进展" prop="acceptanceProgress">
|
||||
<el-input
|
||||
v-model="form.acceptanceProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item> </el-col
|
||||
><el-col :span="12">
|
||||
<el-form-item label="下周计划" prop="planForNextWeek">
|
||||
<el-input
|
||||
v-model="form.planForNextWeek"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item> </el-col
|
||||
><el-col :span="24">
|
||||
<el-form-item label="存在问题" prop="existingProblem">
|
||||
<el-input
|
||||
v-model="form.existingProblem"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item> </el-col
|
||||
><el-col :span="24">
|
||||
<el-form-item label="问题推进情况" prop="problemProgress">
|
||||
<el-input
|
||||
v-model="form.problemProgress"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="previewList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listSurProjectSchedule, getSurProjectSchedule, delSurProjectSchedule, addSurProjectSchedule, updateSurProjectSchedule } from "@/api/project/surProjectSchedule";
|
||||
import {
|
||||
listSurProjectSchedule,
|
||||
getSurProjectSchedule,
|
||||
delSurProjectSchedule,
|
||||
addSurProjectSchedule,
|
||||
updateSurProjectSchedule,
|
||||
} from "@/api/project/surProjectSchedule";
|
||||
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
|
||||
|
||||
export default {
|
||||
name: "SurProjectSchedule",
|
||||
dicts: ['sys_common_isdel'],
|
||||
components: {
|
||||
ElImageViewer,
|
||||
},
|
||||
dicts: ["sys_common_isdel"],
|
||||
data() {
|
||||
return {
|
||||
showViewer: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
|
|
@ -217,7 +376,7 @@ export default {
|
|||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 发布时间时间范围
|
||||
// 发布时间时间范围
|
||||
daterangeMarksTime: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
|
|
@ -234,32 +393,43 @@ export default {
|
|||
existingProblem: null,
|
||||
problemProgress: null,
|
||||
isDel: null,
|
||||
projectDeptId: null
|
||||
projectDeptId: null,
|
||||
},
|
||||
depts:null,
|
||||
depts: null,
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
rules: {},
|
||||
previewList: [],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.$api.publics.getZgsDeptList().then(d=>{
|
||||
this.depts=d?.data||[];
|
||||
})
|
||||
this.$api.publics.getZgsDeptList().then((d) => {
|
||||
this.depts = d?.data || [];
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
getImageUrl(url) {
|
||||
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
|
||||
},
|
||||
onPreview(url) {
|
||||
this.previewList = [];
|
||||
this.previewList.push(process.env.VUE_APP_BASE_API + url);
|
||||
this.showViewer = true;
|
||||
},
|
||||
closeViewer() {
|
||||
this.showViewer = false;
|
||||
},
|
||||
/** 查询形象进度列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
this.queryParams.params = {};
|
||||
if (null != this.daterangeMarksTime && '' != this.daterangeMarksTime) {
|
||||
if (null != this.daterangeMarksTime && "" != this.daterangeMarksTime) {
|
||||
this.queryParams.params["beginMarksTime"] = this.daterangeMarksTime[0];
|
||||
this.queryParams.params["endMarksTime"] = this.daterangeMarksTime[1];
|
||||
}
|
||||
listSurProjectSchedule(this.queryParams).then(response => {
|
||||
listSurProjectSchedule(this.queryParams).then((response) => {
|
||||
this.surProjectScheduleList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
|
|
@ -290,7 +460,7 @@ export default {
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
|
|
@ -306,9 +476,9 @@ export default {
|
|||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
this.ids = selection.map((item) => item.id);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
|
|
@ -319,8 +489,8 @@ export default {
|
|||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getSurProjectSchedule(id).then(response => {
|
||||
const id = row.id || this.ids;
|
||||
getSurProjectSchedule(id).then((response) => {
|
||||
this.form = response.data;
|
||||
this.open = true;
|
||||
this.title = "修改形象进度";
|
||||
|
|
@ -328,16 +498,16 @@ export default {
|
|||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateSurProjectSchedule(this.form).then(response => {
|
||||
updateSurProjectSchedule(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addSurProjectSchedule(this.form).then(response => {
|
||||
addSurProjectSchedule(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
|
|
@ -349,19 +519,27 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除形象进度编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delSurProjectSchedule(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
this.$modal
|
||||
.confirm('是否确认删除形象进度编号为"' + ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delSurProjectSchedule(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('project/surProjectSchedule/export', {
|
||||
...this.queryParams
|
||||
}, `surProjectSchedule_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
this.download(
|
||||
"project/surProjectSchedule/export",
|
||||
{
|
||||
...this.queryParams,
|
||||
},
|
||||
`surProjectSchedule_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,13 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
size="small"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input
|
||||
v-model="queryParams.projectName"
|
||||
|
|
@ -18,7 +25,11 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否有证" prop="isCredential" v-if="false">
|
||||
<el-select v-model="queryParams.isCredential" placeholder="请选择是否有证书" clearable>
|
||||
<el-select
|
||||
v-model="queryParams.isCredential"
|
||||
placeholder="请选择是否有证书"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.sys_yes_no"
|
||||
:key="dict.value"
|
||||
|
|
@ -35,18 +46,28 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="责任主体" prop="projectDeptId" v-hasPermi="['project:project:zgs']">
|
||||
<el-select v-model="queryParams.projectDeptId" placeholder="请选择责任主体" clearable>
|
||||
<el-option
|
||||
v-for="dict in depts"
|
||||
:key="dict.deptId"
|
||||
:label="dict.deptName"
|
||||
:value="dict.deptId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
<el-form-item
|
||||
label="责任主体"
|
||||
prop="projectDeptId"
|
||||
v-hasPermi="['project:project:zgs']"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.projectDeptId"
|
||||
placeholder="请选择责任主体"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in depts"
|
||||
:key="dict.deptId"
|
||||
:label="dict.deptName"
|
||||
:value="dict.deptId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
@ -71,7 +92,8 @@
|
|||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['project:surProjectSpecial:edit']"
|
||||
>修改</el-button>
|
||||
>修改</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
|
|
@ -82,7 +104,8 @@
|
|||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['project:surProjectSpecial:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
|
|
@ -92,40 +115,87 @@
|
|||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['project:surProjectSpecial:export']"
|
||||
>导出</el-button>
|
||||
>导出</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="surProjectSpecialList" @selection-change="handleSelectionChange">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="surProjectSpecialList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" width="220" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="项目名称"
|
||||
align="center"
|
||||
prop="projectName"
|
||||
width="220"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="提交单位" align="center" prop="deptName" />
|
||||
<el-table-column label="人员姓名" align="center" prop="name" />
|
||||
<el-table-column label="性别" align="center" prop="sex" >
|
||||
<el-table-column label="性别" align="center" prop="sex">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex"/>
|
||||
<dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="联系方式" align="center" prop="phoneNumber" />
|
||||
<el-table-column label="是否有证书" align="center" prop="isCredential">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isCredential"/>
|
||||
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isCredential" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="证书编号" align="center" prop="credentialNumber" width="150" show-overflow-tooltip/>
|
||||
<el-table-column label="证书过期时间" align="center" prop="credentialExpirationTime" width="120">
|
||||
<el-table-column
|
||||
label="证书编号"
|
||||
align="center"
|
||||
prop="credentialNumber"
|
||||
width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="证书过期时间"
|
||||
align="center"
|
||||
prop="credentialExpirationTime"
|
||||
width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.credentialExpirationTime, '{y}-{m}-{d}') }}</span>
|
||||
<span>{{ parseTime(scope.row.credentialExpirationTime, "{y}-{m}-{d}") }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="证书预览" align="center" prop="credentialFile" width="200">
|
||||
<template slot-scope="scope">
|
||||
<svg v-if="scope.row.credentialType=='PDF'" style="vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1379" width="50" height="50"><path d="M905.185809 178.844158C898.576738 172.685485 891.19337 165.824412 883.21687 158.436127 860.422682 137.322863 837.434925 116.207791 815.697647 96.487895 813.243072 94.261877 813.243072 94.261877 810.786411 92.037081 781.783552 65.781062 757.590948 44.376502 739.713617 29.293612 729.254178 20.469111 721.020606 13.860686 714.970549 9.501727 710.955023 6.608611 707.690543 4.524745 704.47155 2.998714 700.417679 1.07689 696.638044-0.094029 691.307277 0.005928 677.045677 0.273349 665.6 11.769337 665.6 26.182727L665.6 77.352844 665.6 128.522961 665.6 230.863194 665.6 256.448252 691.2 256.448252 896 256.448252 870.4 230.863194 870.4 998.414942 896 972.829884 230.381436 972.829884C187.90385 972.829884 153.6 938.623723 153.6 896.20663L153.6 26.182727 128 51.767786 588.8 51.767786C602.93849 51.767786 614.4 40.312965 614.4 26.182727 614.4 12.05249 602.93849 0.597669 588.8 0.597669L128 0.597669 102.4 0.597669 102.4 26.182727 102.4 896.20663C102.4 966.91021 159.652833 1024 230.381436 1024L896 1024 921.6 1024 921.6 998.414942 921.6 230.863194 921.6 205.278135 896 205.278135 691.2 205.278135 716.8 230.863194 716.8 128.522961 716.8 77.352844 716.8 26.182727C716.8 39.813762 705.748075 50.91427 692.267725 51.167041 687.705707 51.252584 685.069822 50.435995 682.52845 49.231204 682.259458 49.103682 683.344977 49.796618 685.029451 51.010252 689.779394 54.432502 697.145822 60.34494 706.686383 68.394196 724.009052 83.009121 747.816448 104.072869 776.413589 129.961594 778.850014 132.168064 778.850014 132.168064 781.285216 134.376514 802.876774 153.964212 825.739479 174.96442 848.413564 195.966437 856.350957 203.3185 863.697005 210.144893 870.269888 216.269843 874.209847 219.941299 877.019309 222.565641 878.499674 223.951409 888.81866 233.610931 905.019017 233.081212 914.684179 222.768247 924.349344 212.455283 923.819315 196.264383 913.500326 186.604861 911.981323 185.182945 909.155025 182.542876 905.185809 178.844158ZM102.4 461.128719 0 461.128719 0 896.074709 512 896.074709 1024 896.074709 1024 461.128719 153.6 461.128719 153.6 460.531049 102.4 460.531049 102.4 461.128719ZM208.2 711 208.2 819.2 157.6 819.2 157.6 528 269 528C301.533495 528 327.366571 536.466581 346.5 553.4 365.633429 570.333419 375.2 592.733195 375.2 620.6 375.2 649.133476 365.833427 671.333254 347.1 687.2 328.366573 703.066746 302.133502 711 268.4 711L208.2 711ZM208.2 670.4 269 670.4C287.00009 670.4 300.733286 666.166709 310.2 657.7 319.666714 649.233291 324.4 637.000079 324.4 621 324.4 605.266588 319.600047 592.700047 310 583.3 300.399951 573.899953 287.200083 569.066669 270.4 568.8L208.2 568.8 208.2 670.4ZM419.4 819.2 419.4 528 505.4 528C531.133461 528 553.966566 533.733276 573.9 545.2 593.833434 556.666724 609.266611 572.933229 620.2 594 631.133389 615.066771 636.6 639.199863 636.6 666.4L636.6 681C636.6 708.600139 631.100055 732.866562 620.1 753.8 609.099945 774.733438 593.433436 790.866609 573.1 802.2 552.766564 813.533391 529.466799 819.2 503.2 819.2L419.4 819.2ZM470 568.8 470 778.8 503 778.8C529.533466 778.8 549.89993 770.500083 564.1 753.9 578.30007 737.299917 585.533331 713.466822 585.8 682.4L585.8 666.2C585.8 634.599842 578.933402 610.46675 565.2 593.8 551.466598 577.13325 531.533463 568.8 505.4 568.8L470 568.8ZM854.8 695.8 737.6 695.8 737.6 819.2 687 819.2 687 528 872 528 872 568.8 737.6 568.8 737.6 655.4 854.8 655.4 854.8 695.8Z" fill="#01A9FF" p-id="1380"></path></svg>
|
||||
<image-preview v-if="scope.row.credentialType=='JPG' || scope.row.credentialType=='PNG' || scope.row.credentialType=='JPEG'" :src="scope.row.credentialFile" :width="50" :height="50"/>
|
||||
<svg
|
||||
v-if="scope.row.credentialType == 'PDF'"
|
||||
style="vertical-align: middle; fill: currentColor; overflow: hidden"
|
||||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
p-id="1379"
|
||||
width="50"
|
||||
height="50"
|
||||
>
|
||||
<path
|
||||
d="M905.185809 178.844158C898.576738 172.685485 891.19337 165.824412 883.21687 158.436127 860.422682 137.322863 837.434925 116.207791 815.697647 96.487895 813.243072 94.261877 813.243072 94.261877 810.786411 92.037081 781.783552 65.781062 757.590948 44.376502 739.713617 29.293612 729.254178 20.469111 721.020606 13.860686 714.970549 9.501727 710.955023 6.608611 707.690543 4.524745 704.47155 2.998714 700.417679 1.07689 696.638044-0.094029 691.307277 0.005928 677.045677 0.273349 665.6 11.769337 665.6 26.182727L665.6 77.352844 665.6 128.522961 665.6 230.863194 665.6 256.448252 691.2 256.448252 896 256.448252 870.4 230.863194 870.4 998.414942 896 972.829884 230.381436 972.829884C187.90385 972.829884 153.6 938.623723 153.6 896.20663L153.6 26.182727 128 51.767786 588.8 51.767786C602.93849 51.767786 614.4 40.312965 614.4 26.182727 614.4 12.05249 602.93849 0.597669 588.8 0.597669L128 0.597669 102.4 0.597669 102.4 26.182727 102.4 896.20663C102.4 966.91021 159.652833 1024 230.381436 1024L896 1024 921.6 1024 921.6 998.414942 921.6 230.863194 921.6 205.278135 896 205.278135 691.2 205.278135 716.8 230.863194 716.8 128.522961 716.8 77.352844 716.8 26.182727C716.8 39.813762 705.748075 50.91427 692.267725 51.167041 687.705707 51.252584 685.069822 50.435995 682.52845 49.231204 682.259458 49.103682 683.344977 49.796618 685.029451 51.010252 689.779394 54.432502 697.145822 60.34494 706.686383 68.394196 724.009052 83.009121 747.816448 104.072869 776.413589 129.961594 778.850014 132.168064 778.850014 132.168064 781.285216 134.376514 802.876774 153.964212 825.739479 174.96442 848.413564 195.966437 856.350957 203.3185 863.697005 210.144893 870.269888 216.269843 874.209847 219.941299 877.019309 222.565641 878.499674 223.951409 888.81866 233.610931 905.019017 233.081212 914.684179 222.768247 924.349344 212.455283 923.819315 196.264383 913.500326 186.604861 911.981323 185.182945 909.155025 182.542876 905.185809 178.844158ZM102.4 461.128719 0 461.128719 0 896.074709 512 896.074709 1024 896.074709 1024 461.128719 153.6 461.128719 153.6 460.531049 102.4 460.531049 102.4 461.128719ZM208.2 711 208.2 819.2 157.6 819.2 157.6 528 269 528C301.533495 528 327.366571 536.466581 346.5 553.4 365.633429 570.333419 375.2 592.733195 375.2 620.6 375.2 649.133476 365.833427 671.333254 347.1 687.2 328.366573 703.066746 302.133502 711 268.4 711L208.2 711ZM208.2 670.4 269 670.4C287.00009 670.4 300.733286 666.166709 310.2 657.7 319.666714 649.233291 324.4 637.000079 324.4 621 324.4 605.266588 319.600047 592.700047 310 583.3 300.399951 573.899953 287.200083 569.066669 270.4 568.8L208.2 568.8 208.2 670.4ZM419.4 819.2 419.4 528 505.4 528C531.133461 528 553.966566 533.733276 573.9 545.2 593.833434 556.666724 609.266611 572.933229 620.2 594 631.133389 615.066771 636.6 639.199863 636.6 666.4L636.6 681C636.6 708.600139 631.100055 732.866562 620.1 753.8 609.099945 774.733438 593.433436 790.866609 573.1 802.2 552.766564 813.533391 529.466799 819.2 503.2 819.2L419.4 819.2ZM470 568.8 470 778.8 503 778.8C529.533466 778.8 549.89993 770.500083 564.1 753.9 578.30007 737.299917 585.533331 713.466822 585.8 682.4L585.8 666.2C585.8 634.599842 578.933402 610.46675 565.2 593.8 551.466598 577.13325 531.533463 568.8 505.4 568.8L470 568.8ZM854.8 695.8 737.6 695.8 737.6 819.2 687 819.2 687 528 872 528 872 568.8 737.6 568.8 737.6 655.4 854.8 655.4 854.8 695.8Z"
|
||||
fill="#01A9FF"
|
||||
p-id="1380"
|
||||
></path>
|
||||
</svg>
|
||||
<el-image
|
||||
v-if="
|
||||
scope.row.credentialType == 'JPG' ||
|
||||
scope.row.credentialType == 'PNG' ||
|
||||
scope.row.credentialType == 'JPEG'
|
||||
"
|
||||
ref="preview"
|
||||
style="width: 50px; height: 50px"
|
||||
:src="getImageUrl(scope.row.credentialFile)"
|
||||
@click="onPreview(scope.row.credentialFile)"
|
||||
></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip/>
|
||||
<el-table-column label="备注" align="center" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
|
|
@ -134,27 +204,30 @@
|
|||
icon="el-icon-download"
|
||||
@click="handledownload(scope.row)"
|
||||
v-hasPermi="['project:surProjectSpecial:list']"
|
||||
>下载证书</el-button>
|
||||
>下载证书</el-button
|
||||
>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:surProjectSpecial:edit']"
|
||||
>修改</el-button>
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:surProjectSpecial:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
|
|
@ -165,13 +238,13 @@
|
|||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input v-model="form.projectName" placeholder="请输入项目名称" disabled/>
|
||||
<el-input v-model="form.projectName" placeholder="请输入项目名称" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="人员姓名" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入人员姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="sex">
|
||||
<el-select v-model="form.sex" placeholder="请选择性别" style="width: 100%;">
|
||||
<el-select v-model="form.sex" placeholder="请选择性别" style="width: 100%">
|
||||
<el-option
|
||||
v-for="dict in dict.type.sys_user_sex"
|
||||
:key="dict.value"
|
||||
|
|
@ -184,7 +257,12 @@
|
|||
<el-input v-model="form.phoneNumber" placeholder="请输入联系方式" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否有证书" prop="isCredential" v-if="false">
|
||||
<el-select v-model="form.isCredential" placeholder="请选择是否有证书" style="width: 100%;" @change="credentialChange">
|
||||
<el-select
|
||||
v-model="form.isCredential"
|
||||
placeholder="请选择是否有证书"
|
||||
style="width: 100%"
|
||||
@change="credentialChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.sys_yes_no"
|
||||
:key="dict.value"
|
||||
|
|
@ -196,19 +274,31 @@
|
|||
<el-form-item label="证书编号" prop="credentialNumber" v-show="credential">
|
||||
<el-input v-model="form.credentialNumber" placeholder="请输入证书编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="证书过期时间" prop="credentialExpirationTime" v-show="credential">
|
||||
<el-date-picker clearable
|
||||
<el-form-item
|
||||
label="证书过期时间"
|
||||
prop="credentialExpirationTime"
|
||||
v-show="credential"
|
||||
>
|
||||
<el-date-picker
|
||||
clearable
|
||||
v-model="form.credentialExpirationTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="请选择证书过期时间" style="width: 100%;">
|
||||
placeholder="请选择证书过期时间"
|
||||
style="width: 100%"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="证书附件" prop="credentialFile">
|
||||
<FileUpload @input="fileInput" :limit="1" :fileType="['pdf','png','jpg','jpeg']" v-model="files"/>
|
||||
<FileUpload
|
||||
@input="fileInput"
|
||||
:limit="1"
|
||||
:fileType="['pdf', 'png', 'jpg', 'jpeg']"
|
||||
v-model="files"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
|
@ -216,17 +306,29 @@
|
|||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="previewList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listSurProjectSpecial, getSurProjectSpecial, delSurProjectSpecial, addSurProjectSpecial, updateSurProjectSpecial } from "@/api/project/surProjectSpecial";
|
||||
import {
|
||||
listSurProjectSpecial,
|
||||
getSurProjectSpecial,
|
||||
delSurProjectSpecial,
|
||||
addSurProjectSpecial,
|
||||
updateSurProjectSpecial,
|
||||
} from "@/api/project/surProjectSpecial";
|
||||
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
|
||||
|
||||
export default {
|
||||
name: "SurProjectSpecial",
|
||||
dicts: ['sys_yes_no', 'sys_user_sex'],
|
||||
components: {
|
||||
ElImageViewer,
|
||||
},
|
||||
dicts: ["sys_yes_no", "sys_user_sex"],
|
||||
data() {
|
||||
return {
|
||||
showViewer: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
|
|
@ -258,9 +360,9 @@ export default {
|
|||
credentialNumber: null,
|
||||
credentialExpirationTime: null,
|
||||
isDel: null,
|
||||
projectDeptId: null
|
||||
projectDeptId: null,
|
||||
},
|
||||
depts:null,
|
||||
depts: null,
|
||||
credential: false,
|
||||
// 表单参数
|
||||
form: {},
|
||||
|
|
@ -268,67 +370,82 @@ export default {
|
|||
// 表单校验
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: "请输入人员姓名", trigger: "blur" },
|
||||
{ maxlength: 20, message: "人员姓名最多20字符", trigger: "blur" }
|
||||
],
|
||||
sex: [
|
||||
{ required: true, message: "请选择人员性别", trigger: "blur" }
|
||||
],
|
||||
isCredential: [
|
||||
{ required: false, message: "请选择是否有证书", trigger: "blur" }
|
||||
],
|
||||
phoneNumber: [
|
||||
{ required: true, message: "请输入联系方式", trigger: "blur" },
|
||||
{
|
||||
validator: function(rule, value, callback) {
|
||||
if (/^1[34578]\d{9}$/.test(value) == false) {
|
||||
callback(new Error("联系手机格式错误"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
},
|
||||
trigger: "blur"
|
||||
}
|
||||
],
|
||||
credentialNumber: [
|
||||
{ required: true, message: "请输入证书编号", trigger: "blur" },
|
||||
{ maxlength: 50, message: "证书编号最多50字符", trigger: "blur" }
|
||||
],
|
||||
credentialExpirationTime: [
|
||||
{ required: true, message: "请选择证书过期时间", trigger: "blur" }
|
||||
],
|
||||
remark: [
|
||||
{ required: false, message: "请输入备注", trigger: "blur" },
|
||||
{ maxlength: 200, message: "备注最多200字符", trigger: "blur" }
|
||||
]
|
||||
}
|
||||
{ required: true, message: "请输入人员姓名", trigger: "blur" },
|
||||
{ maxlength: 20, message: "人员姓名最多20字符", trigger: "blur" },
|
||||
],
|
||||
sex: [{ required: true, message: "请选择人员性别", trigger: "blur" }],
|
||||
isCredential: [{ required: false, message: "请选择是否有证书", trigger: "blur" }],
|
||||
phoneNumber: [
|
||||
{ required: true, message: "请输入联系方式", trigger: "blur" },
|
||||
{
|
||||
validator: function (rule, value, callback) {
|
||||
if (/^1[34578]\d{9}$/.test(value) == false) {
|
||||
callback(new Error("联系手机格式错误"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
},
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
credentialNumber: [
|
||||
{ required: true, message: "请输入证书编号", trigger: "blur" },
|
||||
{ maxlength: 50, message: "证书编号最多50字符", trigger: "blur" },
|
||||
],
|
||||
credentialExpirationTime: [
|
||||
{ required: true, message: "请选择证书过期时间", trigger: "blur" },
|
||||
],
|
||||
remark: [
|
||||
{ required: false, message: "请输入备注", trigger: "blur" },
|
||||
{ maxlength: 200, message: "备注最多200字符", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
previewList: [],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.$api.publics.getZgsDeptList().then(d=>{
|
||||
this.depts=d?.data||[];
|
||||
})
|
||||
this.$api.publics.getZgsDeptList().then((d) => {
|
||||
this.depts = d?.data || [];
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
getImageUrl(url) {
|
||||
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
|
||||
},
|
||||
onPreview(url) {
|
||||
this.previewList = [];
|
||||
this.previewList.push(process.env.VUE_APP_BASE_API + url);
|
||||
this.showViewer = true;
|
||||
},
|
||||
closeViewer() {
|
||||
this.showViewer = false;
|
||||
},
|
||||
// 是否有证书
|
||||
credentialChange(ev){},
|
||||
fileInput(files){
|
||||
if(files.length>0){
|
||||
this.form.credentialFile = files[0].url;
|
||||
}else{
|
||||
this.form.credentialFile = null;
|
||||
credentialChange(ev) {},
|
||||
fileInput(files) {
|
||||
if (files.length > 0) {
|
||||
this.form.credentialFile = files[0].url;
|
||||
} else {
|
||||
this.form.credentialFile = null;
|
||||
}
|
||||
},
|
||||
/** 查询项目特种人员列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
this.queryParams.params = {};
|
||||
if (null != this.daterangeCredentialExpirationTime && '' != this.daterangeCredentialExpirationTime) {
|
||||
this.queryParams.params["beginCredentialExpirationTime"] = this.daterangeCredentialExpirationTime[0];
|
||||
this.queryParams.params["endCredentialExpirationTime"] = this.daterangeCredentialExpirationTime[1];
|
||||
if (
|
||||
null != this.daterangeCredentialExpirationTime &&
|
||||
"" != this.daterangeCredentialExpirationTime
|
||||
) {
|
||||
this.queryParams.params[
|
||||
"beginCredentialExpirationTime"
|
||||
] = this.daterangeCredentialExpirationTime[0];
|
||||
this.queryParams.params[
|
||||
"endCredentialExpirationTime"
|
||||
] = this.daterangeCredentialExpirationTime[1];
|
||||
}
|
||||
listSurProjectSpecial(this.queryParams).then(response => {
|
||||
listSurProjectSpecial(this.queryParams).then((response) => {
|
||||
this.surProjectSpecialList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
|
|
@ -357,7 +474,7 @@ export default {
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
|
|
@ -374,9 +491,9 @@ export default {
|
|||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
this.ids = selection.map((item) => item.id);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
|
|
@ -387,8 +504,8 @@ export default {
|
|||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getSurProjectSpecial(id).then(response => {
|
||||
const id = row.id || this.ids;
|
||||
getSurProjectSpecial(id).then((response) => {
|
||||
this.form = response.data;
|
||||
this.files = this.form.credentialFile;
|
||||
this.open = true;
|
||||
|
|
@ -397,16 +514,16 @@ export default {
|
|||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.form.id != null) {
|
||||
updateSurProjectSpecial(this.form).then(response => {
|
||||
updateSurProjectSpecial(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addSurProjectSpecial(this.form).then(response => {
|
||||
addSurProjectSpecial(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
|
|
@ -418,23 +535,31 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除项目特种人员编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delSurProjectSpecial(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
this.$modal
|
||||
.confirm('是否确认删除项目特种人员编号为"' + ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delSurProjectSpecial(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('project/surProjectSpecial/export', {
|
||||
...this.queryParams
|
||||
}, `surProjectSpecial_${new Date().getTime()}.xlsx`)
|
||||
this.download(
|
||||
"project/surProjectSpecial/export",
|
||||
{
|
||||
...this.queryParams,
|
||||
},
|
||||
`surProjectSpecial_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
},
|
||||
/** 下载证书 */
|
||||
handledownload(row){
|
||||
window.open('/jhapi'+row.credentialFile);
|
||||
}
|
||||
}
|
||||
handledownload(row) {
|
||||
window.open("/jhapi" + row.credentialFile);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -114,16 +114,17 @@
|
|||
p-id="1380"
|
||||
></path>
|
||||
</svg>
|
||||
<image-preview
|
||||
<el-image
|
||||
v-if="
|
||||
scope.row.credentialType == 'JPG' ||
|
||||
scope.row.credentialType == 'PNG' ||
|
||||
scope.row.credentialType == 'JPEG'
|
||||
"
|
||||
:src="scope.row.credentialFile"
|
||||
:width="50"
|
||||
:height="50"
|
||||
/>
|
||||
ref="preview"
|
||||
style="width: 50px; height: 50px"
|
||||
:src="getImageUrl(scope.row.credentialFile)"
|
||||
@click="onPreview(scope.row.credentialFile)"
|
||||
></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
|
|
@ -244,6 +245,12 @@
|
|||
</div>
|
||||
</el-dialog>
|
||||
</el-drawer>
|
||||
<el-image-viewer
|
||||
v-if="showViewer"
|
||||
:on-close="closeViewer"
|
||||
:url-list="previewList"
|
||||
style="z-index: 2050"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
@ -255,9 +262,12 @@ import {
|
|||
addSurProjectSpecial,
|
||||
updateSurProjectSpecial,
|
||||
} from "@/api/project/surProjectSpecial";
|
||||
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
|
||||
|
||||
export default {
|
||||
components: {},
|
||||
components: {
|
||||
ElImageViewer,
|
||||
},
|
||||
props: {
|
||||
formData: {
|
||||
projectId: String,
|
||||
|
|
@ -267,6 +277,7 @@ export default {
|
|||
dicts: ["sys_yes_no", "sys_user_sex"],
|
||||
data() {
|
||||
return {
|
||||
showViewer: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
|
|
@ -327,6 +338,7 @@ export default {
|
|||
{ maxlength: 200, message: "备注最多200字符", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
previewList: [],
|
||||
};
|
||||
},
|
||||
computed: {},
|
||||
|
|
@ -342,6 +354,17 @@ export default {
|
|||
mounted() {},
|
||||
beforeDestroy() {},
|
||||
methods: {
|
||||
getImageUrl(url) {
|
||||
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
|
||||
},
|
||||
onPreview(url) {
|
||||
this.previewList = [];
|
||||
this.previewList.push(process.env.VUE_APP_BASE_API + url);
|
||||
this.showViewer = true;
|
||||
},
|
||||
closeViewer() {
|
||||
this.showViewer = false;
|
||||
},
|
||||
fileInput(files) {
|
||||
if (files.length > 0) {
|
||||
this.form.credentialFile = files[0].url;
|
||||
|
|
|
|||
|
|
@ -1,241 +1,360 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-drawer v-bind="$attrs" v-if="onOpen" v-on="$listeners" @opened="onOpen" @close="onClose" style="padding-left: 20px;">
|
||||
<el-row :gutter="10" class="mb8" style="margin-left: 25px; margin-top:10px;margin-right:0px;">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['work:emergencyDrill:add']"
|
||||
>添加</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getworkTrainList"></right-toolbar>
|
||||
</el-row>
|
||||
<div class="app-container">
|
||||
<el-drawer
|
||||
v-bind="$attrs"
|
||||
v-if="onOpen"
|
||||
v-on="$listeners"
|
||||
@opened="onOpen"
|
||||
@close="onClose"
|
||||
style="padding-left: 20px"
|
||||
>
|
||||
<el-row
|
||||
:gutter="10"
|
||||
class="mb8"
|
||||
style="margin-left: 25px; margin-top: 10px; margin-right: 0px"
|
||||
>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['work:emergencyDrill:add']"
|
||||
>添加</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar
|
||||
:showSearch.sync="showSearch"
|
||||
@queryTable="getworkTrainList"
|
||||
></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="workTrainList" @selection-change="handleSelectionChange">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="workTrainList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column label="演练主图" align="center" prop="mainImage" width="75">
|
||||
<template slot-scope="scope">
|
||||
<image-preview :src="scope.row.mainImage" :width="50" :height="50"/>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-image
|
||||
ref="preview"
|
||||
style="width: 50px; height: 50px"
|
||||
:src="getImageUrl(scope.row.mainImage)"
|
||||
@click="onPreview(scope.row.mainImage)"
|
||||
></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="演练类型" align="center" prop="trainNature" width="130" show-overflow-tooltip v-if="false">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.train_nature_yjyl" :value="scope.row.trainNature"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="演练标题" align="center" prop="trainTitle" width="160" show-overflow-tooltip/>
|
||||
<el-table-column label="参与人数" align="center" prop="trainParticipants" width="90"/>
|
||||
<el-table-column label="开始时间" align="center" prop="beginDate" width="100">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d}') }}</div>
|
||||
<div>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="演练内容" align="center" prop="trainContent" width="170" show-overflow-tooltip />
|
||||
<el-table-column label="协同部门" align="center" prop="trainDeptNames" width="220" show-overflow-tooltip >
|
||||
<template slot-scope="scope">
|
||||
<div class='div_tag' v-for="dept in getTrainDeptNames(scope.row.trainDeptNames)"><el-tag>{{ dept }}</el-tag></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="scope.row.vDel=='0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['work:emergencyDrill:edit']"
|
||||
>修改</el-button>
|
||||
<el-button v-if="scope.row.vDel=='0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['work:emergencyDrill:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getworkTrainList"
|
||||
<el-table-column
|
||||
label="演练类型"
|
||||
align="center"
|
||||
prop="trainNature"
|
||||
width="130"
|
||||
show-overflow-tooltip
|
||||
v-if="false"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<dict-tag
|
||||
:options="dict.type.train_nature_yjyl"
|
||||
:value="scope.row.trainNature"
|
||||
/>
|
||||
<el-dialog :title="title" v-if="open" :visible.sync="open" width="680px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="演练标题"
|
||||
align="center"
|
||||
prop="trainTitle"
|
||||
width="160"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="参与人数"
|
||||
align="center"
|
||||
prop="trainParticipants"
|
||||
width="90"
|
||||
/>
|
||||
<el-table-column label="演练时间" align="center" prop="beginDate" width="100">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ parseTime(scope.row.beginDate, "{y}-{m}-{d} {h}:{i}") }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="演练内容"
|
||||
align="center"
|
||||
prop="trainContent"
|
||||
width="170"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="协同部门"
|
||||
align="center"
|
||||
prop="trainDeptNames"
|
||||
width="220"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
class="div_tag"
|
||||
v-for="dept in getTrainDeptNames(scope.row.trainDeptNames)"
|
||||
>
|
||||
<el-tag>{{ dept }}</el-tag>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
width="120"
|
||||
class-name="small-padding fixed-width"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.vDel == '0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['work:emergencyDrill:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="scope.row.vDel == '0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['work:emergencyDrill:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getworkTrainList"
|
||||
/>
|
||||
<el-dialog
|
||||
:title="title"
|
||||
v-if="open"
|
||||
:visible.sync="open"
|
||||
width="680px"
|
||||
append-to-body
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="项目名称">
|
||||
<el-input placeholder="项目名称" v-model="form.projectName" :disabled="true"></el-input>
|
||||
<el-input
|
||||
placeholder="项目名称"
|
||||
v-model="form.projectName"
|
||||
:disabled="true"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练主图" prop="mainImage">
|
||||
<image-upload v-model="form.mainImage" :limit="1"/>
|
||||
<image-upload v-model="form.mainImage" :limit="1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="演练类型" prop="trainNature" v-if="false">
|
||||
<el-select v-model="form.trainNature" placeholder="请选择演练类型" style="width: 100%;">
|
||||
<el-option
|
||||
<el-form-item label="演练类型" prop="trainNature" v-if="false">
|
||||
<el-select
|
||||
v-model="form.trainNature"
|
||||
placeholder="请选择演练类型"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.train_nature_yjyl"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
></el-option>
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练标题" prop="trainTitle">
|
||||
<el-input v-model="form.trainTitle" placeholder="请输入演练标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="参与人数" prop="trainParticipants">
|
||||
<el-input-number v-model="form.trainParticipants" placeholder="请输入工作参与者" controls-position="right" style="width: 100%;" :min="1"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练日期" prop="daterangeMarksTime">
|
||||
</el-form-item>
|
||||
<el-form-item label="演练标题" prop="trainTitle">
|
||||
<el-input v-model="form.trainTitle" placeholder="请输入演练标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="参与人数" prop="trainParticipants">
|
||||
<el-input-number
|
||||
v-model="form.trainParticipants"
|
||||
placeholder="请输入工作参与者"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
:min="1"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练日期" prop="beginDate">
|
||||
<el-date-picker
|
||||
v-model="daterangeMarksTime"
|
||||
style="width: 100%"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练内容" prop="trainContent">
|
||||
<el-input type="textarea" v-model="form.trainContent" placeholder="请输入演练内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="协同部门" prop="remark">
|
||||
<el-select v-model="form.workTrainDeptList" multiple placeholder="请选择协同部门" style="width: 100%;">
|
||||
<el-option
|
||||
v-model="form.beginDate"
|
||||
type="datetime"
|
||||
placeholder="选择日期时间"
|
||||
default-time="10:00:00"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练内容" prop="trainContent">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="form.trainContent"
|
||||
placeholder="请输入演练内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="协同部门" prop="remark">
|
||||
<el-select
|
||||
v-model="form.workTrainDeptList"
|
||||
multiple
|
||||
placeholder="请选择协同部门"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in deptOptions"
|
||||
:key="item.deptId"
|
||||
:label="item.deptName"
|
||||
:value="item.deptId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
:value="item.deptId"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
</el-drawer>
|
||||
<el-image-viewer
|
||||
v-if="showViewer"
|
||||
:on-close="closeViewer"
|
||||
:url-list="previewList"
|
||||
style="z-index: 2050"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listWorkTrain, getWorkTrain, delWorkTrain, addWorkTrain, updateWorkTrain, listProjectUnit } from "@/api/work/emergencyDrill";
|
||||
<script>
|
||||
import {
|
||||
listWorkTrain,
|
||||
getWorkTrain,
|
||||
delWorkTrain,
|
||||
addWorkTrain,
|
||||
updateWorkTrain,
|
||||
listProjectUnit,
|
||||
} from "@/api/work/emergencyDrill";
|
||||
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
|
||||
|
||||
export default {
|
||||
components: {},
|
||||
props: {
|
||||
formData: {
|
||||
projectId: String,
|
||||
projectName: String
|
||||
}
|
||||
export default {
|
||||
components: {
|
||||
ElImageViewer,
|
||||
},
|
||||
props: {
|
||||
formData: {
|
||||
projectId: String,
|
||||
projectName: String,
|
||||
},
|
||||
dicts: ['train_nature_yjyl'],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 应急演练表格数据
|
||||
workTrainList: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
deptOptions: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
trainType: 1,
|
||||
projectId: null
|
||||
},
|
||||
daterangeMarksTime: [],
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
mainImage: [
|
||||
{ required: true, message: "请上传演练主图", trigger: "blur" }
|
||||
],
|
||||
trainNature: [
|
||||
{ required: false, message: "请选择演练类型", trigger: "blur" }
|
||||
],
|
||||
trainTitle: [
|
||||
{ required: true, message: "请输入培训标题", trigger: "blur" },
|
||||
{ max: 20, message: '培训标题最多20个字符',trigger: 'blur' }
|
||||
],
|
||||
trainParticipants: [
|
||||
{ required: true, message: "请输入参与人数", trigger: "blur" }
|
||||
],
|
||||
trainContent: [
|
||||
{ required: true, message: "请输入演练内容", trigger: "blur" },
|
||||
{ max: 1000, message: '演练内容长度在最多1000个字符',trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
},
|
||||
dicts: ["train_nature_yjyl"],
|
||||
data() {
|
||||
return {
|
||||
showViewer: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 应急演练表格数据
|
||||
workTrainList: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
deptOptions: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
trainType: 1,
|
||||
projectId: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
mainImage: [{ required: true, message: "请上传演练主图", trigger: "blur" }],
|
||||
trainNature: [{ required: false, message: "请选择演练类型", trigger: "blur" }],
|
||||
beginDate: [{ required: false, message: "请选择演练时间", trigger: "blur" }],
|
||||
trainTitle: [
|
||||
{ required: true, message: "请输入培训标题", trigger: "blur" },
|
||||
{ max: 20, message: "培训标题最多20个字符", trigger: "blur" },
|
||||
],
|
||||
trainParticipants: [
|
||||
{ required: true, message: "请输入参与人数", trigger: "blur" },
|
||||
],
|
||||
trainContent: [
|
||||
{ required: true, message: "请输入演练内容", trigger: "blur" },
|
||||
{ max: 1000, message: "演练内容长度在最多1000个字符", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
previewList: [],
|
||||
};
|
||||
},
|
||||
computed: {},
|
||||
watch: {
|
||||
formData: {
|
||||
handler(value) {
|
||||
this.formData = value;
|
||||
},
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
created() {},
|
||||
mounted() {},
|
||||
beforeDestroy() {},
|
||||
methods: {
|
||||
getImageUrl(url) {
|
||||
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
|
||||
},
|
||||
onPreview(url) {
|
||||
this.previewList = [];
|
||||
this.previewList.push(process.env.VUE_APP_BASE_API + url);
|
||||
this.showViewer = true;
|
||||
},
|
||||
closeViewer() {
|
||||
this.showViewer = false;
|
||||
},
|
||||
getTrainDeptNames(vals) {
|
||||
if (vals != null) {
|
||||
return vals.split(",");
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {
|
||||
formData: {
|
||||
handler(value) {
|
||||
this.formData = value
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
onOpen() {
|
||||
this.getworkTrainList();
|
||||
},
|
||||
created() {
|
||||
|
||||
onClose() {},
|
||||
/** 查询应急演练列表 */
|
||||
getworkTrainList() {
|
||||
if (this.formData.projectId) {
|
||||
this.loading = true;
|
||||
this.queryParams.projectId = this.formData.projectId;
|
||||
listWorkTrain(this.queryParams).then((response) => {
|
||||
this.workTrainList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
beforeDestroy() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
getTrainDeptNames(vals){
|
||||
if(vals!=null){
|
||||
return vals.split(',');
|
||||
}else{
|
||||
return [];
|
||||
}
|
||||
},
|
||||
onOpen() {
|
||||
this.getworkTrainList();
|
||||
},
|
||||
onClose() {},
|
||||
/** 查询应急演练列表 */
|
||||
getworkTrainList() {
|
||||
if(this.formData.projectId){
|
||||
this.loading = true;
|
||||
this.queryParams.projectId = this.formData.projectId;
|
||||
listWorkTrain(this.queryParams).then(response => {
|
||||
this.workTrainList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
this.ids = selection.map((item) => item.id);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
|
|
@ -255,17 +374,16 @@
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
};
|
||||
this.deptOptions=[];
|
||||
this.deptOptions = [];
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.form.projectId=this.formData.projectId;
|
||||
this.form.projectName=this.formData.projectName;
|
||||
this.daterangeMarksTime=[];
|
||||
this.form.projectId = this.formData.projectId;
|
||||
this.form.projectName = this.formData.projectName;
|
||||
this.open = true;
|
||||
this.title = "添加应急演练";
|
||||
this.getDeptList();
|
||||
|
|
@ -279,33 +397,26 @@
|
|||
getDeptList(id) {
|
||||
this.loading = true;
|
||||
let param = {
|
||||
projectId:this.form.projectId
|
||||
}
|
||||
projectId: this.form.projectId,
|
||||
};
|
||||
//获取项目部门列表的接口
|
||||
listProjectUnit(param).then(response => {
|
||||
listProjectUnit(param).then((response) => {
|
||||
this.loading = false;
|
||||
this.deptOptions = response.data;
|
||||
})
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (null != this.daterangeMarksTime && '' != this.daterangeMarksTime) {
|
||||
this.form.beginDate = this.daterangeMarksTime[0];
|
||||
this.form.endDate = this.daterangeMarksTime[1];
|
||||
}else{
|
||||
this.$modal.msgWarning("请选择演练时间");
|
||||
return false;
|
||||
}
|
||||
// 重新组装部门数据
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach(item => {
|
||||
depts.push({deptId:item});
|
||||
this.form.workTrainDeptList.forEach((item) => {
|
||||
depts.push({ deptId: item });
|
||||
});
|
||||
this.form.workTrainDeptList = depts;
|
||||
if (this.form.id != null) {
|
||||
updateWorkTrain(this.form).then(response => {
|
||||
updateWorkTrain(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getworkTrainList();
|
||||
|
|
@ -313,7 +424,7 @@
|
|||
} else {
|
||||
this.form.trainType = 1;
|
||||
this.form.isDel = 0;
|
||||
addWorkTrain(this.form).then(response => {
|
||||
addWorkTrain(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("添加成功");
|
||||
this.open = false;
|
||||
this.getworkTrainList();
|
||||
|
|
@ -326,66 +437,76 @@
|
|||
handleUpdate(row) {
|
||||
this.reset();
|
||||
this.title = "修改应急演练";
|
||||
const id = row.id || this.ids
|
||||
const id = row.id || this.ids;
|
||||
let param = {
|
||||
projectId:this.formData.projectId
|
||||
}
|
||||
projectId: this.formData.projectId,
|
||||
};
|
||||
//获取项目部门列表的接口
|
||||
listProjectUnit(param).then(response => {
|
||||
listProjectUnit(param).then((response) => {
|
||||
this.deptOptions = response.data;
|
||||
this.open = true;
|
||||
})
|
||||
getWorkTrain(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.daterangeMarksTime=[];
|
||||
this.daterangeMarksTime[0] = new Date(this.form.beginDate);
|
||||
this.daterangeMarksTime[1] = new Date(this.form.endDate);
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach(item => {
|
||||
depts.push(item.deptId);
|
||||
})
|
||||
this.form.workTrainDeptList = depts;
|
||||
});
|
||||
getWorkTrain(id).then((response) => {
|
||||
this.form = response.data;
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach((item) => {
|
||||
depts.push(item.deptId);
|
||||
});
|
||||
this.form.workTrainDeptList = depts;
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除应急演练编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delSurProjectUserInfo(ids);
|
||||
}).then(() => {
|
||||
this.getworkTrainList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
this.$modal
|
||||
.confirm('是否确认删除应急演练编号为"' + ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delSurProjectUserInfo(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getworkTrainList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
//日期格式化
|
||||
getDateTime(unixtimestamp) {
|
||||
var unixtimestamp = new Date(unixtimestamp);
|
||||
var year = 1900 + unixtimestamp.getYear();
|
||||
var month = "0" + (unixtimestamp.getMonth() + 1);
|
||||
var date = "0" + unixtimestamp.getDate();
|
||||
var hour = "0" + unixtimestamp.getHours();
|
||||
var minute = "0" + unixtimestamp.getMinutes();
|
||||
var second = "0" + unixtimestamp.getSeconds();
|
||||
return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length) +
|
||||
" " + hour.substring(hour.length - 2, hour.length) + ":" +
|
||||
minute.substring(minute.length - 2, minute.length) + ":" +
|
||||
second.substring(second.length - 2, second.length);
|
||||
var unixtimestamp = new Date(unixtimestamp);
|
||||
var year = 1900 + unixtimestamp.getYear();
|
||||
var month = "0" + (unixtimestamp.getMonth() + 1);
|
||||
var date = "0" + unixtimestamp.getDate();
|
||||
var hour = "0" + unixtimestamp.getHours();
|
||||
var minute = "0" + unixtimestamp.getMinutes();
|
||||
var second = "0" + unixtimestamp.getSeconds();
|
||||
return (
|
||||
year +
|
||||
"-" +
|
||||
month.substring(month.length - 2, month.length) +
|
||||
"-" +
|
||||
date.substring(date.length - 2, date.length) +
|
||||
" " +
|
||||
hour.substring(hour.length - 2, hour.length) +
|
||||
":" +
|
||||
minute.substring(minute.length - 2, minute.length) +
|
||||
":" +
|
||||
second.substring(second.length - 2, second.length)
|
||||
);
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import '@/styles/mixin.scss';
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import "@/styles/mixin.scss";
|
||||
|
||||
::v-deep .el-drawer__header {
|
||||
display: none;
|
||||
}
|
||||
@include action-bar;
|
||||
::v-deep .el-drawer__header {
|
||||
display: none;
|
||||
}
|
||||
@include action-bar;
|
||||
|
||||
.json-editor{
|
||||
height: calc(100vh - 33px);
|
||||
}
|
||||
.div_tag{
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.json-editor {
|
||||
height: calc(100vh - 33px);
|
||||
}
|
||||
.div_tag {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,13 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
size="small"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input
|
||||
v-model="queryParams.projectName"
|
||||
|
|
@ -10,7 +17,12 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练类型" prop="trainNature" v-if="false">
|
||||
<el-select v-model="queryParams.trainNature" @keyup.enter.native="handleQuery" placeholder="请选择演练类型" clearable>
|
||||
<el-select
|
||||
v-model="queryParams.trainNature"
|
||||
@keyup.enter.native="handleQuery"
|
||||
placeholder="请选择演练类型"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.train_nature_yjyl"
|
||||
:key="dict.value"
|
||||
|
|
@ -19,23 +31,31 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训标题" prop="trainTitle">
|
||||
<el-form-item label="演练标题" prop="trainTitle">
|
||||
<el-input
|
||||
v-model="queryParams.trainTitle"
|
||||
placeholder="请输入培训标题"
|
||||
placeholder="请输入演练标题"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="责任主体" prop="projectDeptId" v-hasPermi="['project:project:zgs']">
|
||||
<el-select v-model="queryParams.projectDeptId" placeholder="请选择责任主体" clearable>
|
||||
<el-option
|
||||
v-for="dict in depts"
|
||||
:key="dict.deptId"
|
||||
:label="dict.deptName"
|
||||
:value="dict.deptId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="责任主体"
|
||||
prop="projectDeptId"
|
||||
v-hasPermi="['project:project:zgs']"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.projectDeptId"
|
||||
placeholder="请选择责任主体"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in depts"
|
||||
:key="dict.deptId"
|
||||
:label="dict.deptName"
|
||||
:value="dict.deptId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练时间">
|
||||
<el-date-picker
|
||||
|
|
@ -49,7 +69,9 @@
|
|||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
@ -100,64 +122,98 @@
|
|||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row> -->
|
||||
|
||||
<el-table v-loading="loading" :data="workTrainList" @selection-change="handleSelectionChange">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="workTrainList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" width="200"/>
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" width="200" />
|
||||
<el-table-column label="演练主图" align="center" prop="mainImage" width="200">
|
||||
<template slot-scope="scope">
|
||||
<image-preview :src="scope.row.mainImage" :width="50" :height="50"/>
|
||||
<el-image
|
||||
ref="preview"
|
||||
style="width: 50px; height: 50px"
|
||||
:src="getImageUrl(scope.row.mainImage)"
|
||||
@click="onPreview(scope.row.mainImage)"
|
||||
></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="演练类型" align="center" prop="trainNature" v-if="false">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.train_nature_yjyl" :value="scope.row.trainNature"/>
|
||||
<dict-tag
|
||||
:options="dict.type.train_nature_yjyl"
|
||||
:value="scope.row.trainNature"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="演练标题" align="center" prop="trainTitle" width="150" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="演练标题"
|
||||
align="center"
|
||||
prop="trainTitle"
|
||||
width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="参与人数" align="center" prop="trainParticipants" />
|
||||
<el-table-column label="开始时间" align="center" prop="beginDate" width="120">
|
||||
<el-table-column label="演练时间" align="center" prop="beginDate" width="160">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d}') }}</span>
|
||||
<span>{{ parseTime(scope.row.beginDate, "{y}-{m}-{d} {h}:{i}") }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结束时间" align="center" prop="endDate" width="120">
|
||||
<el-table-column
|
||||
label="演练内容"
|
||||
align="center"
|
||||
prop="trainContent"
|
||||
width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="协同部门"
|
||||
align="center"
|
||||
prop="trainDeptNames"
|
||||
width="220"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
|
||||
<div
|
||||
class="div_tag"
|
||||
v-for="dept in getTrainDeptNames(scope.row.trainDeptNames)"
|
||||
>
|
||||
<el-tag>{{ dept }}</el-tag>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="演练内容" align="center" prop="trainContent" width="150" show-overflow-tooltip />
|
||||
<el-table-column label="协同部门" align="center" prop="trainDeptNames" width="220" show-overflow-tooltip >
|
||||
<template slot-scope="scope">
|
||||
<div class='div_tag' v-for="dept in getTrainDeptNames(scope.row.trainDeptNames)"><el-tag>{{ dept }}</el-tag></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数据状态" align="center" prop="isDel">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel"/>
|
||||
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="scope.row.vDel=='0'"
|
||||
<el-button
|
||||
v-if="scope.row.vDel == '0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['work:workTrain:edit']"
|
||||
>修改</el-button>
|
||||
<el-button v-if="scope.row.vDel=='0'"
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="scope.row.vDel == '0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['work:workTrain:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
|
|
@ -168,13 +224,22 @@
|
|||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="项目名称">
|
||||
<el-input placeholder="请输入项目名称" v-model="form.projectName" :disabled="true"></el-input>
|
||||
</el-form-item>
|
||||
<el-input
|
||||
placeholder="请输入项目名称"
|
||||
v-model="form.projectName"
|
||||
:disabled="true"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练主图" prop="mainImage">
|
||||
<image-upload v-model="form.mainImage" :limit="1"/>
|
||||
<image-upload v-model="form.mainImage" :limit="1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="演练类型" prop="trainNature" v-if="false">
|
||||
<el-select v-model="form.trainNature" filterable placeholder="请选择演练类型" style="width: 100%;">
|
||||
<el-select
|
||||
v-model="form.trainNature"
|
||||
filterable
|
||||
placeholder="请选择演练类型"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.train_nature_yjyl"
|
||||
:key="dict.value"
|
||||
|
|
@ -184,34 +249,48 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训标题">
|
||||
<el-input placeholder="请输入培训标题" v-model="form.trainTitle"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="参与人数" prop="trainParticipants">
|
||||
<el-input-number v-model="form.trainParticipants" placeholder="请输入工作参与者" controls-position="right" style="width: 100%;" :min="1"/>
|
||||
<el-input placeholder="请输入培训标题" v-model="form.trainTitle"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练日期" prop="daterangeMarksTime">
|
||||
<el-form-item label="参与人数" prop="trainParticipants">
|
||||
<el-input-number
|
||||
v-model="form.trainParticipants"
|
||||
placeholder="请输入工作参与者"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
:min="1"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练日期" prop="beginDate">
|
||||
<el-date-picker
|
||||
v-model="daterangeMarksTime"
|
||||
style="width: 100%"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
></el-date-picker>
|
||||
v-model="form.beginDate"
|
||||
type="datetime"
|
||||
placeholder="选择日期时间"
|
||||
default-time="10:00:00"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="演练内容" prop="trainContent">
|
||||
<el-input type="textarea" v-model="form.trainContent" placeholder="请输入演练内容" />
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="form.trainContent"
|
||||
placeholder="请输入演练内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="协同部门" prop="workTrainDeptList">
|
||||
<el-select v-model="form.workTrainDeptList" multiple placeholder="请选择协同部门" style="width: 100%;">
|
||||
<el-select
|
||||
v-model="form.workTrainDeptList"
|
||||
multiple
|
||||
placeholder="请选择协同部门"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in deptOptions"
|
||||
:key="item.deptId"
|
||||
:label="item.deptName"
|
||||
:value="item.deptId">
|
||||
v-for="item in deptOptions"
|
||||
:key="item.deptId"
|
||||
:label="item.deptName"
|
||||
:value="item.deptId"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
|
@ -219,17 +298,30 @@
|
|||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="previewList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listWorkTrain, getWorkTrain, delWorkTrain, addWorkTrain, updateWorkTrain, listProjectUnit } from "@/api/work/emergencyDrill";
|
||||
import {
|
||||
listWorkTrain,
|
||||
getWorkTrain,
|
||||
delWorkTrain,
|
||||
addWorkTrain,
|
||||
updateWorkTrain,
|
||||
listProjectUnit,
|
||||
} from "@/api/work/emergencyDrill";
|
||||
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
|
||||
|
||||
export default {
|
||||
name: "WorkTrain",
|
||||
dicts: ['train_nature_yjyl','sys_common_isdel'],
|
||||
components: {
|
||||
ElImageViewer,
|
||||
},
|
||||
dicts: ["train_nature_yjyl", "sys_common_isdel"],
|
||||
data() {
|
||||
return {
|
||||
showViewer: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
|
|
@ -259,61 +351,70 @@ export default {
|
|||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
projectName: '',
|
||||
projectName: "",
|
||||
trainType: 1,
|
||||
trainNature: null,
|
||||
isDel: null,
|
||||
trainTitle: null,
|
||||
projectDeptId: null
|
||||
projectDeptId: null,
|
||||
},
|
||||
depts: null,
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
mainImage: [
|
||||
{ required: true, message: "请上传演练主图", trigger: "blur" }
|
||||
],
|
||||
trainNature: [
|
||||
{ required: false, message: "请选择演练类型", trigger: "blur" }
|
||||
],
|
||||
trainTitle: [
|
||||
{ required: true, message: "请输入培训标题", trigger: "blur" },
|
||||
{ max: 20, message: '培训标题最多20个字符',trigger: 'blur' }
|
||||
],
|
||||
trainParticipants: [
|
||||
{ required: true, message: "请输入参与人数", trigger: "blur" }
|
||||
],
|
||||
trainContent: [
|
||||
{ required: true, message: "请输入演练内容", trigger: "blur" },
|
||||
{ max: 1000, message: '演练内容长度在最多1000个字符',trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
mainImage: [{ required: true, message: "请上传演练主图", trigger: "blur" }],
|
||||
trainNature: [{ required: false, message: "请选择演练类型", trigger: "blur" }],
|
||||
beginDate: [{ required: false, message: "请选择演练时间", trigger: "blur" }],
|
||||
trainTitle: [
|
||||
{ required: true, message: "请输入培训标题", trigger: "blur" },
|
||||
{ max: 20, message: "培训标题最多20个字符", trigger: "blur" },
|
||||
],
|
||||
trainParticipants: [
|
||||
{ required: true, message: "请输入参与人数", trigger: "blur" },
|
||||
],
|
||||
trainContent: [
|
||||
{ required: true, message: "请输入演练内容", trigger: "blur" },
|
||||
{ max: 1000, message: "演练内容长度在最多1000个字符", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
previewList: [],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.$api.publics.getZgsDeptList().then(d=>{
|
||||
this.depts=d?.data||[];
|
||||
})
|
||||
this.$api.publics.getZgsDeptList().then((d) => {
|
||||
this.depts = d?.data || [];
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
getTrainDeptNames(vals){
|
||||
if(vals!=null){
|
||||
return vals.split(',');
|
||||
}else{
|
||||
return [];
|
||||
}
|
||||
},
|
||||
getImageUrl(url) {
|
||||
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
|
||||
},
|
||||
onPreview(url) {
|
||||
this.previewList = [];
|
||||
this.previewList.push(process.env.VUE_APP_BASE_API + url);
|
||||
this.showViewer = true;
|
||||
},
|
||||
closeViewer() {
|
||||
this.showViewer = false;
|
||||
},
|
||||
getTrainDeptNames(vals) {
|
||||
if (vals != null) {
|
||||
return vals.split(",");
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
/** 查询演练演练列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
this.queryParams.params = {};
|
||||
if (null != this.daterangeMarksTime && '' != this.daterangeMarksTime) {
|
||||
if (null != this.daterangeMarksTime && "" != this.daterangeMarksTime) {
|
||||
this.queryParams.params["beginMarksTime"] = this.daterangeMarksTime[0];
|
||||
this.queryParams.params["endMarksTime"] = this.daterangeMarksTime[1];
|
||||
}
|
||||
listWorkTrain(this.queryParams).then(response => {
|
||||
listWorkTrain(this.queryParams).then((response) => {
|
||||
this.workTrainList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
|
|
@ -342,7 +443,7 @@ export default {
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
};
|
||||
this.workTrainDeptList = [];
|
||||
this.resetForm("form");
|
||||
|
|
@ -359,9 +460,9 @@ export default {
|
|||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
this.ids = selection.map((item) => item.id);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
|
|
@ -374,50 +475,40 @@ export default {
|
|||
this.reset();
|
||||
const id = row.id || this.ids;
|
||||
let param = {
|
||||
projectId:row.projectId
|
||||
}
|
||||
projectId: row.projectId,
|
||||
};
|
||||
this.open = true;
|
||||
//获取项目部门列表的接口
|
||||
listProjectUnit(param).then(response => {
|
||||
listProjectUnit(param).then((response) => {
|
||||
this.deptOptions = response.data;
|
||||
})
|
||||
getWorkTrain(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.daterangeMarksTime=[];
|
||||
this.daterangeMarksTime[0] = new Date(this.form.beginDate);
|
||||
this.daterangeMarksTime[1] = new Date(this.form.endDate);
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach(item => {
|
||||
depts.push(item.deptId);
|
||||
})
|
||||
this.form.workTrainDeptList = depts;
|
||||
});
|
||||
getWorkTrain(id).then((response) => {
|
||||
this.form = response.data;
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach((item) => {
|
||||
depts.push(item.deptId);
|
||||
});
|
||||
this.form.workTrainDeptList = depts;
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (null != this.daterangeMarksTime && '' != this.daterangeMarksTime) {
|
||||
this.form.beginDate = this.daterangeMarksTime[0];
|
||||
this.form.endDate = this.daterangeMarksTime[1];
|
||||
}else{
|
||||
this.$modal.msgWarning("请选择演练时间");
|
||||
return false;
|
||||
}
|
||||
// 重新组装部门数据
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach(item => {
|
||||
depts.push({deptId:item});
|
||||
this.form.workTrainDeptList.forEach((item) => {
|
||||
depts.push({ deptId: item });
|
||||
});
|
||||
this.form.workTrainDeptList = depts;
|
||||
if (this.form.id != null) {
|
||||
updateWorkTrain(this.form).then(response => {
|
||||
updateWorkTrain(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addWorkTrain(this.form).then(response => {
|
||||
addWorkTrain(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
|
|
@ -429,14 +520,18 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除演练演练编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delWorkTrain(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
this.$modal
|
||||
.confirm('是否确认删除演练演练编号为"' + ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delWorkTrain(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
/** 演练演练协同部门序号 */
|
||||
/** 演练演练协同部门序号 */
|
||||
rowWorkTrainDeptIndex({ row, rowIndex }) {
|
||||
row.index = rowIndex + 1;
|
||||
},
|
||||
|
|
@ -454,26 +549,30 @@ export default {
|
|||
} else {
|
||||
const workTrainDeptList = this.workTrainDeptList;
|
||||
const checkedWorkTrainDept = this.checkedWorkTrainDept;
|
||||
this.workTrainDeptList = workTrainDeptList.filter(function(item) {
|
||||
return checkedWorkTrainDept.indexOf(item.index) == -1
|
||||
this.workTrainDeptList = workTrainDeptList.filter(function (item) {
|
||||
return checkedWorkTrainDept.indexOf(item.index) == -1;
|
||||
});
|
||||
}
|
||||
},
|
||||
/** 复选框选中数据 */
|
||||
handleWorkTrainDeptSelectionChange(selection) {
|
||||
this.checkedWorkTrainDept = selection.map(item => item.index)
|
||||
this.checkedWorkTrainDept = selection.map((item) => item.index);
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('work/workTrain/export', {
|
||||
...this.queryParams
|
||||
}, `workTrain_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
this.download(
|
||||
"work/workTrain/export",
|
||||
{
|
||||
...this.queryParams,
|
||||
},
|
||||
`workTrain_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.div_tag{
|
||||
margin-bottom: 5px;
|
||||
.div_tag {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,13 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
size="small"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="项目名称" prop="projectName">
|
||||
<el-input
|
||||
v-model="queryParams.projectName"
|
||||
|
|
@ -10,7 +17,12 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训类型" prop="trainNature" v-if="false">
|
||||
<el-select v-model="queryParams.trainNature" @keyup.enter.native="handleQuery" placeholder="请选择培训类型" clearable>
|
||||
<el-select
|
||||
v-model="queryParams.trainNature"
|
||||
@keyup.enter.native="handleQuery"
|
||||
placeholder="请选择培训类型"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.train_nature_zxpx"
|
||||
:key="dict.value"
|
||||
|
|
@ -27,15 +39,23 @@
|
|||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="责任主体" prop="projectDeptId" v-hasPermi="['project:project:zgs']">
|
||||
<el-select v-model="queryParams.projectDeptId" placeholder="请选择责任主体" clearable>
|
||||
<el-option
|
||||
v-for="dict in depts"
|
||||
:key="dict.deptId"
|
||||
:label="dict.deptName"
|
||||
:value="dict.deptId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
<el-form-item
|
||||
label="责任主体"
|
||||
prop="projectDeptId"
|
||||
v-hasPermi="['project:project:zgs']"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.projectDeptId"
|
||||
placeholder="请选择责任主体"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in depts"
|
||||
:key="dict.deptId"
|
||||
:label="dict.deptName"
|
||||
:value="dict.deptId"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训时间">
|
||||
<el-date-picker
|
||||
|
|
@ -49,7 +69,9 @@
|
|||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
@ -100,64 +122,98 @@
|
|||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row> -->
|
||||
|
||||
<el-table v-loading="loading" :data="workTrainList" @selection-change="handleSelectionChange">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="workTrainList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" width="200"/>
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" width="200" />
|
||||
<el-table-column label="培训主图" align="center" prop="mainImage" width="200">
|
||||
<template slot-scope="scope">
|
||||
<image-preview :src="scope.row.mainImage" :width="50" :height="50"/>
|
||||
<el-image
|
||||
ref="preview"
|
||||
style="width: 50px; height: 50px"
|
||||
:src="getImageUrl(scope.row.mainImage)"
|
||||
@click="onPreview(scope.row.mainImage)"
|
||||
></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="培训类型" align="center" prop="trainNature" v-if="false">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.train_nature_zxpx" :value="scope.row.trainNature"/>
|
||||
<dict-tag
|
||||
:options="dict.type.train_nature_zxpx"
|
||||
:value="scope.row.trainNature"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="培训标题" align="center" prop="trainTitle" width="150" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="培训标题"
|
||||
align="center"
|
||||
prop="trainTitle"
|
||||
width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column label="参与人数" align="center" prop="trainParticipants" />
|
||||
<el-table-column label="开始时间" align="center" prop="beginDate" width="120">
|
||||
<el-table-column label="培训时间" align="center" prop="beginDate" width="120">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d}') }}</span>
|
||||
<span>{{ parseTime(scope.row.beginDate, "{y}-{m}-{d} {h}:{i}") }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="结束时间" align="center" prop="endDate" width="120">
|
||||
<el-table-column
|
||||
label="培训内容"
|
||||
align="center"
|
||||
prop="trainContent"
|
||||
width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="协同部门"
|
||||
align="center"
|
||||
prop="trainDeptNames"
|
||||
width="220"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
|
||||
<div
|
||||
class="div_tag"
|
||||
v-for="dept in getTrainDeptNames(scope.row.trainDeptNames)"
|
||||
>
|
||||
<el-tag>{{ dept }}</el-tag>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="培训内容" align="center" prop="trainContent" width="150" show-overflow-tooltip />
|
||||
<el-table-column label="协同部门" align="center" prop="trainDeptNames" width="220" show-overflow-tooltip >
|
||||
<template slot-scope="scope">
|
||||
<div class='div_tag' v-for="dept in getTrainDeptNames(scope.row.trainDeptNames)"><el-tag>{{ dept }}</el-tag></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="数据状态" align="center" prop="isDel">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel"/>
|
||||
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="scope.row.vDel=='0'"
|
||||
<el-button
|
||||
v-if="scope.row.vDel == '0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['work:workTrain:edit']"
|
||||
>修改</el-button>
|
||||
<el-button v-if="scope.row.vDel=='0'"
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="scope.row.vDel == '0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['work:workTrain:remove']"
|
||||
>删除</el-button>
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
|
|
@ -168,13 +224,22 @@
|
|||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="项目名称">
|
||||
<el-input placeholder="请输入项目名称" v-model="form.projectName" :disabled="true"></el-input>
|
||||
</el-form-item>
|
||||
<el-input
|
||||
placeholder="请输入项目名称"
|
||||
v-model="form.projectName"
|
||||
:disabled="true"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训主图" prop="mainImage">
|
||||
<image-upload v-model="form.mainImage" :limit="1"/>
|
||||
<image-upload v-model="form.mainImage" :limit="1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="培训类型" prop="trainNature" v-if="false">
|
||||
<el-select v-model="form.trainNature" filterable placeholder="请选择培训类型" style="width: 100%;">
|
||||
<el-select
|
||||
v-model="form.trainNature"
|
||||
filterable
|
||||
placeholder="请选择培训类型"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.train_nature_zxpx"
|
||||
:key="dict.value"
|
||||
|
|
@ -184,34 +249,48 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训标题">
|
||||
<el-input placeholder="请输入培训标题" v-model="form.trainTitle"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="参与人数" prop="trainParticipants">
|
||||
<el-input-number v-model="form.trainParticipants" placeholder="请输入工作参与者" controls-position="right" style="width: 100%;" :min="1"/>
|
||||
<el-input placeholder="请输入培训标题" v-model="form.trainTitle"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训日期" prop="daterangeMarksTime">
|
||||
<el-form-item label="参与人数" prop="trainParticipants">
|
||||
<el-input-number
|
||||
v-model="form.trainParticipants"
|
||||
placeholder="请输入参与人数"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
:min="1"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训日期" prop="beginDate">
|
||||
<el-date-picker
|
||||
v-model="daterangeMarksTime"
|
||||
style="width: 100%"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
></el-date-picker>
|
||||
v-model="form.beginDate"
|
||||
type="datetime"
|
||||
placeholder="选择日期时间"
|
||||
default-time="10:00:00"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训内容" prop="trainContent">
|
||||
<el-input type="textarea" v-model="form.trainContent" placeholder="请输入培训内容" />
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="form.trainContent"
|
||||
placeholder="请输入培训内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="协同部门" prop="workTrainDeptList">
|
||||
<el-select v-model="form.workTrainDeptList" multiple placeholder="请选择协同部门" style="width: 100%;">
|
||||
<el-select
|
||||
v-model="form.workTrainDeptList"
|
||||
multiple
|
||||
placeholder="请选择协同部门"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in deptOptions"
|
||||
:key="item.deptId"
|
||||
:label="item.deptName"
|
||||
:value="item.deptId">
|
||||
v-for="item in deptOptions"
|
||||
:key="item.deptId"
|
||||
:label="item.deptName"
|
||||
:value="item.deptId"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
|
@ -219,17 +298,30 @@
|
|||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="previewList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listWorkTrain, getWorkTrain, delWorkTrain, addWorkTrain, updateWorkTrain, listProjectUnit } from "@/api/work/workTrain";
|
||||
import {
|
||||
listWorkTrain,
|
||||
getWorkTrain,
|
||||
delWorkTrain,
|
||||
addWorkTrain,
|
||||
updateWorkTrain,
|
||||
listProjectUnit,
|
||||
} from "@/api/work/workTrain";
|
||||
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
|
||||
|
||||
export default {
|
||||
name: "WorkTrain",
|
||||
dicts: ['train_nature_zxpx','sys_common_isdel'],
|
||||
components: {
|
||||
ElImageViewer,
|
||||
},
|
||||
dicts: ["train_nature_zxpx", "sys_common_isdel"],
|
||||
data() {
|
||||
return {
|
||||
showViewer: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
|
|
@ -259,61 +351,70 @@ export default {
|
|||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
projectName: '',
|
||||
projectName: "",
|
||||
trainType: 0,
|
||||
trainNature: null,
|
||||
isDel: null,
|
||||
trainTitle: null,
|
||||
projectDeptId: null
|
||||
projectDeptId: null,
|
||||
},
|
||||
depts:null,
|
||||
depts: null,
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
mainImage: [
|
||||
{ required: true, message: "请上传培训主图", trigger: "blur" }
|
||||
],
|
||||
trainNature: [
|
||||
{ required: false, message: "请选择培训类型", trigger: "blur" }
|
||||
],
|
||||
trainTitle: [
|
||||
{ required: true, message: "请输入培训标题", trigger: "blur" },
|
||||
{ max: 20, message: '培训标题最多20个字符',trigger: 'blur' }
|
||||
],
|
||||
trainParticipants: [
|
||||
{ required: true, message: "请输入参与人数", trigger: "blur" }
|
||||
],
|
||||
trainContent: [
|
||||
{ required: true, message: "请输入培训内容", trigger: "blur" },
|
||||
{ max: 1000, message: '培训内容长度在最多1000个字符',trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
mainImage: [{ required: true, message: "请上传培训主图", trigger: "blur" }],
|
||||
trainNature: [{ required: false, message: "请选择培训类型", trigger: "blur" }],
|
||||
beginDate: [{ required: false, message: "请选择演练时间", trigger: "blur" }],
|
||||
trainTitle: [
|
||||
{ required: true, message: "请输入培训标题", trigger: "blur" },
|
||||
{ max: 20, message: "培训标题最多20个字符", trigger: "blur" },
|
||||
],
|
||||
trainParticipants: [
|
||||
{ required: true, message: "请输入参与人数", trigger: "blur" },
|
||||
],
|
||||
trainContent: [
|
||||
{ required: true, message: "请输入培训内容", trigger: "blur" },
|
||||
{ max: 1000, message: "培训内容长度在最多1000个字符", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
previewList: [],
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.$api.publics.getZgsDeptList().then(d=>{
|
||||
this.depts=d?.data||[];
|
||||
})
|
||||
this.$api.publics.getZgsDeptList().then((d) => {
|
||||
this.depts = d?.data || [];
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
getTrainDeptNames(vals){
|
||||
if(vals!=null){
|
||||
return vals.split(',');
|
||||
}else{
|
||||
return [];
|
||||
}
|
||||
},
|
||||
getImageUrl(url) {
|
||||
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
|
||||
},
|
||||
onPreview(url) {
|
||||
this.previewList = [];
|
||||
this.previewList.push(process.env.VUE_APP_BASE_API + url);
|
||||
this.showViewer = true;
|
||||
},
|
||||
closeViewer() {
|
||||
this.showViewer = false;
|
||||
},
|
||||
getTrainDeptNames(vals) {
|
||||
if (vals != null) {
|
||||
return vals.split(",");
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
/** 查询演练培训列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
this.queryParams.params = {};
|
||||
if (null != this.daterangeMarksTime && '' != this.daterangeMarksTime) {
|
||||
if (null != this.daterangeMarksTime && "" != this.daterangeMarksTime) {
|
||||
this.queryParams.params["beginMarksTime"] = this.daterangeMarksTime[0];
|
||||
this.queryParams.params["endMarksTime"] = this.daterangeMarksTime[1];
|
||||
}
|
||||
listWorkTrain(this.queryParams).then(response => {
|
||||
listWorkTrain(this.queryParams).then((response) => {
|
||||
this.workTrainList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
|
|
@ -342,7 +443,7 @@ export default {
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
};
|
||||
this.workTrainDeptList = [];
|
||||
this.resetForm("form");
|
||||
|
|
@ -359,9 +460,9 @@ export default {
|
|||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
this.ids = selection.map((item) => item.id);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
|
|
@ -374,50 +475,40 @@ export default {
|
|||
this.reset();
|
||||
const id = row.id || this.ids;
|
||||
let param = {
|
||||
projectId:row.projectId
|
||||
}
|
||||
projectId: row.projectId,
|
||||
};
|
||||
this.open = true;
|
||||
//获取项目部门列表的接口
|
||||
listProjectUnit(param).then(response => {
|
||||
listProjectUnit(param).then((response) => {
|
||||
this.deptOptions = response.data;
|
||||
})
|
||||
getWorkTrain(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.daterangeMarksTime=[];
|
||||
this.daterangeMarksTime[0] = new Date(this.form.beginDate);
|
||||
this.daterangeMarksTime[1] = new Date(this.form.endDate);
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach(item => {
|
||||
depts.push(item.deptId);
|
||||
})
|
||||
this.form.workTrainDeptList = depts;
|
||||
});
|
||||
getWorkTrain(id).then((response) => {
|
||||
this.form = response.data;
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach((item) => {
|
||||
depts.push(item.deptId);
|
||||
});
|
||||
this.form.workTrainDeptList = depts;
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (null != this.daterangeMarksTime && '' != this.daterangeMarksTime) {
|
||||
this.form.beginDate = this.daterangeMarksTime[0];
|
||||
this.form.endDate = this.daterangeMarksTime[1];
|
||||
}else{
|
||||
this.$modal.msgWarning("请选择培训时间");
|
||||
return false;
|
||||
}
|
||||
// 重新组装部门数据
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach(item => {
|
||||
depts.push({deptId:item});
|
||||
this.form.workTrainDeptList.forEach((item) => {
|
||||
depts.push({ deptId: item });
|
||||
});
|
||||
this.form.workTrainDeptList = depts;
|
||||
if (this.form.id != null) {
|
||||
updateWorkTrain(this.form).then(response => {
|
||||
updateWorkTrain(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addWorkTrain(this.form).then(response => {
|
||||
addWorkTrain(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
|
|
@ -429,14 +520,18 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除演练培训编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delWorkTrain(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
this.$modal
|
||||
.confirm('是否确认删除演练培训编号为"' + ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delWorkTrain(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
/** 演练培训协同部门序号 */
|
||||
/** 演练培训协同部门序号 */
|
||||
rowWorkTrainDeptIndex({ row, rowIndex }) {
|
||||
row.index = rowIndex + 1;
|
||||
},
|
||||
|
|
@ -454,26 +549,30 @@ export default {
|
|||
} else {
|
||||
const workTrainDeptList = this.workTrainDeptList;
|
||||
const checkedWorkTrainDept = this.checkedWorkTrainDept;
|
||||
this.workTrainDeptList = workTrainDeptList.filter(function(item) {
|
||||
return checkedWorkTrainDept.indexOf(item.index) == -1
|
||||
this.workTrainDeptList = workTrainDeptList.filter(function (item) {
|
||||
return checkedWorkTrainDept.indexOf(item.index) == -1;
|
||||
});
|
||||
}
|
||||
},
|
||||
/** 复选框选中数据 */
|
||||
handleWorkTrainDeptSelectionChange(selection) {
|
||||
this.checkedWorkTrainDept = selection.map(item => item.index)
|
||||
this.checkedWorkTrainDept = selection.map((item) => item.index);
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
this.download('work/workTrain/export', {
|
||||
...this.queryParams
|
||||
}, `workTrain_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
}
|
||||
this.download(
|
||||
"work/workTrain/export",
|
||||
{
|
||||
...this.queryParams,
|
||||
},
|
||||
`workTrain_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.div_tag{
|
||||
margin-bottom: 5px;
|
||||
.div_tag {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,241 +1,360 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-drawer v-bind="$attrs" v-if="onOpen" v-on="$listeners" @opened="onOpen" @close="onClose" style="padding-left: 20px;">
|
||||
<el-row :gutter="10" class="mb8" style="margin-left: 25px; margin-top:10px;margin-right:0px;">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['work:workTrain:add']"
|
||||
>添加</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getworkTrainList"></right-toolbar>
|
||||
</el-row>
|
||||
<div class="app-container">
|
||||
<el-drawer
|
||||
v-bind="$attrs"
|
||||
v-if="onOpen"
|
||||
v-on="$listeners"
|
||||
@opened="onOpen"
|
||||
@close="onClose"
|
||||
style="padding-left: 20px"
|
||||
>
|
||||
<el-row
|
||||
:gutter="10"
|
||||
class="mb8"
|
||||
style="margin-left: 25px; margin-top: 10px; margin-right: 0px"
|
||||
>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['work:workTrain:add']"
|
||||
>添加</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar
|
||||
:showSearch.sync="showSearch"
|
||||
@queryTable="getworkTrainList"
|
||||
></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="workTrainList" @selection-change="handleSelectionChange">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="workTrainList"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column label="培训主图" align="center" prop="mainImage" width="75">
|
||||
<template slot-scope="scope">
|
||||
<image-preview :src="scope.row.mainImage" :width="50" :height="50"/>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-image
|
||||
ref="preview"
|
||||
style="width: 50px; height: 50px"
|
||||
:src="getImageUrl(scope.row.mainImage)"
|
||||
@click="onPreview(scope.row.mainImage)"
|
||||
></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="培训类型" align="center" prop="trainNature" width="130" show-overflow-tooltip v-if="false">
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.train_nature_zxpx" :value="scope.row.trainNature"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="培训标题" align="center" prop="trainTitle" width="160" show-overflow-tooltip/>
|
||||
<el-table-column label="参与人数" align="center" prop="trainParticipants" width="90"/>
|
||||
<el-table-column label="开始时间" align="center" prop="beginDate" width="100">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ parseTime(scope.row.beginDate, '{y}-{m}-{d}') }}</div>
|
||||
<div>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="培训内容" align="center" prop="trainContent" width="170" show-overflow-tooltip />
|
||||
<el-table-column label="协同部门" align="center" prop="trainDeptNames" width="220" show-overflow-tooltip >
|
||||
<template slot-scope="scope">
|
||||
<div class='div_tag' v-for="dept in getTrainDeptNames(scope.row.trainDeptNames)"><el-tag>{{ dept }}</el-tag></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-if="scope.row.vDel=='0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['work:workTrain:edit']"
|
||||
>修改</el-button>
|
||||
<el-button v-if="scope.row.vDel=='0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['work:workTrain:remove']"
|
||||
>删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getworkTrainList"
|
||||
<el-table-column
|
||||
label="培训类型"
|
||||
align="center"
|
||||
prop="trainNature"
|
||||
width="130"
|
||||
show-overflow-tooltip
|
||||
v-if="false"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<dict-tag
|
||||
:options="dict.type.train_nature_zxpx"
|
||||
:value="scope.row.trainNature"
|
||||
/>
|
||||
<el-dialog :title="title" v-if="open" :visible.sync="open" width="680px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false">
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="培训标题"
|
||||
align="center"
|
||||
prop="trainTitle"
|
||||
width="160"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="参与人数"
|
||||
align="center"
|
||||
prop="trainParticipants"
|
||||
width="90"
|
||||
/>
|
||||
<el-table-column label="开始时间" align="center" prop="beginDate" width="100">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ parseTime(scope.row.beginDate, "{y}-{m}-{d} {h}:{i}") }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="培训内容"
|
||||
align="center"
|
||||
prop="trainContent"
|
||||
width="170"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="协同部门"
|
||||
align="center"
|
||||
prop="trainDeptNames"
|
||||
width="220"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
class="div_tag"
|
||||
v-for="dept in getTrainDeptNames(scope.row.trainDeptNames)"
|
||||
>
|
||||
<el-tag>{{ dept }}</el-tag>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
width="120"
|
||||
class-name="small-padding fixed-width"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.vDel == '0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['work:workTrain:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="scope.row.vDel == '0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['work:workTrain:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getworkTrainList"
|
||||
/>
|
||||
<el-dialog
|
||||
:title="title"
|
||||
v-if="open"
|
||||
:visible.sync="open"
|
||||
width="680px"
|
||||
append-to-body
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="项目名称">
|
||||
<el-input placeholder="请输入项目名称" v-model="form.projectName" :disabled="true"></el-input>
|
||||
<el-input
|
||||
placeholder="请输入项目名称"
|
||||
v-model="form.projectName"
|
||||
:disabled="true"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训主图" prop="mainImage">
|
||||
<image-upload v-model="form.mainImage" :limit="1"/>
|
||||
<image-upload v-model="form.mainImage" :limit="1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="培训类型" prop="trainNature" v-if="false">
|
||||
<el-select v-model="form.trainNature" placeholder="请选择培训类型" style="width: 100%;">
|
||||
<el-option
|
||||
<el-form-item label="培训类型" prop="trainNature" v-if="false">
|
||||
<el-select
|
||||
v-model="form.trainNature"
|
||||
placeholder="请选择培训类型"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in dict.type.train_nature_zxpx"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
></el-option>
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训标题" prop="trainTitle">
|
||||
<el-input v-model="form.trainTitle" placeholder="请输入培训标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="参与人数" prop="trainParticipants">
|
||||
<el-input-number v-model="form.trainParticipants" placeholder="请输入工作参与者" controls-position="right" style="width: 100%;" :min="1"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训日期" prop="daterangeMarksTime">
|
||||
</el-form-item>
|
||||
<el-form-item label="培训标题" prop="trainTitle">
|
||||
<el-input v-model="form.trainTitle" placeholder="请输入培训标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="参与人数" prop="trainParticipants">
|
||||
<el-input-number
|
||||
v-model="form.trainParticipants"
|
||||
placeholder="请输入工作参与者"
|
||||
controls-position="right"
|
||||
style="width: 100%"
|
||||
:min="1"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训日期" prop="beginDate">
|
||||
<el-date-picker
|
||||
v-model="daterangeMarksTime"
|
||||
style="width: 100%"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训内容" prop="trainContent">
|
||||
<el-input type="textarea" v-model="form.trainContent" placeholder="请输入培训内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="协同部门" prop="workTrainDeptList">
|
||||
<el-select v-model="form.workTrainDeptList" multiple placeholder="请选择协同部门" style="width: 100%;">
|
||||
<el-option
|
||||
v-model="form.beginDate"
|
||||
type="datetime"
|
||||
placeholder="选择日期时间"
|
||||
default-time="10:00:00"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="培训内容" prop="trainContent">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="form.trainContent"
|
||||
placeholder="请输入培训内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="协同部门" prop="workTrainDeptList">
|
||||
<el-select
|
||||
v-model="form.workTrainDeptList"
|
||||
multiple
|
||||
placeholder="请选择协同部门"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in deptOptions"
|
||||
:key="item.deptId"
|
||||
:label="item.deptName"
|
||||
:value="item.deptId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
:value="item.deptId"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
</el-drawer>
|
||||
<el-image-viewer
|
||||
v-if="showViewer"
|
||||
:on-close="closeViewer"
|
||||
:url-list="previewList"
|
||||
style="z-index: 2050"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listWorkTrain, getWorkTrain, delWorkTrain, addWorkTrain, updateWorkTrain, listProjectUnit } from "@/api/work/workTrain";
|
||||
<script>
|
||||
import {
|
||||
listWorkTrain,
|
||||
getWorkTrain,
|
||||
delWorkTrain,
|
||||
addWorkTrain,
|
||||
updateWorkTrain,
|
||||
listProjectUnit,
|
||||
} from "@/api/work/workTrain";
|
||||
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
|
||||
|
||||
export default {
|
||||
components: {},
|
||||
props: {
|
||||
formData: {
|
||||
projectId: String,
|
||||
projectName: String
|
||||
}
|
||||
export default {
|
||||
components: {
|
||||
ElImageViewer,
|
||||
},
|
||||
props: {
|
||||
formData: {
|
||||
projectId: String,
|
||||
projectName: String,
|
||||
},
|
||||
dicts: ['train_nature_zxpx'],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 专项培训表格数据
|
||||
workTrainList: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
deptOptions: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
trainType: 0,
|
||||
projectId: null
|
||||
},
|
||||
daterangeMarksTime: [],
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
mainImage: [
|
||||
{ required: true, message: "请上传培训主图", trigger: "blur" }
|
||||
],
|
||||
trainNature: [
|
||||
{ required: false, message: "请选择培训类型", trigger: "blur" }
|
||||
],
|
||||
trainTitle: [
|
||||
{ required: true, message: "请输入培训标题", trigger: "blur" },
|
||||
{ max: 20, message: '培训标题最多20个字符',trigger: 'blur' }
|
||||
],
|
||||
trainParticipants: [
|
||||
{ required: true, message: "请输入参与人数", trigger: "blur" }
|
||||
],
|
||||
trainContent: [
|
||||
{ required: true, message: "请输入培训内容", trigger: "blur" },
|
||||
{ max: 1000, message: '培训内容长度在最多1000个字符',trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
},
|
||||
dicts: ["train_nature_zxpx"],
|
||||
data() {
|
||||
return {
|
||||
showViewer: false,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 专项培训表格数据
|
||||
workTrainList: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
deptOptions: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
trainType: 0,
|
||||
projectId: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
mainImage: [{ required: true, message: "请上传培训主图", trigger: "blur" }],
|
||||
trainNature: [{ required: false, message: "请选择培训类型", trigger: "blur" }],
|
||||
beginDate: [{ required: false, message: "请选择演练时间", trigger: "blur" }],
|
||||
trainTitle: [
|
||||
{ required: true, message: "请输入培训标题", trigger: "blur" },
|
||||
{ max: 20, message: "培训标题最多20个字符", trigger: "blur" },
|
||||
],
|
||||
trainParticipants: [
|
||||
{ required: true, message: "请输入参与人数", trigger: "blur" },
|
||||
],
|
||||
trainContent: [
|
||||
{ required: true, message: "请输入培训内容", trigger: "blur" },
|
||||
{ max: 1000, message: "培训内容长度在最多1000个字符", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
previewList: [],
|
||||
};
|
||||
},
|
||||
computed: {},
|
||||
watch: {
|
||||
formData: {
|
||||
handler(value) {
|
||||
this.formData = value;
|
||||
},
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
created() {},
|
||||
mounted() {},
|
||||
beforeDestroy() {},
|
||||
methods: {
|
||||
getImageUrl(url) {
|
||||
return process.env.VUE_APP_BASE_API + url + ".min.jpg";
|
||||
},
|
||||
onPreview(url) {
|
||||
this.previewList = [];
|
||||
this.previewList.push(process.env.VUE_APP_BASE_API + url);
|
||||
this.showViewer = true;
|
||||
},
|
||||
closeViewer() {
|
||||
this.showViewer = false;
|
||||
},
|
||||
getTrainDeptNames(vals) {
|
||||
if (vals != null) {
|
||||
return vals.split(",");
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {
|
||||
formData: {
|
||||
handler(value) {
|
||||
this.formData = value
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
onOpen() {
|
||||
this.getworkTrainList();
|
||||
},
|
||||
created() {
|
||||
|
||||
onClose() {},
|
||||
/** 查询专项培训列表 */
|
||||
getworkTrainList() {
|
||||
if (this.formData.projectId) {
|
||||
this.loading = true;
|
||||
this.queryParams.projectId = this.formData.projectId;
|
||||
listWorkTrain(this.queryParams).then((response) => {
|
||||
this.workTrainList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
beforeDestroy() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
getTrainDeptNames(vals){
|
||||
if(vals!=null){
|
||||
return vals.split(',');
|
||||
}else{
|
||||
return [];
|
||||
}
|
||||
},
|
||||
onOpen() {
|
||||
this.getworkTrainList();
|
||||
},
|
||||
onClose() {},
|
||||
/** 查询专项培训列表 */
|
||||
getworkTrainList() {
|
||||
if(this.formData.projectId){
|
||||
this.loading = true;
|
||||
this.queryParams.projectId = this.formData.projectId;
|
||||
listWorkTrain(this.queryParams).then(response => {
|
||||
this.workTrainList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
this.ids = selection.map((item) => item.id);
|
||||
this.single = selection.length !== 1;
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
// 表单重置
|
||||
reset() {
|
||||
|
|
@ -255,17 +374,16 @@
|
|||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null
|
||||
remark: null,
|
||||
};
|
||||
this.deptOptions=[];
|
||||
this.deptOptions = [];
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.form.projectId=this.formData.projectId;
|
||||
this.form.projectName=this.formData.projectName;
|
||||
this.daterangeMarksTime=[];
|
||||
this.form.projectId = this.formData.projectId;
|
||||
this.form.projectName = this.formData.projectName;
|
||||
this.open = true;
|
||||
this.title = "添加专项培训";
|
||||
this.getDeptList();
|
||||
|
|
@ -279,33 +397,26 @@
|
|||
getDeptList(id) {
|
||||
this.loading = true;
|
||||
let param = {
|
||||
projectId:this.form.projectId
|
||||
}
|
||||
projectId: this.form.projectId,
|
||||
};
|
||||
//获取项目部门列表的接口
|
||||
listProjectUnit(param).then(response => {
|
||||
listProjectUnit(param).then((response) => {
|
||||
this.loading = false;
|
||||
this.deptOptions = response.data;
|
||||
})
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
this.$refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
if (null != this.daterangeMarksTime && '' != this.daterangeMarksTime) {
|
||||
this.form.beginDate = this.daterangeMarksTime[0];
|
||||
this.form.endDate = this.daterangeMarksTime[1];
|
||||
}else{
|
||||
this.$modal.msgWarning("请选择培训时间");
|
||||
return false;
|
||||
}
|
||||
// 重新组装部门数据
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach(item => {
|
||||
depts.push({deptId:item});
|
||||
this.form.workTrainDeptList.forEach((item) => {
|
||||
depts.push({ deptId: item });
|
||||
});
|
||||
this.form.workTrainDeptList = depts;
|
||||
if (this.form.id != null) {
|
||||
updateWorkTrain(this.form).then(response => {
|
||||
updateWorkTrain(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getworkTrainList();
|
||||
|
|
@ -313,7 +424,7 @@
|
|||
} else {
|
||||
this.form.trainType = 0;
|
||||
this.form.isDel = 0;
|
||||
addWorkTrain(this.form).then(response => {
|
||||
addWorkTrain(this.form).then((response) => {
|
||||
this.$modal.msgSuccess("添加成功");
|
||||
this.open = false;
|
||||
this.getworkTrainList();
|
||||
|
|
@ -326,66 +437,76 @@
|
|||
handleUpdate(row) {
|
||||
this.reset();
|
||||
this.title = "修改专项培训";
|
||||
const id = row.id || this.ids
|
||||
const id = row.id || this.ids;
|
||||
let param = {
|
||||
projectId:this.formData.projectId
|
||||
}
|
||||
projectId: this.formData.projectId,
|
||||
};
|
||||
this.open = true;
|
||||
//获取项目部门列表的接口
|
||||
listProjectUnit(param).then(response => {
|
||||
listProjectUnit(param).then((response) => {
|
||||
this.deptOptions = response.data;
|
||||
})
|
||||
getWorkTrain(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.daterangeMarksTime=[];
|
||||
this.daterangeMarksTime[0] = new Date(this.form.beginDate);
|
||||
this.daterangeMarksTime[1] = new Date(this.form.endDate);
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach(item => {
|
||||
depts.push(item.deptId);
|
||||
})
|
||||
this.form.workTrainDeptList = depts;
|
||||
});
|
||||
getWorkTrain(id).then((response) => {
|
||||
this.form = response.data;
|
||||
let depts = [];
|
||||
this.form.workTrainDeptList.forEach((item) => {
|
||||
depts.push(item.deptId);
|
||||
});
|
||||
this.form.workTrainDeptList = depts;
|
||||
});
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除专项培训编号为"' + ids + '"的数据项?').then(function() {
|
||||
return delSurProjectUserInfo(ids);
|
||||
}).then(() => {
|
||||
this.getworkTrainList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
this.$modal
|
||||
.confirm('是否确认删除专项培训编号为"' + ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delSurProjectUserInfo(ids);
|
||||
})
|
||||
.then(() => {
|
||||
this.getworkTrainList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
//日期格式化
|
||||
getDateTime(unixtimestamp) {
|
||||
var unixtimestamp = new Date(unixtimestamp);
|
||||
var year = 1900 + unixtimestamp.getYear();
|
||||
var month = "0" + (unixtimestamp.getMonth() + 1);
|
||||
var date = "0" + unixtimestamp.getDate();
|
||||
var hour = "0" + unixtimestamp.getHours();
|
||||
var minute = "0" + unixtimestamp.getMinutes();
|
||||
var second = "0" + unixtimestamp.getSeconds();
|
||||
return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length) +
|
||||
" " + hour.substring(hour.length - 2, hour.length) + ":" +
|
||||
minute.substring(minute.length - 2, minute.length) + ":" +
|
||||
second.substring(second.length - 2, second.length);
|
||||
var unixtimestamp = new Date(unixtimestamp);
|
||||
var year = 1900 + unixtimestamp.getYear();
|
||||
var month = "0" + (unixtimestamp.getMonth() + 1);
|
||||
var date = "0" + unixtimestamp.getDate();
|
||||
var hour = "0" + unixtimestamp.getHours();
|
||||
var minute = "0" + unixtimestamp.getMinutes();
|
||||
var second = "0" + unixtimestamp.getSeconds();
|
||||
return (
|
||||
year +
|
||||
"-" +
|
||||
month.substring(month.length - 2, month.length) +
|
||||
"-" +
|
||||
date.substring(date.length - 2, date.length) +
|
||||
" " +
|
||||
hour.substring(hour.length - 2, hour.length) +
|
||||
":" +
|
||||
minute.substring(minute.length - 2, minute.length) +
|
||||
":" +
|
||||
second.substring(second.length - 2, second.length)
|
||||
);
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import '@/styles/mixin.scss';
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@import "@/styles/mixin.scss";
|
||||
|
||||
::v-deep .el-drawer__header {
|
||||
display: none;
|
||||
}
|
||||
@include action-bar;
|
||||
::v-deep .el-drawer__header {
|
||||
display: none;
|
||||
}
|
||||
@include action-bar;
|
||||
|
||||
.json-editor{
|
||||
height: calc(100vh - 33px);
|
||||
}
|
||||
.div_tag{
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.json-editor {
|
||||
height: calc(100vh - 33px);
|
||||
}
|
||||
.div_tag {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@ public class SurProjectInsurance extends BaseEntity
|
|||
private String isDel;
|
||||
|
||||
private String insuranceTypeName;
|
||||
private String projectName;
|
||||
private String deptName;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
|
|
@ -172,6 +174,22 @@ public class SurProjectInsurance extends BaseEntity
|
|||
this.insuranceTypeName = insuranceTypeName;
|
||||
}
|
||||
|
||||
public String getProjectName() {
|
||||
return projectName;
|
||||
}
|
||||
|
||||
public void setProjectName(String projectName) {
|
||||
this.projectName = projectName;
|
||||
}
|
||||
|
||||
public String getDeptName() {
|
||||
return deptName;
|
||||
}
|
||||
|
||||
public void setDeptName(String deptName) {
|
||||
this.deptName = deptName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
|
|||
|
|
@ -49,6 +49,9 @@ public class SurProjectWorkAttendance extends BaseEntity
|
|||
@Excel(name = "删除标识")
|
||||
private Long isDel;
|
||||
|
||||
private String projectName;
|
||||
private String deptName;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
|
|
@ -122,6 +125,22 @@ public class SurProjectWorkAttendance extends BaseEntity
|
|||
return isDel;
|
||||
}
|
||||
|
||||
public String getProjectName() {
|
||||
return projectName;
|
||||
}
|
||||
|
||||
public void setProjectName(String projectName) {
|
||||
this.projectName = projectName;
|
||||
}
|
||||
|
||||
public String getDeptName() {
|
||||
return deptName;
|
||||
}
|
||||
|
||||
public void setDeptName(String deptName) {
|
||||
this.deptName = deptName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<resultMap type="SurProjectInsurance" id="SurProjectInsuranceResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="projectId" column="project_id" />
|
||||
<result property="projectName" column="project_name" />
|
||||
<result property="deptId" column="dept_id" />
|
||||
<result property="deptName" column="dept_name" />
|
||||
<result property="insuranceType" column="insurance_type" />
|
||||
<result property="insuranceNumber" column="insurance_number" />
|
||||
<result property="insuranceFile" column="insurance_file" />
|
||||
|
|
@ -29,17 +31,49 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</sql>
|
||||
|
||||
<select id="selectSurProjectInsuranceList" parameterType="SurProjectInsurance" resultMap="SurProjectInsuranceResult">
|
||||
<include refid="selectSurProjectInsuranceVo"/>
|
||||
SELECT
|
||||
spi.id,
|
||||
spi.project_id,
|
||||
sp.projectName as project_name,
|
||||
d.dept_name,
|
||||
spi.insurance_type,
|
||||
sdd.dict_label as insurance_type_name,
|
||||
spi.insurance_number,
|
||||
spi.insurance_file,
|
||||
CASE WHEN spi.insurance_state IS NULL THEN 0 ELSE 1 END AS insurance_state,
|
||||
spi.begin_date,
|
||||
spi.end_date,
|
||||
spi.company_name,
|
||||
spi.is_del,
|
||||
spi.create_by,
|
||||
spi.create_time,
|
||||
spi.update_by,
|
||||
spi.update_time,
|
||||
spi.remark
|
||||
FROM
|
||||
sur_project sp
|
||||
left join sur_project_unit_info spui on spui.projectId=sp.id and spui.unitType=2
|
||||
left join sys_dept d on d.dept_id = spui.unitId
|
||||
RIGHT JOIN sys_dict_data sdd ON sdd.dict_type = 'sur_project_insurance_type'
|
||||
LEFT JOIN sur_project_insurance spi ON spi.project_id = sp.id
|
||||
AND spi.insurance_type = sdd.dict_value
|
||||
AND spi.is_del = 0
|
||||
<where>
|
||||
<if test="projectId != null "> and project_id = #{projectId}</if>
|
||||
<if test="deptId != null "> and dept_id = #{deptId}</if>
|
||||
<if test="insuranceType != null and insuranceType != ''"> and insurance_type = #{insuranceType}</if>
|
||||
<if test="insuranceNumber != null and insuranceNumber != ''"> and insurance_number like concat('%', #{insuranceNumber}, '%')</if>
|
||||
<if test="insuranceFile != null and insuranceFile != ''"> and insurance_file = #{insuranceFile}</if>
|
||||
<if test="insuranceState != null and insuranceState != ''"> and insurance_state = #{insuranceState}</if>
|
||||
<if test="companyName != null and companyName != ''"> and company_name like concat('%', #{companyName}, '%')</if>
|
||||
<if test="isDel != null and isDel != ''"> and is_del = #{isDel}</if>
|
||||
and sp.isDel=0
|
||||
and spui.del_flag=0
|
||||
and d.del_flag=0
|
||||
and sdd.dict_type = 'sur_project_insurance_type'
|
||||
<if test="projectName != null and projectName != ''"> and sp.projectName like concat('%', #{projectName}, '%')</if>
|
||||
<if test="deptName != null and deptName != ''"> and d.dept_name like concat('%', #{deptName}, '%')</if>
|
||||
<if test="insuranceNumber != null and insuranceNumber != ''"> and spi.insurance_number like concat('%', #{insuranceNumber}, '%')</if>
|
||||
<if test="companyName != null and companyName != ''"> and spi.company_name like concat('%', #{companyName}, '%')</if>
|
||||
<if test='insuranceState == "0"'>and spi.insurance_state IS NULL</if>
|
||||
<if test='insuranceState == "1"'>and spi.insurance_state IS NOT NULL</if>
|
||||
<if test="insuranceType != null and insuranceType != ''"> and spi.insurance_type = #{insuranceType}</if>
|
||||
</where>
|
||||
ORDER BY
|
||||
sp.projectSort,
|
||||
sdd.dict_sort
|
||||
</select>
|
||||
|
||||
<select id="selectSurProjectInsuranceListv2" parameterType="SurProjectInsurance" resultMap="SurProjectInsuranceResult">
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<select id="selectSurProjectUnitInfoList" parameterType="SurProjectUnitInfo" resultMap="SurProjectUnitInfoResult">
|
||||
<include refid="selectSurProjectUnitInfoVo"/>
|
||||
<where>
|
||||
<where>
|
||||
and del_flag=0
|
||||
<if test="projectId != null "> and projectId = #{projectId}</if>
|
||||
<if test="unitId != null "> and unitId = #{unitId}</if>
|
||||
<if test="unitType != null "> and unitType = #{unitType}</if>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
left join sys_user su on spu.user_id = su.user_id
|
||||
<!--监理单位/总包公司/分包单位-->
|
||||
<where>
|
||||
and spu.is_del=0
|
||||
<if test="projectId != null "> and spu.project_id = #{projectId}</if>
|
||||
<if test="projectName != null "> and sp.projectName like concat('%', #{projectName}, '%')</if>
|
||||
<if test="nickName != null "> and (su.nick_name like concat('%', #{nickName}, '%') or su.phonenumber like concat('%', #{nickName}, '%') )</if>
|
||||
|
|
@ -110,16 +111,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteSurProjectUserinfoById" parameterType="Long">
|
||||
delete from sur_project_userinfo where id = #{id}
|
||||
</delete>
|
||||
<update id="deleteSurProjectUserinfoById" parameterType="Long">
|
||||
update sur_project_userinfo set is_del=1 where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteSurProjectUserinfoByIds" parameterType="String">
|
||||
delete from sur_project_userinfo where id in
|
||||
<update id="deleteSurProjectUserinfoByIds" parameterType="String">
|
||||
update sur_project_userinfo set is_del=1 where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</update>
|
||||
|
||||
<resultMap type="SysUser" id="SysUserResult">
|
||||
<id property="userId" column="user_id" />
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<resultMap type="SurProjectWorkAttendance" id="SurProjectWorkAttendanceResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="projectId" column="project_id" />
|
||||
<result property="projectName" column="project_name" />
|
||||
<result property="deptId" column="dept_id" />
|
||||
<result property="deptName" column="dept_name" />
|
||||
<result property="servicePersonnel" column="service_personnel" />
|
||||
<result property="supervisorPersonnel" column="supervisor_personnel" />
|
||||
<result property="contractorPersonnel" column="contractor_personnel" />
|
||||
|
|
@ -28,7 +30,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
SELECT
|
||||
spwa.id,
|
||||
spwa.project_id,
|
||||
sp.projectName as project_name,
|
||||
spwa.dept_id,
|
||||
d.dept_name,
|
||||
IFNULL(spwa.service_personnel, 0) AS service_personnel,
|
||||
IFNULL(spwa.supervisor_personnel, 0) AS supervisor_personnel,
|
||||
IFNULL(spwa.contractor_personnel, 0) AS contractor_personnel,
|
||||
|
|
@ -41,10 +45,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
spwa.remark
|
||||
FROM
|
||||
sur_project_work_attendance spwa
|
||||
left join sur_project sp on sp.id=spwa.project_id
|
||||
left join sys_dept d on d.dept_id=spwa.dept_id
|
||||
<where>
|
||||
and spwa.is_del=0
|
||||
<if test="projectId != null "> and spwa.project_id = #{projectId}</if>
|
||||
<if test="projectName != null and projectName != ''"> and sp.projectName like concat('%', #{projectName}, '%')</if>
|
||||
<if test="deptId != null "> and spwa.dept_id = #{deptId}</if>
|
||||
<if test="deptName != null and deptName != ''"> and d.dept_name like concat('%', #{deptName}, '%')</if>
|
||||
<if test="params.beginWorkDate != null and params.beginWorkDate != '' and params.endWorkDate != null and params.endWorkDate != ''"> and spwa.work_date between #{params.beginWorkDate} and #{params.endWorkDate}</if>
|
||||
<if test="workDate != null"> and DATE_FORMAT(spwa.work_date,'%Y-%m-%d')=DATE_FORMAT(#{workDate},'%Y-%m-%d')</if>
|
||||
</where>
|
||||
|
|
@ -125,16 +133,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteSurProjectWorkAttendanceById" parameterType="Long">
|
||||
delete from sur_project_work_attendance where id = #{id}
|
||||
</delete>
|
||||
<update id="deleteSurProjectWorkAttendanceById" parameterType="Long">
|
||||
update sur_project_work_attendance set is_del=1 where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteSurProjectWorkAttendanceByIds" parameterType="String">
|
||||
delete from sur_project_work_attendance where id in
|
||||
<update id="deleteSurProjectWorkAttendanceByIds" parameterType="String">
|
||||
update sur_project_work_attendance set is_del=1 where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</update>
|
||||
|
||||
<select id="selectByDate" parameterType="SurProjectWorkAttendance" resultMap="SurProjectWorkAttendanceResult">
|
||||
<include refid="selectSurProjectWorkAttendanceVo"/>
|
||||
<where>
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
left join sur_project sp on sp.id = spwp.project_id
|
||||
left join sys_dept sd on sd.dept_id = spwp.dept_id
|
||||
<where>
|
||||
and spwp.is_del=0
|
||||
<if test="projectId != null "> and spwp.project_id = #{projectId}</if>
|
||||
<if test="deptId != null "> and spwp.dept_id = #{deptId}</if>
|
||||
<if test="name != null and name != ''"> and spwp.name like concat('%', #{name}, '%')</if>
|
||||
|
|
@ -186,14 +187,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteSurProjectWorkSpecialById" parameterType="Long">
|
||||
delete from sur_project_work_special where id = #{id}
|
||||
</delete>
|
||||
<update id="deleteSurProjectWorkSpecialById" parameterType="Long">
|
||||
update sur_project_work_special set is_del=1 where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteSurProjectWorkSpecialByIds" parameterType="String">
|
||||
delete from sur_project_work_special where id in
|
||||
<update id="deleteSurProjectWorkSpecialByIds" parameterType="String">
|
||||
update sur_project_work_special set is_del=1 where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
</update>
|
||||
</mapper>
|
||||
|
|
@ -68,7 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="trainTitle != null and trainTitle != ''"> and train_title like concat('%', #{trainTitle}, '%')</if>
|
||||
<if test="trainNature != null and trainNature != ''"> and wt.train_nature = #{trainNature}</if>
|
||||
<if test="isDel != null "> and wt.is_del = #{isDel}</if>
|
||||
<if test="params.beginMarksTime != null and params.beginMarksTime != '' and params.endMarksTime != null and params.endMarksTime != ''"> and ((wt.begin_date between #{params.beginMarksTime} and #{params.endMarksTime}) or (wt.end_date between #{params.beginMarksTime} and #{params.endMarksTime}) )</if>
|
||||
<if test="params.beginMarksTime != null and params.beginMarksTime != '' and params.endMarksTime != null and params.endMarksTime != ''"> and wt.begin_date between #{params.beginMarksTime} and #{params.endMarksTime}</if>
|
||||
<!-- 查询条件-项目部门 -->
|
||||
<if test="projectDeptId != null "> and sp.deptId = #{projectDeptId}</if>
|
||||
<!--子部门数据-->
|
||||
|
|
|
|||
Loading…
Reference in New Issue