Commit 246ba8e1 authored by xulili's avatar xulili

登录

parent 3cb268bd
......@@ -21,7 +21,8 @@ module.exports = {
},
// Various Dev Server settings
host: 'localhost', // can be overwritten by process.env.HOST
//host: 'localhost', // can be overwritten by process.env.HOST
host: '0.0.0.0', // can be overwritten by process.env.HOST
port: 3000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,
......
......@@ -44,9 +44,7 @@
</template>
<script>
import { baseUrl } from "@/config/env";
import axios from "axios";
let i = 0;
import { loginOut } from "@/config/loginOut";
export default {
data() {
return {
......@@ -65,7 +63,9 @@ export default {
flag: false,
};
},
mounted() {},
mounted() {
loginOut();
},
methods: {
submitForm() {
let _this = this;
......@@ -95,6 +95,10 @@ export default {
});
localStorage.setItem("user", resData.user.userName);
localStorage.setItem("backToken", resData.token);
localStorage.setItem(
"menuList",
JSON.stringify(resData.menuList)
);
_this.$router.push("index");
} else {
_this.$message.error(res.data.message);
......@@ -122,7 +126,8 @@ export default {
top: 0;
width: 100vw;
height: 100vh;
background: url("~@/assets/login/login_bg.png") no-repeat center/ 100% 100%;
background: #9b1f23 url("~@/assets/login/login_bg.png") no-repeat center/ 100%
100%;
.content {
width: 33.33%;
height: 100vh;
......@@ -176,8 +181,13 @@ export default {
background: url("~@/assets/login/pwd.png") no-repeat center/ 100%;
}
/deep/.el-form {
margin-top: 120px;
// margin-top: 120px;
text-align: center;
z-index: 99;
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 150px;
.el-form-item {
margin-bottom: 60px;
}
......@@ -223,9 +233,6 @@ export default {
font-size: 30px;
}
}
.el-form {
margin-top: 50px;
}
}
}
@media screen and (max-width: 1300px) {
......@@ -236,9 +243,6 @@ export default {
font-size: 24px;
}
}
.el-form {
margin-top: 50px;
}
}
}
</style>
......@@ -13,6 +13,7 @@
</div>
</template>
<script>
import { loginOut } from "@/config/loginOut";
export default {
data() {
return {
......@@ -31,11 +32,11 @@ export default {
handleLogout() {
let _this = this;
_this
.$https( {
method: "get",
url: "logout",
authType:'back'
} )
.$https({
method: "get",
url: "logout",
authType: "back",
})
.then((res) => {
if (res.status == 200) {
let resData = res.data;
......@@ -44,8 +45,7 @@ export default {
type: "success",
message: resData.message,
});
localStorage.removeItem("user");
localStorage.removeItem("backToken");
loginOut();
_this.$router.push("login");
} else {
_this.$message.error(res.data.message);
......
export function loginOut(){
localStorage.removeItem("user")
localStorage.removeItem("backToken")
localStorage.removeItem("menuList")
}
\ No newline at end of file
......@@ -63,7 +63,7 @@ export const menuList = [
{ name: '视频审核', icon: 'icon-video', color: 'index-blue', url: '/checkVideo' },
{ name: '展板审核', icon: 'icon-screen', color: 'index-green', url: '/checkDisplay' },
{ name: '学习内容审核', icon: 'icon-magnifier', color: 'index-pink', url: '/checkLearn' },
{ name: '账号禁用审核', icon: 'icon-disable', color: 'index-red', url: '/checkLearn' }
{ name: '账号禁用审核', icon: 'icon-disable', color: 'index-red', url: '/recheck' }
]
}
]
......@@ -82,7 +82,7 @@ export const menuList = [
color: '',
url: '',
children: [
{ name: '互动管理', icon: 'icon-interaction', color: 'index-purple', url: '/interactive' }
{ name: '互动内容', icon: 'icon-interaction', color: 'index-purple', url: '/interactive' }
]
},
{
......@@ -144,8 +144,8 @@ export const menuList = [
url: '',
children: [
{ name: '统计概览', icon: 'icon-overview', color: 'index-purple', url: '/overview' },
{ name: '互动统计', icon: 'icon-interaction', color: 'index-green', url: '' },
{ name: '趋势分析', icon: 'icon-tend', color: 'index-pink', url: '' }
{ name: '互动统计', icon: 'icon-interaction', color: 'index-green', url: '/interaction' },
{ name: '趋势分析', icon: 'icon-tend', color: 'index-pink', url: '/tend' }
]
},
{
......
This diff is collapsed.
<template>
<el-dialog
custom-class="party-dialog"
title="审核详情"
:visible.sync="dialogVisible"
width="468px"
:before-close="handleClose"
>
<div class="dialog-content">
<p class="isNoData" v-if="isNoData">暂无数据</p>
<el-form
v-else
ref="form"
:model="form"
label-width="80px"
label-position="top"
class="party-form"
>
<el-form-item label="审核层级">
{{ form.level | levelFilter }}
</el-form-item>
<el-form-item label="审核时间">
{{ form.level === "TBCA" ? form.secondTime : form.firstTime }}
</el-form-item>
<el-form-item label="审核结果">
{{ form.status | statusFilter }}
</el-form-item>
<el-form-item label="驳回原因" v-if="form.status === 'REFUSED'">
{{ form.level === "TBCA" ? form.secondRemarks : form.firstRemarks }}
</el-form-item>
</el-form>
</div>
</el-dialog>
</template>
<script>
export default {
data() {
return {
dialogVisible: false,
id: "",
form: {},
isNoData: false,
};
},
filters: {
levelFilter(level) {
switch (level) {
case "TBCA":
return "复审";
break;
case "TBC":
return "初审";
break;
default:
return "暂无数据";
break;
}
},
statusFilter(status) {
switch (status) {
case "TBC":
return "待初审";
break;
case "TBCA":
return "待复审";
break;
case "REFUSED":
return "驳回";
break;
case "APPROVED_FINAL":
return "通过";
break;
default:
return "暂无数据";
break;
}
},
},
methods: {
// 根据id获取获取详情内容
getDetailById() {
let _this = this;
this.$https(
{
method: "get",
url: "audit/getById",
type: "ACCOUNT",
authType: this.backToken,
},
{ id: _this.id }
)
.then((res) => {
if (res.status == 200) {
if (res.data.resultCode == 200) {
if (res.data.data) {
this.isNoData = false;
this.form = res.data.data;
} else {
this.isNoData = true;
this.form = {};
}
} else {
_this.$message.error(res.data.message);
}
} else {
_this.$message.error(res.data);
}
})
.catch((err) => {
console.log(err);
});
},
// 弹窗关闭
handleClose() {
this.handleReset();
},
handleReset() {
this.dialogVisible = false;
this.form = {};
},
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
......@@ -36,12 +36,13 @@ export default {
return {
dialogVisible: false,
form: {
status: 2,
content: "",
type: 3, //0,看板;1 视频;2 学习内容;3 账号禁用
status: "REFUSED",
remarks: "",
type:"ACCOUNT",
},
activeRow:{},
rules: {
content: [
remarks: [
{ required: true, message: "请填写驳回原因", trigger: "change" },
],
},
......@@ -69,6 +70,14 @@ export default {
handleSubmit() {
// 校验用户输入值
let _this = this;
let params = {};
params.id = this.activeRow.id;
params.refItemId = this.activeRow.refItemId;
params.status = this.form.status;
params.type = this.form.type;
let times = this.activeRow.level == "TBC" ? "first" : "second";
params.level = this.activeRow.status;
params[`${times}Remarks`] = this.form.remarks;
this.$refs.form.validate((valid) => {
if (valid) {
this.$https(
......@@ -77,7 +86,8 @@ export default {
url: "audit/update",
authType: this.backToken,
},
_this.form
// _this.$qs.stringify(params)
params
)
.then((res) => {
this.handleReset();
......
<template>
<div class="party-table">
<el-table border :data="list" style="width: 100%;height:100%" height="100%">
<el-table-column
label="序号"
align="center"
width="100">
<template slot-scope="scope" >
<span>{{ (currentPage-1) * 10 + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column
align="center"
v-for="(item,index) in feildList"
:key="index"
:prop="item.prop"
:label="item.label"
:width="item.width">
<template slot-scope="scope" >
<div v-if="item.isEdit" class="table-btn-group">
<el-tooltip content="修改" placement="top">
<el-button circle @click="handleOperate(scope.row,'edit')">
<i class="icon-table icon-edit"></i>
</el-button>
</el-tooltip>
<el-tooltip content="重置密码" placement="top">
<el-button circle @click="handleOperate(scope.row,'reset')">
<i class="icon-table icon-reset"></i>
</el-button>
</el-tooltip>
<el-tooltip content="禁用" placement="top">
<el-button
circle
:disabled="scope.row.status == 2 || scope.row.statusName == '待审核' "
@click="handleOperate(scope.row,'disable')">
<i class="icon-table icon-disable"></i>
</el-button>
</el-tooltip>
<el-tooltip content="激活" placement="top">
<el-button
circle
:disabled="scope.row.status == 1"
@click="handleOperate(scope.row,'enable')">
<i class="icon-table icon-enable"></i>
</el-button>
</el-tooltip>
<el-tooltip content="审核详情" placement="top">
<el-button
circle
@click="handleOperate(scope.row,'examine')">
<i class="icon-table icon-detail"></i>
</el-button>
</el-tooltip>
</div>
<div v-else>
<span v-if="item.prop==='type'">
{{scope.row[item.prop] | accoutType}}
</span>
<span v-else>{{scope.row[item.prop]}}</span>
</div>
</template>
</el-table-column>
<div class="party-table">
<el-table
border
:data="list"
style="width: 100%; height: 100%"
height="100%"
>
<el-table-column label="序号" align="center" width="100">
<template slot-scope="scope">
<span>{{ (currentPage - 1) * 10 + scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column
align="center"
v-for="(item, index) in feildList"
:key="index"
:prop="item.prop"
:label="item.label"
:width="item.width"
>
<template slot-scope="scope">
<div v-if="item.isEdit" class="table-btn-group">
<el-tooltip content="修改" placement="top">
<el-button circle @click="handleOperate(scope.row, 'edit')">
<i class="icon-table icon-edit"></i>
</el-button>
</el-tooltip>
<el-tooltip content="重置密码" placement="top">
<el-button circle @click="handleOperate(scope.row, 'reset')">
<i class="icon-table icon-reset"></i>
</el-button>
</el-tooltip>
<el-tooltip content="禁用" placement="top">
<el-button
circle
:disabled="scope.row.statusName !== '活跃'"
@click="handleOperate(scope.row, 'disable')"
>
<i class="icon-table icon-disable"></i>
</el-button>
</el-tooltip>
<el-tooltip content="激活" placement="top">
<el-button
circle
:disabled="scope.row.statusName !== '禁用'"
@click="handleOperate(scope.row, 'enable')"
>
<i class="icon-table icon-enable"></i>
</el-button>
</el-tooltip>
<el-tooltip content="审核详情" placement="top">
<el-button
circle
:disabled="scope.row.statusName == '活跃'"
@click="handleOperate(scope.row, 'examine')"
>
<i class="icon-table icon-detail"></i>
</el-button>
</el-tooltip>
</div>
<div v-else>
<span v-if="item.prop === 'type'">
{{ scope.row[item.prop] | accoutType }}
</span>
<span v-else>{{ scope.row[item.prop] }}</span>
</div>
</template>
</el-table-column>
</el-table>
</div>
<audit-info ref="audit" />
</div>
</template>
<script>
// status 1 启用 2 禁用
import auditInfo from "../auditInfo.vue";
export default {
data(){
return {
}
data() {
return {};
},
props: {
currentPage: {
type: Number,
default: 1,
},
props:{
currentPage:{
type:Number,
default:1
},
list:{
type:Array,
default:()=>{return []}
},
feildList:{
type:Array,
default:()=>{return []}
}
list: {
type: Array,
default: () => {
return [];
},
},
filters:{
accoutType(type){
switch (type){
case "1":
return "平台账号"
break;
case "2":
return "用户账号"
break;
case "3":
return "机顶盒账号"
break;
case "4":
return "运维账号"
break;
default:
return ""
}
}
feildList: {
type: Array,
default: () => {
return [];
},
},
methods:{
handleOperate(row,type){
if(type != 'edit'){
this.$confirm('确认进行此操作?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.handlEmitMsg(row,type)
}).catch(() => {
});
}else{
this.handlEmitMsg(row,type)
}
},
handlEmitMsg(row,type){
this.$emit(
"action",
{
row:row,
type:type
}
)
}
}
}
},
filters: {
accoutType(type) {
switch (type) {
case "1":
return "平台账号";
break;
case "2":
return "用户账号";
break;
case "3":
return "机顶盒账号";
break;
case "4":
return "运维账号";
break;
default:
return "";
}
},
},
components: { auditInfo },
methods: {
handleOperate(row, type) {
if (type != "edit" && type != "examine") {
this.$confirm("确认进行此操作?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.handlEmitMsg(row, type);
})
.catch(() => {});
} else if (type == "examine") {
this.$refs.audit.id = row.id;
this.$refs.audit.getDetailById();
this.$refs.audit.dialogVisible = true;
} else {
this.handlEmitMsg(row, type);
}
},
handlEmitMsg(row, type) {
this.$emit("action", {
row: row,
type: type,
});
},
},
};
</script>
<style lang="less">
@import '../../../style/table.less';
@import "../../../style/table.less";
</style>
\ No newline at end of file
......@@ -85,6 +85,8 @@ export default {
total: 0,
},
type:'ACCOUNT',
passStatus:'APPROVED_FINAL'
//待初审 TBC, 驳回 REFUSED, 待复审 TBCA, 通过APPROVED_FINAL
};
},
components: { partyPagination, checkTable, rejectDialog },
......@@ -162,20 +164,26 @@ export default {
},
// 驳回
handleRject() {
this.$refs.rejectDialog.activeRow = this.activeRow;
this.$refs.rejectDialog.dialogVisible = true;
},
// 通过
handlePass() {
let params = {};
let _this = this
params.id = this.activeRow.id;
params.status = 4;
params.status = this.passStatus;
params.type = this.type
params.refItemId = this.activeRow.refItemId
params.level = this.activeRow.status
this.$https(
{
method: "put",
url: "audit/update",
authType: this.backToken,
},
// _this.$qs.stringify(params)
params
)
.then((res) => {
......
......@@ -40,7 +40,7 @@
</div>
<div class="table-content">
<div class="btn-group">
<el-button type="primary">新建统计账户</el-button>
<el-button type="primary" @click="handleAdd">新建统计账户</el-button>
</div>
<account-table
:feildList="feildList"
......@@ -49,11 +49,15 @@
/>
<party-pagination :page="page" @changePage="handleChangeCurrent" />
</div>
<add-dialog ref="addDialog" @success="getPageList()" />
<edit-dialog ref="editDialog" @success="getPageList()" />
<msg-dialog ref="msgDilaog" :msgInfo="msgInfo" />
</div>
</template>
<script>
import { partyPagination } from "@/components/index";
import accountTable from "./components/accountTable";
import { addDialog, editDialog } from "./statisticalDialog/index";
import msgDialog from "./msgDialog.vue";
export default {
data() {
......@@ -69,8 +73,8 @@ export default {
{ label: "待审核", value: 3 },
],
feildList: [
{ prop: "username", label: "统计用户名" },
{ prop: "org", label: "所属单位" },
{ prop: "userName", label: "统计用户名" },
{ prop: "orgName", label: "所属单位" },
{ prop: "exiredDate", label: "到期时间" },
{ prop: "statusName", label: "账号状态" },
{ prop: "", label: "操作", isEdit: true, width: 280 },
......@@ -88,8 +92,8 @@ export default {
components: {
partyPagination,
accountTable,
// addDialog,
// editDialog,
addDialog,
editDialog,
msgDialog,
},
mounted() {
......@@ -97,7 +101,7 @@ export default {
},
methods: {
handleSubmit() {
this.getFirstPageList();
this.getFirstPageList();
},
handleReset() {
this.form.userName = "";
......@@ -144,6 +148,15 @@ export default {
console.log(err);
});
},
// 页面返回值为空
getResWithOutData() {
this.list = [];
this.page = {
_index: 1,
_size: 10,
total: 0,
};
},
// 新增账号
handleAdd() {
this.$refs.addDialog.dialogVisible = true;
......@@ -214,7 +227,7 @@ export default {
let _this = this;
this.$https({
method: "put",
url: `tUser/disable?userId=${this.activeRow.id}`,
url: `tUser/enable?userId=${this.activeRow.id}`,
authType: this.backToken,
})
.then((res) => {
......
<template>
<el-dialog
custom-class="party-dialog"
title="编辑统计账号"
:visible.sync="dialogVisible"
width="468px"
:before-close="handleClose"
>
<div class="dialog-content">
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="80px"
label-position="top"
class="party-form"
>
<el-form-item label="用户名" prop="userName">
<el-input
v-model="form.userName"
placeholder="请输入用户名"
></el-input>
</el-form-item>
<el-form-item label="所在机构" prop="orgId">
<el-select v-model="form.orgId" filterable placeholder="请选择">
<el-option
v-for="item in organList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="账号有效期" prop="permanent">
<el-radio-group v-model="form.permanent">
<el-radio :label="true">永久有效</el-radio>
<el-radio :label="false">设置有效期</el-radio>
</el-radio-group>
<div v-if="!form.permanent">
<el-date-picker
class="mt16"
v-model="form.date"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</el-form-item>
</el-form>
</div>
<div slot="footer" class="dialog-footer btn-group">
<el-button @click="handleClose()">取 消</el-button>
<el-button type="primary" @click="handleSubmit()">确 定</el-button>
</div>
</el-dialog>
</template>
<script>
import { getOrgListWithOutPage } from "@/config/organ";
export default {
data() {
return {
dialogVisible: false,
organList: [],
form: {
userName: "",
orgId: "",
permanent: true,
date: "",
},
rules: {
userName: [
{ required: true, message: "请填写管理员姓名", trigger: "change" },
],
orgId: [
{ required: true, message: "请输入所在机构", trigger: "change" },
],
permanent: [
{ required: true, message: "请选择账号有效期", trigger: "change" },
],
},
};
},
mounted() {
this.getOrgList();
},
methods: {
// 获取机构列表
getOrgList() {
getOrgListWithOutPage().then((res) => {
this.organList = res;
});
},
// 弹窗关闭
handleClose() {
this.$confirm("确认关闭?")
.then((_) => {
this.handleReset();
})
.catch((_) => {});
},
handleReset() {
this.dialogVisible = false;
this.$refs.form.resetFields();
this.form = {
userName: "",
orgId: "",
permanent: true,
date: "",
};
},
// 提交
handleSubmit() {
// 校验用户输入值
this.$refs.form.validate((valid) => {
if (valid) {
let user = {};
if (!this.form.permanent && !this.form.date) {
this.$message.error("请选择有效期");
return false;
}
if (!this.form.permanent) {
user.effectiveDate = this.form.date[0];
user.exiredDate = this.form.date[1];
}
user.permanent = this.form.permanent;
user.userName = this.form.userName;
user.orgId = this.form.orgId;
let requetsparams = this.$qs.stringify(user)
this.$https(
{
method: "post",
url: "tUser/statisticsAdd",
authType: this.backToken,
},
requetsparams
)
.then((res) => {
if (res.status == 200) {
if (res.data.resultCode == 200) {
this.$message({
type: "success",
message: res.data.message,
});
this.handleReset();
this.$emit("success", true);
} else {
this.$message.error(res.data.message);
}
} else {
this.$message.error(res.data);
}
})
.catch((err) => {
console.log(err);
});
} else {
console.log("error submit!!");
return false;
}
});
},
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
<template>
<el-dialog
custom-class="party-dialog"
title="新建统计账号"
:visible.sync="dialogVisible"
width="468px"
:before-close="handleClose"
>
<div class="dialog-content">
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="80px"
label-position="top"
class="party-form"
>
<el-form-item label="用户名" prop="userName">
<el-input
v-model="form.userName"
placeholder="请输入用户名"
></el-input>
</el-form-item>
<el-form-item label="所在机构" prop="orgId">
<el-select v-model="form.orgId" filterable placeholder="请选择">
<el-option
v-for="item in organList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="账号有效期" prop="permanent">
<el-radio-group v-model="form.permanent">
<el-radio :label="true">永久有效</el-radio>
<el-radio :label="false">设置有效期</el-radio>
</el-radio-group>
<div v-if="!form.permanent">
<el-date-picker
class="mt16"
v-model="form.date"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</el-form-item>
</el-form>
</div>
<div slot="footer" class="dialog-footer btn-group">
<el-button @click="handleClose()">取 消</el-button>
<el-button type="primary" @click="handleSubmit()">确 定</el-button>
</div>
</el-dialog>
</template>
<script>
import { getOrgListWithOutPage } from "@/config/organ";
export default {
data() {
return {
dialogVisible: false,
organList: [],
id:'',
form: {
userName: "",
orgId: "",
permanent: true,
date: "",
},
rules: {
userName: [
{ required: true, message: "请填写管理员姓名", trigger: "change" },
],
orgId: [
{ required: true, message: "请输入所在机构", trigger: "change" },
],
permanent: [
{ required: true, message: "请选择账号有效期", trigger: "change" },
],
},
};
},
mounted() {
this.getOrgList();
},
methods: {
// 获取机构列表
getOrgList() {
getOrgListWithOutPage().then((res) => {
this.organList = res;
});
},
// 根据id获取获取详情内容
getDetailById(){
let _this = this
this.$https(
{
method: "get",
url: "tUser/getById",
authType: this.backToken,
},
{id:_this.id}
)
.then((res) => {
if(res.status == 200 ){
if (res.data.resultCode == 200 ) {
let resData = res.data.data
for(let key in _this.form){
this.form[key] = resData[key]
}
if(!this.form.permanent){
this.form.date = [
resData.effectiveDate,
resData.exiredDate
]
}
} else {
_this.$message.error(res.data.message);
}
} else {
_this.$message.error(res.data);
}
})
.catch((err) => {
console.log(err);
});
},
// 弹窗关闭
handleClose() {
this.$confirm("确认关闭?")
.then((_) => {
this.handleReset();
})
.catch((_) => {});
},
handleReset() {
this.dialogVisible = false;
this.$refs.form.resetFields();
this.form = {
userName: "",
orgId: "",
permanent: true,
date: "",
};
},
// 提交
handleSubmit() {
// 校验用户输入值
this.$refs.form.validate((valid) => {
if (valid) {
let user = {};
if (!this.form.permanent && !this.form.date) {
this.$message.error("请选择有效期");
return false;
}
if (!this.form.permanent) {
user.effectiveDate = this.form.date[0];
user.exiredDate = this.form.date[1];
}
user.permanent = this.form.permanent;
user.userName = this.form.userName;
user.orgId = this.form.orgId;
user.id = this.id
user.type = 5
this.$https(
{
method: "put",
url: "tUser/update",
authType: this.backToken,
},
user
)
.then((res) => {
if (res.status == 200) {
if (res.data.resultCode == 200) {
this.$message({
type: "success",
message: res.data.message,
});
this.handleReset();
this.$emit("success", true);
} else {
this.$message.error(res.data.message);
}
} else {
this.$message.error(res.data);
}
})
.catch((err) => {
console.log(err);
});
} else {
console.log("error submit!!");
return false;
}
});
},
},
};
</script>
<style lang="less" scoped>
</style>
\ No newline at end of file
import addDialog from './add'
import editDialog from './edit'
export {
addDialog,
editDialog
}
\ No newline at end of file
......@@ -74,6 +74,7 @@ export default {
{ prop: "orgName", label: "运维区域" },
{ prop: "exiredDate", label: "到期时间" },
{ prop: "type", label: "账号类型" },
{ prop: "statusName", label: "账号状态" },
{ prop: "", label: "操作", isEdit: true, width: 280 },
],
list: [],
......@@ -150,7 +151,7 @@ export default {
},
// 编辑
handleEdit() {
this.$refs.editDialog.id = this.activeRow.id;
this.$refs.editDialog.id = this.activeRow.id;
this.$refs.editDialog.getDetailById();
this.$refs.editDialog.dialogVisible = true;
},
......@@ -214,7 +215,7 @@ export default {
let _this = this;
this.$https({
method: "put",
url: `tUser/disable?userId=${this.activeRow.id}`,
url: `tUser/enable?userId=${this.activeRow.id}`,
authType: this.backToken,
})
.then((res) => {
......
......@@ -272,7 +272,7 @@ export default {
let _this = this;
this.$https({
method: "put",
url: `tUser/disable?userId=${this.activeRow.id}`,
url: `tUser/enable?userId=${this.activeRow.id}`,
authType: this.backToken,
})
.then((res) => {
......
......@@ -90,7 +90,6 @@
</template>
<script>
import { getOrgListWithOutPage } from "@/config/organ";
import { getRoles } from "@/config/roles";
export default {
data() {
var validateMobilePhone = (rule, value, callback) => {
......
......@@ -195,7 +195,7 @@ export default {
let _this = this;
this.$https({
method: "put",
url: `tUser/disable?userId=${this.activeRow.id}`,
url: `tUser/enable?userId=${this.activeRow.id}`,
authType: this.backToken,
})
.then((res) => {
......
......@@ -30,15 +30,15 @@
</div>
</template>
<script>
import { menuList } from '@/config/menu'
// import { menuList } from '@/config/menu'
export default{
data() {
return{
menuList:menuList
menuList:[]
}
},
mounted(){
this.menuList = JSON.parse(localStorage.getItem('menuList') || [])
},
methods:{
goPage(path){
......
<template>
<div class="list-of-area">
<div class="list-of-area-title common-title">
<div class="icon-and-title">
<img class="icon-title" src="@/assets/overview/s-play.png" alt="">
<span class="title">{{title}}</span>
</div>
<img class="bg" src="@/assets/overview/bg_title.png" alt="">
</div>
<div class="list-of-body">
<ul class="body-title">
<li class="f5">地区名称</li>
<li class="f3">播放量(次)</li>
<li class="f2">展板数量</li>
</ul>
<div class="body-content" id="areaContent">
<div id="area1">
<ul class="body-item" v-for="(item,index) in list" :key="index">
<li class="f5">{{item.city}}</li>
<li class="f3">{{item.play}}</li>
<li class="f2">{{item.num}}</li>
</ul>
</div>
<div id="area2"></div>
<div id="area3">></div>
</div>
</div>
<div class="list-of-area">
<div class="list-of-area-title common-title">
<div class="icon-and-title">
<img class="icon-title" src="@/assets/overview/s-play.png" alt="" />
<span class="title">{{ title }}</span>
</div>
<img class="bg" src="@/assets/overview/bg_title.png" alt="" />
</div>
<div class="list-of-body">
<ul class="body-title">
<li class="f5">地区名称</li>
<li class="f3">播放量(次)</li>
<li class="f2">展板数量</li>
</ul>
<div class="body-content" id="areaContent">
<div id="area1">
<ul class="body-item" v-for="(item, index) in list" :key="index">
<li class="f5">{{ item.areaName }}</li>
<li class="f3">{{ item.playNumber }}</li>
<li class="f2">{{ item.boardCnt }}</li>
</ul>
</div>
<div id="area2"></div>
<div id="area3">></div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'areas',
data() {
return {
title:'地区展板播放统计',
timer:null,
speed:50,
box:null,
area1:null,
list:[
{ city:'山西省',play:'10000', num:'24'},
{ city:'湖南省',play:'8878', num:'22'},
{ city:'海南省',play:'5934', num:'21'},
{ city:'贵州省',play:'5899', num:'18'},
{ city:'云南省',play:'5523', num:'16'},
{ city:'甘肃省',play:'4678', num:'12'},
{ city:'四川省',play:'4224', num:'6'},
{ city:'湖南省',play:'3023', num:'4'},
{ city:'江西省',play:'2412', num:'2'},
{ city:'黑龙江省',play:'2258', num:'2'},
{ city:'湖北省',play:'2198', num:'2'},
{ city:'安徽省',play:'2158', num:'2'},
{ city:'新疆维吾尔自治区',play:'2258', num:'2'},
{ city:'广西壮族自治区',play:'1588', num:'2'},
{ city:'西藏自治区',play:'1258', num:'2'},
]
export default {
name: "areas",
data() {
return {
title: "地区展板播放统计",
timer: null,
speed: 50,
box: null,
area1: null,
list: [],
};
},
mounted() {
this.getList();
this.$nextTick((v) => {
this.initScroll();
});
},
methods: {
initScroll() {
let _this = this;
this.box = document.getElementById("areaContent");
this.con1 = document.getElementById("area1");
let con2 = document.getElementById("area2");
let con3 = document.getElementById("area3");
con2.innerHTML = this.con1.innerHTML;
con3.innerHTML = this.con1.innerHTML;
this.timer = setInterval(_this.scrollUp, _this.speed);
},
scrollUp() {
if (this.box.scrollTop >= this.con1.scrollHeight) {
this.box.scrollTop = 0;
} else {
this.box.scrollTop++;
}
},
mounted() {
setTimeout(()=>{
this.initScroll()
},1000)
getList() {
let requestparams = {};
requestparams._index = 1;
requestparams._size = 10;
this.$https(
{
method: "post",
url: "tBoardStatistic/getBoardDistrictPageList",
authType: this.backToken,
},
requestparams
)
.then((res) => {
if (res.status == 200) {
if (res.data.resultCode == 200) {
this.list = res.data.data.records;
} else {
this.list = [];
}
} else {
this.list = [];
}
})
.catch((err) => {
this.$message.error(err.message);
});
},
methods: {
initScroll() {
let _this = this
this.box = document.getElementById("areaContent");
this.con1 = document.getElementById("area1");
let con2 = document.getElementById("area2");
let con3 = document.getElementById("area3");
con2.innerHTML = this.con1.innerHTML;
con3.innerHTML = this.con1.innerHTML;
this.timer = setInterval(_this.scrollUp, _this.speed);
},
scrollUp() {
if (this.box.scrollTop >= this.con1.scrollHeight) {
this.box.scrollTop = 0;
} else{
this.box.scrollTop++;
}
},
}
}
},
};
</script>
<style lang="less">
</style>
<template>
<div class="dashbord-list">
<p class="tip">
<span class="tip-title">页面说明:</span>
<span>可查看当前系统各项数据统计情况。互动频次及点播趋势图展示部分数据,可进入互动统计及趋势分析详情页查看全部数据。</span>
</p>
<ul>
<li v-for="(item, index) in list" :key="index">
<div class="title-name">{{item.label}}</div>
<img :src="getImg(item.urlName)" alt="">
<!-- <img src="@/assets/overview/play.png" alt=""> -->
<div class="title">
<span>
<a class="num">{{item.num}}</a>
<a class="unit">{{item.unit}}</a>
</span>
</div>
</li>
</ul>
</div>
<div class="dashbord-list">
<p class="tip">
<span class="tip-title">页面说明:</span>
<span
>可查看当前系统各项数据统计情况。互动频次及点播趋势图展示部分数据,可进入互动统计及趋势分析详情页查看全部数据。</span
>
</p>
<ul>
<li v-for="(item, index) in list" :key="index">
<div class="title-name">{{ item.label }}</div>
<img :src="getImg(item.urlName)" alt="" />
<div class="title">
<span>
<a class="num">{{ item.num }}</a>
<a class="unit">{{ item.unit }}</a>
</span>
</div>
</li>
</ul>
</div>
</template>
<script>
export default {
name: 'nums',
data() {
return {
list:[
{label:'总播放量',num: 1000, unit: '次',urlName:'play'},
{label:'单位组织',num: 688, unit: '家',urlName:'org'},
{label:'展板总量',num: 20, unit: '个',urlName:'boardsTotal'},
{label:'互动总量',num: 899, unit: '次',urlName:'interaction'},
]
}
export default {
name: "nums",
data() {
return {
data: [
{
label: "总播放量",
num: 0,
unit: "次",
urlName: "play",
feild: "playCnt",
},
{
label: "单位组织",
num: 0,
unit: "家",
urlName: "org",
feild: "orgCnt",
},
{
label: "展板总量",
num: 0,
unit: "个",
urlName: "boardsTotal",
feild: "boardCnt",
},
{
label: "互动总量",
num: 0,
unit: "次",
urlName: "interaction",
feild: "interactionCnt",
},
],
list: [],
};
},
mounted() {
this.getList()
},
methods: {
getImg(imgUrl) {
return require("@/assets/overview/" + imgUrl + ".png");
},
mounted() {
// this.initData()
getList() {
this.$https({
method: "post",
url: "tBoardStatistic/getBoardSurvey",
authType: this.backToken,
})
.then((res) => {
if (res.status == 200) {
if (res.data.resultCode == 200) {
let resData = res.data.data;
this.list = [...this.data].map((v) => {
v['num'] = resData[v['feild']];
return v
});
} else {
this.list = [...this.data];
}
} else {
this.list = [...this.data];
}
})
.catch((err) => {
this.$message.error(err.message);
});
},
methods: {
getImg(imgUrl){
return require('@/assets/overview/'+ imgUrl + '.png')
},
initData(){
const _this = this
setInterval(()=>{
let num = Math.floor(Math.random()*4)
num = num > 2 ? 3:0
_this.$set(_this.list[num],'num', ++_this.list[num]['num'] )
},3000)
}
}
}
},
};
</script>
<style lang="less">
.dashbord-list{
width: 100%;
position: absolute;
padding: 0 10px;
z-index: 100;
.tip{
.dashbord-list {
width: 100%;
position: absolute;
padding: 0 10px;
z-index: 100;
.tip {
color: @font-color;
.tip-title {
font-weight: bold;
padding-right: 10px;
}
}
ul {
display: flex;
font-size: 0;
justify-content: space-around;
li {
position: relative;
width: 9vw;
margin-top: 15px;
}
img {
width: 100%;
}
.title-name {
font-size: 18px;
color: @font-color;
.tip-title{
font-weight: bold;
padding-right: 10px;
}
position: absolute;
top: -8px;
right: 0;
}
ul{
display: flex;
font-size: 0;
justify-content: space-around;
li{
position: relative;
width: 9vw;
margin-top: 15px;
}
img{
width: 100%;
}
.title-name{
font-size: 18px;
color: @font-color;
position: absolute;
top: -8px;
right: 0;
}
.title{
position: absolute;
right: 0.2rem;
bottom: 5px;
color: @party-white;
.num{
font-size: 28px;
}
.unit{
font-size:16px;
margin-left: 5px;
}
}
.title {
position: absolute;
right: 0.2rem;
bottom: 5px;
color: @party-white;
.num {
font-size: 28px;
}
.unit {
font-size: 16px;
margin-left: 5px;
}
}
}
}
</style>
<template>
<div id="mapDiv">
</div>
<div id="mapDiv"></div>
</template>
<script>
import 'echarts/map/js/china'
var dataList = [{
name: '安徽',value: 5498
}, {
name: '澳门',value: 0
}, {
name: '北京',value: 0
}, {
name: '福建',value: 4111
}, {
name: '甘肃',value: 59
}, {
name: '广东',value: 1928
}, {
name: '广西',value: 4
}, {
name: '贵州',value: 52
}, {
name: '海南',value: 1284
}, {
name: '河北',value: 3151
}, {
name: '河南',value: 3814
}, {
name: '黑龙江',value: 316
}, {
name: '湖北',value: 1724
}, {
name: '湖南',value: 33378
}, {
name: '吉林',value: 520
}, {
name: '江苏',value: 113
}, {
name: '江西',value: 961
}, {
name: '辽宁',value: 139
}, {
name: '内蒙古',value: 0
}, {
name: '宁夏',value: 60
}, {
name: '青海',value: 0
}, {
name: '山东',value: 106
}, {
name: '山西',value: 0
}, {
name: '陕西',value: 114
}, {
name: '上海',value: 1321
}, {
name: '四川',value: 7867
}, {
name: '台湾',value: 0
}, {
name: '天津',value: 1157
}, {
name: '西藏',value: 14
}, {
name: '香港',value: 0
}, {
name: '新疆',value: 115
}, {
name: '云南',value: 3811
}, {
name: '浙江',value: 0
}, {
name: '重庆',value: 886
}
];
export default {
name: 'maps',
data() {
return {
}
},
mounted() {
setTimeout(()=>{
this.init()
},100)
},
methods: {
init(){
let option = {
tooltip: {
triggerOn: "click",
formatter: function(e, t, n) {
return .5 == e.value ? e.name + ":播放量" : e.seriesName + "<br />" + e.name + ":" + e.value
// import "echarts/map/js/china";
import echarts from 'echarts'
import { chinaJson } from "@/map/china";
echarts.registerMap("china", chinaJson);
export default {
name: "maps",
data() {
return {
dataList: [],
};
},
mounted() {
this.getList();
},
methods: {
getList() {
this.$https({
method: "post",
url: "tBoardStatistic/getBoardProvincePlayTotalList",
authType: this.backToken,
})
.then((res) => {
if (res.status == 200) {
if (res.data.resultCode == 200) {
this.dataList = res.data.data;
} else {
this.dataList = [];
}
} else {
this.dataList = [];
}
this.init();
})
.catch((err) => {
this.$message.error(err.message);
this.init();
});
},
init() {
let option = {
tooltip: {
triggerOn: "click",
formatter: function (e, t, n) {
return 0.5 == e.value
? e.name + ":播放量"
: e.seriesName + "<br />" + e.name + ":" + e.value;
},
visualMap: [{
},
visualMap: [
{
dimension: 0,
right: 20,
bottom: 20,
itemWidth: 16,
itemHeight: '200px',
orient:'horizontal',
text: ['由高到低','播放量'],
backgroundColor:'rgba(0,28,66,0.6)',
padding:[15,10],
itemHeight: "200px",
orient: "horizontal",
text: ["由高到低", "播放量"],
backgroundColor: "rgba(0,28,66,0.6)",
padding: [15, 10],
textStyle: {
color: 'rgba(255,255,255,1)'
color: "rgba(255,255,255,1)",
},
inRange: {
color: ['#9B1E23', '#E72128', '#FB8D1F', '#FFCF4E']
}
}],
geo: {
map: "china",
roam: !1,
scaleLimit: {
min: 1,
max: 2
color: ["#9B1E23", "#E72128", "#FB8D1F", "#FFCF4E"],
},
},
],
geo: {
map: "china",
roam: !1,
scaleLimit: {
min: 1,
max: 2,
},
roam: true, //是否开启平游或缩放
scaleLimit: { //滚轮缩放的极限控制
min: 1,
max: 2
},
roam: true, //是否开启平游或缩放
scaleLimit: {
//滚轮缩放的极限控制
min: 1,
max: 2,
},
zoom: 1,
top: 100,
left:'10%',
label: {
normal: {
show: !0,
fontSize: "12",
color: "#fff"
}
zoom: 1,
top: 100,
left: "10%",
label: {
normal: {
show: !0,
fontSize: "12",
color: "#fff",
},
itemStyle: {
normal: {
borderColor: "rgba(0, 0, 0, 0.2)"
},
emphasis: {
areaColor: "#f2d5ad",
shadowOffsetX: 0,
shadowOffsetY: 0,
borderWidth: 0
}
},
itemStyle: {
normal: {
borderColor: "rgba(0, 0, 0, 0.2)",
},
emphasis: {
areaColor: "#f2d5ad",
shadowOffsetX: 0,
shadowOffsetY: 0,
borderWidth: 0,
},
regions: [
{
name: "南海诸岛",
itemStyle: {
// 隐藏地图
normal: {
opacity: 0, // 为 0 时不绘制该图形
}
},
label: {
show: false // 隐藏文字
}
}
]
},
series: [{
regions: [
{
name: "南海诸岛",
itemStyle: {
// 隐藏地图
normal: {
opacity: 0, // 为 0 时不绘制该图形
},
},
label: {
show: false, // 隐藏文字
},
},
],
},
series: [
{
name: "播放量",
type: "map",
geoIndex: 0,
data: dataList
}]
};
let echartsDiv = this.$echarts.init(document.getElementById('mapDiv'))
echartsDiv.setOption(option)
}
}
}
data: this.dataList,
},
],
};
let echartsDiv = this.$echarts.init(document.getElementById("mapDiv"));
echartsDiv.setOption(option);
},
},
};
</script>
<style lang="less">
#mapDiv{
width: 100%;
height: 100%;
}
#mapDiv {
width: 100%;
height: 100%;
}
</style>
<template>
<div class="list-of-top10">
<div class="list-of-top10-title common-title">
<div class="icon-and-title">
<img class="icon-title" src="@/assets/overview/board.png" alt="">
<span class="title">{{title}}</span>
</div>
<img class="bg" src="@/assets/overview/bg_title.png" alt="">
</div>
<div class="list-of-body">
<ul class="body-title">
<li class="f1">排名</li>
<li class="f7">展板名称</li>
<li class="f2">播放量</li>
</ul>
<div class="body-content" id="bodyContent">
<div id="con1">
<ul class="body-item" v-for="(item,index) in list" :key="index">
<li class="f1">{{index%10 + 1}}</li>
<li class="f7">
<div class="title" :title="item.name">{{item.name}}</div>
</li>
<li class="f2">{{item.num}}</li>
</ul>
</div>
<div id="con2"></div>
</div>
</div>
<div class="list-of-top10">
<div class="list-of-top10-title common-title">
<div class="icon-and-title">
<img class="icon-title" src="@/assets/overview/board.png" alt="" />
<span class="title">{{ title }}</span>
</div>
<img class="bg" src="@/assets/overview/bg_title.png" alt="" />
</div>
<div class="list-of-body">
<ul class="body-title">
<li class="f1">排名</li>
<li class="f7">展板名称</li>
<li class="f2">播放量</li>
</ul>
<div class="body-content" id="bodyContent">
<div id="con1">
<ul class="body-item" v-for="(item, index) in list" :key="index">
<li class="f1">{{ (index % 10) + 1 }}</li>
<li class="f7">
<div class="title" :title="item.boardName">
{{ item.boardName }}
</div>
</li>
<li class="f2">{{ item.playNumber }}</li>
</ul>
</div>
<div id="con2"></div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'top10',
data() {
export default {
name: "top10",
data() {
return {
title: "",
timer: null,
speed: 50,
box: null,
con1: null,
list: [],
};
},
components: {},
mounted() {
this.title = this.getTitle();
this.getList()
setTimeout(() => {
this.initScroll();
}, 1000);
},
methods: {
getTitle(){
let curTime = this.getCurrentTime()
return `全国${curTime.yyyy}${curTime.MM}月展板点播TOP10`
},
getCurrentTime() {
let year = new Date().getFullYear();
let month = new Date().getMonth() + 1;
return {
title:'全国2021年3月展板点播TOP10',
timer:null,
speed:50,
box:null,
con1:null,
list:[
{ name:'中国沦为半殖民地半封建社会', num:'11902' },
{ name:'抗日战争取得伟大胜利', num:'59876' },
{ name:'筹建新中国', num:'68902' },
{ name:'中华人民共和国成立', num:'368902' },
{ name:'伟大成就', num:'78902' },
{ name:'完善和落实中国特色社会主义事业总体布局', num:'58902' },
{ name:'中国特色社会主义进入新时代', num:'88902'},
{ name:'开创中国特色社会主义新局面', num:'78902'},
{ name:'社会主义文化强国建设迈出坚实步伐', num:'108902'},
{ name:'坚决打赢脱贫攻坚战', num:'188902'},
// { name:'蒋介石背叛革命 建立独裁统治', num:'20300' },
// { name:'开辟农村包围城市武装夺取政权道路', num:'50780' },
// { name:'坚持党的基本路线不动摇', num:'68902' },
// { name:'港澳回归', num:'68902' },
// { name:'让人民群众共享改革发展成果', num:'48902'},
// { name:'“一带一路”倡议推进对外开放向纵深拓展', num:'8902'},
// { name:'生态保护与修复力度持续加大', num:'7902'},
// { name:'大力践行外交为民', num:'9902'},
]
yyyy: year,
MM: month > 9 ? month : `0${month}`,
};
},
initScroll() {
let _this = this;
this.box = document.getElementById("bodyContent");
this.con1 = document.getElementById("con1");
let con2 = document.getElementById("con2");
con2.innerHTML = this.con1.innerHTML;
this.timer = setInterval(_this.scrollUp, _this.speed);
},
scrollUp() {
if (this.box.scrollTop >= this.con1.scrollHeight) {
this.box.scrollTop = 0;
} else {
this.box.scrollTop++;
}
},
components:{},
mounted() {
this.list.sort((a,b)=>{
return b.num - a.num
Ups() {
let _this = this;
this.timer = setInterval(_this.scrollUp, _this.speed);
},
Stops() {
clearInterval(this.timer);
},
getList() {
let requestparams = {};
requestparams._index = 1;
requestparams._size = 10;
this.$https(
{
method: "post",
url: "tBoardStatistic/getBoardRankPageList",
authType: this.backToken,
},
requestparams
)
.then((res) => {
if (res.status == 200) {
if (res.data.resultCode == 200) {
this.list = res.data.data.records;
} else {
this.list = [];
}
} else {
this.list = [];
}
})
this.list = [...this.list,...this.list]
setTimeout(()=>{
this.initScroll()
},1000)
.catch((err) => {
this.$message.error(err.message);
});
},
methods: {
initScroll() {
let _this = this
this.box = document.getElementById("bodyContent");
this.con1 = document.getElementById("con1");
let con2 = document.getElementById("con2");
con2.innerHTML = this.con1.innerHTML;
this.timer = setInterval(_this.scrollUp, _this.speed);
},
scrollUp() {
if (this.box.scrollTop >= this.con1.scrollHeight) {
this.box.scrollTop = 0;
} else{
this.box.scrollTop++;
}
},
Ups() {
let _this = this
this.timer = setInterval(_this.scrollUp, _this.speed);
},
Stops() {
clearInterval(this.timer);
}
}
}
},
};
</script>
<style lang="less">
</style>
......@@ -57,7 +57,7 @@ export let accoutsRoute = [
component: () => import('@/page/accounts/recheck'),
meta:{
showBreadcrumb:true,
title:'账号禁用审核(复审)',
title:'账号禁用审核',
}
}
]
\ No newline at end of file
.party-dialog{
background:@party-white;
box-shadow: 0 4px 8px 0 rgba(221,221,221,0.40);
border-radius: 8px;
padding: 20px 20px 0 20px;
&.noHeader{
.el-dialog__header{
display: none;
}
.party-dialog {
background: @party-white;
box-shadow: 0 4px 8px 0 rgba(221, 221, 221, 0.40);
border-radius: 8px;
padding: 20px 20px 0 20px;
&.noHeader {
.el-dialog__header {
display: none;
}
.el-dialog__header{
padding: 0;
border-bottom: 1px solid @party-border-color;
height: 40px;
text-align: center;
.el-dialog__title{
font-size: 18px;
font-weight: bold;
color: @font-color;
}
.el-dialog__close{
font-size: 20px;
&:hover{
color: @party-btn-color;
}
}
}
.el-dialog__header {
padding: 0;
border-bottom: 1px solid @party-border-color;
height: 40px;
text-align: center;
.el-dialog__title {
font-size: 18px;
font-weight: bold;
color: @font-color;
}
.el-dialog__footer{
padding-top: 20px;
border-top: 1px solid @party-border-color;
text-align: center;
.el-button{
width: 160px;
}
.el-dialog__close {
font-size: 20px;
&:hover {
color: @party-btn-color;
}
}
}
\ No newline at end of file
}
.dialog-content {
min-height: 150px;
.isNoData {
text-align: center;
line-height: 100px;
}
}
.el-dialog__footer {
padding-top: 20px;
border-top: 1px solid @party-border-color;
text-align: center;
.el-button {
width: 160px;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment