Files
cmanager/src/views/tenant/main/talents/personnelserve/index.vue

566 lines
15 KiB
Vue
Raw Normal View History

2024-05-27 11:39:50 +08:00
<template>
<el-row>
<basic-container>
<avue-crud
:option="option"
:table-loading="loading"
:data="dataSource"
:page.sync="page"
ref="crud"
v-model="crudValues"
:permission="permissionList"
@search-change="searchChange"
@search-reset="searchReset"
@current-change="currentChange"
@size-change="sizeChange"
class="customPage"
>
2024-06-05 14:47:10 +08:00
<template slot-scope="{row}" slot="menu">
2024-06-05 18:48:25 +08:00
<div>
<el-button type="text"
icon="el-icon-document"
size="small"
@click="serveLog(row)"
>查看日志
</el-button>
</div>
2024-06-05 14:47:10 +08:00
</template>
2024-05-27 11:39:50 +08:00
</avue-crud>
</basic-container>
2024-06-05 14:47:10 +08:00
<el-drawer
title="服务日志"
size="80%"
:append-to-body="true"
:before-close="handleCloseLog"
:visible.sync="innerDrawerLog">
<!-- <div>
<span>姓名</span>
<span>身份证号</span>
</div> -->
<avue-crud
:data="logDataSource"
:option="logOption"
:page.sync="logPage"
:table-loading="loadingLog"
@row-save="saveLog"
@row-update="saveUpdateLog"
@row-del="removeLog"
@size-change="logSizeChange"
@current-change="logCurrentChange"
>
<!-- <template slot="menuLeft">
<el-button @click="addNewLog" icon="el-icon-plus" type="primary" size="mini">添加</el-button>
</template>
<template slot="menu" slot-scope="{row}">
<el-button type="text" @click="editLogInfo(row.id)" icon="el-icon-edit" size="mini">修改</el-button>
<el-button type="text" @click="editLogInfo(row.id)" icon="el-icon-edit" size="mini">查看附件</el-button>
</template> -->
</avue-crud>
</el-drawer>
<el-drawer
title="新增"
size="60%"
:append-to-body="true"
:before-close="() => innerDrawerAddLog = false"
:visible.sync="innerDrawerAddLog">
<avue-form ref="form" :option="logOption" v-model="logValues" @submit="handleSubmitLog"/>
</el-drawer>
2024-05-27 11:39:50 +08:00
</el-row>
</template>
<script>
import {mapGetters} from "vuex";
import {getList} from "@/api/tenant/personnelserve";
2024-06-05 14:47:10 +08:00
import {isvalidatemobile} from "@/util/validate";
import {getDept, getDeptMyTree} from "@/api/tenant/talents";
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
2024-05-27 11:39:50 +08:00
const page = {
pageSize: 10,
currentPage: 1,
total: 0,
}
const baseOptions = {
size: 'medium',
dateBtn: false,
addBtn: false,
editBtn: false,
delBtn: false,
height: "auto",
2024-06-05 14:47:10 +08:00
menuWidth: 130,
2024-05-27 11:39:50 +08:00
reserveSelection: false,
border: true,
columnBtn: false,
refreshBtn: false,
menu: true,
tip: false,
selection: false,
align: 'center',
searchMenuSpan: 6,
searchLabelWidth: 60,
}
export default {
2024-06-05 14:47:10 +08:00
filters: {
ellipsis(value) {
if (!value) return "";
if (value.length > 15) {
return value.slice(0, 14) + "...";
}
return value;
},
},
2024-05-27 11:39:50 +08:00
data() {
return {
loading: false,
dataSource: [],
crudValues: {},
2024-06-05 14:47:10 +08:00
depTree: [],
page: Object.assign({}, page),
treeData: [],
logPage: Object.assign({}, page),
logDataSource: [],
loadingLog: false,
innerDrawerLog: false,
innerDrawerAddLog: false,
logValues: {}
2024-05-27 11:39:50 +08:00
}
},
computed: {
2024-06-05 14:47:10 +08:00
...mapGetters(["permission", "userInfo"]),
2024-05-27 11:39:50 +08:00
permissionList() {
return {
addBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_add, false),
viewBtn: true,
delBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_del, false),
editBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_edit, false),
};
},
option() {
2024-06-05 14:47:10 +08:00
const self = this;
const IdCardNo = (rule, value, callback) => {
// if (check18IdCardNo(value)) {
callback();
// } else {
// callback(new Error("身份证格式不正确"));
// }
};
const validateTel = (rule, value, callback) => {
if (isvalidatemobile(value)[0]) {
callback(new Error(isvalidatemobile(value)[1]));
} else {
callback();
}
};
2024-05-27 11:39:50 +08:00
return {
...baseOptions,
column: [
2024-06-05 14:47:10 +08:00
{
label: "所属机构",
prop: "createDept",
type: "tree",
multiple: false,
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
span: 24,
search: true,
searchLabelWidth: 80,
change: this.deptChange
},
2024-05-27 11:39:50 +08:00
{
label: "姓名",
prop: "name",
2024-06-05 14:47:10 +08:00
// search: true,
span: 24,
rules: [
{
required: true,
whitespace: true,
message: "请输入姓名",
trigger: "blur",
},
],
2024-05-27 11:39:50 +08:00
search: true,
2024-06-05 14:47:10 +08:00
},
{
label: "姓别",
prop: "aac004",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC004",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入性别",
trigger: "blur",
},
],
span: 24,
2024-05-27 11:39:50 +08:00
},
{
label: "身份证",
prop: "idNumber",
2024-06-05 14:47:10 +08:00
// hide: true,
span: 24,
rules: [
{required: true, message: "请输入身份证号", trigger: "blur"},
{trigger: "blur", validator: IdCardNo},
],
2024-05-27 11:39:50 +08:00
search: true,
},
{
label: "手机号",
2024-06-05 14:47:10 +08:00
prop: "telphone",
span: 24,
hide: false,
rules: [
{
required: true,
validator: validateTel,
trigger: "blur",
},
],
},
{
label: "民族",
prop: "aac005",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC005",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入民族",
trigger: "blur",
},
],
span: 24,
},
{
label: "户口性质",
prop: "aac009",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC009",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入户口性质",
trigger: "blur",
},
],
span: 24,
},
{
label: "户口所在地",
prop: "aac010",
// hide: true,
span: 24,
rules: [
{required: true, message: "请输入口所在地", trigger: "blur"},
],
},
{
label: "文化程度",
prop: "aac011",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC011",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入文化程度",
trigger: "blur",
},
],
span: 24,
},
{
label: "备注",
prop: "remarks",
type: "textarea",
slot: true,
hide: true,
span: 24,
maxlength: 100,
showWordLimit: true,
},
],
}
},
logOption() {
return {
editBtn: true,
delBtn: true,
2024-06-12 15:27:14 +08:00
addBtn: false,
2024-06-05 14:47:10 +08:00
viewBtn: true,
border: true,
index: true,
indexLabel: "序号",
refreshBtn: false,
dialogType: "drawer",
addBtnText: "新增日志",
height: '100',
column: [{
label: '服务时间',
prop: 'createTime',
type: 'date',
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd HH:mm:ss",
2024-06-06 11:30:25 +08:00
rules: [
{
required: true,
message: "请选择服务时间",
trigger: "blur",
},
],
2024-06-05 14:47:10 +08:00
}, {
label: '服务发起人',
prop: 'fromName',
display: false,
}, {
label: '服务对象',
prop: 'toName',
display: false,
}, {
label: '服务主题',
2024-06-06 11:30:25 +08:00
prop: 'serveTheme',
rules: [
{
required: true,
message: "请输入服务主题",
trigger: "blur",
},
],
2024-06-05 14:47:10 +08:00
}, {
label: '服务内容',
2024-06-06 11:30:25 +08:00
type: 'textarea',
prop: 'serveContent',
span: 24,
rules: [
{
required: true,
message: "请输入服务内容",
trigger: "blur",
},
],
2024-06-05 14:47:10 +08:00
}, {
label: '备注说明',
2024-06-06 11:30:25 +08:00
type: 'textarea',
prop: 'bak1',
span: 24,
2024-06-05 14:47:10 +08:00
}]
2024-05-27 11:39:50 +08:00
}
}
},
2024-06-05 14:47:10 +08:00
created() {
this.getDept()
this.initDept()
this.onLoad(this.page, this.query)
},
2024-06-12 15:27:14 +08:00
activated() {
this.$nextTick(() => {
this.$refs.crud.refreshTable()
})
},
2024-05-27 11:39:50 +08:00
methods: {
2024-06-05 14:47:10 +08:00
async getDept() {
let params = {
tenantId: '000000'
}
let resData = await getDeptMyTree(params)
if (resData.data.code === 200) {
this.depTree = resData.data.data
}
},
initDept(groupId) {
getDept({groupType: 0}).then((res) => {
const data = res.data.data.list;
this.treeData = data;
let treeDataOne = {
companyId: "",
createTime: "",
groupName: "全部",
id: "",
remarks: "",
sort: '',
sumNum: res.data.data.sum,
type: '',
};
this.treeData.unshift(treeDataOne);
this.loading = false;
});
},
2024-05-27 11:39:50 +08:00
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page, this.query);
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad(this.page, this.query);
},
2024-06-05 14:47:10 +08:00
logSizeChange(pageSize) {
this.logPage.pageSize = pageSize;
this.serveLog(this.selectUserServeLog);
},
logCurrentChange(currentPage) {
this.logPage.currentPage = currentPage;
this.serveLog(this.selectUserServeLog);
},
2024-05-27 11:39:50 +08:00
onLoad(page, params = {}) {
const {releaseTimeRange} = params;
2024-06-05 14:47:10 +08:00
let paramsed = {
2024-06-05 21:24:49 +08:00
current: page.currentPage,
2024-06-05 14:47:10 +08:00
pageSize: page.pageSize,
...this.query
2024-05-27 11:39:50 +08:00
};
this.loading = true;
2024-06-05 14:47:10 +08:00
getList(paramsed).then((res) => {
const {total, size, current, records, page} = res.data.data
2024-05-27 11:39:50 +08:00
this.dataSource = records;
this.loading = false;
2024-06-05 14:47:10 +08:00
this.page = {
pageSize: size,
currentPage: current,
total: total,
}
2024-05-27 11:39:50 +08:00
});
},
2024-06-05 14:47:10 +08:00
serveLog(row) {
console.log('服务日志', row)
this.selectUserServeLog = row
this.loadingLog = true
getMainServeUserLog({
idNumber: row.idNumber,
current: this.logPage.currentPage,
size: this.logPage.pageSize
}).then(res => {
this.loadingLog = false
const {records, current, size, total} = res.data.data
this.logDataSource = records
this.innerDrawerLog = true
this.logPage = {
pageSize: size,
currentPage: current,
total: total,
}
})
},
async handleSubmitLog(row, done) {
let params = {
...row,
serveId: this.selectUserServeLog.serveId,
serveUserId: this.selectUserServeLog.serveUserId,
talentsId: this.selectUserServeLog.id,
idNumber: this.selectUserServeLog.idNumber,
toName: this.selectUserServeLog.name,
fromName: this.userInfo.real_name
}
console.log(params)
let resData = await addServeLog(params)
done()
if (resData.data.code === 200) {
this.$message({
type: "success",
message: "添加成功!",
});
this.innerDrawerAddLog = false
}
},
async saveLog(row, index, done, loading) {
let params = {
...row,
serveId: this.selectUserServeLog.serveId,
serveUserId: this.selectUserServeLog.serveUserId,
talentsId: this.selectUserServeLog.id,
idNumber: this.selectUserServeLog.idNumber,
toName: this.selectUserServeLog.name,
fromName: this.userInfo.real_name
}
console.log(params)
let resData = await addServeLog(params)
done()
if (resData.data.code === 200) {
this.$message({
type: "success",
message: "添加成功!",
});
this.serveLog(this.selectUserServeLog)
}
},
async saveUpdateLog(row, index, done, loading) {
let params = {
id: row.id,
createTime: row.createTime,
fromName: row.fromName,
toName: row.toName,
serveTheme: row.serveTheme,
serveContent: row.serveContent,
bak1: row.bak1,
}
let resData = await updateServeLog(params)
done()
if (resData.data.code === 200) {
this.$message({
type: "success",
message: "修改成功!",
});
this.serveLog(this.selectUserServeLog)
}
},
removeLog(row, index, done, loading) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
return removeServeLog({ids: row.id});
})
.then(() => {
this.serveLog(this.selectUserServeLog)
this.$message({
type: "success",
message: "操作成功!",
});
});
},
handleCloseLog() {
this.innerDrawerLog = false
},
2024-05-27 11:39:50 +08:00
}
}
</script>
<style lang="scss" scoped>
</style>