Browse Source

Merge branch 'master' of http://git.mydig.net/Sagoo-Cloud/sagoo-admin-ui

picasso 3 năm trước cách đây
mục cha
commit
cb038efefc

+ 0 - 10
index.html

@@ -9,16 +9,6 @@
 </head>
 <body>
 	<div id="app"></div>
-	<script type="text/javascript">
-		var _hmt = _hmt || [];
-		(function () {
-			var hm = document.createElement('script');
-			hm.src = 'https://hm.baidu.com/hm.js?d9c8b87d10717013641458b300c552e4';
-			var s = document.getElementsByTagName('script')[0];
-			s.parentNode.insertBefore(hm, s);
-		})();
-	</script>
 	<script type="module" src="/src/main.ts"></script>
-	<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=wsijQt8sLXrCW71YesmispvYHitfG9gv&s=1"></script>
 </body>
 </html>

+ 3 - 2
package.json

@@ -7,9 +7,10 @@
   "scripts": {
     "dev": "vite --force",
     "build": "vite build",
-    "deploy": "npm run build && npm run deploy:rm && npm run deploy:scp",
+    "deploy": "npm run build && npm run deploy:rm && npm run deploy:scp && npm run deploy:auth",
     "deploy:rm": "ssh iot 'rm -rf /www/wwwroot/zhgy.sagoo.cn-copy/* && rm -rf /www/wwwroot/zhgy.sagoo.cn-pre/*'",
     "deploy:scp": "scp -r ./dist/* iot:/www/wwwroot/zhgy.sagoo.cn-pre/ && ssh iot 'mv /www/wwwroot/zhgy.sagoo.cn/* /www/wwwroot/zhgy.sagoo.cn-copy && mv /www/wwwroot/zhgy.sagoo.cn-pre/* /www/wwwroot/zhgy.sagoo.cn'",
+    "deploy:auth": "ssh iot 'chown -R www /www/wwwroot/zhgy.sagoo.cn/'",
     "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/"
   },
   "dependencies": {
@@ -81,4 +82,4 @@
     "type": "git",
     "url": "https://gitee.com/lyt-top/vue-next-admin.git"
   }
-}
+}

+ 3 - 1
src/api/system/index.ts

@@ -8,7 +8,9 @@ export default {
     logout: () => post('/loginOut'),
   },
   api: {
-    getList: (params?: object) => get('/system/api/GetAll', params),
+    getList: (params?: object) => get('/system/api/list', params),
+    getAll: () => get('/system/api/GetAll'),
+    detail: (id: number) => get('/system/api/detail', { id }),
     add: (data: object) => post('/system/api/add', data),
     del: (id: number) => del('/system/api/del', { id }),
     edit: (data: object) => put('/system/api/edit', data),

+ 2 - 1
src/components/pagination/index.vue

@@ -74,7 +74,8 @@ export default defineComponent({
         emit('update:limit', val)
       }
     });
-    const handleSizeChange = (val:number) => {
+    const handleSizeChange = (val: number) => {
+      currentPage.value = 1
       emit('pagination', { page: currentPage.value, limit: val })
     };
     const handleCurrentChange=(val:number) => {

+ 23 - 1
src/hooks/useCommon.ts

@@ -1,4 +1,4 @@
-import { reactive } from 'vue'
+import { reactive, ref } from 'vue'
 
 export default function () {
   const statusParams = reactive({
@@ -7,3 +7,25 @@ export default function () {
 
   return { statusParams }
 }
+
+export function useSearch<T>(expandParams?: any) {
+  //  <pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList" />
+  interface SearchParams {
+    status: -1 | 0 | 1,
+    pageNum: number;
+    pageSize: number;
+    total: number;
+    [key: string]: any;
+  }
+  const params = reactive<SearchParams>({
+    status: -1,
+    pageNum: 1,
+    pageSize: 10,
+    total: 0,
+    ...expandParams
+  })
+
+  const tableData = ref<T | []>([])
+
+  return { params, tableData }
+}

+ 5 - 3
src/views/system/api/component/edit.vue

@@ -27,7 +27,7 @@
 </template>
 
 <script lang="ts" setup>
-import { ref, reactive } from 'vue';
+import { ref, reactive, nextTick } from 'vue';
 import api from '/@/api/system';
 import { ApiRow } from '/@/api/model/system/menu';
 import { ruleRequired } from '/@/utils/validator';
@@ -41,6 +41,7 @@ const menuData = ref<any[]>([]);
 
 const baseForm: ApiRow = {
 	menuIds: [],
+	id: undefined,
 	name: '',
 	address: '',
 	remark: '',
@@ -82,9 +83,10 @@ const resetForm = async () => {
 
 const open = async (row: any) => {
 	resetForm();
-	Object.assign(formData, { ...row });
 	showDialog.value = true;
-	// console.log(row);
+	nextTick(() => {
+		Object.assign(formData, { ...row });
+	});
 };
 
 defineExpose({ open });

+ 40 - 11
src/views/system/api/index.vue

@@ -3,8 +3,27 @@
     <el-card shadow="hover">
       <div class="search">
         <el-form :inline="true">
+          <el-form-item label="接口名称">
+            <el-input v-model="params.name" placeholder="请输入接口名称" clearablestyle="width: 240px" @keyup.enter.native="getList(1)" />
+          </el-form-item>
+          <el-form-item label="接口地址">
+            <el-input v-model="params.address" placeholder="请输入接口地址" clearablestyle="width: 240px" @keyup.enter.native="getList(1)" />
+          </el-form-item>
+          <el-form-item label="状态" prop="status" style="width: 200px;">
+            <el-select v-model="params.status" placeholder="接口状态" clearablestyle="width: 240px">
+              <el-option label="全部" :value="-1" />
+              <el-option label="启用" :value="1" />
+              <el-option label="禁用" :value="0" />
+            </el-select>
+          </el-form-item>
           <el-form-item>
-            <el-button size="default" type="success" class="mr-3" @click="addOrEdit()">
+            <el-button size="default" type="primary" class="ml10" @click="getList(1)">
+              <el-icon>
+                <ele-Search />
+              </el-icon>
+              查询
+            </el-button>
+            <el-button type="success" @click="addOrEdit()">
               <el-icon>
                 <ele-FolderAdd />
               </el-icon>
@@ -19,8 +38,8 @@
         <el-table-column prop="address" label="接口地址" show-overflow-tooltip></el-table-column>
         <el-table-column prop="status" label="状态" min-width="100" align="center">
           <template #default="scope">
-            <el-switch v-model="scope.row.status" inline-prompt :active-value="1" :inactive-value="0" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)">
-            </el-switch>
+            <el-tag type="success" size="small" v-if="scope.row.status">启用</el-tag>
+            <el-tag type="info" size="small" v-else>禁用</el-tag>
           </template>
         </el-table-column>
         <el-table-column label="操作" width="100" align="center">
@@ -30,8 +49,9 @@
           </template>
         </el-table-column>
       </el-table>
+      <pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
     </el-card>
-    <EditForm ref="editFormRef" @getList="getList"></EditForm>
+    <EditForm ref="editFormRef" @getList="getList()"></EditForm>
   </div>
 </template>
 
@@ -41,24 +61,33 @@ import EditForm from './component/edit.vue';
 import { ApiRow } from '/@/api/model/system/menu';
 import api from '/@/api/system';
 import { ElMessageBox, ElMessage } from 'element-plus';
+import { useSearch } from '/@/hooks/useCommon';
 
-const tableData = ref<ApiRow[]>([]);
 const editFormRef = ref();
+const { params, tableData } = useSearch<ApiRow[]>({ name: '', address: '' });
 
-const getList = async () => {
+const getList = async (pageNum?: number) => {
+	pageNum && (params.pageNum = pageNum);
 	tableData.value = [];
-	let res = await api.api.getList();
-	tableData.value = res || [];
+	let res = await api.api.getList(params);
+	tableData.value = res.Info || [];
+	params.total = res.total;
 };
 
 getList();
 
-const addOrEdit = (row?: ApiRow) => {
-	editFormRef.value.open(row);
+const addOrEdit = async (row?: ApiRow) => {
+	if (row) {
+		let res = await api.api.detail(row.id as number).then();
+		editFormRef.value.open(res);
+		return;
+	} else {
+		editFormRef.value.open();
+	}
 };
 
 const onDel = (row: ApiRow) => {
-	ElMessageBox.confirm(`此操作将删除按钮:“${row.name}”,是否继续?`, '提示', {
+	ElMessageBox.confirm(`此操作将删除接口:“${row.name}”,是否继续?`, '提示', {
 		confirmButtonText: '确认',
 		cancelButtonText: '取消',
 		type: 'warning',