张雄 3 years ago
parent f3a12741ac
commit af2abce52a

@ -1,2 +1 @@
未开发功能:缴费计划、账单管理(暂无接口,暂无图),工单管理(暂无接口)
bug详见3.12问题单
小蜜蜂商户端

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>智慧小区后台管理系统</title>
<title>智慧商城后台管理系统</title>
</head>
<body>
<noscript>

@ -10,7 +10,6 @@
<a-config-provider :locale="locale">
<div id="app">
<router-view v-if="isRouterAlive"></router-view>
<alarmModal></alarmModal>
</div>
</a-config-provider>
</template>

@ -1,126 +0,0 @@
<template>
<a-modal :visible="visible" title="警报">
<div class="warning-area">
<a-descriptions :column="1">
<a-descriptions-item label="报警类型">{{alarmData.type}}</a-descriptions-item>
<a-descriptions-item label="报警号">{{alarmData.alarmNo}}</a-descriptions-item>
<a-descriptions-item label="报警人手机号">{{alarmData.deviceNo}}</a-descriptions-item>
<a-descriptions-item label="报警人名称">{{alarmData.deviceName}}</a-descriptions-item>
<a-descriptions-item label="报警时间">{{alarmData.time}}</a-descriptions-item>
<a-descriptions-item label="报警内容">{{alarmData.alarmContent}}</a-descriptions-item>
</a-descriptions>
</div>
<a-checkbox v-model="alarmCheck" @change="checkChange"></a-checkbox>
<template slot="footer">
<a-button type="danger" @click="confirm" :disabled="confirmDisabled">确定</a-button>
</template>
</a-modal>
</template>
<script>
import store from "@/store";
export default {
data() {
return {
//
visible: false,
alarmCheck: false,
confirmDisabled: true,
//
websock: null,
infoText: '',
showInfo: false,
lockReconnect: false,
alarmBox: [],
alarmBG: ['', 'bgCC6966', 'bg969696', 'bgCC6966 ', 'bg969696', 'bgCC6966', 'bgCC6966', 'bgCC6966'],
alarmTime: 0,
timer: null, //
myAudio: null, //
alarmType: ['', '超限报警', '超限预警', '断电报警 ', '离线报警', '设备异常', '上线通知', '来电通知'],
time1: null, //
//
alarmData: {
model: '',
communityCode: '',
alarmType: undefined,
alarmNo: '',
deviceNo: '',
deviceName: '',
time: '',
alarmContent: ''
}
}
},
mounted() {
this.initWebSocket()
},
methods: {
//
initWebSocket: function() {
let communityCode = store.getters.getCommunityCode;
let nickName = store.getters.getUserInfo.userName;
let userId = store.getters.getUserInfo.id;
let url = 'wss://saas.kaidalai.cn/websocket/manage/'+ communityCode +'/'+ nickName + '/' + userId;
this.websock = new WebSocket(url)
this.websock.onopen = this.websocketOnopen
this.websock.onerror = this.websocketOnerror
this.websock.onmessage = this.websocketOnmessage
this.websock.onclose = this.websocketOnclose
},
websocketOnopen: function () {
console.log('页面WebSocket连接成功')
//
// this.heartCheck.reset().start()
},
//
websocketOnerror: function (e) {
console.log('WebSocket连接发生错误', e)
this.reconnect()
},
//
websocketOnmessage: function (e) {
// console.log('----------');
// console.log(e.data)
let data = JSON.stringify(e.data);
this.alarmData = JSON.parse(data);
if(this.alarmData.alarmType) {
this.visible = true;
}
},
websocketOnclose: function (e) {
// console.log('connection closed (' + e.code + ')')
// this.reconnect()
},
//
reconnect() {
let context = this
if (context.lockReconnect) return
context.lockReconnect = true
//
clearTimeout(this.time1);
this.time1 = setTimeout(function () {
// console.info('...')
context.initWebSocket()
context.lockReconnect = false
}, 5000)
},
/////////
//
checkChange() {
if(this.alarmCheck == true) {
this.confirmDisabled = false;
} else {
this.confirmDisabled = true;
}
},
confirm() {
this.visible = false
}
}
}
</script>
<style lang="less">
</style>

