master
xy 1 year ago
parent 7edbcc0c91
commit 571f4123f8

@ -3,12 +3,16 @@
<el-card shadow="never" style="margin-top: 20px">
<template #header>
<slot name="header">
<vxe-toolbar
:export="isHasAuth('export')"
:print="isHasAuth('print')"
custom
ref="toolbar"
>
<vxe-toolbar :print="isHasAuth('print')" custom ref="toolbar">
<template #toolSuffix>
<vxe-button
style="margin-right: 10px"
v-if="isHasAuth('export')"
icon="vxe-icon-download"
circle
@click="exportMethod"
></vxe-button>
</template>
<template #buttons>
<el-button
v-if="isHasAuth('create')"
@ -78,6 +82,7 @@
:align="allAlign"
:data="tableData"
>
<vxe-column type="checkbox" width="50" align="center" />
<vxe-column type="seq" width="58" align="center" />
<vxe-column
@ -88,6 +93,15 @@
:edit-render="{ name: 'input', attrs: { type: 'text' } }"
/>
<vxe-column
header-align="center"
align="right"
field="group"
width="160"
title="分组"
:edit-render="{ name: 'input', attrs: { type: 'number' } }"
/>
<vxe-column
field="operate"
header-align="center"
@ -170,6 +184,7 @@ import VxeUI from "vxe-pc-ui";
import { authMixin } from "@/mixin/authMixin";
import { uploadSize } from "@/settings";
import { deepCopy } from "@/utils";
import { download } from "@/utils/downloadRequest";
import { destroy, index, save } from "@/api/area/area";
import AddArea from "./components/AddArea.vue";
import ShowArea from "./components/ShowArea.vue";
@ -205,6 +220,8 @@ export default {
id: "",
name: "",
group: "",
},
validRules: {},
};
@ -231,6 +248,27 @@ export default {
this.calcTableHeight();
},
methods: {
exportMethod() {
this.$confirm("请选择导出方式", "提示", {
confirmButtonText: "全量导出",
cancelButtonText: "部分导出",
distinguishCancelAndClose: true,
})
.then((_) => {
download("/api/admin/school/index", "get", {
...this.select,
page: 1,
page_size: 9999,
is_export: 1,
export_fields: Object.keys(this.form),
});
})
.catch((action) => {
if (action === "cancel" && this.$refs["table"]) {
this.$refs["table"].openExport();
}
});
},
calcTableHeight() {
let clientHeight = document.documentElement.clientHeight;
let cardTitle = document

@ -28,6 +28,17 @@
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="分组" prop="group">
<el-input-number
v-model="form['group']"
clearable
placeholder="请填写分组"
:precision="2"
controls-position="right"
style="width: 100%"
></el-input-number>
</el-form-item>
</div>
</el-form>
@ -66,6 +77,8 @@ export default {
visible: false,
form: {
name: "",
group: "",
},
rules: {},
};
@ -122,6 +135,8 @@ export default {
reset() {
this.form = {
name: "",
group: "",
};
this.$refs["elForm"].resetFields();
},

@ -21,6 +21,14 @@
<el-descriptions-item label="名称">
{{ form["name"] }}
</el-descriptions-item>
<el-descriptions-item label="分组">
{{
typeof form["group"] === "number"
? form["group"].toFixed(2)
: form["group"]
}}
</el-descriptions-item>
</el-descriptions>
</section>
</el-drawer>
@ -45,6 +53,8 @@ export default {
visible: false,
form: {
name: "",
group: "",
},
};
},

@ -95,16 +95,33 @@
<vxe-column
align="center"
field="area_id"
field="group"
width="180"
title="区域"
:edit-render="{
name: 'VxeSelect',
options: area,
props: { multiple: false },
optionProps: { value: 'id', label: 'name' },
}"
/>
title="区域分组"
:edit-render="{}"
>
<template #edit="{ row }">
<el-select size="small" v-model="row.group">
<el-option
v-for="(group, groupId) in area"
:key="groupId"
:value="group.map(i => i.name).toString()"
:label="group.map(i => i.name).toString()"></el-option>
</el-select>
</template>
</vxe-column>
<!-- <vxe-column-->
<!-- align="center"-->
<!-- field="area_id"-->
<!-- width="180"-->
<!-- title="区域"-->
<!-- :edit-render="{-->
<!-- name: 'VxeSelect',-->
<!-- options: area,-->
<!-- props: { multiple: false },-->
<!-- optionProps: { value: 'id', label: 'name' },-->
<!-- }"-->
<!-- />-->
<vxe-column
align="center"
@ -291,19 +308,13 @@ export default {
tableData: [],
form: {
id: "",
name: "",
group: "",
area_id: "",
year: "",
title: "",
remark: "",
tip: "",
need_sign: "",
},
validRules: {
@ -431,7 +442,14 @@ export default {
},
false
);
this.area = res.data;
this.area = res.data?.reduce((acc, item) => {
const key = item.group;
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(item);
return acc;
}, {})
} catch (err) {
console.error(err);
}

