Browse Source

业务域名调试;排序调试

dev
jiangyy 5 years ago
parent
commit
5c7e24061d
  1. 4
      epmet-oper-web/src/js/columns/customer/manage/customer.js
  2. 8
      epmet-oper-web/src/js/columns/miniPro/customizedFunction.js
  3. 83
      epmet-oper-web/src/router/index.js
  4. 22
      epmet-oper-web/src/views/modules/customer/customize/ConfigEdit.vue
  5. 28
      epmet-oper-web/src/views/modules/customer/customize/ConfigItem.vue
  6. 9
      epmet-oper-web/src/views/modules/customer/manage/EditForm.vue
  7. 249
      epmet-oper-web/src/views/modules/customer/miniProAgent/BasicInfo.vue
  8. 15
      epmet-oper-web/src/views/modules/productConfig/customizeFunction/CustomFun.vue
  9. 98
      epmet-oper-web/src/views/modules/productConfig/customizeFunction/Edit.vue
  10. 68
      epmet-oper-web/src/views/pages/login.vue
  11. 155
      epmet-oper-web/src/views/pages/loginWork.vue

4
epmet-oper-web/src/js/columns/customer/manage/customer.js

@ -76,7 +76,7 @@ export default {
{
key: 'rootManageName',
title: '管理员',
display: ['formA', 'formU', 'table', 'model'],
display: ['table', 'model'],
type: 'input',
rule: [
{
@ -91,7 +91,7 @@ export default {
{
key: 'rootManagePhone',
title: '联系方式',
display: ['formA', 'formU', 'table', 'model'],
display: ['table', 'model'],
type: 'input',
rule: [
{

8
epmet-oper-web/src/js/columns/miniPro/customizedFunction.js

@ -22,7 +22,7 @@ export default [
return '未知'
}
},
width: 80
width: 60
},
{
key: 'functionExplain',
@ -48,7 +48,9 @@ export default [
fixed: false,
block: true,
width: 100,
tableType: 'image'
tableType: 'image',
imgWidth: '30px',
imgHeight: '30px'
},
{
@ -56,7 +58,7 @@ export default [
title: '外链地址',
display: ['formA', 'formU', 'table', 'model'],
block: true,
width: 60
width: 120
},
// {
// key: 'domainName',

83
epmet-oper-web/src/router/index.js

@ -12,7 +12,7 @@ export const pageRoutes = [
component: () => import('@/views/pages/404'),
name: '404',
meta: { title: '404未找到' },
beforeEnter (to, from, next) {
beforeEnter(to, from, next) {
// 拦截处理特殊业务场景
// 如果, 重定向路由包含__双下划线, 为临时添加路由
if (/__.*/.test(to.redirectedFrom)) {
@ -21,7 +21,18 @@ export const pageRoutes = [
next()
}
},
{ path: '/login', component: () => import('@/views/pages/login'), name: 'login', meta: { title: '登录' } }
{
path: '/login',
component: () => import('@/views/pages/login'),
name: 'login',
meta: { title: '登录' }
},
{
path: '/loginWork',
component: () => import('@/views/pages/loginWork'),
name: 'loginWork',
meta: { title: '工作端登录' }
}
]
// 模块路由(基于主入口布局页面)
@ -32,14 +43,21 @@ export const moduleRoutes = {
redirect: { name: 'home' },
meta: { title: '主入口布局' },
children: [
{ path: '/home', component: () => import('@/views/modules/home'), name: 'home', meta: { title: '首页', isTab: true } }
{
path: '/home',
component: () => import('@/views/modules/home'),
name: 'home',
meta: { title: '首页', isTab: true }
}
]
}
export function addDynamicRoute (routeParams, router) {
export function addDynamicRoute(routeParams, router) {
// 组装路由名称, 并判断是否已添加, 如是: 则直接跳转
var routeName = routeParams.routeName
var dynamicRoute = window.SITE_CONFIG['dynamicRoutes'].filter(item => item.name === routeName)[0]
var dynamicRoute = window.SITE_CONFIG['dynamicRoutes'].filter(
(item) => item.name === routeName
)[0]
if (dynamicRoute) {
return router.push({ name: routeName, params: routeParams.params })
}
@ -74,29 +92,38 @@ const router = new Router({
router.beforeEach((to, from, next) => {
// 添加动态(菜单)路由
// 已添加或者当前路由为页面路由, 可直接访问
if (window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] || fnCurrentRouteIsPageRoute(to, pageRoutes)) {
if (
window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] ||
fnCurrentRouteIsPageRoute(to, pageRoutes)
) {
return next()
}
// 获取字典列表, 添加并全局变量保存
http.get('/sys/dict/type/all').then(({ data: res }) => {
if (res.code !== 0) {
return
}
window.SITE_CONFIG['dictList'] = res.data
}).catch(() => { })
http
.get('/sys/dict/type/all')
.then(({ data: res }) => {
if (res.code !== 0) {
return
}
window.SITE_CONFIG['dictList'] = res.data
})
.catch(() => {})
// 获取菜单列表, 添加并全局变量保存
http.get('/oper/access/menu/nav').then(({ data: res }) => {
if (res.code !== 0) {
// Vue.prototype.$message.error(res.msg)
return next({ name: 'login' })
}
window.SITE_CONFIG['menuList'] = res.data
fnAddDynamicMenuRoutes(window.SITE_CONFIG['menuList'])
// next({ ...to, replace: true })
next({ ...to, replace: true })
}).catch(() => {
next({ name: 'login' })
})
http
.get('/oper/access/menu/nav')
.then(({ data: res }) => {
if (res.code !== 0) {
// Vue.prototype.$message.error(res.msg)
return next({ name: 'login' })
}
window.SITE_CONFIG['menuList'] = res.data
fnAddDynamicMenuRoutes(window.SITE_CONFIG['menuList'])
// next({ ...to, replace: true })
next({ ...to, replace: true })
})
.catch(() => {
next({ name: 'login' })
})
})
/**
@ -104,7 +131,7 @@ router.beforeEach((to, from, next) => {
* @param {*} route 当前路由
* @param {*} pageRoutes 页面路由
*/
function fnCurrentRouteIsPageRoute (route, pageRoutes = []) {
function fnCurrentRouteIsPageRoute(route, pageRoutes = []) {
var temp = []
for (var i = 0; i < pageRoutes.length; i++) {
if (route.path === pageRoutes[i].path) {
@ -122,7 +149,7 @@ function fnCurrentRouteIsPageRoute (route, pageRoutes = []) {
* @param {*} menuList 菜单列表
* @param {*} routes 递归创建的动态(菜单)路由
*/
function fnAddDynamicMenuRoutes (menuList = [], routes = []) {
function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
var temp = []
for (var i = 0; i < menuList.length; i++) {
if (menuList[i].children && menuList[i].children.length >= 1) {
@ -141,7 +168,9 @@ function fnAddDynamicMenuRoutes (menuList = [], routes = []) {
}
}
// eslint-disable-next-line
let URL = (menuList[i].url || '').replace(/{{([^}}]+)?}}/g, (s1, s2) => eval(s2)) // URL支持{{ window.xxx }}占位符变量
let URL = (menuList[i].url || '').replace(/{{([^}}]+)?}}/g, (s1, s2) =>
eval(s2)
) // URL支持{{ window.xxx }}占位符变量
if (isURL(URL)) {
route['path'] = route['name'] = `i-${menuList[i].id}`
route['meta']['iframeURL'] = URL

22
epmet-oper-web/src/views/modules/customer/customize/ConfigEdit.vue

@ -45,11 +45,12 @@
class="function-icon">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
<el-button class="btn_reset"
type="primary"
size="mini"
@click="resetLargeImg">恢复默认</el-button>
</el-upload>
<el-button class="btn_reset"
type="primary"
size="mini"
@click="resetLargeImg">恢复默认</el-button>
</el-form-item>
</div>
@ -58,7 +59,7 @@
label="默认小图标">
<div class="item_width_1">
<img :src="dataForm.defaultSmallImg"
style="width:70px;height:70px"
style="width:40px;height:40px"
class="function-icon">
</div>
@ -73,15 +74,16 @@
:before-upload="beforeImgUpload">
<img v-if="dataForm.iconSmallImg"
:src="dataForm.iconSmallImg"
style="width:70px;height:70px"
style="width:40px;height:40px"
class="function-icon">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
<el-button class="btn_reset"
type="primary"
size="mini"
@click="resetSmallImg">恢复默认</el-button>
</el-upload>
<el-button class="btn_reset"
type="primary"
size="mini"
@click="resetSmallImg">恢复默认</el-button>
</el-form-item>
</div>

28
epmet-oper-web/src/views/modules/customer/customize/ConfigItem.vue

@ -81,7 +81,7 @@
prop="iconSmallImg">
<template slot-scope="scope">
<el-image v-if="scope.row.iconSmallImg"
style="width: 50px; height: 50px;text-align: center;"
style="width: 40px; height: 40px;text-align: center;"
:src="scope.row.iconSmallImg"
:preview-src-list="[scope.row.iconSmallImg]">
</el-image>
@ -444,11 +444,11 @@ export default {
if (i === index - 1) {
one.customerId = this.customizedList[i].customerId
one.functionId = this.customizedList[i].functionId
one.displayOrder = i
one.displayOrder = index
} else if (i === index) {
obj.customerId = this.customizedList[i].customerId
obj.functionId = this.customizedList[i].functionId
obj.displayOrder = i
obj.displayOrder = index - 1
resultList.push(obj)
resultList.push(one)
} else {
@ -461,16 +461,18 @@ export default {
console.log(resultList)
// const url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/oper/customize/customerfunctiondetail/updatedisplayorder'
// const url = '/oper/customize/customerfunctiondetail/updatedisplayorder'
// window.app.ajax.post(url, resultList,
// (data, rspMsg) => {
// // this.$message.success('')
// this.loadTableData()
// },
// (rspMsg, data) => {
// this.$message.error(rspMsg)
// })
this.endLoading()
const url = '/oper/customize/customerfunctiondetail/updatedisplayorder'
window.app.ajax.post(url, resultList,
(data, rspMsg) => {
this.endLoading()
// this.$message.success('')
this.loadTableData()
},
(rspMsg, data) => {
this.endLoading()
this.$message.error(rspMsg)
})
} else {
this.$message.warning('无法上移')

9
epmet-oper-web/src/views/modules/customer/manage/EditForm.vue

@ -133,8 +133,13 @@ export default {
// let url = 'https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/oper/crm/customer/updatecustomer'
let url = '/oper/crm/customer/updatecustomer'
//
let _data = this.$refs['ref_form'].model
_data.logo = this.formData2.logo
const model = this.$refs['ref_form'].model
let _data = {
customerId: model.customerId,
customerName: model.customerName,
logo: this.formData2.logo
}
window.app.ajax.post(url, _data,
(data, rspMsg) => {
this.endLoading()

249
epmet-oper-web/src/views/modules/customer/miniProAgent/BasicInfo.vue

@ -8,117 +8,140 @@
:width="70"
@cancel="diaCancel"
@ok="setDomains">
<el-tabs v-model="activeName"
class="el-tabs">
<el-tab-pane label="服务器域名"
name="service">
<el-form :inline="true"
:model="formData"
class="form"
label-width="170px">
<el-form-item label="request 合法域名">
<div v-for="(item, index) in formData.requestDomain"
:key="index">
<el-input style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入request 合法域名'
v-model="formData.requestDomain[index]"> </el-input>
<el-form :inline="true"
:model="formData"
class="form"
label-width="170px">
<el-form-item label="request 合法域名">
<div v-for="(item, index) in formData.requestDomain"
:key="index">
<el-input style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入request 合法域名'
v-model="formData.requestDomain[index]"> </el-input>
<el-button v-if="index===0"
size="mini"
class="btn_serve"
type="primary"
icon="el-icon-plus"
@click="addRequest('requestDomain')"
circle></el-button>
<el-button v-else
size="mini"
class="btn_serve"
type="danger"
icon="el-icon-minus"
@click="delRequest(index,'requestDomain')"
circle></el-button>
</div>
</el-form-item>
<el-form-item label="socket 合法域名">
<div v-for="(item, index) in formData.wsRequestDomain"
:key="index">
<el-input style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入socket 合法域名'
v-model="formData.wsRequestDomain[index]"> </el-input>
<el-button v-if="index===0"
size="mini"
class="btn_serve"
type="primary"
icon="el-icon-plus"
@click="addRequest('wsRequestDomain')"
circle></el-button>
<el-button v-else
size="mini"
type="danger"
class="btn_serve"
icon="el-icon-minus"
@click="delRequest(index,'wsRequestDomain')"
circle></el-button>
</div>
</el-form-item>
<el-form-item label="uploadFile 合法域名">
<div v-for="(item, index) in formData.uploadDomain"
:key="index">
<el-input style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入uploadFile 合法域名'
v-model="formData.uploadDomain[index]"> </el-input>
<el-button v-if="index===0"
size="mini"
class="btn_serve"
type="primary"
icon="el-icon-plus"
@click="addRequest('uploadDomain')"
circle></el-button>
<el-button v-else
size="mini"
type="danger"
class="btn_serve"
icon="el-icon-minus"
@click="delRequest(index,'uploadDomain')"
circle></el-button>
</div>
</el-form-item>
<el-form-item label="downloadFile 合法域名">
<div v-for="(item, index) in formData.downloadDomain"
:key="index">
<el-input style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入downloadFile 合法域名'
v-model="formData.downloadDomain[index]"> </el-input>
<el-button v-if="index===0"
size="mini"
class="btn_serve"
type="primary"
icon="el-icon-plus"
@click="addRequest('downloadDomain')"
circle></el-button>
<el-button v-else
size="mini"
type="danger"
class="btn_serve"
icon="el-icon-minus"
@click="delRequest(index,'downloadDomain')"
circle></el-button>
</div>
</el-form-item>
</el-form>
<el-button v-if="index===0"
size="mini"
class="btn_serve"
type="primary"
icon="el-icon-plus"
@click="addRequest('requestDomain')"
circle></el-button>
<el-button v-else
size="mini"
class="btn_serve"
type="danger"
icon="el-icon-minus"
@click="delRequest(index,'requestDomain')"
circle></el-button>
</div>
</el-form-item>
<el-form-item label="socket 合法域名">
<div v-for="(item, index) in formData.wsRequestDomain"
:key="index">
<el-input style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入socket 合法域名'
v-model="formData.wsRequestDomain[index]"> </el-input>
<el-button v-if="index===0"
size="mini"
class="btn_serve"
type="primary"
icon="el-icon-plus"
@click="addRequest('wsRequestDomain')"
circle></el-button>
<el-button v-else
size="mini"
type="danger"
class="btn_serve"
icon="el-icon-minus"
@click="delRequest(index,'wsRequestDomain')"
circle></el-button>
</div>
</el-form-item>
<el-form-item label="uploadFile 合法域名">
<div v-for="(item, index) in formData.uploadDomain"
:key="index">
<el-input style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入uploadFile 合法域名'
v-model="formData.uploadDomain[index]"> </el-input>
<el-button v-if="index===0"
size="mini"
class="btn_serve"
type="primary"
icon="el-icon-plus"
@click="addRequest('uploadDomain')"
circle></el-button>
<el-button v-else
size="mini"
type="danger"
class="btn_serve"
icon="el-icon-minus"
@click="delRequest(index,'uploadDomain')"
circle></el-button>
</div>
</el-form-item>
<el-form-item label="downloadFile 合法域名">
<div v-for="(item, index) in formData.downloadDomain"
:key="index">
<el-input style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入downloadFile 合法域名'
v-model="formData.downloadDomain[index]"> </el-input>
<el-button v-if="index===0"
size="mini"
class="btn_serve"
type="primary"
icon="el-icon-plus"
@click="addRequest('downloadDomain')"
circle></el-button>
<el-button v-else
size="mini"
type="danger"
class="btn_serve"
icon="el-icon-minus"
@click="delRequest(index,'downloadDomain')"
circle></el-button>
</div>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="业务域名"
name="webViewD">
<el-form :inline="true"
:model="formData"
class="form"
label-width="170px">
<el-form-item label="业务域名">
<div v-for="(item, index) in formData.webViewDomain"
:key="index">
<span style="width:300px;display:block;margin-bottom:10px; float:left">{{formData.webViewDomain[index]}} </span>
</div>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
</c-dialog>
</div>
@ -137,11 +160,13 @@ export default {
customerId: '', // id
clientType: '', //
diaVisible: false,
activeName: 'service',
formData: {
requestDomain: [], // request
wsRequestDomain: [], // socket
uploadDomain: [], // uploadFile
downloadDomain: [] // downloadFile
downloadDomain: [], // downloadFile
webViewDomain: []//
}
}
},
@ -188,6 +213,9 @@ export default {
if (this.formData.downloadDomain.length === 0) {
this.formData.downloadDomain.push('')
}
if (this.formData.webViewDomain.length === 0) {
this.formData.webViewDomain.push('无')
}
this.endLoading()
},
(rspMsg, data) => {
@ -214,6 +242,7 @@ export default {
const param = {
customerId: this.customerId,
clientType: this.clientType,
action: 'set',
requestDomain: requestDomain,
wsRequestDomain: wsRequestDomain,
uploadDomain: uploadDomain,

15
epmet-oper-web/src/views/modules/productConfig/customizeFunction/CustomFun.vue

@ -166,22 +166,11 @@ export default {
},
//
addShow () {
let row = {
functionId: '',
customizedName: '',
iconLargeImg: '',
iconSmallImg: '',
shoppingStatus: '1',
functionExplain: '',
targetLink: '',
domainName: '',
fromApp: 'resi'
}
this.$refs['ref_edit'].init(row, 'A')
this.$refs['ref_edit'].init('', 'A')
},
//
editShow (row) {
this.$refs['ref_edit'].init(row, 'U')
this.$refs['ref_edit'].init(row.functionId, 'U')
},
//

98
epmet-oper-web/src/views/modules/productConfig/customizeFunction/Edit.vue

@ -3,7 +3,9 @@
:title="'修改定制功能'"
:close-on-click-modal="false"
:before-close="handleClose"
:close-on-press-escape="false">
:close-on-press-escape="false"
:width="60+'%'"
:top="'20px'">
<el-form :inline="true"
:model="dataForm"
:rules="dataRule"
@ -31,6 +33,7 @@
<el-form-item label="上架状态"
prop="shoppingStatus">
<el-select class="item_width_1"
:disabled="isApply===1"
v-model="dataForm.shoppingStatus"
placeholder="请选择"
clearable>
@ -44,6 +47,7 @@
<el-form-item label="外链地址"
prop="targetLink">
<el-input class="item_width_1"
:disabled="isApply===1"
v-model="dataForm.targetLink"
placeholder="外链地址"></el-input>
</el-form-item>
@ -73,7 +77,7 @@
:before-upload="beforeImgUpload">
<img v-if="dataForm.iconSmallImg"
:src="dataForm.iconSmallImg"
style="width:70px;height:70px"
style="width:50px;height:50px"
class="function-icon">
<i v-else
class="el-icon-plus avatar-uploader-icon"></i>
@ -82,20 +86,21 @@
<el-form-item class="block"
label="业务域名">
<div v-for="(item, index) in dataForm.domainNameList"
<div v-for="(item, index) in domainNameList"
:key="index">
<el-input style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入uploadFile 合法域名'
v-model="dataForm.domainNameList[index]"> </el-input>
<el-input :disabled="isApply===1"
style="width:300px;display:block;margin-bottom:10px; float:left"
placeholder='请输入业务域名'
v-model="domainNameList[index]"> </el-input>
<el-button v-if="index===0"
<el-button v-if="index===0&&isApply===0"
size="mini"
class="btn_serve"
type="primary"
icon="el-icon-plus"
@click="addRequest()"
circle></el-button>
<el-button v-else
<el-button v-if="index!==0&&isApply===0"
size="mini"
type="danger"
class="btn_serve"
@ -107,16 +112,6 @@
</el-form-item>
<!-- <el-form-item class="block"
label="业务域名"
prop="domainName">
<el-input class="item_width_2"
v-model="dataForm.domainName"
placeholder="业务域名"
type="textarea"></el-input>
</el-form-item>
<div slot="tip"
class="el-upload__tip">可写多个;分隔</div> -->
<el-form-item class="block"
label="功能说明"
prop="functionExplain">
@ -144,6 +139,7 @@ export default {
return {
visible: false,
type: '', // A/U
functionId: '', // id
dataForm: {
functionId: '',
functionName: '',
@ -154,9 +150,10 @@ export default {
functionExplain: '',
targetLink: '',
domainName: '',
domainNameList: [],
fromApp: 'resi'
},
domainNameList: [],
isApply: 0,//
uploadUlr: window.SITE_CONFIG['apiURL'] + '/oss/file/function/upload',
fromAppList: [
{
@ -209,26 +206,55 @@ export default {
}
},
methods: {
init (dataForm, type) {
init (functionId, type) {
this.type = type
this.visible = true
// this.dataForm=dataForm
this.$nextTick(() => {
dataForm.functionName = dataForm.customizedName
if (dataForm.domainName === '') {
dataForm.domainNameList.push('')
} else {
dataForm.domainNameList = dataForm.domainName.split(';')
this.functionId = functionId
if (type === 'A') {
this.dataForm = {
functionId: '',
functionName: '',
customizedName: '',
iconLargeImg: '',
iconSmallImg: '',
shoppingStatus: '1',
functionExplain: '',
targetLink: '',
domainName: '',
fromApp: 'resi'
}
Object.assign(this.dataForm, dataForm)
})
this.domainNameList = ['']
this.isApply = 0
} else {
this.loadFormData()
}
},
addRequest () {
this.dataForm.domainNameList.push('')
// eslint-disable-next-line
// debugger
this.domainNameList.push('')
},
delRequest (index) {
this.dataForm.domainNameList.splice(index, 1)
this.domainNameList.splice(index, 1)
},
loadFormData () {
// const url='https://nei.netease.com/api/apimock-v2/e3b1d0eb88e905f6c7ee559b2d6bb7ad/oper/customize/functioncustomized/getfunctioncustomized'
const url = '/oper/customize/functioncustomized/getfunctioncustomized'
let _data = {
functionId: this.functionId
}
window.app.ajax.post(url, _data,
(data, rspMsg) => {
this.dataForm = data
// this.dataForm.domainNameList = this.dataForm.domainName.split(';')
this.domainNameList = this.dataForm.domainName.split(';')
this.isApply = data.isApply
},
(rspMsg, data) => {
this.endLoading()
this.$message.error(rspMsg)
})
},
//
@ -273,9 +299,9 @@ export default {
// eslint-disable-next-line
// debugger
let domainName = ''
for (let i = 0; i < this.dataForm.domainNameList.length; i++) {
if (this.dataForm.domainNameList[i] !== '') {
domainName = domainName + this.dataForm.domainNameList[i] + ';'
for (let i = 0; i < this.domainNameList.length; i++) {
if (this.domainNameList[i] !== '') {
domainName = domainName + this.domainNameList[i] + ';'
}
}
domainName = domainName.substring(0, domainName.length - 1)
@ -337,7 +363,7 @@ export default {
width: 300px;
}
.item_width_2 {
width: 700px;
width: 500px;
}
.block {
display: block;

68
epmet-oper-web/src/views/pages/login.vue

@ -7,51 +7,81 @@
</div>
<div class="login-body">
<h3 class="login-title">{{ $t('login.title') }}</h3>
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" status-icon>
<el-form :model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
status-icon>
<el-form-item>
<el-select v-model="$i18n.locale" class="w-percent-100">
<el-option v-for="(val, key) in i18nMessages" :key="key" :label="val._lang" :value="key"></el-option>
<el-select v-model="$i18n.locale"
class="w-percent-100">
<el-option v-for="(val, key) in i18nMessages"
:key="key"
:label="val._lang"
:value="key"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="phone">
<el-input v-model="dataForm.phone" placeholder="手机号">
<span slot="prefix" class="el-input__icon">
<svg class="icon-svg" aria-hidden="true"><use xlink:href="#icon-user"></use></svg>
<el-input v-model="dataForm.phone"
placeholder="手机号">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-user"></use>
</svg>
</span>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input v-model="dataForm.password" type="password" :placeholder="$t('login.password')">
<span slot="prefix" class="el-input__icon">
<svg class="icon-svg" aria-hidden="true"><use xlink:href="#icon-lock"></use></svg>
<el-input v-model="dataForm.password"
type="password"
:placeholder="$t('login.password')">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-lock"></use>
</svg>
</span>
</el-input>
</el-form-item>
<el-form-item prop="captcha">
<el-row :gutter="20">
<el-col :span="14">
<el-input v-model="dataForm.captcha" :placeholder="$t('login.captcha')">
<span slot="prefix" class="el-input__icon">
<svg class="icon-svg" aria-hidden="true"><use xlink:href="#icon-safetycertificate"></use></svg>
<el-input v-model="dataForm.captcha"
:placeholder="$t('login.captcha')">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-safetycertificate"></use>
</svg>
</span>
</el-input>
</el-col>
<el-col :span="10" class="login-captcha">
<img :src="captchaPath" @click="getCaptcha()">
<el-col :span="10"
class="login-captcha">
<img :src="captchaPath"
@click="getCaptcha()">
</el-col>
</el-row>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dataFormSubmitHandle()" class="w-percent-100">{{ $t('login.title') }}</el-button>
<el-button type="primary"
@click="dataFormSubmitHandle()"
class="w-percent-100">{{ $t('login.title') }}</el-button>
</el-form-item>
</el-form>
</div>
<div class="login-footer">
<p>
<a href="https://demo.cloud.renren.io/renren-cloud" target="_blank">{{ $t('login.demo') }}</a>
<a href="https://demo.cloud.renren.io/renren-cloud"
target="_blank">{{ $t('login.demo') }}</a>
</p>
<!-- 2020 © renren.io -->
<p><a href="https://www.renren.io/" target="_blank">{{ $t('login.copyright') }}</a></p>
<p><a href="https://www.renren.io/"
target="_blank">{{ $t('login.copyright') }}</a></p>
</div>
</main>
</div>
@ -104,7 +134,7 @@ export default {
this.captchaPath = `${window.SITE_CONFIG['apiURL']}/auth/login/captcha?uuid=${this.dataForm.uuid}`
},
//
dataFormSubmitHandle: debounce(function () {
dataFormSubmitHandle: debounce(function() {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
@ -116,7 +146,7 @@ export default {
}
Cookies.set('token', res.data.token)
this.$router.replace({ name: 'home' })
}).catch(() => {})
}).catch(() => { })
})
}, 1000, { 'leading': true, 'trailing': false })
}

155
epmet-oper-web/src/views/pages/loginWork.vue

@ -0,0 +1,155 @@
<template>
<div class="aui-wrapper aui-page__login">
<div class="aui-content__wrapper">WorkWorkWorkWorkWork</div>
<div class="aui-content__wrapper">
<main class="aui-content">
<div class="login-header">
<h2 class="login-brand">{{ $t('brand.lg') }}</h2>
</div>
<div class="login-body">
<h3 class="login-title">{{ $t('login.title') }}</h3>
<el-form :model="dataForm"
:rules="dataRule"
ref="dataForm"
@keyup.enter.native="dataFormSubmitHandle()"
status-icon>
<el-form-item>
<el-select v-model="$i18n.locale"
class="w-percent-100">
<el-option v-for="(val, key) in i18nMessages"
:key="key"
:label="val._lang"
:value="key"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="phone">
<el-input v-model="dataForm.phone"
placeholder="手机号">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-user"></use>
</svg>
</span>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input v-model="dataForm.password"
type="password"
:placeholder="$t('login.password')">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-lock"></use>
</svg>
</span>
</el-input>
</el-form-item>
<el-form-item prop="captcha">
<el-row :gutter="20">
<el-col :span="14">
<el-input v-model="dataForm.captcha"
:placeholder="$t('login.captcha')">
<span slot="prefix"
class="el-input__icon">
<svg class="icon-svg"
aria-hidden="true">
<use xlink:href="#icon-safetycertificate"></use>
</svg>
</span>
</el-input>
</el-col>
<el-col :span="10"
class="login-captcha">
<img :src="captchaPath"
@click="getCaptcha()">
</el-col>
</el-row>
</el-form-item>
<el-form-item>
<el-button type="primary"
@click="dataFormSubmitHandle()"
class="w-percent-100">{{ $t('login.title') }}</el-button>
</el-form-item>
</el-form>
</div>
<div class="login-footer">
<p>
<a href="https://demo.cloud.renren.io/renren-cloud"
target="_blank">{{ $t('login.demo') }}</a>
</p>
<!-- 2020 © renren.io -->
<p><a href="https://www.renren.io/"
target="_blank">{{ $t('login.copyright') }}</a></p>
</div>
</main>
</div>
</div>
</template>
<script>
import Cookies from 'js-cookie'
import debounce from 'lodash/debounce'
import { messages } from '@/i18n'
import { getUUID } from '@/utils'
export default {
data () {
return {
i18nMessages: messages,
captchaPath: '',
dataForm: {
app: 'oper',
client: 'web',
username: '',
phone: '',
password: '',
uuid: '',
captcha: ''
}
}
},
computed: {
dataRule () {
return {
phone: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
password: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
],
captcha: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
created () {
this.getCaptcha()
},
methods: {
//
getCaptcha () {
this.dataForm.uuid = getUUID()
this.captchaPath = `${window.SITE_CONFIG['apiURL']}/auth/login/captcha?uuid=${this.dataForm.uuid}`
},
//
dataFormSubmitHandle: debounce(function() {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
this.$http.post('/auth/login/operweb/loginbypassword', this.dataForm).then(({ data: res }) => {
if (res.code !== 0) {
this.getCaptcha()
return this.$message.error(res.msg)
}
Cookies.set('token', res.data.token)
this.$router.replace({ name: 'home' })
}).catch(() => { })
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>
Loading…
Cancel
Save