@ -24,14 +24,12 @@ import commonTable from './components/table'
import commonUpload from './components/upload/index.vue'
import allCity from './components/allCity/index.vue'
import searchForm from './components/searchForm/index.vue'
import alarmModal from './components/alarmModal/index.vue'
// 注册组件
Vue.component('commonTable', commonTable)
Vue.component('commonUpload', commonUpload)
Vue.component('allCity', allCity)
Vue.component('searchForm', searchForm)
Vue.component('alarmModal', alarmModal)
new Vue({
render: h => h(App),

@ -8,12 +8,12 @@ const whitePath = [ '/login','/rule','/yszc','/fromPlatform']
router.beforeEach((to, from, next) => {
NProgress.start()
const token = store.getters.getToken;
if(!token && !whitePath.includes(to.path)) {
next('/login');
} else {
// if(!token && !whitePath.includes(to.path)) {
// next('/login');
// } else {
next();
NProgress.done()
}
// }
})
router.afterEach(() => {

@ -1,14 +1,5 @@
export default [
// {
// path: '/Console',
// name: "Console",
// title: "控制台",
// hide: false,
// icon: 'container',
// component: resolve => require(['@/views/Basic/Console'], resolve),
// meta: {title: '控制台'}
// },
{
path: '/Employee',
name: "Employee",

@ -23,66 +23,18 @@ Vue.use(Router);
// console.log(files(key).default,files);
// })
import Layout from "@/views/Layout"
import basic from "./basic" // 基础功能
import payment from "./payment" // 缴费管理
import shop from "./shop" // 智慧商城
import operation from "./operation" // 运营管理
import setting from "./setting" // 设置
import intShop from "./intShop" // 智慧商城
const router = [
{
path: "/",
name: "basic",
name: "shop",
title: "基础",
component: Layout,
redirect: '/Employee',
redirect: '/WorkBench',
meta: {title: '首页'},
children: [
...basic,
]
},
{
path: "/shop",
name: "shop",
title: "智慧商城",
component: Layout,
redirect: '/GoodsManage/GoodsList',
meta: {title: '智慧商城'},
children: [
...shop,
]
},
{
path: "/payment",
name: "payment",
title: "缴费管理",
component: Layout,
redirect: '/ChargeStandardManage',
meta: {title: '缴费管理'},
children: [
...payment,
]
},
{
path: "/operation",
name: "operation",
title: "运营管理",
component: Layout,
redirect: '/clientSet',
meta: {title: '运营管理'},
children: [
...operation,
]
},
{
path: "/setting",
name: "setting",
title: "设置",
component: Layout,
redirect: '/basicSet',
meta: {title: '设置'},
children: [
...setting,
...intShop,
]
},
{
@ -97,12 +49,6 @@ const router = [
title: "隐私政策",
component: resolve => require(['@/views/Yszc'], resolve)
},
{
path: "/fromPlatform",
name: "fromPlatform",
title: "跳转登录",
component: resolve => require(['@/views/FromPlatform'], resolve)
},
{
path: "/login",
name: "Login",

@ -0,0 +1,75 @@
/*
* @Author: your name
* @Date: 2021-11-24 14:50:31
* @LastEditTime: 2021-11-24 14:50:31
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: /LittleBeeSaas/src/router/smartMall.js
*/
export default [
{
path: '/WorkBench',
name: "WorkBench",
title: "工作台",
hide: false,
icon: 'container',
component: resolve => require(['@/views/IntShop/WorkBench'], resolve),
meta: {title: '工作台'}
},
{
path: '/Item',
name: "Item",
title: "商品",
icon: 'home',
hide: false,
component: resolve => require(['@/views/IntShop/Item'], resolve),
redirect: '/Item/ItemList',
meta: {title: '商品管理'},
children: [
{
path: '/Item/ItemList',
name: "ItemList",
title: "商品列表",
hide: false,
component: resolve => require(['@/views/IntShop/Item/_itemList'], resolve),
meta: {title: '商品列表'},
},
{
path: '/Item/BrandAuthor',
name: "BrandAuthor",
title: "品牌资质",
hide: false,
component: resolve => require(['@/views/IntShop/Item/_brandAuthor'], resolve),
meta: {title: '品牌资质'},
},
]
},
{
path: '/Setting',
name: "Setting",
title: "设置",
icon: 'home',
hide: false,
component: resolve => require(['@/views/IntShop/Setting'], resolve),
redirect: '/Setting/ShopInfo',
meta: {title: '设置'},
children: [
{
path: '/Setting/ShopInfo',
name: "ShopInfo",
title: "店铺信息",
hide: false,
component: resolve => require(['@/views/IntShop/Setting/_shopInfo'], resolve),
meta: {title: '店铺信息'},
},
{
path: '/Setting/Certification',
name: "Certification",
title: "主体认证",
hide: true,
component: resolve => require(['@/views/IntShop/Setting/_certification'], resolve),
meta: {title: '主体认证'},
},
]
},
]

@ -14,6 +14,11 @@
background: #fff;
}
.info {
padding : 13px;
background: #F9F9F9;
}
.cardTitle {
border-left : 8px solid #205FBD;
padding-left : 10px;

@ -1,5 +1,5 @@
<template>
<div>1</div>
<div>brandAuthor</div>
</template>
<script>

@ -1,5 +1,5 @@
<template>
<div>test</div>
<div>itemList</div>
</template>
<script>

@ -0,0 +1,13 @@
<template>
<router-view></router-view>
</template>
<script>
export default {
}
</script>
<style>
</style>

@ -0,0 +1,47 @@
export const columns1 = [
{
title: "认证材料",
dataIndex: "mat",
width: "40%",
},
{
title: "详情",
dataIndex: "detail",
width: "60%",
scopedSlots: { customRender: "detail" },
},
];
export const tableData3 = [
{
mat: '法定代表人证件照正反面照片、法定代表人手持证件照',
detail: true,
},
];
export const tableData1 = [
{
mat: '统一社会信用代码证',
detail: '-',
},
{
mat: '法定证件照正反面照片、法人手持证件照',
detail: true,
},
{
mat: '门店门头照片、门店内景照片、收银台照片',
detail: '无实体门店的商家可提供线上店铺首页、管理后台、商品照片',
},
];
export const tableData2 = [
{
mat: '统一社会信用代码证',
detail: '-',
},
{
mat: '法定证件照正反面照片、法人手持证件照',
detail: true,
},
{
mat: '门店门头照片、门店内景照片、收银台照片',
detail: '无实体门店的商家可提供线上店铺首页、管理后台、商品照片',
},
]

@ -0,0 +1,276 @@
<template>
<div>
<div class="step" v-if="stage==1">
<div class="cardTitle">添加商户</div>
<div class="step-item">
<span class="step-item-title">1选择入驻商户的主体类型</span>
<a-divider></a-divider>
<a-form-model>
<a-form-model-item label="主体类型">
<a-radio-group v-model="form.type" size="large" buttonStyle="solid">
<a-radio-button :value="1">个体户</a-radio-button>
<a-radio-button :value="2">企业</a-radio-button>
<a-radio-button :value="3">个人</a-radio-button>
</a-radio-group>
<div>
<a-card class="card-item" size="small" :bordered="false">
<span v-if="form.type == 1"></span>
<span v-if="form.type == 2"></span>
<span v-if="form.type == 3"> </span>
<div v-if="form.type == 3">(10)</div>
</a-card>
</div>
</a-form-model-item>
<a-form-model-item label="经营类目">
</a-form-model-item>
</a-form-model>
</div>
<div class="step-item">
<span class="step-item-title">2按照以下清单准备材料</span>
<a-divider></a-divider>
<a-table :columns="columns1" :data-source="form.type==3? tableData3 : form.type==2? tableData2 : tableData1" :pagination="false">
<div slot="detail" slot-scope="text,record">
<div v-if="record.detail == true">
<p>· 证件包含身份证护照来往内地通行证等有效证件</p>
<p>· 其中护照需要增加翻译件加盖公司鲜章外籍商家姓名需为中文英文如微软Microsoft</p>
<p>· 照片标准四角完整清晰可辨若加水印需保证照片重要信息清晰可辨</p>
<p>· 法人证件非大陆身份证如护照等需要提供法人证明函</p>
</div>
<div v-else>{{record.detail}}</div>
</div>
</a-table>
</div>
</div>
<div class="step" v-if="stage==2">
<div class="cardTitle">申请流程</div>
<div class="step2-item">
<a-alert message="
切实履行账户实名管理商户身份核实交易风险管理等职责需核实相关信息感谢你的配合" type="info" show-icon />
<a-tabs v-model="activeTab" style="margin-top: 24px">
<a-tab-pane :key="1" tab="填写主体信息" v-if="form.type == 1 || form.type == 2">
<h3 style="padding: 16px">主体类型</h3>
<a-form-model style="margin-left: 12px" :labelCol="{span: 3}" :wrapperCol="{span: 5}">
<a-form-model-item label="主体类型">
<a-radio-group v-model="form.type" disabled>
<a-radio :value="1">个体户</a-radio>
<a-radio :value="2">企业</a-radio>
<a-radio :value="3">个人</a-radio>
</a-radio-group>
<div><span>如需修改主体类型请返回<a>上一步</a>进行操作</span></div>
</a-form-model-item>
<a-form-model-item label="企业名称">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="注册地址">
<a-select></a-select>
<a-textarea></a-textarea>
</a-form-model-item>
<a-form-model-item label="经营范围">
<a-textarea></a-textarea>
</a-form-model-item>
<a-form-model-item label="统一社会信用代码">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="营业期限">
<a-radio-group v-model="form.isLongtime">
<a-radio :value="0">区间有效</a-radio>
<a-radio :value="1">长期有效</a-radio>
</a-radio-group>
<a-date-picker v-if="form.isLongtime == 1"></a-date-picker>
<a-range-picker v-if="form.isLongtime == 0"></a-range-picker>
</a-form-model-item>
</a-form-model>
<h3 style="padding: 16px">主体证件照片</h3>
<a-form-model style="margin-left: 12px" :labelCol="{span: 3}" :wrapperCol="{span: 5}">
<a-form-model-item label="统一社会信用代码证">
</a-form-model-item>
<a-form-model-item label="其他资质证明">
</a-form-model-item>
</a-form-model>
</a-tab-pane>
<a-tab-pane :key="2" tab="填写个人信息">
<h3 style="padding: 16px">法定代表人证件照</h3>
<a-form-model style="margin-left: 12px" :labelCol="{span: 3}" :wrapperCol="{span: 5}">
<a-form-model-item label="手持身份证照">
</a-form-model-item>
<a-form-model-item label="证件照正面">
</a-form-model-item>
<a-form-model-item label="证件照反面">
</a-form-model-item>
</a-form-model>
<h3 style="padding: 16px">法定代表人信息</h3>
<a-form-model style="margin-left: 12px" :labelCol="{span: 3}" :wrapperCol="{span: 5}">
<a-form-model-item label="证件类型">
<a-select></a-select>
</a-form-model-item>
<a-form-model-item label="法定代表人姓名">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="证件号码">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="出生日期">
<a-date-picker></a-date-picker>
</a-form-model-item>
<a-form-model-item label="证件有效期">
<a-radio-group v-model="form.isIdCardLongtime">
<a-radio :value="0">区间有效</a-radio>
<a-radio :value="1">长期有效</a-radio>
</a-radio-group>
<a-date-picker v-if="form.isIdCardLongtime == 1"></a-date-picker>
<a-range-picker v-if="form.isIdCardLongtime == 0"></a-range-picker>
</a-form-model-item>
</a-form-model>
</a-tab-pane>
<a-tab-pane :key="3" tab="填写经营信息">
<h3 style="padding: 16px">联系人</h3>
<a-form-model style="margin-left: 12px" :labelCol="{span: 3}" :wrapperCol="{span: 5}">
<a-form-model-item label="联系人姓名">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="手机号">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="常用邮箱">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="客服电话">
<a-input></a-input>
</a-form-model-item>
</a-form-model>
<h3 style="padding: 16px">结算账户信息</h3>
<a-form-model style="margin-left: 12px" :labelCol="{span: 3}" :wrapperCol="{span: 5}">
<a-form-model-item label="结算类型">支付宝</a-form-model-item>
<a-form-model-item label="用户名称">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="支付宝账号">
<a-input></a-input>
</a-form-model-item>
</a-form-model>
<h3 style="padding: 16px">经营信息</h3>
<a-form-model style="margin-left: 12px" :labelCol="{span: 3}" :wrapperCol="{span: 6}">
<a-form-model-item label="商户名称">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="经营地址">
<a-input></a-input>
</a-form-model-item>
<a-form-model-item label="经营类目">
<a-input></a-input>
</a-form-model-item>
<h4 style="padding: 12px">食品>生鲜果蔬特殊资质证明</h4>
<a-form-model-item label="具体资质">
<a-checkbox-group v-model="zList" :options="zOption"></a-checkbox-group>
</a-form-model-item>
<a-form-model-item label="许可证资质证明">
</a-form-model-item>
<a-form-model-item label="门店门头照片">
</a-form-model-item>
<a-form-model-item label="门店内景照片">
</a-form-model-item>
<a-form-model-item label="收银台照片">
</a-form-model-item>
<a-form-model-item label="补充信息">
</a-form-model-item>
</a-form-model>
</a-tab-pane>
<a-tab-pane :key="4" tab="申请上架社区">
<h3 style="padding: 16px">城市一</h3>
<a-form-model style="margin-left: 12px" :labelCol="{span: 3}" :wrapperCol="{span: 5}">
<a-form-model-item label="选择位置">
<a-select></a-select>
</a-form-model-item>
<a-form-model-item label="选择小区">
<a-select></a-select>
</a-form-model-item>
</a-form-model>
</a-tab-pane>
</a-tabs>
</div>
</div>
<div style="height: 100px"></div>
<div class="footer">
<a-checkbox v-model="isChecked" v-if="stage==1" style="margin-left: 24px">
我已同意协议并开通有赞支付账户
</a-checkbox>
<a v-if="stage==1"></a>
<a v-if="stage==1"></a>
<a-button style="margin-left: 24px" type="primary" v-if="stage==1" @click="goNext"></a-button>
<a-button style="margin-left: 24px" type="primary" v-if="stage==2" @click="submit"></a-button>
</div>
</div>
</template>
<script>
import { columns1,tableData1,tableData2,tableData3 } from "./depend/config"
export default {
name: 'certification',
data() {
return {
stage: 2,
activeTab: 1,
isChecked: false,
columns1: columns1,
tableData1: tableData1,
tableData2: tableData2,
tableData3: tableData3,
zOption: [{label:'食品流通许可证',value:1},{label:'食品经营许可证',value:2},
{label:'食品生产许可证',value:3},{label:'食品小作坊登记证',value:4},
{label:'国境口岸卫生许可证',value:5},{label:'预包装食品备案凭证',value:6},],
form: {
type: 1,
isLongtime: 0,
isIdCardLongtime: 0,
zList: []
}
}
},
methods: {
goNext() {
if(this.isChecked == true) {
this.stage = 2;
if(this.form.type == 3) {
this.activeTab = 2;
}
} else {
this.$message.warning('请阅读并同意《服务协议》和《隐私政策》')
}
},
submit() {
this.stage = 1;
}
}
}
</script>
<style lang="less">
.step {
.step-item {
padding: 32px 32px 0px 32px;
.step-item-title {
font-family: 'PingFang SC';
font-style: normal;
font-weight: 500;
font-size: 20px;
line-height: 28px;
text-transform: uppercase;
color: #333333;
}
}
.step2-item {
padding: 16px
}
}
.card-item {
background: #ECECEC;
margin-top: 16px;
width: 40%;
}
</style>

@ -0,0 +1,51 @@
<template>
<div class="content">
<div class="top-info">
<a-alert style="width: 93%" message="店铺主体认证信息被驳回,为了不影响正常经营,请尽快重新发起认证。" type="info" show-icon />
<a-button @click="goCerti" type="primary">前往认证</a-button>
</div>
<div class="realtime-info">
<div style="padding: 24px">
图片占位
</div>
<div>
<a-descriptions :column="2">
<template slot="title">
<div class="top-info">
<span>店铺信息</span>
<a>切换店铺</a>
</div>
</template>
<a-descriptions-item label="已支付订单">0</a-descriptions-item>
<a-descriptions-item label="支付金额">0</a-descriptions-item>
<a-descriptions-item label="待入账金额">0</a-descriptions-item>
<a-descriptions-item label="支付人数">0</a-descriptions-item>
<a-descriptions-item label="访客数">0</a-descriptions-item>
<a-descriptions-item label="店铺可用余额">0</a-descriptions-item>
</a-descriptions>
</div>
</div>
</div>
</template>
<script>
export default {
methods: {
goCerti() {
this.$router.push({name:'Certification'});
}
}
}
</script>
<style lang="less">
.top-info {
display: flex;
justify-content: space-between;
align-items: center;
}
.realtime-info {
display: flex;
padding: 24px;
}
</style>

@ -0,0 +1,13 @@
<template>
<router-view></router-view>
</template>
<script>
export default {
}
</script>
<style>
</style>

@ -0,0 +1,92 @@
<template>
<div class="content">
<div class="top-info">
<a-alert style="width: 93%" message="店铺主体认证信息被驳回,为了不影响正常经营,请尽快重新发起认证。" type="info" show-icon />
<a-button type="primary">前往认证</a-button>
</div>
<div class="order-info">
<div class="order-info-item">
<a-descriptions title="待发货订单" :column="1">
<a-descriptions-item>
<span class="order-number">0</span>
</a-descriptions-item>
<a-descriptions-item label="买家催促发货">0</a-descriptions-item>
<a-descriptions-item label="买家评价提醒">0</a-descriptions-item>
</a-descriptions>
</div>
<div class="order-info-item">
<a-descriptions title="待处理售后" :column="1">
<a-descriptions-item>
<span class="order-number">0</span>
</a-descriptions-item>
<a-descriptions-item label="买家催促发货">0</a-descriptions-item>
<a-descriptions-item label="买家评价提醒">0</a-descriptions-item>
</a-descriptions>
</div>
<div class="order-info-item">
<a-descriptions title="库存紧张" :column="1">
<a-descriptions-item>
<span class="order-number">0</span>
</a-descriptions-item>
<a-descriptions-item label="买家催促发货">0</a-descriptions-item>
<a-descriptions-item label="买家评价提醒">0</a-descriptions-item>
</a-descriptions>
</div>
</div>
<div class="realtime-info">
<a-descriptions layout="vertical">
<template slot="title">
<span>实时概况</span>
<span class="realTime-number">更新于2022/05/05 16:58:33</span>
</template>
<a-descriptions-item label="已支付订单">0</a-descriptions-item>
<a-descriptions-item label="支付金额">0</a-descriptions-item>
<a-descriptions-item label="待入账金额">0</a-descriptions-item>
<a-descriptions-item label="支付人数">0</a-descriptions-item>
<a-descriptions-item label="访客数">0</a-descriptions-item>
<a-descriptions-item label="店铺可用余额">0</a-descriptions-item>
</a-descriptions>
</div>
</div>
</template>
<script>
export default {
}
</script>
<style lang="less">
.top-info {
display: flex;
justify-content: space-between;
align-items: center;
}
.order-info {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24px;
.order-info-item {
.order-number {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
font-size: 24px;
line-height: 28px;
text-transform: uppercase;
}
}
}
.realtime-info {
padding: 24px;
.realTime-number {
font-family: 'PingFang SC';
font-size: 12px;
line-height: 14px;
text-transform: uppercase;
color: rgba(0, 0, 0, 0.25);
margin-left: 24px;
}
}
</style>

@ -70,26 +70,14 @@ export default {
tagActive: 0,
tags: [],
menuTags: [
{
label: "基础功能",
value: "basic"
},
// {
// label: "",
// value: "basic"
// },
{
label: "智慧商城",
value: "shop"
},
{
label: "缴费管理",
value: "payment"
},
{
label: "运营管理",
value: "operation"
},
// {
// label: "",
// value: "setting"
// }
],
};
},

@ -2,55 +2,19 @@
<div class="bg">
<div class="logo-box">
<img src="@/assets/images/logo.png" alt="" />
<span class="title">智慧小区后台管理系统</span>
<span class="title">智慧商城后台管理系统</span>
</div>
<div class="login-box">
<a-row>
<!-- <a-col :span="12" class="box-a">
<img src="@/assets/images/logo.png" alt="" />
</a-col> -->
<!-- <a-col :span="1" class="box-cen"></a-col> -->
<!-- 登录 -->
<a-col class="box-b" v-if="status === 1">
<a-tabs v-model="activeName">
<a-tab-pane key="1" tab="密码登录"></a-tab-pane>
<a-tab-pane key="2" tab="验证码登录"> </a-tab-pane>
</a-tabs>
<div class="login-input" v-if="activeName === '1'">
<a-cascader
:options="cityList"
placeholder="请选择城市"
v-model="cityvalue"
:show-search="{ filter }"
@change="onChange"
:field-names="{
label: 'name',
value: 'id',
children: 'cityList',
}"
/>
<span class="form">
<a-select
v-model="communityCode"
notFoundContent="该城市无可选择小区"
:disabled="cityvalue.length === 0"
placeholder="请选择小区"
@change="communityChange"
>
<a-select-option
v-for="(item) in communityList"
:key="item.id"
:value="item.code"
>{{ item.name }}</a-select-option
>
</a-select>
<a-input v-model="pwdLogin.username" placeholder="请输入手机号码"></a-input>
<a-input v-model="pwdLogin.password" type="password" placeholder="请输入密码"></a-input>
<!-- <a-row>
<a-col :span="12" style="margin-left: 23px"
><a-checkbox></a-checkbox>&nbsp;&nbsp;</a-col
>
</a-row> -->
</span>
<a-button
type="primary"
@ -81,36 +45,8 @@
</a-col>
</a-row>
</div>
<div class="login-input" v-else-if="activeName === '2'">
<a-cascader
:options="cityList"
placeholder="请选择城市"
v-model="cityvalue"
:show-search="{ filter }"
@change="onChange"
:field-names="{
label: 'name',
value: 'id',
children: 'cityList',
}"
/>
<span class="form">
<a-select
v-model="communityCode"
notFoundContent="该城市无可选择小区"
:disabled="cityvalue.length === 0"
placeholder="请选择小区"
@change="communityChange"
>
<a-select-option
v-for="item in communityList"
:key="item.id"
:value="item.code"
>{{ item.name }}</a-select-option
>
</a-select>
<a-input
placeholder="请输入手机号码"
v-model="form.tel"
@ -124,11 +60,6 @@
<a-button type="primary" @click="getCode" :disabled="inCodeGap">
{{inCodeGap == false ? '获取验证码' : codeGap+'s后再次获取'}}
</a-button>
<!-- <a-row>
<a-col :span="12" style="margin-left: 23px"
><a-checkbox></a-checkbox>&nbsp;&nbsp;</a-col
>
</a-row> -->
<a-button
type="primary"
@click="login"
@ -281,8 +212,6 @@ export default {
password: '',
},
isChecked: false,
communityId: undefined,
communityCode: undefined,
rules: {
tel: [
{
@ -311,73 +240,14 @@ export default {
},
],
},
cityList: [], //
cityvalue: [], //
communityList: [], //
inCodeGap: false,
codeGap: 60,
};
},
created() {
if(this.$route.query.token && this.$route.query.code) {
this.setToken(this.$route.query.token);
this.setCommunityCode(this.$route.query.code);
userInfo().then(result => {
this.setUserInfo(result.data);
this.$router.push("/");
})
}
this.keyupEnter();
this.getAllCity();
},
watch: {
communityCode: {
handler(value) {
this.setCommunityCode(value);
},
},
},
methods: {
getAllCity() {
this.$axios({
method: "get",
url: process.env.VUE_APP_URL + "manage/city/allCity", //apicommunityCode
})
.then((response) => {
this.cityList = response.data.data;
this.setCity(response.data.data);
})
.catch((error) => {
console.log(error); //
});
},
getCommunity(cityId) {
this.$axios({
method: "get",
url: process.env.VUE_APP_URL + "manage/community/findAll", //apicommunityCode
params: {
cityId: cityId,
},
})
.then((response) => {
this.communityList = response.data.data;
})
.catch((error) => {
console.log(error); //
});
},
//
onChange(data) {
this.getCommunity(data[2]);
this.communityCode = undefined;
},
//
filter(inputValue, path) {
return path.some(
(cityList) =>
cityList.name.toLowerCase().indexOf(inputValue.toLowerCase()) > -1
);
},
// enter
keyupEnter() {
document.onkeydown = (e) => {
@ -388,58 +258,21 @@ export default {
};
},
login() {
if (this.communityCode === undefined) {
this.$message.error("先选择小区");
return;
};
if (this.isChecked == false) {
this.$message.error("请阅读并同意《用户协议》");
return;
};
loginTel(this.form).then((res) => {
if (res.code === 200) {
this.$message.success(res.msg);
// token
this.setToken(res.data);
userInfo().then(result => {
this.setUserInfo(result.data);
this.$router.push("/");
})
} else {
this.$message.error(res.msg);
}
});
this.$router.push("/");
},
passwordLogin() {
if (this.communityCode === undefined) {
this.$message.error("先选择小区");
return;
};
if (this.isChecked == false) {
this.$message.error("请阅读并同意《用户协议》");
return;
};
let obj = Object.assign(this.pwdLogin, {communityId: this.communityId})
loginPWD(obj).then((res) => {
if (res.code === 200) {
this.$message.success(res.msg);
// token
this.setToken(res.data);
userInfo().then(result => {
this.setUserInfo(result.data);
this.$router.push("/");
})
} else {
this.$message.error(res.msg);
}
});
this.$router.push("/");
},
//
getCode() {
if (this.communityCode === undefined) {
this.$message.error("先选择小区");
return;
}
let num = setInterval(() => {
this.inCodeGap = true;
this.codeGap -= 1;
@ -451,11 +284,11 @@ export default {
}
}
},1000)
sendTelCode(this.form).then((res) => {
if (res) {
this.$message.success(res.msg);
}
});
// sendTelCode(this.form).then((res) => {
// if (res) {
// this.$message.success(res.msg);
// }
// });
},
onSubmit() {
this.$refs.ruleForm.validate((valid) => {
@ -471,10 +304,6 @@ export default {
resetForm() {
this.$refs.ruleForm.resetFields();
},
//id
communityChange(value, option) {
this.communityId = option.key
}
},
};
</script>
@ -509,7 +338,7 @@ export default {
}
.login-box {
background: #ffffff;
height: 500px;
height: 400px;
width: 489px;
margin: auto;
}

@ -128,7 +128,7 @@ export default {
};
},
mounted() {
this.getItem();
},
methods: {
getItem() {

@ -119,8 +119,7 @@ export default {
};
},
mounted() {
this.getApi();
this.getData();
},
methods: {
getApi() {

Loading…
Cancel
Save