@ -29,18 +29,18 @@
></el-input>
</el-form-item>
<el-form-item label="区域" prop="area_id" clearable>
<el-form-item label="区域分组" prop="group" clearable>
<el-select
v-model="form['area_id']"
v-model="form['group']"
clearable
placeholder="请填写区域"
placeholder="请填写区域分组"
style="width: 100%"
>
<el-option
v-for="(option, optionIndex) in area"
:key="optionIndex"
:label="option['name']"
:value="option['id']"
v-for="(group, groupId) in area"
:key="groupId"
:label="group.map(i => i.name).toString()"
:value="group.map(i => i.name).toString()"
></el-option>
</el-select>
</el-form-item>
@ -136,7 +136,7 @@ export default {
},
area: {
type: Array,
type: [Array, Object],
default: () => [],
},
},
@ -148,17 +148,12 @@ export default {
visible: false,
form: {
name: "",
group: "",
area_id: "",
year: "",
title: "",
remark: "",
tip: "",
need_sign: "",
},
rules: {
@ -237,17 +232,12 @@ export default {
reset() {
this.form = {
name: "",
area_id: "",
group: "",
year: "",
title: "",
remark: "",
tip: "",
need_sign: "",
};
this.$refs["elForm"].resetFields();

@ -22,11 +22,9 @@
{{ form["name"] }}
</el-descriptions-item>
<el-descriptions-item label="区域">
<el-descriptions-item label="区域分组">
{{
area.find((i) => i["id"] === form["area_id"])
? area.find((i) => i["id"] === form["area_id"])["name"]
: ""
form['"group']
}}
</el-descriptions-item>
@ -78,7 +76,7 @@ export default {
},
area: {
type: Array,
type: [Array, Object],
default: () => [],
},
},

@ -79,10 +79,79 @@
isHover: true,
autoClear: false,
}"
:expand-config="{
padding: true,
}"
:align="allAlign"
:data="tableData"
>
<vxe-column type="checkbox" width="50" align="center" />
<vxe-column type="expand" title="推荐学校" width="80" align="center">
<template #content="{ row }">
<div class="recommend">
<div
v-for="(value, key) in {
top: '冲',
steady: '稳',
safeguard: '保',
}"
style="margin-bottom: 20px;"
>
<div class="recommend-panel__title" style="font-weight: 600;line-height: 2;">
{{ value }}推荐学校
</div>
<vxe-table style="width: 520px;" size="mini" stripe :max-height="400" :data="row.recommends[key]">
<vxe-column
header-align="center"
field="name"
width="120"
title="学校名称"
:edit-render="{ name: 'input', attrs: { type: 'text' } }"
/>
<vxe-column
align="center"
field="area_id"
width="100"
title="区域"
:edit-render="{
name: 'VxeSelect',
options: area,
props: { multiple: false },
optionProps: { value: 'id', label: 'name' },
}"
/>
<vxe-column
header-align="center"
field="code"
width="100"
title="学校代码"
align="center"
:edit-render="{ name: 'input', attrs: { type: 'text' } }"
/>
<vxe-column
header-align="center"
field="star"
width="80"
title="星级"
align="center"
:edit-render="{ name: 'input', attrs: { type: 'text' } }"
/>
<vxe-column
align="center"
field="type"
width="120"
title="学校类型"
/>
</vxe-table>
</div>
</div>
</template>
</vxe-column>
<vxe-column type="seq" width="58" align="center" />
<vxe-column

