Commit 5cb49587 by 刘泽奇

Merge branch 'bigdata' of gitlab.gongsibao.com:jiangyong/zhichan into bigdata

parents a6a17374 3ae75610
node_modules/
\ No newline at end of file
......@@ -7,6 +7,7 @@ const logCtl = system.getObject("web.common.oplogCtl");
class OrgCtl extends CtlBase{
constructor(){
super("auth",CtlBase.getServiceName(OrgCtl));
this.compSvr=system.getObject("service.common.companySve");
}
//检查是否已经存在主要岗位
async checkMainPosition(p,q,req){
......@@ -19,6 +20,7 @@ class OrgCtl extends CtlBase{
return system.getResult(rtn);
}
async create(p,q,req){
return super.create(p,q,req);
}
async delete(p,q,req){
......@@ -28,7 +30,11 @@ class OrgCtl extends CtlBase{
return super.update(p,q,req);
}
async initOrgs(p,q,req){
var tocompany=req.session.tocompany;
var tocompany=req.session.tocompany;
var cmkey=p.comkey;
if(cmkey){
tocompany =await this.compSvr.findOne({companykey:cmkey});
}
//按照公司名称查询,是否存在节点,不存在,就创建根节点
//如果存在就按照名称查询出当前和她的字节点
var rtn=await this.service.initOrgs(tocompany,req.appid);
......
......@@ -37,6 +37,12 @@ class CompanyCtl extends CtlBase {
req.session.tocompany=cmpfind;
return system.getResult(cmpfind.apps);
}
async giveupApp(p,q,req){
var comid=p.compid;
var appid=p.appid;
var rtn=await this.service.giveupApp(comid,appid);
return system.getResult(rtn);
}
//设置当前用户选择的公司为当前公司
async settocompany(p,q,req){
p.isCurrent=true;
......@@ -52,6 +58,7 @@ class CompanyCtl extends CtlBase {
var rtntmp={
id:cmp.id,
name:cmp.name,
companykey:cmp.companykey,
description:cmp.description,
logoUrl:cmp.logoUrl,
isCurrent:cmp.usercompany.isCurrent,
......
......@@ -74,6 +74,18 @@ class AppDao extends Dao {
}
}
async findAndCountAll(qobj, t) {
if(qobj.codepath.indexOf("comapps")>=0){
var rtn={};
var comp=await this.db.models.company.findOne({where:{companykey:qobj.search.companykey}});
var apps=await comp.getApps();
rtn.results={rows:apps,count:apps.length};
rtn.aggresult={};
return rtn;
}else{
return super.findAndCountAll(qobj, t);
}
}
extraWhere(obj, w, qc, linkAttrs) {
if (obj.codepath && obj.codepath != "") {
if (obj.codepath.indexOf("pmgmyapps") > 0) {//说明是应用管理员的查询
......
......@@ -7,6 +7,39 @@ module.exports = {
"label": "paas",
"children": [
{
"code": "opcenter",
"label": "运维中心",
"icon":"fa fa-jpy",
"isSubmenu": true,
"isleft": true,
"children": [
{
"code": "opmanage", "isGroup": true, "label": "运维管理", "children": [
{
"code": "crontasks",
"label": "定时任务",
"bizCode": "crontasks",
"isMenu": true,
"bizConfig": null,
"path": "",
"isleft":true,
},
{
"code": "batchtasks",
"label": "批量任务",
"bizCode": "batchtasks",
"isMenu": true,
"bizConfig": null,
"path": "",
"isleft":true,
},
]
},
],
},
{
"code": "pmgcenter",
"label": "平台中心",
"icon":"fa fa-jpy",
......@@ -34,7 +67,8 @@ module.exports = {
"isleft":true,
},
]
],
},
],
},
......@@ -128,6 +162,33 @@ module.exports = {
"isleft":true,
},
{
"code": "comapps",
"label": "公司租用",
"bizCode": "comapps",
"isMenu": false,
"bizConfig": null,
"path": "",
"isleft":true,
},
{
"code": "comorgs",
"label": "组织结构",
"bizCode": "comorgs",
"isMenu": false,
"bizConfig": null,
"path": "",
"isleft":true,
},
{
"code": "comusers",
"label": "公司员工",
"bizCode": "comusers",
"isMenu": false,
"bizConfig": null,
"path": "",
"isleft":true,
},
{
"code": "pmgmyapps",
"label": "我的应用",
"isMenu": true,
......@@ -207,6 +268,9 @@ module.exports = {
"organization": {"title": "用户", "config": null, "path": "/organization", "comname": "organization"},
"allapps": {"title": "所有APP", "config": null, "path": "/allapps", "comname": "apps"},
"pmgmyapps": {"title": "我的APP", "config": null, "path": "/pmgmyapps", "comname": "apps"},
"comapps": {"title": "公司租用", "config": null, "path": "/comapps", "comname": "apps"},
"comorgs": {"title": "公司组织结构", "config": null, "path": "/comorgs", "comname": "comorgs"},
"comusers": {"title": "公司用户", "config": null, "path": "/comusers", "comname": "users"},
"myappinfo": {"title": "应用信息", "config": null, "path": "/myappinfo", "comname": "myappinfo"},
"cachsearches": { "title": "缓存档案", "config": null, "path": "/cachsearches", "comname": "cachsearches" },
"companyinfo": {"title": "应用信息", "config": null, "path": "/companyinfo", "comname": "companyinfo"},
......
module.exports={
"bizName":"comapps",
"list":{
columnMetaData:[
{"width":"200","label":"应用KEY","prop":"appkey","isShowTip":true,"isTmpl":false},
{"width":"100","label":"应用名称","prop":"name","isShowTip":true,"isTmpl":false},
{"width":"200","label":"应用密钥","prop":"secret","isShowTip":true,"isTmpl":false},
{"width":"200","label":"是否启用","prop":"isEnabled","isShowTip":true,"isTmpl":false},
{"width":"null","label":"操作","name":"null","isShowTip":false,"isTmpl":true,"isBtns":"true"},
]
},
"form":[
{
"title":"应用控制",
"colnum":1,
"ctls":[
{"type":"switch","label":"是否启用","prop":"isEnabled","acText":"启用","inactText":"停用","placeHolder":"","style":""},
{"type":"switch","label":"是否私有","prop":"isPublish","acText":"否","inactText":"是","placeHolder":"","style":""},
{ "type": "select", "label": "应用类型", "dicKey": "app_type", "prop": "appType", "labelField": "label", "valueField": "value", "placeHolder": "请选择支付类型", "style": "" },
]
},
{
"title":"概要介绍",
"colnum":1,
"ctls":[
{ "type": "textarea", "label": "简介", "prop": "description", "placeHolder": "请输入产品简介", "style": "width:600px" }
]
},
{
"title":"基本信息",
"colnum":3,
"ctls":[
{"type":"input","label":"应用KEY","prop":"appkey","disabled":true,"placeHolder":"","style":""},
{"type":"input","label":"应用名称","prop":"name","placeHolder":"应用名称","style":""},
{"type":"input","label":"应用密钥","prop":"secret","disabled":false,"placeHolder":"","style":""},
{"type":"input","label":"域名","prop":"domainName","disabled":false,"placeHolder":"","style":""},
{"type":"input","label":"首页","prop":"homePage","disabled":false,"placeHolder":"","style":""},
{"type":"input","label":"认证URL","prop":"authUrl","disabled":false,"placeHolder":"","style":""},
{"type":"input","label":"文档URL","prop":"docUrl","disabled":false,"placeHolder":"","style":""},
{"type":"input","label":"配置URL","prop":"uiconfigUrl","disabled":false,"placeHolder":"","style":""},
{"type":"input","label":"缓存操作URL","prop":"opCacheUrl","disabled":false,"placeHolder":"","style":""},
{"type":"input","label":"接受API调用计数URL","prop":"notifyCacheCountUrl","disabled":false,"placeHolder":"","style":""},
]
},
{
"title":"个性化信息",
"colnum":2,
"ctls":[
{"type":"upload","label":"logo","prop":"logoUrl","disabled":false,"placeHolder":"","style":""},
{"type":"upload","label":"背景图","prop":"bkimageUrl","placeHolder":"应用名称","style":""},
{"type":"upload","label":"缩略图","prop":"showimgUrl","disabled":false,"placeHolder":"","style":"width:100px;height:100px"},
{"type":"upload","label":"细节图","prop":"domainName","disabled":false,"placeHolder":"","style":""},
]
},
],
"search":[
{
"title":"基本查询",
ctls:[
{"type":"input","label":"应用名称","prop":"name","placeHolder":"应用名称","style":""},
]
},
],
"auth":{
"add":[
],
"edit":[
{"icon":"el-icon-edit","title":"弃租","type":"default","key":"giveup","isInRow":true},
],
"delete":[
],
"common":[
],
}
}
module.exports={
"list":{
columnMetaData:[
]
},
"form":[
{
"title":"基本信息",
"colnum":1,
ctls:[
{"type":"input","label":"编码","prop":"code","placeHolder":"输入组织编码","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
{"type":"input","label":"名称","prop":"name","placeHolder":"输入组织名称","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
// {"type":"switch","label":"是否岗位","targetprop":"Roles,isMain","prop":"isPosition","acText":"是","inactText":"否","placeHolder":"","style":""},
// {"type":"select","refModel":"auth.role","defaultHide":true,"isMulti":true,"label":"角色","prop":"Roles","labelField":"name","valueField":"id","style":""},
// {"type":"switch","label":"是否负责人岗","defaultHide":true,"prop":"isMain","acText":"是","inactText":"否","placeHolder":"","style":""},
{"type":"btn","label":"保存","prop":"btnLogin","placeHolder":"保存","style":{"width":"150px","margin-left":"100px","margin-top":"20px"},"face":"warning"},
]
}
],
"search":[
],
"auth":{
"add":[
{"icon":"el-icon-plus","title":"新增","type":"default","key":"new","isOnGrid":true},
{"icon":"el-icon-save","title":"保存","type":"default","key":"save","isOnForm":true},
],
"edit":[
{"icon":"el-icon-edit","title":"修改","type":"default","key":"edit","isInRow":true},
{"icon":"el-icon-edit","title":"数据授权","type":"default","key":"datapriv","isInRow":true},
],
"delete":[
{"icon":"el-icon-remove","title":"删除","type":"default","key":"delete","isInRow":true},
{"icon":"el-icon-edit","title":"停用","type":"default","key":"stopUser","isInRow":true,"boolProp":"isEnabled","falseText":"启用"},
],
"common":[
{"icon":"el-icon-cancel","title":"取消","type":"default","key":"cancel","isOnForm":true},
],
}
}
......@@ -35,6 +35,8 @@ module.exports={
],
"edit":[
{"icon":"el-icon-edit","title":"设置为当前","type":"default","key":"setcurrent","isInRow":true},
{"icon":"el-icon-edit","title":"组织结构","type":"default","key":"comorgs","isInRow":true},
{"icon":"el-icon-edit","title":"租用列表","type":"default","key":"comapps","isInRow":true},
],
"delete":[
{"icon":"el-icon-remove","title":"删除","type":"default","key":"delete","isInRow":true},
......
module.exports={
"list":{
columnMetaData:[
{"width":"100","label":"应用","prop":"app.name","isShowTip":true,"isTmpl":false},
{"width":"100","label":"昵称","prop":"nickName","isShowTip":true,"isTmpl":false},
{"width":"100","label":"登录账号","prop":"userName","isShowTip":true,"isTmpl":false},
{"width":"100","label":"角色","prop":"Roles","isShowTip":true,"isTmpl":false},
{"width":"100","label":"管理员","prop":"isAdmin","isShowTip":true,"isTmpl":false},
{"width":"80","label":"状态","prop":"isEnabled","isShowTip":true,"isTmpl":false},
{"width":"null","label":"操作","name":"null","isShowTip":false,"isTmpl":true,"isBtns":true},
]
},
"form":[
{
"title":"控制信息",
ctls:[
{"type":"switch","prop":"isAdmin","acText":"是管理员","inactText":"否","placeHolder":"请输入单次使用消耗的宝币数","style":""},
// {"type":"select","refModel":"pmproduct","isMulti":false,"label":"所属产品","prop":"pmproduct_id","labelField":"name","valueField":"id","style":""},
]
},
{
"title":"基本信息",
ctls:[
{"type":"input","label":"账号","prop":"userName","placeHolder":"登录账号","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
{"type":"input","label":"昵称","prop":"nickName","placeHolder":"昵称","style":"",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
{"type":"input","label":"电话","prop":"mobile","placeHolder":"请输入电话","style":"",rules:[ { "validator":"validatex","trigger": 'blur' },{ "required": true, "message": ' ', "trigger": 'blur' },]},
// {"type":"select","refModel":"auth.role","isMulti":true,"label":"角色","prop":"roles","labelField":"name","valueField":"id","style":""},
]
}
],
"search":[
{
"title":"基本查询",
ctls:[
{"type":"input","label":"昵称","prop":"nickName","placeHolder":"请输入昵称","style":""},
]
},
],
"auth":{
"add":[
// {"icon":"el-icon-plus","title":"新增","type":"default","key":"new","isOnGrid":true},
// {"icon":"el-icon-save","title":"保存","type":"default","key":"save","isOnForm":true},
],
"edit":[
// {"icon":"el-icon-edit","title":"修改","type":"default","key":"edit","isInRow":true},
],
"delete":[
// {"icon":"el-icon-remove","title":"删除","type":"default","key":"delete","isInRow":true},
// {"icon":"el-icon-edit","title":"停用","type":"default","key":"stopUser","isInRow":true,"boolProp":"isEnabled","falseText":"启用"},
],
"common":[
{"icon":"el-icon-cancel","title":"取消","type":"default","key":"cancel","isOnForm":true},
],
}
}
......@@ -34,6 +34,7 @@ module.exports = (db, DataTypes) => {
type:DataTypes.BOOLEAN,
defaultValue: false
},
wxopenid:DataTypes.STRING,
app_id:DataTypes.INTEGER,
account_id:DataTypes.INTEGER,
isEnabled:{
......
......@@ -34,6 +34,7 @@ class OrgService extends ServiceBase{
}
async update(p,q,req){
var self=this;
var cmkey=p.comkey;//如果是来自租户界面的修改
return this.db.transaction(async function (t) {
p.isLeaf=p.isPosition;
var orgupdate=await self.dao.model.findOne({where:{id:p.id},transaction:t});
......@@ -48,7 +49,7 @@ class OrgService extends ServiceBase{
await ud.save({transaction:t});
}
//}
if(p.Roles){
if(p.Roles && !cmkey){//如果不是来自租户界面的修改
var roles=await self.db.models.role.findAll({where:{id:{[self.db.Op.in]:p.Roles}}});
await orgupdate.setRoles(roles,{transaction:t});
//同时要给这个岗位下的user,更新角色 todo
......@@ -110,12 +111,20 @@ class OrgService extends ServiceBase{
}
async create(p,q,req){
var self=this;
var cmkey=p.comkey;
return this.db.transaction(async function (t) {
if(cmkey){
var tmpcompany =await self.db.models.company.findOne({where:{companykey:cmkey},transaction:t});
p.company_id=tmpcompany.id;
}
var roles=await self.db.models.role.findAll({where:{id:{[self.db.Op.in]:p.Roles}}});
p.isLeaf=p.isPosition;
p.app_id=req.appid;
p.app_id=null;
var orgnew=await self.dao.model.create(p,{transaction:t});
await orgnew.setRoles(roles,{transaction:t});
if(roles && roles.length>0){
await orgnew.setRoles(roles,{transaction:t});
}
var orgparent=await self.dao.model.findOne({
order:[["code","ASC"]],
where:{id:orgnew.org_id},transaction:t,
......@@ -152,7 +161,8 @@ class OrgService extends ServiceBase{
return this.db.transaction(async function (t) {
var org=await self.dao.model.findOne({
order:[["code","ASC"]],
where:{name:company.name,company_id:company.id,app_id:appid},transaction:t,
//where:{name:company.name,company_id:company.id,app_id:appid},transaction:t,
where:{name:company.name,company_id:company.id},transaction:t,
include:[
{model:self.db.models.org,as:"orgs", order:[["code","ASC"]],include:[
{model:self.db.models.org,as:"orgs",order:[["code","ASC"]],include:[
......@@ -173,7 +183,7 @@ class OrgService extends ServiceBase{
isMain:false,
orgpath:"/",
company_id:company.id,
app_id:appid
app_id:null,
},{transaction:t});
return root;
}
......
......@@ -285,6 +285,20 @@ class UserService extends ServiceBase {
}
});
}
async modifyPassword(p) {
p.password = await super.getEncryptStr(p.password);
var setObj = {
password: p.password
};
var whereObj = {
where: {account_id: p.account_id}
};
await this.dao.updateByWhere(setObj, whereObj);
return system.getResultSuccess();
}
async getUserByUserNamePwdForApi(u) {
//勇于从别的应用中,点击页面连接,跳转到平台应用中进行管理
u.password = await super.getEncryptStr(u.password);
......@@ -309,6 +323,10 @@ class UserService extends ServiceBase {
}
return user;
}
async checkWxBind(u){
var user = await this.dao.model.findOne({where: {wxopenid: u.openid, app_id: u.app_id}});
return user;
}
async getUserByUserNamePwd(u) {
//勇于从别的应用中,点击页面连接,跳转到平台应用中进行管理
if(!u.isNavto){
......@@ -337,6 +355,20 @@ class UserService extends ServiceBase {
}
return user;
}
async wxBind(u) {
var self=this;
return this.db.transaction(async function (t) {
var user = await self.dao.model.findOne({where: { mobile: u.mobile,app_id: u.app_id }});
if(!user){
return null;
}else{
user.wxopenid=u.openid;
await user.save();
return user;
}
});
}
async getUserByUserMobile(u) {
//勇于从别的应用中,点击页面连接,跳转到平台应用中进行管理
var user = await this.dao.model.findOne({
......
......@@ -34,6 +34,22 @@ class CompanyService extends ServiceBase {
return rtn;
});
}
async giveupApp(comid,appid){
var self=this;
return this.db.transaction(async function (t){
//检查当前company_id下面是否有用户存在,如果已经存在就不要删除了
var c=await self.db.models.user.count({where:{owner_id:comid}});
if(c>1){
return null;
}else{
if(c==1){
await self.db.models.user.destroy({where:{owner_id:comid},force: true});
}
await self.db.models.companyapp.destroy({where:{company_id:comid,app_id:appid}});
return {};
}
});
}
async buyApp(p,cmid,user){
var self=this;
var appid=p.id;
......
# apiVersion: v1
# kind: Service
# metadata:
# name: konga
# spec:
# type: NodePort
# ports:
# - name: konga
# port: 1337
# targetPort: 1337
# protocol: TCP
# selector:
# app: konga
# ---
# apiVersion: extensions/v1beta1
# kind: Deployment
# metadata:
# name: konga
# spec:
# replicas: 1
# template:
# metadata:
# labels:
# name: konga
# app: konga
# spec:
# containers:
# - name: konga
# image: pantsel/konga:0.14.1
# env:
# - name: DB_DATABASE
# value: k8s_konga
# - name: DB_USER
# valueFrom:
# configMapKeyRef:
# name: zhichan-config
# key: DB_USER
# - name: DB_PASSWORD
# valueFrom:
# configMapKeyRef:
# name: zhichan-config
# key: DB_PWD
# - name: DB_PORT
# valueFrom:
# configMapKeyRef:
# name: zhichan-config
# key: DB_PORT
# - name: DB_ADAPTER
# value: mysql
# - name: DB_HOST
# valueFrom:
# configMapKeyRef:
# name: zhichan-config
# key: DB_HOST
# - name: NODE_ENV
# value: production
# - name: TOKEN_SECRET
# value: testtoken
# ports:
# - name: konga
# containerPort: 1337
# protocol: TCP
apiVersion: v1
kind: Service
metadata:
name: kong-dashboard
namespace: kong
spec:
type: NodePort
ports:
- name: kong-dashboard
port: 80
targetPort: 8080
protocol: TCP
selector:
app: dashboard
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: dashboard
namespace: kong
spec:
template:
metadata:
labels:
name: dashboard
app: dashboard
spec:
containers:
- name: kong-dashboard
args:
- start
- --kong-url http://kong-ingress-controller:8001
- --basic-auth admin=admin
image: pgbi/kong-dashboard:latest
ports:
- name: http
containerPort: 8080
protocol: TCP
apiVersion: v1
kind: Service
metadata:
name: kong-admin
namespace: kong
spec:
ports:
- name: kongadmin
port: 8001
protocol: TCP
targetPort: 8001
selector:
app: ingress-kong
curl -v -H "Host: webshell.com" 123.57.217.203:1880
......@@ -9,6 +9,7 @@
deleteMethod="delete"
initMethod="initNewInstance"
isDataAuto="true"
isLazy="true"
:headStyle="headStyle"
:colFormatter="onColFormater"
:isSingleSelect="isSingleSelect"
......
......@@ -16,6 +16,7 @@
return callback();
};
return {
selCompanyid:'',
bizCode:'',
currow:null,
adminExist:false,
......@@ -46,14 +47,21 @@
}
},
mounted:function(){
var cmpid=this.$router.history.current.query.compid;
this.selCompanyid=cmpid;
this.$refs.cgrid.linkInInitQuery("companykey",cmpid);
},
created:function(){
if(this.codePath.indexOf("myapps")>=0){
this.bizCode="pmgmyapps";
}else{
}
if(this.codePath.indexOf("allapps")>=0){
this.bizCode="allapps";
}
if(this.codePath.indexOf("comapps")>=0){
this.bizCode="comapps";
}
},
methods:{
async fetchvcode(){
......@@ -149,6 +157,18 @@
path:"/appconfig"
});
}
if(key=="giveup"){
var d= await this.$root.postReq("/web/common/companyCtl/giveupApp", {compid: this.selCompanyid,appid:row.id});
if(d.status==0){
this.$refs.cgrid.linkInInitQuery("company_id",this.selCompanyid);
}else{
this.$message({
type: 'warning',
message: '应用已经产生数据,不能解除应用'
});
}
}
this.currow=row;
}
......
<gsb-pagecard class="organization">
<div slot="content">
<gsb-tree
ref="orgtree"
@initheight="initheight"
@initdata="initdata"
node_title="组织信息"
bizCode="comorgs"
@loadforminfo="loadforminfo"
:fetchNodeData="fetchtreedata"
children_name="orgs"
label_name="name"
leaf_name="isLeaf"
@remove="remove"
@onsel="onsel"
>
<el-tag>当前选择:{{currentPath?currentPath:"/"}}</el-tag>
<gsb-grid2
ref="userGrid"
bizCode="comusers"
spaceHeight="100"
groupName="auth"
modelName="user"
listMethod="findAndCountAll"
deleteMethod="delete"
initMethod="initNewInstance"
isDataAuto="true"
:headStyle="headStyle"
:colFormatter="onColFormater"
:isSingleSelect="isSingleSelect"
@rowclick="onRowClick"
:validateformmethod="validateformmethod"
:beforesave="beforesave">
</gsb-grid2>
<gsb-form ref="orgform" @btnclick="saveclick" style="width:500px" @onswitchchange="switchchange" slot="treeform" :metaData="formMetaData"></gsb-form>
</gsb-tree>
<el-dialog
title="岗位变更"
:visible.sync="positonChange"
width="350px"
center>
<gsb-select cssStyle="width:300px" refModel="auth.org" modelName="org" v-model="orgidchageto" labelField="orgpath" :refwhere2="refwhereorg" valueField="id"></gsb-select>
<span slot="footer" class="dialog-footer">
<el-button @click="positonChange = false">取 消</el-button>
<el-button type="primary" @click="changeok">确 定</el-button>
</span>
</el-dialog>
</div>
</gsb-pagecard>
\ No newline at end of file
......@@ -41,6 +41,13 @@
}
}
if(key=="comapps"){
this.$router.push({path:"/comapps",query:{"compid":row.companykey}});
}
if(key=="comorgs"){
this.$router.push({path:"/comorgs",query:{"compid":row.companykey}});
}
},
onColFormater(row,column,cellvalue,index){
if(column.property=="isSystem"){
......
......@@ -18,7 +18,7 @@
<div v-for="(item,key) in myapps" :key="key" class="app-child" :style="bgimg(item)" @click="goapplogin(item)" >
<img :src="item.logoUrl" alt="">
<div>{{item.name}}</div>
<span @click.stop="systemsetting(item)" v-if="currentUser && currentUser.roles.indexOf(\'common\')>=0" style="position: absolute;left:5px;top: 10px;font-size:20px;color:red;padding: 5px;cursor: pointer;"><i class="el-icon-setting"></i></span>
<span @click.stop="systemsetting(item)" v-if="currentUser && currentUser.roles.indexOf(\'common\')>=0" style="position: absolute;left:5px;top: 10px;font-size:20px;color:#fff;padding: 5px;cursor: pointer;"><i class="el-icon-setting"></i></span>
</div>
</div>
</div>
\ No newline at end of file
......@@ -12,7 +12,7 @@
"colnum":1,
ctls:[
{"type":"input","label":"账号","prop":"userName","placeHolder":"请输入登录账号","style":"width:230px",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },,]},
{"type":"input","label":"密码","prop":"password","placeHolder":"请输入登录密码","style":"width:230px",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
{"type":"password","label":"密码","prop":"password","placeHolder":"请输入登录密码","style":"width:230px",rules:[ { "required": true, "message": ' ', "trigger": 'blur' },]},
{"type":"btn","label":"开始登录","prop":"btnLogin","placeHolder":"请输入手机号","style":{"width":"150px","margin-left":"45px","margin-top":"20px"},"face":"warning"},
]
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment