|
|
@@ -24,7 +24,7 @@
|
|
|
<div class="title" @click="nodeClick(node, data)">
|
|
|
<img src="@/assets/images/folder.png" alt="" />
|
|
|
<!-- <img src="@/assets/images/document.png" alt="" /> -->
|
|
|
- <span :class="data.name == treeNodeName ? 'nodeClick' : ''">{{
|
|
|
+ <span :class="data.id == departmentId ? 'nodeClick' : ''">{{
|
|
|
data.name
|
|
|
}}</span>
|
|
|
</div>
|
|
|
@@ -111,9 +111,9 @@
|
|
|
<el-dropdown-item @click="addBatchClick"
|
|
|
>批量导入</el-dropdown-item
|
|
|
>
|
|
|
- <el-dropdown-item @click="delBatchClick"
|
|
|
+ <!-- <el-dropdown-item @click="delBatchClick"
|
|
|
>批量删除</el-dropdown-item
|
|
|
- >
|
|
|
+ > -->
|
|
|
</el-dropdown-menu>
|
|
|
</template>
|
|
|
</el-dropdown>
|
|
|
@@ -145,6 +145,13 @@
|
|
|
>导出用户</el-button
|
|
|
>
|
|
|
</el-tooltip>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ color="rgba(0, 97, 255, 1)"
|
|
|
+ @click="DelRecordClick"
|
|
|
+ plain
|
|
|
+ >删除记录</el-button
|
|
|
+ >
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="footer" v-loading="loading">
|
|
|
@@ -253,7 +260,13 @@
|
|
|
label="职务 :"
|
|
|
:prop="addMemberRuleForm.identity == 3 ? 'duty' : ''"
|
|
|
>
|
|
|
- <el-select
|
|
|
+ <el-tooltip
|
|
|
+ class="box-item"
|
|
|
+ effect="dark"
|
|
|
+ content="请先选择身份"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
v-model="addMemberRuleForm.duty"
|
|
|
placeholder="请选择职务"
|
|
|
style="width: 500px"
|
|
|
@@ -264,6 +277,8 @@
|
|
|
:value="`${i.id}`"
|
|
|
/>
|
|
|
</el-select>
|
|
|
+ </el-tooltip>
|
|
|
+
|
|
|
</el-form-item>
|
|
|
<el-form-item label="身份证号 :" prop="icCard">
|
|
|
<el-input
|
|
|
@@ -276,7 +291,7 @@
|
|
|
<el-form-item label="性别 :" prop="sex">
|
|
|
<el-radio-group v-model="addMemberRuleForm.sex">
|
|
|
<el-radio :label="1">男</el-radio>
|
|
|
- <el-radio :label="0">女</el-radio>
|
|
|
+ <el-radio :label="2">女</el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="部门 :" prop="department">
|
|
|
@@ -336,7 +351,7 @@
|
|
|
<el-form-item
|
|
|
v-if="addMemberRuleForm.identity != 1"
|
|
|
label="年级 :"
|
|
|
- :prop="addMemberRuleForm.identity == 3 ? '' : 'grade'"
|
|
|
+ :prop="(addMemberRuleForm.identity == 3 && addMemberRuleForm.duty!=1) ? '' : 'grade'"
|
|
|
>
|
|
|
<el-select
|
|
|
v-model="addMemberRuleForm.grade"
|
|
|
@@ -354,7 +369,7 @@
|
|
|
<el-form-item
|
|
|
v-if="addMemberRuleForm.identity != 1"
|
|
|
label="班级 :"
|
|
|
- :prop="addMemberRuleForm.identity == 3 ? '' : 'class'"
|
|
|
+ :prop="(addMemberRuleForm.identity == 3&& addMemberRuleForm.duty!=1) ? '' : 'class'"
|
|
|
>
|
|
|
<el-select
|
|
|
v-model="addMemberRuleForm.class"
|
|
|
@@ -464,8 +479,8 @@
|
|
|
<el-option
|
|
|
v-for="item in conteactListData"
|
|
|
:key="item.id"
|
|
|
- :label="item.name"
|
|
|
- :value="`${item.id}`"
|
|
|
+ :label="`${item.name}·${item.id}`"
|
|
|
+ :value="`${item.name}·${item.id}`"
|
|
|
>
|
|
|
<span style="float: left">{{ item.name }}</span>
|
|
|
<span
|
|
|
@@ -547,7 +562,7 @@
|
|
|
</div>
|
|
|
<div class="content">
|
|
|
<div class="form">
|
|
|
- <div class="imgUpload">
|
|
|
+ <div class="imgUpload" v-loading="allImgShow" element-loading-text="导入中...">
|
|
|
<el-upload
|
|
|
style="width: 500px"
|
|
|
class="upload-demo"
|
|
|
@@ -580,11 +595,13 @@
|
|
|
drag
|
|
|
action="#"
|
|
|
multiple
|
|
|
+ ref="allImgUpload"
|
|
|
:on-preview="handlePreviewImgUpload"
|
|
|
:on-remove="handleRemoveImgUpload"
|
|
|
:on-change="handleChangeImgUpload"
|
|
|
:http-request="handleUploadImgUpload"
|
|
|
:before-upload="beforeAvatarUploadImgUpload"
|
|
|
+ :on-success="handleSuccessImgUpload"
|
|
|
>
|
|
|
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
|
|
<div class="el-upload__text">
|
|
|
@@ -612,9 +629,14 @@
|
|
|
plain
|
|
|
>开始导入</el-button
|
|
|
>
|
|
|
+ <span
|
|
|
+ style="width: 120px;margin-left:20px;cursor: pointer;color:rgba(0, 97, 255, 1)"
|
|
|
+ @click="resetImport"
|
|
|
+ >重置</span
|
|
|
+ >
|
|
|
<span class="downLoad" @click="downLoadtempAdd">下载模板</span>
|
|
|
</div>
|
|
|
- <div class="tableTitle">导入历史</div>
|
|
|
+ <!-- <div class="tableTitle">导入历史</div>
|
|
|
<div class="footer">
|
|
|
<el-table
|
|
|
:row-class-name="tableRowClassName"
|
|
|
@@ -654,20 +676,6 @@
|
|
|
<div class="look" @click="lookClick(scope.row)">
|
|
|
点击查看
|
|
|
</div>
|
|
|
- <!-- <el-popconfirm
|
|
|
- width="220"
|
|
|
- confirm-button-text="确认"
|
|
|
- cancel-button-text="取消"
|
|
|
- :icon="InfoFilled"
|
|
|
- icon-color="#f89626"
|
|
|
- title="是否删除此房型?"
|
|
|
- @confirm="del(scope.row)"
|
|
|
- @cancel="cancelEvent"
|
|
|
- >
|
|
|
- <template #reference>
|
|
|
- <div class="del">删除</div>
|
|
|
- </template>
|
|
|
- </el-popconfirm> -->
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
@@ -683,7 +691,61 @@
|
|
|
@update:current-page="handleAddBatch"
|
|
|
/>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 删除记录页面 -->
|
|
|
+ <div class="delRecord" v-if="delRecordShow">
|
|
|
+ <div class="left">
|
|
|
+ <img src="@/assets/images/close.png" alt="" @click="delRecordClose" />
|
|
|
+ <span class="add">{{ addMemberTitle }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="scorll">
|
|
|
+ <div class="footer" v-loading="loading">
|
|
|
+ <el-table
|
|
|
+ :row-class-name="tableRowClassName"
|
|
|
+ :data="delRecordDatas"
|
|
|
+ @selection-change="handleSelectionChange"
|
|
|
+ style="width: 100%"
|
|
|
+ :header-cell-style="{
|
|
|
+ background: 'rgba(240, 243, 247, 1)',
|
|
|
+ height: '50px',
|
|
|
+ border: 0,
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ <el-table-column align="center" prop="name" label="姓名" />
|
|
|
+ <el-table-column align="center" prop="identityStr" label="身份" />
|
|
|
+ <el-table-column align="center" prop="departmentStr" label="部门" />
|
|
|
+ <el-table-column align="center" prop="cardNo" label="学号" />
|
|
|
+ <el-table-column align="center" prop="img" label="人脸照片">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <div class="img">
|
|
|
+ <img @click="imgClick(row)" :src="row.headImage" alt="" />
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <!-- <el-table-column align="center" label="操作" width="200">
|
|
|
+ <template #default="scope">
|
|
|
+ <div class="edit">
|
|
|
+ <div class="look" @click="editClick(scope.row)">编辑</div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column> -->
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 分页组件 -->
|
|
|
+ <div class="pageSize">
|
|
|
+ <span></span>
|
|
|
+ <el-pagination
|
|
|
+ background
|
|
|
+ :current-page="delRecordCurrentPage"
|
|
|
+ :page-size="delRecordPageSize"
|
|
|
+ layout="total, prev, pager, next, jumper, slot"
|
|
|
+ :total="delRecordTotal"
|
|
|
+ @update:current-page="handleCurrentChange"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -1052,6 +1114,7 @@ import { dayjs } from "element-plus";
|
|
|
import lodash from "lodash";
|
|
|
import axios from "axios";
|
|
|
import compressImg from "@/utils/compressImg.js";
|
|
|
+import eds from "@/utils/eds.js";
|
|
|
import { useStore } from "vuex";
|
|
|
const store = useStore();
|
|
|
const api = ref("");
|
|
|
@@ -1238,11 +1301,27 @@ const conteactLoading = ref(false); // 联系人下拉框搜索时加载
|
|
|
|
|
|
const upload = ref(); // 人脸照片
|
|
|
// 表单验证
|
|
|
+const checkPhone=(rule, value, callback)=>{
|
|
|
+ var reg = /^(0|\+?86|17951)?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/
|
|
|
+ if (!reg.test(value)) {
|
|
|
+ callback(new Error("手机号格式不对"));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+}
|
|
|
+const checkIccard=(rule, value, callback)=>{
|
|
|
+ var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
|
|
|
+ if (!reg.test(value)) {
|
|
|
+ callback(new Error("身份证号格式不对"));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+}
|
|
|
const addMemberRules = reactive({
|
|
|
serialNumber: [{ required: true, message: "学号不能为空", trigger: "blur" }],
|
|
|
name: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
|
|
|
identity: [{ required: true, message: "身份不能为空", trigger: "change" }],
|
|
|
- icCard: [{ required: true, message: "身份证号不能为空", trigger: "blur" }],
|
|
|
+ icCard: [{ required: true, message: "身份证号不能为空", trigger: "blur" },{ validator: checkIccard, trigger: "blur" }],
|
|
|
sex: [{ required: true, message: "性别不能为空", trigger: "blur" }],
|
|
|
department: [{ required: true, message: "部门不能为空", trigger: "change" }],
|
|
|
facePhoto: [{ required: true, message: "人脸照片不能为空", trigger: "blur" }],
|
|
|
@@ -1252,7 +1331,8 @@ const addMemberRules = reactive({
|
|
|
class: [{ required: true, message: "班级不能为空", trigger: "change" }],
|
|
|
// school: [{ required: true, message: "校区不能为空", trigger: "blur" }],
|
|
|
// dormitory: [{ required: true, message: "宿舍号不能为空", trigger: "blur" }],
|
|
|
- phone: [{ required: true, message: "手机号不能为空", trigger: "blur" }],
|
|
|
+ phone: [{ required: true, message: "手机号不能为空", trigger: "blur" },
|
|
|
+ { validator: checkPhone, trigger: "blur" }],
|
|
|
contact: [{ required: true, message: "关联人不能为空", trigger: "blur" }],
|
|
|
// jobName: [{ required: true, message: "职称不能为空", trigger: "blur" }],
|
|
|
houseAddress: [
|
|
|
@@ -1313,6 +1393,9 @@ const addBatch_currentPage = ref(1); // 当前页
|
|
|
const addBatch_pageSize = ref(7);
|
|
|
const addBatch_total = ref(8); // 当前总数
|
|
|
const upload2 = ref(); // ref 导入文件ref
|
|
|
+const allImgUpload = ref(); // ref 导入图片ref
|
|
|
+const allImgNum = ref(0); // 导入图片的数量
|
|
|
+const allImgShow = ref(false); // 导入时的加载
|
|
|
const upload2File = ref(); // 批量导入的文件
|
|
|
const uploadImgList = ref(); // 批量导入的图片列表
|
|
|
|
|
|
@@ -1369,8 +1452,12 @@ const moveTree = ref();
|
|
|
const moveSearchInput = ref(); // 移动部门中关键字搜索
|
|
|
const treeSelData = reactive({ list: [] }); //
|
|
|
|
|
|
-// 注销账号
|
|
|
-// const closeAccountVisible = ref(false);
|
|
|
+// 删除记录页面
|
|
|
+const delRecordDatas=ref() // 删除记录
|
|
|
+const delRecordTotal=ref()// 删除记录数量
|
|
|
+const delRecordCurrentPage=ref(1)
|
|
|
+const delRecordPageSize=ref(8)
|
|
|
+const delRecordShow = ref(false);
|
|
|
|
|
|
// 勾选删除
|
|
|
const selDelVisible = ref(false);
|
|
|
@@ -1407,11 +1494,11 @@ const getList = async () => {
|
|
|
},
|
|
|
params: data,
|
|
|
});
|
|
|
- console.log(res, "用户列表");
|
|
|
+ console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "用户列表");
|
|
|
if (res.data.code == 200) {
|
|
|
loading.value = false;
|
|
|
- tableData.list = res.data.data.list;
|
|
|
- total.value = res.data.data.totalCount;
|
|
|
+ tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
|
|
|
+ total.value = JSON.parse(eds.decryptDes(res.data.data)).totalCount;
|
|
|
// ElMessage({
|
|
|
// type: "success",
|
|
|
// showClose: true,
|
|
|
@@ -1442,16 +1529,16 @@ const getDepartment = async () => {
|
|
|
},
|
|
|
params: data,
|
|
|
});
|
|
|
- console.log(res, "部门树形数据");
|
|
|
+ console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "部门树形数据");
|
|
|
if (res.data.code == 200) {
|
|
|
loading.value = false;
|
|
|
if (treeNodeId.value && treeNodeName.value) {
|
|
|
} else {
|
|
|
- treeNodeId.value = res.data.data[0].id;
|
|
|
- treeNodeName.value = res.data.data[0].name;
|
|
|
+ treeNodeId.value = JSON.parse(eds.decryptDes(res.data.data))[0].id;
|
|
|
+ treeNodeName.value = JSON.parse(eds.decryptDes(res.data.data))[0].name;
|
|
|
getList();
|
|
|
}
|
|
|
- dataSource.value = res.data.data;
|
|
|
+ dataSource.value = JSON.parse(eds.decryptDes(res.data.data));
|
|
|
// ElMessage({
|
|
|
// type: "success",
|
|
|
// showClose: true,
|
|
|
@@ -1644,8 +1731,8 @@ const classDataList = async () => {
|
|
|
},
|
|
|
// params: data,
|
|
|
});
|
|
|
- console.log(identity, "身份下拉数据");
|
|
|
- identityData.value = identity.data.data;
|
|
|
+ console.log(identity,JSON.parse(eds.decryptDes(identity.data.data)), "身份下拉数据");
|
|
|
+ identityData.value = JSON.parse(eds.decryptDes(identity.data.data));
|
|
|
let grade = await axios({
|
|
|
method: "get",
|
|
|
url: api.value + "/wanzai/api/smartGrade/querySmartGrades",
|
|
|
@@ -1656,7 +1743,7 @@ const classDataList = async () => {
|
|
|
// params: data,
|
|
|
});
|
|
|
console.log(grade, "年级下拉数据");
|
|
|
- gradeData.value = grade.data.data;
|
|
|
+ gradeData.value = JSON.parse(eds.decryptDes(grade.data.data));
|
|
|
|
|
|
let timeGroupId = await axios({
|
|
|
method: "get",
|
|
|
@@ -1668,7 +1755,7 @@ const classDataList = async () => {
|
|
|
// params: data,
|
|
|
});
|
|
|
console.log(timeGroupId, "时间组下拉数据");
|
|
|
- timeGroupList.value = timeGroupId.data.data;
|
|
|
+ timeGroupList.value = JSON.parse(eds.decryptDes(timeGroupId.data.data));
|
|
|
};
|
|
|
// 联系人分页数据
|
|
|
const studentList = async () => {
|
|
|
@@ -1688,9 +1775,11 @@ const studentList = async () => {
|
|
|
},
|
|
|
params: data,
|
|
|
});
|
|
|
- console.log(res, "联系人数据");
|
|
|
- conteactListData.value = res.data.data.list;
|
|
|
- conteactListTotalPage.value = res.data.data.totalPage;
|
|
|
+ console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "联系人数据");
|
|
|
+ conteactListData.value = JSON.parse(eds.decryptDes(res.data.data)).list;
|
|
|
+ conteactListTotalPage.value = JSON.parse(
|
|
|
+ eds.decryptDes(res.data.data)
|
|
|
+ ).totalPage;
|
|
|
};
|
|
|
// 职务分页数据
|
|
|
const postList = async () => {
|
|
|
@@ -1706,8 +1795,17 @@ const postList = async () => {
|
|
|
},
|
|
|
params: data,
|
|
|
});
|
|
|
- console.log(post, "职务下拉数据");
|
|
|
- postData.value = post.data.data;
|
|
|
+ console.log(post);
|
|
|
+ if (post.data.code == 200) {
|
|
|
+ console.log(
|
|
|
+ post,
|
|
|
+ JSON.parse(eds.decryptDes(post.data.data)),
|
|
|
+ "职务下拉数据"
|
|
|
+ );
|
|
|
+ postData.value = JSON.parse(eds.decryptDes(post.data.data));
|
|
|
+ } else {
|
|
|
+ postData.value = [];
|
|
|
+ }
|
|
|
};
|
|
|
// 班级下拉数据
|
|
|
const classsList = async () => {
|
|
|
@@ -1724,7 +1822,9 @@ const classsList = async () => {
|
|
|
params: data,
|
|
|
});
|
|
|
console.log(classs, "班级下拉数据");
|
|
|
- classsData.value = classs.data.data;
|
|
|
+ if(classs.data.code==200){
|
|
|
+ classsData.value = JSON.parse(eds.decryptDes(classs.data.data));
|
|
|
+ }
|
|
|
};
|
|
|
// 改变身份加载职务数据
|
|
|
const identityChange = () => {
|
|
|
@@ -1779,7 +1879,7 @@ const addStudentListScroll = () => {
|
|
|
console.log(res, "联系人数据");
|
|
|
conteactListData.value = [
|
|
|
...conteactListData.value,
|
|
|
- ...res.data.data.list,
|
|
|
+ ...JSON.parse(eds.decryptDes(res.data.data)).list,
|
|
|
];
|
|
|
} else {
|
|
|
console.log("数据全部加载完成");
|
|
|
@@ -1799,8 +1899,10 @@ const conteactMethod = (query) => {
|
|
|
// 添加成员弹窗
|
|
|
const addMemberClick = () => {
|
|
|
addMemberTitle.value = "添加成员";
|
|
|
+ conteactListCurrentPage.value=1 // 联系人分页重新赋值为1
|
|
|
homeShow.value = false;
|
|
|
addMemberShow.value = true;
|
|
|
+ delRecordShow.value=false
|
|
|
studentList();
|
|
|
addStudentListScroll();
|
|
|
addMemberRuleForm.serialNumber = "";
|
|
|
@@ -1833,8 +1935,10 @@ const addMemberClick = () => {
|
|
|
// 编辑成员弹窗
|
|
|
const editClick = (row) => {
|
|
|
addMemberTitle.value = "编辑成员";
|
|
|
+ conteactListCurrentPage.value=1 // 联系人分页重新赋值为1
|
|
|
homeShow.value = false;
|
|
|
addMemberShow.value = true;
|
|
|
+ delRecordShow.value=false
|
|
|
studentList();
|
|
|
addStudentListScroll();
|
|
|
console.log(row, "编辑");
|
|
|
@@ -1860,7 +1964,11 @@ const editClick = (row) => {
|
|
|
addMemberRuleForm.dormitory = row.dormitoryNumber; // 宿舍号
|
|
|
addMemberRuleForm.phone = row.phone; // 手机号
|
|
|
if (row.affiliate) {
|
|
|
- addMemberRuleForm.contact = row.affiliate.split(","); // 联系人
|
|
|
+ let arr=[]
|
|
|
+ row.affiliates.forEach(item=>{
|
|
|
+arr.push(`${item.name}·${item.id}`)
|
|
|
+ })
|
|
|
+ addMemberRuleForm.contact = arr; // 联系人
|
|
|
} else {
|
|
|
addMemberRuleForm.contact = [];
|
|
|
}
|
|
|
@@ -1877,6 +1985,13 @@ const confirmAddMember = async (formEl) => {
|
|
|
if (!formEl) return;
|
|
|
await formEl.validate(async (valid, fields) => {
|
|
|
if (valid) {
|
|
|
+ console.log( addMemberRuleForm.contact);
|
|
|
+ let arr=[]
|
|
|
+ addMemberRuleForm.contact.forEach(item=>{
|
|
|
+ let index = item.split("·")
|
|
|
+ arr.push(index[1])
|
|
|
+ })
|
|
|
+ console.log(arr);
|
|
|
let data = {
|
|
|
cardNo: addMemberRuleForm.serialNumber, // 学号
|
|
|
name: addMemberRuleForm.name, // 姓名
|
|
|
@@ -1893,7 +2008,7 @@ const confirmAddMember = async (formEl) => {
|
|
|
campus: addMemberRuleForm.school, // 校区
|
|
|
dormitoryNumber: addMemberRuleForm.dormitory, // 宿舍号
|
|
|
phone: addMemberRuleForm.phone, // 手机号
|
|
|
- affiliate: addMemberRuleForm.contact, // 联系人
|
|
|
+ affiliate: arr, // 联系人
|
|
|
title: addMemberRuleForm.jobName, // 职称
|
|
|
address: addMemberRuleForm.houseAddress, // 家庭住址
|
|
|
nation: addMemberRuleForm.nation, // 民族
|
|
|
@@ -1936,6 +2051,7 @@ const confirmAddMember = async (formEl) => {
|
|
|
});
|
|
|
homeShow.value = true;
|
|
|
addMemberShow.value = false;
|
|
|
+ delRecordShow.value=false
|
|
|
addMemberRef.value.resetFields();
|
|
|
getList();
|
|
|
} else {
|
|
|
@@ -1954,6 +2070,7 @@ const confirmAddMember = async (formEl) => {
|
|
|
const addMemberConcel = () => {
|
|
|
addMemberShow.value = false;
|
|
|
homeShow.value = true;
|
|
|
+ delRecordShow.value=false
|
|
|
addMemberRef.value.resetFields();
|
|
|
addMemberRuleForm.id = "";
|
|
|
};
|
|
|
@@ -2074,6 +2191,7 @@ const handleExceed = (files) => {
|
|
|
const addBatchClick = () => {
|
|
|
addBatchShow.value = true;
|
|
|
homeShow.value = false;
|
|
|
+ delRecordShow.value=false
|
|
|
nextTick(() => {
|
|
|
const Ele = document.querySelector(".img-upload-demo .el-upload__input");
|
|
|
Ele["webkitdirectory"] = true;
|
|
|
@@ -2082,34 +2200,36 @@ const addBatchClick = () => {
|
|
|
const addBatchConcel = () => {
|
|
|
homeShow.value = true;
|
|
|
addBatchShow.value = false;
|
|
|
+ delRecordShow.value=false
|
|
|
+ upload2File.value = "";
|
|
|
+ uploadImgList.value = "";
|
|
|
+ allImgUpload.value.clearFiles();
|
|
|
+ upload2.value.clearFiles();
|
|
|
};
|
|
|
-// 批量导入按钮
|
|
|
-const bulkImport = async () => {
|
|
|
- uploadImgList.value = uploadImgList.value.slice(0);
|
|
|
- console.log(uploadImgList.value, "拼接好的图片地址");
|
|
|
- console.log(upload2File.value, "导入的文件");
|
|
|
-
|
|
|
- const formData = new FormData();
|
|
|
- formData.append("file", upload2File.value);
|
|
|
- formData.append("headImage", uploadImgList.value);
|
|
|
|
|
|
+// 打开删除记录页面
|
|
|
+const DelRecordClick=async ()=>{
|
|
|
+ delRecordShow.value=true
|
|
|
+ delBatchShow.value = false;
|
|
|
+ homeShow.value = false;
|
|
|
+ addMemberTitle.value='删除记录'
|
|
|
+ let data = {
|
|
|
+ currentPage:delRecordCurrentPage.value,
|
|
|
+ pageCount:delRecordPageSize.value,
|
|
|
+ };
|
|
|
let res = await axios({
|
|
|
- method: "post",
|
|
|
- url: api.value + "/wanzai/api/smartUser/importExcelUsers",
|
|
|
+ method: "get",
|
|
|
+ url: api.value + "/wanzai/api/smartUser/queryUserDeletePage",
|
|
|
headers: {
|
|
|
// token: sessionStorage.getItem("token"),
|
|
|
// user_head: sessionStorage.getItem("userhead"),
|
|
|
},
|
|
|
- data: formData,
|
|
|
+ params: data,
|
|
|
});
|
|
|
- console.log(res, "确定批量导入");
|
|
|
+ console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "删除记录分页");
|
|
|
if (res.data.code == 200) {
|
|
|
- ElMessage({
|
|
|
- type: "success",
|
|
|
- showClose: true,
|
|
|
- message: res.data.message,
|
|
|
- center: true,
|
|
|
- });
|
|
|
+ delRecordDatas.value = JSON.parse(eds.decryptDes(res.data.data)).list;
|
|
|
+ delRecordTotal.value = JSON.parse(eds.decryptDes(res.data.data)).totalCount;
|
|
|
} else {
|
|
|
ElMessage({
|
|
|
type: "error",
|
|
|
@@ -2118,7 +2238,14 @@ const bulkImport = async () => {
|
|
|
center: true,
|
|
|
});
|
|
|
}
|
|
|
-};
|
|
|
+}
|
|
|
+// 关闭删除记录页面
|
|
|
+const delRecordClose=()=>{
|
|
|
+ delRecordShow.value=false
|
|
|
+ delBatchShow.value = false;
|
|
|
+ homeShow.value = true;
|
|
|
+}
|
|
|
+
|
|
|
// 批量导入模板下载
|
|
|
const downLoadtempAdd = async () => {
|
|
|
let res = await axios({
|
|
|
@@ -2130,10 +2257,14 @@ const downLoadtempAdd = async () => {
|
|
|
},
|
|
|
// params: data,
|
|
|
});
|
|
|
- console.log(res, "批量导入模板下载");
|
|
|
+ console.log(
|
|
|
+ res,
|
|
|
+ JSON.parse(eds.decryptDes(res.data.data)),
|
|
|
+ "批量导入模板下载"
|
|
|
+ );
|
|
|
|
|
|
if (res.data.code == 200) {
|
|
|
- var downloadPath = res.data.data;
|
|
|
+ var downloadPath = JSON.parse(eds.decryptDes(res.data.data));
|
|
|
// window.open(downloadPath);
|
|
|
window.location.href = downloadPath;
|
|
|
var downloadLink = document.createElement("a");
|
|
|
@@ -2247,25 +2378,30 @@ const handlePreviewImgUpload = (file) => {
|
|
|
};
|
|
|
// 限制上传图片的大小
|
|
|
const beforeAvatarUploadImgUpload = (rawFile) => {
|
|
|
- console.log(rawFile.type, "文件类型");
|
|
|
- if (rawFile.type !== "image/jpeg" && rawFile.type !== "image/png") {
|
|
|
+ // console.log(rawFile.type, "文件类型");
|
|
|
+ // console.log(rawFile.type == "image/jpeg",rawFile.type == "image/png");
|
|
|
+
|
|
|
+ if (rawFile.type == "image/jpeg" || rawFile.type == "image/png") {
|
|
|
+ if (rawFile.size / 1024 / 1024 > 2) {
|
|
|
+ ElMessage.error("图片的大小不能超过2MB!");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
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");
|
|
|
+ // console.log(file, "重新上传图片");
|
|
|
// fileList.list.push(file);
|
|
|
uploadImgList.value = "";
|
|
|
+ // allImgUpload.value.clearFiles();
|
|
|
};
|
|
|
// 可以获取图片参数
|
|
|
const handleUploadImgUpload = async (file) => {
|
|
|
- console.log(file, "22222222");
|
|
|
+ // console.log(file, "22222222");
|
|
|
const cos = new COS({
|
|
|
SecretId: "AKIDCPVZdcWIxgHpy5FYxVyPiqkZGrhdXUBg",
|
|
|
SecretKey: "NkyCN3cz97qKaeXLvHOGxOcdS8f184pL",
|
|
|
@@ -2274,7 +2410,7 @@ const handleUploadImgUpload = async (file) => {
|
|
|
Region: "ap-shanghai",
|
|
|
});
|
|
|
const files = file.file;
|
|
|
- console.log(files);
|
|
|
+ // console.log(files);
|
|
|
const compressKey = file.file.name; // 设置上传到 COS 后的文件名
|
|
|
cos.putObject(
|
|
|
{
|
|
|
@@ -2283,14 +2419,15 @@ const handleUploadImgUpload = async (file) => {
|
|
|
Key: compressKey,
|
|
|
Body: files,
|
|
|
onProgress: function (progressData) {
|
|
|
- console.log(JSON.stringify(progressData));
|
|
|
+ // console.log(JSON.stringify(progressData));
|
|
|
},
|
|
|
},
|
|
|
function (err, data) {
|
|
|
if (err) {
|
|
|
console.error(err);
|
|
|
} else {
|
|
|
- console.log(data, "图片获取成功");
|
|
|
+ // console.log(data, "图片获取成功");
|
|
|
+
|
|
|
uploadImgList.value =
|
|
|
uploadImgList.value + "," + "https://" + data.Location;
|
|
|
// 成功
|
|
|
@@ -2299,6 +2436,74 @@ const handleUploadImgUpload = async (file) => {
|
|
|
);
|
|
|
};
|
|
|
|
|
|
+// 文件上传成功时的钩子
|
|
|
+const handleSuccessImgUpload = (response, uploadFile, uploadFiles) => {
|
|
|
+ // console.log(response,uploadFile,uploadFiles,"上传成功");
|
|
|
+ console.log(uploadFiles.length, "上传成功");
|
|
|
+};
|
|
|
+// 重置按钮 重置上传文件
|
|
|
+const resetImport=()=>{
|
|
|
+ upload2File.value = "";
|
|
|
+ uploadImgList.value = "";
|
|
|
+ allImgUpload.value.clearFiles();
|
|
|
+ upload2.value.clearFiles();
|
|
|
+}
|
|
|
+// 批量导入按钮
|
|
|
+const bulkImport = async () => {
|
|
|
+ allImgShow.value=true;
|
|
|
+ if (upload2File.value && uploadImgList.value) {
|
|
|
+ } else {
|
|
|
+ allImgShow.value=false;
|
|
|
+ ElMessage({
|
|
|
+ type: "warning",
|
|
|
+ showClose: true,
|
|
|
+ message: "上传文件或图片不能为空",
|
|
|
+ center: true,
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // uploadImgList.value = uploadImgList.value.slice(1);
|
|
|
+ console.log(uploadImgList.value, "拼接好的图片地址");
|
|
|
+ console.log(upload2File.value, "导入的文件");
|
|
|
+
|
|
|
+ const formData = new FormData();
|
|
|
+ formData.append("file", upload2File.value);
|
|
|
+ formData.append("headImage", uploadImgList.value);
|
|
|
+
|
|
|
+ let res = await axios({
|
|
|
+ method: "post",
|
|
|
+ url: api.value + "/wanzai/api/smartUser/importExcelUsers",
|
|
|
+ headers: {
|
|
|
+ // token: sessionStorage.getItem("token"),
|
|
|
+ // user_head: sessionStorage.getItem("userhead"),
|
|
|
+ },
|
|
|
+ data: formData,
|
|
|
+ });
|
|
|
+ console.log(res, "确定批量导入");
|
|
|
+ if (res.data.code == 200) {
|
|
|
+ getList();
|
|
|
+ upload2File.value = "";
|
|
|
+ uploadImgList.value = "";
|
|
|
+ allImgUpload.value.clearFiles();
|
|
|
+ upload2.value.clearFiles();
|
|
|
+ allImgShow.value=false;
|
|
|
+ ElMessage({
|
|
|
+ type: "success",
|
|
|
+ showClose: true,
|
|
|
+ message: res.data.message,
|
|
|
+ center: true,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ allImgShow.value=false;
|
|
|
+ ElMessage({
|
|
|
+ type: "error",
|
|
|
+ showClose: true,
|
|
|
+ message: res.data.message,
|
|
|
+ center: true,
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
// 分页
|
|
|
const handleAddBatch = (value) => {
|
|
|
// console.log(value);
|
|
|
@@ -2309,10 +2514,12 @@ const handleAddBatch = (value) => {
|
|
|
const delBatchClick = () => {
|
|
|
delBatchShow.value = true;
|
|
|
homeShow.value = false;
|
|
|
+ delRecordShow.value=false
|
|
|
};
|
|
|
const delBatchConcel = () => {
|
|
|
homeShow.value = true;
|
|
|
delBatchShow.value = false;
|
|
|
+ delRecordShow.value=false
|
|
|
};
|
|
|
// 移出照片
|
|
|
const handleRemove3 = (uploadFile, uploadFiles) => {
|
|
|
@@ -2404,7 +2611,7 @@ const getMoveData = async () => {
|
|
|
});
|
|
|
console.log(res, "部门树形数据");
|
|
|
if (res.data.code == 200) {
|
|
|
- moveData.value = res.data.data;
|
|
|
+ moveData.value = JSON.parse(eds.decryptDes(res.data.data));
|
|
|
// 判断有没有右边有没有勾选好的部门,有就重新给树形图自动勾上
|
|
|
if (treeSelData.list.length) {
|
|
|
moveTree.value.setCheckedNodes(treeSelData.list);
|
|
|
@@ -2691,7 +2898,8 @@ onUnmounted(() => {
|
|
|
box-shadow: 0px 3px 10px rgba(0, 97, 255, 0.2);
|
|
|
background-color: #fff;
|
|
|
|
|
|
- .el-tree-node__content {
|
|
|
+ :deep(.el-tree-node__content) {
|
|
|
+ cursor: auto;
|
|
|
.custom-tree-node {
|
|
|
flex: 1;
|
|
|
display: flex;
|
|
|
@@ -2702,6 +2910,7 @@ onUnmounted(() => {
|
|
|
.title {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
+ cursor: pointer;
|
|
|
}
|
|
|
.nodeClick {
|
|
|
color: rgb(0, 97, 255);
|
|
|
@@ -2987,6 +3196,18 @@ onUnmounted(() => {
|
|
|
.img-upload-demo {
|
|
|
:deep(.el-upload-list) {
|
|
|
// display: none;
|
|
|
+ max-height: 130px;
|
|
|
+ overflow: auto;
|
|
|
+ // 整个滚动条
|
|
|
+ &::-webkit-scrollbar-track {
|
|
|
+ background-color: #daeeff;
|
|
|
+ }
|
|
|
+ // 滚动条的滚动区域(轨道)
|
|
|
+ &::-webkit-scrollbar {
|
|
|
+ background-color: #0888f8;
|
|
|
+ height: 3px;
|
|
|
+ width: 4px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -3162,6 +3383,133 @@ onUnmounted(() => {
|
|
|
// }
|
|
|
}
|
|
|
}
|
|
|
+ // 删除记录页面
|
|
|
+ .delRecord {
|
|
|
+ flex: 1;
|
|
|
+ height: 100%;
|
|
|
+ border-radius: 8px;
|
|
|
+ box-shadow: 0px 3px 10px rgba(0, 97, 255, 0.2);
|
|
|
+ background-color: #fff;
|
|
|
+
|
|
|
+ .scorll {
|
|
|
+ overflow: auto;
|
|
|
+ height: calc(100% - 61px);
|
|
|
+ }
|
|
|
+ .left {
|
|
|
+ // width: calc(100wh - 40px);
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ height: 60px;
|
|
|
+ padding: 0 30px;
|
|
|
+ border-bottom: 1px solid #ccc;
|
|
|
+ color: rgb(0, 0, 0);
|
|
|
+ font-size: 20px;
|
|
|
+ font-weight: 600;
|
|
|
+ img{
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ }
|
|
|
+ .add{
|
|
|
+ margin-left: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .middle {
|
|
|
+ width: 96%;
|
|
|
+ margin: 0 auto;
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+
|
|
|
+ .footer {
|
|
|
+ width: 96%;
|
|
|
+ height: calc(100% - 100px);
|
|
|
+ margin: 15px auto 25px;
|
|
|
+ min-height: 300px;
|
|
|
+
|
|
|
+ .el-table--fit {
|
|
|
+ height: 100% !important;
|
|
|
+ :deep(.el-table__header-wrapper) {
|
|
|
+ background-color: #000;
|
|
|
+ font-size: 14px;
|
|
|
+
|
|
|
+ tr {
|
|
|
+ // color: #000;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-table__row) {
|
|
|
+ height: 50px;
|
|
|
+ font-size: 14px;
|
|
|
+ // color: #000;
|
|
|
+ &:hover {
|
|
|
+ td {
|
|
|
+ background-color: rgba(223, 236, 254, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-table__row):nth-child(2n) {
|
|
|
+ .el-table-fixed-column--right {
|
|
|
+ background-color: rgba(240, 243, 247, 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-table__row td) {
|
|
|
+ padding: 0;
|
|
|
+ border: 0;
|
|
|
+ .img {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ margin: 5px 0;
|
|
|
+ img {
|
|
|
+ width: 60px;
|
|
|
+ height: 60px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-button--primary {
|
|
|
+ margin-left: 5px;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-table__body .even) {
|
|
|
+ background-color: #fff;
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.el-table__body .odd) {
|
|
|
+ background-color: rgba(240, 243, 247, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.edit) {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ color: rgba(111, 182, 184, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ :deep(.look) {
|
|
|
+ padding: 0 10px;
|
|
|
+ cursor: pointer;
|
|
|
+ color: rgba(30, 125, 251, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ .del {
|
|
|
+ padding: 0 10px;
|
|
|
+ color: rgba(212, 48, 48, 1);
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+
|
|
|
+ // :deep(.look):hover {
|
|
|
+ // color: red;
|
|
|
+ // }
|
|
|
+ // :deep(.del):hover {
|
|
|
+ // color: red;
|
|
|
+ // }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
.bgImg {
|
|
|
position: absolute;
|
|
|
left: 0;
|