From 10298137c4d5e646a6e297c4fa1c250c70432ca0 Mon Sep 17 00:00:00 2001 From: pengwei <2071057782@qq.com> Date: 星期二, 08 四月 2025 17:31:37 +0800 Subject: [PATCH] 最新代码 --- 项目代码/client/public/webconfig.js | 6 项目代码/client/src/views/tts/TheCurrentJob/Startjob.vue | 390 +++++++++++++++----- 项目代码/client/src/views/tts/TaskManagement/Taskmanagement.vue | 2 项目代码/client/src/api/login.js | 7 项目代码/client/src/views/Login.vue | 336 ++++++++++++++++- 项目代码/client/src/assets/TheCurrentJob/icon/nopouer.png | 0 项目代码/client/src/utils/index.js | 4 项目代码/client/src/api/user.js | 18 项目代码/client/src/views/tts/BasicInformation/Basicinformation.vue | 4 项目代码/client/src/views/tts/UserManagement/Usermanagement.vue | 338 ++++++++++------ 项目代码/client/src/views/tts/TaskManagement/Tasktemplates.vue | 2 项目代码/client/dist.7z | 0 项目代码/client/src/assets/TheCurrentJob/icon/pouer.png | 0 13 files changed, 844 insertions(+), 263 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/dist.7z" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/dist.7z" index ff00b08..32130d9 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/dist.7z" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/dist.7z" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/public/webconfig.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/public/webconfig.js" new file mode 100644 index 0000000..57cad9f --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/public/webconfig.js" @@ -0,0 +1,6 @@ +window.webConfig = { + "webApiDevelopment": "http://localhost:9291/", + "webApiProduction": "http://localhost:9291/", + "webApiDebug": "http://localhost:9291/", + "webSocketUrl": "ws://localhost:5174/", +} \ No newline at end of file diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/api/login.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/api/login.js" index 0fb5b38..d5bcfb8 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/api/login.js" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/api/login.js" @@ -1,11 +1,14 @@ import http from "./http"; //鑾峰彇楠岃瘉鐮佹帴鍙� -export const getCodeImg = () => http.get('api/User/getVierificationCode') +export const getCodeImg = () => http.get('api/User/getVierificationCode') //鐢ㄦ埛鐧诲綍鎺ュ彛 -export const login = (data,tenantId) => http.post(`/api/User/login`, data) +export const login = (data, tenantId) => http.post(`/api/User/login`, data) //鐢ㄦ埛娉ㄥ唽鎺ュ彛 export const register = (data) => http.post('api/Registry/UserRegistry', data) +//鍒犻櫎saveFace鐨勭収鐗� +export const CleanUnusedImages = () => http.get('/api/User/CleanUnusedImages') + diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/api/user.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/api/user.js" index 020e848..6ae0474 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/api/user.js" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/api/user.js" @@ -1,3 +1,4 @@ +import data from "@/views/builder/builderData"; import http from "./http"; //鑾峰彇楠岃瘉鐮佹帴鍙� @@ -13,11 +14,19 @@ //鑾峰彇鐢ㄦ埛鍒楄〃 export const GetUserList = (data) => http.post('/api/User/GetPageData', data) +//鑾峰彇鐢ㄦ埛鍒楄〃 +export const NewGetUserList = (data) => http.post('/api/User/GetUserFace', data) + //鏂板缓鐢ㄦ埛 export const AddUser = (data) => http.post('/api/User/AddData', data) +//鏂版柊寤虹敤鎴� +export const AdduserData = (data) => http.post('/api/User/AdduserData', data) //淇敼鐢ㄦ埛 export const UpdateUser = (data) => http.post('/api/User/UpdateData', data) + +//鏂版洿鏂扮敤鎴� +export const NewUpdateUser = (data) => http.post('/api/User/UpuserData', data) //鑾峰彇璐﹀彿淇℃伅 export const GetUserInfo = (data) => http.post('/api/User/getCurrentUserInfo', data) @@ -40,6 +49,15 @@ //缂栬緫鐢ㄦ埛 export const EditUserApi = (data) => http.post('/api/User/UploaUser', data) + +//鍒犻櫎鐢ㄦ埛 +export const DeleteUserData = (data) => http.post(`/api/User/DeleteUserData?userAccount=${data.userAccount}`) //淇濆瓨涓汉淇℃伅 export const Upuserbase = (data) => http.post('/api/User/Upuserbase', data) +//鐢ㄦ埛涓婁紶鍥剧墖 +export const UploadImg = (data) => http.post('/api/User/SaveFiles', data) + +//鑾峰彇鐧惧害浜戝垎缁� +export const FaceGetPageData = (data) => http.post('/api/FaceRecognition/GetPageData', data) + diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/assets/TheCurrentJob/icon/nopouer.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/assets/TheCurrentJob/icon/nopouer.png" new file mode 100644 index 0000000..309383e --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/assets/TheCurrentJob/icon/nopouer.png" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/assets/TheCurrentJob/icon/pouer.png" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/assets/TheCurrentJob/icon/pouer.png" new file mode 100644 index 0000000..ad3a926 --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/assets/TheCurrentJob/icon/pouer.png" Binary files differ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/utils/index.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/utils/index.js" index 83bc025..f356766 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/utils/index.js" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/utils/index.js" @@ -1,10 +1,8 @@ import { dayjs } from "element-plus"; // import XLSX from "xlsx"; //瀵煎叆xlsx -export const baseUrl = "http://115.159.85.185:9098/" -// http://115.159.85.185:9091/ +export const baseUrl = "http://192.168.0.80:5000/" // http://192.168.0.80:5000/ -// 115.159.85.185:9091 // http://115.159.85.185:9098/ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/Login.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/Login.vue" index 3f75935..bc1662c 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/Login.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/Login.vue" @@ -105,34 +105,91 @@ cursor: pointer; font-size: 1rem; " - @click="show = false" + @click="recognition" >浜鸿劯璇嗗埆鐧诲綍</span > </div> </el-form-item> </el-form> <div class="face-login" v-else> - <span style="font-size: 0.88rem; font-weight: bold; color: #333333" + <span + style=" + text-align: center; + font-size: 0.88rem; + font-weight: bold; + color: #333333; + " >璇峰皢鑴搁儴姝e钃濊壊鏄剧ず妗嗗唴锛屽苟淇濇寔鍏夌嚎鍏呰冻</span > - <div - style=" - display: flex; - justify-content: center; - align-items: center; - border: 1px solid #4386ff; - border-radius: 50%; - width: 18.75rem; - height: 18.75rem; - margin: 2.06rem 0; - background-color: #f1fcff; - " - > - <img src="@/assets/login/face.png" alt="" /> + <div style="width: 100%; display: flex; justify-content: center"> + <div + style=" + display: flex; + justify-content: center; + align-items: center; + border: 1px solid #4386ff; + border-radius: 50%; + width: 18.75rem; + height: 18.75rem; + margin: 2.06rem 0; + background-color: #f1fcff; + " + > + <img v-if="!face" src="@/assets/login/face.png" alt="" /> + <!-- <canvas v-else ref="canvasDom" /> --> + <div v-else> + <!-- 鎾斁鍣紝鐢ㄦ潵鎾斁鎷嶆憚鐨勮棰� --> + <video class="camera_video" ref="videoDom" /> + <!-- 鏄剧ず鐓х墖 --> + <!-- <img + style="border-radius: 50%; width: 18.75rem; height: 18.75rem" + v-else + :src="imgurl" + /> --> + </div> + </div> </div> - <el-button type="primary" size="small" style="width: 100%" + <!-- <el-button + v-if="!reBtn" + type="primary" + size="small" + style="width: 100%" + @click="takePhoto" >寮�濮嬭瘑鍒�</el-button > + <el-button + v-else + type="primary" + size="small" + style="width: 100%" + @click="REtakePhoto" + >閲嶆柊璇嗗埆</el-button + > --> + <div style="width: 100%; margin-top: 1rem; display: flex"> + <el-button + type="primary" + size="small" + style="width: 100%" + @click="recognition" + >閲嶆柊鑾峰彇鎽勫儚澶�</el-button + > + <el-select + v-if="videoArr.length > 1" + v-model="constraints" + placeholder="璇烽�夋嫨鎽勫儚澶�" + size="samll" + @change="changeconstraints" + style="height: 2rem" + :disabled="!videoArr.length > 1" + > + <el-option + v-for="item in videoArr" + :key="item.id" + :label="item.label" + :value="item.id" + /> + </el-select> + </div> <div style=" display: flex; @@ -150,7 +207,7 @@ cursor: pointer; font-size: 1rem; " - @click="show = true" + @click="accountlogin" >璐﹀彿鐧诲綍</span > </div> @@ -161,11 +218,13 @@ </template> <script setup> -import { getCodeImg, login } from "@/api/login"; +import { getCodeImg, login, CleanUnusedImages } from "@/api/login"; +import { UploadImg } from "@/api/user"; import { useRouter, useRoute } from "vue-router"; import { getCurrentInstance, ref, nextTick, onMounted } from "vue"; import { ElMessage } from "element-plus"; import store from "@/store"; +import axios from "axios"; const router = useRouter(); const route = useRoute(); @@ -176,7 +235,14 @@ const codeUrl = ref(""); // 楠岃瘉鐮� const loading = ref(false); // 鐧诲綍鍔犺浇鐘舵�� - +const face = ref(false); // 浜鸿劯璇嗗埆鐧诲綍 +// 鐓х墖璺緞 +const imgurl = ref(null); +// canvas鎺т欢瀵硅薄 +const canvasDom = ref(null); +// video 鎺т欢瀵硅薄 +const videoDom = ref(null); +const reBtn = ref(false); const loginForm = ref({ userName: "", password: "", @@ -236,9 +302,229 @@ nextTick(() => { userNameRef.value.focus(); }); +const videoArr = ref([]); +//閫夋嫨鐨勬憚鍍忓ご鐨刬d +const constraints = ref(""); +const videoConstraints = ref({}); +//浜鸿劯璇嗗埆鐧诲綍 +const recognition = () => { + show.value = false; + videoArr.value = []; + setTimeout(async () => { + face.value = true; + navigator.mediaDevices + .enumerateDevices() + .then((devices) => { + devices.forEach(function (device) { + if (device.kind == "videoinput") { + videoArr.value.push({ + label: device.label, + id: device.deviceId, + }); + constraints.value = videoArr.value[0].id; + } + }); + openCamera(); + }) + .catch(function (err) { + layer.msg(err.name + ": " + err.message); + }); + }, 1000); + ElMessage({ + message: "姝e湪璋冪敤鎽勫儚澶达紝璇风◢绛�...", + type: "warning", + plain: true, + duration: 1000, + }); + // 浜鸿劯璇嗗埆鐧诲綍閫昏緫 +}; + +//璐﹀彿鐧诲綍 +function accountlogin() { + stop(); + ElMessage({ + message: "姝e湪鍏抽棴鎽勫儚澶达紝璇风◢绛�...", + type: "warning", + plain: true, + duration: 2000, + }); + setTimeout(() => { + ElMessage({ + message: "鍏抽棴鎽勫儚澶存垚鍔�", + type: "success", + plain: true, + }); + }, 3000); + setTimeout(() => { + show.value = true; + face.value = false; + }, 2000); +} +//鎵撳紑鎽勫儚澶� +const openCamera = async () => { + videoConstraints.value.deviceId = { exact: constraints.value }; + + // 妫�娴嬫祻瑙堝櫒鏄惁鏀寔mediaDevices + if (navigator.mediaDevices) { + navigator.mediaDevices + // 寮�鍚棰戯紝鍏抽棴闊抽 + .getUserMedia({ + audio: false, + video: { + width: 300, // 璁剧疆瑙嗛瀹藉害 + height: 300, // 璁剧疆瑙嗛楂樺害 + facingMode: "user", // 浣跨敤鍓嶇疆鎽勫儚澶� + deviceId: videoConstraints.value.deviceId, + }, + }) + .then((stream) => { + // 灏嗚棰戞祦浼犲叆viedo鎺т欢 + videoDom.value.srcObject = stream; + // 鎾斁 + videoDom.value.play(); + Facerecognition(); + ElMessage({ + message: "鎽勫儚澶磋皟鐢ㄦ垚鍔�", + type: "success", + plain: true, + }); + }) + .catch((err) => { + console.log(err); + }); + } else { + window.alert("璇ユ祻瑙堝櫒涓嶆敮鎸佸紑鍚憚鍍忓ご锛岃鏇存崲鏈�鏂扮増娴忚鍣�"); + } +}; +const changeconstraints = (res) => { + openCamera(); +}; + +// 寮�濮嬭瘑鍒� +const takePhoto = async () => { + // 濡傛灉宸茬粡鎷嶇収浜嗗氨閲嶆柊鍚姩鎽勫儚澶� + // if (imgurl.value) { + // imgurl.value = null; + // openCamera(); + // return; + // } + + console.log(videoDom.value.videoWidth, videoDom.value.videoHeight); + // 鍒涘缓涓�涓敾甯冨厓绱狅紝璁剧疆鐢诲竷灏哄涓鸿棰戞祦鐨勫昂瀵� + const canvas = document.createElement("canvas"); + // 璁剧疆鐢诲竷澶у皬涓庢憚鍍忓ぇ灏忎竴鑷� + canvas.width = videoDom.value.videoWidth; + canvas.height = videoDom.value.videoHeight; + // 鑾峰彇鐢诲竷涓婁笅鏂囧璞� + const ctx = canvas.getContext("2d"); + // 缁樺埗褰撳墠瑙嗛甯у埌鐢诲竷涓� + ctx.drawImage(videoDom.value, 0, 0, canvas.width, canvas.height); + // 灏嗙敾甯冨唴瀹硅浆涓� Base64 鏁版嵁 + const imageDataUrl = canvas.toDataURL("image/png"); + // 瀛樺偍鍥剧墖璺緞 + imgurl.value = imageDataUrl; + + // // 鍒涘缓涓�涓浘鐗囧厓绱� + // const imageElement = new Image(); + // // 灏� Base64 鏁版嵁璁剧疆涓哄浘鐗囩殑 src 灞炴�� + // imageElement.src = imageDataUrl; + // console.log(imageElement, imageDataUrl, "鍥剧墖璺緞"); + // return; + // canvasDom.value.width = videoDom.value.videoWidth; + // canvasDom.value.height = videoDom.value.videoHeight; + // // 鎵ц鐢荤殑鎿嶄綔 + // canvasDom.value.getContext("2d").drawImage(videoDom.value, 0, 0); + // // 灏嗙粨鏋滆浆鎹负鍙睍绀虹殑鏍煎紡 + // imgurl.value = canvasDom.value.toDataURL("image/webp"); + // 鍏抽棴鎽勫儚澶� + let files = dataURLtoFile(imgurl.value, new Date().getTime() + ".png"); + const formdata = new FormData(); + formdata.append("files", files); + let response = await axios.post("/api/User/SaveFiles", formdata, { + headers: { + "Content-Type": "multipart/form-data", + }, + }); + ElMessage({ + message: "寮�濮嬭瘑鍒腑锛岃绋嶇瓑...", + type: "warning", + plain: true, + duration: 2000, + }); + setTimeout(() => { + login({ + userName: "", + password: "", + path: response.data.data, + }) + .then((res) => { + if (res.status) { + store.commit("setUserInfo", { ...res.data }); + ElMessage({ + message: "璇嗗埆鎴愬姛锛屽紑濮嬬櫥褰�", + type: "success", + plain: true, + duration: 2000, + }); + CleanUnusedImages(); + stop(); + setTimeout(() => { + router.push({ path: "/" }); + }, 1000); + } + }) + .catch((err) => { + loading.value = false; + return proxy.$message.error(err.message); + }); + setTimeout(() => { + loading.value = false; + }, 1000); + }, 1000); + reBtn.value = true; +}; +//閲嶆柊璇嗗埆 +// const REtakePhoto = () => { +// reBtn.value = false; +// takePhoto(); +// }; +// 灏� base64 杞崲涓� Blob +const dataURLtoFile = (dataurl, filename) => { + let arr = dataurl.split(","), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new File([u8arr], filename, { + type: mime, + }); +}; +// 鍏抽棴鎽勫儚澶� +const stop = () => { + let stream = videoDom.value.srcObject; + if (!stream) return; + let tracks = stream.getTracks(); + tracks.forEach((x) => { + x.stop(); + }); + clearInterval(timer.value); +}; //鑾峰彇楠岃瘉鐮� getCode(); +//瀹氭椂浜鸿劯璇嗗埆 +const timer = ref(null); +const Facerecognition = () => { + clearInterval(timer.value); + if (!show.value) { + timer.value = setInterval(() => { + takePhoto(); + }, 3000); + } +}; </script> <style lang="less" scoped> @@ -301,9 +587,19 @@ } } .face-login { + width: 30rem; display: flex; flex-direction: column; + justify-content: center; + align-content: center; + text-align: center; } } } +.camera_video { + width: 18.75rem; + height: 18.75rem; + border: 1px black solid; + border-radius: 50% 50%; +} </style> diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/BasicInformation/Basicinformation.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/BasicInformation/Basicinformation.vue" index d126bca..9c78316 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/BasicInformation/Basicinformation.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/BasicInformation/Basicinformation.vue" @@ -145,7 +145,7 @@ fontSize: '0.88rem', height: '3rem', }" - @select="InfoSelectionChange" + @selection-change="InfoSelectionChange" > <el-table-column type="selection" align="center" /> <el-table-column prop="articleName" label="淇℃伅鍚嶇О" align="center" /> @@ -180,7 +180,7 @@ fontSize: '0.88rem', height: '3rem', }" - @select="ToolSelectionChange" + @selection-change="ToolSelectionChange" > <el-table-column type="selection" align="center" /> <el-table-column prop="toolName" label="宸ュ叿鍚嶇О" align="center" /> diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TaskManagement/Taskmanagement.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TaskManagement/Taskmanagement.vue" index b0e2359..a350e90 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TaskManagement/Taskmanagement.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TaskManagement/Taskmanagement.vue" @@ -138,7 +138,7 @@ fontSize: '0.88rem', height: '3rem', }" - @select="SelectionChange" + @selection-change="SelectionChange" > <el-table-column type="selection" align="center" min-width="1%" /> <el-table-column diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TaskManagement/Tasktemplates.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TaskManagement/Tasktemplates.vue" index 99cf103..bee2477 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TaskManagement/Tasktemplates.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TaskManagement/Tasktemplates.vue" @@ -107,7 +107,7 @@ fontSize: '0.88rem', height: '3rem', }" - @Select="getSelectionRows" + @selection-change="getSelectionRows" > <el-table-column type="selection" align="center" /> <el-table-column diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TheCurrentJob/Startjob.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TheCurrentJob/Startjob.vue" index 0a01bb0..ff362d2 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TheCurrentJob/Startjob.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/TheCurrentJob/Startjob.vue" @@ -171,21 +171,20 @@ > </span> </div> - <div style="position: absolute; width: 62rem; height: 2.5rem"> + <div style="width: 62rem; height: 2.5rem"> <el-table empty-text="鏆傛棤鏁版嵁" - style="margin-top: 0.88rem" + style="margin-top: 0.88rem; opacity: 0.8" :data="gridData" width="100%" :header-cell-style="{ height: '1.61rem', - color: '#1AC8FE', - background: '#0A5B91', + color: '#fff', fontSize: '0.88rem', + border: 'solid 1px #1ac2f7', }" :cell-style="{ color: '#fff', - background: '#147BAF', }" > <el-table-column @@ -194,18 +193,27 @@ min-width="13%" > <template #default="scope"> - <span - ref="spanHide" - @click="showDetail1(!contentShow)" - style=" - color: #1ac2f7; - font-size: 0.88rem; - cursor: pointer; - text-decoration: underline; - " - >{{ scope.row.craftsStep }} - </span></template - > + <el-tooltip placement="bottom" effect="light"> + <template #content> + <span style="display: block; width: 15rem">{{ + scope.row.craftsStep + }}</span> + </template> + <span + @click="true" + style=" + color: #ffffff; + font-size: 0.88rem; + display: -webkit-box; /* 璁剧疆涓篧ebKit鍐呮牳鐨勫脊鎬х洅瀛愭ā鍨� */ + -webkit-box-orient: vertical; /* 鍨傜洿鎺掑垪 */ + -webkit-line-clamp: 1; /* 闄愬埗鏄剧ず涓よ */ + overflow: hidden; /* 闅愯棌瓒呭嚭鑼冨洿鐨勫唴瀹� */ + text-overflow: ellipsis; /* 浣跨敤鐪佺暐鍙� */ + " + >{{ scope.row.craftsStep }}</span + > + </el-tooltip> + </template> </el-table-column> <el-table-column @@ -238,20 +246,27 @@ > <el-table-column property="tools" label="宸ュ叿" min-width="12%"> <template #default="scope"> - <span - ref="spanHide" - style=" - color: #ffffff; - font-size: 0.88rem; - display: -webkit-box; /* 璁剧疆涓篧ebKit鍐呮牳鐨勫脊鎬х洅瀛愭ā鍨� */ - -webkit-box-orient: vertical; /* 鍨傜洿鎺掑垪 */ - -webkit-line-clamp: 2; /* 闄愬埗鏄剧ず涓よ */ - overflow: hidden; /* 闅愯棌瓒呭嚭鑼冨洿鐨勫唴瀹� */ - text-overflow: ellipsis; /* 浣跨敤鐪佺暐鍙� */ - " - >{{ scope.row.tools }} - </span></template - ></el-table-column + <el-tooltip placement="bottom" effect="light"> + <template #content> + <span style="display: block; width: 15rem">{{ + scope.row.tools + }}</span> + </template> + <span + @click="true" + style=" + color: #ffffff; + font-size: 0.88rem; + display: -webkit-box; /* 璁剧疆涓篧ebKit鍐呮牳鐨勫脊鎬х洅瀛愭ā鍨� */ + -webkit-box-orient: vertical; /* 鍨傜洿鎺掑垪 */ + -webkit-line-clamp: 2; /* 闄愬埗鏄剧ず涓よ */ + overflow: hidden; /* 闅愯棌瓒呭嚭鑼冨洿鐨勫唴瀹� */ + text-overflow: ellipsis; /* 浣跨敤鐪佺暐鍙� */ + " + >{{ scope.row.tools }}</span + > + </el-tooltip> + </template></el-table-column > <el-table-column property="craftsStep" @@ -259,22 +274,30 @@ min-width="15%" > <template #default="scope"> - <span - style=" - color: #ffffff; - font-size: 0.88rem; - display: -webkit-box; /* 璁剧疆涓篧ebKit鍐呮牳鐨勫脊鎬х洅瀛愭ā鍨� */ - -webkit-box-orient: vertical; /* 鍨傜洿鎺掑垪 */ - -webkit-line-clamp: 2; /* 闄愬埗鏄剧ず涓よ */ - overflow: hidden; /* 闅愯棌瓒呭嚭鑼冨洿鐨勫唴瀹� */ - text-overflow: ellipsis; /* 浣跨敤鐪佺暐鍙� */ - " - >{{ scope.row.material }}</span - ></template - ></el-table-column + <el-tooltip placement="bottom" effect="light"> + <template #content> + <span style="display: block; width: 15rem">{{ + scope.row.material + }}</span> + </template> + <span + @click="true" + style=" + color: #ffffff; + font-size: 0.88rem; + display: -webkit-box; /* 璁剧疆涓篧ebKit鍐呮牳鐨勫脊鎬х洅瀛愭ā鍨� */ + -webkit-box-orient: vertical; /* 鍨傜洿鎺掑垪 */ + -webkit-line-clamp: 2; /* 闄愬埗鏄剧ず涓よ */ + overflow: hidden; /* 闅愯棌瓒呭嚭鑼冨洿鐨勫唴瀹� */ + text-overflow: ellipsis; /* 浣跨敤鐪佺暐鍙� */ + " + >{{ scope.row.material }}</span + > + </el-tooltip> + </template></el-table-column > </el-table> - <div class="consten" v-show="contentShow"> + <!-- <div class="consten" v-show="contentShow"> <el-table empty-text="鏆傛棤鏁版嵁" :data="gridData" @@ -324,7 +347,7 @@ ></el-table-column > </el-table> - </div> + </div> --> </div> </div> <div class="rect-item3" style="position: relative"> @@ -407,11 +430,6 @@ display: flex; justify-content: center; align-items: center; - position: absolute; - top: 38%; - left: 50%; - transform: translateX(-50%); - z-index: 999; " > <div @@ -442,8 +460,9 @@ align-items: center; position: absolute; bottom: 5%; - left: 50%; - transform: translateX(-50%); + right: 0%; + transform: translateX(-20%); + z-index: 999; " > <el-button @@ -531,7 +550,7 @@ </div> </template> <script setup> -import { ref, onMounted, nextTick } from "vue"; +import { ref, onMounted, nextTick, onBeforeUnmount } from "vue"; import { GetScreenData, GetPre, @@ -582,6 +601,8 @@ takeid: "", setnum: 0, }); + +const client = ref(null); //鎵姏鍊� const torqueFrom = ref({ @@ -736,35 +757,6 @@ group: info.value.grouptype, takeid: info.value.njtakeid, }).then((res) => { - // if (res.message == "杩斿洖宸ヨ壓琛ㄤ腑鐨勭涓�鏉�") { - // gridData.value = res.data.proNoe; - // obj.value = res.data.proNoe[0]; - // sunNUm.value = res.data.maxproce; - // queryData.value.setnum = obj.value.setpNum; - // xPos.value = - // gridData.value[0].pointAxisXYZ != null && - // gridData.value[0].pointAxisXYZ != 0 - // ? gridData.value[0].pointAxisXYZ.split(",")[0] - // : -585; - // yPos.value = - // gridData.value[0].pointAxisXYZ != null && - // gridData.value[0].pointAxisXYZ != 0 - // ? gridData.value[0].pointAxisXYZ.split(",")[1] - // : 692; - // zPos.value = - // gridData.value[0].pointAxisXYZ != null && - // gridData.value[0].pointAxisXYZ != 0 - // ? gridData.value[0].pointAxisXYZ.split(",")[2] - // : 692; - // cameraAnimate( - // [xPos.value, yPos.value, zPos.value], - // nodeList[gridData.value[0].setpNum] - // ); - // GetTorque(queryData.value).then((res) => { - // Torque.value = res.data; - // }); - // return; - // } gridData.value = [res.data.proNow]; sunNUm.value = res.data.maxproce; obj.value = res.data.proNow; @@ -1049,10 +1041,134 @@ console.error("娣诲姞澶辫触", error); }); }; +const timer = ref(null); + +const createSocket = (url) => { + clearInterval(timer.value); + // 鍒涘缓WebSocket杩炴帴 + //"ws://127.0.0.1:9295/admin" + client.value = new WebSocket("ws://115.159.85.185:9098/"); + + client.value.onopen = function () { + console.log("WebSocket 杩炴帴鎴愬姛"); + }; + client.value.onmessage = function (event) { + let data = JSON.parse(event.data); + (gridData.value = [data.process.proNow].map((item) => { + return { + articleOne: item.ArticleOne, + articleOneid: item.ArticleOneid, + articleTowid: item.ArticleTowid, + articleTwo: item.ArticleTwo, + craftContent: item.CraftContent, + craftID: item.CraftID, + craftType: item.CraftType, + craftsStep: item.CraftsStep, + createDate: item.CreateDate, + creater: item.Creater, + material: item.Material, + modifier: item.Modifier, + modifyDate: item.ModifyDate, + moduleName: item.ModuleName, + nodal: item.Nodal, + pointAxisHPB: item.PointAxisHPB, + pointAxisXYZ: item.PointAxisXYZ, + setpNum: item.SetpNum, + tools: item.Tools, + torqueOne: item.TorqueOne, + torqueOneQuantity: item.TorqueOneQuantity, + torqueSum: item.TorqueSum, + torqueTwo: item.TorqueTwo, + torqueTwoQuantity: item.TorqueTwoQuantity, + }; + })), + (sunNUm.value = data.process.maxproce); + obj.value = [data.process.proNow].map((item) => { + return { + articleOne: item.ArticleOne, + articleOneid: item.ArticleOneid, + articleTowid: item.ArticleTowid, + articleTwo: item.ArticleTwo, + craftContent: item.CraftContent, + craftID: item.CraftID, + craftType: item.CraftType, + craftsStep: item.CraftsStep, + createDate: item.CreateDate, + creater: item.Creater, + material: item.Material, + modifier: item.Modifier, + modifyDate: item.ModifyDate, + moduleName: item.ModuleName, + nodal: item.Nodal, + pointAxisHPB: item.PointAxisHPB, + pointAxisXYZ: item.PointAxisXYZ, + setpNum: item.SetpNum, + tools: item.Tools, + torqueOne: item.TorqueOne, + torqueOneQuantity: item.TorqueOneQuantity, + torqueSum: item.TorqueSum, + torqueTwo: item.TorqueTwo, + torqueTwoQuantity: item.TorqueTwoQuantity, + }; + })[0]; + Torque.value = data.operation.map((item) => { + return { + createDate: item.CreateDate, + creater: item.Creater, + deviceCode: item.SystemDeviceCode, + groupOp: item.GroupOp, + id: item.ID, + modifier: item.Modifier, + modifyDate: item.ModifyDate, + processSte: item.ProcessSte, + takeId: item.TakeId, + torqueSize: item.TorqueSize, + }; + }); + xPos.value = + gridData.value[0].pointAxisXYZ != null && + gridData.value[0].pointAxisXYZ != 0 + ? gridData.value[0].pointAxisXYZ.split(",")[0] + : -585; + yPos.value = + gridData.value[0].pointAxisXYZ != null && + gridData.value[0].pointAxisXYZ != 0 + ? gridData.value[0].pointAxisXYZ.split(",")[1] + : 692; + zPos.value = + gridData.value[0].pointAxisXYZ != null && + gridData.value[0].pointAxisXYZ != 0 + ? gridData.value[0].pointAxisXYZ.split(",")[2] + : 692; + isJob.value = data.process.finish.map((item) => { + return item.moduleName; + }); + cameraAnimate( + [xPos.value, yPos.value, zPos.value], + gridData.value[0].moduleName + ); + console.log( + "WebSocket 鎺ユ敹鍒版秷鎭�", + data, + gridData.value, + sunNUm.value, + Torque.value, + isJob.value + ); + }; + client.value.onclose = function () { + console.log("WebSocket 杩炴帴鍏抽棴"); + timer.value = setTimeout(createSocket, 1000); + }; + + client.value.onerror = function () {}; +}; onMounted(() => { + console.log("mounted", window.innerWidth, window.innerHeight); + // 鍒濆鍖栧満鏅� - renderer.setSize(window.innerWidth / 1.01, window.innerHeight / 2.1); + renderer.setSize(window.innerWidth - 20, window.innerHeight - 100); renderer.setClearColor(0xeeeeee); // 璁剧疆鑳屾櫙鑹� // 鍚敤鐗╃悊娓叉煋妯″紡 // renderer.physicallyCorrectLights = true; @@ -1064,9 +1180,9 @@ const controls = new OrbitControls(camera, renderer.domElement); controls.enablePan = false; //绂佹鍙抽敭鎷栨嫿 //鐩告満浣嶇疆涓庤瀵熺洰鏍囩偣鏈�灏忓�� - controls.minDistance = 650; + controls.minDistance = 600; //鐩告満浣嶇疆涓庤瀵熺洰鏍囩偣鏈�澶у�� - controls.maxDistance = 900; + controls.maxDistance = 1000; camera.position.set(...CAMERA_POS); controls.update(); @@ -1126,8 +1242,13 @@ }); // }; document.addEventListener("click", handleClickOutside); + console.log(window.webConfig); + createSocket(); // showModel(); +}); +onBeforeUnmount(() => { + clearInterval(timer.value); }); </script> <style lang="scss" scoped> @@ -1151,7 +1272,7 @@ background-size: 0.3rem 2rem, 2rem 0.3rem, 0.3rem 2rem, 2rem 0.3rem; padding: 0.2rem; box-sizing: border-box; - background-color: rgba(0, 0, 0, 0.3); + background-color: rgba(0, 0, 0, 0.1); overflow: hidden; .rect { @@ -1184,33 +1305,67 @@ .rect-center { display: flex; - justify-content: space-between; - width: 80%; + justify-content: space-around; + width: 100%; margin: 0 auto; padding: 0.8rem 2.15rem; box-sizing: border-box; - + position: absolute; + left: 50%; + top: 5%; + transform: translateX(-50%); .rect-item1 { display: flex; flex-direction: column; width: 16rem; height: 15.38rem; - background-image: url("../../../assets/TheCurrentJob/bg.png"); - background-repeat: no-repeat; - background-size: 100% 100%; - padding: 0.28rem 0.28rem; + // background-image: url("../../../assets/TheCurrentJob/bg.png"); + // background-repeat: no-repeat; + // background-size: 100% 100%; + border-radius: 8px; + background: linear-gradient( + 0deg, + rgba(0, 0, 0, 0.001), + rgba(0, 0, 0, 0.001) + ), + rgba(0, 0, 0, 0), + linear-gradient( + 135deg, + rgba(30, 58, 138, 0.6) -3%, + rgba(49, 46, 129, 0.6) 99% + ); + box-sizing: border-box; + border: 1px solid rgba(96, 165, 250, 0.3); + box-shadow: 0px 4px 6px -4px rgba(0, 0, 0, 0.1), + 0px 10px 15px -3px rgba(0, 0, 0, 0.1); + padding: 0.28rem 1.28rem; box-sizing: border-box; } .rect-item2 { width: 65rem; - height: 15.38rem; - border: 0.1rem solid #02cde6; + height: 14.38rem; + border-radius: 8px; + background: linear-gradient( + 0deg, + rgba(0, 0, 0, 0.001), + rgba(0, 0, 0, 0.001) + ), + rgba(0, 0, 0, 0), + linear-gradient( + 135deg, + rgba(30, 58, 138, 0.6) -3%, + rgba(49, 46, 129, 0.6) 99% + ); + box-sizing: border-box; + border: 1px solid rgba(96, 165, 250, 0.3); + box-shadow: 0px 4px 6px -4px rgba(0, 0, 0, 0.1), + 0px 10px 15px -3px rgba(0, 0, 0, 0.1); padding: 0.69rem 1.44rem; position: relative; .el-table :deep(.el-table__header th) { - border: solid 1px #1ac0f6; + // border: solid 1px #1ac0f6; color: white; } @@ -1227,9 +1382,25 @@ flex-direction: column; width: 11.31rem; height: 15.38rem; - background-image: url("../../../assets/TheCurrentJob/bg.png"); - background-repeat: no-repeat; - background-size: 100% 100%; + // background-image: url("../../../assets/TheCurrentJob/bg.png"); + // background-repeat: no-repeat; + // background-size: 100% 100%; + border-radius: 8px; + background: linear-gradient( + 0deg, + rgba(0, 0, 0, 0.001), + rgba(0, 0, 0, 0.001) + ), + rgba(0, 0, 0, 0), + linear-gradient( + 135deg, + rgba(30, 58, 138, 0.6) -3%, + rgba(49, 46, 129, 0.6) 99% + ); + box-sizing: border-box; + border: 1px solid rgba(96, 165, 250, 0.3); + box-shadow: 0px 4px 6px -4px rgba(0, 0, 0, 0.1), + 0px 10px 15px -3px rgba(0, 0, 0, 0.1); padding: 0.28rem 0.28rem; box-sizing: border-box; } @@ -1249,6 +1420,19 @@ // border-bottom: solid 1px #1ac2f7; // color: white; // } +.el-table { + --el-table-border-color: transparent; + --el-table-border: none; + --el-table-text-color: #bdbdbe; + --el-table-header-text-color: #bdbdbe; + --el-table-row-hover-bg-color: transparent; + --el-table-current-row-bg-color: transparent; + --el-table-header-bg-color: transparent; + --el-table-bg-color: transparent; + --el-table-tr-bg-color: transparent; + --el-table-expanded-cell-bg-color: transparent; +} + .el-table :deep(.el-table__row td) { border: solid 1px #1ac2f7; color: white; @@ -1259,9 +1443,9 @@ color: #1ac2f7; } -.el-table :deep(.el-table__body-wrapper) { - background-color: #1ac2f7; -} +// .el-table :deep(.el-table__body-wrapper) { +// background-color: #1ac2f7; +// } :deep(.el-popper) { background-color: #ad2525; diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue" index 239ce0f..33f9791 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/client/src/views/tts/UserManagement/Usermanagement.vue" @@ -107,6 +107,7 @@ >鏂板缓</el-button > <el-button + v-if="isactive != 3" size="small" style="width: 5.5rem; height: 2rem; font-size: 0.88rem" @click="printExcel" @@ -140,7 +141,7 @@ fontSize: '0.88rem', height: '3rem', }" - @select="UserSelectionChange" + @selection-change="UserSelectionChange" > <el-table-column type="selection" align="center" min-width="1%" /> <el-table-column @@ -182,13 +183,21 @@ <template #default="scope"> <el-image style="width: 70px; height: 70px" - :src="'http://115.159.85.185:9098' + scope.row.headImageUrl" + :src=" + 'http://115.159.85.185:9098' + scope.row.headImageUrl + " show-progress :initial-index="4" fit="cover" /> </template> </el-table-column> + <el-table-column + prop="groupID" + label="鐧惧害浜戝垎缁�" + align="center" + min-width="3%" + /> <el-table-column label="鏄惁鍚敤" align="center" min-width="2%"> <template #default="scope"> <el-switch @@ -228,6 +237,15 @@ @click="Editpassword(scope.row)" >淇敼瀵嗙爜</el-button > + <el-button + size="small" + type="text" + @click="deletUser(scope.row)" + :disabled=" + scope.row.userName == 'admin' || scope.row.user_Id == '1' + " + >鍒犻櫎</el-button + > </template> </el-table-column> </el-table> @@ -251,7 +269,7 @@ fontSize: '0.88rem', height: '3rem', }" - @select="RoleSelectionChange" + @selection-change="RoleSelectionChange" > <el-table-column type="selection" align="center" /> <el-table-column prop="roleName" label="瑙掕壊鍚嶇О" align="center" /> @@ -316,6 +334,17 @@ @size-change="handleSizeChange" @current-change="handleCurrentChange" /> + <el-pagination + v-if="isactive == 2" + size="small" + background + layout="prev, pager, next" + :current-page="pageQuery.page" + :page-size="pageQuery.rows" + :total="pageTotal1" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> </div> </div> @@ -353,7 +382,7 @@ > <el-row :gutter="20"> <el-col :span="8"> - <el-form-item prop="userName"> + <el-form-item prop="username"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -365,13 +394,13 @@ </template> <el-input size="small" - v-model="formUser.userName" + v-model="formUser.username" placeholder="璇疯緭鍏�" /> </el-form-item> </el-col> <el-col :span="8"> - <el-form-item prop="userTrueName"> + <el-form-item prop="usertruename"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -383,13 +412,13 @@ </template> <el-input size="small" - v-model="formUser.userTrueName" + v-model="formUser.usertruename" placeholder="璇疯緭鍏�" /> </el-form-item> </el-col> <el-col :span="8"> - <el-form-item prop="phoneNo"> + <el-form-item prop="phoneno"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -401,7 +430,7 @@ </template> <el-input size="small" - v-model="formUser.phoneNo" + v-model="formUser.phoneno" placeholder="璇疯緭鍏�" /> </el-form-item> @@ -409,7 +438,7 @@ </el-row> <el-row :gutter="20"> <el-col :span="8"> - <el-form-item prop="role_Id"> + <el-form-item prop="roleid"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -420,12 +449,12 @@ </div> </template> <el-select - v-model="formUser.role_Id" + v-model="formUser.roleid" placeholder="璇烽�夋嫨" size="small" > <el-option - :disabled="item.roleId == 1" + :disabled="item.roleId == 20" v-for="item in groupOptions" :key="item.roleId" :label="item.roleName" @@ -435,7 +464,7 @@ </el-form-item> </el-col> <el-col :span="8"> - <el-form-item prop="roleName"> + <el-form-item prop="rolename"> <template #label> <div style="display: flex; align-items: flex-end"> <span style="color: red; margin-right: 0.2rem">*</span> @@ -446,7 +475,7 @@ </div> </template> <el-select - v-model="formUser.roleName" + v-model="formUser.rolename" placeholder="璇烽�夋嫨" size="small" > @@ -516,6 +545,7 @@ @before-upload="beforeAvatarUpload" :on-success="handleAvatarSuccess" :file-list="fileList != [] ? fileList : []" + :class="{ hide: showUpload }" > <el-icon> <Plus /> @@ -605,7 +635,7 @@ </div> </template> <el-form - :model="formUser" + :model="newobj" label-width="auto" label-position="top" ref="formpasswordRef" @@ -636,7 +666,7 @@ <el-input style="margin-top: 1rem" size="large" - v-model="formUser.newPwd" + v-model="newobj.newPwd" placeholder="璇疯緭鍏�" /> </el-form-item> @@ -748,7 +778,6 @@ </el-dialog> <!-- 鏉冮檺绠$悊寮瑰嚭妗� --> - <el-dialog v-model="imgdialogVisible"> <div style=" @@ -768,16 +797,17 @@ import { ref, reactive, onMounted, toRef } from "vue"; import { ElMessage, ElMessageBox } from "element-plus"; import { - GetUserList, AddUser, UpdateUser, DelApi, ExportApi, ExportApi1, - UpdatePassword, UpdatePwd, - AddUserApi, - EditUserApi, + NewGetUserList, + AdduserData, + NewUpdateUser, + DeleteUserData, + FaceGetPageData, } from "@/api/user"; import { useRouter } from "vue-router"; import { formatTime } from "@/utils/index.js"; @@ -799,6 +829,7 @@ const tableData = ref([]); const grideData = ref([]); +const faceData = ref([]); //鏂板缓鐢ㄦ埛ref const formUserRef = ref(); const options = ref([]); @@ -810,31 +841,27 @@ }, { value: 1, label: "鏄�" }, ]); +const showUpload = ref(false); //鍒嗙粍 const groupOptions = ref([]); +const groupIDOptions = ref([]); const formUser = ref({ - user_Id: undefined, - userName: "", - role_Id: 2, - roleName: "", - phoneNo: "", - remark: "", - userPwd: "123456", - userTrueName: "", - dept_Id: 0, + id: undefined, + username: "", + phoneno: "", + roleid: 21, + rolename: "", enable: 1, - headImageUrl: "", - createDate: formatTime(new Date()), //鍒涘缓鏃堕棿 - creater: JSON.parse(localStorage.getItem("user")).userName, //鍒涘缓浜� - newPwd: "", + path: "", + usertruename: "", }); const rules = reactive({ - userName: { + username: { required: true, message: "璇疯緭鍏ョ敤鎴峰悕", trigger: "blur", }, - role_Id: { + roleid: { required: true, message: "璇烽�夋嫨瑙掕壊", trigger: "change", @@ -851,12 +878,12 @@ message: "璇疯緭鍏ュ鍚�", trigger: "blur", }, - phoneNo: { + phoneno: { required: true, message: "璇疯緭鍏ユ墜鏈哄彿", trigger: "blur", }, - userTrueName: { + usertruename: { required: true, message: "璇疯緭鍏ョ湡瀹炲鍚�", trigger: "blur", @@ -875,11 +902,11 @@ //绛涢�夋潯浠� const userOptions = [ { - value: "userName", + value: "username", label: "鐧诲綍璐﹀彿", }, { - value: "userTrueName", + value: "usertruename", label: "鐪熷疄濮撳悕", }, { @@ -929,39 +956,11 @@ }); const uploadRef = ref(); -// //鐢ㄦ埛淇敼瀵嗙爜 -// const handleUpdatePassword = (row) => { -// dialogVisible1.value = true; -// formUser.value = Object.assign({}, row); -// }; -// const UpdatePassword = () => { -// formpasswordRef.value.validate((valid) => { -// if (valid) { -// UpdatePassword({ -// user_Id: formUser.value.user_Id, -// oldPwd: formpassword.value.oldPwd, -// newPwd: formpassword.value.newPwd, -// }).then((res) => { -// if (res.code == 200) { -// ElMessage({ -// message: "淇敼鎴愬姛", -// type: "success", -// }); -// dialogVisible1.value = false; -// initData(); -// } else { -// ElMessage({ -// message: res.msg, -// type: "error", -// }); -// } -// }); -// } -// }); -// }; const pageTotal = ref(0); -//鐧诲綍璁板綍 +const pageTotal1 = ref(0); +const pageTotal2 = ref(0); +//鐢ㄦ埛鍒楄〃 const initData = () => { // 鏌ヨ鏉′欢 const startTime = formatTime(queryForm.value.selectTime[0]); @@ -975,14 +974,16 @@ { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, { name: "createDate", value: endTime, displayType: "LessOrEqual" }, ]; - GetUserList({ - ...pageQuery.value, - filter, + NewGetUserList({ + pageIndex: pageQuery.value.page, + pageSize: pageQuery.value.rows, + searchKeyword: queryForm.value.selectInput, + startDate: startTime, + endDate: endTime, }).then((res) => { - tableData.value = res.rows; - pageTotal.value = res.total; + tableData.value = res.data.items; + pageTotal.value = res.data.totalCount; }); - getRole(); }; //鍒嗛〉璇锋眰鍙傛暟 const pageQuery = ref({ @@ -993,23 +994,48 @@ wheres: "", //鏉′欢鏌ヨ }); +//鍒嗛〉璇锋眰鍙傛暟 +const pageQuery1 = ref({ + page: 1, //褰撳墠椤甸潰 + rows: 10, //姣忛〉鏄剧ず鏉℃暟 + order: "desc", //鎺掑簭鏂瑰紡 + sort: "", //鎺掑簭瀛楁 + wheres: "", //鏉′欢鏌ヨ +}); + +//鍒嗛〉璇锋眰鍙傛暟 +const pageQuery2 = ref({ + page: 1, //褰撳墠椤甸潰 + rows: 10, //姣忛〉鏄剧ず鏉℃暟 + order: "desc", //鎺掑簭鏂瑰紡 + sort: "", //鎺掑簭瀛楁 + wheres: "", //鏉′欢鏌ヨ +}); //鏁版嵁妫�绱簨浠� const handleQuery = () => { - pageQuery.value.page = 1; if (isactive.value == 1) { + pageQuery.value.page = 1; initData(); - } else { + } else if (isactive.value == 2) { + pageQuery1.value.page = 1; getRole(); + } else { + pageQuery2.value.page = 1; + GetFacePageData(); } }; //閲嶇疆鏌ヨ鏉′欢 const resetQuery = () => { queryForm.value = Object.assign({}, obj); - pageQuery.value.page = 1; if (isactive.value == 1) { + pageQuery.value.page = 1; initData(); - } else { + } else if (isactive.value == 2) { + pageQuery1.value.page = 1; getRole(); + } else { + pageQuery2.value.page = 1; + GetFacePageData(); } }; //鍒嗛〉椤甸潰澶у皬鏀瑰彉 @@ -1017,8 +1043,10 @@ pageQuery.value.rows = val; if (isactive.value == 1) { initData(); - } else { + } else if (isactive.value == 2) { getRole(); + } else { + GetFacePageData(); } }; @@ -1027,34 +1055,42 @@ pageQuery.value.page = val; if (isactive.value == 1) { initData(); - } else { + } else if (isactive.value == 2) { getRole(); + } else { + GetFacePageData(); } }; -const handleAvatarSuccess = (val) => { - formUser.value.headImageUrl = "/image/" + val.data; +const handleAvatarSuccess = (response, file, fileList) => { + formUser.value.path = response.data; + if (fileList.length >= 1) { + showUpload.value = true; + } }; //閲嶇疆琛ㄥ崟 const resetForm = (formEl) => { if (!formEl) return; formEl.resetFields(); formUser.value = { - user_Id: undefined, - userName: "", - role_Id: 21, - roleName: "", - phoneNo: "", - remark: "", - userPwd: "123456", - userTrueName: "", - dept_Id: 0, + username: "", + phoneno: "", + roleid: 21, + rolename: "", enable: 1, - headImageUrl: "", - newPwd: "", + path: "", + user_Id: undefined, }; fileList.value = []; }; const resetForm1 = (formEl) => { + if (!formEl) return; + formEl.resetFields(); + formRole.value = { + roleName: "", + description: "", + }; +}; +const resetForm2 = (formEl) => { if (!formEl) return; formEl.resetFields(); formRole.value = { @@ -1067,23 +1103,18 @@ dialogImageUrl.value = uploadFile.url; imgdialogVisible.value = true; }; -const handleRemove = (val) => { +const handleRemove = (file, fileList1) => { fileList.value = []; //绉婚櫎宸蹭笂浼犵殑鍥剧墖 - formUser.value.headImageUrl = ""; + formUser.value.path = ""; + if (fileList.value.length < 1) { + showUpload.value = false; + } }; + const beforeAvatarUpload = (val) => { console.log(val); }; -// const submitUpload = () => { -// let promise = new Promise((resolve, reject) => { -// setTimeout(async () => { -// await uploadRef.value.submit(); -// resolve("涓婁紶鎴愬姛"); -// }); -// }); -// return promise; -// }; //鏂板缓鐢ㄦ埛璐﹀彿 const saveObj = async (formEl) => { @@ -1091,14 +1122,14 @@ if (!formEl) return; await formEl.validate((valid, fields) => { if (valid) { - if (formUser.value.user_Id != undefined) { - UpdateUser(formUser.value).then((res) => { + if (formUser.value.id != undefined) { + NewUpdateUser(formUser.value).then((res) => { ElMessage({ message: "淇敼鎴愬姛", type: "success" }); dialogVisible.value = false; initData(); }); } else { - AddUser(formUser.value).then((res) => { + AdduserData(formUser.value).then((res) => { ElMessage({ message: "鎻愪氦鎴愬姛", type: "success" }); dialogVisible.value = false; initData(); @@ -1111,9 +1142,17 @@ }; //鏄惁鍚敤 const changeSwitch = (val) => { - let data = Object.assign({}, val); - console.log(data); - UpdateUser(data).then((res) => { + let data = { + id: val.user_Id, + username: val.userName, + phoneno: val.phoneNo, + roleid: val.role_Id, + rolename: val.roleName, + enable: val.enable, + path: val.headImageUrl, + usertruename: val.userTrueName, + }; + NewUpdateUser(data).then((res) => { ElMessage({ message: "淇敼鎴愬姛", type: "success" }); dialogVisible.value = false; initData(); @@ -1131,15 +1170,24 @@ }; //缂栬緫鐢ㄦ埛璐﹀彿 const Edit = (val) => { - let obj = Object.assign({}, val); + let obj = { + id: val.user_Id, + username: val.userName, + phoneno: val.phoneNo, + roleid: val.role_Id, + rolename: val.roleName, + enable: val.enable, + path: val.headImageUrl, + usertruename: val.userTrueName, + }; formUser.value = { ...obj, }; - if (obj.headImageUrl != "") { + if (obj.path != "") { fileList.value = [ { name: "1", - url: "http://115.159.85.185:9098" + obj.headImageUrl, + url: "http://115.159.85.185:9098" + obj.path, }, ]; } @@ -1153,20 +1201,15 @@ formUser.value = obj; formpassword.value = val; newobj.value = Object.assign({}, val); - console.log(newobj.value); - dialogVisible1.value = true; }; //淇濆瓨淇敼瀵嗙爜 const savePassword = async (formEl) => { - let obj = Object.assign({}, newobj); - // obj.password = formpassword.value.password; - console.log(formUser.value); - + let obj = Object.assign({}, newobj.value); let formdata = { - id: formUser.value.user_Id, - oldPwd: formUser.value.userPwd, - newPwd: formUser.value.newPwd, + id: obj.user_Id, + oldPwd: obj.userPwd, + newPwd: obj.newPwd, }; if (!formEl) return; await formEl.validate((valid, fields) => { @@ -1250,12 +1293,39 @@ { name: "createDate", value: startTime, displayType: "ThanOrEqual" }, { name: "createDate", value: endTime, displayType: "LessOrEqual" }, ]; - GetPageDataApi({ ...pageQuery.value, filter }).then((res) => { + GetPageDataApi({ ...pageQuery1.value, filter }).then((res) => { grideData.value = res.rows; - pageTotal.value = res.total; + pageTotal1.value = res.total; groupOptions.value = res.rows; }); }; + +//鍒犻櫎鐢ㄦ埛 +const deletUser = (val) => { + ElMessageBox.confirm("纭鍒犻櫎璇ョ敤鎴峰悧锛�", { + confirmButtonText: "纭", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + DeleteUserData({ + userAccount: val.userName, + }).then((res) => { + ElMessage({ + type: "success", + message: "鍒犻櫎鎴愬姛", + }); + initData(); + }); + }) + .catch(() => { + ElMessage({ + type: "info", + message: "鍙栨秷鍒犻櫎", + }); + }); +}; + //鎵撳嵃鏁版嵁 const printExcel = () => { // 鏌ヨ鏉′欢 @@ -1294,9 +1364,11 @@ if (isactive.value == 1) { selectoptions.value = userOptions; initData(); - } else { + } else if (isactive.value == 2) { selectoptions.value = roleOptions; getRole(); + } else { + GetFacePageData(); } }; @@ -1331,6 +1403,7 @@ }); } }; + //绠$悊 //璺敱璺宠浆 const toDetail = (row) => { @@ -1339,6 +1412,7 @@ onMounted(() => { initData(); + getRole(); }); </script> <style lang="scss" scoped> @@ -1484,14 +1558,16 @@ text-align: center; } } +:deep(.hide .el-upload--picture-card) { + display: none; +} </style> <style> -.confirmButtonClass { +/* .confirmButtonClass { margin-right: 10px; } - .el-message-box .el-message-box__btns { flex-direction: row-reverse !important; justify-content: normal !important; -} +} */ </style> -- Gitblit v1.9.3