问题修复

master
许宏杰 1 year ago
parent 18c28a3048
commit 7aed2a00e2

@ -1,4 +1,4 @@
import request from '@/utils/request'
import request from "@/utils/request";
// 登录方法
export function login(username, password, code, uuid) {
@ -6,55 +6,62 @@ export function login(username, password, code, uuid) {
username,
password,
code,
uuid
}
uuid,
};
return request({
url: '/login',
url: "/login",
headers: {
isToken: false,
repeatSubmit: false
repeatSubmit: false,
},
method: 'post',
data: data
})
method: "post",
data: data,
});
}
// 注册方法
export function register(data) {
return request({
url: '/register',
url: "/register",
headers: {
isToken: false
isToken: false,
},
method: 'post',
data: data
})
method: "post",
data: data,
});
}
// 获取用户详细信息
export function getInfo() {
return request({
url: '/getInfo',
method: 'get'
})
url: "/getInfo",
method: "get",
});
}
// 退出方法
export function logout() {
return request({
url: '/logout',
method: 'post'
})
url: "/logout",
method: "post",
});
}
// 获取验证码
export function getCodeImg() {
return request({
url: '/captchaImage',
url: "/captchaImage",
headers: {
isToken: false
isToken: false,
},
method: 'get',
timeout: 20000
})
}
method: "get",
timeout: 20000,
});
}
export function getCode(data) {
return request({
method: "post",
url: "/shian/wechat/findWxCode",
data,
});
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

@ -1,7 +1,7 @@
@import "./element-variables.scss";
// .fixed-header {
// padding-right: 0 !important;
// }
.fixed-header {
padding-right: 0 !important;
}
.el-button,
.el-input__inner,
.el-textarea__inner,

@ -1,19 +1,20 @@
const getters = {
sidebar: state => state.app.sidebar,
size: state => state.app.size,
device: state => state.app.device,
dict: state => state.dict.dict,
visitedViews: state => state.tagsView.visitedViews,
cachedViews: state => state.tagsView.cachedViews,
token: state => state.user.token,
avatar: state => state.user.avatar,
name: state => state.user.name,
introduction: state => state.user.introduction,
roles: state => state.user.roles,
permissions: state => state.user.permissions,
permission_routes: state => state.permission.routes,
topbarRouters:state => state.permission.topbarRouters,
defaultRoutes:state => state.permission.defaultRoutes,
sidebarRouters:state => state.permission.sidebarRouters,
}
export default getters
sidebar: (state) => state.app.sidebar,
size: (state) => state.app.size,
device: (state) => state.app.device,
dict: (state) => state.dict.dict,
visitedViews: (state) => state.tagsView.visitedViews,
cachedViews: (state) => state.tagsView.cachedViews,
token: (state) => state.user.token,
avatar: (state) => state.user.avatar,
name: (state) => state.user.name,
introduction: (state) => state.user.introduction,
roles: (state) => state.user.roles,
permissions: (state) => state.user.permissions,
shanghuId: (state) => state.user.shanghuId,
permission_routes: (state) => state.permission.routes,
topbarRouters: (state) => state.permission.topbarRouters,
defaultRoutes: (state) => state.permission.defaultRoutes,
sidebarRouters: (state) => state.permission.sidebarRouters,
};
export default getters;

