From 56fab901b298857ff4985b7429ef843c9a9d1471 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期三, 28 八月 2024 16:20:02 +0800
Subject: [PATCH] 钢化模块打印功能,新增表格字段

---
 UI-Project/src/views/User/permissions.vue |  355 ++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 264 insertions(+), 91 deletions(-)

diff --git a/UI-Project/src/views/User/permissions.vue b/UI-Project/src/views/User/permissions.vue
index 80cff3d..b2f373d 100644
--- a/UI-Project/src/views/User/permissions.vue
+++ b/UI-Project/src/views/User/permissions.vue
@@ -5,8 +5,12 @@
 const router = useRouter()
 const add = ref(false)
 const adda = ref(false)
+const addc = ref(false)
+const addb = ref(false)
 
-const editingUser = ref({}); // 鐢ㄤ簬瀛樺偍褰撳墠缂栬緫鐨勭敤鎴锋暟鎹� 
+import { useI18n } from 'vue-i18n'
+  const { t } = useI18n()
+  let language = ref(localStorage.getItem('lang') || 'zh')
 import request from "@/utils/request"
 import { ref, onMounted } from "vue";
 // import { ref } from 'vue'
@@ -15,8 +19,9 @@
 const selectedProjectNoa = ref(''); // 褰撳墠閫変腑鐨勮鑹� 
 // const options = ref<any[]>([]); // 涓嬫媺閫夐」鍒楄〃  
   const menuName = ref('');
-  const parentId = ref('');
+  const listSort = ref('');
   const url = ref('');
