优化代码

dev_xds
姜玉琦 2023-08-18 17:58:35 +08:00
parent fb0a2d81bf
commit 08bf19fc38
37 changed files with 3294 additions and 361 deletions

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询项目验收列表
export function listProjectChecking(query) {
return request({
url: '/project/projectChecking/list',
method: 'get',
params: query
})
}
// 查询项目验收详细
export function getProjectChecking(id) {
return request({
url: '/project/projectChecking/' + id,
method: 'get'
})
}
// 新增项目验收
export function addProjectChecking(data) {
return request({
url: '/project/projectChecking',
method: 'post',
data: data
})
}
// 修改项目验收
export function updateProjectChecking(data) {
return request({
url: '/project/projectChecking',
method: 'put',
data: data
})
}
// 删除项目验收
export function delProjectChecking(id) {
return request({
url: '/project/projectChecking/' + id,
method: 'delete'
})
}

View File

@ -9,6 +9,15 @@ export function listSurProjectSpecial(query) {
})
}
// 查询项目特种人员数量统计
export function findWorkSpecialCount(query) {
return request({
url: '/project/surProjectSpecial/findWorkSpecialCount',
method: 'get',
params: query
})
}
// 查询项目特种人员详细
export function getSurProjectSpecial(id) {
return request({

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询集团新闻列表
export function listWorkJournalism(query) {
return request({
url: '/work/workJournalism/list',
method: 'get',
params: query
})
}
// 查询集团新闻详细
export function getWorkJournalism(id) {
return request({
url: '/work/workJournalism/' + id,
method: 'get'
})
}
// 新增集团新闻
export function addWorkJournalism(data) {
return request({
url: '/work/workJournalism',
method: 'post',
data: data
})
}
// 修改集团新闻
export function updateWorkJournalism(data) {
return request({
url: '/work/workJournalism',
method: 'put',
data: data
})
}
// 删除集团新闻
export function delWorkJournalism(id) {
return request({
url: '/work/workJournalism/' + id,
method: 'delete'
})
}

View File

@ -21,7 +21,11 @@
placeholder="密码"
@keyup.enter.native="handleLogin"
>
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
<svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled">
@ -32,25 +36,31 @@
style="width: 63%"
@keyup.enter.native="handleLogin"
>
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
<svg-icon
slot="prefix"
icon-class="validCode"
class="el-input__icon input-icon"
/>
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img"/>
<img :src="codeUrl" @click="getCode" class="login-code-img" />
</div>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;"></el-checkbox>
<el-form-item style="width:100%;">
<el-checkbox v-model="loginForm.rememberMe" style="margin: 0px 0px 25px 0px"
>记住密码</el-checkbox
>
<el-form-item style="width: 100%">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width:100%;"
style="width: 100%"
@click.native.prevent="handleLogin"
>
<span v-if="!loading"> </span>
<span v-else> ...</span>
</el-button>
<div style="float: right;" v-if="register">
<div style="float: right" v-if="register">
<router-link class="link-type" :to="'/register'">立即注册</router-link>
</div>
</el-form-item>
@ -65,7 +75,7 @@
<script>
import { getCodeImg } from "@/api/login";
import Cookies from "js-cookie";
import { encrypt, decrypt } from '@/utils/jsencrypt'
import { encrypt, decrypt } from "@/utils/jsencrypt";
export default {
name: "Login",
@ -77,42 +87,40 @@ export default {
password: "",
rememberMe: false,
code: "",
uuid: ""
uuid: "",
},
loginRules: {
username: [
{ required: true, trigger: "blur", message: "请输入您的账号" }
],
password: [
{ required: true, trigger: "blur", message: "请输入您的密码" }
],
code: [{ required: true, trigger: "change", message: "请输入验证码" }]
username: [{ required: true, trigger: "blur", message: "请输入您的账号" }],
password: [{ required: true, trigger: "blur", message: "请输入您的密码" }],
code: [{ required: true, trigger: "change", message: "请输入验证码" }],
},
loading: false,
//
captchaEnabled: true,
//
register: false,
redirect: undefined
redirect: undefined,
};
},
watch: {
$route: {
handler: function(route) {
handler: function (route) {
this.redirect = route.query && route.query.redirect;
},
immediate: true
}
immediate: true,
},
},
created() {
debugger;
this.getCode();
this.getCookie();
location.hash="#/login?redirect=%2Findex"
location.hash = "#/login?redirect=%2Findex";
},
methods: {
getCode() {
getCodeImg().then(res => {
this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
getCodeImg().then((res) => {
this.captchaEnabled =
res.captchaEnabled === undefined ? true : res.captchaEnabled;
if (this.captchaEnabled) {
this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid;
@ -122,43 +130,46 @@ export default {
getCookie() {
const username = Cookies.get("username");
const password = Cookies.get("password");
const rememberMe = Cookies.get('rememberMe')
const rememberMe = Cookies.get("rememberMe");
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : decrypt(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
};
},
handleLogin() {
this.$refs.loginForm.validate(valid => {
this.$refs.loginForm.validate((valid) => {
if (valid) {
this.loading = true;
if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
Cookies.set("rememberMe", this.loginForm.rememberMe, { expires: 30 });
} else {
Cookies.remove("username");
Cookies.remove("password");
Cookies.remove('rememberMe');
Cookies.remove("rememberMe");
}
this.$store.dispatch("Login", this.loginForm).then(() => {
this.$router.push({ path: this.redirect || "#/index" }).catch(()=>{});
}).catch(() => {
this.loading = false;
if (this.captchaEnabled) {
this.getCode();
}
});
this.$store
.dispatch("Login", this.loginForm)
.then(() => {
this.$router.push({ path: this.redirect || "#/index" }).catch(() => {});
})
.catch(() => {
this.loading = false;
if (this.captchaEnabled) {
this.getCode();
}
});
}
});
}
}
},
},
};
</script>
<style rel="stylesheet/scss" lang="scss">
.login-bg{
.login-bg {
background-image: url("/images/bg.jpg");
position: absolute;
width: 100%;
@ -172,7 +183,7 @@ export default {
justify-content: center;
align-items: center;
height: 100%;
background-size: cover;
}
.title {
@ -219,7 +230,7 @@ export default {
position: fixed;
bottom: 0;
width: 100%;
text-align: center;
text-align: center;
font-family: Arial;
font-size: 12px;
letter-spacing: 1px;

View File

@ -0,0 +1,504 @@
<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-input
v-model="queryParams.projectId"
placeholder="请输入项目主键"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="部门主键" prop="deptId">
<el-input
v-model="queryParams.deptId"
placeholder="请输入部门主键"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="分包单位主键" prop="groupDeptId">
<el-input
v-model="queryParams.groupDeptId"
placeholder="请输入分包单位主键"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="验收工序部位" prop="checkWorkingPosition">
<el-input
v-model="queryParams.checkWorkingPosition"
placeholder="请输入验收工序部位"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="验收结果" prop="checkResult">
<el-select v-model="queryParams.checkResult" placeholder="请选择验收结果" clearable>
<el-option
v-for="dict in dict.type.project_checking_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="质量用户" prop="qualityUser">
<el-input
v-model="queryParams.qualityUser"
placeholder="请输入质量用户"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="质量用户名称" prop="qualityUserName">
<el-input
v-model="queryParams.qualityUserName"
placeholder="请输入质量用户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="监理用户" prop="superviseUser">
<el-input
v-model="queryParams.superviseUser"
placeholder="请输入监理用户"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="监理用户名称" prop="superviseUserName">
<el-input
v-model="queryParams.superviseUserName"
placeholder="请输入监理用户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="分包单位用户" prop="groupDeptUser">
<el-input
v-model="queryParams.groupDeptUser"
placeholder="请输入分包单位用户"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="分包单位用户名称" prop="groupDeptUserName">
<el-input
v-model="queryParams.groupDeptUserName"
placeholder="请输入分包单位用户名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="验收时间">
<el-date-picker
v-model="daterangeCheckingDate"
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 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 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-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['project:projectChecking: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:projectChecking: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:projectChecking: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:projectChecking:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="projectCheckingList" @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="groupDeptId" />
<el-table-column label="验收类型" align="center" prop="checkType" />
<el-table-column label="验收主图" align="center" prop="mainImage" width="100">
<template slot-scope="scope">
<image-preview :src="scope.row.mainImage" :width="50" :height="50"/>
</template>
</el-table-column>
<el-table-column label="图片列表" align="center" prop="imageUrls" />
<el-table-column label="验收工序部位类型" align="center" prop="workingPositionType" />
<el-table-column label="验收工序部位" align="center" prop="checkWorkingPosition" />
<el-table-column label="验收次数" align="center" prop="checkingNum" />
<el-table-column label="验收结果" align="center" prop="checkResult">
<template slot-scope="scope">
<dict-tag :options="dict.type.project_checking_result" :value="scope.row.checkResult"/>
</template>
</el-table-column>
<el-table-column label="验收描述" align="center" prop="intro" />
<el-table-column label="质量用户" align="center" prop="qualityUser" />
<el-table-column label="质量用户名称" align="center" prop="qualityUserName" />
<el-table-column label="监理用户" align="center" prop="superviseUser" />
<el-table-column label="监理用户名称" align="center" prop="superviseUserName" />
<el-table-column label="分包单位用户" align="center" prop="groupDeptUser" />
<el-table-column label="分包单位用户名称" align="center" prop="groupDeptUserName" />
<el-table-column label="验收时间" align="center" prop="checkingDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.checkingDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="验收附件" align="center" prop="checkingFiles" />
<el-table-column label="数据状态" align="center" prop="isDel">
<template slot-scope="scope">
<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
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['project:projectChecking:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:projectChecking: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="getList"
/>
<!-- 添加或修改项目验收对话框 -->
<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="projectId">
<el-input v-model="form.projectId" placeholder="请输入项目主键" />
</el-form-item>
<el-form-item label="部门主键" prop="deptId">
<el-input v-model="form.deptId" placeholder="请输入部门主键" />
</el-form-item>
<el-form-item label="分包单位主键" prop="groupDeptId">
<el-input v-model="form.groupDeptId" placeholder="请输入分包单位主键" />
</el-form-item>
<el-form-item label="验收主图" prop="mainImage">
<image-upload v-model="form.mainImage"/>
</el-form-item>
<el-form-item label="图片列表" prop="imageUrls">
<el-input v-model="form.imageUrls" placeholder="请输入图片列表" />
</el-form-item>
<el-form-item label="验收工序部位" prop="checkWorkingPosition">
<el-input v-model="form.checkWorkingPosition" placeholder="请输入验收工序部位" />
</el-form-item>
<el-form-item label="验收次数" prop="checkingNum">
<el-input v-model="form.checkingNum" placeholder="请输入验收次数" />
</el-form-item>
<el-form-item label="验收结果" prop="checkResult">
<el-select v-model="form.checkResult" placeholder="请选择验收结果">
<el-option
v-for="dict in dict.type.project_checking_result"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="验收描述" prop="intro">
<el-input v-model="form.intro" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="质量用户" prop="qualityUser">
<el-input v-model="form.qualityUser" placeholder="请输入质量用户" />
</el-form-item>
<el-form-item label="质量用户名称" prop="qualityUserName">
<el-input v-model="form.qualityUserName" placeholder="请输入质量用户名称" />
</el-form-item>
<el-form-item label="监理用户" prop="superviseUser">
<el-input v-model="form.superviseUser" placeholder="请输入监理用户" />
</el-form-item>
<el-form-item label="监理用户名称" prop="superviseUserName">
<el-input v-model="form.superviseUserName" placeholder="请输入监理用户名称" />
</el-form-item>
<el-form-item label="分包单位用户" prop="groupDeptUser">
<el-input v-model="form.groupDeptUser" placeholder="请输入分包单位用户" />
</el-form-item>
<el-form-item label="分包单位用户名称" prop="groupDeptUserName">
<el-input v-model="form.groupDeptUserName" placeholder="请输入分包单位用户名称" />
</el-form-item>
<el-form-item label="验收时间" prop="checkingDate">
<el-date-picker clearable
v-model="form.checkingDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择验收时间">
</el-date-picker>
</el-form-item>
<el-form-item label="验收附件" prop="checkingFiles">
<el-input v-model="form.checkingFiles" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="数据状态" prop="isDel">
<el-select v-model="form.isDel" placeholder="请选择数据状态">
<el-option
v-for="dict in dict.type.sys_common_isdel"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</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>
</div>
</template>
<script>
import { listProjectChecking, getProjectChecking, delProjectChecking, addProjectChecking, updateProjectChecking } from "@/api/project/projectChecking";
export default {
name: "ProjectChecking",
dicts: ['project_checking_result', 'sys_common_isdel'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
projectCheckingList: [],
//
title: "",
//
open: false,
//
daterangeCheckingDate: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
projectId: null,
deptId: null,
groupDeptId: null,
checkType: null,
workingPositionType: null,
checkWorkingPosition: null,
checkResult: null,
qualityUser: null,
qualityUserName: null,
superviseUser: null,
superviseUserName: null,
groupDeptUser: null,
groupDeptUserName: null,
checkingDate: null,
isDel: null,
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询项目验收列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeCheckingDate && '' != this.daterangeCheckingDate) {
this.queryParams.params["beginCheckingDate"] = this.daterangeCheckingDate[0];
this.queryParams.params["endCheckingDate"] = this.daterangeCheckingDate[1];
}
listProjectChecking(this.queryParams).then(response => {
this.projectCheckingList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
projectId: null,
deptId: null,
groupDeptId: null,
checkType: null,
mainImage: null,
imageUrls: null,
workingPositionType: null,
checkWorkingPosition: null,
checkingNum: null,
checkResult: null,
intro: null,
qualityUser: null,
qualityUserName: null,
superviseUser: null,
superviseUserName: null,
groupDeptUser: null,
groupDeptUserName: null,
checkingDate: null,
checkingFiles: null,
isDel: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeCheckingDate = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加项目验收";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getProjectChecking(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改项目验收";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateProjectChecking(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addProjectChecking(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除项目验收编号为"' + ids + '"的数据项?').then(function() {
return delProjectChecking(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('project/projectChecking/export', {
...this.queryParams
}, `projectChecking_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -500,7 +500,7 @@ export default {
},
/** 预览 */
handledownload(row) {
window.open("/jhapi" + row.credentialFile);
window.open("/jhapi" + row.insuranceFile);
},
},
};

View File

@ -393,7 +393,7 @@ export default {
},
/** 预览 */
handledownload(row) {
window.open("/jhapi" + row.credentialFile);
window.open("/jhapi" + row.insuranceFile);
},
},
};

View File

@ -24,14 +24,14 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="是否有证" prop="isCredential" v-if="false">
<el-form-item label="人员类型" prop="specialType">
<el-select
v-model="queryParams.isCredential"
placeholder="请选择是否有证书"
v-model="queryParams.specialType"
placeholder="请选择是人员类型"
clearable
>
<el-option
v-for="dict in dict.type.sys_yes_no"
v-for="dict in dict.type.project_special_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -121,119 +121,143 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<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="deptName" />
<el-table-column label="人员姓名" align="center" prop="name" />
<el-table-column label="性别" align="center" prop="sex">
<template slot-scope="scope">
<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" />
</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-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane :label="tabs.all" name="all"></el-tab-pane>
<el-tab-pane :label="tabs.wgq" name="wgq"></el-tab-pane>
<el-tab-pane :label="tabs.ygq" name="ygq"></el-tab-pane>
<el-table
v-loading="loading"
:data="surProjectSpecialList"
@selection-change="handleSelectionChange"
>
<template slot-scope="scope">
<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>
<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" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-download"
@click="handledownload(scope.row)"
v-hasPermi="['project:surProjectSpecial:list']"
>下载证书</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
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:surProjectSpecial: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="getList"
/>
<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="deptName" />
<el-table-column label="人员姓名" align="center" prop="name" />
<el-table-column label="性别" align="center" prop="sex">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
</template>
</el-table-column>
<el-table-column
label="人员类型"
align="center"
prop="specialType"
width="120"
show-overflow-tooltip
>
<template slot-scope="scope">
<dict-tag
:options="dict.type.project_special_type"
:value="scope.row.specialType"
/>
</template>
</el-table-column>
<el-table-column label="联系方式" align="center" prop="phoneNumber" />
<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>
</template>
</el-table-column>
<el-table-column label="证书预览" align="center" prop="credentialFile" width="80">
<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>
<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"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-download"
@click="handledownload(scope.row)"
v-hasPermi="['project:surProjectSpecial:list']"
>下载证书</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
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:surProjectSpecial: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="getList"
/>
</el-tabs>
<!-- 添加或修改项目特种人员对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
@ -253,24 +277,23 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="联系方式" prop="phoneNumber">
<el-input v-model="form.phoneNumber" placeholder="请输入联系方式" />
</el-form-item>
<el-form-item label="是否有证书" prop="isCredential" v-if="false">
<el-form-item label="人员类型" prop="specialType">
<el-select
v-model="form.isCredential"
v-model="form.specialType"
placeholder="请选择是否有证书"
style="width: 100%"
@change="credentialChange"
>
<el-option
v-for="dict in dict.type.sys_yes_no"
v-for="dict in dict.type.project_special_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="联系方式" prop="phoneNumber">
<el-input v-model="form.phoneNumber" placeholder="请输入联系方式" />
</el-form-item>
<el-form-item label="证书编号" prop="credentialNumber" v-show="credential">
<el-input v-model="form.credentialNumber" placeholder="请输入证书编号" />
</el-form-item>
@ -317,6 +340,7 @@ import {
delSurProjectSpecial,
addSurProjectSpecial,
updateSurProjectSpecial,
findWorkSpecialCount,
} from "@/api/project/surProjectSpecial";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
@ -325,7 +349,7 @@ export default {
components: {
ElImageViewer,
},
dicts: ["sys_yes_no", "sys_user_sex"],
dicts: ["sys_user_sex", "project_special_type"],
data() {
return {
showViewer: false,
@ -361,12 +385,15 @@ export default {
credentialExpirationTime: null,
isDel: null,
projectDeptId: null,
specialType: null,
activeName: null,
},
depts: null,
credential: false,
//
form: {},
files: [],
activeName: "wgq",
//
rules: {
name: [
@ -374,7 +401,7 @@ export default {
{ maxlength: 20, message: "人员姓名最多20字符", trigger: "blur" },
],
sex: [{ required: true, message: "请选择人员性别", trigger: "blur" }],
isCredential: [{ required: false, message: "请选择是否有证书", trigger: "blur" }],
specialType: [{ required: true, message: "请选择人员类型", trigger: "blur" }],
phoneNumber: [
{ required: true, message: "请输入联系方式", trigger: "blur" },
{
@ -395,15 +422,22 @@ export default {
credentialExpirationTime: [
{ required: true, message: "请选择证书过期时间", trigger: "blur" },
],
credentialFile: [{ required: true, message: "请上传证书附件", trigger: "blur" }],
remark: [
{ required: false, message: "请输入备注", trigger: "blur" },
{ maxlength: 200, message: "备注最多200字符", trigger: "blur" },
],
},
previewList: [],
tabs: {
all: "全部数据0",
wgq: "未过期0",
ygq: "已过期0",
},
};
},
created() {
this.queryParams.activeName = this.activeName;
this.getList();
this.$api.publics.getZgsDeptList().then((d) => {
this.depts = d?.data || [];
@ -445,12 +479,29 @@ export default {
"endCredentialExpirationTime"
] = this.daterangeCredentialExpirationTime[1];
}
this.queryCount();
listSurProjectSpecial(this.queryParams).then((response) => {
this.surProjectSpecialList = response.rows;
this.total = response.total;
this.loading = false;
});
},
queryCount() {
findWorkSpecialCount(this.queryParams).then((response) => {
if (response && response.data) {
let sum = 0;
if (response.data.notExpired) {
sum += response.data.notExpired;
this.tabs.wgq = "未过期(" + response.data.notExpired + "";
}
if (response.data.expired) {
sum += response.data.expired;
this.tabs.ygq = "已过期(" + response.data.expired + "";
}
this.tabs.all = "全部数据(" + sum + "";
}
});
},
//
cancel() {
this.open = false;
@ -475,7 +526,11 @@ export default {
updateBy: null,
updateTime: null,
remark: null,
credentialType: null,
credentialFile: null,
specialType: null,
};
this.files = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
@ -483,6 +538,11 @@ export default {
this.queryParams.pageNum = 1;
this.getList();
},
//
handleClick() {
this.queryParams.activeName = this.activeName;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeCredentialExpirationTime = [];
@ -516,6 +576,10 @@ export default {
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (!this.form.credentialFile) {
this.$modal.msgWarning("请上传证书附件");
return false;
}
if (this.form.id != null) {
updateSurProjectSpecial(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
@ -558,7 +622,7 @@ export default {
},
/** 下载证书 */
handledownload(row) {
window.open("/jhapi" + row.credentialFile);
this.$download.resource(row.credentialFile);
},
},
};

View File

@ -53,121 +53,149 @@
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="surProjectSpecialList"
@selection-change="handleSelectionChange"
<el-tabs
v-model="activeName"
@tab-click="handleClick"
style="margin-left: 25px; margin-right: 25px"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="人员姓名"
align="center"
prop="name"
width="80"
show-overflow-tooltip
/>
<el-table-column label="性别" align="center" prop="sex" width="60">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
</template>
</el-table-column>
<el-table-column
label="联系方式"
align="center"
prop="phoneNumber"
width="130"
show-overflow-tooltip
/>
<el-table-column
label="证书编号"
align="center"
prop="credentialNumber"
show-overflow-tooltip
/>
<el-table-column
label="证书过期时间"
align="center"
prop="credentialExpirationTime"
width="100"
<el-tab-pane :label="tabs.all" name="all"></el-tab-pane>
<el-tab-pane :label="tabs.wgq" name="wgq"></el-tab-pane>
<el-tab-pane :label="tabs.ygq" name="ygq"></el-tab-pane>
<el-table
v-loading="loading"
:data="surProjectSpecialList"
@selection-change="handleSelectionChange"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.credentialExpirationTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column label="证书预览" align="center" prop="credentialFile" width="75">
<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>
<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"
width="180"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-download"
@click="handledownload(scope.row)"
v-hasPermi="['project:surProjectSpecial:list']"
>下载证书</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
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:surProjectSpecial: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="getList"
/>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
label="人员姓名"
align="center"
prop="name"
width="80"
show-overflow-tooltip
/>
<el-table-column label="性别" align="center" prop="sex" width="60">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" />
</template>
</el-table-column>
<el-table-column
label="人员类型"
align="center"
prop="specialType"
width="120"
show-overflow-tooltip
>
<template slot-scope="scope">
<dict-tag
:options="dict.type.project_special_type"
:value="scope.row.specialType"
/>
</template>
</el-table-column>
<el-table-column
label="联系方式"
align="center"
prop="phoneNumber"
width="130"
show-overflow-tooltip
/>
<el-table-column
label="证书编号"
align="center"
prop="credentialNumber"
show-overflow-tooltip
/>
<el-table-column
label="证书过期时间"
align="center"
prop="credentialExpirationTime"
width="100"
>
<template slot-scope="scope">
<span>{{
parseTime(scope.row.credentialExpirationTime, "{y}-{m}-{d}")
}}</span>
</template>
</el-table-column>
<el-table-column
label="证书预览"
align="center"
prop="credentialFile"
width="75"
>
<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>
<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"
width="180"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-download"
@click="handledownload(scope.row)"
v-hasPermi="['project:surProjectSpecial:list']"
>下载证书</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
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['project:surProjectSpecial: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="getList"
/>
</el-tabs>
<el-dialog
:title="title"
v-if="open"
@ -197,14 +225,14 @@
<el-form-item label="联系方式" prop="phoneNumber">
<el-input v-model="form.phoneNumber" placeholder="请输入联系方式" />
</el-form-item>
<el-form-item label="是否有证书" prop="isCredential" v-if="false">
<el-form-item label="人员类型" prop="specialType">
<el-select
v-model="form.isCredential"
placeholder="请选择是否有证书"
v-model="form.specialType"
placeholder="请选择人员类型"
style="width: 100%"
>
<el-option
v-for="dict in dict.type.sys_yes_no"
v-for="dict in dict.type.project_special_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -227,7 +255,7 @@
>
</el-date-picker>
</el-form-item>
<el-form-item label="证书附件" prop="remark">
<el-form-item label="证书附件" prop="credentialFile">
<FileUpload
@input="fileInput"
:limit="1"
@ -261,6 +289,7 @@ import {
delSurProjectSpecial,
addSurProjectSpecial,
updateSurProjectSpecial,
findWorkSpecialCount,
} from "@/api/project/surProjectSpecial";
import ElImageViewer from "element-ui/packages/image/src/image-viewer";
@ -274,7 +303,7 @@ export default {
projectName: String,
},
},
dicts: ["sys_yes_no", "sys_user_sex"],
dicts: ["sys_user_sex", "project_special_type"],
data() {
return {
showViewer: false,
@ -301,9 +330,11 @@ export default {
pageNum: 1,
pageSize: 20,
projectId: null,
activeName: null,
},
//
form: {},
activeName: "wgq",
files: [],
//
rules: {
@ -325,7 +356,7 @@ export default {
trigger: "blur",
},
],
isCredential: [{ required: false, message: "请选择是否有证书", trigger: "blur" }],
specialType: [{ required: true, message: "请选择人员类型", trigger: "blur" }],
credentialNumber: [
{ required: true, message: "请输入证书编号", trigger: "blur" },
{ maxlength: 50, message: "证书编号最多50字符", trigger: "blur" },
@ -333,12 +364,18 @@ export default {
credentialExpirationTime: [
{ required: true, message: "请选择证书过期时间", trigger: "blur" },
],
credentialFile: [{ required: true, message: "请上传证书附件", trigger: "blur" }],
remark: [
{ required: false, message: "请输入备注", trigger: "blur" },
{ maxlength: 200, message: "备注最多200字符", trigger: "blur" },
],
},
previewList: [],
tabs: {
all: "全部数据0",
wgq: "未过期0",
ygq: "已过期0",
},
};
},
computed: {},
@ -387,6 +424,7 @@ export default {
}
},
onOpen() {
this.queryParams.activeName = this.activeName;
this.getList();
},
onClose() {},
@ -395,6 +433,7 @@ export default {
if (this.formData.projectId) {
this.loading = true;
this.queryParams.projectId = this.formData.projectId;
this.queryCount();
listSurProjectSpecial(this.queryParams).then((response) => {
this.surProjectSpecialList = response.rows;
this.total = response.total;
@ -402,6 +441,22 @@ export default {
});
}
},
queryCount() {
findWorkSpecialCount(this.queryParams).then((response) => {
if (response && response.data) {
let sum = 0;
if (response.data.notExpired) {
sum += response.data.notExpired;
this.tabs.wgq = "未过期(" + response.data.notExpired + "";
}
if (response.data.expired) {
sum += response.data.expired;
this.tabs.ygq = "已过期(" + response.data.expired + "";
}
this.tabs.all = "全部数据(" + sum + "";
}
});
},
//
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.id);
@ -429,7 +484,10 @@ export default {
updateBy: null,
updateTime: null,
remark: null,
credentialType: null,
specialType: null,
};
this.files = [];
this.resetForm("form");
},
/** 新增按钮操作 */
@ -446,6 +504,11 @@ export default {
this.open = false;
this.reset();
},
//
handleClick() {
this.queryParams.activeName = this.activeName;
this.getList();
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
@ -499,7 +562,7 @@ export default {
},
/** 下载证书 */
handledownload(row) {
window.open("/jhapi" + row.credentialFile);
this.$download.resource(row.credentialFile);
},
},
};

View File

@ -109,6 +109,15 @@
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
v-if="scope.row.trainFile"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handleDownload(scope.row)"
v-hasPermi="['work:emergencyDrill:edit']"
>下载文件</el-button
>
<el-button
v-if="scope.row.vDel == '0'"
size="mini"
@ -200,6 +209,9 @@
placeholder="请输入演练内容"
/>
</el-form-item>
<el-form-item label="相关文件" prop="trainFile">
<FileUpload @input="fileInput" :limit="9" v-model="files" />
</el-form-item>
<el-form-item label="协同部门" prop="remark">
<el-select
v-model="form.workTrainDeptList"
@ -289,9 +301,9 @@ export default {
rules: {
mainImage: [{ required: true, message: "请上传演练主图", trigger: "blur" }],
trainNature: [{ required: false, message: "请选择演练类型", trigger: "blur" }],
beginDate: [{ required: false, message: "请选择演练时间", trigger: "blur" }],
beginDate: [{ required: true, message: "请选择演练时间", trigger: "blur" }],
trainTitle: [
{ required: true, message: "请输入培训标题", trigger: "blur" },
{ required: true, message: "请输入演练标题", trigger: "blur" },
{ max: 20, message: "培训标题最多20个字符", trigger: "blur" },
],
trainParticipants: [
@ -301,8 +313,10 @@ export default {
{ required: true, message: "请输入演练内容", trigger: "blur" },
{ max: 1000, message: "演练内容长度在最多1000个字符", trigger: "blur" },
],
trainFile: [{ required: true, message: "请上传相关附件", trigger: "blur" }],
},
previewList: [],
files: [],
};
},
computed: {},
@ -378,6 +392,7 @@ export default {
updateTime: null,
remark: null,
};
this.files = [];
this.deptOptions = [];
this.resetForm("form");
},
@ -455,6 +470,9 @@ export default {
depts.push(item.deptId);
});
this.form.workTrainDeptList = depts;
if (that.form.trainFile) {
that.files = that.form.trainFile.split(",");
}
});
},
/** 删除按钮操作 */
@ -471,28 +489,22 @@ export default {
})
.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)
);
//
fileInput(files) {
let trainFile = "";
if (files.length > 0) {
files.forEach((item) => {
trainFile += "," + item.url;
});
trainFile = trainFile.substring(1);
}
this.form.trainFile = trainFile;
},
handleDownload(row) {
this.files = row.trainFile.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
},
};

View File

@ -190,6 +190,15 @@
</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.trainFile"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handleDownload(scope.row)"
v-hasPermi="['work:emergencyDrill:edit']"
>下载文件</el-button
>
<el-button
v-if="scope.row.vDel == '0'"
size="mini"
@ -221,7 +230,7 @@
/>
<!-- 添加或修改演练演练对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="680px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目名称">
<el-input
@ -248,7 +257,7 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="培训标题">
<el-form-item label="培训标题" prop="trainTitle">
<el-input placeholder="请输入培训标题" v-model="form.trainTitle"></el-input>
</el-form-item>
<el-form-item label="参与人数" prop="trainParticipants">
@ -277,6 +286,9 @@
placeholder="请输入演练内容"
/>
</el-form-item>
<el-form-item label="相关文件" prop="trainFile">
<FileUpload @input="fileInput" :limit="9" v-model="files" />
</el-form-item>
<el-form-item label="协同部门" prop="workTrainDeptList">
<el-select
v-model="form.workTrainDeptList"
@ -366,9 +378,9 @@ export default {
rules: {
mainImage: [{ required: true, message: "请上传演练主图", trigger: "blur" }],
trainNature: [{ required: false, message: "请选择演练类型", trigger: "blur" }],
beginDate: [{ required: false, message: "请选择演练时间", trigger: "blur" }],
beginDate: [{ required: true, message: "请选择演练时间", trigger: "blur" }],
trainTitle: [
{ required: true, message: "请输入培训标题", trigger: "blur" },
{ required: true, message: "请输入演练标题", trigger: "blur" },
{ max: 20, message: "培训标题最多20个字符", trigger: "blur" },
],
trainParticipants: [
@ -378,8 +390,10 @@ export default {
{ required: true, message: "请输入演练内容", trigger: "blur" },
{ max: 1000, message: "演练内容长度在最多1000个字符", trigger: "blur" },
],
trainFile: [{ required: true, message: "请上传相关附件", trigger: "blur" }],
},
previewList: [],
files: [],
};
},
created() {
@ -446,6 +460,7 @@ export default {
updateTime: null,
remark: null,
};
this.files = [];
this.workTrainDeptList = [];
this.resetForm("form");
},
@ -490,6 +505,9 @@ export default {
depts.push(item.deptId);
});
this.form.workTrainDeptList = depts;
if (that.form.trainFile) {
that.files = that.form.trainFile.split(",");
}
});
},
/** 提交按钮 */
@ -569,6 +587,23 @@ export default {
`workTrain_${new Date().getTime()}.xlsx`
);
},
//
fileInput(files) {
let trainFile = "";
if (files.length > 0) {
files.forEach((item) => {
trainFile += "," + item.url;
});
trainFile = trainFile.substring(1);
}
this.form.trainFile = trainFile;
},
handleDownload(row) {
this.files = row.trainFile.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
},
};
</script>

View File

@ -0,0 +1,407 @@
<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="title">
<el-input
v-model="queryParams.title"
placeholder="请输入标题"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态标识" prop="statusFlag">
<el-select v-model="queryParams.statusFlag" placeholder="请选择状态标识" clearable>
<el-option
v-for="dict in dict.type.work_journalism_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="置顶标识" prop="topFlag">
<el-select v-model="queryParams.topFlag" placeholder="请选择置顶标识" clearable>
<el-option
v-for="dict in dict.type.work_journalism_top"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="排序" prop="sortNum">
<el-input
v-model="queryParams.sortNum"
placeholder="请输入排序"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="数据状态" prop="isDel">
<el-input
v-model="queryParams.isDel"
placeholder="请输入数据状态"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="daterangeCreateTime"
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-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['work:workJournalism: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="['work:workJournalism: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="['work:workJournalism: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="['work:workJournalism:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="workJournalismList" @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="title" />
<el-table-column label="主图" align="center" prop="mainImage" width="100">
<template slot-scope="scope">
<image-preview :src="scope.row.mainImage" :width="50" :height="50"/>
</template>
</el-table-column>
<el-table-column label="简介" align="center" prop="intro" />
<el-table-column label="内容" align="center" prop="content" />
<el-table-column label="类型" align="center" prop="type" />
<el-table-column label="来源" align="center" prop="source" />
<el-table-column label="外部地址" align="center" prop="openUrl" />
<el-table-column label="阅读次数" align="center" prop="readNum" />
<el-table-column label="状态标识" align="center" prop="statusFlag">
<template slot-scope="scope">
<dict-tag :options="dict.type.work_journalism_status" :value="scope.row.statusFlag"/>
</template>
</el-table-column>
<el-table-column label="置顶标识" align="center" prop="topFlag">
<template slot-scope="scope">
<dict-tag :options="dict.type.work_journalism_top" :value="scope.row.topFlag"/>
</template>
</el-table-column>
<el-table-column label="相关附件" align="center" prop="files" />
<el-table-column label="排序" align="center" prop="sortNum" />
<el-table-column label="数据状态" align="center" prop="isDel">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_common_isdel" :value="scope.row.isDel"/>
</template>
</el-table-column>
<el-table-column label="创建用户" align="center" prop="createUser" />
<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
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['work:workJournalism:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['work:workJournalism: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="getList"
/>
<!-- 添加或修改集团新闻对话框 -->
<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="title">
<el-input v-model="form.title" placeholder="请输入标题" />
</el-form-item>
<el-form-item label="主图" prop="mainImage">
<image-upload v-model="form.mainImage"/>
</el-form-item>
<el-form-item label="简介" prop="intro">
<el-input v-model="form.intro" placeholder="请输入简介" />
</el-form-item>
<el-form-item label="内容">
<editor v-model="form.content" :min-height="192"/>
</el-form-item>
<el-form-item label="来源" prop="source">
<el-input v-model="form.source" placeholder="请输入来源" />
</el-form-item>
<el-form-item label="外部地址" prop="openUrl">
<el-input v-model="form.openUrl" placeholder="请输入外部地址" />
</el-form-item>
<el-form-item label="阅读次数" prop="readNum">
<el-input v-model="form.readNum" placeholder="请输入阅读次数" />
</el-form-item>
<el-form-item label="状态标识" prop="statusFlag">
<el-select v-model="form.statusFlag" placeholder="请选择状态标识">
<el-option
v-for="dict in dict.type.work_journalism_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="置顶标识" prop="topFlag">
<el-select v-model="form.topFlag" placeholder="请选择置顶标识">
<el-option
v-for="dict in dict.type.work_journalism_top"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="相关附件" prop="files">
<el-input v-model="form.files" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="排序" prop="sortNum">
<el-input v-model="form.sortNum" placeholder="请输入排序" />
</el-form-item>
<el-form-item label="数据状态" prop="isDel">
<el-input v-model="form.isDel" placeholder="请输入数据状态" />
</el-form-item>
<el-form-item label="创建用户" prop="createUser">
<el-input v-model="form.createUser" placeholder="请输入创建用户" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</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>
</div>
</template>
<script>
import { listWorkJournalism, getWorkJournalism, delWorkJournalism, addWorkJournalism, updateWorkJournalism } from "@/api/work/workJournalism";
export default {
name: "WorkJournalism",
dicts: ['work_journalism_status', 'work_journalism_top'],
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
workJournalismList: [],
//
title: "",
//
open: false,
//
daterangeCreateTime: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
title: null,
statusFlag: null,
topFlag: null,
sortNum: null,
isDel: null,
createTime: null,
},
//
form: {},
//
rules: {
}
};
},
created() {
this.getList();
},
methods: {
/** 查询集团新闻列表 */
getList() {
this.loading = true;
this.queryParams.params = {};
if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) {
this.queryParams.params["beginCreateTime"] = this.daterangeCreateTime[0];
this.queryParams.params["endCreateTime"] = this.daterangeCreateTime[1];
}
listWorkJournalism(this.queryParams).then(response => {
this.workJournalismList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
id: null,
title: null,
mainImage: null,
intro: null,
content: null,
type: null,
source: null,
openUrl: null,
readNum: null,
statusFlag: null,
topFlag: null,
files: null,
sortNum: null,
isDel: null,
createUser: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
remark: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.daterangeCreateTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加集团新闻";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getWorkJournalism(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改集团新闻";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateWorkJournalism(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addWorkJournalism(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除集团新闻编号为"' + ids + '"的数据项?').then(function() {
return delWorkJournalism(ids);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('work/workJournalism/export', {
...this.queryParams
}, `workJournalism_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -190,6 +190,15 @@
</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.trainFile"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handleDownload(scope.row)"
v-hasPermi="['work:emergencyDrill:edit']"
>下载文件</el-button
>
<el-button
v-if="scope.row.vDel == '0'"
size="mini"
@ -221,7 +230,7 @@
/>
<!-- 添加或修改演练培训对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="680px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="项目名称">
<el-input
@ -248,7 +257,7 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="培训标题">
<el-form-item label="培训标题" prop="trainTitle">
<el-input placeholder="请输入培训标题" v-model="form.trainTitle"></el-input>
</el-form-item>
<el-form-item label="参与人数" prop="trainParticipants">
@ -277,6 +286,9 @@
placeholder="请输入培训内容"
/>
</el-form-item>
<el-form-item label="相关文件" prop="trainFile">
<FileUpload @input="fileInput" :limit="9" v-model="files" />
</el-form-item>
<el-form-item label="协同部门" prop="workTrainDeptList">
<el-select
v-model="form.workTrainDeptList"
@ -366,7 +378,7 @@ export default {
rules: {
mainImage: [{ required: true, message: "请上传培训主图", trigger: "blur" }],
trainNature: [{ required: false, message: "请选择培训类型", trigger: "blur" }],
beginDate: [{ required: false, message: "请选择演练时间", trigger: "blur" }],
beginDate: [{ required: true, message: "请选择培训时间", trigger: "blur" }],
trainTitle: [
{ required: true, message: "请输入培训标题", trigger: "blur" },
{ max: 20, message: "培训标题最多20个字符", trigger: "blur" },
@ -378,8 +390,10 @@ export default {
{ required: true, message: "请输入培训内容", trigger: "blur" },
{ max: 1000, message: "培训内容长度在最多1000个字符", trigger: "blur" },
],
trainFile: [{ required: true, message: "请上传相关附件", trigger: "blur" }],
},
previewList: [],
files: [],
};
},
created() {
@ -446,6 +460,7 @@ export default {
updateTime: null,
remark: null,
};
this.files = [];
this.workTrainDeptList = [];
this.resetForm("form");
},
@ -490,6 +505,9 @@ export default {
depts.push(item.deptId);
});
this.form.workTrainDeptList = depts;
if (that.form.trainFile) {
that.files = that.form.trainFile.split(",");
}
});
},
/** 提交按钮 */
@ -569,6 +587,23 @@ export default {
`workTrain_${new Date().getTime()}.xlsx`
);
},
//
fileInput(files) {
let trainFile = "";
if (files.length > 0) {
files.forEach((item) => {
trainFile += "," + item.url;
});
trainFile = trainFile.substring(1);
}
this.form.trainFile = trainFile;
},
handleDownload(row) {
this.files = row.trainFile.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
},
};
</script>

View File

@ -109,6 +109,15 @@
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
v-if="scope.row.trainFile"
size="mini"
type="text"
icon="el-icon-paperclip"
@click="handleDownload(scope.row)"
v-hasPermi="['work:emergencyDrill:edit']"
>下载文件</el-button
>
<el-button
v-if="scope.row.vDel == '0'"
size="mini"
@ -200,6 +209,9 @@
placeholder="请输入培训内容"
/>
</el-form-item>
<el-form-item label="相关文件" prop="trainFile">
<FileUpload @input="fileInput" :limit="9" v-model="files" />
</el-form-item>
<el-form-item label="协同部门" prop="workTrainDeptList">
<el-select
v-model="form.workTrainDeptList"
@ -289,7 +301,7 @@ export default {
rules: {
mainImage: [{ required: true, message: "请上传培训主图", trigger: "blur" }],
trainNature: [{ required: false, message: "请选择培训类型", trigger: "blur" }],
beginDate: [{ required: false, message: "请选择演练时间", trigger: "blur" }],
beginDate: [{ required: true, message: "请选择培训时间", trigger: "blur" }],
trainTitle: [
{ required: true, message: "请输入培训标题", trigger: "blur" },
{ max: 20, message: "培训标题最多20个字符", trigger: "blur" },
@ -301,8 +313,10 @@ export default {
{ required: true, message: "请输入培训内容", trigger: "blur" },
{ max: 1000, message: "培训内容长度在最多1000个字符", trigger: "blur" },
],
trainFile: [{ required: true, message: "请上传相关附件", trigger: "blur" }],
},
previewList: [],
files: [],
};
},
computed: {},
@ -378,6 +392,7 @@ export default {
updateTime: null,
remark: null,
};
this.files = [];
this.deptOptions = [];
this.resetForm("form");
},
@ -396,7 +411,7 @@ export default {
this.reset();
},
//
getDeptList(id) {
getDeptList() {
this.loading = true;
let param = {
projectId: this.form.projectId,
@ -448,13 +463,17 @@ export default {
listProjectUnit(param).then((response) => {
this.deptOptions = response.data;
});
let that = this;
getWorkTrain(id).then((response) => {
this.form = response.data;
that.form = response.data;
let depts = [];
this.form.workTrainDeptList.forEach((item) => {
that.form.workTrainDeptList.forEach((item) => {
depts.push(item.deptId);
});
this.form.workTrainDeptList = depts;
that.form.workTrainDeptList = depts;
if (that.form.trainFile) {
that.files = that.form.trainFile.split(",");
}
});
},
/** 删除按钮操作 */
@ -471,28 +490,22 @@ export default {
})
.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)
);
//
fileInput(files) {
let trainFile = "";
if (files.length > 0) {
files.forEach((item) => {
trainFile += "," + item.url;
});
trainFile = trainFile.substring(1);
}
this.form.trainFile = trainFile;
},
handleDownload(row) {
this.files = row.trainFile.split(",");
this.files.forEach((item) => {
this.$download.resource(item);
});
},
},
};

View File

@ -1,9 +1,9 @@
package com.yanzhu.jh.bigscreen.web.controller;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.PublicStateEnum;
import com.ruoyi.common.utils.StringUtils;
import com.yanzhu.jh.project.domain.SurProjectWorkSpecial;
import com.yanzhu.jh.project.service.ISurProjectWorkSpecialService;
@ -46,12 +46,33 @@ public class ProjectSpecialController extends BaseController {
* @return
*/
@GetMapping("/getProjectSpecialList")
public TableDataInfo getProjectSpecialList(String projectId){
public TableDataInfo getProjectSpecialList(String projectId, String activeName, String specialType){
SurProjectWorkSpecial surProjectWorkSpecial = new SurProjectWorkSpecial();
surProjectWorkSpecial.setIsDel(Convert.toInt(PublicStateEnum.OK.getCode()));
if(projectId!=null && !"0".equals(projectId)){
surProjectWorkSpecial.setProjectId(Convert.toLong(projectId));
}
if(StringUtils.isNotBlank(activeName)){
surProjectWorkSpecial.setActiveName(activeName);
}
if(specialType!=null && !"0".equals(specialType)){
surProjectWorkSpecial.setSpecialType(specialType);
}
return getDataTable(surProjectWorkSpecialService.selectSurProjectWorkSpecialList(surProjectWorkSpecial));
}
/**
*
*/
@GetMapping("/findWorkSpecialCount")
public AjaxResult findWorkSpecialCount(String projectId, String specialType)
{
SurProjectWorkSpecial surProjectWorkSpecial = new SurProjectWorkSpecial();
if(projectId!=null && !"0".equals(projectId)){
surProjectWorkSpecial.setProjectId(Convert.toLong(projectId));
}
if(specialType!=null && !"0".equals(specialType)){
surProjectWorkSpecial.setSpecialType(specialType);
}
return success(surProjectWorkSpecialService.findWorkSpecialCount(surProjectWorkSpecial));
}
}

View File

@ -0,0 +1,104 @@
package com.yanzhu.jh.project.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.yanzhu.jh.project.domain.SurProjectChecking;
import com.yanzhu.jh.project.service.ISurProjectCheckingService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* Controller
*
* @author JiangYuQi
* @date 2023-08-18
*/
@RestController
@RequestMapping("/project/projectChecking")
public class SurProjectCheckingController extends BaseController
{
@Autowired
private ISurProjectCheckingService surProjectCheckingService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectChecking:list')")
@GetMapping("/list")
public TableDataInfo list(SurProjectChecking surProjectChecking)
{
startPage();
List<SurProjectChecking> list = surProjectCheckingService.selectSurProjectCheckingList(surProjectChecking);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectChecking:export')")
@Log(title = "项目验收", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, SurProjectChecking surProjectChecking)
{
List<SurProjectChecking> list = surProjectCheckingService.selectSurProjectCheckingList(surProjectChecking);
ExcelUtil<SurProjectChecking> util = new ExcelUtil<SurProjectChecking>(SurProjectChecking.class);
util.exportExcel(response, list, "项目验收数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectChecking:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(surProjectCheckingService.selectSurProjectCheckingById(id));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectChecking:add')")
@Log(title = "项目验收", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SurProjectChecking surProjectChecking)
{
return toAjax(surProjectCheckingService.insertSurProjectChecking(surProjectChecking));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectChecking:edit')")
@Log(title = "项目验收", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SurProjectChecking surProjectChecking)
{
return toAjax(surProjectCheckingService.updateSurProjectChecking(surProjectChecking));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:projectChecking:remove')")
@Log(title = "项目验收", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(surProjectCheckingService.deleteSurProjectCheckingByIds(ids));
}
}

View File

@ -60,6 +60,23 @@ public class SurProjectWorkSpecialController extends BaseController
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('project:surProjectSpecial:list')")
@GetMapping("/findWorkSpecialCount")
public AjaxResult findWorkSpecialCount(SurProjectWorkSpecial surProjectWorkSpecial)
{
surProjectWorkSpecial.setNowRole(Convert.toStr(getUserFirstRole()));
if(SysRoleEnum.ZGS.getCode().equals(surProjectWorkSpecial.getNowRole())){
surProjectWorkSpecial.setNowDept(Convert.toStr(sysDeptService.getZGSDeptId(getDeptId())));
}else{
surProjectWorkSpecial.setNowDept(Convert.toStr(getDeptId()));
}
surProjectWorkSpecial.setNowUser(Convert.toStr(getUserId()));
return success(surProjectWorkSpecialService.findWorkSpecialCount(surProjectWorkSpecial));
}
/**
*
*/

View File

@ -0,0 +1,325 @@
package com.yanzhu.jh.project.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* sur_project_checking
*
* @author JiangYuQi
* @date 2023-08-18
*/
public class SurProjectChecking extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 项目主键 */
@Excel(name = "项目主键")
private Long projectId;
/** 部门主键 */
@Excel(name = "部门主键")
private Long deptId;
/** 分包单位主键 */
@Excel(name = "分包单位主键")
private Long groupDeptId;
/** 验收类型 */
@Excel(name = "验收类型")
private String checkType;
/** 验收主图 */
@Excel(name = "验收主图")
private String mainImage;
/** 图片列表 */
@Excel(name = "图片列表")
private String imageUrls;
/** 验收工序部位类型 */
@Excel(name = "验收工序部位类型")
private String workingPositionType;
/** 验收工序部位 */
@Excel(name = "验收工序部位")
private String checkWorkingPosition;
/** 验收次数 */
@Excel(name = "验收次数")
private Long checkingNum;
/** 验收结果 */
@Excel(name = "验收结果")
private String checkResult;
/** 验收描述 */
@Excel(name = "验收描述")
private String intro;
/** 质量用户 */
@Excel(name = "质量用户")
private String qualityUser;
/** 质量用户名称 */
@Excel(name = "质量用户名称")
private String qualityUserName;
/** 监理用户 */
@Excel(name = "监理用户")
private String superviseUser;
/** 监理用户名称 */
@Excel(name = "监理用户名称")
private String superviseUserName;
/** 分包单位用户 */
@Excel(name = "分包单位用户")
private String groupDeptUser;
/** 分包单位用户名称 */
@Excel(name = "分包单位用户名称")
private String groupDeptUserName;
/** 验收时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "验收时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date checkingDate;
/** 验收附件 */
@Excel(name = "验收附件")
private String checkingFiles;
/** 数据状态 */
@Excel(name = "数据状态")
private Long isDel;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setProjectId(Long projectId)
{
this.projectId = projectId;
}
public Long getProjectId()
{
return projectId;
}
public void setDeptId(Long deptId)
{
this.deptId = deptId;
}
public Long getDeptId()
{
return deptId;
}
public void setGroupDeptId(Long groupDeptId)
{
this.groupDeptId = groupDeptId;
}
public Long getGroupDeptId()
{
return groupDeptId;
}
public void setCheckType(String checkType)
{
this.checkType = checkType;
}
public String getCheckType()
{
return checkType;
}
public void setMainImage(String mainImage)
{
this.mainImage = mainImage;
}
public String getMainImage()
{
return mainImage;
}
public void setImageUrls(String imageUrls)
{
this.imageUrls = imageUrls;
}
public String getImageUrls()
{
return imageUrls;
}
public void setWorkingPositionType(String workingPositionType)
{
this.workingPositionType = workingPositionType;
}
public String getWorkingPositionType()
{
return workingPositionType;
}
public void setCheckWorkingPosition(String checkWorkingPosition)
{
this.checkWorkingPosition = checkWorkingPosition;
}
public String getCheckWorkingPosition()
{
return checkWorkingPosition;
}
public void setCheckingNum(Long checkingNum)
{
this.checkingNum = checkingNum;
}
public Long getCheckingNum()
{
return checkingNum;
}
public void setCheckResult(String checkResult)
{
this.checkResult = checkResult;
}
public String getCheckResult()
{
return checkResult;
}
public void setIntro(String intro)
{
this.intro = intro;
}
public String getIntro()
{
return intro;
}
public void setQualityUser(String qualityUser)
{
this.qualityUser = qualityUser;
}
public String getQualityUser()
{
return qualityUser;
}
public void setQualityUserName(String qualityUserName)
{
this.qualityUserName = qualityUserName;
}
public String getQualityUserName()
{
return qualityUserName;
}
public void setSuperviseUser(String superviseUser)
{
this.superviseUser = superviseUser;
}
public String getSuperviseUser()
{
return superviseUser;
}
public void setSuperviseUserName(String superviseUserName)
{
this.superviseUserName = superviseUserName;
}
public String getSuperviseUserName()
{
return superviseUserName;
}
public void setGroupDeptUser(String groupDeptUser)
{
this.groupDeptUser = groupDeptUser;
}
public String getGroupDeptUser()
{
return groupDeptUser;
}
public void setGroupDeptUserName(String groupDeptUserName)
{
this.groupDeptUserName = groupDeptUserName;
}
public String getGroupDeptUserName()
{
return groupDeptUserName;
}
public void setCheckingDate(Date checkingDate)
{
this.checkingDate = checkingDate;
}
public Date getCheckingDate()
{
return checkingDate;
}
public void setCheckingFiles(String checkingFiles)
{
this.checkingFiles = checkingFiles;
}
public String getCheckingFiles()
{
return checkingFiles;
}
public void setIsDel(Long isDel)
{
this.isDel = isDel;
}
public Long getIsDel()
{
return isDel;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("projectId", getProjectId())
.append("deptId", getDeptId())
.append("groupDeptId", getGroupDeptId())
.append("checkType", getCheckType())
.append("mainImage", getMainImage())
.append("imageUrls", getImageUrls())
.append("workingPositionType", getWorkingPositionType())
.append("checkWorkingPosition", getCheckWorkingPosition())
.append("checkingNum", getCheckingNum())
.append("checkResult", getCheckResult())
.append("intro", getIntro())
.append("qualityUser", getQualityUser())
.append("qualityUserName", getQualityUserName())
.append("superviseUser", getSuperviseUser())
.append("superviseUserName", getSuperviseUserName())
.append("groupDeptUser", getGroupDeptUser())
.append("groupDeptUserName", getGroupDeptUserName())
.append("checkingDate", getCheckingDate())
.append("checkingFiles", getCheckingFiles())
.append("isDel", getIsDel())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -28,6 +28,10 @@ public class SurProjectWorkSpecial extends BaseEntity
@Excel(name = "部门主键")
private Long deptId;
/** 特种人员类型 */
@Excel(name = "特种人员类型")
private String specialType;
/** 姓名 */
@Excel(name = "姓名")
private String name;
@ -75,6 +79,7 @@ public class SurProjectWorkSpecial extends BaseEntity
private String projectName;
private String deptName;
private String specialTypeName;
public void setId(Long id)
{
@ -216,12 +221,29 @@ public class SurProjectWorkSpecial extends BaseEntity
this.credentialType = credentialType;
}
public String getSpecialType() {
return specialType;
}
public void setSpecialType(String specialType) {
this.specialType = specialType;
}
public String getSpecialTypeName() {
return specialTypeName;
}
public void setSpecialTypeName(String specialTypeName) {
this.specialTypeName = specialTypeName;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("projectId", getProjectId())
.append("deptId", getDeptId())
.append("specialType", getSpecialType())
.append("name", getName())
.append("sex", getSex())
.append("age", getAge())

View File

@ -0,0 +1,61 @@
package com.yanzhu.jh.project.mapper;
import java.util.List;
import com.yanzhu.jh.project.domain.SurProjectChecking;
/**
* Mapper
*
* @author JiangYuQi
* @date 2023-08-18
*/
public interface SurProjectCheckingMapper
{
/**
*
*
* @param id
* @return
*/
public SurProjectChecking selectSurProjectCheckingById(Long id);
/**
*
*
* @param surProjectChecking
* @return
*/
public List<SurProjectChecking> selectSurProjectCheckingList(SurProjectChecking surProjectChecking);
/**
*
*
* @param surProjectChecking
* @return
*/
public int insertSurProjectChecking(SurProjectChecking surProjectChecking);
/**
*
*
* @param surProjectChecking
* @return
*/
public int updateSurProjectChecking(SurProjectChecking surProjectChecking);
/**
*
*
* @param id
* @return
*/
public int deleteSurProjectCheckingById(Long id);
/**
*
*
* @param ids
* @return
*/
public int deleteSurProjectCheckingByIds(Long[] ids);
}

View File

@ -29,6 +29,22 @@ public interface SurProjectWorkSpecialMapper
*/
public List<SurProjectWorkSpecial> selectSurProjectWorkSpecialList(SurProjectWorkSpecial surProjectWorkSpecial);
/**
*
*
* @param surProjectWorkSpecial
* @return
*/
public Integer selectSurProjectWorkSpecialExpired(SurProjectWorkSpecial surProjectWorkSpecial);
/**
*
*
* @param surProjectWorkSpecial
* @return
*/
public Integer selectSurProjectWorkSpecialNotExpired(SurProjectWorkSpecial surProjectWorkSpecial);
/**
*
*

View File

@ -0,0 +1,61 @@
package com.yanzhu.jh.project.service;
import java.util.List;
import com.yanzhu.jh.project.domain.SurProjectChecking;
/**
* Service
*
* @author JiangYuQi
* @date 2023-08-18
*/
public interface ISurProjectCheckingService
{
/**
*
*
* @param id
* @return
*/
public SurProjectChecking selectSurProjectCheckingById(Long id);
/**
*
*
* @param surProjectChecking
* @return
*/
public List<SurProjectChecking> selectSurProjectCheckingList(SurProjectChecking surProjectChecking);
/**
*
*
* @param surProjectChecking
* @return
*/
public int insertSurProjectChecking(SurProjectChecking surProjectChecking);
/**
*
*
* @param surProjectChecking
* @return
*/
public int updateSurProjectChecking(SurProjectChecking surProjectChecking);
/**
*
*
* @param ids
* @return
*/
public int deleteSurProjectCheckingByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
public int deleteSurProjectCheckingById(Long id);
}

View File

@ -29,6 +29,13 @@ public interface ISurProjectWorkSpecialService
*/
public List<SurProjectWorkSpecial> selectSurProjectWorkSpecialList(SurProjectWorkSpecial surProjectWorkSpecial);
/**
*
*
* @param surProjectWorkSpecial
* @return
*/
public Map<String,Object> findWorkSpecialCount(SurProjectWorkSpecial surProjectWorkSpecial);
/**
*
*

View File

@ -0,0 +1,98 @@
package com.yanzhu.jh.project.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.jh.project.mapper.SurProjectCheckingMapper;
import com.yanzhu.jh.project.domain.SurProjectChecking;
import com.yanzhu.jh.project.service.ISurProjectCheckingService;
import com.ruoyi.common.utils.SecurityUtils;
/**
* Service
*
* @author JiangYuQi
* @date 2023-08-18
*/
@Service
public class SurProjectCheckingServiceImpl implements ISurProjectCheckingService
{
@Autowired
private SurProjectCheckingMapper surProjectCheckingMapper;
/**
*
*
* @param id
* @return
*/
@Override
public SurProjectChecking selectSurProjectCheckingById(Long id)
{
return surProjectCheckingMapper.selectSurProjectCheckingById(id);
}
/**
*
*
* @param surProjectChecking
* @return
*/
@Override
public List<SurProjectChecking> selectSurProjectCheckingList(SurProjectChecking surProjectChecking)
{
return surProjectCheckingMapper.selectSurProjectCheckingList(surProjectChecking);
}
/**
*
*
* @param surProjectChecking
* @return
*/
@Override
public int insertSurProjectChecking(SurProjectChecking surProjectChecking)
{
surProjectChecking.setCreateBy(SecurityUtils.getUsername());
surProjectChecking.setCreateTime(DateUtils.getNowDate());
return surProjectCheckingMapper.insertSurProjectChecking(surProjectChecking);
}
/**
*
*
* @param surProjectChecking
* @return
*/
@Override
public int updateSurProjectChecking(SurProjectChecking surProjectChecking)
{
surProjectChecking.setUpdateBy(SecurityUtils.getUsername());
surProjectChecking.setUpdateTime(DateUtils.getNowDate());
return surProjectCheckingMapper.updateSurProjectChecking(surProjectChecking);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteSurProjectCheckingByIds(Long[] ids)
{
return surProjectCheckingMapper.deleteSurProjectCheckingByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteSurProjectCheckingById(Long id)
{
return surProjectCheckingMapper.deleteSurProjectCheckingById(id);
}
}

View File

@ -1,5 +1,6 @@
package com.yanzhu.jh.project.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -48,6 +49,20 @@ public class SurProjectWorkSpecialServiceImpl implements ISurProjectWorkSpecialS
return surProjectWorkSpecialMapper.selectSurProjectWorkSpecialList(surProjectWorkSpecial);
}
/**
*
*
* @param surProjectWorkSpecial
* @return
*/
@Override
public Map<String,Object> findWorkSpecialCount(SurProjectWorkSpecial surProjectWorkSpecial) {
Map<String,Object> dataMap = new HashMap<>();
dataMap.put("expired",surProjectWorkSpecialMapper.selectSurProjectWorkSpecialExpired(surProjectWorkSpecial));
dataMap.put("notExpired",surProjectWorkSpecialMapper.selectSurProjectWorkSpecialNotExpired(surProjectWorkSpecial));
return dataMap;
}
/**
*
*

View File

@ -0,0 +1,104 @@
package com.yanzhu.jh.work.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.yanzhu.jh.work.domain.WorkJournalism;
import com.yanzhu.jh.work.service.IWorkJournalismService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* Controller
*
* @author JiangYuQi
* @date 2023-08-18
*/
@RestController
@RequestMapping("/work/workJournalism")
public class WorkJournalismController extends BaseController
{
@Autowired
private IWorkJournalismService workJournalismService;
/**
*
*/
@PreAuthorize("@ss.hasPermi('work:workJournalism:list')")
@GetMapping("/list")
public TableDataInfo list(WorkJournalism workJournalism)
{
startPage();
List<WorkJournalism> list = workJournalismService.selectWorkJournalismList(workJournalism);
return getDataTable(list);
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('work:workJournalism:export')")
@Log(title = "集团新闻", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, WorkJournalism workJournalism)
{
List<WorkJournalism> list = workJournalismService.selectWorkJournalismList(workJournalism);
ExcelUtil<WorkJournalism> util = new ExcelUtil<WorkJournalism>(WorkJournalism.class);
util.exportExcel(response, list, "集团新闻数据");
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('work:workJournalism:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(workJournalismService.selectWorkJournalismById(id));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('work:workJournalism:add')")
@Log(title = "集团新闻", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody WorkJournalism workJournalism)
{
return toAjax(workJournalismService.insertWorkJournalism(workJournalism));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('work:workJournalism:edit')")
@Log(title = "集团新闻", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody WorkJournalism workJournalism)
{
return toAjax(workJournalismService.updateWorkJournalism(workJournalism));
}
/**
*
*/
@PreAuthorize("@ss.hasPermi('work:workJournalism:remove')")
@Log(title = "集团新闻", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(workJournalismService.deleteWorkJournalismByIds(ids));
}
}

View File

@ -0,0 +1,238 @@
package com.yanzhu.jh.work.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* work_journalism
*
* @author JiangYuQi
* @date 2023-08-18
*/
public class WorkJournalism extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 标题 */
@Excel(name = "标题")
private String title;
/** 主图 */
@Excel(name = "主图")
private String mainImage;
/** 简介 */
@Excel(name = "简介")
private String intro;
/** 内容 */
@Excel(name = "内容")
private String content;
/** 类型 */
@Excel(name = "类型")
private String type;
/** 来源 */
@Excel(name = "来源")
private String source;
/** 外部地址 */
@Excel(name = "外部地址")
private String openUrl;
/** 阅读次数 */
@Excel(name = "阅读次数")
private Long readNum;
/** 状态标识 */
@Excel(name = "状态标识")
private String statusFlag;
/** 置顶标识 */
@Excel(name = "置顶标识")
private String topFlag;
/** 相关附件 */
@Excel(name = "相关附件")
private String files;
/** 排序 */
@Excel(name = "排序")
private Long sortNum;
/** 数据状态 */
@Excel(name = "数据状态")
private Long isDel;
/** 创建用户 */
@Excel(name = "创建用户")
private String createUser;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setTitle(String title)
{
this.title = title;
}
public String getTitle()
{
return title;
}
public void setMainImage(String mainImage)
{
this.mainImage = mainImage;
}
public String getMainImage()
{
return mainImage;
}
public void setIntro(String intro)
{
this.intro = intro;
}
public String getIntro()
{
return intro;
}
public void setContent(String content)
{
this.content = content;
}
public String getContent()
{
return content;
}
public void setType(String type)
{
this.type = type;
}
public String getType()
{
return type;
}
public void setSource(String source)
{
this.source = source;
}
public String getSource()
{
return source;
}
public void setOpenUrl(String openUrl)
{
this.openUrl = openUrl;
}
public String getOpenUrl()
{
return openUrl;
}
public void setReadNum(Long readNum)
{
this.readNum = readNum;
}
public Long getReadNum()
{
return readNum;
}
public void setStatusFlag(String statusFlag)
{
this.statusFlag = statusFlag;
}
public String getStatusFlag()
{
return statusFlag;
}
public void setTopFlag(String topFlag)
{
this.topFlag = topFlag;
}
public String getTopFlag()
{
return topFlag;
}
public void setFiles(String files)
{
this.files = files;
}
public String getFiles()
{
return files;
}
public void setSortNum(Long sortNum)
{
this.sortNum = sortNum;
}
public Long getSortNum()
{
return sortNum;
}
public void setIsDel(Long isDel)
{
this.isDel = isDel;
}
public Long getIsDel()
{
return isDel;
}
public void setCreateUser(String createUser)
{
this.createUser = createUser;
}
public String getCreateUser()
{
return createUser;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("title", getTitle())
.append("mainImage", getMainImage())
.append("intro", getIntro())
.append("content", getContent())
.append("type", getType())
.append("source", getSource())
.append("openUrl", getOpenUrl())
.append("readNum", getReadNum())
.append("statusFlag", getStatusFlag())
.append("topFlag", getTopFlag())
.append("files", getFiles())
.append("sortNum", getSortNum())
.append("isDel", getIsDel())
.append("createUser", getCreateUser())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -66,6 +66,10 @@ public class WorkTrain extends BaseEntity
@Excel(name = "演训内容")
private String trainContent;
/** 演训内容 */
@Excel(name = "演训内容")
private String trainFile;
/** 演练培训协同部门信息 */
private List<WorkTrainDept> workTrainDeptList;
@ -230,6 +234,14 @@ public class WorkTrain extends BaseEntity
this.trainTitle = trainTitle;
}
public String getTrainFile() {
return trainFile;
}
public void setTrainFile(String trainFile) {
this.trainFile = trainFile;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@ -243,6 +255,8 @@ public class WorkTrain extends BaseEntity
.append("trainParticipants", getTrainParticipants())
.append("beginDate", getBeginDate())
.append("endDate", getEndDate())
.append("trainContent", getTrainContent())
.append("trainFile", getTrainFile())
.append("isDel", getIsDel())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())

View File

@ -0,0 +1,61 @@
package com.yanzhu.jh.work.mapper;
import java.util.List;
import com.yanzhu.jh.work.domain.WorkJournalism;
/**
* Mapper
*
* @author JiangYuQi
* @date 2023-08-18
*/
public interface WorkJournalismMapper
{
/**
*
*
* @param id
* @return
*/
public WorkJournalism selectWorkJournalismById(Long id);
/**
*
*
* @param workJournalism
* @return
*/
public List<WorkJournalism> selectWorkJournalismList(WorkJournalism workJournalism);
/**
*
*
* @param workJournalism
* @return
*/
public int insertWorkJournalism(WorkJournalism workJournalism);
/**
*
*
* @param workJournalism
* @return
*/
public int updateWorkJournalism(WorkJournalism workJournalism);
/**
*
*
* @param id
* @return
*/
public int deleteWorkJournalismById(Long id);
/**
*
*
* @param ids
* @return
*/
public int deleteWorkJournalismByIds(Long[] ids);
}

View File

@ -0,0 +1,61 @@
package com.yanzhu.jh.work.service;
import java.util.List;
import com.yanzhu.jh.work.domain.WorkJournalism;
/**
* Service
*
* @author JiangYuQi
* @date 2023-08-18
*/
public interface IWorkJournalismService
{
/**
*
*
* @param id
* @return
*/
public WorkJournalism selectWorkJournalismById(Long id);
/**
*
*
* @param workJournalism
* @return
*/
public List<WorkJournalism> selectWorkJournalismList(WorkJournalism workJournalism);
/**
*
*
* @param workJournalism
* @return
*/
public int insertWorkJournalism(WorkJournalism workJournalism);
/**
*
*
* @param workJournalism
* @return
*/
public int updateWorkJournalism(WorkJournalism workJournalism);
/**
*
*
* @param ids
* @return
*/
public int deleteWorkJournalismByIds(Long[] ids);
/**
*
*
* @param id
* @return
*/
public int deleteWorkJournalismById(Long id);
}

View File

@ -0,0 +1,98 @@
package com.yanzhu.jh.work.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.jh.work.mapper.WorkJournalismMapper;
import com.yanzhu.jh.work.domain.WorkJournalism;
import com.yanzhu.jh.work.service.IWorkJournalismService;
import com.ruoyi.common.utils.SecurityUtils;
/**
* Service
*
* @author JiangYuQi
* @date 2023-08-18
*/
@Service
public class WorkJournalismServiceImpl implements IWorkJournalismService
{
@Autowired
private WorkJournalismMapper workJournalismMapper;
/**
*
*
* @param id
* @return
*/
@Override
public WorkJournalism selectWorkJournalismById(Long id)
{
return workJournalismMapper.selectWorkJournalismById(id);
}
/**
*
*
* @param workJournalism
* @return
*/
@Override
public List<WorkJournalism> selectWorkJournalismList(WorkJournalism workJournalism)
{
return workJournalismMapper.selectWorkJournalismList(workJournalism);
}
/**
*
*
* @param workJournalism
* @return
*/
@Override
public int insertWorkJournalism(WorkJournalism workJournalism)
{
workJournalism.setCreateBy(SecurityUtils.getUsername());
workJournalism.setCreateTime(DateUtils.getNowDate());
return workJournalismMapper.insertWorkJournalism(workJournalism);
}
/**
*
*
* @param workJournalism
* @return
*/
@Override
public int updateWorkJournalism(WorkJournalism workJournalism)
{
workJournalism.setUpdateBy(SecurityUtils.getUsername());
workJournalism.setUpdateTime(DateUtils.getNowDate());
return workJournalismMapper.updateWorkJournalism(workJournalism);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteWorkJournalismByIds(Long[] ids)
{
return workJournalismMapper.deleteWorkJournalismByIds(ids);
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteWorkJournalismById(Long id)
{
return workJournalismMapper.deleteWorkJournalismById(id);
}
}

View File

@ -165,7 +165,7 @@ public class WorkTrainServiceImpl implements IWorkTrainService
SurProject surProject = surProjectMapper.selectSurProjectById(workTrain.getProjectId());
dept.setDeptId(surProject.getDeptId());
}else{
dept.setDeptId(SecurityUtils.getDeptId());
dept.setDeptId(sysDept.getDeptId());
}
dept.setIsMain(PublicStateEnum.YES.getCode());
workTrainDeptList.add(dept);
@ -176,7 +176,9 @@ public class WorkTrainServiceImpl implements IWorkTrainService
for (WorkTrainDept workTrainDept : workTrainDeptList)
{
workTrainDept.setTrainId(id);
workTrainDept.setIsMain(PublicStateEnum.NO.getCode());
if(workTrainDept.getIsMain()==null){
workTrainDept.setIsMain(PublicStateEnum.NO.getCode());
}
list.add(workTrainDept);
}
if (list.size() > 0)

View File

@ -0,0 +1,166 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yanzhu.jh.project.mapper.SurProjectCheckingMapper">
<resultMap type="SurProjectChecking" id="SurProjectCheckingResult">
<result property="id" column="id" />
<result property="projectId" column="project_id" />
<result property="deptId" column="dept_id" />
<result property="groupDeptId" column="group_dept_id" />
<result property="checkType" column="check_type" />
<result property="mainImage" column="main_image" />
<result property="imageUrls" column="image_urls" />
<result property="workingPositionType" column="working_position_type" />
<result property="checkWorkingPosition" column="check_working_position" />
<result property="checkingNum" column="checking_num" />
<result property="checkResult" column="check_result" />
<result property="intro" column="intro" />
<result property="qualityUser" column="quality_user" />
<result property="qualityUserName" column="quality_user_name" />
<result property="superviseUser" column="supervise_user" />
<result property="superviseUserName" column="supervise_user_name" />
<result property="groupDeptUser" column="group_dept_user" />
<result property="groupDeptUserName" column="group_dept_user_name" />
<result property="checkingDate" column="checking_date" />
<result property="checkingFiles" column="checking_files" />
<result property="isDel" column="is_del" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectSurProjectCheckingVo">
select id, project_id, dept_id, group_dept_id, check_type, main_image, image_urls, working_position_type, check_working_position, checking_num, check_result, intro, quality_user, quality_user_name, supervise_user, supervise_user_name, group_dept_user, group_dept_user_name, checking_date, checking_files, is_del, create_by, create_time, update_by, update_time, remark from sur_project_checking
</sql>
<select id="selectSurProjectCheckingList" parameterType="SurProjectChecking" resultMap="SurProjectCheckingResult">
<include refid="selectSurProjectCheckingVo"/>
<where>
<if test="projectId != null "> and project_id = #{projectId}</if>
<if test="deptId != null "> and dept_id = #{deptId}</if>
<if test="groupDeptId != null "> and group_dept_id = #{groupDeptId}</if>
<if test="checkType != null and checkType != ''"> and check_type = #{checkType}</if>
<if test="workingPositionType != null and workingPositionType != ''"> and working_position_type = #{workingPositionType}</if>
<if test="checkWorkingPosition != null and checkWorkingPosition != ''"> and check_working_position like concat('%', #{checkWorkingPosition}, '%')</if>
<if test="checkResult != null and checkResult != ''"> and check_result = #{checkResult}</if>
<if test="qualityUser != null and qualityUser != ''"> and quality_user like concat('%', #{qualityUser}, '%')</if>
<if test="qualityUserName != null and qualityUserName != ''"> and quality_user_name like concat('%', #{qualityUserName}, '%')</if>
<if test="superviseUser != null and superviseUser != ''"> and supervise_user like concat('%', #{superviseUser}, '%')</if>
<if test="superviseUserName != null and superviseUserName != ''"> and supervise_user_name like concat('%', #{superviseUserName}, '%')</if>
<if test="groupDeptUser != null and groupDeptUser != ''"> and group_dept_user like concat('%', #{groupDeptUser}, '%')</if>
<if test="groupDeptUserName != null and groupDeptUserName != ''"> and group_dept_user_name like concat('%', #{groupDeptUserName}, '%')</if>
<if test="params.beginCheckingDate != null and params.beginCheckingDate != '' and params.endCheckingDate != null and params.endCheckingDate != ''"> and checking_date between #{params.beginCheckingDate} and #{params.endCheckingDate}</if>
<if test="isDel != null "> and is_del = #{isDel}</if>
</where>
</select>
<select id="selectSurProjectCheckingById" parameterType="Long" resultMap="SurProjectCheckingResult">
<include refid="selectSurProjectCheckingVo"/>
where id = #{id}
</select>
<insert id="insertSurProjectChecking" parameterType="SurProjectChecking" useGeneratedKeys="true" keyProperty="id">
insert into sur_project_checking
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectId != null">project_id,</if>
<if test="deptId != null">dept_id,</if>
<if test="groupDeptId != null">group_dept_id,</if>
<if test="checkType != null">check_type,</if>
<if test="mainImage != null">main_image,</if>
<if test="imageUrls != null">image_urls,</if>
<if test="workingPositionType != null">working_position_type,</if>
<if test="checkWorkingPosition != null">check_working_position,</if>
<if test="checkingNum != null">checking_num,</if>
<if test="checkResult != null">check_result,</if>
<if test="intro != null">intro,</if>
<if test="qualityUser != null">quality_user,</if>
<if test="qualityUserName != null">quality_user_name,</if>
<if test="superviseUser != null">supervise_user,</if>
<if test="superviseUserName != null">supervise_user_name,</if>
<if test="groupDeptUser != null">group_dept_user,</if>
<if test="groupDeptUserName != null">group_dept_user_name,</if>
<if test="checkingDate != null">checking_date,</if>
<if test="checkingFiles != null">checking_files,</if>
<if test="isDel != null">is_del,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectId != null">#{projectId},</if>
<if test="deptId != null">#{deptId},</if>
<if test="groupDeptId != null">#{groupDeptId},</if>
<if test="checkType != null">#{checkType},</if>
<if test="mainImage != null">#{mainImage},</if>
<if test="imageUrls != null">#{imageUrls},</if>
<if test="workingPositionType != null">#{workingPositionType},</if>
<if test="checkWorkingPosition != null">#{checkWorkingPosition},</if>
<if test="checkingNum != null">#{checkingNum},</if>
<if test="checkResult != null">#{checkResult},</if>
<if test="intro != null">#{intro},</if>
<if test="qualityUser != null">#{qualityUser},</if>
<if test="qualityUserName != null">#{qualityUserName},</if>
<if test="superviseUser != null">#{superviseUser},</if>
<if test="superviseUserName != null">#{superviseUserName},</if>
<if test="groupDeptUser != null">#{groupDeptUser},</if>
<if test="groupDeptUserName != null">#{groupDeptUserName},</if>
<if test="checkingDate != null">#{checkingDate},</if>
<if test="checkingFiles != null">#{checkingFiles},</if>
<if test="isDel != null">#{isDel},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateSurProjectChecking" parameterType="SurProjectChecking">
update sur_project_checking
<trim prefix="SET" suffixOverrides=",">
<if test="projectId != null">project_id = #{projectId},</if>
<if test="deptId != null">dept_id = #{deptId},</if>
<if test="groupDeptId != null">group_dept_id = #{groupDeptId},</if>
<if test="checkType != null">check_type = #{checkType},</if>
<if test="mainImage != null">main_image = #{mainImage},</if>
<if test="imageUrls != null">image_urls = #{imageUrls},</if>
<if test="workingPositionType != null">working_position_type = #{workingPositionType},</if>
<if test="checkWorkingPosition != null">check_working_position = #{checkWorkingPosition},</if>
<if test="checkingNum != null">checking_num = #{checkingNum},</if>
<if test="checkResult != null">check_result = #{checkResult},</if>
<if test="intro != null">intro = #{intro},</if>
<if test="qualityUser != null">quality_user = #{qualityUser},</if>
<if test="qualityUserName != null">quality_user_name = #{qualityUserName},</if>
<if test="superviseUser != null">supervise_user = #{superviseUser},</if>
<if test="superviseUserName != null">supervise_user_name = #{superviseUserName},</if>
<if test="groupDeptUser != null">group_dept_user = #{groupDeptUser},</if>
<if test="groupDeptUserName != null">group_dept_user_name = #{groupDeptUserName},</if>
<if test="checkingDate != null">checking_date = #{checkingDate},</if>
<if test="checkingFiles != null">checking_files = #{checkingFiles},</if>
<if test="isDel != null">is_del = #{isDel},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteSurProjectCheckingById" parameterType="Long">
delete from sur_project_checking where id = #{id}
</delete>
<delete id="deleteSurProjectCheckingByIds" parameterType="String">
delete from sur_project_checking where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -8,6 +8,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="id" column="id" />
<result property="projectId" column="project_id" />
<result property="deptId" column="dept_id" />
<result property="specialType" column="special_type" />
<result property="specialTypeName" column="special_type_name" />
<result property="name" column="name" />
<result property="sex" column="sex" />
<result property="age" column="age" />
@ -29,13 +31,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectSurProjectWorkSpecialVo">
select id, project_id, dept_id, name, sex, age, phone_number, id_number, is_credential, credential_number, credential_expiration_time, credential_file, credential_type, is_del, create_by, create_time, update_by, update_time, remark from sur_project_work_special
select id, project_id, dept_id, special_type, name, sex, age, phone_number, id_number, is_credential, credential_number, credential_expiration_time, credential_file, credential_type, is_del, create_by, create_time, update_by, update_time, remark from sur_project_work_special
</sql>
<select id="selectSurProjectWorkSpecialList" parameterType="SurProjectWorkSpecial" resultMap="SurProjectWorkSpecialResult">
select spwp.id, spwp.project_id, spwp.dept_id, spwp.name, spwp.sex, spwp.age, spwp.phone_number, spwp.id_number, spwp.is_credential, spwp.credential_number, spwp.credential_expiration_time, spwp.credential_file, spwp.credential_type, spwp.is_del, spwp.create_by, spwp.create_time, spwp.update_by, spwp.update_time, spwp.remark, sp.projectName, sd.dept_name from sur_project_work_special spwp
select spwp.id, spwp.project_id, spwp.dept_id, spwp.special_type, sdd.dict_label as special_type_name, spwp.name, spwp.sex, spwp.age, spwp.phone_number, spwp.id_number, spwp.is_credential, spwp.credential_number, spwp.credential_expiration_time, spwp.credential_file, spwp.credential_type, spwp.is_del, spwp.create_by, spwp.create_time, spwp.update_by, spwp.update_time, spwp.remark, sp.projectName, sd.dept_name from sur_project_work_special spwp
left join sur_project sp on sp.id = spwp.project_id
left join sys_dept sd on sd.dept_id = spwp.dept_id
left join sys_dict_data sdd on sdd.dict_type = 'project_special_type' and sdd.dict_value = spwp.special_type
<where>
and spwp.is_del=0
<if test="projectId != null "> and spwp.project_id = #{projectId}</if>
@ -48,6 +51,63 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="params.beginCredentialExpirationTime != null and params.beginCredentialExpirationTime != '' and params.endCredentialExpirationTime != null and params.endCredentialExpirationTime != ''"> and spwp.credential_expiration_time between #{params.beginCredentialExpirationTime} and #{params.endCredentialExpirationTime}</if>
<if test="isDel != null and isDel != ''"> and spwp.is_del = #{isDel}</if>
<if test="credentialType != null and credentialType != ''"> and spwp.credential_type = #{credentialType}</if>
<if test="specialType != null and credentialType != ''"> and spwp.special_type = #{specialType}</if>
<!-- 查询条件-项目部门 -->
<if test="projectDeptId != null "> and sp.deptId = #{projectDeptId}</if>
<!--子部门数据-->
<if test='nowRole == "4"'> and sp.deptId = #{nowDept}</if>
<!--监理单位/总包公司/分包单位查询当前关联数据-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> and sp.id in (select DISTINCT spui.projectId from sur_project_unit_info spui where spui.unitId = #{nowDept})</if>
<if test='nowRole == "99"'> and sp.id in (select DISTINCT spu.project_id from sur_project_userinfo spu where spu.user_id = #{nowUser} and spu.is_del=0)</if>
<if test='activeName == "wgq"'> and date(spwp.credential_expiration_time) <![CDATA[ < ]]> date(NOW())</if>
<if test='activeName == "ygq"'> and date(spwp.credential_expiration_time) <![CDATA[ >= ]]> date(NOW())</if>
</where>
</select>
<select id="selectSurProjectWorkSpecialExpired" parameterType="SurProjectWorkSpecial" resultType="integer">
select count(1) as total from sur_project_work_special spwp
left join sur_project sp on sp.id = spwp.project_id
<where>
and spwp.is_del=0
and date(spwp.credential_expiration_time) <![CDATA[ < ]]> date(NOW())
<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>
<if test="projectName != null and projectName != ''"> and sp.projectName like concat('%', #{projectName}, '%')</if>
<if test="isCredential != null and isCredential != ''"> and spwp.is_credential = #{isCredential}</if>
<if test="phoneNumber != null and phoneNumber != ''"> and spwp.phone_number like concat('%', #{phoneNumber}, '%')</if>
<if test="credentialNumber != null and credentialNumber != ''"> and spwp.credential_number like concat('%', #{credentialNumber}, '%')</if>
<if test="params.beginCredentialExpirationTime != null and params.beginCredentialExpirationTime != '' and params.endCredentialExpirationTime != null and params.endCredentialExpirationTime != ''"> and spwp.credential_expiration_time between #{params.beginCredentialExpirationTime} and #{params.endCredentialExpirationTime}</if>
<if test="isDel != null and isDel != ''"> and spwp.is_del = #{isDel}</if>
<if test="credentialType != null and credentialType != ''"> and spwp.credential_type = #{credentialType}</if>
<if test="specialType != null and credentialType != ''"> and spwp.special_type = #{specialType}</if>
<!-- 查询条件-项目部门 -->
<if test="projectDeptId != null "> and sp.deptId = #{projectDeptId}</if>
<!--子部门数据-->
<if test='nowRole == "4"'> and sp.deptId = #{nowDept}</if>
<!--监理单位/总包公司/分包单位查询当前关联数据-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> and sp.id in (select DISTINCT spui.projectId from sur_project_unit_info spui where spui.unitId = #{nowDept})</if>
<if test='nowRole == "99"'> and sp.id in (select DISTINCT spu.project_id from sur_project_userinfo spu where spu.user_id = #{nowUser} and spu.is_del=0)</if>
</where>
</select>
<select id="selectSurProjectWorkSpecialNotExpired" parameterType="SurProjectWorkSpecial" resultType="integer">
select count(1) as total from sur_project_work_special spwp
left join sur_project sp on sp.id = spwp.project_id
<where>
and spwp.is_del=0
and date(spwp.credential_expiration_time) <![CDATA[ >= ]]> date(NOW())
<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>
<if test="projectName != null and projectName != ''"> and sp.projectName like concat('%', #{projectName}, '%')</if>
<if test="isCredential != null and isCredential != ''"> and spwp.is_credential = #{isCredential}</if>
<if test="phoneNumber != null and phoneNumber != ''"> and spwp.phone_number like concat('%', #{phoneNumber}, '%')</if>
<if test="credentialNumber != null and credentialNumber != ''"> and spwp.credential_number like concat('%', #{credentialNumber}, '%')</if>
<if test="params.beginCredentialExpirationTime != null and params.beginCredentialExpirationTime != '' and params.endCredentialExpirationTime != null and params.endCredentialExpirationTime != ''"> and spwp.credential_expiration_time between #{params.beginCredentialExpirationTime} and #{params.endCredentialExpirationTime}</if>
<if test="isDel != null and isDel != ''"> and spwp.is_del = #{isDel}</if>
<if test="credentialType != null and credentialType != ''"> and spwp.credential_type = #{credentialType}</if>
<if test="specialType != null and credentialType != ''"> and spwp.special_type = #{specialType}</if>
<!-- 查询条件-项目部门 -->
<if test="projectDeptId != null "> and sp.deptId = #{projectDeptId}</if>
<!--子部门数据-->
@ -123,6 +183,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectId != null">project_id,</if>
<if test="deptId != null">dept_id,</if>
<if test="specialType != null">special_type,</if>
<if test="name != null">name,</if>
<if test="sex != null">sex,</if>
<if test="age != null">age,</if>
@ -143,6 +204,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectId != null">#{projectId},</if>
<if test="deptId != null">#{deptId},</if>
<if test="specialType != null">#{specialType},</if>
<if test="name != null">#{name},</if>
<if test="sex != null">#{sex},</if>
<if test="age != null">#{age},</if>
@ -167,6 +229,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=",">
<if test="projectId != null">project_id = #{projectId},</if>
<if test="deptId != null">dept_id = #{deptId},</if>
<if test="specialType != null">special_type = #{specialType},</if>
<if test="name != null">name = #{name},</if>
<if test="sex != null">sex = #{sex},</if>
<if test="age != null">age = #{age},</if>

View File

@ -123,7 +123,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!--整改超时数-->
<select id="findProblemmodifyTimeoutCount" parameterType="SmzSspProblemmodify" resultType="Integer">
SELECT ssp.checkState,COUNT(ssp.id) total FROM smz_ssp_problemmodify ssp
SELECT COUNT(ssp.id) total FROM smz_ssp_problemmodify ssp
left join sur_project sp on ssp.projectId = sp.id
<!--监理单位/总包公司/分包单位-->
<if test='nowRole == "5" or nowRole == "6" or nowRole == "7"'> left join sur_project_unit_info spui on spui.projectId = sp.id</if>

View File

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yanzhu.jh.work.mapper.WorkJournalismMapper">
<resultMap type="WorkJournalism" id="WorkJournalismResult">
<result property="id" column="id" />
<result property="title" column="title" />
<result property="mainImage" column="main_image" />
<result property="intro" column="intro" />
<result property="content" column="content" />
<result property="type" column="type" />
<result property="source" column="source" />
<result property="openUrl" column="open_url" />
<result property="readNum" column="read_num" />
<result property="statusFlag" column="status_flag" />
<result property="topFlag" column="top_flag" />
<result property="files" column="files" />
<result property="sortNum" column="sort_num" />
<result property="isDel" column="is_del" />
<result property="createUser" column="create_user" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectWorkJournalismVo">
select id, title, main_image, intro, content, type, source, open_url, read_num, status_flag, top_flag, files, sort_num, is_del, create_user, create_by, create_time, update_by, update_time, remark from work_journalism
</sql>
<select id="selectWorkJournalismList" parameterType="WorkJournalism" resultMap="WorkJournalismResult">
<include refid="selectWorkJournalismVo"/>
<where>
<if test="title != null and title != ''"> and title like concat('%', #{title}, '%')</if>
<if test="statusFlag != null and statusFlag != ''"> and status_flag = #{statusFlag}</if>
<if test="topFlag != null and topFlag != ''"> and top_flag = #{topFlag}</if>
<if test="sortNum != null "> and sort_num = #{sortNum}</if>
<if test="isDel != null "> and is_del = #{isDel}</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if>
</where>
</select>
<select id="selectWorkJournalismById" parameterType="Long" resultMap="WorkJournalismResult">
<include refid="selectWorkJournalismVo"/>
where id = #{id}
</select>
<insert id="insertWorkJournalism" parameterType="WorkJournalism" useGeneratedKeys="true" keyProperty="id">
insert into work_journalism
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="title != null">title,</if>
<if test="mainImage != null">main_image,</if>
<if test="intro != null">intro,</if>
<if test="content != null">content,</if>
<if test="type != null">type,</if>
<if test="source != null">source,</if>
<if test="openUrl != null">open_url,</if>
<if test="readNum != null">read_num,</if>
<if test="statusFlag != null">status_flag,</if>
<if test="topFlag != null">top_flag,</if>
<if test="files != null">files,</if>
<if test="sortNum != null">sort_num,</if>
<if test="isDel != null">is_del,</if>
<if test="createUser != null">create_user,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="title != null">#{title},</if>
<if test="mainImage != null">#{mainImage},</if>
<if test="intro != null">#{intro},</if>
<if test="content != null">#{content},</if>
<if test="type != null">#{type},</if>
<if test="source != null">#{source},</if>
<if test="openUrl != null">#{openUrl},</if>
<if test="readNum != null">#{readNum},</if>
<if test="statusFlag != null">#{statusFlag},</if>
<if test="topFlag != null">#{topFlag},</if>
<if test="files != null">#{files},</if>
<if test="sortNum != null">#{sortNum},</if>
<if test="isDel != null">#{isDel},</if>
<if test="createUser != null">#{createUser},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateWorkJournalism" parameterType="WorkJournalism">
update work_journalism
<trim prefix="SET" suffixOverrides=",">
<if test="title != null">title = #{title},</if>
<if test="mainImage != null">main_image = #{mainImage},</if>
<if test="intro != null">intro = #{intro},</if>
<if test="content != null">content = #{content},</if>
<if test="type != null">type = #{type},</if>
<if test="source != null">source = #{source},</if>
<if test="openUrl != null">open_url = #{openUrl},</if>
<if test="readNum != null">read_num = #{readNum},</if>
<if test="statusFlag != null">status_flag = #{statusFlag},</if>
<if test="topFlag != null">top_flag = #{topFlag},</if>
<if test="files != null">files = #{files},</if>
<if test="sortNum != null">sort_num = #{sortNum},</if>
<if test="isDel != null">is_del = #{isDel},</if>
<if test="createUser != null">create_user = #{createUser},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteWorkJournalismById" parameterType="Long">
delete from work_journalism where id = #{id}
</delete>
<delete id="deleteWorkJournalismByIds" parameterType="String">
delete from work_journalism where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -16,6 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="beginDate" column="begin_date" />
<result property="endDate" column="end_date" />
<result property="trainContent" column="train_content" />
<result property="trainFile" column="train_file" />
<result property="isDel" column="is_del" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
@ -38,11 +39,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectWorkTrainVo">
select id, project_id, project_name, main_image, train_type, train_title,train_nature, train_participants, begin_date, end_date, train_content, is_del, create_by, create_time, update_by, update_time, remark from work_train
select id, project_id, project_name, main_image, train_type, train_title,train_nature, train_participants, begin_date, end_date, train_content, train_file, is_del, create_by, create_time, update_by, update_time, remark from work_train
</sql>
<select id="selectWorkTrainList" parameterType="WorkTrain" resultMap="WorkTrainResult">
select wt.id, wt.project_id, wt.project_name, wt.main_image, wt.train_type, wt.train_title, wt.train_nature, wt.train_participants, wt.begin_date, wt.end_date, wt.train_content, wt.is_del, wt.create_by, wt.create_time, wt.update_by, wt.update_time, wt.remark, group_concat(sd.dept_id) as trainDeptIds, group_concat(sd.dept_name) as trainDeptNames,
select wt.id, wt.project_id, wt.project_name, wt.main_image, wt.train_type, wt.train_title, wt.train_nature, wt.train_participants, wt.begin_date, wt.end_date, wt.train_content, wt.train_file, wt.is_del, wt.create_by, wt.create_time, wt.update_by, wt.update_time, wt.remark, group_concat(sd.dept_id) as trainDeptIds, group_concat(sd.dept_name) as trainDeptNames,
CASE
WHEN (
wt.create_by = #{nowUserName}
@ -85,7 +86,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectBgscreenWorkTrainList" parameterType="WorkTrain" resultMap="WorkTrainResult">
select wt.id, wt.project_id, wt.project_name, wt.main_image, wt.train_type, wt.train_title, wt.train_nature, sdd.dict_label as train_nature_name, wt.train_participants, wt.begin_date, wt.end_date, wt.train_content, wt.is_del, wt.create_by, wt.create_time, wt.update_by, wt.update_time, wt.remark, group_concat(sd.dept_id) as trainDeptIds, group_concat(sd.dept_name) as trainDeptNames
select wt.id, wt.project_id, wt.project_name, wt.main_image, wt.train_type, wt.train_title, wt.train_nature, sdd.dict_label as train_nature_name, wt.train_participants, wt.begin_date, wt.end_date, wt.train_content, wt.train_file, wt.is_del, wt.create_by, wt.create_time, wt.update_by, wt.update_time, wt.remark, group_concat(sd.dept_id) as trainDeptIds, group_concat(sd.dept_name) as trainDeptNames
from work_train wt
left join work_train_dept wtd on wtd.train_id = wt.id
left join sys_dept sd on sd.dept_id = wtd.dept_id
@ -106,7 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectBgscreenWorkTrainListv2" parameterType="WorkTrain" resultMap="WorkTrainResult">
select wt.id, wt.project_id, wt.project_name, wt.main_image, wt.train_type, wt.train_title, wt.train_nature, sdd.dict_label as train_nature_name, wt.train_participants, wt.begin_date, wt.end_date, wt.train_content, wt.is_del, wt.create_by, wt.create_time, wt.update_by, wt.update_time, wt.remark, group_concat(sd.dept_id) as trainDeptIds, group_concat(sd.dept_name) as trainDeptNames
select wt.id, wt.project_id, wt.project_name, wt.main_image, wt.train_type, wt.train_title, wt.train_nature, sdd.dict_label as train_nature_name, wt.train_participants, wt.begin_date, wt.end_date, wt.train_content, wt.train_file, wt.is_del, wt.create_by, wt.create_time, wt.update_by, wt.update_time, wt.remark, group_concat(sd.dept_id) as trainDeptIds, group_concat(sd.dept_name) as trainDeptNames
from work_train wt
left join work_train_dept wtd on wtd.train_id = wt.id
left join sys_dept sd on sd.dept_id = wtd.dept_id
@ -125,11 +126,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectWorkTrainById" parameterType="Long" resultMap="WorkTrainWorkTrainDeptResult">
select a.id, a.project_id, a.project_name, a.main_image, a.train_type, a.train_nature, a.train_participants, a.begin_date, a.end_date, a.train_content, a.is_del, a.create_by, a.create_time, a.update_by, a.update_time, a.remark,
select a.id, a.project_id, a.project_name, a.main_image, a.train_type, a.train_title, a.train_nature, a.train_participants, a.begin_date, a.end_date, a.train_content, a.train_file, a.is_del, a.create_by, a.create_time, a.update_by, a.update_time, a.remark,
b.train_id as sub_train_id, b.dept_id as sub_dept_id, b.is_main as sub_is_main
from work_train a
left join work_train_dept b on b.train_id = a.id and b.is_main ='N'
left join work_train_dept b on b.train_id = a.id
where a.id = #{id}
and b.is_main ='N'
</select>
<insert id="insertWorkTrain" parameterType="WorkTrain" useGeneratedKeys="true" keyProperty="id">
@ -145,6 +147,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="beginDate != null">begin_date,</if>
<if test="endDate != null">end_date,</if>
<if test="trainContent != null">train_content,</if>
<if test="trainFile != null">train_file,</if>
<if test="isDel != null">is_del,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
@ -163,6 +166,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="beginDate != null">#{beginDate},</if>
<if test="endDate != null">#{endDate},</if>
<if test="trainContent != null">#{trainContent},</if>
<if test="trainFile != null">#{trainFile},</if>
<if test="isDel != null">#{isDel},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
@ -185,6 +189,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="beginDate != null">begin_date = #{beginDate},</if>
<if test="endDate != null">end_date = #{endDate},</if>
<if test="trainContent != null">train_content = #{trainContent},</if>
<if test="trainFile != null">train_file = #{trainFile},</if>
<if test="isDel != null">is_del = #{isDel},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>