Browse Source

权限管理页

master
hongxilin 4 months ago
parent
commit
6f586fa170
  1. 2
      vue/gold-system/README.md
  2. 18
      vue/gold-system/package-lock.json
  3. 1
      vue/gold-system/package.json
  4. 38
      vue/gold-system/src/router/index.js
  5. 30
      vue/gold-system/src/views/index.vue
  6. 33
      vue/gold-system/src/views/login.vue
  7. 526
      vue/gold-system/src/views/permissions/index.vue
  8. 6
      vue/gold-system/vite.config.ts

2
vue/gold-system/README.md

@ -29,3 +29,5 @@ npm install xlsx 安装xlsx组件,解决excel文件读取问题
npm install vue-json-excel 安装导出 excel 组件 npm install vue-json-excel 安装导出 excel 组件
npm install lodash 安装lodash组件,解决数据处理问题 npm install lodash 安装lodash组件,解决数据处理问题
npm install --save-dev @types/node 安装typescript声明文件

18
vue/gold-system/package-lock.json

@ -22,6 +22,7 @@
"xlsx": "^0.18.5" "xlsx": "^0.18.5"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^22.10.5",
"@vitejs/plugin-vue": "^5.1.4", "@vitejs/plugin-vue": "^5.1.4",
"typescript": "~5.6.2", "typescript": "~5.6.2",
"vite": "^5.4.10", "vite": "^5.4.10",
@ -811,6 +812,16 @@
"@types/lodash": "*" "@types/lodash": "*"
} }
}, },
"node_modules/@types/node": {
"version": "22.10.5",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/node/-/node-22.10.5.tgz",
"integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~6.20.0"
}
},
"node_modules/@types/web-bluetooth": { "node_modules/@types/web-bluetooth": {
"version": "0.0.16", "version": "0.0.16",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
@ -1741,6 +1752,13 @@
"node": ">=14.17" "node": ">=14.17"
} }
}, },
"node_modules/undici-types": {
"version": "6.20.0",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/undici-types/-/undici-types-6.20.0.tgz",
"integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
"dev": true,
"license": "MIT"
},
"node_modules/vite": { "node_modules/vite": {
"version": "5.4.11", "version": "5.4.11",
"resolved": "https://mirrors.huaweicloud.com/repository/npm/vite/-/vite-5.4.11.tgz", "resolved": "https://mirrors.huaweicloud.com/repository/npm/vite/-/vite-5.4.11.tgz",

1
vue/gold-system/package.json

@ -24,6 +24,7 @@
"xlsx": "^0.18.5" "xlsx": "^0.18.5"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^22.10.5",
"@vitejs/plugin-vue": "^5.1.4", "@vitejs/plugin-vue": "^5.1.4",
"typescript": "~5.6.2", "typescript": "~5.6.2",
"vite": "^5.4.10", "vite": "^5.4.10",

38
vue/gold-system/src/router/index.js

@ -3,41 +3,43 @@ import { createRouter,createWebHashHistory } from 'vue-router';
const router=createRouter({ const router=createRouter({
history:createWebHashHistory(), history:createWebHashHistory(),
routes:[ routes:[
{path:'/jtzy/Product/other/test/hwjb/login', name:"login", component:()=>import("../views/login.vue")},
{path:'/',redirect:"/jtzy/Product/other/test/hwjb/login"},
{path:'/jtzy/Product/other/test/hwjb/test',component:()=>import("../views/z.vue")},
{path:'/login', name:"login", component:()=>import("../views/login.vue")},
{path:'/',redirect:"/login"},
{path:'/test',component:()=>import("../views/z.vue")},
{ {
meta:{requireAuth:true}, meta:{requireAuth:true},
path:'/jtzy/Product/other/test/hwjb/index',component:()=>import("../views/index.vue"),
path:'/index',component:()=>import("../views/index.vue"),
children:[ children:[
// 工作台 // 工作台
{path:'/jtzy/Product/other/test/hwjb/workspace',component:()=>import("../views/workspace/index.vue")},
{path:'/workspace',component:()=>import("../views/workspace/index.vue")},
// 充值审核 // 充值审核
{path:'/jtzy/Product/other/test/hwjb/rechargeAudit',component:()=>import("../views/audit/rechargeAudit.vue")},
{path:'/rechargeAudit',component:()=>import("../views/audit/rechargeAudit.vue")},
// 退款审核 // 退款审核
{path:'/jtzy/Product/other/test/hwjb/refundAudit',component:()=>import("../views/audit/refundAudit.vue")},
{path:'/refundAudit',component:()=>import("../views/audit/refundAudit.vue")},
// 新增消费 // 新增消费
{path:'/jtzy/Product/other/test/hwjb/addConsume',component:()=>import("../views/consume/addConsume.vue")},
{path:'/addConsume',component:()=>import("../views/consume/addConsume.vue")},
// 所有消费明细 // 所有消费明细
{path:'/jtzy/Product/other/test/hwjb/allConsume',component:()=>import("../views/consume/allConsume.vue")},
{path:'/allConsume',component:()=>import("../views/consume/allConsume.vue")},
// 活动管理 // 活动管理
{path:'/jtzy/Product/other/test/hwjb/activity',component:()=>import("../views/managerecharge/activity.vue")},
{path:'/activity',component:()=>import("../views/managerecharge/activity.vue")},
// 汇率管理 // 汇率管理
{path:'/jtzy/Product/other/test/hwjb/rate',component:()=>import("../views/managerecharge/rate.vue")},
{path:'/rate',component:()=>import("../views/managerecharge/rate.vue")},
// 新增充值 // 新增充值
{path:'/jtzy/Product/other/test/hwjb/addRecharge',component:()=>import("../views/recharge/addRecharge.vue")},
{path:'/addRecharge',component:()=>import("../views/recharge/addRecharge.vue")},
// 客户充值明细 // 客户充值明细
{path:'/jtzy/Product/other/test/hwjb/adminRecharge',component:()=>import("../views/recharge/adminRecharge.vue")},
{path:'/adminRecharge',component:()=>import("../views/recharge/adminRecharge.vue")},
// 所有充值明细 // 所有充值明细
{path:'/jtzy/Product/other/test/hwjb/allRecharge',component:()=>import("../views/recharge/allRecharge.vue")},
{path:'/allRecharge',component:()=>import("../views/recharge/allRecharge.vue")},
// 新增退款 // 新增退款
{path:'/jtzy/Product/other/test/hwjb/addRefund',component:()=>import("../views/refund/addRefund.vue")},
{path:'/addRefund',component:()=>import("../views/refund/addRefund.vue")},
// 退款明细 // 退款明细
{path:'/jtzy/Product/other/test/hwjb/allRefund',component:()=>import("../views/refund/allRefund.vue")},
{path:'/allRefund',component:()=>import("../views/refund/allRefund.vue")},
// 客户金币明细 // 客户金币明细
{path:'/jtzy/Product/other/test/hwjb/usergold',component:()=>import("../views/usergold/index.vue")},
{path:'/usergold',component:()=>import("../views/usergold/index.vue")},
// 客户金币余额 // 客户金币余额
{path:'/jtzy/Product/other/test/hwjb/usergoldInfo',component:()=>import("../views/usergoldInfo/index.vue")},
{path:'/usergoldInfo',component:()=>import("../views/usergoldInfo/index.vue")},
// 权限管理
{path:'/permissions',component:()=>import("../views/permissions/index.vue")},
] ]
}, },

30
vue/gold-system/src/views/index.vue

@ -76,7 +76,7 @@ onMounted(async function () {
@open="handleOpen" @open="handleOpen"
@close="handleClose" @close="handleClose"
> >
<el-menu-item index="/jtzy/Product/other/test/hwjb/workspace">
<el-menu-item index="/workspace">
<el-icon> <el-icon>
<Folder /> <Folder />
</el-icon> </el-icon>
@ -90,8 +90,8 @@ onMounted(async function () {
</el-icon> </el-icon>
<span>财务审核</span> <span>财务审核</span>
</template> </template>
<el-menu-item index="/jtzy/Product/other/test/hwjb/rechargeAudit">充值审核</el-menu-item>
<el-menu-item index="/jtzy/Product/other/test/hwjb/refundAudit">退款审核</el-menu-item>
<el-menu-item index="/rechargeAudit">充值审核</el-menu-item>
<el-menu-item index="/refundAudit">退款审核</el-menu-item>
</el-sub-menu> </el-sub-menu>
<el-sub-menu index="3"> <el-sub-menu index="3">
@ -101,8 +101,8 @@ onMounted(async function () {
</el-icon> </el-icon>
<span>充值管理</span> <span>充值管理</span>
</template> </template>
<el-menu-item index="/jtzy/Product/other/test/hwjb/activity">活动管理</el-menu-item>
<el-menu-item index="/jtzy/Product/other/test/hwjb/rate">汇率管理</el-menu-item>
<el-menu-item index="/activity">活动管理</el-menu-item>
<el-menu-item index="/rate">汇率管理</el-menu-item>
</el-sub-menu> </el-sub-menu>
<el-sub-menu index="4"> <el-sub-menu index="4">
@ -112,9 +112,9 @@ onMounted(async function () {
</el-icon> </el-icon>
<span>金币充值</span> <span>金币充值</span>
</template> </template>
<el-menu-item index="/jtzy/Product/other/test/hwjb/addRecharge">新增充值</el-menu-item>
<el-menu-item index="/jtzy/Product/other/test/hwjb/adminRecharge">客服充值明细</el-menu-item>
<el-menu-item index="/jtzy/Product/other/test/hwjb/allRecharge">所有充值明细</el-menu-item>
<el-menu-item index="/addRecharge">新增充值</el-menu-item>
<el-menu-item index="/adminRecharge">客服充值明细</el-menu-item>
<el-menu-item index="/allRecharge">所有充值明细</el-menu-item>
</el-sub-menu> </el-sub-menu>
<el-sub-menu index="5"> <el-sub-menu index="5">
@ -124,8 +124,8 @@ onMounted(async function () {
</el-icon> </el-icon>
<span>金币消费</span> <span>金币消费</span>
</template> </template>
<el-menu-item index="/jtzy/Product/other/test/hwjb/addConsume">新增消费</el-menu-item>
<el-menu-item index="/jtzy/Product/other/test/hwjb/allConsume">所有消费明细</el-menu-item>
<el-menu-item index="/addConsume">新增消费</el-menu-item>
<el-menu-item index="/allConsume">所有消费明细</el-menu-item>
</el-sub-menu> </el-sub-menu>
<el-sub-menu index="6"> <el-sub-menu index="6">
@ -135,25 +135,25 @@ onMounted(async function () {
</el-icon> </el-icon>
<span>金币退款</span> <span>金币退款</span>
</template> </template>
<el-menu-item index="/jtzy/Product/other/test/hwjb/addRefund">新增退款</el-menu-item>
<el-menu-item index="/jtzy/Product/other/test/hwjb/allRefund">退款明细</el-menu-item>
<el-menu-item index="/addRefund">新增退款</el-menu-item>
<el-menu-item index="/allRefund">退款明细</el-menu-item>
</el-sub-menu> </el-sub-menu>
<el-menu-item index="/jtzy/Product/other/test/hwjb/usergold">
<el-menu-item index="/usergold">
<el-icon> <el-icon>
<Folder /> <Folder />
</el-icon> </el-icon>
客户金币明细 客户金币明细
</el-menu-item> </el-menu-item>
<el-menu-item index="/jtzy/Product/other/test/hwjb/usergoldInfo">
<el-menu-item index="/usergoldInfo">
<el-icon> <el-icon>
<Folder /> <Folder />
</el-icon> </el-icon>
客户金币余额 客户金币余额
</el-menu-item> </el-menu-item>
<el-menu-item index="/permission">
<el-menu-item index="/permissions">
<el-icon> <el-icon>
<Folder /> <Folder />
</el-icon> </el-icon>

33
vue/gold-system/src/views/login.vue

@ -21,7 +21,7 @@ const login = async function () {
); );
if (result.data.code == 200) { if (result.data.code == 200) {
localStorage.setItem("token", result.data.msg); localStorage.setItem("token", result.data.msg);
router.push("/jtzy/Product/other/test/hwjb/workspace");
router.push("/workspace");
ElMessage.success("登录成功"); ElMessage.success("登录成功");
console.log("请求成功", result); console.log("请求成功", result);
} else { } else {
@ -38,21 +38,10 @@ const login = async function () {
</script> </script>
<template> <template>
<el-row class="login-page"> <el-row class="login-page">
<img
:span="12"
src="../assets/background.jpg"
alt="logo"
class="bg"
fit="fit"
/>
<img :span="12" src="../assets/background.jpg" alt="logo" class="bg" fit="fit" />
<el-col :span="6" :offset="3" class="form"> <el-col :span="6" :offset="3" class="form">
<!-- 登录表单 --> <!-- 登录表单 -->
<el-form
:model="form"
size="large"
autocomplete="off"
@keyup.enter.native="login()"
>
<el-form :model="form" size="large" autocomplete="off" @keyup.enter.native="login()">
<el-form-item> <el-form-item>
<h1 style="color: #409eff">金币系统登录</h1> <h1 style="color: #409eff">金币系统登录</h1>
</el-form-item> </el-form-item>
@ -60,22 +49,12 @@ const login = async function () {
<el-input v-model="form.jwcode" placeholder="请输入精网号"></el-input> <el-input v-model="form.jwcode" placeholder="请输入精网号"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="password"> <el-form-item prop="password">
<el-input
v-model="form.password"
type="password"
placeholder="请输入密码"
/>
<el-input v-model="form.password" type="password" placeholder="请输入密码" />
</el-form-item> </el-form-item>
<el-form-item class="flex"> </el-form-item> <el-form-item class="flex"> </el-form-item>
<!-- 登录按钮 --> <!-- 登录按钮 -->
<el-form-item @keyup.enter="login()"> <el-form-item @keyup.enter="login()">
<el-button
class="button"
type="primary"
auto-insert-space
@click="login()"
>登录</el-button
>
<el-button class="button" type="primary" auto-insert-space @click="login()">登录</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-col> </el-col>
@ -88,12 +67,14 @@ const login = async function () {
width: 50%; width: 50%;
object-fit: cover; object-fit: cover;
} }
.background { .background {
color: #fffdfd; color: #fffdfd;
text-align: center; text-align: center;
font-size: 24px; font-size: 24px;
background-color: #08193d; background-color: #08193d;
} }
.form { .form {
display: flex; display: flex;
flex-direction: column; flex-direction: column;

526
vue/gold-system/src/views/permissions/index.vue

@ -6,74 +6,32 @@ import axios from "axios";
import moment from "moment"; import moment from "moment";
import { ta } from "element-plus/es/locales.mjs"; import { ta } from "element-plus/es/locales.mjs";
import API from "../../api/index.js"; import API from "../../api/index.js";
import { UserFilled } from "@element-plus/icons-vue";
// //
const tableData = ref([]); const tableData = ref([]);
//
const tableAllData = ref([]);
//
const rechargeCoin = ref(0);
const freeCoin = ref(0);
const taskCoin = ref(0);
// =========================================== // ===========================================
// //
const total = ref(100); const total = ref(100);
//
const getTime = ref([]);
// detailY // detailY
const detailY = ref({});
//
const getAllObj = ref({});
const admin = ref({});
// //
const getObj = ref({ const getObj = ref({
pageNum: 1, pageNum: 1,
pageSize: 50, pageSize: 50,
}); });
const permissionAdd = ref(false);
//
const permissionAddVisible = ref(false);
//
const permissionEditVisible = ref(false);
// //
const area = [
{
value: "马来西亚",
label: "马来西亚",
},
{
value: "新加坡",
label: "新加坡",
},
{
value: "香港",
label: "香港",
},
{
value: "泰国",
label: "泰国",
},
{
value: "加拿大",
label: "加拿大",
},
{
value: "越南HCM",
label: "越南HCM",
},
];
const area = ref([]);
// //
const depart = [
{
value: "0",
label: "总部",
},
{
value: "1",
label: "客服",
},
{
value: "2",
label: "财务",
},
];
const store = ref([]);
//
const permissionAddObj = ref({});
//
const permissionEditObj = ref({});
// //
const get = async function (val) { const get = async function (val) {
@ -82,25 +40,15 @@ const get = async function (val) {
if (typeof val === "number") { if (typeof val === "number") {
getObj.value.pageNum = val; getObj.value.pageNum = val;
} }
//
if (getTime.value != null) {
if (getTime.value.startDate != "" && getTime.value.endDate != "") {
detailY.value.startDate = getTime.value[0];
detailY.value.endDate = getTime.value[1];
}
} else {
detailY.value.startDate = "";
detailY.value.endDate = "";
}
console.log("搜索参数", getObj.value); console.log("搜索参数", getObj.value);
// POST // POST
const result = await API.post("http://192.168.8.93:10010/detailY/select", {
const result = await API.post("/hwjb/admin/search", {
...getObj.value, ...getObj.value,
detailYgold: { ...detailY.value },
admin: { ...admin.value },
}); });
tableData.value = result.data.list; tableData.value = result.data.list;
total.value = result.data.total; total.value = result.data.total;
} catch (error) {}
} catch (error) { }
}; };
// //
const search = function () { const search = function () {
@ -109,9 +57,30 @@ const search = function () {
}; };
// //
const reset = function () { const reset = function () {
detailY.value = {};
admin.value = {};
}; };
//
const getArea = async function () {
try {
const result = await API.post("/hwjb/admin/area", {});
area.value = result.data;
} catch (error) {
console.log("请求失败", error);
//
}
}
//
const getStore = async function () {
try {
const result = await API.post("/hwjb/admin/store", {});
store.value = result.data;
} catch (error) {
console.log("请求失败", error);
//
}
}
// //
const checkNumber = function () { const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === "number") { if (typeof parseInt(getObj.value.pageNum) === "number") {
@ -141,12 +110,82 @@ const checkNumber = function () {
} }
}; };
//
const permissionAddInfo = ref({});
//
const openPermissionAddVisible = function () {
permissionAddVisible.value = true;
}
//
const closePermissionAddVisible = function () {
permissionAddVisible.value = false;
}
//
const permissionAddInit = function () {
permissionAddObj.value = {};
openPermissionAddVisible();
}
//
const getAdminByJwcodeWithoutPermission = async function () {
try {
const result = await API.post("/hwjb/admin/selectNo", permissionAddObj.value);
if (result.code == 200) {
permissionAddObj.value = result.data[0];
ElMessage.success("精网号查询成功");
}else{
ElMessage.error(result.msg);
}
console.log("精网号查询没有权限的用户", permissionAddObj.value);
} catch (error) {
console.log("请求失败", error);
//
}
}
//
const permissionAdd = async function () {
try {
console.log("新增用户权限提交", permissionAddObj.value);
} catch (error) {
console.log("新增用户权限失败", error);
//
} finally {
closePermissionAddVisible();
}
}
//
const openPermissionEditVisible = function () {
permissionEditVisible.value = true;
}
//
const closePermissionEditVisible = function () {
permissionEditVisible.value = false;
}
//
const permissionEditInit = function (row) {
permissionEditObj.value = {};
permissionEditObj.value.jwcode = row.jwcode;
permissionEditObj.value.name = row.name;
permissionEditObj.value.area = row.area;
permissionEditObj.value.store = row.store;
permissionEditObj.value.permission = row.permission;
console.log("编辑用户权限", permissionEditObj.value);
openPermissionEditVisible();
}
//
const permissionEdit = async function () {
try {
console.log("编辑用户权限提交", permissionEditObj.value);
} catch (error) {
console.log("编辑用户权限失败", error);
//
} finally {
closePermissionEditVisible();
}
}
// //
onMounted(async function () { onMounted(async function () {
await get(); await get();
await getArea();
await getStore();
}); });
</script> </script>
@ -157,44 +196,19 @@ onMounted(async function () {
<div class="head-card"> <div class="head-card">
<div class="head-card-element"> <div class="head-card-element">
<el-text class="mx-1" size="large">精网号</el-text> <el-text class="mx-1" size="large">精网号</el-text>
<el-input
v-model="detailY.jwcode"
style="width: 240px"
placeholder="请输入精网号"
clearable
/>
<el-input v-model="admin.jwcode" style="width: 240px" placeholder="请输入精网号" clearable />
</div> </div>
<div class="head-card-element" style="margin-left: 50px"> <div class="head-card-element" style="margin-left: 50px">
<el-text class="mx-1" size="large">所属地区</el-text> <el-text class="mx-1" size="large">所属地区</el-text>
<el-select
v-model="detailY.area"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in area"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-select v-model="admin.area" placeholder="请选择所属地区" style="width: 240px" clearable>
<el-option v-for="item in area" :key="item" :label="item" :value="item" />
</el-select> </el-select>
</div> </div>
<div class="head-card-element" style="margin-left: 50px"> <div class="head-card-element" style="margin-left: 50px">
<el-text class="mx-1" size="large">所属部门</el-text> <el-text class="mx-1" size="large">所属部门</el-text>
<el-select
v-model="detailY.area"
placeholder="请选择部门"
style="width: 240px"
clearable
>
<el-option
v-for="item in depart"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-select v-model="admin.store" placeholder="请选择部门" style="width: 240px" clearable>
<el-option v-for="item in store" :key="item" :label="item" :value="item" />
</el-select> </el-select>
</div> </div>
@ -211,20 +225,11 @@ onMounted(async function () {
<el-card> <el-card>
<!-- 添加 --> <!-- 添加 -->
<div class="add-item"> <div class="add-item">
<el-button
style="color: #048efb; border: 1px solid #048efb"
@click="permissionAdd = true"
>新增用户</el-button
>
<el-button style="color: #048efb; border: 1px solid #048efb" @click="permissionAddInit()">新增用户权限</el-button>
</div> </div>
<div> <div>
<el-table :data="tableData" :height="tableHeight" style="width: 100%">
<el-table-column
type="index"
label="序号"
width="100px"
fixed="left"
>
<el-table :data="tableData" :height="tableHeight" style="width: 100%; text-align: center;">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope"> <template #default="scope">
<span>{{ <span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
@ -232,29 +237,31 @@ onMounted(async function () {
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="jwcode" label="精网号" width="170" />
<el-table-column prop="name" label="姓名" width="200" />
<el-table-column prop="area" label="所属地区" width="200" />
<el-table-column prop="rcoin" label="部门权限" width="150">
<template> </template>
<el-table-column prop="jwcode" label="精网号" />
<el-table-column prop="name" label="姓名" />
<el-table-column prop="area" label="所属地区" />
<el-table-column prop="store" label="所属部门" />
<el-table-column prop="permission" label="部门权限">
<template #default="scope">
<span v-if="scope.row.permission === '1'">
总部管理员
</span>
<span v-if="scope.row.permission === '2'">
分部管理员
</span>
<span v-if="scope.row.permission === '3'">
分部审核员
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column prop="rcoin" label="地区权限" width="150" />
<el-table-column
fixed="right"
prop="operation"
label="操作"
width="200px"
>
<el-table-column fixed="right" prop="operation" label="操作">
<template #default="scope"> <template #default="scope">
<el-button type="primary" text @click="del(scope.row)">
<el-button type="warning" text @click="permissionEditInit(scope.row)">
修改权限 修改权限
</el-button> </el-button>
<el-popconfirm
title="确定将此条活动删除吗?"
@confirm="delConfirm"
>
<el-popconfirm title="确定将此条活动删除吗?" @confirm="delConfirm">
<template #reference> <template #reference>
<el-button type="primary" text @click="del(scope.row)">
<el-button type="danger" text @click="del(scope.row)">
删除 删除
</el-button> </el-button>
</template> </template>
@ -271,44 +278,18 @@ onMounted(async function () {
</div> </div>
<!-- 分页 --> <!-- 分页 -->
<!-- 分页 -->
<div class="pagination" style="margin-top: 20px"> <div class="pagination" style="margin-top: 20px">
<el-pagination
background
:page-size="getObj.pageSize"
layout="slot"
:total="total"
>
<el-pagination background :page-size="getObj.pageSize" layout="slot" :total="total">
<div>{{ total }},每页</div> <div>{{ total }},每页</div>
<el-select
v-model="getObj.pageSize"
class="page-size"
@change="get()"
style="width: 80px"
>
<el-option
v-for="item in [5, 10, 20, 50, 100]"
:key="item"
:label="item"
:value="item"
></el-option>
<el-select v-model="getObj.pageSize" class="page-size" @change="get()" style="width: 80px">
<el-option v-for="item in [5, 10, 20, 50, 100]" :key="item" :label="item" :value="item"></el-option>
</el-select> </el-select>
<div></div> <div></div>
</el-pagination> </el-pagination>
<el-pagination
background
layout="prev, pager, next,slot"
:page-size="getObj.pageSize"
:total="total"
:current-page="getObj.pageNum"
@current-change="get"
>
<el-pagination background layout="prev, pager, next,slot" :page-size="getObj.pageSize" :total="total"
:current-page="getObj.pageNum" @current-change="get">
<div>跳至</div> <div>跳至</div>
<el-input
v-model="getObj.pageNum"
style="width: 40px"
@change="checkNumber"
/>
<el-input v-model="getObj.pageNum" style="width: 40px" @change="checkNumber" />
<div></div> <div></div>
</el-pagination> </el-pagination>
</div> </div>
@ -316,84 +297,159 @@ onMounted(async function () {
</el-col> </el-col>
</el-row> </el-row>
<!-- 这是添加弹窗 -->
<el-dialog
v-model="permissionAdd"
title="新增用户"
width="500"
:close-on-click-modal="false"
>
<!-- <template #footer>
<el-form
ref="Ref"
style="max-width: 600px"
:model="rateAdd"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
:size="formSize"
status-icon
>
<el-form-item prop="currency" label="货币名称:">
<el-select
v-model.number="rateAdd.currency"
placeholder="请选择"
style="width: 240px"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item prop="exchangeRate" label="汇率:">
<el-input
v-model="rateAdd.exchangeRate"
@update:modelValue="handleInput"
style="width: 120px"
/>
<p class="unit">:1</p>
<p>
(提示当前规则每 {{ rateAdd.exchangeRate }}
{{ rateAdd.currency }}可兑换 1 新币)
</p>
</el-form-item>
<el-form-item prop="adminId" label="提交人:">
<el-input :value="adminData.name" disabled style="width: 240px" />
</el-form-item>
<el-form-item prop="startTime" label="开始时间:">
<el-date-picker
v-model="rateAdd.startTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
@change="handleStartTimeChange"
value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item prop="endTime" label="结束时间:">
<el-date-picker
v-model="rateAdd.endTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
value-format="YYYY-MM-DD"
/>
</el-form-item>
<el-form-item>
<div class="dialog-footer">
<el-button type="primary" @click="throttledAdd">添加</el-button>
<el-button @click="regeAdd = false">取消</el-button>
<!-- 这是新增用户权限弹窗 -->
<el-dialog v-model="permissionAddVisible" title="新增用户权限" width="800px" :close-on-click-modal="false">
<div style="display: flex; margin: 20px 0px 20px 0px;">
<span class="permissionVisible" style="margin-right: 10px;">精网号:</span>
<el-input placeholder="请输入精网号" v-model="permissionAddObj.jwcode" style="width: 240px; margin-right: 10px;"
clearable></el-input>
<el-button type="primary" @click="getAdminByJwcodeWithoutPermission()">查询</el-button>
</div>
<el-descriptions class="margin-top" :column="2" :size="size" border label-width="200px">
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<UserFilled />
</el-icon>
员工精网号
</div>
</template>
{{ permissionAddObj.jwcode }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<User />
</el-icon>
员工姓名
</div> </div>
</el-form-item>
</el-form>
</template> -->
</template>
{{ permissionAddObj.name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon :style="iconStyle">
<location />
</el-icon>
所属地区
</div>
</template>
{{ permissionAddObj.area }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<OfficeBuilding />
</el-icon>
部门
</div>
</template>
{{ permissionAddObj.store }}
</el-descriptions-item>
</el-descriptions>
<el-divider>
<el-icon><star-filled /></el-icon>
</el-divider>
<div>
<span class="permissionVisible" style="margin-right: 20px;">权限设置:</span>
<el-radio-group v-model="permissionAddObj.permission">
<el-radio value="1" border>总部管理员</el-radio>
<el-radio value="2" border>分部管理员</el-radio>
<el-radio value="3" border>分部审核员</el-radio>
</el-radio-group>
</div>
<template #footer>
<div>
<el-button @click="closePermissionAddVisible()">取消</el-button>
<el-button type="primary" @click="permissionAdd()"> 提交 </el-button>
</div>
</template>
</el-dialog>
<!-- 这是编辑用户权限弹窗 -->
<el-dialog v-model="permissionEditVisible" title="编辑用户权限" width="800px" :close-on-click-modal="false">
<el-descriptions class="margin-top" :column="2" :size="size" border label-width="200px">
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<UserFilled />
</el-icon>
员工精网号
</div>
</template>
{{ permissionEditObj.jwcode }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<User />
</el-icon>
员工姓名
</div>
</template>
{{ permissionEditObj.name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon :style="iconStyle">
<location />
</el-icon>
所属地区
</div>
</template>
{{ permissionEditObj.area }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<OfficeBuilding />
</el-icon>
部门
</div>
</template>
{{ permissionEditObj.store }}
</el-descriptions-item>
</el-descriptions>
<el-divider>
<el-icon><star-filled /></el-icon>
</el-divider>
<div>
<span class="permissionVisible" style="margin-right: 20px;">权限设置:</span>
<el-radio-group v-model="permissionEditObj.permission">
<el-radio value=1 border>总部管理员</el-radio>
<el-radio value=2 border>分部管理员</el-radio>
<el-radio value=3 border>分部审核员</el-radio>
</el-radio-group>
</div>
<template #footer>
<div>
<el-button @click="closePermissionEditVisible()">取消</el-button>
<el-button type="primary" @click="permissionEdit()"> 提交 </el-button>
</div>
</template>
</el-dialog> </el-dialog>
</template> </template>
<style scoped> <style scoped>
.permissionVisible {
font-size: 16px;
font-weight: bold;
}
.pagination { .pagination {
display: flex; display: flex;
} }

6
vue/gold-system/vite.config.ts

@ -7,10 +7,12 @@ export default defineConfig({
server:{ server:{
proxy: { proxy: {
'/hwjb': { '/hwjb': {
target: 'http://39.99.159.73:20090',
// target: 'http://39.99.159.73:20090',
target: 'http://192.168.8.93:10010',
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/hwjb/, ''), rewrite: (path) => path.replace(/^\/hwjb/, ''),
}, },
}, },
}
},
base: process.env.NODE_ENV === "production" ? "/jtzy/Product/other/test/hwjb/" : "/",
}) })
Loading…
Cancel
Save