Commit 32e55518 by 周志凯

styles: update mall

1 parent 360cf225
Showing 42 changed files with 330 additions and 2041 deletions
......@@ -514,6 +514,9 @@ const management = {
editMenu(roleUnid, appUnid, params, config) {
return req('post', `${window._vionConfig.menuUrl}/api/v1/auth/roles/${roleUnid}/apps/${appUnid}/menus`, params, config)
},
delMenuNode(appUnid, menuUnid, params, config) {
return req('delete', `${window._vionConfig.menuUrl}/api/v1/auth/apps/${appUnid}/menus/${menuUnid}`, params, config)
},
/**
* 给角色分配菜单 默认 vion
*/
......
......@@ -18,13 +18,13 @@ const mall_CN = {
manual: '使用手册',
},
navData: {
blocks: '集团',
malls: '商场',
blocks: '商户',
malls: '书店',
floors: '楼层',
stores: '店铺',
gates: '监控点',
devices: '设备',
shopName:'请输入商场',
shopName:'请输入书店',
floorname: '请输入楼层',
areaName: '请输入区域',
nodata: '数据为空',
......@@ -44,10 +44,10 @@ const mall_CN = {
head: {
title: '客流综合数据统计',
otherRep: '其他日期选项',
mallOpenedCount: '已开业商场数量',
mallOpenedCount: '已开业书店数量',
mallOpenedArea: '已开业面积',
StoreAllTraffic: '店均客流',
mallArea: '商场面积',
mallArea: '书店面积',
comparedInnum: '上周同期',
comparedSale: '销售额环比',
dayDensity: '昨日客流',
......@@ -124,7 +124,7 @@ const mall_CN = {
ORDER: '成交量',
HANDBAGRATE: '提袋率',
TREND: '趋势',
ZONENUM: '商场数量',
ZONENUM: '书店数量',
INNUM: '进客流',
OUTNUM: '出客流',
millionflDensity: '万人次/平米',
......@@ -149,13 +149,13 @@ const mall_CN = {
WeekComp: '周中周末对比分析',
IoFlow: '进出客流对比',
RankAsis: '排行榜统计',
BlocArea: '集团区域客流统计',
BlocArea: '区域客流统计',
DurationTime: '滞留时间统计',
PassengerRetention: '进出客流滞留量',
FisheyeRetention: '鱼眼滞留量',
StoreRate: '进店率统计',
CustomTrack: '顾客轨迹',
Areaheat: '店热力',
Areaheat: '店热力',
moreOp: '更多选项',
HeatMap: '区域热度',
PointHeat: '点位热力',
......@@ -190,13 +190,13 @@ const mall_CN = {
},
asisTab: {
level: '分析层面 :',
mall: '商场',
mall: '书店',
floor: '楼层',
inOut: '出入口',
Nonentry: '非出入口',
store: '店铺',
zone: '店铺',
mallT: '商场:',
mallT: '书店:',
floorT: '楼层:',
storeT: '店铺:',
inOutT: '出入口:',
......@@ -216,7 +216,7 @@ const mall_CN = {
timeA: '时间1:',
timeB: '时间2:',
class: '类别:',
mall: '商场',
mall: '书店',
gate: '出入口',
all: '全部',
manType: '人员类型',
......@@ -248,7 +248,7 @@ const mall_CN = {
customLossTime: '自定义流失时间(秒):'
},
title: {
mall: '商场',
mall: '书店',
floor: '楼层',
gate: '出入口',
zone: '店铺',
......@@ -257,7 +257,7 @@ const mall_CN = {
Behavior: {
capturecamera: '抓拍记录详情',
clerkcamera:'店员抓拍详情',
mallGroup: '商场客群统计',
mallGroup: '书店客群统计',
customGroup: '出入口客群统计',
groupTime: '客群分时统计',
gateFlow: '区域客群统计',
......@@ -293,9 +293,9 @@ const mall_CN = {
Management: {
UserManage: '用户管理',
UserInfoManage: '个人信息',
BlocManage: '集团管理',
BlocManage: '商户管理',
GroupManage: '分组管理',
MallManage: '商场管理',
MallManage: '书店管理',
FloorManage: '楼层管理',
ZoneManage: '店铺管理',
GateManage: '监控点管理',
......@@ -308,7 +308,7 @@ const mall_CN = {
ImgManage: '店铺标注',
RoleManage: '角色管理',
MenuManage: '菜单管理',
MallControl: '商场配置',
MallControl: '书店配置',
DeviceSearch: '设备查询',
DeviceDataSearch: '设备数据查询',
DeviceState: '设备状态',
......@@ -336,8 +336,8 @@ const mall_CN = {
reset: '重置',
search: '查询',
addUser: '新增用户',
addGroup: '新增集团',
addSquare: '新增商场',
addGroup: '新增商户',
addSquare: '新增书店',
addFloor: '新增楼层',
addArea: '新增区域',
addSite: '新增监控点',
......@@ -372,7 +372,7 @@ const mall_CN = {
resetPW: '重置密码',
personTime: '顾客人次',
personNum: '顾客人数',
loadNum: '导出商场',
loadNum: '导出书店',
deviceSearch: '查询设备序列号',
recommend: '推荐',
uploaing: '正在添加...',
......@@ -395,7 +395,7 @@ const mall_CN = {
resourceFocus: '关注'
},
table: {
mall: '商场',
mall: '书店',
total: '合计',
average: '平均',
person: '人次',
......@@ -415,19 +415,19 @@ const mall_CN = {
ExpireTime: '到期时间',
Userstate: '用户状态',
operate: '操作',
blocName: '集团名称',
bloc: '所属集团',
blocName: '商户名称',
bloc: '所属商户',
ownShop: '所属区域',
admin: '管理员',
founder: '创建人',
describe: '描述',
squareName: '商场名称',
squareName: '书店名称',
openTime: '开业时间',
businessTime: '营业时间',
todayFlow: '今日客流',
todayTurnover: '今日营业额',
externalNum: '外部编号',
squareArea: '商场面积',
squareArea: '书店面积',
state: '状态',
stateA: '正常',
stateB: '停用',
......@@ -443,7 +443,7 @@ const mall_CN = {
monitorSiteBind: '监控点绑定',
floorName: '楼层名称',
floorPlan: '平面图',
square: '所属商场',
square: '所属书店',
areaName: '区域名称',
type: '类型',
shopNum: '铺位号',
......@@ -451,7 +451,7 @@ const mall_CN = {
floor: '所属楼层',
monitorSiteName: '监控点名称',
InstallationFloor: '安装楼层',
SquareEntrance: '商场入口',
SquareEntrance: '书店入口',
faceCamera: '人脸相机',
deviceBind: '设备绑定',
localIP: '本地IP',
......@@ -518,7 +518,7 @@ const mall_CN = {
aliveTime: '心跳时间',
tabWarn: '数据报警',
tabPush: '数据推送',
notifyKpiMall: '商场',
notifyKpiMall: '书店',
notifyKpiGate: '监控点',
notifyDeviceStatus: '设备状态',
faceData: '报表数据',
......@@ -537,8 +537,8 @@ const mall_CN = {
close: '关闭',
name: '名称',
add: '新增',
addBloc: '新增集团',
addMall: '新增商场',
addBloc: '新增商户',
addMall: '新增书店',
addDevice: '新增设备',
addClerk: '新增店员',
addPerson: '新增人员',
......@@ -546,8 +546,8 @@ const mall_CN = {
addPersonType: '新增人员类型',
deviceBind: '设备绑定',
editUser: '编辑用户',
editBloc: '编辑集团',
editMall: '编辑商场',
editBloc: '编辑商户',
editMall: '编辑书店',
editFloor: '编辑楼层',
editArea: '编辑区域',
editSite: '编辑监控点',
......@@ -568,7 +568,7 @@ const mall_CN = {
email: '电子邮箱',
accountId: '所属商户',
userState: '用户状态',
blocName: '集团名称',
blocName: '商户名称',
admin: '管理员',
manager: '负责人',
logo: 'logo上传',
......@@ -590,7 +590,7 @@ const mall_CN = {
unbind: '取消绑定',
shoplist: '店铺列表',
addRole: '新增角色',
mallPermiss: '商场权限',
mallPermiss: '书店权限',
selectRole: '选择角色',
permission: '已有权限',
hasRole: '已有角色',
......@@ -608,7 +608,7 @@ const mall_CN = {
showAllPic: '查看所有图片',
profilePic: '证件照',
bindWx: '绑定微信',
allAccount: '全部集团',
allAccount: '全部商户',
gender: '性别',
rolePermission: '角色权限',
customerProperty: '顾客属性',
......@@ -641,9 +641,9 @@ const mall_CN = {
pholder: {
clerkName: '店员姓名',
personName: '人员姓名',
shopSearch: '请输入商场名称',
shopSearch: '请输入书店名称',
username: '用户名称',
shop: '商场名称',
shop: '书店名称',
floor: '楼层名称',
area: '区域名称',
type: '请选择类型',
......@@ -662,7 +662,7 @@ const mall_CN = {
city: '城市选择',
county: '区县选择',
floorS: '楼层选择',
shopS: '商场选择',
shopS: '书店选择',
select: '请选择',
site: '请选择监控点',
camera: '请选择相机',
......@@ -689,7 +689,7 @@ const mall_CN = {
year: '请选择年',
startDate: '开始时间',
endDate: '结束时间',
shopSelect: '请选择商场',
shopSelect: '请选择书店',
floorSelect: '请选择楼层',
areaSelect: '请选择区域',
zoneSelect: '请选择店铺',
......@@ -706,7 +706,7 @@ const mall_CN = {
eventTypeA: '节假日',
eventTypeB: '活动',
eventLevel: '请选择活动级别',
eventLevelA: '集团',
eventLevelA: '商户',
eventLevelB: '商場',
inStore: '店內',
outStore: '店外',
......@@ -731,7 +731,7 @@ const mall_CN = {
nomenu: '没有菜单权限!请使用管理员给此用户分配角色!',
captureFailed: '获取抓拍记录失败!',
loginFailed: '登录失败!',
noBloc: '集团不存在!',
noBloc: '商户不存在!',
delete: '此操作将永久删除, 是否继续?',
deleteEvent: '确定删除该活动?',
confirDelete: '确定删除?',
......@@ -755,7 +755,7 @@ const mall_CN = {
clerkHasAdded: '该图片已添加至店员库,不能取消!',
deleteFeature: '请删除特征照片!',
addLimit: '最多选择十张',
selectMall: '请选择所属商场!',
selectMall: '请选择所属书店!',
selectCity: '请选择省份城市!',
coordinate: '请选择坐标!',
bindDevice: '设备绑定成功!',
......@@ -832,59 +832,59 @@ const mall_CN = {
},
echartsTitle: {
eventEffect: '活动效果对比',
countyMapTitle: '全国商场布局',
countyMapTitle: '书店布局',
customerFeature: '顾客特征分布',
AccountDayCustomerCounting: '集团实时客流',
AccountDayCustomeradd: '集团累计客流',
AccountDaytrend7: '集团近期趋势',
AccountDaytrend15: '集团近期趋势',
AccountDaytrend30: '集团近期趋势',
AccountDaycostomer_ranking: '全国商场排名',
AccountDaysale_ranking: '全国商场排名',
AccountDayCityTraffic: '城市下属商场客流人次',
AccountDaypreprice_ranking: '全国商场排名',
AccountDayperSquareMeterRank: '全国商场排名',
AccountDaydurationtimeRank: '全国商场排名',
AccountDaydepth_ranking: '全国商场排名',
AccountDayformat_costomer_ranking: '全国业态排名',
AccountDayformat_sell_ranking: '全国业态排名',
AccountDayformat_enteringrate_ranking: '全国业态排名',
AccountDayCustomerCounting: '实时客流',
AccountDayCustomeradd: '累计客流',
AccountDaytrend7: '近期趋势',
AccountDaytrend15: '近期趋势',
AccountDaytrend30: '近期趋势',
AccountDaycostomer_ranking: '书店排名',
AccountDaysale_ranking: '书店排名',
AccountDayCityTraffic: '城市下属书店客流人次',
AccountDaypreprice_ranking: '书店排名',
AccountDayperSquareMeterRank: '书店排名',
AccountDaydurationtimeRank: '书店排名',
AccountDaydepth_ranking: '书店排名',
AccountDayformat_costomer_ranking: '业态排名',
AccountDayformat_sell_ranking: '业态排名',
AccountDayformat_enteringrate_ranking: '业态排名',
AccountDaycustomerfeature_sex: '性别分布',
AccountDaycustomerfeature_age: '年龄分布',
AccountWeekcostomerTrend: '集团近期趋势',
AccountWeektrifficRank: '全国商场排名',
AccountWeeksaleRank: '全国商场排名',
AccountWeekdepthRank: '全国商场排名',
AccountWeekprePriceRank: '全国商场排名',
AccountWeekareaEffRank: '全国商场排名',
AccountWeekdwellTimeRank: '全国商场排名',
AccountWeekformat_traffic_ranking: '全国业态排名',
AccountWeekformat_sale_ranking: '全国业态排名',
AccountWeekcostomerTrend: '近期趋势',
AccountWeektrifficRank: '书店排名',
AccountWeeksaleRank: '书店排名',
AccountWeekdepthRank: '书店排名',
AccountWeekprePriceRank: '书店排名',
AccountWeekareaEffRank: '书店排名',
AccountWeekdwellTimeRank: '书店排名',
AccountWeekformat_traffic_ranking: '业态排名',
AccountWeekformat_sale_ranking: '业态排名',
AccountWeekcustomerfeature_gender: '性别分布',
AccountWeekcustomerfeature_age: '年龄分布',
AccountYeartrifficRank: '全国商场排名',
AccountYearsaleRank: '全国商场排名',
AccountYeardepthRank: '全国商场排名',
AccountYearprePriceRank: '全国商场排名',
AccountYearareaEffRank: '全国商场排名',
AccountYeardwellTimeRank: '全国商场排名',
AccountYearformat_traffic_ranking: '全国业态排名',
AccountYearformat_sale_ranking: '全国业态排名',
AccountYeartrifficRank: '书店排名',
AccountYearsaleRank: '书店排名',
AccountYeardepthRank: '书店排名',
AccountYearprePriceRank: '书店排名',
AccountYearareaEffRank: '书店排名',
AccountYeardwellTimeRank: '书店排名',
AccountYearformat_traffic_ranking: '业态排名',
AccountYearformat_sale_ranking: '业态排名',
AccountYearcustomerfeature_gender: '性别分布',
AccountYearcustomerfeature_age: '年龄分布',
AccountMonthtrafficAndSaleTrend: '集团近期趋势',
AccountMonthtrifficRank: '全国商场排名',
AccountMonthsaleRank: '全国商场排名',
AccountMonthdepthRank: '全国商场排名',
AccountMonthprePriceRank: '全国商场排名',
AccountMonthareaEffRank: '全国商场排名',
AccountMonthdwellTimeRank: '全国商场排名',
AccountMonthformat_traffic_ranking: '全国业态排名',
AccountMonthformat_sale_ranking: '全国业态排名',
AccountMonthtrafficAndSaleTrend: '近期趋势',
AccountMonthtrifficRank: '书店排名',
AccountMonthsaleRank: '书店排名',
AccountMonthdepthRank: '书店排名',
AccountMonthprePriceRank: '书店排名',
AccountMonthareaEffRank: '书店排名',
AccountMonthdwellTimeRank: '书店排名',
AccountMonthformat_traffic_ranking: '业态排名',
AccountMonthformat_sale_ranking: '业态排名',
AccountMonthcustomerfeature_gender: '性别分布',
AccountMonthcustomerfeature_age: '年龄分布',
AccountYeartrafficAndSaleDayTrend: '集团趋势',
AccountYeartrafficAndSaleMonthTrend: '集团趋势',
AccountYeartrafficAndSaleDayTrend: '趋势',
AccountYeartrafficAndSaleMonthTrend: '趋势',
FloorDaycustomerfeature_gender: '性别分布',
FloorDaycustomerfeature_age: '年龄分布',
FloorDaycustomerfeature_NAO: '新老顾客',
......@@ -1006,74 +1006,74 @@ const mall_CN = {
MallDaycustomerfeature_denger: '性别分布',
MallDaycustomerfeature_age: '年龄分布',
MallDaycustomerfeature_NAO: '新老顾客',
MallDaycustomercounting: '商场实时客流',
MallDaycustomeradd: '商场累计客流',
MallDaytrend7: '商场近期趋势',
MallDaytrend15: '商场近期趋势',
MallDaytrend30: '商场近期趋势',
MallDaycostomer_ranking: '商场主力店铺排行',
MallDayentering_ranking: '商场主力店铺排行',
MallDaymall_sale_ranking: '商场主力店铺排行',
MallDayperTransactionRank: '商场主力店铺排行',
MallDayperSquareMeterRank: '商场主力店铺排行',
MallDayturnoverRank: '商场主力店铺排行',
MallDayhandbagRateRank: '商场主力店铺排行',
MallDaydurationTimeRank: '商场主力店铺排行',
MallDayformat_sale_ranking: '商场业态排名',
MallDaytriffic_ranking: '商场业态排名',
MallDaycustomercounting: '书店实时客流',
MallDaycustomeradd: '书店累计客流',
MallDaytrend7: '书店近期趋势',
MallDaytrend15: '书店近期趋势',
MallDaytrend30: '书店近期趋势',
MallDaycostomer_ranking: '书店主力店铺排行',
MallDayentering_ranking: '书店主力店铺排行',
MallDaymall_sale_ranking: '书店主力店铺排行',
MallDayperTransactionRank: '书店主力店铺排行',
MallDayperSquareMeterRank: '书店主力店铺排行',
MallDayturnoverRank: '书店主力店铺排行',
MallDayhandbagRateRank: '书店主力店铺排行',
MallDaydurationTimeRank: '书店主力店铺排行',
MallDayformat_sale_ranking: '书店业态排名',
MallDaytriffic_ranking: '书店业态排名',
MallDaygate_triffic: '主要出入口客流情况',
MallDayfloor_triffic: '楼层客流情况',
MallWeekcustomerfeature_denger: '性别分布',
MallWeekcustomerfeature_age: '年龄分布',
MallWeekcustomerfeature_NAO: '新老顾客',
MallWeektrafficAndSaleTrend: '商场近期趋势',
MallWeekcostomer_ranking: '商场主力店铺排行',
MallWeekentering_ranking: '商场主力店铺排行',
MallWeekmall_sale_ranking: '商场主力店铺排行',
MallWeekperTransactionRank: '商场主力店铺排行',
MallWeekperSquareMeterRank: '商场主力店铺排行',
MallWeekturnoverRank: '商场主力店铺排行',
MallWeekhandbagRateRank: '商场主力店铺排行',
MallWeekdurationTimeRank: '商场主力店铺排行',
MallWeekformat_sale_ranking: '商场业态排名',
MallWeektriffic_ranking: '商场业态排名',
MallWeektrafficAndSaleTrend: '书店近期趋势',
MallWeekcostomer_ranking: '书店主力店铺排行',
MallWeekentering_ranking: '书店主力店铺排行',
MallWeekmall_sale_ranking: '书店主力店铺排行',
MallWeekperTransactionRank: '书店主力店铺排行',
MallWeekperSquareMeterRank: '书店主力店铺排行',
MallWeekturnoverRank: '书店主力店铺排行',
MallWeekhandbagRateRank: '书店主力店铺排行',
MallWeekdurationTimeRank: '书店主力店铺排行',
MallWeekformat_sale_ranking: '书店业态排名',
MallWeektriffic_ranking: '书店业态排名',
MallWeekgate_triffic: '主要出入口客流情况',
MallWeekfloor_triffic: '楼层客流情况',
MallMonthcustomerfeature_denger: '性别分布',
MallMonthcustomerfeature_age: '年龄分布',
MallMonthcustomerfeature_NAO: '新老顾客',
MallMonthtrafficAndSaleTrend: '商场近期趋势',
MallMonthcostomer_ranking: '商场主力店铺排行',
MallMonthentering_ranking: '商场主力店铺排行',
MallMonthmall_sale_ranking: '商场主力店铺排行',
MallMonthperTransactionRank: '商场主力店铺排行',
MallMonthperSquareMeterRank: '商场主力店铺排行',
MallMonthturnoverRank: '商场主力店铺排行',
MallMonthhandbagRateRank: '商场主力店铺排行',
MallMonthdurationTimeRank: '商场主力店铺排行',
MallMonthformat_sale_ranking: '商场业态排名',
MallMonthtriffic_ranking: '商场业态排名',
MallMonthtrafficAndSaleTrend: '书店近期趋势',
MallMonthcostomer_ranking: '书店主力店铺排行',
MallMonthentering_ranking: '书店主力店铺排行',
MallMonthmall_sale_ranking: '书店主力店铺排行',
MallMonthperTransactionRank: '书店主力店铺排行',
MallMonthperSquareMeterRank: '书店主力店铺排行',
MallMonthturnoverRank: '书店主力店铺排行',
MallMonthhandbagRateRank: '书店主力店铺排行',
MallMonthdurationTimeRank: '书店主力店铺排行',
MallMonthformat_sale_ranking: '书店业态排名',
MallMonthtriffic_ranking: '书店业态排名',
MallMonthgate_triffic: '主要出入口客流情况',
MallMonthfloor_triffic: '楼层客流情况',
MallYearcustomerfeature_denger: '性别分布',
MallYearcustomerfeature_age: '年龄分布',
MallYearcustomerfeature_NAO: '新老顾客',
MallYeartrafficAndSaleTrend: '商场近期趋势',
MallYearcostomer_ranking: '商场主力店铺排行',
MallYearentering_ranking: '商场主力店铺排行',
MallYearmall_sale_ranking: '商场主力店铺排行',
MallYearperTransactionRank: '商场主力店铺排行',
MallYearperSquareMeterRank: '商场主力店铺排行',
MallYearturnoverRank: '商场主力店铺排行',
MallYearhandbagRateRank: '商场主力店铺排行',
MallYeardurationTimeRank: '商场主力店铺排行',
MallYearformat_sale_ranking: '商场业态排名',
MallYeartriffic_ranking: '商场业态排名',
MallYeartrafficAndSaleTrend: '书店近期趋势',
MallYearcostomer_ranking: '书店主力店铺排行',
MallYearentering_ranking: '书店主力店铺排行',
MallYearmall_sale_ranking: '书店主力店铺排行',
MallYearperTransactionRank: '书店主力店铺排行',
MallYearperSquareMeterRank: '书店主力店铺排行',
MallYearturnoverRank: '书店主力店铺排行',
MallYearhandbagRateRank: '书店主力店铺排行',
MallYeardurationTimeRank: '书店主力店铺排行',
MallYearformat_sale_ranking: '书店业态排名',
MallYeartriffic_ranking: '书店业态排名',
MallYeargate_triffic: '主要出入口客流情况',
MallYearfloor_triffic: '楼层客流情况',
AccountWeekCityTraffic: '城市下属商场客流人次',
AccountMonthCityTraffic: '城市下属商场客流人次',
AccountYearCityTraffic: '城市下属商场客流人次',
AccountWeekCityTraffic: '城市下属书店客流人次',
AccountMonthCityTraffic: '城市下属书店客流人次',
AccountYearCityTraffic: '城市下属书店客流人次',
DayYoYMoMDayCountingYoY: '今日实时时刻同环比',
DayYoYMoMDayAddYoY: '今日累计同环比',
DayYoYMoM15DayCountingYoY: '近15天同环比',
......@@ -1095,7 +1095,7 @@ const mall_CN = {
WeatherReportWeatherAnalyze: '天气分析图',
WeatherReportWeatherSynthetical: '天气综合列表',
WeatherReportWeatherDetail: '每日详情',
AccountYeartrafficAndSaleWeekTrend: '集团趋势',
AccountYeartrafficAndSaleWeekTrend: '趋势',
SynthesizeCompareDaycustomerfeature_gender: '顾客性别对比',
SynthesizeCompareDaycustomerfeature_age: '顾客年龄对比',
SynthesizeCompareDayhourTrend: '时刻对比',
......@@ -1235,8 +1235,8 @@ const mall_CN = {
heatmap:'热力图',
faceCapture:'人脸抓拍',
face:'人脸',
account: '集团',
mall: '商场',
account: '商户',
mall: '书店',
floor: '楼层',
zone: '店铺'
},
......
......@@ -518,7 +518,7 @@ const zh_CN = {
aliveTime: '心跳时间',
tabWarn: '数据报警',
tabPush: '数据推送',
notifyKpiMall: '商场',
notifyKpiMall: '书店',
notifyKpiGate: '监控点',
notifyDeviceStatus: '设备状态',
faceData: '报表数据',
......@@ -670,7 +670,7 @@ const zh_CN = {
ip: '请输入IP地址',
deviceNumber: '请输入设备序列号',
Site: '请输入监控点名称',
mall: '请选择所属广场',
mall: '请选择所属书店',
nodata: '无数据',
x: 'X轴',
y: 'Y轴',
......@@ -720,7 +720,8 @@ const zh_CN = {
intervalSelect: '请选择间隔时间',
orderNumberSelect: '请输入阶数',
startMinSelect: '请输入开始分钟',
endMinSelect: '请输入结束分钟'
endMinSelect: '请输入结束分钟',
timeSelect: '请选择时间'
},
message:{
get: '获取',
......@@ -804,8 +805,8 @@ const zh_CN = {
deviceSelect: '请选择设备序列号!',
unsupportChartType: '图表类型不支持!',
businessTimeErr: '营业时间设置失败!',
addMallErr: '添加广场失败!',
editMallErr: '编辑广场失败!',
addMallErr: '添加书店失败!',
editMallErr: '编辑书店失败!',
emptyShop: '区域为空!',
notSupportFunction: '您没有此功能的访问权限或项目使用的硬件产品不支持此功能!!',
customLossTimeVaild: '自定义流失时间不合法!'
......
......@@ -57,7 +57,7 @@ Object.keys(custom).forEach(key => {
// 读取配置文件 多项目 默认6.0 平台
document.title = '阅读空间'
Vue.prototype.$Project = 'store'
Vue.prototype.$Project = 'mall'
// 读取配置文件 菜单权限 默认有菜单权限
Vue.prototype.$Menu = window._vionConfig.allMenu || false;
......
<template>
<div class="addition-heatmap" @mousemove="mousemoveHandle" @mouseout="mouseoutHandle">
<el-header height="70px">
<span class="seq-title">门店客流统计</span>
<span class="seq-title">{{ $t('echartsTitle.faceDistributionfaceTraffic') }}</span>
<span class="more-option-wrapper" @click="showCollapse">
<span class="more-option-text">更多选项</span>
<span class="more-option-text">{{ $t('asis.moreOp') }}</span>
<i :class="moreOptVisible ? 'el-icon-arrow-down more-option-arrow' : 'el-icon-arrow-down more-option-arrow more-option-up'"></i>
</span>
</el-header>
......@@ -11,17 +11,17 @@
<div class="heatmap-condition" v-show="moreOptVisible">
<ul class="condition-box">
<li class="condition-item">
<span class="condition-item-text">店铺: </span>
<span class="condition-item-text">{{ $t('asisTab.storeT') }}</span>
<div class="condition-item-option">
<el-select v-model="storeVal" placeholder="选择门店">
<el-select v-model="storeVal" :placeholder="$t('pholder.shopS')">
<!-- <el-option v-for="" :key=""></el-option> -->
</el-select>
</div>
</li>
<li class="condition-item">
<span class="condition-item-text">日期: </span>
<span class="condition-item-text">{{ $t('asisTab.date') }}</span>
<div class="condition-item-option">
<el-date-picker v-model="timeVal" class="time-opt" placeholder="请选择时间" :picker-options="pickerOptions1"></el-date-picker>
<el-date-picker v-model="timeVal" class="time-opt" :placeholder="$t('pholder.timeSelect')" :picker-options="pickerOptions1"></el-date-picker>
</div>
</li>
<li class="condition-item">
......
......@@ -341,29 +341,11 @@ export default {
},
created() {
this.yearTime = new Date();
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop',
'format': 'format',
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
this.tabClickHandle(0);
let _this = this;
_this.windowWidth = window.innerWidth
......
......@@ -357,14 +357,8 @@ export default {
}
},
created() {
this.tabItem = [];
if (this.$Project === 'mall') {
this.tabItem = (['mall', 'gate', 'floor', 'zone', 'format']).map(item => ({ label: item, value: item }))
this.gateLevelList = ['all', 'mall', 'floor', 'zone'].map(item => ({ label: item, value: item }))
} else {
this.tabItem = ['mall'].map(item => ({ label: item, value: item }))
this.gateLevelList = ['all', 'mall'].map(item => ({ label: item, value: item }))
}
this.tabItem = ['mall'].map(item => ({ label: item, value: item }))
this.gateLevelList = ['all', 'mall'].map(item => ({ label: item, value: item }))
},
mounted() {
this.tabClickHandle('mall');
......
......@@ -391,28 +391,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
},
methods: {
i18nFormatter(label){
......
......@@ -268,28 +268,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
},
methods: {
i18nFormatter(label){
......
......@@ -266,20 +266,12 @@ export default {
}
},
created() {
this.tabItem = [];
if (this.$Project === "mall") {
this.tabItem = ["mall", "floor"].map(item => ({
label: item,
value: item
}));
} else {
this.tabItem = [
{
label: "mall",
value: "mall"
}
];
}
this.tabItem = [
{
label: "mall",
value: "mall"
}
];
this.asisLevel = "mall";
},
mounted() {
......
......@@ -308,47 +308,18 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
// 'mall': 'mall',
// 'inOut': 'io',
'floor': 'floor',
// 'store': 'shop'
};
let gateleve = {
'all': 'all',
'mall': 'mall',
'floor': 'floor',
'store': 'zone',
}
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
for(let i in gateleve) {
this.gateLevelList.push({
label: i,
value: gateleve[i],
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
this.gateLevelList = [{
label: 'all',
value: 'all'
}, {
label: 'mall',
value: 'mall'
}];
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
this.gateLevelList = [{
label: 'all',
value: 'all'
}, {
label: 'mall',
value: 'mall'
}];
},
watch: {
dayTime(val) {
......@@ -885,6 +856,7 @@ export default {
mounted() {
let {dayDate, weekDate, monthDate , yearDate, customDate} = this.createDate();
this.dayTime = dayDate;
this.tabClickHandle(0);
// this.weekTime = this.weekTime ? this.weekTime : new Date();
// this.monthTime = this.monthTime ? this.monthTime : new Date();
// this.yearTime = this.yearTime ? this.yearTime : new Date();
......
......@@ -324,34 +324,17 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
// // 'inOut': 'io',
// 'floor': 'floor',
// 'store': 'shop'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}
// , {
// label: 'inOut',
// value: 'io',
// className: 'analysis-item'
// }
]
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}
// , {
// label: 'inOut',
// value: 'io',
// className: 'analysis-item'
// }
]
this.tabClickHandle(0);
},
watcn: {
......
......@@ -262,29 +262,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop',
'format': 'format'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
this.tabClickHandle(0);
},
watch: {
......
......@@ -332,28 +332,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
this.tabClickHandle(0);
},
mounted() {
......
......@@ -314,34 +314,17 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
// 'inOut': 'io',
// 'floor': 'floor',
// 'store': 'shop'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
},
// {
// label: 'inOut',
// value: 'io',
// className: 'analysis-item'
// }
]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
},
// {
// label: 'inOut',
// value: 'io',
// className: 'analysis-item'
// }
]
this.tabClickHandle(0);
},
watch: {
......
......@@ -177,25 +177,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'floor': 'floor'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem.push({
label: 'floor',
value: 'floor',
className: 'analysis-item'
})
}
this.tabItem.push({
label: 'floor',
value: 'floor',
className: 'analysis-item'
})
},
watch: {
dayTime(val) {
......
......@@ -293,34 +293,17 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
// // 'inOut': 'io',
// 'floor': 'floor',
// 'store': 'shop'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}
// , {
// label: 'inOut',
// value: 'io',
// className: 'analysis-item'
// }
]
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}
// , {
// label: 'inOut',
// value: 'io',
// className: 'analysis-item'
// }
]
this.tabClickHandle(0);
},
methods: {
......
......@@ -401,29 +401,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop',
'format': 'format'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
this.tabClickHandle(0);
},
methods: {
......
......@@ -114,18 +114,10 @@ export default {
}
},
created() {
this.tabItem = []
if (this.$Project === 'mall') {
this.tabItem = ['mall'].map(item => ({
label: item,
value: item
}))
} else {
this.tabItem = [{
label: 'mall',
value: 'mall'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall'
}]
this.asisLevel = 'mall'
},
methods: {
......
......@@ -379,28 +379,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
this.tabClickHandle(0);
},
methods: {
......
......@@ -366,41 +366,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop',
'format': 'format'
};
let gateleve = {
'all': 'all',
'mall': 'mall',
'floor': 'floor',
'store': 'zone',
}
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
for(let i in gateleve) {
this.gateLevelList.push({
label: i,
value: gateleve[i],
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
this.tabClickHandle(0);
},
watch: {
......
......@@ -348,28 +348,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
this.tabClickHandle(0);
},
watch: {
......
......@@ -229,41 +229,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop',
'format': 'format'
};
let gateleve = {
'all': 'all',
'mall': 'mall',
'floor': 'floor',
'store': 'zone',
}
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
for(let i in gateleve) {
this.gateLevelList.push({
label: i,
value: gateleve[i],
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
},
methods: {
i18nFormatter(label){
......@@ -628,6 +598,7 @@ export default {
},
mounted() {
// this.tabClickHandle(0);
this.tabClickHandle(0);
this.time1Val = this.time1Val || [this.dayReduce(new Date(), 15), dateUnit.dateFormat(new Date(), 'yyyy-MM-dd')];
this.time2Val = this.time2Val || [this.dayReduce(new Date(), 30), this.dayReduce(new Date(), 16)];
// this.initAsis();
......
......@@ -273,41 +273,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop',
'format': 'format'
};
let gateleve = {
'all': 'all',
'mall': 'mall',
'floor': 'floor',
'store': 'zone',
}
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
for(let i in gateleve) {
this.gateLevelList.push({
label: i,
value: gateleve[i],
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
this.tabClickHandle(0);
},
watch: {
......
......@@ -269,29 +269,11 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop',
'format': 'format'
};
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}]
this.tabClickHandle(0);
},
watch: {
......
......@@ -270,48 +270,18 @@ export default {
}
},
created() {
this.tabItem = [];
if(this.$Project === 'mall') {
let localCondition = {
'mall': 'mall',
'inOut': 'io',
'floor': 'floor',
'store': 'shop',
'format': 'format'
};
let gateleve = {
'all': 'all',
'mall': 'mall',
'floor': 'floor',
'store': 'zone',
}
for(let i in localCondition) {
this.tabItem.push({
label: i,
value: localCondition[i],
className: 'analysis-item'
})
}
for(let i in gateleve) {
this.gateLevelList.push({
label: i,
value: gateleve[i],
})
}
} else {
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
this.gateLevelList = [{
label: 'all',
value: 'all'
}, {
label: 'mall',
value: 'mall'
}];
}
this.tabItem = [{
label: 'mall',
value: 'mall',
className: 'analysis-item'
}];
this.gateLevelList = [{
label: 'all',
value: 'all'
}, {
label: 'mall',
value: 'mall'
}];
this.tabClickHandle(0);
let _this = this;
_this.windowWidth = window.innerWidth
......
......@@ -93,7 +93,7 @@ export default {
{ required: true, message: '请选择状态', trigger: 'change' },
],
// mallId: [
// { required: true, message: '请选择店', trigger: 'change' },
// { required: true, message: '请选择店', trigger: 'change' },
// ],
// accountId: [
// { required: true, message: '请选择集团', trigger: 'blur' },
......
......@@ -113,11 +113,15 @@ export default {
editDialogVisible: false,
uploadHeader: {},
editForm: {
logoPath: '',
name: '',
manager: '',
expireDate: '',
mapDisplay: 1,
mapLongitude: null,
mapLatitude: null,
mapZoom: 0
logoPath: '',
mapZoom: 0,
intro: ''
},
logoUploadUrl: window._vionConfig.apiUrl + "/accounts/upload",
logoPathUrl: window._vionConfig.imagesUrl + "/images/",
......@@ -150,15 +154,17 @@ export default {
});
},
dialogInit(data) {
console.log(data)
this.rowId = data.id;
Object.keys(data).forEach(k => {
Object.keys(this.editForm).forEach(k => {
this.editForm[k] = data[k]
})
this.editDialogVisible = true
this.editForm.mapLongitude = data.mapLongitude || null
this.editForm.mapLatitude = data.mapLatitude || null
this.editForm.mapZoom = data.mapZoom || 11
this.editForm.logoPath = data.logoPath || ""
this.editDialogVisible = true
console.log('editForm', this.editForm)
},
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
......
......@@ -112,10 +112,10 @@ export default {
{ required: true, message: '请输入设备序列号', trigger: 'blur' }
],
accountId: [{
required: true, message: '请选择集团', trigger: 'change'
required: true, message: '请选择商户', trigger: 'change'
}],
mallId: [{
required: true, message: '请选择店', trigger: 'change'
required: true, message: '请选择店', trigger: 'change'
}]
},
curMallId: null,
......
......@@ -6,7 +6,7 @@
:close-on-click-modal="false"
@close="bindDialogClose">
<div class="mall-sel-box">
<el-select class="belong-mall-sel" v-model="belongMallVal" placeholder="选择所属门店">
<el-select class="belong-mall-sel" v-model="belongMallVal" :placeholder="$t('pholder.mall')">
<el-option v-for="(mallItem, mallIndex) in belongMallList" :label="mallItem.name" :value="mallItem.id" :key="mallIndex"></el-option>
</el-select>
</div>
......
......@@ -112,10 +112,10 @@ export default {
{ required: true, message: '请输入设备序列号', trigger: 'blur' }
],
accountId: [{
required: true, message: '请选择集团', trigger: 'change'
required: true, message: '请选择商户', trigger: 'change'
}],
mallId: [{
required: true, message: '请选择店', trigger: 'change'
required: true, message: '请选择店', trigger: 'change'
}]
},
curMallId: null,
......
......@@ -90,7 +90,7 @@ export default {
// { required: true, message: '请选择状态', trigger: 'blur' },
// ],
mallId: [
{ required: true, message: '请选择店', trigger: 'change' },
{ required: true, message: '请选择店', trigger: 'change' },
],
// accountId: [
// { required: true, message: '请选择集团', trigger: 'change' },
......@@ -126,7 +126,7 @@ export default {
dialogInit(data) {
this.rowId = data.id;
this.editForm = data;
this.editForm.floorPlan = data.floorPlan ? data.floorPlan : '';
this.editForm.floorPlan = data.floorPlan || '';
this.editDialogVisible = true;
},
dialogOpen(formDatas) {
......
......@@ -11,7 +11,7 @@
</span>-->
<!-- <span class="titles">广场选择</span> -->
<div class="manage-select-box">
<el-select v-model="mallValue" filterable placeholder="广场选择" @change="mallChange">
<el-select v-model="mallValue" filterable :placeholder="$t('pholder.shopS')" @change="mallChange">
<el-option
v-for="item in mallListForTerm"
:key="item.id"
......
......@@ -200,7 +200,7 @@ export default {
{ validator: checkY, trigger: 'change' }
],
mallId: [
{ required: true, message: '请选择店', trigger: 'change' },
{ required: true, message: '请选择店', trigger: 'change' },
],
// accountId: [
// { required: true, message: '请选择集团', trigger: 'blur' }
......
......@@ -197,7 +197,7 @@ export default {
{ validator: checkY, trigger: 'change' }
],
mallId: [
{ required: true, message: '请选择店', trigger: 'change' },
{ required: true, message: '请选择店', trigger: 'change' },
],
// accountId: [
// { required: true, message: '请选择集团', trigger: 'blur' }
......
......@@ -321,7 +321,7 @@ export default {
// { required: true, message: '请输入y坐标', trigger: 'change' },
{ validator: checkY, trigger: "change" }
],
mallId: [{ required: true, message: "请选择店", trigger: "change" }],
mallId: [{ required: true, message: "请选择店", trigger: "change" }],
// accountId: [
// { required: true, message: '请选择集团', trigger: 'blur' }
// ],
......
......@@ -271,7 +271,7 @@ export default {
type: [{ required: true, message: "请选择类型", trigger: "change" }],
status: [{ required: true, message: "请选择状态", trigger: "change" }],
// mallId: [
// { required: true, message: '请选择店', trigger: 'change' },
// { required: true, message: '请选择店', trigger: 'change' },
// ],
// accountId: [
// { required: true, message: '请选择集团', trigger: 'blur' },
......
<template>
<div class="manage-container deviceStatus-wrapper">
<!-- <div>
<el-row class="manage-head-wrapper">
<el-col :span="24">
<header class="title-header">
<span class="title">消息通知</span>
</header>
</el-col>
</el-row>
</div> -->
<div>
<div class="wechat-card-wrapper">
<!-- <p class="card-title">消息绑定: </p> -->
<div class="card">
<el-tabs class="wechat-option-tabs" v-model="activeName" @tab-click="handleClick(activeName)">
<el-tab-pane label="数据报警" name="warn">
<el-row>
<el-col :span="24">
<div class="option-item">
<span class="option-item-title">消息绑定类型: </span>
<el-checkbox-group v-model="warnList" class="check-group" @change="bindMessage(warnList,'oldWarnList')">
<el-checkbox label="mall">商场</el-checkbox>
<el-checkbox label="gate">监控点</el-checkbox>
<el-checkbox label="device_status">设备状态</el-checkbox>
</el-checkbox-group>
<!-- <el-button type="primary" size="mini" icon="el-icon-circle-plus" class="btn-unbind" @click="bindMessage('warn')">绑定消息</el-button> -->
</div>
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane label="数据推送" name="push">
<el-row>
<el-col :span="24">
<div class="option-item">
<span class="option-item-title">消息绑定类型: </span>
<el-checkbox-group v-model="pushList" class="check-group" @change="bindMessage(pushList,'oldPushList')">
<el-checkbox label="mall">商场</el-checkbox>
<el-checkbox label="gate">监控点</el-checkbox>
</el-checkbox-group>
<!-- <el-button type="primary" size="mini" icon="el-icon-circle-plus" class="btn-unbind" @click="bindMessage('push')">绑定消息</el-button> -->
</div>
<!-- <div class="option-item"> -->
<!-- <span class="option-item-title">时间类型: </span>
<el-select v-model="timeType" class="floor-sel-box format-sel-box" style="width: 100px" @change="bindMessage(timeType, 'push')">
<el-option v-for="item in timeTypeList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> -->
<!-- </div> -->
</el-col>
</el-row>
</el-tab-pane>
</el-tabs>
</div>
</div>
<div class="wechat-card-wrapper">
<!-- <p class="card-title">资源绑定: </p> -->
<span class="souce-item-title">资源绑定: </span>
<div class="card">
<el-row style="padding:10px 0">
<div style="text-align:center;">
<el-transfer
style="text-align: left; display: inline-block"
v-model="transVal"
filterable
:titles="['未关注资源列表', '已关注资源列表']"
:button-texts="['解绑','关注']"
:format="{
noChecked: '${total}',
hasChecked: '${checked}/${total}'
}"
@change="handleChange"
:data="mallData"
class="wechat-transfer">
</el-transfer>
</div>
</el-row>
</div>
</div>
</div>
<el-dialog
class="qrcode-dialog wechat-dialog"
:show-close="false"
width="15%"
top="26vh"
:visible.sync="qrcodeShow">
<div class="qrcode-wrapper">
<span>该功能需要绑定微信,扫描二维码</span>
<div id="qrcode" ref="qrcode"></div>
</div>
</el-dialog>
</div>
</template>
<script>
import QRCode from "qrcodejs2";
import select from "./select"
export default {
data() {
return {
tableHeight: 0,
tableData: [],
qrcodeShow: false,
mallData: [],
transVal: [],
nameObj:{},
messageVal: [],
checkAll: false,
isIndeterminate: false,
userId: null,
activeName: 'warn',
timeType: 'day',
timeTypeList: [
{
label: '天级',
value: 'day'
},
{
label: '小时级',
value: 'hour'
},
{
label: '分钟级',
value: 'minute'
}
],
warnList: [],
pushList: [],
oldWarnList: [],
oldPushList: [],
}
},
watch: {
},
components: {
'all-select': select,
},
created() {
let winH = $(window).height();
this.tableHeight = winH <= 720 ? winH - winH * 0.25 : winH - winH * 0.24;
this.userUnid = this.$cookie.get('unid');
this.getInfo();
this.getUserId();
},
mounted() {
},
methods: {
handleClick(val) {
this.getUserMessage(val)
},
showImgDiv() {
this.qrcodeShow = false
},
getMall() {
this.nameObj = {};
this.mallData = [];
this.$api.base.mall({
accountId: this.$cookie.get('accountId'),
// status: 1,
status_arr: '1,3'
},null,true)
.then(res => {
let result = res.data.data;
result.forEach(item => {
let obj = {
key: item.unid,
label: item.name,
}
this.nameObj[item.unid] = item.name;
this.mallData.push(obj)
})
})
.catch(err => {
})
},
handleChange(value, direction, movedKeys) {
let resourcesList = [];
movedKeys.forEach(item => {
let obj = {}
obj.unid = item;
obj.name = this.nameObj[item];
obj.typeKey = '123456789';
resourcesList.push(obj)
})
let typeParam = {
userUnid: this.userUnid,
resources:resourcesList
}
if(direction == 'right') {
this.bindType(typeParam)
}else{
this.unbindType(typeParam)
}
},
bindType(type_param) {
this.transVal = [];
this.$api.management.bindType(window._vionConfig.messageUrl, type_param)
.then(res => {
let result = res.data
if(result.code == 200) {
this.getUserId('Resour');
this.$message({
message: result.msg,
type: 'success'
})
}else {
this.$message.error(result.msg)
}
})
.catch(err => {})
},
difference(a,b) {
var difference = a.filter(function(v){ return b.indexOf(v) === -1 }).concat(b.filter(function(v){ return a.indexOf(v) === -1 }))
return difference
},
bindMessage(val,type) {
let diffVal = this.difference(val,this[type]);
let messageList = []
if (this.activeName === 'warn') {
messageList.push(`${diffVal[0]}_minute_warn`)
} else {
messageList.push(`${diffVal[0]}_${this.timeType}_push`)
}
this[type] = []
this[type] = JSON.parse(JSON.stringify(val))
if(val.indexOf(diffVal[0]) !== -1) {
this.bindMessageRequest(messageList)
}else{
this.unbindMessage(messageList)
}
},
bindMessageRequest(messageList) {
let messageParam = {
userUnid: this.userUnid,
typeKeys: messageList,
// append: false
}
this.$api.management.bindMessage(window._vionConfig.messageUrl, messageParam)
.then(res => {
let result = res.data;
if(result.code == 200) {
this.getUserId('Message');
this.$message({
message: result.msg,
type: 'success'
})
}else{
this.$message.error(result.msg)
}
})
.catch(err => {})
},
// 有绑定按钮有的情况
bindMessage2() {
let messageList = []
if (this.activeName === 'warn') {
this.mallChecked && messageList.push('mall_minute_warn')
this.gateChecked && messageList.push('gate_minute_warn')
// this.deviceChecked && messageList.push('device_gate_minute_warn')
} else {
this.pushMallChecked && messageList.push(`mall_${this.timeType}_push`)
this.pushGateChecked && messageList.push(`gate_${this.timeType}_push`)
this.pushDeviceChecked && messageList.push(`device_${this.timeType}_push`)
}
let messageParam = {
userUnid: this.userUnid,
typeKeys: messageList,
append: false
}
// return;
this.$api.management.bindMessage(window._vionConfig.messageUrl, messageParam)
.then(res => {
let result = res.data;
if(result.code == 200) {
this.getUserId('Message');
this.$message({
message: result.msg,
type: 'success'
})
}else{
this.$message.error(result.msg)
}
})
.catch(err => {})
},
unbindType(type_param) {
this.$api.management.deleteType(window._vionConfig.messageUrl, type_param)
.then(res => {
let result = res.data
if(result.code == 200) {
this.getUserResour();
this.$message({
message: result.msg,
type: 'success'
})
}else {
this.$message.error(result.msg)
}
})
.catch(err => {})
},
unbindMessage(tabKeys) {
let params = {
userUnid: this.userUnid,
typeKeys: tabKeys
}
this.$api.management.deleteMessage(window._vionConfig.messageUrl, params)
.then(res => {
let result = res.data;
if(result.code == 200) {
this.isIndeterminate = false;
this.checkAll = false;
this.messageVal = [];
this.$message({
message: result.msg,
type: 'success'
})
this.getUserMessage()
}else{
this.$message.error(result.msg)
}
})
.catch(err => {})
},
unbindMessage2() {
let params = {
userUnid: this.userUnid,
typeKeys: this.messageVal
}
this.$api.management.deleteMessage(window._vionConfig.messageUrl, params)
.then(res => {
let result = res.data;
if(result.code == 200) {
this.isIndeterminate = false;
this.checkAll = false;
this.messageVal = [];
this.$message({
message: result.msg,
type: 'success'
})
this.getUserMessage()
}else{
this.$message.error(result.msg)
}
})
.catch(err => {})
},
getUserResour() {
this.transVal = [];
let params = {
userId: this.userId
}
this.$api.management.userResour(window._vionConfig.messageUrl, params)
.then(res => {
let result = res.data;
result.data.forEach(item => {
this.transVal.push(item.resource.unid)
})
})
.catch(err => {})
},
getUserMessage(type) {
this.warnList = [];
this.pushList = [];
this.mallData = [];
this.transVal = [];
let params = {
userId: this.userId
}
this.$api.management.userMessage(window._vionConfig.messageUrl, params)
.then(res => {
let result = res.data
result.data.forEach(item => {
if(item.messageType.typeKey.indexOf('warn') !== -1) {
this.warnList.push(item.messageType.typeKey.split('_')[0])
}else if(item.messageType.typeKey.indexOf('push') !== -1){
this.pushList.push(item.messageType.typeKey.split('_')[0])
}
})
this.oldWarnList = JSON.parse(JSON.stringify(this.warnList))
this.oldPushList = JSON.parse(JSON.stringify(this.pushList))
if(typeof(type) == 'string') {
if(this[type + 'List'].length > 0) {
this.getMall()
this.getUserResour()
}
}else if(typeof(type) == 'boolean') {
if(this.warnList.length > 0) {
this.getMall()
this.getUserResour()
}
}
})
.catch(err => {})
},
getUserId(address) {
let params = {
unid: this.userUnid
}
this.$api.management.userId(window._vionConfig.messageUrl, params)
.then(res => {
let result = res.data;
this.userId = result.data[0].id;
if(address) {
this['getUser' + address](this.activeName);
}else{
this.getUserMessage(true);
}
})
.catch(err => {})
},
getInfo() {
this.$api.management.singleUser(this.$cookie.get('userId'))
.then(res => {
let result = res.data;
if(result.code == 200) {
if(!result.data.nickname){
this.getWechatUrl()
}
}
})
.catch(err => {})
},
getWechatUrl() {
let params = {
userUnid: this.$cookie.get('unid')
}
this.$api.management.wechatUrl(window._vionConfig.messageUrl, params)
.then(res => {
let result = res.data.data;
let wechatUrl = result.bindUrl;
this.qrcodeShow = true
setTimeout(() => {
this.qrcode(wechatUrl)
},0)
})
.catch(err => {})
},
qrcode(url) {
document.getElementById("qrcode").innerHTML = "";
let qrcode = new QRCode("qrcode", {
width: 250,
height: 250 // 高度
// render: 'canvas' // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
// background: '#f0f'
// foreground: '#ff0'
});
qrcode.makeCode(url);
},
}
}
</script>
<style scoped>
.manage-head-wrapper {
padding: 15px 12px 10px;
}
img {
border:none;
}
.title-header{
text-align: center;
padding-bottom: 10px;
}
.title {
line-height: 20px;
display: inline-block;
font-size: 20px;
vertical-align: middle;
text-align: center;
color: #555;
}
.enlarge-img{
text-align: center;
position: absolute;
margin: 0;
left: 50%;
top: 50%;
transform: translate(-50%,-50%)
}
.img-container{
display: inline-block;
position: relative;
}
.close-img__headerbtn {
position: absolute;
top: 10px;
right: 10px;
padding: 0;
background: transparent;
border: none;
outline: none;
cursor: pointer;
font-size: 20px;
}
.close-img__headerbtn .img__close {
color: #909399;
}
[class*=" el-icon-"], [class^=el-icon-] {
font-family: element-icons!important;
speak: none;
font-style: normal;
font-weight: 400;
font-variant: normal;
text-transform: none;
line-height: 1;
vertical-align: baseline;
display: inline-block;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.el-icon-close:before {
content: "\E60F";
}
.option-item:before,
.option-item:after {
content: '';
display: table;
}
.option-item:after {
clear: both;
}
.option-item {
padding: 16px 0 6px 0;
position: relative;
}
.btn-unbind {
position: absolute;
right: 10px;
top: 11px;
}
.card-title {
background: #3bb8ff;
color: #fff;
padding: 10px 20px;
font-size: 16px;
}
.card {
padding: 5px 30px 16px;
}
.check-group {
float: left;
}
.option-item-title {
padding-right: 10px;
float: left;
}
.souce-item-title{
padding-left: 30px;
}
.qrcode-wrapper {
background-color: #fff;
text-align: center;
}
</style>
......@@ -243,6 +243,7 @@ export default {
getTableData() {
this.dataMsg = this.$t('echartsTitle.loading')
let _mallId = this.mallValue || null;
if (!this.blocValue || !_mallId) return
let _floorId = this.floorValue || null;
var tabelParams = {
accountId: this.blocValue,
......
......@@ -199,6 +199,7 @@ export default {
this.btnDisabled = false;
},
delNode(ev, n, d, s) {
const { appunid } = this
let e = ev || window.event;
e.stopPropagation();
this.$confirm(
......@@ -212,22 +213,21 @@ export default {
)
.then(() => {
this.$api.management
.delGroup(d.unid, {
// _t: Date.parse(new Date()) / 1000
})
.delMenuNode(appunid, d.unid)
.then(res => {
if (res.data.code == 200) {
if (d.unid == this.groupForm.unid) {
this.groupForm = {
name: "",
// nameEn: '',
pid: -1,
pUnid: -1,
id: "",
unid: '',
intro: ""
};
}
console.log(res)
if (res.data.ecode === 200) {
// if (d.unid == this.groupForm.unid) {
// this.groupForm = {
// name: "",
// // nameEn: '',
// pid: -1,
// pUnid: -1,
// id: "",
// unid: '',
// intro: ""
// };
// }
let parent = n.parent;
let children = parent.data.children || parent.data;
let index = children.findIndex(item => item.unid === d.unid);
......
<template>
<div id="userLayout" class="user-layout-wrapper">
<div class="container">
<div class="login-container">
<div class="login-header" v-if="$Project !== 'mall'">
<lange-Select class="login-lang"></lange-Select>
</div>
<el-form
ref="loginForm"
:model="loginForm"
:rules="rules"
class="login-form"
auto-complete="on"
>
<!-- 可添加 国际化选项 -->
<div class="logo-wrapper">
<a href="javascript:;">
<img src="~@/assets/img/login_logo.png" class="logo" alt="logo" />
</a>
</div>
<el-form-item prop="loginName">
<el-input
ref="loginName"
v-model="loginForm.loginName"
class="form-inp login-username"
autocomplete="on"
type="text"
name="loginName"
tabindex="1"
>
<i slot="suffix" class="custom-icon loginUser-icon" />
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
ref="password"
v-model="loginForm.password"
class="form-inp login-password"
autocomplete="on"
type="password"
name="password"
@keyup.enter.native="submitForm('loginForm')"
>
<i slot="suffix" class="custom-icon pass-icon" />
</el-input>
</el-form-item>
<el-form-item class="submit-wrapper">
<el-button
type="primary"
class="submit-btn"
@click.native.prevent="submitForm('loginForm')"
>{{ falg ? $t('login.loginLoading') : $t('login.btn') }}</el-button>
<el-checkbox v-model="rememberPass" class>{{ $t('login.rememberPw') }}</el-checkbox>
</el-form-item>
<div class="login-footer" v-html="footerText"></div>
</el-form>
</div>
</div>
<el-dialog
:title="$t('dialog.resetPW')"
class="manage-dialog"
:visible.sync="passwordDialogVisible"
:close-on-click-modal="false"
@close="cancledialog()"
>
<el-form
:model="passwordForm"
status-icon
ref="passwordForm"
:rules="newRules"
label-width="formLabelWidth"
>
<el-form-item :label="$t('dialog.newPW')" prop="newpass">
<el-input type="password" v-model="passwordForm.newpass"></el-input>
<i class="error-tip">*</i>
</el-form-item>
<el-form-item :label="$t('dialog.confirmPW')" prop="checkPass">
<el-input type="password" v-model="passwordForm.checkPass"></el-input>
<i class="error-tip">*</i>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="passwordDialogVisible = false" class="dialog-btn">{{$t('dialog.cancel')}}</el-button>
<el-button
type="primary"
@click="changeSubmit('passwordForm')"
class="dialog-btn dialog-confirm-btn"
>{{$t('dialog.confirm')}}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import LangeSelect from "../public/LangeSelect";
import Bus from "../public/eventBus.js";
import qs from "qs";
window.addEventListener("resize", () => {
$(".login-wrapper").css({
height: window.innerHeight + "px"
});
});
import { mapActions } from "vuex";
export default {
data() {
var validatePass1 = (rule, value, callback) => {
var exp = /^(?![A-Z]+$)(?![a-z]+$)(?!\d+$)(?![\W_]+$)\S{6,16}$/;
if (value === "") {
callback(new Error(this.$t("rules.password")));
} else if (!exp.test(value)) {
return callback(new Error(this.$t("rules.wordRules")));
} else if (value == this.loginForm.password) {
callback(new Error(this.$t("rules.newOldSame")));
} else {
if (this.passwordForm.checkPass !== "") {
this.$refs.passwordForm.validateField("checkPass");
}
callback();
}
};
var validatePass2 = (rule, value, callback) => {
var exp = /^(?![A-Z]+$)(?![a-z]+$)(?!\d+$)(?![\W_]+$)\S{6,16}$/;
if (value === "") {
callback(new Error(this.$t("rules.checkWord")));
} else if (!exp.test(value)) {
return callback(new Error(this.$t("rules.wordRules")));
} else if (value !== this.passwordForm.newpass) {
callback(new Error(this.$t("rules.checkDifferent")));
} else {
callback();
}
};
return {
footerText: "",
loginForm: {
loginName: "", //
password: "" //
},
rememberPass: true,
rules: {
loginName: [
{
required: true,
message: this.$t("rules.loginName"),
trigger: "blur"
}
],
password: [
{
required: true,
message: this.$t("rules.password"),
trigger: "blur"
}
]
},
falg: false,
appunid: "",
passwordDialogVisible: false,
passwordForm: {
newpass: "",
checkPass: ""
},
newRules: {
newpass: [{ validator: validatePass1, trigger: "change" }],
checkPass: [{ validator: validatePass2, trigger: "change" }]
}
// menuName: []
};
},
components: {
"lange-Select": LangeSelect
},
created() {
let _this = this;
_this.footerText = window._vionConfig.companyName;
document.addEventListener("keyup", function(e) {
let ev = window.event || e;
let _key = ev.keyCode;
if (_key === 13) {
_this.submitForm("loginForm");
}
});
},
mounted() {
// $('.login-wrapper').css({
// height: window.innerHeight + 'px'
// });
this.checkCookie();
},
beforeDestroy() {
// if()
// let _this = this;
// document.removeEventListener('keyup', function(e) {
// let ev = window.event || e;
// let _key = ev.keyCode;
// console.log('remove keyup event', _key)
// if(_key === 13) {
// _this.submitForm('loginForm');
// }
// })
},
methods: {
...mapActions(["getAccout"]),
submitForm(formName) {
if (!this.$refs[formName]) return;
let checkIe = document.documentMode || false;
this.$refs[formName].validate(valid => {
if (valid) {
if (this.falg) return;
this.falg = true;
this.$api.base
.login(this.loginForm)
.then(res => {
this.falg = false;
if (res.data.success == false && res.data.code == 500) {
this.$message({
showClose: true,
type: "error",
message: res.data.msg
});
} else {
if (this.loginForm.password == "123456") {
this.$cookie.set("atoken", res.data.data.atoken);
this.passwordDialogVisible = true;
} else {
if (res.data.data.date_left) {
const { days, timeStr } = this.formatterExpireTime(
res.data.data.date_left
);
if (days <= 30) {
const tipContent = this.tipsHtml(
res.data.data.user.account.expireDate,
days
);
this.$alert(tipContent, "", {
dangerouslyUseHTMLString: true
});
}
}
this.$cookie.set("userId", res.data.data.user.id);
this.$cookie.set("atoken", res.data.data.atoken);
this.$cookie.set("rtoken", res.data.data.rtoken);
this.$cookie.set("user_unid", res.data.data.user_unid);
this.$cookie.set("user_type", res.data.data.userType);
this.$cookie.set("unid", res.data.data.user.unid);
this.$cookie.set("username", res.data.data.user.loginName);
this.setSessionLocal(
"loginName",
res.data.data.user.loginName
);
this.sessionCity();
// if(this.rememberPass) {
// this.$cookie.set('username', this.loginForm.loginName);
// this.$cookie.set('pwd', this.loginForm.password);
// } else {
// this.$cookie.remove('username');
// this.$cookie.remove('pwd');
// }
if (res.data.data.userType === "super") {
this.getAccName(0, true);
this.getAccout(0);
// this.$store.dispatch('GetAccountId')
} else {
if (res.data.data.user.accountId) {
this.$cookie.set(
"accountId",
res.data.data.user.accountId
);
this.getAccName(res.data.data.user.accountId);
} else {
this.$cookie.set(
"accountId",
res.data.data.user.accountId
);
this.getAccName(-1);
this.$cookie.set("accountId", -1);
this.$cookie.set("accountName", "");
}
}
}
}
})
.catch(err => {
// console.log('err', err)
setTimeout(() => {
this.falg = false;
}, 3000);
this.$message({
showClose: true,
type: "error",
message: this.$t("message.loginFailed") + "" + err.message
});
});
// }
} else {
return false;
}
});
},
getNode() {
this.$api.management
.menuAppList({})
.then(res => {
var result = res.data.list_data;
if (result.length == 0) {
this.$message({
showClose: true,
type: "warning",
message: this.$t("message.nomenu")
});
this.removeCookies();
}
result.forEach((item, index) => {
if (item.name == this.$Project) {
this.appunid = item.unid;
}
});
this.getMeun(this.appunid);
})
.catch(err => {
this.removeCookies();
});
},
getMeun(unid) {
this.$api.management
.menuChildNode(unid)
.then(res => {
var result = res.data.menu_tree;
var menuArray = [];
if (result.length == 0) {
this.$message({
showClose: true,
type: "warning",
message: this.$t("message.nomenu")
});
this.removeCookies();
} else {
if (result.length >= 2) {
menuArray.push(result[1]);
} else {
menuArray.push(result[0]);
}
var arr = [];
if (menuArray.length != 0) {
menuArray.forEach((menu, index) => {
let root = {};
root.unid = menu.unid;
root.id = menu.perm_unid;
root.children = [];
if (this.$Project == "mall") {
root.label = "智慧商业客流分析平台";
} else {
root.label = "智慧连锁客流分析平台";
}
this.menuName = [];
this.dealMenu(menu, root);
});
}
}
})
.catch(err => {
this.removeCookies();
});
},
dealMenu(menu, parent) {
menu.children.forEach((item, index) => {
let parentTemp = {};
parentTemp.unid = item.unid;
parentTemp.id = item.perm_unid;
parentTemp.label = item.note;
parentTemp.path = item.name;
parentTemp.parentId = menu.unid;
parentTemp.parentPermId = menu.perm_unid;
parent.children.push(parentTemp);
this.menuName.push(item.name);
if (item.children && item.children.length > 0) {
this.dealChildren(item, parent.children, index);
}
});
window.localStorage.setItem("menuName", JSON.stringify(this.menuName));
window.localStorage.setItem("menu", JSON.stringify(parent));
window.sessionStorage.setItem("loginVal", true);
this.$router.push("home");
},
dealChildren(item, parent, index) {
item.children.forEach((child, childIndex) => {
let childTemp = {};
childTemp.unid = child.unid;
childTemp.id = child.perm_unid;
childTemp.label = child.note;
childTemp.path = child.name;
childTemp.parentId = item.unid;
childTemp.parentPermId = item.perm_unid;
if (!parent[index]["children"]) {
parent[index]["children"] = [];
parent[index]["children"].push(childTemp);
} else {
parent[index]["children"].push(childTemp);
}
this.menuName.push(child.name);
if (child.children && child.children.length > 0) {
this.dealChildren(child, parent[index]["children"], childIndex);
}
});
},
getAccName(accId, isSup) {
// console.log(accId,isSup)
accId = accId == -1 || accId == 0 ? null : accId;
// if(accId) {
this.$api.base
.account({
id: accId
// _t: new Date().getTime() / 1000
})
.then(res => {
if (res.data.data.length < 1) {
// setTimeout(() => {
if (isSup) {
this.$cookie.set("accountId", 0);
this.$cookie.set("accountName", "none");
// this.$router.push('/home');
this.getmallId();
} else {
this.$message({
showClose: true,
type: "warning",
message: this.$t("message.noBloc")
});
}
// }, 2000);
} else {
// 缓存首页 map 配置
const homeMapConf = res.data.data.reduce((prevVal, curVal) => {
prevVal[curVal.id] = {
mapDisplay: curVal.mapDisplay,
mapLatitude: curVal.mapLatitude,
mapLongitude: curVal.mapLongitude,
mapZoom: curVal.mapZoom
};
return prevVal;
}, {});
window.sessionStorage.setItem(
"mapConf",
JSON.stringify(homeMapConf)
);
let accountName = res.data.data[0].name;
this.$cookie.set("accountId", res.data.data[0].id);
this.$cookie.set("accountName", accountName);
this.getmallId();
}
})
.catch(err => {
console.log("get account err:", err);
});
// }
// else {
// this.$cookie.set('accountName', '');
// this.$router.push('/home');
// }
},
getmallId() {
this.$api.base
.mall({
accountId: this.$cookie.get("accountId"),
status: 1
// _t: new Date().getTime() / 1000
})
.then(res => {
let reslut = res.data;
if (reslut.data.length > 0) {
this.$cookie.set("orgId", res.data.data[0].id);
this.$cookie.set("mallName", res.data.data[0].name);
}
if (window._vionConfig.allMenu) {
window.sessionStorage.setItem("loginVal", true);
this.$router.push("/home");
} else {
// this.$store.dispatch('GetMenuRoles');
this.getNode();
}
})
.catch(err => {});
},
checkCookie() {
let user = this.$cookie.get("username");
let pwd = this.$cookie.get("pwd");
if (user !== "" && pwd !== "") {
this.loginForm.loginName = user;
this.loginForm.password = pwd;
} else {
this.loginForm.loginName = "";
this.loginForm.password = "";
}
},
changeSubmit(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
this.$api.management
.editUser({
loginName: this.loginForm.loginName,
oldPassWord: this.loginForm.password,
password: this.passwordForm.newpass
})
.then(res => {
this.passwordDialogVisible = false;
this.$cookie.remove("atoken");
this.$message({
showClose: true,
message: this.$t("message.changePWSuccess"),
type: "success"
});
})
.catch(error => {
this.$message({
showClose: true,
message: this.$t("message.changePWFailed"),
type: "error"
});
});
}
});
},
cancledialog() {
this.passwordForm = {
newpass: "",
checkPass: ""
};
this.$refs.passwordForm.resetFields();
},
fetchIe9(url, options = {}) {
if (window.XDomainRequest) {
return new Promise((reslove, reject) => {
let method = options.method || "GET";
let timeout = options.timeout || 20000;
let contentType =
options.contentType || "application/json;charset=utf-8";
let data = options.body || options.params || {};
if (data instanceof Object) {
data = JSON.stringify(data);
}
let XDR = new XDomainRequest();
console.log("---------------------------xdr------------------------");
console.log(XDR);
console.log("---------------------------xdr------------------------");
XDR.open(method, url);
XDR.timeout = timeout;
XDR.contentType = contentType;
XDR.onload = () => {
try {
let json = JSON.parse(XDR.responseText);
return reslove(json.data);
} catch (e) {
reject(e);
}
return reject({});
};
XDR.onprogress = () => {};
XDR.ontimeout = () => reject("XDomainRequest timeout");
XDR.onerror = () => reject("XDomainRequest error");
setTimeout(() => {
XDR.send(data);
}, 0);
});
} else {
//
}
},
formatterExpireTime(timeStamp) {
const day = parseInt(timeStamp / (24 * 60 * 60 * 1000)) + 1;
// const hour = parseInt(timeStamp % (24 * 60 * 60 * 1000) / (60 * 60 * 1000))
// const minutes = parseInt(timeStamp % (60 * 60 * 1000) / (60 * 1000))
// const seconds = parseInt(timeStamp % (60 * 1000) / 1000)
return {
days: day,
// timeStr: `${day}天${hour}小时${minutes}分钟${seconds}秒`
timeStr: `${day}天`
};
},
dateToStr(date) {
return date.split(" ")[0].split("-");
},
modifyKey(number) {
const monthDic = [
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
];
return monthDic[number - 0 + 1];
},
tipsHtml(date, expiresDays) {
const localeLang =
window.localStorage.getItem("lang") || window.navigator.language;
const [y, m, d] = this.dateToStr(date);
let htmls = "";
if (localeLang === "en_US") {
htmls = `
<p>Dear users:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Your account is valid until ${this.modifyKey(
m
)} ${d}, ${y}, and there are less than ${expiresDays} days left.Please contact the reseller in time for details and renewal.If you have already contacted and renewed, please ignore this information! </p>
`;
} else if (localeLang === "zh_TW") {
htmls = `
<p>尊敬的用戶:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您的帳戶截止有效期是: ${
date.split(" ")[0]
},已剩餘不足${expiresDays}天。請及時聯係銷售經理瞭解詳情並完成續費。如果您已經聯係並續費,請忽略此信息!</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此致!</p>
`;
} else {
htmls = `
<p>尊敬的用户:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您的账户截止有效期是: ${
date.split(" ")[0]
},已剩余不足${expiresDays}天。请及时联系销售经理了解详情并完成续费。如果您已经联系并续费,请忽略此信息!</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;此致!</p>
`;
}
return htmls;
}
}
};
</script>
<style scoped>
#userLayout.user-layout-wrapper {
height: 100%;
}
#userLayout.user-layout-wrapper .container {
width: 100%;
min-height: 100%;
background: url(~@/assets/img/login_bj.png) no-repeat 50%;
background-size: 100% 100%;
position: relative;
}
.login-wrapper {
width: 100%;
height: 100%;
background: url(~@/assets/img/login_bj.png) no-repeat;
background-size: 100% 100%;
}
.form-inp {
height: 38px;
line-height: 38px;
}
.custom-icon {
font-family: element-icons !important;
speak: none;
font-style: normal;
font-weight: 400;
font-variant: normal;
text-transform: none;
line-height: 1;
vertical-align: middle;
display: inline-block;
width: 0.2rem;
height: 0.2rem;
}
.loginUser-icon {
background: url(~@/assets/img/login/login_user.png) no-repeat;
background-size: 100% 100%;
}
.pass-icon {
background: url(~@/assets/img/login/login_pw.png) no-repeat;
background-size: 100% 100%;
}
.login-msg {
top: 20%;
}
.login-lang {
margin-left: 17rem;
}
.login-container {
min-height: 100%;
width: 100%;
overflow: hidden;
}
.login-form {
position: absolute;
right: 25%;
top: 30%;
width: 16%;
}
.logo-wrapper {
height: 37px;
text-align: center;
margin-bottom: 20%;
}
.logo-wrapper .logo {
height: 100%;
width: auto;
}
.submit-wrapper {
text-align: center;
}
.submit-btn {
width: 100%;
margin-top: 15%;
border-radius: 21px;
}
.login-footer {
font-size: 10px;
color: #bbb;
text-align: center;
padding-top: 24%;
}
@media only screen and (max-width: 1280px) {
#userLayout.user-layout-wrapper {
min-height: 860px;
overflow: hidden;
}
#userLayout.user-layout-wrapper .container {
min-width: 1200px;
}
.login-container .el-form-item.submit-wrapper {
margin-bottom: 0;
}
.submit-btn {
margin-top: 9%;
}
}
@media only screen and (max-height: 1280px) {
#userLayout.user-layout-wrapper {
min-height: 860px;
overflow: hidden;
}
#userLayout.user-layout-wrapper .container {
min-width: 1200px;
}
.login-container .el-form-item.submit-wrapper {
margin-bottom: 0;
}
.submit-btn {
margin-top: 7%;
}
}
</style>
<style>
.login-container .el-form-item {
margin-bottom: 28px;
}
.login-container .el-form-item input {
border-radius: 21px;
}
</style>
......@@ -22,8 +22,8 @@
</div>
<el-table :data="tableData" class="asis-table baseasis-table" :max-height="tableHeight">
<el-table-column prop="orderNum" align="center" label="序号"></el-table-column>
<el-table-column prop="mallId" align="center" label="店ID"></el-table-column>
<el-table-column prop="name" align="center" label="店名称" show-overflow-tooltip></el-table-column>
<el-table-column prop="mallId" align="center" label="店ID"></el-table-column>
<el-table-column prop="name" align="center" label="店名称" show-overflow-tooltip></el-table-column>
<el-table-column prop="countdate" align="center" label="日期" :formatter="dateFormatter"></el-table-column>
<el-table-column prop="count" align="center" label="多次到店人数"></el-table-column>
</el-table>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!