@ -1,101 +1,118 @@
import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, logout, getInfo } from "@/api/login";
import { getToken, setToken, removeToken } from "@/utils/auth";
const user = {
state: {
token: getToken(),
id: '',
name: '',
avatar: '',
id: "",
name: "",
avatar: "",
roles: [],
permissions: []
permissions: [],
shanghuId: null,
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token
state.token = token;
},
SET_ID: (state, id) => {
state.id = id
state.id = id;
},
SET_NAME: (state, name) => {
state.name = name
state.name = name;
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
state.avatar = avatar;
},
SET_ROLES: (state, roles) => {
state.roles = roles
state.roles = roles;
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
}
state.permissions = permissions;
},
SET_SHANGHU: (state, shanghuId) => {
state.shanghuId = shanghuId;
},
},
actions: {
// 登录
Login({ commit }, userInfo) {
const username = userInfo.username.trim()
const password = userInfo.password
const code = userInfo.code
const uuid = userInfo.uuid
const username = userInfo.username.trim();
const password = userInfo.password;
const code = userInfo.code;
const uuid = userInfo.uuid;
return new Promise((resolve, reject) => {
login(username, password, code, uuid).then(res => {
setToken(res.token)
commit('SET_TOKEN', res.token)
resolve()
}).catch(error => {
reject(error)
})
})
login(username, password, code, uuid)
.then((res) => {
setToken(res.token);
commit("SET_TOKEN", res.token);
resolve();
})
.catch((error) => {
reject(error);
});
});
},
// 获取用户信息
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo().then(res => {
const user = res.user
const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.roles)
commit('SET_PERMISSIONS', res.permissions)
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
}
commit('SET_ID', user.userId)
commit('SET_NAME', user.userName)
commit('SET_AVATAR', avatar)
resolve(res)
}).catch(error => {
reject(error)
})
})
getInfo()
.then((res) => {
const user = res.user;
const avatar =
user.avatar == "" || user.avatar == null
? require("@/assets/images/profile.jpg")
: process.env.VUE_APP_BASE_API + user.avatar;
if (res.roles && res.roles.length > 0) {
// 验证返回的roles是否是一个非空数组
commit("SET_ROLES", res.roles);
commit("SET_PERMISSIONS", res.permissions);
} else {
commit("SET_ROLES", ["ROLE_DEFAULT"]);
}
commit("SET_ID", user.userId);
commit("SET_NAME", user.userName);
commit("SET_AVATAR", avatar);
if (res.shanghu != undefined) {
commit("SET_SHANGHU", res.shanghu.id);
}
resolve(res);
})
.catch((error) => {
reject(error);
});
});
},
// 退出系统
LogOut({ commit, state }) {
return new Promise((resolve, reject) => {
logout(state.token).then(() => {
commit('SET_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
removeToken()
resolve()
}).catch(error => {
reject(error)
})
})
logout(state.token)
.then(() => {
commit("SET_TOKEN", "");
commit("SET_ROLES", []);
commit("SET_PERMISSIONS", []);
removeToken();
resolve();
})
.catch((error) => {
reject(error);
});
});
},
// 前端 登出
FedLogOut({ commit }) {
return new Promise(resolve => {
commit('SET_TOKEN', '')
removeToken()
resolve()
})
}
}
}
return new Promise((resolve) => {
commit("SET_TOKEN", "");
removeToken();
resolve();
});
},
},
};
export default user
export default user;

