This commit is contained in:
Apcallover
2024-02-25 17:01:27 +08:00
parent 7eb9d5e3c1
commit f3c2304c2d
3 changed files with 226 additions and 67 deletions

View File

@@ -51,15 +51,15 @@
<!--搜索栏-->
<el-form size="small" label-position="right" :inline="true" style="padding-left: 10px; padding-right: 10px">
<el-row :span="24">
<el-form-item label="名:">
<el-input v-model="query.name" placeholder="名" clearable></el-input>
</el-form-item>
<el-form-item label="工种:">
<el-select v-model="query.worktypes" placeholder="工种" style="width: 100%" filterable clearable>
<el-option v-for="(item, key, index) in worktypeData" :key="index" :label="item.name"
:value="item.name"></el-option>
</el-select>
<el-form-item label="服务名:">
<el-input v-model="query.name" placeholder="服务名" clearable></el-input>
</el-form-item>
<!-- <el-form-item label="工种:">-->
<!-- <el-select v-model="query.worktypes" placeholder="工种" style="width: 100%" filterable clearable>-->
<!-- <el-option v-for="(item, key, index) in worktypeData" :key="index" :label="item.name"-->
<!-- :value="item.name"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<div class="searchBtn">
<el-button type="primary" size="small" icon="el-icon-search" @click="searchChange1"> </el-button>
@@ -87,7 +87,7 @@
</div>
</template>
<!--/自定义列-->
<template slot="worktypesForm">
<template slot="serveLabelsForm">
<tag-select v-model="selectedWorkTypes" :prop="{ label: 'name', value: 'name' }" :data="worktypeData">
</tag-select>
</template>
@@ -107,8 +107,45 @@
</template>
<!--/自定义按钮-->
<template slot-scope="{row,index}" slot="menu">
<el-button type="text"
icon="el-icon-document"
size="small"
@click="showKeyAudience(row)"
>重点人群详情</el-button>
</template>
<!--/父子表-->
</avue-crud>
<!-- / 重点人群详情 -->
<el-dialog title="重点人群详情" :visible.sync="visibleAudience" :close-on-click-modal="false" append-to-body width="70%">
<avue-crud
:data="infoData"
:option="infoOption"
:page.sync="infoPage"
@size-change="infoSizeChange"
@current-change="infoCurrentChange"
>
<template slot-scope="{row,index}" slot="menu">
<el-button type="text"
icon="el-icon-document"
size="small"
@click=""
>查看服务</el-button>
<el-button type="text"
icon="el-icon-document"
size="small"
@click=""
>查看政策</el-button>
<el-button type="text"
icon="el-icon-document"
size="small"
@click=""
>查看日志</el-button>
</template>
</avue-crud>
</el-dialog>
<!--批量导入-->
<el-dialog title="导入" append-to-body :visible.sync="excelBox" :close-on-click-modal="false" width="555px">
<avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter"
@@ -145,6 +182,7 @@ import {
getDept,
removeDept,
upload,
getServeListTalents
} from "@/api/tenant/serve";
import { getWorkTypes } from "@/api/tenant/common";
import { mapGetters } from "vuex";
@@ -155,7 +193,11 @@ import { check18IdCardNo, isvalidatemobile, isExcel } from "@/util/validate";
import { getTemplate } from "@/api/resource/template";
import ied from "@/views/util/import-error-dialog";
import { excelAccept } from "@/common/accept";
const page = {
pageSize: 10,
currentPage: 1,
total: 0,
}
export default {
filters: {
ellipsis(value) {
@@ -184,11 +226,7 @@ export default {
personTotal: 0,
treeData: [],
tenantId: "",
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
page: Object.assign({} ,page),
tempWorkType: [],
worktypeDic: {},
arr: [],//////
@@ -221,6 +259,10 @@ export default {
},
excelBox: false,
data: [],
visibleAudience: false,
selectInfo: null,
infoData: [],
infoPage: Object.assign({} ,page),
obj: {},
excelForm: { isCovered: 1 },
};
@@ -297,7 +339,7 @@ export default {
dialogClickModal: false,
column: [
{
label: "名",
label: "服务名",
prop: "name",
// search: true,
span: 24,
@@ -311,29 +353,29 @@ export default {
],
slot: true
},
{
label: "身份证",
prop: "idNumber",
hide: true,
span: 24,
rules: [
{ required: true, message: "请输入身份证号", trigger: "blur" },
{ trigger: "blur", validator: IdCardNo },
],
},
{
label: "手机号",
prop: "telphone",
span: 24,
hide: true,
rules: [
{
required: true,
validator: validateTel,
trigger: "blur",
},
],
},
// {
// label: "身份证",
// prop: "idNumber",
// hide: true,
// span: 24,
// rules: [
// { required: true, message: "请输入身份证号", trigger: "blur" },
// { trigger: "blur", validator: IdCardNo },
// ],
// },
// {
// label: "手机号",
// prop: "telphone",
// span: 24,
// hide: true,
// rules: [
// {
// required: true,
// validator: validateTel,
// trigger: "blur",
// },
// ],
// },
{
label: "用户类型",
prop: "userId",
@@ -352,6 +394,18 @@ export default {
hide: true,
// search: true
},
{
label: "标签",
prop: "serveLabels",
rules: [
{
required: true,
message: "请选择标签",
trigger: ["blur"],
},
],
formslot: true,
},
{
label: "分组",
prop: "groupId",
@@ -372,20 +426,20 @@ export default {
],
placeholder: "请选择 分组",
},
{
label: "工种",
prop: "worktypes",
rules: [
{
required: true,
message: "请选择工种",
trigger: ["blur"],
},
],
slot: true,
formslot: true,
span: 24,
},
// {
// label: "工种",
// prop: "worktypes",
// rules: [
// {
// required: true,
// message: "请选择工种",
// trigger: ["blur"],
// },
// ],
// slot: true,
// formslot: true,
// span: 24,
// },
// {
// label: "简历",
// prop: "resume",
@@ -405,13 +459,58 @@ export default {
],
};
},
infoOption() {
return {
editBtn: false,
delBtn: false,
addBtn: false,
refreshBtn: false,
height: '100',
column: [
{
label: "社区街道名称",
prop: "companyName",
},
{
label: "姓名",
prop: "name",
},
{
label: "身份证",
prop: "idNumber",
},
{
label: "手机号",
prop: "telphone",
},
{
label: "用户类型",
prop: "userId",
},
{
label: "分组",
prop: "groupId",
},
{
label: "标签",
prop: "labelsBase",
},
{
label: "备注",
prop: "remarks",
},
]
}
},
selectedWorkTypes: {
get() {
if (!this.obj.worktypes) {
if (!this.obj.serveLabels) {
return [];
}
const result = [];
const wt = this.obj.worktypes.split(",");
const wt = this.obj.serveLabels.split(",");
wt.forEach((item) => {
result.push({ name: item });
});
@@ -422,7 +521,7 @@ export default {
val.forEach((item) => {
arr.push(item.name);
});
this.obj.worktypes = arr.join(",");
this.obj.serveLabels = arr.join(",");
},
},
worktypeData() {
@@ -452,10 +551,57 @@ export default {
this.getWorkTypes();
},
methods: {
showKeyAudience(row) {
this.selectInfo = row
this.getKeyAudience({
id: row.id
})
},
getKeyAudience(params) {
const _this = this
return getServeListTalents(params).then((res) => {
if(res.data.code === 200) {
const {records, current, size, total} = res.data.data
_this.infoData = records
_this.visibleAudience = true
_this.infoPage = {
pageSize: size,
currentPage: current,
total: total,
}
}
})
},
infoSizeChange(pageSize) {
const {currentPage, total} = this.infoPage
this.getKeyAudience({
pageSize: pageSize,
currentPage: currentPage,
total: total,
id: this.selectInfo.id
})
},
infoCurrentChange(currentPage) {
const { pageSize, total} = this.infoPage
this.getKeyAudience({
pageSize: pageSize,
currentPage: currentPage,
total: total,
id: this.selectInfo.id
})
},
infoRefreshChange() {
const { currentPage, pageSize, total} = this.infoPage
this.getKeyAudience({
pageSize: pageSize,
currentPage: currentPage,
total: total,
id: this.selectInfo.id
})
},
getWorkTypes() {
getWorkTypes().then((res) => {
getWorkTypes(1).then((res) => {
for (let i = 0; i < res.data.data.length; i++) {
const element = res.data.data[i];
this.worktypeDic[element.name] = 1;
@@ -600,7 +746,8 @@ export default {
detail(this.obj.id).then(
(res) => {
this.obj = res.data.data;
this.tempWorkType = this.obj.worktypes.split(",");
// this.tempWorkType = this.obj.worktypes.split(",");
this.tempWorkType = []
done();
},
(error) => {
@@ -619,9 +766,10 @@ export default {
add({
groupId: row.groupId,
name: row.name,
idNumber: row.idNumber,
telphone: row.telphone,
worktypes: row.worktypes,
serveLabels: row.serveLabels,
// idNumber: row.idNumber,
// telphone: row.telphone,
// worktypes: row.worktypes,
remarks: row.remarks,
}).then(
() => {
@@ -644,9 +792,10 @@ export default {
id: row.id,
groupId: row.groupId,
name: row.name,
idNumber: row.idNumber,
telphone: row.telphone,
worktypes: row.worktypes,
serveLabels: row.serveLabels,
// idNumber: row.idNumber,
// telphone: row.telphone,
// worktypes: row.worktypes,
remarks: row.remarks,
}).then(
() => {