|
@@ -105,9 +105,7 @@
|
|
|
>
|
|
>
|
|
|
|
|
|
|
|
<el-dropdown>
|
|
<el-dropdown>
|
|
|
- <el-button color="rgba(0, 97, 255, 1)" @click="addClick" plain
|
|
|
|
|
- >批量操作</el-button
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-button color="rgba(0, 97, 255, 1)" plain>批量操作</el-button>
|
|
|
<template #dropdown>
|
|
<template #dropdown>
|
|
|
<el-dropdown-menu>
|
|
<el-dropdown-menu>
|
|
|
<el-dropdown-item @click="addBatchClick"
|
|
<el-dropdown-item @click="addBatchClick"
|
|
@@ -163,6 +161,8 @@
|
|
|
>
|
|
>
|
|
|
<el-table-column align="center" type="selection" width="80" />
|
|
<el-table-column align="center" type="selection" width="80" />
|
|
|
<el-table-column align="center" prop="name" label="姓名" />
|
|
<el-table-column align="center" prop="name" label="姓名" />
|
|
|
|
|
+ <el-table-column align="center" prop="identity" label="身份" />
|
|
|
|
|
+ <el-table-column align="center" prop="department" label="部门" />
|
|
|
<el-table-column align="center" prop="cardNo" label="学号" />
|
|
<el-table-column align="center" prop="cardNo" label="学号" />
|
|
|
<el-table-column align="center" prop="img" label="人脸照片">
|
|
<el-table-column align="center" prop="img" label="人脸照片">
|
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
@@ -217,10 +217,11 @@
|
|
|
<img src="@/assets/images/basicInfo.png" alt="" />
|
|
<img src="@/assets/images/basicInfo.png" alt="" />
|
|
|
<span>基本信息</span>
|
|
<span>基本信息</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <el-form-item label="编号 :" prop="serialNumber">
|
|
|
|
|
|
|
+ <el-form-item label="学号 :" prop="serialNumber">
|
|
|
<el-input
|
|
<el-input
|
|
|
|
|
+ :disabled="addMemberTitle == '编辑成员' ? true : false"
|
|
|
v-model="addMemberRuleForm.serialNumber"
|
|
v-model="addMemberRuleForm.serialNumber"
|
|
|
- placeholder="请输入编号"
|
|
|
|
|
|
|
+ placeholder="请输学号"
|
|
|
clearable
|
|
clearable
|
|
|
style="width: 500px"
|
|
style="width: 500px"
|
|
|
/>
|
|
/>
|
|
@@ -238,6 +239,7 @@
|
|
|
v-model="addMemberRuleForm.identity"
|
|
v-model="addMemberRuleForm.identity"
|
|
|
placeholder="请选择身份"
|
|
placeholder="请选择身份"
|
|
|
style="width: 500px"
|
|
style="width: 500px"
|
|
|
|
|
+ @change="identityChange"
|
|
|
>
|
|
>
|
|
|
<el-option
|
|
<el-option
|
|
|
v-for="i in identityData"
|
|
v-for="i in identityData"
|
|
@@ -246,6 +248,23 @@
|
|
|
/>
|
|
/>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="addMemberRuleForm.identity != 1"
|
|
|
|
|
+ label="职务 :"
|
|
|
|
|
+ :prop="addMemberRuleForm.identity == 3 ? 'duty' : ''"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="addMemberRuleForm.duty"
|
|
|
|
|
+ placeholder="请选择职务"
|
|
|
|
|
+ style="width: 500px"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="i in postData"
|
|
|
|
|
+ :label="i.name"
|
|
|
|
|
+ :value="`${i.id}`"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="身份证号 :" prop="icCard">
|
|
<el-form-item label="身份证号 :" prop="icCard">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="addMemberRuleForm.icCard"
|
|
v-model="addMemberRuleForm.icCard"
|
|
@@ -308,13 +327,17 @@
|
|
|
<template #tip>
|
|
<template #tip>
|
|
|
<div class="el-upload__tip">
|
|
<div class="el-upload__tip">
|
|
|
支持扩展名:.jpg
|
|
支持扩展名:.jpg
|
|
|
- .png,五官清晰无遮挡,名字+后缀,大小不超过50kb
|
|
|
|
|
|
|
+ .png,五官清晰无遮挡,名字+后缀,大小不超过2M
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
</el-upload>
|
|
</el-upload>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="年级 :" prop="grade">
|
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="addMemberRuleForm.identity != 1"
|
|
|
|
|
+ label="年级 :"
|
|
|
|
|
+ :prop="addMemberRuleForm.identity == 3 ? '' : 'grade'"
|
|
|
|
|
+ >
|
|
|
<el-select
|
|
<el-select
|
|
|
v-model="addMemberRuleForm.grade"
|
|
v-model="addMemberRuleForm.grade"
|
|
|
placeholder="请选择年级"
|
|
placeholder="请选择年级"
|
|
@@ -328,7 +351,11 @@
|
|
|
/>
|
|
/>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="班级 :" prop="class">
|
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="addMemberRuleForm.identity != 1"
|
|
|
|
|
+ label="班级 :"
|
|
|
|
|
+ :prop="addMemberRuleForm.identity == 3 ? '' : 'class'"
|
|
|
|
|
+ >
|
|
|
<el-select
|
|
<el-select
|
|
|
v-model="addMemberRuleForm.class"
|
|
v-model="addMemberRuleForm.class"
|
|
|
placeholder="请选择班级"
|
|
placeholder="请选择班级"
|
|
@@ -341,7 +368,28 @@
|
|
|
/>
|
|
/>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="学院 :" prop="institute">
|
|
|
|
|
|
|
+ <el-form-item label="时间组 :" prop="timeGroupId">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="addMemberRuleForm.timeGroupId"
|
|
|
|
|
+ placeholder="请选择时间"
|
|
|
|
|
+ style="width: 500px"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="i in timeGroupList"
|
|
|
|
|
+ :label="i.name"
|
|
|
|
|
+ :value="i.id"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="
|
|
|
|
|
+ addMemberRuleForm.identity != 2 &&
|
|
|
|
|
+ addMemberRuleForm.identity != 1 &&
|
|
|
|
|
+ addMemberRuleForm.identity != 3
|
|
|
|
|
+ "
|
|
|
|
|
+ label="学院 :"
|
|
|
|
|
+ prop="institute"
|
|
|
|
|
+ >
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="addMemberRuleForm.institute"
|
|
v-model="addMemberRuleForm.institute"
|
|
|
placeholder="请输入学院"
|
|
placeholder="请输入学院"
|
|
@@ -349,7 +397,15 @@
|
|
|
style="width: 500px"
|
|
style="width: 500px"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="专业 :" prop="specialty">
|
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="
|
|
|
|
|
+ addMemberRuleForm.identity != 2 &&
|
|
|
|
|
+ addMemberRuleForm.identity != 1 &&
|
|
|
|
|
+ addMemberRuleForm.identity != 3
|
|
|
|
|
+ "
|
|
|
|
|
+ label="专业 :"
|
|
|
|
|
+ prop="specialty"
|
|
|
|
|
+ >
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="addMemberRuleForm.specialty"
|
|
v-model="addMemberRuleForm.specialty"
|
|
|
placeholder="请输入专业"
|
|
placeholder="请输入专业"
|
|
@@ -374,7 +430,11 @@
|
|
|
style="width: 500px"
|
|
style="width: 500px"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="手机号 :" prop="phone">
|
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="addMemberRuleForm.identity != 2"
|
|
|
|
|
+ label="手机号 :"
|
|
|
|
|
+ prop="phone"
|
|
|
|
|
+ >
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="addMemberRuleForm.phone"
|
|
v-model="addMemberRuleForm.phone"
|
|
|
placeholder="请输入手机号"
|
|
placeholder="请输入手机号"
|
|
@@ -382,7 +442,14 @@
|
|
|
style="width: 500px"
|
|
style="width: 500px"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="联系人 :" prop="contact">
|
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="
|
|
|
|
|
+ addMemberRuleForm.identity != 3 &&
|
|
|
|
|
+ addMemberRuleForm.identity != 2
|
|
|
|
|
+ "
|
|
|
|
|
+ label="关联人 :"
|
|
|
|
|
+ prop="contact"
|
|
|
|
|
+ >
|
|
|
<el-select
|
|
<el-select
|
|
|
v-model="addMemberRuleForm.contact"
|
|
v-model="addMemberRuleForm.contact"
|
|
|
popper-class="more-tag-data"
|
|
popper-class="more-tag-data"
|
|
@@ -391,7 +458,7 @@
|
|
|
remote
|
|
remote
|
|
|
:remote-method="conteactMethod"
|
|
:remote-method="conteactMethod"
|
|
|
:loading="conteactLoading"
|
|
:loading="conteactLoading"
|
|
|
- placeholder="请选择联系人"
|
|
|
|
|
|
|
+ placeholder="请选择关联人"
|
|
|
style="width: 500px"
|
|
style="width: 500px"
|
|
|
>
|
|
>
|
|
|
<el-option
|
|
<el-option
|
|
@@ -456,14 +523,7 @@
|
|
|
style="width: 500px"
|
|
style="width: 500px"
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="职务 :" prop="duty">
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="addMemberRuleForm.duty"
|
|
|
|
|
- placeholder="请输入职务"
|
|
|
|
|
- clearable
|
|
|
|
|
- style="width: 500px"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+
|
|
|
<el-form-item class="options">
|
|
<el-form-item class="options">
|
|
|
<el-button
|
|
<el-button
|
|
|
color="rgba(41, 109, 227, 1)"
|
|
color="rgba(41, 109, 227, 1)"
|
|
@@ -487,35 +547,68 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="content">
|
|
<div class="content">
|
|
|
<div class="form">
|
|
<div class="form">
|
|
|
- <el-upload
|
|
|
|
|
- style="width: 500px"
|
|
|
|
|
- class="upload-demo"
|
|
|
|
|
- drag
|
|
|
|
|
- action="#"
|
|
|
|
|
- multiple
|
|
|
|
|
- :on-preview="handlePreview2"
|
|
|
|
|
- :on-remove="handleRemove2"
|
|
|
|
|
- :on-change="handleChange2"
|
|
|
|
|
- :http-request="handleUpload2"
|
|
|
|
|
- :before-upload="beforeAvatarUpload2"
|
|
|
|
|
- >
|
|
|
|
|
- <el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
|
|
|
|
- <div class="el-upload__text">
|
|
|
|
|
- <span style="font-size: 20px">点击上传或拖拽文件</span><br /><em
|
|
|
|
|
- >务必按照我们的标准模板填写信息</em
|
|
|
|
|
- >
|
|
|
|
|
- </div>
|
|
|
|
|
- <!-- <template #tip>
|
|
|
|
|
|
|
+ <div class="imgUpload">
|
|
|
|
|
+ <el-upload
|
|
|
|
|
+ style="width: 500px"
|
|
|
|
|
+ class="upload-demo"
|
|
|
|
|
+ ref="upload2"
|
|
|
|
|
+ drag
|
|
|
|
|
+ action="#"
|
|
|
|
|
+ :on-preview="handlePreview2"
|
|
|
|
|
+ :on-remove="handleRemove2"
|
|
|
|
|
+ :on-change="handleChange2"
|
|
|
|
|
+ :http-request="handleUpload2"
|
|
|
|
|
+ :before-upload="beforeAvatarUpload2"
|
|
|
|
|
+ :limit="1"
|
|
|
|
|
+ :on-exceed="handleExceed2"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
|
|
|
|
+ <div class="el-upload__text">
|
|
|
|
|
+ <span style="font-size: 20px">点击上传或拖拽文件</span><br /><em
|
|
|
|
|
+ >请按照标准模板填写信息</em
|
|
|
|
|
+ >
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <!-- <template #tip>
|
|
|
<div class="el-upload__tip">
|
|
<div class="el-upload__tip">
|
|
|
jpg/png files with a size less than 500kb
|
|
jpg/png files with a size less than 500kb
|
|
|
</div>
|
|
</div>
|
|
|
</template> -->
|
|
</template> -->
|
|
|
- </el-upload>
|
|
|
|
|
|
|
+ </el-upload>
|
|
|
|
|
+ <el-upload
|
|
|
|
|
+ style="width: 500px"
|
|
|
|
|
+ class="img-upload-demo"
|
|
|
|
|
+ drag
|
|
|
|
|
+ action="#"
|
|
|
|
|
+ multiple
|
|
|
|
|
+ :on-preview="handlePreviewImgUpload"
|
|
|
|
|
+ :on-remove="handleRemoveImgUpload"
|
|
|
|
|
+ :on-change="handleChangeImgUpload"
|
|
|
|
|
+ :http-request="handleUploadImgUpload"
|
|
|
|
|
+ :before-upload="beforeAvatarUploadImgUpload"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
|
|
|
|
+ <div class="el-upload__text">
|
|
|
|
|
+ <span style="font-size: 20px">点击上传图片文件夹</span><br />
|
|
|
|
|
+ <em> 图片格式为jpeg/jpg/png格式且每张图片不能超过2MB </em>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <!-- <template #tip>
|
|
|
|
|
+ <div class="el-upload__tip">
|
|
|
|
|
+ jpg/png files with a size less than 500kb
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template> -->
|
|
|
|
|
+ </el-upload>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <!-- <input
|
|
|
|
|
+ ref="Folder"
|
|
|
|
|
+ type="file"
|
|
|
|
|
+ @change="uploadFloder"
|
|
|
|
|
+ webkitdirectory
|
|
|
|
|
+ /> -->
|
|
|
<div class="startImport">
|
|
<div class="startImport">
|
|
|
<el-button
|
|
<el-button
|
|
|
type="primary"
|
|
type="primary"
|
|
|
color="rgba(0, 97, 255, 1)"
|
|
color="rgba(0, 97, 255, 1)"
|
|
|
- @click="addClick"
|
|
|
|
|
|
|
+ @click="bulkImport"
|
|
|
plain
|
|
plain
|
|
|
>开始导入</el-button
|
|
>开始导入</el-button
|
|
|
>
|
|
>
|
|
@@ -538,7 +631,12 @@
|
|
|
prop="userName"
|
|
prop="userName"
|
|
|
label="操作管理员"
|
|
label="操作管理员"
|
|
|
/>
|
|
/>
|
|
|
- <el-table-column align="center" prop="time" label="上传时间" />
|
|
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ width="160"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ prop="time"
|
|
|
|
|
+ label="上传时间"
|
|
|
|
|
+ />
|
|
|
<el-table-column align="center" prop="status" label="导入状态" />
|
|
<el-table-column align="center" prop="status" label="导入状态" />
|
|
|
<el-table-column
|
|
<el-table-column
|
|
|
align="center"
|
|
align="center"
|
|
@@ -953,7 +1051,7 @@ import { Camera } from "@element-plus/icons-vue";
|
|
|
import { dayjs } from "element-plus";
|
|
import { dayjs } from "element-plus";
|
|
|
import lodash from "lodash";
|
|
import lodash from "lodash";
|
|
|
import axios from "axios";
|
|
import axios from "axios";
|
|
|
-
|
|
|
|
|
|
|
+import compressImg from "@/utils/compressImg.js";
|
|
|
import { useStore } from "vuex";
|
|
import { useStore } from "vuex";
|
|
|
const store = useStore();
|
|
const store = useStore();
|
|
|
const api = ref("");
|
|
const api = ref("");
|
|
@@ -1098,13 +1196,15 @@ const addMemberShow = ref(false);
|
|
|
const addMemberTitle = ref("添加成员");
|
|
const addMemberTitle = ref("添加成员");
|
|
|
const addMemberRef = ref();
|
|
const addMemberRef = ref();
|
|
|
const addMemberRuleForm = reactive({
|
|
const addMemberRuleForm = reactive({
|
|
|
- serialNumber: "", // 编号
|
|
|
|
|
|
|
+ serialNumber: "", // 学号
|
|
|
name: "", // 姓名
|
|
name: "", // 姓名
|
|
|
identity: "", // 身份
|
|
identity: "", // 身份
|
|
|
icCard: "", // 身份证号
|
|
icCard: "", // 身份证号
|
|
|
sex: "", // 性别
|
|
sex: "", // 性别
|
|
|
department: "", // 部门
|
|
department: "", // 部门
|
|
|
facePhoto: "", // 人脸照片
|
|
facePhoto: "", // 人脸照片
|
|
|
|
|
+ facePhoto: "", // 人脸照片
|
|
|
|
|
+ compressFacePhoto: "", // 压缩的人脸照片
|
|
|
grade: "", // 年级
|
|
grade: "", // 年级
|
|
|
institute: "", // 学院
|
|
institute: "", // 学院
|
|
|
specialty: "", // 专业
|
|
specialty: "", // 专业
|
|
@@ -1112,7 +1212,8 @@ const addMemberRuleForm = reactive({
|
|
|
school: "", // 校区
|
|
school: "", // 校区
|
|
|
dormitory: "", // 宿舍号
|
|
dormitory: "", // 宿舍号
|
|
|
phone: "", // 手机号
|
|
phone: "", // 手机号
|
|
|
- contact: "", // 联系人
|
|
|
|
|
|
|
+ contact: [], // 联系人
|
|
|
|
|
+ timeGroupId: "", // 时间组
|
|
|
// 其他信息
|
|
// 其他信息
|
|
|
jobName: "", // 职称
|
|
jobName: "", // 职称
|
|
|
houseAddress: "", // 家庭地址
|
|
houseAddress: "", // 家庭地址
|
|
@@ -1125,6 +1226,8 @@ const addMemberRuleForm = reactive({
|
|
|
const identityData = ref(); // 身份下拉数据
|
|
const identityData = ref(); // 身份下拉数据
|
|
|
const gradeData = ref(); // 年级下拉数据
|
|
const gradeData = ref(); // 年级下拉数据
|
|
|
const classsData = ref(); // 班级下拉数据
|
|
const classsData = ref(); // 班级下拉数据
|
|
|
|
|
+const postData = ref(); // 职务下拉数据
|
|
|
|
|
+const timeGroupList = ref(); // 时间组下拉数据
|
|
|
|
|
|
|
|
const conteactListData = ref(); // 联系人下拉数据
|
|
const conteactListData = ref(); // 联系人下拉数据
|
|
|
const conteactListCurrentPage = ref(1); // 联系人下拉当前页数
|
|
const conteactListCurrentPage = ref(1); // 联系人下拉当前页数
|
|
@@ -1136,7 +1239,7 @@ const conteactLoading = ref(false); // 联系人下拉框搜索时加载
|
|
|
const upload = ref(); // 人脸照片
|
|
const upload = ref(); // 人脸照片
|
|
|
// 表单验证
|
|
// 表单验证
|
|
|
const addMemberRules = reactive({
|
|
const addMemberRules = reactive({
|
|
|
- serialNumber: [{ required: true, message: "编号不能为空", trigger: "blur" }],
|
|
|
|
|
|
|
+ serialNumber: [{ required: true, message: "学号不能为空", trigger: "blur" }],
|
|
|
name: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
|
|
name: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
|
|
|
identity: [{ required: true, message: "身份不能为空", trigger: "change" }],
|
|
identity: [{ required: true, message: "身份不能为空", trigger: "change" }],
|
|
|
icCard: [{ required: true, message: "身份证号不能为空", trigger: "blur" }],
|
|
icCard: [{ required: true, message: "身份证号不能为空", trigger: "blur" }],
|
|
@@ -1149,8 +1252,8 @@ const addMemberRules = reactive({
|
|
|
class: [{ required: true, message: "班级不能为空", trigger: "change" }],
|
|
class: [{ required: true, message: "班级不能为空", trigger: "change" }],
|
|
|
// school: [{ required: true, message: "校区不能为空", trigger: "blur" }],
|
|
// school: [{ required: true, message: "校区不能为空", trigger: "blur" }],
|
|
|
// dormitory: [{ required: true, message: "宿舍号不能为空", trigger: "blur" }],
|
|
// dormitory: [{ required: true, message: "宿舍号不能为空", trigger: "blur" }],
|
|
|
- // phone: [{ required: true, message: "手机号不能为空", trigger: "blur" }],
|
|
|
|
|
- // contact: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
|
|
|
|
|
|
|
+ phone: [{ required: true, message: "手机号不能为空", trigger: "blur" }],
|
|
|
|
|
+ contact: [{ required: true, message: "关联人不能为空", trigger: "blur" }],
|
|
|
// jobName: [{ required: true, message: "职称不能为空", trigger: "blur" }],
|
|
// jobName: [{ required: true, message: "职称不能为空", trigger: "blur" }],
|
|
|
houseAddress: [
|
|
houseAddress: [
|
|
|
// { required: true, message: "家庭地址不能为空", trigger: "blur" },
|
|
// { required: true, message: "家庭地址不能为空", trigger: "blur" },
|
|
@@ -1162,7 +1265,8 @@ const addMemberRules = reactive({
|
|
|
graduateCollege: [
|
|
graduateCollege: [
|
|
|
// { required: true, message: "毕业学院不能为空", trigger: "blur" },
|
|
// { required: true, message: "毕业学院不能为空", trigger: "blur" },
|
|
|
],
|
|
],
|
|
|
- // duty: [{ required: true, message: "职务不能为空", trigger: "blur" }],
|
|
|
|
|
|
|
+ duty: [{ required: true, message: "职务不能为空", trigger: "blur" }],
|
|
|
|
|
+ timeGroupId: [{ required: true, message: "时间组不能为空", trigger: "blur" }],
|
|
|
});
|
|
});
|
|
|
// 批量添加 (-----------------------------------------)
|
|
// 批量添加 (-----------------------------------------)
|
|
|
const addBatchShow = ref(false);
|
|
const addBatchShow = ref(false);
|
|
@@ -1208,6 +1312,9 @@ const addBatchData = reactive({
|
|
|
const addBatch_currentPage = ref(1); // 当前页
|
|
const addBatch_currentPage = ref(1); // 当前页
|
|
|
const addBatch_pageSize = ref(7);
|
|
const addBatch_pageSize = ref(7);
|
|
|
const addBatch_total = ref(8); // 当前总数
|
|
const addBatch_total = ref(8); // 当前总数
|
|
|
|
|
+const upload2 = ref(); // ref 导入文件ref
|
|
|
|
|
+const upload2File = ref(); // 批量导入的文件
|
|
|
|
|
+const uploadImgList = ref(); // 批量导入的图片列表
|
|
|
|
|
|
|
|
// 批量删除(--------------------------------------------)
|
|
// 批量删除(--------------------------------------------)
|
|
|
const delBatchShow = ref(false);
|
|
const delBatchShow = ref(false);
|
|
@@ -1435,6 +1542,7 @@ const confirmAmendBM = async (formEl) => {
|
|
|
};
|
|
};
|
|
|
const cancelAmendBM = () => {
|
|
const cancelAmendBM = () => {
|
|
|
amendBMVisible.value = false;
|
|
amendBMVisible.value = false;
|
|
|
|
|
+ amendBMRef.value.resetFields();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 新建子部门(------------------------------------------------)
|
|
// 新建子部门(------------------------------------------------)
|
|
@@ -1525,7 +1633,7 @@ const del = async (row) => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 添加成员(---------------------------------------------------)
|
|
// 添加成员(---------------------------------------------------)
|
|
|
-// 获取身份数据下拉、年级数据下拉、班级数据下拉
|
|
|
|
|
|
|
+// 获取身份数据下拉、年级数据下拉、班级数据下拉、新增时间组
|
|
|
const classDataList = async () => {
|
|
const classDataList = async () => {
|
|
|
let identity = await axios({
|
|
let identity = await axios({
|
|
|
method: "get",
|
|
method: "get",
|
|
@@ -1549,6 +1657,18 @@ const classDataList = async () => {
|
|
|
});
|
|
});
|
|
|
console.log(grade, "年级下拉数据");
|
|
console.log(grade, "年级下拉数据");
|
|
|
gradeData.value = grade.data.data;
|
|
gradeData.value = grade.data.data;
|
|
|
|
|
+
|
|
|
|
|
+ let timeGroupId = await axios({
|
|
|
|
|
+ method: "get",
|
|
|
|
|
+ url: api.value + "/wanzai/api/smartUser/timeGroups",
|
|
|
|
|
+ headers: {
|
|
|
|
|
+ // token: sessionStorage.getItem("token"),
|
|
|
|
|
+ // user_head: sessionStorage.getItem("userhead"),
|
|
|
|
|
+ },
|
|
|
|
|
+ // params: data,
|
|
|
|
|
+ });
|
|
|
|
|
+ console.log(timeGroupId, "时间组下拉数据");
|
|
|
|
|
+ timeGroupList.value = timeGroupId.data.data;
|
|
|
};
|
|
};
|
|
|
// 联系人分页数据
|
|
// 联系人分页数据
|
|
|
const studentList = async () => {
|
|
const studentList = async () => {
|
|
@@ -1572,6 +1692,23 @@ const studentList = async () => {
|
|
|
conteactListData.value = res.data.data.list;
|
|
conteactListData.value = res.data.data.list;
|
|
|
conteactListTotalPage.value = res.data.data.totalPage;
|
|
conteactListTotalPage.value = res.data.data.totalPage;
|
|
|
};
|
|
};
|
|
|
|
|
+// 职务分页数据
|
|
|
|
|
+const postList = async () => {
|
|
|
|
|
+ let data = {
|
|
|
|
|
+ identityId: addMemberRuleForm.identity,
|
|
|
|
|
+ };
|
|
|
|
|
+ let post = await axios({
|
|
|
|
|
+ method: "get",
|
|
|
|
|
+ url: api.value + "/wanzai/api/smartDuties/queryDutiesByIdentity",
|
|
|
|
|
+ headers: {
|
|
|
|
|
+ // token: sessionStorage.getItem("token"),
|
|
|
|
|
+ // user_head: sessionStorage.getItem("userhead"),
|
|
|
|
|
+ },
|
|
|
|
|
+ params: data,
|
|
|
|
|
+ });
|
|
|
|
|
+ console.log(post, "职务下拉数据");
|
|
|
|
|
+ postData.value = post.data.data;
|
|
|
|
|
+};
|
|
|
// 班级下拉数据
|
|
// 班级下拉数据
|
|
|
const classsList = async () => {
|
|
const classsList = async () => {
|
|
|
let data = {
|
|
let data = {
|
|
@@ -1589,6 +1726,17 @@ const classsList = async () => {
|
|
|
console.log(classs, "班级下拉数据");
|
|
console.log(classs, "班级下拉数据");
|
|
|
classsData.value = classs.data.data;
|
|
classsData.value = classs.data.data;
|
|
|
};
|
|
};
|
|
|
|
|
+// 改变身份加载职务数据
|
|
|
|
|
+const identityChange = () => {
|
|
|
|
|
+ addMemberRuleForm.duty = "";
|
|
|
|
|
+ addMemberRuleForm.contact = [];
|
|
|
|
|
+ addMemberRuleForm.class = "";
|
|
|
|
|
+ addMemberRuleForm.grade = "";
|
|
|
|
|
+ // addMemberRuleForm.phone = "";
|
|
|
|
|
+ if (addMemberRuleForm.identity) {
|
|
|
|
|
+ postList();
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
// 切换年级加载班级数据
|
|
// 切换年级加载班级数据
|
|
|
const classsListChange = (value) => {
|
|
const classsListChange = (value) => {
|
|
|
addMemberRuleForm.class = "";
|
|
addMemberRuleForm.class = "";
|
|
@@ -1605,38 +1753,40 @@ const addStudentListScroll = () => {
|
|
|
console.log(domElementNode);
|
|
console.log(domElementNode);
|
|
|
|
|
|
|
|
// 注册下拉滚动事件
|
|
// 注册下拉滚动事件
|
|
|
- domElementNode.addEventListener("scroll", async () => {
|
|
|
|
|
- const isBottom =
|
|
|
|
|
- domElementNode.scrollHeight - domElementNode.scrollTop <=
|
|
|
|
|
- domElementNode.clientHeight;
|
|
|
|
|
- if (isBottom) {
|
|
|
|
|
- if (conteactListCurrentPage.value < conteactListTotalPage.value) {
|
|
|
|
|
- conteactListCurrentPage.value++;
|
|
|
|
|
- console.log(conteactListInput.value, "滚动里面");
|
|
|
|
|
- let data = {
|
|
|
|
|
- currentPage: conteactListCurrentPage.value,
|
|
|
|
|
- pageCount: conteactListPageCount.value,
|
|
|
|
|
- name: conteactListInput.value,
|
|
|
|
|
- };
|
|
|
|
|
- let res = await axios({
|
|
|
|
|
- method: "get",
|
|
|
|
|
- url: api.value + "/wanzai/api/smartScore/querySmartSecordPage",
|
|
|
|
|
- headers: {
|
|
|
|
|
- // token: sessionStorage.getItem("token"),
|
|
|
|
|
- // user_head: sessionStorage.getItem("userhead"),
|
|
|
|
|
- },
|
|
|
|
|
- params: data,
|
|
|
|
|
- });
|
|
|
|
|
- console.log(res, "联系人数据");
|
|
|
|
|
- conteactListData.value = [
|
|
|
|
|
- ...conteactListData.value,
|
|
|
|
|
- ...res.data.data.list,
|
|
|
|
|
- ];
|
|
|
|
|
- } else {
|
|
|
|
|
- console.log("数据全部加载完成");
|
|
|
|
|
|
|
+ if (domElementNode) {
|
|
|
|
|
+ domElementNode.addEventListener("scroll", async () => {
|
|
|
|
|
+ const isBottom =
|
|
|
|
|
+ domElementNode.scrollHeight - domElementNode.scrollTop <=
|
|
|
|
|
+ domElementNode.clientHeight;
|
|
|
|
|
+ if (isBottom) {
|
|
|
|
|
+ if (conteactListCurrentPage.value < conteactListTotalPage.value) {
|
|
|
|
|
+ conteactListCurrentPage.value++;
|
|
|
|
|
+ console.log(conteactListInput.value, "滚动里面");
|
|
|
|
|
+ let data = {
|
|
|
|
|
+ currentPage: conteactListCurrentPage.value,
|
|
|
|
|
+ pageCount: conteactListPageCount.value,
|
|
|
|
|
+ name: conteactListInput.value,
|
|
|
|
|
+ };
|
|
|
|
|
+ let res = await axios({
|
|
|
|
|
+ method: "get",
|
|
|
|
|
+ url: api.value + "/wanzai/api/smartScore/querySmartSecordPage",
|
|
|
|
|
+ headers: {
|
|
|
|
|
+ // token: sessionStorage.getItem("token"),
|
|
|
|
|
+ // user_head: sessionStorage.getItem("userhead"),
|
|
|
|
|
+ },
|
|
|
|
|
+ params: data,
|
|
|
|
|
+ });
|
|
|
|
|
+ console.log(res, "联系人数据");
|
|
|
|
|
+ conteactListData.value = [
|
|
|
|
|
+ ...conteactListData.value,
|
|
|
|
|
+ ...res.data.data.list,
|
|
|
|
|
+ ];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.log("数据全部加载完成");
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
// 联系人下拉框搜索时加载
|
|
// 联系人下拉框搜索时加载
|
|
@@ -1658,16 +1808,18 @@ const addMemberClick = () => {
|
|
|
addMemberRuleForm.identity = "";
|
|
addMemberRuleForm.identity = "";
|
|
|
addMemberRuleForm.icCard = "";
|
|
addMemberRuleForm.icCard = "";
|
|
|
addMemberRuleForm.sex = "";
|
|
addMemberRuleForm.sex = "";
|
|
|
- addMemberRuleForm.departmentID = "";
|
|
|
|
|
|
|
+ addMemberRuleForm.department = "";
|
|
|
addMemberRuleForm.facePhoto = "";
|
|
addMemberRuleForm.facePhoto = "";
|
|
|
|
|
+ addMemberRuleForm.compressFacePhoto = "";
|
|
|
addMemberRuleForm.grade = "";
|
|
addMemberRuleForm.grade = "";
|
|
|
addMemberRuleForm.institute = "";
|
|
addMemberRuleForm.institute = "";
|
|
|
addMemberRuleForm.specialty = "";
|
|
addMemberRuleForm.specialty = "";
|
|
|
addMemberRuleForm.class = "";
|
|
addMemberRuleForm.class = "";
|
|
|
|
|
+ addMemberRuleForm.timeGroupId = "";
|
|
|
addMemberRuleForm.school = "";
|
|
addMemberRuleForm.school = "";
|
|
|
addMemberRuleForm.dormitory = "";
|
|
addMemberRuleForm.dormitory = "";
|
|
|
addMemberRuleForm.phone = "";
|
|
addMemberRuleForm.phone = "";
|
|
|
- addMemberRuleForm.contact = "";
|
|
|
|
|
|
|
+ addMemberRuleForm.contact = [];
|
|
|
addMemberRuleForm.jobName = "";
|
|
addMemberRuleForm.jobName = "";
|
|
|
addMemberRuleForm.houseAddress = "";
|
|
addMemberRuleForm.houseAddress = "";
|
|
|
addMemberRuleForm.nation = "";
|
|
addMemberRuleForm.nation = "";
|
|
@@ -1686,25 +1838,31 @@ const editClick = (row) => {
|
|
|
studentList();
|
|
studentList();
|
|
|
addStudentListScroll();
|
|
addStudentListScroll();
|
|
|
console.log(row, "编辑");
|
|
console.log(row, "编辑");
|
|
|
- addMemberRuleForm.serialNumber = row.cardNo; // 编号
|
|
|
|
|
|
|
+ addMemberRuleForm.serialNumber = row.cardNo; // 学号
|
|
|
addMemberRuleForm.name = row.name; // 姓名
|
|
addMemberRuleForm.name = row.name; // 姓名
|
|
|
addMemberRuleForm.identity = row.identityId; // 身份ID
|
|
addMemberRuleForm.identity = row.identityId; // 身份ID
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ postList();
|
|
|
|
|
+ });
|
|
|
addMemberRuleForm.icCard = row.idCard; // 身份证
|
|
addMemberRuleForm.icCard = row.idCard; // 身份证
|
|
|
addMemberRuleForm.sex = row.sexId; // 性别 女:0男:1
|
|
addMemberRuleForm.sex = row.sexId; // 性别 女:0男:1
|
|
|
addMemberRuleForm.department = row.departmentId; // 部门ID
|
|
addMemberRuleForm.department = row.departmentId; // 部门ID
|
|
|
addMemberRuleForm.facePhoto = row.headImage; // 人脸照片
|
|
addMemberRuleForm.facePhoto = row.headImage; // 人脸照片
|
|
|
addMemberRuleForm.grade = Number(row.grade); // 年级
|
|
addMemberRuleForm.grade = Number(row.grade); // 年级
|
|
|
- classsList();
|
|
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ classsList();
|
|
|
|
|
+ });
|
|
|
addMemberRuleForm.institute = row.college; // 学院
|
|
addMemberRuleForm.institute = row.college; // 学院
|
|
|
addMemberRuleForm.specialty = row.speciality; // 专业
|
|
addMemberRuleForm.specialty = row.speciality; // 专业
|
|
|
addMemberRuleForm.class = row.schoolClass; // 班级
|
|
addMemberRuleForm.class = row.schoolClass; // 班级
|
|
|
|
|
+ addMemberRuleForm.timeGroupId = row.timeGroupId; // 时间组
|
|
|
addMemberRuleForm.school = row.campus; // 校区
|
|
addMemberRuleForm.school = row.campus; // 校区
|
|
|
addMemberRuleForm.dormitory = row.dormitoryNumber; // 宿舍号
|
|
addMemberRuleForm.dormitory = row.dormitoryNumber; // 宿舍号
|
|
|
addMemberRuleForm.phone = row.phone; // 手机号
|
|
addMemberRuleForm.phone = row.phone; // 手机号
|
|
|
if (row.affiliate) {
|
|
if (row.affiliate) {
|
|
|
addMemberRuleForm.contact = row.affiliate.split(","); // 联系人
|
|
addMemberRuleForm.contact = row.affiliate.split(","); // 联系人
|
|
|
} else {
|
|
} else {
|
|
|
- addMemberRuleForm.contact = "";
|
|
|
|
|
|
|
+ addMemberRuleForm.contact = [];
|
|
|
}
|
|
}
|
|
|
addMemberRuleForm.jobName = row.title; // 职称
|
|
addMemberRuleForm.jobName = row.title; // 职称
|
|
|
addMemberRuleForm.houseAddress = row.address; // 家庭住址
|
|
addMemberRuleForm.houseAddress = row.address; // 家庭住址
|
|
@@ -1720,7 +1878,7 @@ const confirmAddMember = async (formEl) => {
|
|
|
await formEl.validate(async (valid, fields) => {
|
|
await formEl.validate(async (valid, fields) => {
|
|
|
if (valid) {
|
|
if (valid) {
|
|
|
let data = {
|
|
let data = {
|
|
|
- cardNo: addMemberRuleForm.serialNumber, // 编号
|
|
|
|
|
|
|
+ cardNo: addMemberRuleForm.serialNumber, // 学号
|
|
|
name: addMemberRuleForm.name, // 姓名
|
|
name: addMemberRuleForm.name, // 姓名
|
|
|
identityId: addMemberRuleForm.identity, // 身份ID
|
|
identityId: addMemberRuleForm.identity, // 身份ID
|
|
|
idCard: addMemberRuleForm.icCard, // 身份证
|
|
idCard: addMemberRuleForm.icCard, // 身份证
|
|
@@ -1731,6 +1889,7 @@ const confirmAddMember = async (formEl) => {
|
|
|
college: addMemberRuleForm.institute, // 学院
|
|
college: addMemberRuleForm.institute, // 学院
|
|
|
speciality: addMemberRuleForm.specialty, // 专业
|
|
speciality: addMemberRuleForm.specialty, // 专业
|
|
|
schoolClass: addMemberRuleForm.class, // 班级
|
|
schoolClass: addMemberRuleForm.class, // 班级
|
|
|
|
|
+ timeGroupId: addMemberRuleForm.timeGroupId, // 时间组
|
|
|
campus: addMemberRuleForm.school, // 校区
|
|
campus: addMemberRuleForm.school, // 校区
|
|
|
dormitoryNumber: addMemberRuleForm.dormitory, // 宿舍号
|
|
dormitoryNumber: addMemberRuleForm.dormitory, // 宿舍号
|
|
|
phone: addMemberRuleForm.phone, // 手机号
|
|
phone: addMemberRuleForm.phone, // 手机号
|
|
@@ -1825,7 +1984,7 @@ const handlePreview = (file) => {
|
|
|
const handleChange = async (file, fileLists) => {
|
|
const handleChange = async (file, fileLists) => {
|
|
|
console.log(file, "1111");
|
|
console.log(file, "1111");
|
|
|
if (file.raw.type == "image/jpeg" || file.raw.type == "image/png") {
|
|
if (file.raw.type == "image/jpeg" || file.raw.type == "image/png") {
|
|
|
- if (file.size / 1024 <= 50) {
|
|
|
|
|
|
|
+ if (file.size / 1024 / 1024 <= 2) {
|
|
|
const cos = new COS({
|
|
const cos = new COS({
|
|
|
SecretId: "AKIDCPVZdcWIxgHpy5FYxVyPiqkZGrhdXUBg",
|
|
SecretId: "AKIDCPVZdcWIxgHpy5FYxVyPiqkZGrhdXUBg",
|
|
|
SecretKey: "NkyCN3cz97qKaeXLvHOGxOcdS8f184pL",
|
|
SecretKey: "NkyCN3cz97qKaeXLvHOGxOcdS8f184pL",
|
|
@@ -1835,6 +1994,33 @@ const handleChange = async (file, fileLists) => {
|
|
|
});
|
|
});
|
|
|
const files = file.raw;
|
|
const files = file.raw;
|
|
|
console.log(files);
|
|
console.log(files);
|
|
|
|
|
+ // 压缩图片
|
|
|
|
|
+ // console.log(compressImg);
|
|
|
|
|
+
|
|
|
|
|
+ var compressImgFile = await compressImg.compressImg(files);
|
|
|
|
|
+ // console.log(compressImgFile, "压缩图片");
|
|
|
|
|
+ const compressKey = "Compress" + file.raw.name; // 设置上传到 COS 后的文件名
|
|
|
|
|
+ cos.putObject(
|
|
|
|
|
+ {
|
|
|
|
|
+ Bucket: "wanzai-1306339220",
|
|
|
|
|
+ Region: "ap-shanghai",
|
|
|
|
|
+ Key: compressKey,
|
|
|
|
|
+ Body: compressImgFile,
|
|
|
|
|
+ onProgress: function (progressData) {
|
|
|
|
|
+ console.log(JSON.stringify(progressData));
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
|
|
+ function (err, data) {
|
|
|
|
|
+ if (err) {
|
|
|
|
|
+ console.error(err);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.log(data, "压缩图片获取成功");
|
|
|
|
|
+ addMemberRuleForm.facePhoto = "https://" + data.Location;
|
|
|
|
|
+ // 成功
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
|
|
+ // 上传cos桶
|
|
|
const key = file.raw.name; // 设置上传到 COS 后的文件名
|
|
const key = file.raw.name; // 设置上传到 COS 后的文件名
|
|
|
cos.putObject(
|
|
cos.putObject(
|
|
|
{
|
|
{
|
|
@@ -1850,14 +2036,14 @@ const handleChange = async (file, fileLists) => {
|
|
|
if (err) {
|
|
if (err) {
|
|
|
console.error(err);
|
|
console.error(err);
|
|
|
} else {
|
|
} else {
|
|
|
- console.log(data, "获取成功");
|
|
|
|
|
- addMemberRuleForm.facePhoto = "https://" + data.Location;
|
|
|
|
|
|
|
+ console.log(data, "图片获取成功");
|
|
|
|
|
+ addMemberRuleForm.compressFacePhoto = "https://" + data.Location;
|
|
|
// 成功
|
|
// 成功
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
);
|
|
);
|
|
|
} else {
|
|
} else {
|
|
|
- ElMessage.error("图片的大小不能超过50kb!");
|
|
|
|
|
|
|
+ ElMessage.error("图片的大小不能超过2M!");
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
ElMessage.error("图片格式必须为JPG/PNG格式!");
|
|
ElMessage.error("图片格式必须为JPG/PNG格式!");
|
|
@@ -1888,11 +2074,21 @@ const handleExceed = (files) => {
|
|
|
const addBatchClick = () => {
|
|
const addBatchClick = () => {
|
|
|
addBatchShow.value = true;
|
|
addBatchShow.value = true;
|
|
|
homeShow.value = false;
|
|
homeShow.value = false;
|
|
|
|
|
+ nextTick(() => {
|
|
|
|
|
+ const Ele = document.querySelector(".img-upload-demo .el-upload__input");
|
|
|
|
|
+ Ele["webkitdirectory"] = true;
|
|
|
|
|
+ });
|
|
|
};
|
|
};
|
|
|
const addBatchConcel = () => {
|
|
const addBatchConcel = () => {
|
|
|
homeShow.value = true;
|
|
homeShow.value = true;
|
|
|
addBatchShow.value = false;
|
|
addBatchShow.value = false;
|
|
|
};
|
|
};
|
|
|
|
|
+// 批量导入按钮
|
|
|
|
|
+const bulkImport = () => {
|
|
|
|
|
+ uploadImgList.value = uploadImgList.value.slice(1);
|
|
|
|
|
+ console.log(uploadImgList.value, "拼接好的图片地址");
|
|
|
|
|
+ console.log(upload2File.value, "导入的文件");
|
|
|
|
|
+};
|
|
|
// 批量导入模板下载
|
|
// 批量导入模板下载
|
|
|
const downLoadtempAdd = async () => {
|
|
const downLoadtempAdd = async () => {
|
|
|
let res = await axios({
|
|
let res = await axios({
|
|
@@ -1940,6 +2136,7 @@ const handleRemove2 = (uploadFile, uploadFiles) => {
|
|
|
// return item.uid != uploadFile.uid;
|
|
// return item.uid != uploadFile.uid;
|
|
|
// });
|
|
// });
|
|
|
// ruleForm.fileListJson = fileList.list;
|
|
// ruleForm.fileListJson = fileList.list;
|
|
|
|
|
+ upload2File.value = "";
|
|
|
};
|
|
};
|
|
|
// 点击图片的查看按钮
|
|
// 点击图片的查看按钮
|
|
|
const handlePreview2 = (file) => {
|
|
const handlePreview2 = (file) => {
|
|
@@ -1957,7 +2154,7 @@ const beforeAvatarUpload2 = (rawFile) => {
|
|
|
ElMessage.error("文件格式必须为xlsx格式!");
|
|
ElMessage.error("文件格式必须为xlsx格式!");
|
|
|
return false;
|
|
return false;
|
|
|
} else if (rawFile.size / 1024 / 1024 > 100) {
|
|
} else if (rawFile.size / 1024 / 1024 > 100) {
|
|
|
- ElMessage.error("图片的大小不能超过100MB!");
|
|
|
|
|
|
|
+ ElMessage.error("文件的大小不能超过100MB!");
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
return true;
|
|
return true;
|
|
@@ -1966,6 +2163,7 @@ const beforeAvatarUpload2 = (rawFile) => {
|
|
|
const handleChange2 = async (file, fileLists) => {
|
|
const handleChange2 = async (file, fileLists) => {
|
|
|
console.log(file, "1111");
|
|
console.log(file, "1111");
|
|
|
// fileList.list.push(file);
|
|
// fileList.list.push(file);
|
|
|
|
|
+ upload2File.value = file.raw;
|
|
|
};
|
|
};
|
|
|
// 可以获取图片参数
|
|
// 可以获取图片参数
|
|
|
const handleUpload2 = async (file) => {
|
|
const handleUpload2 = async (file) => {
|
|
@@ -1995,6 +2193,82 @@ const handleUpload2 = async (file) => {
|
|
|
// ruleForm.fileListJson = fileList.list;
|
|
// ruleForm.fileListJson = fileList.list;
|
|
|
// }
|
|
// }
|
|
|
};
|
|
};
|
|
|
|
|
+// 上传文件时覆盖上一个文件
|
|
|
|
|
+const handleExceed2 = (files) => {
|
|
|
|
|
+ upload2.value.clearFiles();
|
|
|
|
|
+ const file = files[0];
|
|
|
|
|
+ file.uid = genFileId();
|
|
|
|
|
+ upload2.value.handleStart(file);
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// 移出照片
|
|
|
|
|
+const handleRemoveImgUpload = (uploadFile, uploadFiles) => {
|
|
|
|
|
+ // console.log(uploadFile.uid, uploadFiles);
|
|
|
|
|
+ // fileList.list = fileList.list.filter((item) => {
|
|
|
|
|
+ // return item.uid != uploadFile.uid;
|
|
|
|
|
+ // });
|
|
|
|
|
+ // ruleForm.fileListJson = fileList.list;
|
|
|
|
|
+};
|
|
|
|
|
+// 点击图片的查看按钮
|
|
|
|
|
+const handlePreviewImgUpload = (file) => {
|
|
|
|
|
+ // imgUrl.value = file.url;
|
|
|
|
|
+ // imgVisible.value = true;
|
|
|
|
|
+ console.log(file);
|
|
|
|
|
+};
|
|
|
|
|
+// 限制上传图片的大小
|
|
|
|
|
+const beforeAvatarUploadImgUpload = (rawFile) => {
|
|
|
|
|
+ console.log(rawFile.type, "文件类型");
|
|
|
|
|
+ if (rawFile.type !== "image/jpeg" && rawFile.type !== "image/png") {
|
|
|
|
|
+ ElMessage.error("文件格式必须为jpg或png格式!");
|
|
|
|
|
+ return false;
|
|
|
|
|
+ } else if (rawFile.size / 1024 / 1024 > 2) {
|
|
|
|
|
+ ElMessage.error("图片的大小不能超过2MB!");
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
|
|
+};
|
|
|
|
|
+// 添加照片时往fileList列表中添加图片信息
|
|
|
|
|
+const handleChangeImgUpload = async (file, fileLists) => {
|
|
|
|
|
+ console.log(file, "1111");
|
|
|
|
|
+ // fileList.list.push(file);
|
|
|
|
|
+ uploadImgList.value = "";
|
|
|
|
|
+};
|
|
|
|
|
+// 可以获取图片参数
|
|
|
|
|
+const handleUploadImgUpload = async (file) => {
|
|
|
|
|
+ console.log(file, "22222222");
|
|
|
|
|
+ const cos = new COS({
|
|
|
|
|
+ SecretId: "AKIDCPVZdcWIxgHpy5FYxVyPiqkZGrhdXUBg",
|
|
|
|
|
+ SecretKey: "NkyCN3cz97qKaeXLvHOGxOcdS8f184pL",
|
|
|
|
|
+ SecurityToken: "1306339220",
|
|
|
|
|
+ Bucket: "wanzai-1306339220",
|
|
|
|
|
+ Region: "ap-shanghai",
|
|
|
|
|
+ });
|
|
|
|
|
+ const files = file.file;
|
|
|
|
|
+ console.log(files);
|
|
|
|
|
+ const compressKey = file.file.name; // 设置上传到 COS 后的文件名
|
|
|
|
|
+ cos.putObject(
|
|
|
|
|
+ {
|
|
|
|
|
+ Bucket: "wanzai-1306339220",
|
|
|
|
|
+ Region: "ap-shanghai",
|
|
|
|
|
+ Key: compressKey,
|
|
|
|
|
+ Body: files,
|
|
|
|
|
+ onProgress: function (progressData) {
|
|
|
|
|
+ console.log(JSON.stringify(progressData));
|
|
|
|
|
+ },
|
|
|
|
|
+ },
|
|
|
|
|
+ function (err, data) {
|
|
|
|
|
+ if (err) {
|
|
|
|
|
+ console.error(err);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.log(data, "压缩图片获取成功");
|
|
|
|
|
+ uploadImgList.value =
|
|
|
|
|
+ uploadImgList.value + "," + "https://" + data.Location;
|
|
|
|
|
+ // 成功
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ );
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
// 分页
|
|
// 分页
|
|
|
const handleAddBatch = (value) => {
|
|
const handleAddBatch = (value) => {
|
|
|
// console.log(value);
|
|
// console.log(value);
|
|
@@ -2182,6 +2456,7 @@ const confirmMoveMember = async () => {
|
|
|
console.log(res, "部门树形数据");
|
|
console.log(res, "部门树形数据");
|
|
|
if (res.data.code == 200) {
|
|
if (res.data.code == 200) {
|
|
|
moveMemberVisible.value = false;
|
|
moveMemberVisible.value = false;
|
|
|
|
|
+ getList();
|
|
|
ElMessage({
|
|
ElMessage({
|
|
|
type: "success",
|
|
type: "success",
|
|
|
showClose: true,
|
|
showClose: true,
|
|
@@ -2319,7 +2594,7 @@ const importExcel = async () => {
|
|
|
ElMessage({
|
|
ElMessage({
|
|
|
type: "success",
|
|
type: "success",
|
|
|
showClose: true,
|
|
showClose: true,
|
|
|
- message: res.data.message,
|
|
|
|
|
|
|
+ message: "导出成功",
|
|
|
center: true,
|
|
center: true,
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
@@ -2351,6 +2626,7 @@ onBeforeMount(async () => {
|
|
|
api.value = store.state.user.api;
|
|
api.value = store.state.user.api;
|
|
|
getDepartment(); // 左边部门树形结构
|
|
getDepartment(); // 左边部门树形结构
|
|
|
classDataList(); // 添加成员中 获取身份数据下拉、年级数据下拉、班级数据下拉
|
|
classDataList(); // 添加成员中 获取身份数据下拉、年级数据下拉、班级数据下拉
|
|
|
|
|
+ postList(); // 职务数据
|
|
|
});
|
|
});
|
|
|
onUnmounted(() => {
|
|
onUnmounted(() => {
|
|
|
// document.removeEventListener("keyup", Enters);
|
|
// document.removeEventListener("keyup", Enters);
|
|
@@ -2359,7 +2635,7 @@ onUnmounted(() => {
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
|
.content-box {
|
|
.content-box {
|
|
|
- min-width: 800px;
|
|
|
|
|
|
|
+ min-width: 1200px;
|
|
|
width: calc(100vw - 260px);
|
|
width: calc(100vw - 260px);
|
|
|
height: calc(100vh - 105px);
|
|
height: calc(100vh - 105px);
|
|
|
margin: 20px auto;
|
|
margin: 20px auto;
|
|
@@ -2611,6 +2887,7 @@ onUnmounted(() => {
|
|
|
.addMember {
|
|
.addMember {
|
|
|
flex: 1;
|
|
flex: 1;
|
|
|
height: 100%;
|
|
height: 100%;
|
|
|
|
|
+ min-width: 900px;
|
|
|
// margin-right: 20px;
|
|
// margin-right: 20px;
|
|
|
border-radius: 8px;
|
|
border-radius: 8px;
|
|
|
box-shadow: 0px 3px 10px rgba(0, 97, 255, 0.2);
|
|
box-shadow: 0px 3px 10px rgba(0, 97, 255, 0.2);
|
|
@@ -2658,9 +2935,8 @@ onUnmounted(() => {
|
|
|
height: calc(100% - 61px);
|
|
height: calc(100% - 61px);
|
|
|
// margin: 10px 0 0 0;
|
|
// margin: 10px 0 0 0;
|
|
|
.form {
|
|
.form {
|
|
|
- height: 98%;
|
|
|
|
|
|
|
+ height: 100%;
|
|
|
overflow: auto;
|
|
overflow: auto;
|
|
|
- margin-top: 5px;
|
|
|
|
|
.el-form-item {
|
|
.el-form-item {
|
|
|
.facePhoto {
|
|
.facePhoto {
|
|
|
img {
|
|
img {
|
|
@@ -2672,6 +2948,18 @@ onUnmounted(() => {
|
|
|
display: none;
|
|
display: none;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ .imgUpload {
|
|
|
|
|
+ margin-top: 5px;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ .upload-demo {
|
|
|
|
|
+ margin-right: 10px;
|
|
|
|
|
+ }
|
|
|
|
|
+ .img-upload-demo {
|
|
|
|
|
+ :deep(.el-upload-list) {
|
|
|
|
|
+ display: none;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
.startImport {
|
|
.startImport {
|
|
|
.el-button {
|
|
.el-button {
|
|
|
width: 500px;
|
|
width: 500px;
|