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