@ -3,12 +3,16 @@
<el-card shadow="never" style="margin-top: 20px">
<template #header>
<slot name="header">
<vxe-toolbar
:export="isHasAuth('export')"
:print="isHasAuth('print')"
custom
ref="toolbar"
>
<vxe-toolbar :print="isHasAuth('print')" custom ref="toolbar">
<template #toolSuffix>
<vxe-button
style="margin-right: 10px"
v-if="isHasAuth('export')"
icon="vxe-icon-download"
circle
@click="exportMethod"
></vxe-button>
</template>
<template #buttons>
<el-button
v-if="isHasAuth('create')"
@ -78,8 +82,31 @@
:align="allAlign"
:data="tableData"
>
<vxe-column type="checkbox" width="50" align="center" />
<vxe-column type="seq" width="58" align="center" />
<vxe-column
header-align="center"
field="white"
width="140"
align="center"
title="是否填报白名单"
:cell-render="{
name: 'VxeSwitch',
props: {
'open-value': 1,
'close-value': 0,
'open-label': '是',
'close-label': '否'
},
events: {
change: ({ row }) => {
saveRow(row)
}
}
}"
/>
<vxe-column
header-align="center"
field="nickname"
@ -174,8 +201,18 @@
field="middle_exam_year"
width="180"
title="中考年份"
:edit-render="{ name: 'VxeDatePicker', props: { type: 'year' } }"
/>
:edit-render="{}"
>
<template #edit="{ row }">
<el-date-picker
v-model="row['middle_exam_year']"
style="width: 100%"
size="small"
type="year"
value-format="yyyy-MM-dd"
></el-date-picker>
</template>
</vxe-column>
<vxe-column
header-align="center"
@ -275,6 +312,7 @@ import VxeUI from "vxe-pc-ui";
import { authMixin } from "@/mixin/authMixin";
import { uploadSize } from "@/settings";
import { deepCopy } from "@/utils";
import { download } from "@/utils/downloadRequest";
import { destroy, index, save } from "@/api/user/user";
import AddUser from "./components/AddUser.vue";
import ShowUser from "./components/ShowUser.vue";
@ -309,6 +347,8 @@ export default {
form: {
id: "",
white: "",
nickname: "",
openid: "",
@ -372,6 +412,27 @@ export default {
this.calcTableHeight();
},
methods: {
exportMethod() {
this.$confirm("请选择导出方式", "提示", {
confirmButtonText: "全量导出",
cancelButtonText: "部分导出",
distinguishCancelAndClose: true,
})
.then((_) => {
download("/api/admin/school/index", "get", {
...this.select,
page: 1,
page_size: 9999,
is_export: 1,
export_fields: Object.keys(this.form),
});
})
.catch((action) => {
if (action === "cancel" && this.$refs["table"]) {
this.$refs["table"].openExport();
}
});
},
calcTableHeight() {
let clientHeight = document.documentElement.clientHeight;
let cardTitle = document
@ -478,6 +539,26 @@ export default {
}
},
async saveRow(row) {
try {
const errMap = await this.$refs["table"].validate();
if (errMap) {
throw new Error(errMap);
}
await this.$refs["table"].clearEdit();
let form = deepCopy(this.form);
for (const key in form) {
form[key] = row[key];
}
this.loading = true;
await save(form, false);
await this.getList();
this.loading = false;
} catch (err) {
this.loading = false;
}
},
async saveRowEvent(row) {
if (window.$_uploading) {
this.$message.warning("文件正在上传中");

@ -1,183 +1,104 @@
<template>
<div>
<el-drawer
:title="$route.meta.title"
direction="rtl"
size="68%"
:visible.sync="visible"
append-to-body
:before-close="handleClose"
@close="$emit('update:isShow', false)"
>
<section class="drawer-container">
<el-form
class="drawer-container__form"
ref="elForm"
:model="form"
:rules="rules"
label-position="top"
label-width="120px"
size="small"
>
<div class="form-layout">
<el-form-item label="昵称" prop="nickname">
<el-input
v-model="form['nickname']"
clearable
placeholder="请填写昵称"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="openid" prop="openid">
<el-input
v-model="form['openid']"
clearable
placeholder="请填写openid"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="头像地址" prop="headimgurl">
<el-input
v-model="form['headimgurl']"
clearable
placeholder="请填写头像地址"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="手机号" prop="mobile">
<el-input
v-model="form['mobile']"
clearable
placeholder="请填写手机号"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="性别" prop="sex" clearable>
<el-select
v-model="form['sex']"
clearable
placeholder="请填写性别"
style="width: 100%"
>
<el-option
v-for="(option, optionIndex) in [
{ value: '男', label: '男' },
{ value: '女', label: '女' },
{ value: '保密', label: '保密' },
]"
:key="optionIndex"
:label="option['label']"
:value="option['value']"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="区县" prop="area">
<el-input
v-model="form['area']"
clearable
placeholder="请填写区县"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="省份" prop="province">
<el-input
v-model="form['province']"
clearable
placeholder="请填写省份"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="城市" prop="city">
<el-input
v-model="form['city']"
clearable
placeholder="请填写城市"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="学生姓名" prop="name">
<el-input
v-model="form['name']"
clearable
placeholder="请填写学生姓名"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="年级" prop="grade">
<el-input
v-model="form['grade']"
clearable
placeholder="请填写年级"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="中考年份" prop="middle_exam_year" clearable>
<el-date-picker
v-model="form['middle_exam_year']"
clearable
placeholder="请填写中考年份"
type="year"
value-format="yyyy-MM-dd"
style="width: 100%"
></el-date-picker>
</el-form-item>
<el-form-item label="民族" prop="nationality">
<el-input
v-model="form['nationality']"
clearable
placeholder="请填写民族"
style="width: 100%"
></el-input>
</el-form-item>
<el-form-item label="学校" prop="school">
<el-input
v-model="form['school']"
clearable
placeholder="请填写学校"
style="width: 100%"
></el-input>
</el-form-item>
</div>
</el-form>
<div class="drawer-container__footer">
<el-button @click="reset"> </el-button>
<el-button type="primary" @click="submit" :loading="loading">{{
loading ? "提交中 ..." : "确 定"
}}</el-button>
</div>
</section>
</el-drawer>
</div>
<template>
<div>
<el-drawer
:title="$route.meta.title"
direction="rtl"
size="68%"
:visible.sync="visible"
append-to-body
:before-close="handleClose"
@close="$emit('update:isShow',false)">
<section class="drawer-container">
<el-form class="drawer-container__form" ref="elForm" :model="form" :rules="rules" label-position="top" label-width="120px" size="small">
<div class="form-layout">
<el-form-item label="是否填报白名单" prop="white">
<el-input v-model="form['white']" clearable placeholder="请填写是否填报白名单" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="昵称" prop="nickname">
<el-input v-model="form['nickname']" clearable placeholder="请填写昵称" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="openid" prop="openid">
<el-input v-model="form['openid']" clearable placeholder="请填写openid" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="头像地址" prop="headimgurl">
<el-input v-model="form['headimgurl']" clearable placeholder="请填写头像地址" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="手机号" prop="mobile">
<el-input v-model="form['mobile']" clearable placeholder="请填写手机号" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="性别" prop="sex" clearable>
<el-select v-model="form['sex']" clearable placeholder="请填写性别" style="width: 100%;">
<el-option v-for="(option, optionIndex) in [{'value':'男','label':'男'},{'value':'女','label':'女'},{'value':'保密','label':'保密'}]" :key="optionIndex" :label="option['label']" :value="option['value']"></el-option>
</el-select>
</el-form-item>
<el-form-item label="区县" prop="area">
<el-input v-model="form['area']" clearable placeholder="请填写区县" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="省份" prop="province">
<el-input v-model="form['province']" clearable placeholder="请填写省份" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="城市" prop="city">
<el-input v-model="form['city']" clearable placeholder="请填写城市" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="学生姓名" prop="name">
<el-input v-model="form['name']" clearable placeholder="请填写学生姓名" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="年级" prop="grade">
<el-input v-model="form['grade']" clearable placeholder="请填写年级" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="中考年份" prop="middle_exam_year" clearable>
<el-date-picker v-model="form['middle_exam_year']" clearable placeholder="请填写中考年份" type="year" value-format="yyyy-MM-dd" style="width: 100%;"></el-date-picker>
</el-form-item>
<el-form-item label="民族" prop="nationality">
<el-input v-model="form['nationality']" clearable placeholder="请填写民族" style="width: 100%;"></el-input>
</el-form-item>
<el-form-item label="学校" prop="school">
<el-input v-model="form['school']" clearable placeholder="请填写学校" style="width: 100%;"></el-input>
</el-form-item>
</div>
</el-form>
<div class="drawer-container__footer">
<el-button @click="reset"> </el-button>
<el-button type="primary" @click="submit" :loading="loading">{{ loading ? '提交中 ...' : '确 定' }}</el-button>
</div>
</section>
</el-drawer>
</div>
</template>
<script>
import { save, show } from "@/api/user/user";
import axios from "axios";
import { getToken } from "@/utils/auth";
import { uploadSize } from "@/settings";
import { formatFileSize } from "@/utils";
import { save, show } from "@/api/user/user";
import axios from "axios";
import { getToken } from "@/utils/auth";
import { uploadSize } from "@/settings";
import { formatFileSize } from "@/utils";
export default {
export default {
name: "UserDrawer",
props: {
isShow: {
type: Boolean,
default: false,
required: true,
required: true
},
},
data() {
return {
@ -186,61 +107,67 @@ export default {
loading: false,
visible: false,
form: {
nickname: "",
openid: "",
headimgurl: "",
mobile: "",
sex: "",
area: "",
province: "",
city: "",
name: "",
grade: "",
middle_exam_year: "",
nationality: "",
school: "",
white: '',
nickname: '',
openid: '',
headimgurl: '',
mobile: '',
sex: '',
area: '',
province: '',
city: '',
name: '',
grade: '',
middle_exam_year: '',
nationality: '',
school: '',
},
rules: {
mobile: [
mobile: [
{
required: true,
message: "手机号" + "必填",
message: '手机号'+'必填'
},
{
validator: (rule, value, callback) => {
if (
/(^$)|(^1[3456789]\d{9})|(^(0\d{2,3}(-)*)?\d{7})$/.test(value)
) {
callback();
if (/(^$)|(^1[3456789]\d{9})|(^(0\d{2,3}(-)*)?\d{7})$/.test(value)) {
callback()
} else {
callback(new Error("手机号" + "验证失败"));
callback(new Error('手机号'+'验证失败'))
}
},
message: "手机号" + "验证失败",
message: '手机号'+'验证失败'
},
],
},
};
}
},
watch: {
isShow(newVal) {
this.visible = newVal;
this.visible = newVal
},
visible(newVal) {
this.$emit("update:isShow", newVal);
this.$emit('update:isShow', newVal)
},
},
methods: {
@ -252,23 +179,23 @@ export default {
});
return false;
}
window.$_uploading = true;
window.$_uploading = true
},
uploadSuccess(response, file, fileList, fieldName) {
window.$_uploading = false;
window.$_uploading = false
fileList.forEach((file) => {
if (file.response?.data && !file.response?.code) {
file.response = file.response.data;
}
});
this.form[fieldName] = fileList;
this.form[fieldName] = fileList
},
uploadRemove(file, fileList, fieldName) {
this.form[fieldName] = fileList;
this.form[fieldName] = fileList
},
uploadError(err, file, fileList, fieldName) {
window.$_uploading = false;
this.form[fieldName] = fileList;
window.$_uploading = false
this.form[fieldName] = fileList
this.$message({
type: "warning",
message: err,
@ -277,67 +204,71 @@ export default {
formatFileSize,
getToken,
handleClose(done) {
this.$confirm("确定关闭窗口?")
.then((_) => {
this.$confirm('确定关闭窗口?')
.then(_ => {
done();
})
.catch((_) => {});
.catch(_ => {});
},
reset() {
this.form = {
nickname: "",
openid: "",
headimgurl: "",
mobile: "",
sex: "",
area: "",
province: "",
city: "",
name: "",
grade: "",
middle_exam_year: "",
nationality: "",
school: "",
};
this.$refs["elForm"].resetFields();
white: '',
nickname: '',
openid: '',
headimgurl: '',
mobile: '',
sex: '',
area: '',
province: '',
city: '',
name: '',
grade: '',
middle_exam_year: '',
nationality: '',
school: '',
}
this.$refs['elForm'].resetFields()
},
submit() {
if (window.$_uploading) {
this.$message.warning("文件正在上传中");
return;
this.$message.warning("文件正在上传中")
return
}
this.$refs["elForm"].validate(async (valid) => {
this.$refs['elForm'].validate(async valid => {
if (valid) {
this.loading = true;
this.loading = true
try {
await save(this.form);
this.$message.success("新增成功");
this.$emit("refresh");
this.$emit("update:isShow", false);
this.loading = false;
this.reset();
await save(this.form)
this.$message.success('新增成功')
this.$emit('refresh')
this.$emit('update:isShow', false)
this.loading = false
this.reset()
} catch (err) {
this.loading = false;
this.loading = false
}
}
});
},
},
};
})
}
}
}
</script>
<style scoped lang="scss">

@ -1,179 +1,170 @@
<template>
<div>
<el-drawer
:title="$route.meta.title"
direction="rtl"
size="68%"
:visible.sync="visible"
append-to-body
@close="$emit('update:isShow', false)"
>
<section class="drawer-container">
<el-descriptions
class="drawer-container__desc"
size="small"
border
ref="elDesc"
:column="2"
direction="vertical"
:labelStyle="{ 'font-weight': '500', 'font-size': '15px' }"
>
<el-descriptions-item label="昵称">
{{ form["nickname"] }}
</el-descriptions-item>
<el-descriptions-item label="openid">
{{ form["openid"] }}
</el-descriptions-item>
<el-descriptions-item label="头像地址">
{{ form["headimgurl"] }}
</el-descriptions-item>
<el-descriptions-item label="手机号">
{{ form["mobile"] }}
</el-descriptions-item>
<el-descriptions-item label="性别">
{{
[
{ value: "男", label: "男" },
{ value: "女", label: "女" },
{ value: "保密", label: "保密" },
].find((i) => i["value"] === form["sex"])
? [
{ value: "男", label: "男" },
{ value: "女", label: "女" },
{ value: "保密", label: "保密" },
].find((i) => i["value"] === form["sex"])["label"]
: ""
}}
</el-descriptions-item>
<el-descriptions-item label="区县">
{{ form["area"] }}
</el-descriptions-item>
<el-descriptions-item label="省份">
{{ form["province"] }}
</el-descriptions-item>
<el-descriptions-item label="城市">
{{ form["city"] }}
</el-descriptions-item>
<el-descriptions-item label="学生姓名">
{{ form["name"] }}
</el-descriptions-item>
<el-descriptions-item label="年级">
{{ form["grade"] }}
</el-descriptions-item>
<el-descriptions-item label="中考年份">
{{ form["middle_exam_year"] }}
</el-descriptions-item>
<el-descriptions-item label="民族">
{{ form["nationality"] }}
</el-descriptions-item>
<el-descriptions-item label="学校">
{{ form["school"] }}
</el-descriptions-item>
</el-descriptions>
</section>
</el-drawer>
</div>
<template>
<div>
<el-drawer
:title="$route.meta.title"
direction="rtl"
size="68%"
:visible.sync="visible"
append-to-body
@close="$emit('update:isShow',false)">
<section class="drawer-container">
<el-descriptions class="drawer-container__desc" size="small" border ref="elDesc" :column="2" direction="vertical" :labelStyle="{ 'font-weight': '500', 'font-size': '15px' }">
<el-descriptions-item label="是否填报白名单">
{{ form['white'] }}
</el-descriptions-item>
<el-descriptions-item label="昵称">
{{ form['nickname'] }}
</el-descriptions-item>
<el-descriptions-item label="openid">
{{ form['openid'] }}
</el-descriptions-item>
<el-descriptions-item label="头像地址">
{{ form['headimgurl'] }}
</el-descriptions-item>
<el-descriptions-item label="手机号">
{{ form['mobile'] }}
</el-descriptions-item>
<el-descriptions-item label="性别">
{{ [{'value':'男','label':'男'},{'value':'女','label':'女'},{'value':'保密','label':'保密'}].find(i => i['value'] === form['sex']) ? [{'value':'男','label':'男'},{'value':'女','label':'女'},{'value':'保密','label':'保密'}].find(i => i['value'] === form['sex'])['label'] : '' }}
</el-descriptions-item>
<el-descriptions-item label="区县">
{{ form['area'] }}
</el-descriptions-item>
<el-descriptions-item label="省份">
{{ form['province'] }}
</el-descriptions-item>
<el-descriptions-item label="城市">
{{ form['city'] }}
</el-descriptions-item>
<el-descriptions-item label="学生姓名">
{{ form['name'] }}
</el-descriptions-item>
<el-descriptions-item label="年级">
{{ form['grade'] }}
</el-descriptions-item>
<el-descriptions-item label="中考年份">
{{ form['middle_exam_year'] }}
</el-descriptions-item>
<el-descriptions-item label="民族">
{{ form['nationality'] }}
</el-descriptions-item>
<el-descriptions-item label="学校">
{{ form['school'] }}
</el-descriptions-item>
</el-descriptions>
</section>
</el-drawer>
</div>
</template>
<script>
import { show } from "@/api/user/user";
export default {
name: "UserShow",
props: {
isShow: {
type: Boolean,
default: false,
required: true,
},
import { show } from "@/api/user/user";
export default {
name: "UserShow",
props: {
isShow: {
type: Boolean,
default: false,
required: true
},
},
data() {
return {
loading: false,
visible: false,
form: {
nickname: "",
openid: "",
headimgurl: "",
mobile: "",
sex: "",
area: "",
province: "",
city: "",
name: "",
grade: "",
middle_exam_year: "",
nationality: "",
school: "",
},
};
white: '',
nickname: '',
openid: '',
headimgurl: '',
mobile: '',
sex: '',
area: '',
province: '',
city: '',
name: '',
grade: '',
middle_exam_year: '',
nationality: '',
school: '',
},
}
},
watch: {
isShow(newVal) {
this.visible = newVal;
this.visible = newVal
},
visible(newVal) {
this.$emit("update:isShow", newVal);
this.$emit('update:isShow', newVal)
},
},
methods: {
async getDetail(id) {
try {
const detail = await show({
id,
});
id
})
for (let key in this.form) {
if (detail.hasOwnProperty(key)) {
this.form[key] = detail[key];
this.form[key] = detail[key]
}
}
} catch (err) {
console.error(err);
console.error(err)
}
},
},
};
}
}
}
</script>
<style scoped lang="scss">
.span2 {
grid-column: span 2;
}
::v-deep .el-form-item > * {
max-width: 100%;
}
.drawer-container {
height: 100%;
padding: 20px;
display: flex;
flex-direction: column;
& > * {
flex: 1;
.span2 {
grid-column: span 2;
}
::v-deep .el-form-item > * {
max-width: 100%;
}
.drawer-container {
height: 100%;
padding: 20px;
display: flex;
flex-direction: column;
& > * {
flex: 1;
}
}
}
</style>

Loading…
Cancel
Save