+const currentRow = reactive({}); // 褰撳墠琛岀殑鏁版嵁 
 const tableData = ref([])
 const slot = ref('')
  request.get("/loadGlass/sys/menu/nav").then((res) => {
@@ -50,7 +55,7 @@
     const response = await request.post('/loadGlass/sys/role/queryRole',{
   key: ''
 });  
-    if (response.code == 200) {  
+    if (response.code === 200) {  
     titleSelectJsona.value.processTypea = response.data;
     console.log(response.data);
  
@@ -61,20 +66,88 @@
     console.error('Error fetching options:', error);  
   }  
 }; 
-// 娣诲姞 
+const handleBindRack = (row) => {
+  // selectedRow.value = row; // 鏇存柊閫変腑鐨勮鏁版嵁  
+  currentRow.menuName  = row.menuName; // 鐩存帴璁剧疆鍝嶅簲寮忓睘鎬�  
+  currentRow.id  = row.id; // 鐩存帴璁剧疆鍝嶅簲寮忓睘鎬�  
+  // currentRow.slot = row.slot;  
+  // window.localStorage.setItem('deviceId', row.deviceId)
+  // window.localStorage.setItem('slot', row.slot)
+  addb.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+function closeDialog(row) {
+     add.value = false;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+}
+function closeDialoga(row) {
+     adda.value = false;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+}
+function closeDialogb(row) {
+     addb.value = false;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+}
+function closeDialogc(row) {
+     addc.value = false;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+}
+// 娣诲姞涓�绾ц彍鍗�
 const getTableRow = async () => {
   try {
     const response = await request.post('/loadGlass/sys/menu/save', {
       menuName: menuName.value,
-      parentId: parentId.value,
+      listSort: listSort.value,
       url: url.value,
     }); 
  
-    if (response.code == 200) {
+    if (response.code === 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
       add.value = false;
-    //  tableData.value = response.data;
+     tableData.value = response.data;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+// 娣诲姞浜岀骇鑿滃崟
+const getTableRowb = async () => {
+  try {
+    const dataToSend = {  
+      parentId: currentRow.id,
+      // menuName: currentRow.menuName,
+      // children: [  
+      //   {  
+      menuName: menuName.value,
+      listSort: listSort.value,
+      url: url.value,
+      //   }  
+      // ]  
+    };
+    const response = await request.post('/loadGlass/sys/menu/save',dataToSend ); 
+    if (response.code === 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      addb.value = false;
+     tableData.value = response.data;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
@@ -86,23 +159,60 @@
 };
 // 澶勭悊缂栬緫鎸夐挳鐐瑰嚮  
 function handleEdit(row) {  
-  editingUser.value = { ...row }; // 浣跨敤灞曞紑杩愮畻绗﹀鍒跺綋鍓嶈鏁版嵁  
+  listSort.value = row.listSort; 
+  menuName.value = row.menuName; 
+  url.value = row.url; 
   adda.value = true; // 鏄剧ず瀵硅瘽妗�  
+}  
+// 淇敼浜岀骇鑿滃崟
+function handleEditc(row) {  
+  listSort.value = row.listSort; 
+  menuName.value = row.menuName; 
+  url.value = row.url; 
+  addc.value = true; // 鏄剧ず瀵硅瘽妗�  
 }  
 // 缂栬緫
 const getTableRowa = async () => {
   try {
     const response = await request.post('/loadGlass/sys/menu/updateMenu', {
+      parentId: currentRow.id,
       menuName: menuName.value,
-      parentId: parentId.value,
+      listSort: listSort.value,
       url: url.value,
     }); 
-    if (response.code == 200) {
+    if (response.code === 200) {
       // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
       ElMessage.success(response.message);
-      editingUser.value = {}; 
       adda.value = false;
      tableData.value = response.data;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+}; 
+// 缂栬緫浜岀骇鑿滃崟
+const getTableRowac = async () => {
+  try {
+    const response = await request.post('/loadGlass/sys/menu/updateMenu', {
+      menuName: menuName.value,
+      listSort: listSort.value,
+      url: url.value,
+    }); 
+    if (response.code === 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      ElMessage.success(response.message);
+      addc.value = false;
+     tableData.value = response.data;
+       menuName.value = '';
+       listSort.value = '';
+       url.value = '';
     } else {
       // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
       ElMessage.error(response.msg);
@@ -114,16 +224,16 @@
 };
 // 鍒犻櫎 
  const opena = async(row) => {  
-  try {  
+  try {
     const confirmResult = await ElMessageBox.confirm(  
-      '鏄惁鍒犻櫎璇ヨ彍鍗�?',  
-      '鎻愮ず',  
+      t('customer.demenu'), 
+      t('customer.prompt'),  
       {  
-        confirmButtonText: '鏄�',  
-        cancelButtonText: '鍙栨秷',  
+        confirmButtonText: t('customer.yes'), 
+        cancelButtonText: t('customer.cancel'),
         type: 'warning',  
-      }  
-    );  
+      } 
+    );
     if (confirmResult === 'confirm') {  
       // 鐢ㄦ埛鐐瑰嚮浜嗏�滄槸鈥濓紝鐜板湪璋冪敤鍒犻櫎鎺ュ彛  
       const response = await request.post("/loadGlass/sys/menu/deleteMenu", {
@@ -143,54 +253,16 @@
   }  
 };   
 
-// const gridOptions = reactive({
-//   border:  "full",//琛ㄦ牸鍔犺竟妗�
-//   keepSource: true,//淇濇寔婧愭暟鎹�
-//   align: 'center',//鏂囧瓧灞呬腑
-//   stripe:true,//鏂戦┈绾�
-//   rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-//   id: 'OrderList',
-//   showFooter: true,//鏄剧ず鑴�
-//   printConfig: {},
-//   importConfig: {},
-//   exportConfig: {},
-//   scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
-//   showOverflow:true,
-//   columnConfig: {
-//     resizable: true,
-//     useKey: true
-//   },
-//   filterConfig: {   //绛涢�夐厤缃」
-//     remote: true
-//   },
-//   customConfig: {
-//     storage: true
-//   },
-//   editConfig: {
-//     trigger: 'click',
-//     mode: 'row',
-//     showStatus: true
-//   },
-//   data:  [
-//     {
-//       'id': '1',
-//       'long': '5',
-//       'wide': '1005',
-//       'thick': '183.6',
-//     }
-//   ]
- 
-// })
 </script>
 
 <template>
-  <div style="height: 700px;">
-     <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">娣诲姞鑿滃崟</el-button>
+  <div style="height: 600px;">
+     <el-button type="primary" style="margin-top: 10px;margin-left: 10px;"  size="mini" id="searchButton" @click="add = true">{{ $t('customer.addmenu') }}</el-button>
     <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
       <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 650px;">
               <el-table  
           :data="tableData" 
-          height="650"
+          height="550"
           @expand-change="handleExpandChange"  
           row-key="id" 
           :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" 
@@ -205,42 +277,43 @@
                   row-key="id"  
                   :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" 
                 >  
-                  <el-table-column prop="menuName" label="浜岀骇鑿滃崟鏍�" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/>  
-                  <el-table-column prop="url" label="閾炬帴" align="center" min-width="160"/>  
-          <el-table-column prop="id" align="center" label="鎺掑簭" min-width="140"/>
-                  <el-table-column fixed="right" label="鎿嶄綔" align="center">
+                  <el-table-column prop="menuName" :label="$t('customer.semenu')" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/>  
+                  <el-table-column prop="url" :label="$t('customer.link')" align="center" min-width="160"/>  
+          <el-table-column prop="listSort" align="center" :label="$t('customer.sort')" min-width="140"/>
+                  <el-table-column fixed="right" :label="$t('customer.operate')" align="center">
             <template #default="scope">
-              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">缂栬緫</el-button>
-              <el-button size="mini" type="text" plain @click="opena(scope.row)">鍒犻櫎</el-button>
+              <el-button size="mini" type="text" plain @click="handleEditc(scope.row)">{{ $t('customer.exit') }}</el-button>
+              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('customer.delete') }}</el-button>
             </template>
         </el-table-column>
                 </el-table>  
               </div>  
             </template>  
           </el-table-column>  
-          <el-table-column prop="menuName" label="涓�绾ц彍鍗曟爮" align="center" min-width="120"  />  
-                  <el-table-column prop="url" label="閾炬帴" align="center" min-width="200"/>  
-          <el-table-column prop="id" align="center" label="鎺掑簭" min-width="180" />
-          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
+          <el-table-column prop="menuName" :label="$t('customer.firstmenu')" align="center" min-width="120"  />  
+                  <el-table-column prop="url" :label="$t('customer.link')" align="center" min-width="200"/>  
+          <el-table-column prop="listSort" align="center" :label="$t('customer.sort')" min-width="180" />
+          <el-table-column fixed="right" :label="$t('customer.operate')" align="center" width="200">
             <template #default="scope">
-              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">缂栬緫</el-button>
-              <el-button size="mini" type="text" plain @click="opena(scope.row)">鍒犻櫎</el-button>
+              <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">{{ $t('customer.addmenua') }}</el-button>
+              <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('customer.exit') }}</el-button>
+              <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('customer.delete') }}</el-button>
             </template>
         </el-table-column>
         </el-table>
       </div>
     </el-card>
   </div>
-  <el-dialog v-model="add" top="23vh" width="37%" title="娣诲姞鑿滃崟" >
+  <el-dialog v-model="add" top="23vh" width="37%" :title="$t('customer.addmenu')">
     <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
             <el-form  size="mini" label-width="150px">
-      <el-form label-width="100px" label-position="right">
+      <el-form label-width="150px" label-position="right">
         <el-row style="margin-top: -15px;margin-bottom: -2px;">
           <el-col :span="6">
               <div id="dt" style="font-size: 15px;">
         <div> 
-          <el-form-item label="鑿滃崟鏍忥細" :required="true" style="width: 25vw">
-                <el-input v-model="menuName" autocomplete="off" />
+          <el-form-item :label="$t('customer.firstmenuname')" :required="true" style="width: 25vw">
+                <el-input v-model="menuName" autocomplete="off" :placeholder="$t('customer.inmenu')"/>
               </el-form-item></div></div>
           </el-col>
         </el-row>
@@ -248,8 +321,8 @@
           <el-col :span="6">
               <div id="dt" style="font-size: 15px;">
         <div>
-          <el-form-item label="閾炬帴锛�" :required="true" style="width: 25vw">
-                <el-input v-model="url" autocomplete="off" />
+          <el-form-item :label="$t('customer.linka')" :required="true" style="width: 25vw">
+                <el-input v-model="url" autocomplete="off" :placeholder="$t('customer.inlink')"/>
               </el-form-item></div></div>
           </el-col>
         </el-row>
@@ -257,8 +330,8 @@
           <el-col :span="6">
               <div id="dt" style="font-size: 15px;">
         <div>
-          <el-form-item label="鎺掑簭锛�" :required="true" style="width: 25vw">
-                <el-input v-model="parentId" autocomplete="off" />
+          <el-form-item :label="$t('customer.sorta')" :required="true" style="width: 25vw">
+                <el-input v-model="listSort" autocomplete="off" :placeholder="$t('customer.insort')"/>
               </el-form-item></div></div>
           </el-col>
         </el-row>
@@ -268,22 +341,79 @@
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="getTableRow">
-          纭
+          {{ $t('customer.sure') }}
         </el-button>
-        <el-button @click="add = false">鍙栨秷</el-button>
+        <el-button @click="closeDialog">{{ $t('customer.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 
-  <el-dialog v-model="adda" top="23vh" width="37%" title="淇敼鑿滃崟" >
+  <el-dialog v-model="addb" top="23vh" width="37%" :title="$t('customer.addmenua')">
+    <div style="margin-bottom: 20px">
+      <el-form>
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+              <el-form-item :label="$t('customer.firstmenuname')"  style="width: 22vw">
+                <!-- {{ currentRow.menuName }} -->
+            <el-input disabled v-model="currentRow.menuName" autocomplete="off"></el-input>
+              </el-form-item>
+              </div>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
     <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
-     <el-form  :model="editingUser" ref="formRef" size="mini" label-width="150px">
+            <el-form  size="mini" label-width="150px">
+      <el-form label-width="150px" label-position="right">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div> 
+          <el-form-item :label="$t('customer.semenuname')" :required="true" style="width: 25vw">
+                <el-input v-model="menuName" autocomplete="off" :placeholder="$t('customer.inmenu')"/>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('customer.linka')" :required="true" style="width: 25vw">
+                <el-input v-model="url" autocomplete="off" :placeholder="$t('customer.inlink')"/>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('customer.sorta')" :required="true" style="width: 25vw">
+                <el-input v-model="listSort" autocomplete="off" :placeholder="$t('customer.insort')"/>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRowb">
+          {{ $t('customer.sure') }}
+        </el-button>
+        <el-button @click="closeDialogb">{{ $t('customer.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+  <el-dialog v-model="adda" top="23vh" width="37%" :title="$t('customer.exmene')">
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+     <el-form ref="formRef" size="mini" label-width="150px">
       <el-form label-width="100px" label-position="right">
         <el-row style="margin-top: -15px;margin-bottom: -2px;">
           <el-col :span="6">
               <div id="dt" style="font-size: 15px;">
         <div> 
-          <el-form-item label="鑿滃崟鏍忥細" :required="true" style="width: 25vw">
-                <el-input v-model="editingUser.menuName" autocomplete="off" />
+          <el-form-item :label="$t('customer.menu')" :required="true" style="width: 25vw">
+                <el-input v-model="menuName" autocomplete="off" :placeholder="$t('customer.inmenu')"/>
               </el-form-item></div></div>
           </el-col>
         </el-row>
@@ -291,8 +421,8 @@
           <el-col :span="6">
               <div id="dt" style="font-size: 15px;">
         <div>
-          <el-form-item label="閾炬帴锛�" :required="true" style="width: 25vw">
-                <el-input v-model="editingUser.url" autocomplete="off" />
+          <el-form-item :label="$t('customer.linka')" :required="true" style="width: 25vw">
+                <el-input v-model="url" autocomplete="off" :placeholder="$t('customer.inlink')"/>
               </el-form-item></div></div>
           </el-col>
         </el-row>
@@ -300,8 +430,8 @@
           <el-col :span="6">
               <div id="dt" style="font-size: 15px;">
         <div>
-          <el-form-item label="鎺掑簭锛�" :required="true" style="width: 25vw">
-                <el-input v-model="editingUser.parentId" autocomplete="off" />
+          <el-form-item :label="$t('customer.sorta')" :required="true" style="width: 25vw">
+                <el-input v-model="listSort" autocomplete="off" :placeholder="$t('customer.insort')"/>
               </el-form-item></div></div>
           </el-col>
         </el-row>
@@ -311,9 +441,52 @@
     <template #footer>
       <div id="dialog-footer">
         <el-button type="primary" @click="getTableRowa">
-          纭
+          {{ $t('customer.sure') }}
         </el-button>
-        <el-button @click="adda = false">鍙栨秷</el-button>
+        <el-button @click="closeDialoga">{{ $t('customer.cancel') }}</el-button>
+      </div>
+    </template>
+  </el-dialog> 
+  <el-dialog v-model="addc" top="23vh" width="37%" :title="$t('customer.exmenea')">
+    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
+     <el-form ref="formRef" size="mini" label-width="150px">
+      <el-form label-width="100px" label-position="right">
+        <el-row style="margin-top: -15px;margin-bottom: -2px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div> 
+          <el-form-item :label="$t('customer.menu')" :required="true" style="width: 25vw">
+                <el-input v-model="menuName" autocomplete="off" :placeholder="$t('customer.inmenu')"/>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('customer.linka')" :required="true" style="width: 25vw">
+                <el-input v-model="url" autocomplete="off" :placeholder="$t('customer.inlink')"/>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        <el-row style="margin-top: 10px;">
+          <el-col :span="6">
+              <div id="dt" style="font-size: 15px;">
+        <div>
+          <el-form-item :label="$t('customer.sorta')" :required="true" style="width: 25vw">
+                <el-input v-model="listSort" autocomplete="off" :placeholder="$t('customer.insort')"/>
+              </el-form-item></div></div>
+          </el-col>
+        </el-row>
+        </el-form>
+            </el-form>
+          </div>
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="getTableRowac">
+          {{ $t('customer.sure') }}
+        </el-button>
+        <el-button @click="closeDialogc">{{ $t('customer.cancel') }}</el-button>
       </div>
     </template>
   </el-dialog> 

--
Gitblit v1.8.0