@ -95,8 +95,8 @@ export default {
return {
codeUrl: "",
loginForm: {
username: "admin",
password: "admin123",
username: "",
password: "",
rememberMe: false,
code: "",
uuid: "",

@ -27,7 +27,7 @@
:rows="4"
/>
</el-form-item>
<el-form-item label="视频广告">
<el-form-item label="视频广告" v-if="form.videoPath">
<div class="info-container">
<video
:src="form.videoPath"
@ -48,6 +48,8 @@
<script>
import { getShanghu, updateShanghu, addShanghu } from "@/api/netEwm/shanghu";
import { getPoster } from "@/api/netEwm/poster";
import { mapGetters } from "vuex";
import { getCode } from "@/api/login.js";
export default {
data() {
return {
@ -73,23 +75,31 @@ export default {
};
},
created() {
if (!this.shanghuId) {
this.$modal.msgError("您不是商家!");
return;
}
this.getInfo();
},
computed: {
...mapGetters(["shanghuId"]),
},
methods: {
getInfo() {
getShanghu(2).then((response) => {
getShanghu(this.shanghuId).then((response) => {
if (response.data.posterId) {
getPoster(response.data.posterId).then((info) => {
let url = {
videoPath: this.baseUrl + info.data.videoPath,
this.form = {
...response.data,
...{ videoPath: this.baseUrl + info.data.videoPath },
};
this.form = { ...response.data, ...url };
});
}
});
},
/** 提交按钮 */
submitForm() {
if (!this.shanghuId) return;
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.id != null) {

@ -90,7 +90,7 @@
>
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="网络名称" align="center" prop="netName" /> -->
<el-table-column label="网络名称" align="center" prop="netName" />
<el-table-column label="wifi名称" align="center" prop="wifiName" />
<el-table-column label="wifi密码" align="center" prop="wifiPass" />
<el-table-column
@ -99,6 +99,13 @@
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-download"
@click="handleCode(scope.row)"
>生成二维码</el-button
>
<el-button
size="mini"
type="text"
@ -130,12 +137,10 @@
<!-- 添加或修改网络对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<!-- <el-form-item label="网络名称" prop="netName">
<el-form-item label="网络名称" prop="netName">
<el-input v-model="form.netName" placeholder="请输入网络名称" />
</el-form-item> -->
<el-form-item label="商户id" prop="shanghuId">
<el-input v-model="form.shanghuId" placeholder="请输入商户id" />
</el-form-item>
<el-form-item label="wifi名称" prop="wifiName">
<el-input v-model="form.wifiName" placeholder="请输入wifi名称" />
</el-form-item>
@ -148,16 +153,30 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<el-dialog
title="WI-FI码"
:visible.sync="wifiopen"
width="400px"
append-to-body
>
<img :src="imgs" alt="" class="codeImg" />
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleUpload()"></el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listNet, getNet, delNet, addNet, updateNet } from "@/api/netEwm/net";
import { mapGetters } from "vuex";
import { getCode } from "@/api/login.js";
export default {
name: "Net",
data() {
return {
wifiopen: false,
imgs: null,
//
loading: true,
//
@ -181,6 +200,7 @@ export default {
pageNum: 1,
pageSize: 10,
netName: null,
shanghuId: null,
},
//
form: {},
@ -189,9 +209,41 @@ export default {
};
},
created() {
this.queryParams.shanghuId = this.shanghuId;
this.getList();
},
computed: {
...mapGetters(["shanghuId"]),
},
methods: {
handleUpload() {
// a
const link = document.createElement("a");
// hrefURL
link.href = this.imgs;
//
link.download = "downloaded_image.jpg";
//
document.body.appendChild(link);
//
link.click();
//
document.body.removeChild(link);
},
handleCode(row) {
if (!this.shanghuId) {
this.$modal.msgError("您不是商家!");
return;
}
let data = {
path: "pages/index/index",
shanghuId: this.shanghuId,
};
getCode(data).then((res) => {
this.imgs = "data:image/png;base64," + res.data;
this.wifiopen = true;
});
},
/** 查询网络列表 */
getList() {
this.loading = true;
@ -265,6 +317,7 @@ export default {
this.getList();
});
} else {
this.form.shanghuId = this.shanghuId;
addNet(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
@ -301,3 +354,9 @@ export default {
},
};
</script>
<style scoped>
.codeImg {
width: 100%;
height: 350px;
}
</style>

@ -15,7 +15,7 @@
clearable
>
<el-option
v-for="dict in dict.type.sys_yes_no"
v-for="dict in dict.type.b_is_true"
:key="dict.value"
:label="dict.label"
:value="dict.value"
@ -105,11 +105,11 @@
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="是否连接成功" align="center" prop="isTrue">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isTrue" />
<dict-tag :options="dict.type.b_is_true" :value="scope.row.isTrue" />
</template>
</el-table-column>
<el-table-column label="网络id" align="center" prop="netId" />
<el-table-column label="网络名称" align="center" prop="netName" />
<!-- <el-table-column label="网络id" align="center" prop="netId" />
<el-table-column label="网络名称" align="center" prop="netName" /> -->
<el-table-column label="wifi名称" align="center" prop="wifiName" />
<el-table-column label="wifi密码" align="center" prop="wifiPass" />
<el-table-column
@ -152,19 +152,19 @@
<el-form-item label="是否连接成功" prop="isTrue">
<el-select v-model="form.isTrue" placeholder="请选择是否连接成功">
<el-option
v-for="dict in dict.type.sys_yes_no"
v-for="dict in dict.type.b_is_true"
:key="dict.value"
:label="dict.label"
:value="parseInt(dict.value)"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="网络id" prop="netId">
<!-- <el-form-item label="网络id" prop="netId">
<el-input v-model="form.netId" placeholder="请输入网络id" />
</el-form-item>
<el-form-item label="网络名称" prop="netName">
<el-input v-model="form.netName" placeholder="请输入网络名称" />
</el-form-item>
</el-form-item> -->
<el-form-item label="wifi名称" prop="wifiName">
<el-input v-model="form.wifiName" placeholder="请输入wifi名称" />
</el-form-item>
@ -191,7 +191,7 @@ import {
export default {
name: "NetHistory",
dicts: ["sys_yes_no"],
dicts: ["b_is_true"],
data() {
return {
//

@ -58,6 +58,7 @@
:data="shanghuList"
@selection-change="handleSelectionChange"
:height="tableHeigth"
ref="multipleTable"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="商户名称" align="center" prop="posName" />
@ -100,12 +101,14 @@ export default {
//
multiple: true,
ids: [],
posterId: null,
rowData: {},
};
},
methods: {
openDialog(id) {
this.posterId = id;
openDialog(row) {
this.ids = row.shanghuIdList;
this.rowData = row;
console.log(this.rowData);
this.getHeigth();
this.getList();
},
@ -127,9 +130,10 @@ export default {
//广
handleMultiplefp() {
let data = {
posterId: this.posterId,
posterId: this.rowData.id,
shanghuIds: this.ids,
};
batchAllocation(data).then((res) => {
this.$modal.msgSuccess("分配成功");
});
@ -139,6 +143,15 @@ export default {
this.loading = true;
listShanghu(this.queryParams).then((response) => {
this.shanghuList = response.rows;
this.shanghuList.forEach((item) => {
this.ids.forEach((it) => {
if (item.id == it) {
this.$nextTick(() => {
this.$refs.multipleTable.toggleRowSelection(item, true);
});
}
});
});
this.total = response.total;
this.loading = false;
});

@ -268,7 +268,13 @@ export default {
methods: {
/**批量分配广告给商户 */
handleFp(row) {
this.$refs.MyTable.openDialog(row.id);
getPoster(row.id).then((res) => {
let data = {
id: res.data.id,
shanghuIdList: res.data.shanghuIdList,
};
this.$refs.MyTable.openDialog(data);
});
},
/** 查询广告列表 */
getList() {

@ -109,7 +109,7 @@
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="广告id" align="center" prop="posterId" />
<!-- <el-table-column label="广告id" align="center" prop="posterId" /> -->
<el-table-column label="广告名称" align="center" prop="posterName" />
<el-table-column
label="有效起始时间"
@ -132,7 +132,7 @@
</template>
</el-table-column>
<el-table-column label="视频路径" align="center" prop="videoPath" />
<el-table-column label="视频封面" align="center" prop="videoLogo" />
<!-- <el-table-column label="视频封面" align="center" prop="videoLogo" /> -->
<el-table-column
label="操作"
align="center"
@ -170,9 +170,9 @@
<!-- 添加或修改广告历史对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<el-form-item label="广告id" prop="posterId">
<!-- <el-form-item label="广告id" prop="posterId">
<el-input v-model="form.posterId" placeholder="请输入广告id" />
</el-form-item>
</el-form-item> -->
<el-form-item label="广告名称" prop="posterName">
<el-input v-model="form.posterName" placeholder="请输入广告名称" />
</el-form-item>
@ -199,9 +199,9 @@
<el-form-item label="视频路径" prop="videoPath">
<el-input v-model="form.videoPath" placeholder="请输入视频路径" />
</el-form-item>
<el-form-item label="视频封面" prop="videoLogo">
<!-- <el-form-item label="视频封面" prop="videoLogo">
<el-input v-model="form.videoLogo" placeholder="请输入视频封面" />
</el-form-item>
</el-form-item> -->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>

@ -13,20 +13,10 @@
type="text"
placeholder="商户名称"
>
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="city">
<el-input v-model="registerForm.city" type="text" placeholder="城市">
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="address">
@ -35,84 +25,49 @@
type="textarea"
placeholder="地址"
>
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="username">
<el-input
v-model="registerForm.username"
type="text"
auto-complete="off"
placeholder="手机号"
>
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="nickName">
<el-input
v-model="registerForm.nickName"
type="text"
auto-complete="off"
placeholder="联系人"
>
<svg-icon
slot="prefix"
icon-class="user"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="registerForm.password"
type="password"
auto-complete="off"
placeholder="密码"
@keyup.enter.native="handleRegister"
>
<svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="confirmPassword">
<el-input
v-model="registerForm.confirmPassword"
type="password"
auto-complete="off"
placeholder="确认密码"
@keyup.enter.native="handleRegister"
>
<svg-icon
slot="prefix"
icon-class="password"
class="el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled">
<el-input
v-model="registerForm.code"
auto-complete="off"
placeholder="验证码"
style="width: 63%"
@keyup.enter.native="handleRegister"
>
<svg-icon
slot="prefix"
icon-class="validCode"
class="el-input__icon input-icon"
/>
</el-input>
<div class="register-code">
<img :src="codeUrl" @click="getCode" class="register-code-img" />
@ -137,9 +92,9 @@
</el-form-item>
</el-form>
<!-- 底部 -->
<div class="el-register-footer">
<!-- <div class="el-register-footer">
<span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
</div>
</div> -->
</div>
</template>

Loading…
Cancel
Save