Commit f24d5daa authored by hsz's avatar hsz
parents 5af2e343 bec5894a
...@@ -6626,6 +6626,11 @@ ...@@ -6626,6 +6626,11 @@
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
}, },
"iscroll": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/iscroll/-/iscroll-5.2.0.tgz",
"integrity": "sha1-1RMwcIi1slpPiTr0dIBEaEgYKcg="
},
"isexe": { "isexe": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
...@@ -6766,6 +6771,32 @@ ...@@ -6766,6 +6771,32 @@
"resolved": "https://registry.npmjs.org/jstoxml/-/jstoxml-0.2.4.tgz", "resolved": "https://registry.npmjs.org/jstoxml/-/jstoxml-0.2.4.tgz",
"integrity": "sha1-/z+2eFaIOgMpU8fOjOdIYhD0hEc=" "integrity": "sha1-/z+2eFaIOgMpU8fOjOdIYhD0hEc="
}, },
"jwchat": {
"version": "0.2.48",
"resolved": "https://registry.npmjs.org/jwchat/-/jwchat-0.2.48.tgz",
"integrity": "sha512-NZJ2KtFF70+gHbFKdqqufFRcrhQP++euMNxyAD17YJLXhHF3DFcNvUAW3sh1NmXwJpGDN8jDrslgCMXocRd1xg==",
"requires": {
"element-ui": "^2.13.1",
"iscroll": "^5.2.0",
"vue": "^2.6.11",
"wechat-emoji-parser": "^1.1.0"
},
"dependencies": {
"element-ui": {
"version": "2.13.2",
"resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.2.tgz",
"integrity": "sha512-r761DRPssMPKDiJZWFlG+4e4vr0cRG/atKr3Eqr8Xi0tQMNbtmYU1QXvFnKiFPFFGkgJ6zS6ASkG+sellcoHlQ==",
"requires": {
"async-validator": "~1.8.1",
"babel-helper-vue-jsx-merge-props": "^2.0.0",
"deepmerge": "^1.2.0",
"normalize-wheel": "^1.0.1",
"resize-observer-polyfill": "^1.5.0",
"throttle-debounce": "^1.0.1"
}
}
}
},
"killable": { "killable": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
...@@ -11644,6 +11675,11 @@ ...@@ -11644,6 +11675,11 @@
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
"dev": true "dev": true
}, },
"wechat-emoji-parser": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/wechat-emoji-parser/-/wechat-emoji-parser-1.1.1.tgz",
"integrity": "sha512-FOB3KIhyEYmYledm/gnyHitL+sq1SGvDPpUE1AYxougmcd1/ibGHld/J+GDC+8DtgxsmGpY5f30gTFX0zwtTJQ=="
},
"which": { "which": {
"version": "1.3.1", "version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
"axios": "^0.18.0", "axios": "^0.18.0",
"babel-polyfill": "^6.26.0", "babel-polyfill": "^6.26.0",
"element-ui": "^2.11.0", "element-ui": "^2.11.0",
"jwchat": "^0.2.48",
"mavon-editor": "^2.6.17", "mavon-editor": "^2.6.17",
"vue": "^2.6.10", "vue": "^2.6.10",
"vue-chat-scroll": "^1.4.0", "vue-chat-scroll": "^1.4.0",
......
...@@ -21,6 +21,10 @@ Vue.use(VueChatScroll) ...@@ -21,6 +21,10 @@ Vue.use(VueChatScroll)
// 按钮6S后可以点击 // 按钮6S后可以点击
import preventClick from '@utils/clickStatefrom' // 根据自己的路径 import preventClick from '@utils/clickStatefrom' // 根据自己的路径
Vue.use(preventClick) Vue.use(preventClick)
// 聊天
import Chat from 'jwchat';
// import 'jwchat/lib/JwChat.css';
Vue.use(Chat)
Vue.config.productionTip = false; Vue.config.productionTip = false;
Vue.use(VueI18n); Vue.use(VueI18n);
......
<template> <template>
<div> <div>
<div class="content"> <div class="content">
<upload @onsuccess="get"></upload> <JwChat :taleList="list" scrollType="norell" :config="config" @enter="bindEnter" v-model="inputMsg" :toolConfig="tool">
</JwChat>
<div @click="up">上传</div> <div @click="up">上传</div>
<singleUpload :limit="1" tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..." @input="getfile"></singleUpload> <singleUpload :limit="1" tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..." @input="getfile"></singleUpload>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { autodeploy} from '@api/common/list' import {
import imgupload from '@components/Upload/imgUpload.vue' autodeploy
import upload from '@components/Upload/newUpload.vue' } from '@api/common/list'
import singleUpload from '@components/Upload/Upload.vue' import imgupload from '@components/Upload/imgUpload.vue'
export default { import upload from '@components/Upload/newUpload.vue'
import singleUpload from '@components/Upload/Upload.vue'
export default {
components: { components: {
upload, upload,
imgupload, imgupload,
...@@ -21,13 +25,78 @@ export default { ...@@ -21,13 +25,78 @@ export default {
}, },
data() { data() {
return { return {
inputMsg: '',
config: {
historyConfig: {
tip: '查看更多'
}
},
list: [{
"date": "2020/04/25 21:19:07",
"text": {
"text": "起床不"
},
"mine": false,
"name": "留恋人间不羡仙",
"img": ""
},
{
"date": "2020/04/25 21:19:07",
"text": {
"text": "11"
},
"mine": false,
"name": "只盼流星不盼雨",
"img": ""
},
{
"date": "2020/04/25 21:19:07",
"text": {
"text": "111"
},
"mine": false,
"name": "只盼流星不盼雨",
"img": ""
},
{
"date": "2020/04/16 21:19:07",
"text": {
"text": "222"
},
"mine": true,
"name": "JwChat",
"img": ""
},
],
tool: {
show: [''],
callback: this.toolEvent,
showEmoji: true,
},
} }
}, },
methods: { methods: {
bindEnter() {
getfile(val){ const msg = this.inputMsg
if (!msg) return;
const msgObj = {
"date": "2020/05/20 23:19:07",
"text": {
"text": msg
},
"mine": true,
"name": "JwChat",
"img": ""
}
this.list.push(msgObj)
},
toolEvent(type) {
console.log('tools', type)
},
getfile(val) {
console.log(val) console.log(val)
}, },
async up() { async up() {
try { try {
const { const {
...@@ -40,7 +109,7 @@ export default { ...@@ -40,7 +109,7 @@ export default {
} }
} }
} }
</script> </script>
<style scoped> <style scoped>
...@@ -48,6 +48,10 @@ ...@@ -48,6 +48,10 @@
</div> </div>
<!-- 在线对话 --> <!-- 在线对话 -->
<div class="dialogue" style="margin-top: 30px;" v-show="dialogue"> <div class="dialogue" style="margin-top: 30px;" v-show="dialogue">
<JwChat :taleList="dialogueList" scrollType @enter="bindEnter" v-model="content" :toolConfig="tool" >
</JwChat>
</div>
<!--
<ul class="dialogueList" v-chat-scroll> <ul class="dialogueList" v-chat-scroll>
<li v-for="(item,index) in dialogueList" :key="index" :class="myId==item.userId?'flex-left':'flex-right'"> <li v-for="(item,index) in dialogueList" :key="index" :class="myId==item.userId?'flex-left':'flex-right'">
<div> <div>
...@@ -62,7 +66,7 @@ ...@@ -62,7 +66,7 @@
</ul> </ul>
<el-input placeholder="请输入内容" v-model="content" clearable @keyup.enter.native="send" maxlength="30"> <el-input placeholder="请输入内容" v-model="content" clearable @keyup.enter.native="send" maxlength="30">
</el-input> </el-input>
</div> </div> -->
</div> </div>
<!-- 最下面一栏 --> <!-- 最下面一栏 -->
<div class="flex-between buttons"> <div class="flex-between buttons">
...@@ -217,6 +221,11 @@ ...@@ -217,6 +221,11 @@
}, },
data() { data() {
return { return {
tool: {
show: [''],
callback: this.toolEvent,
showEmoji: true,
},
issueTable: false, issueTable: false,
openStatus: '', openStatus: '',
faildetail: "", faildetail: "",
...@@ -325,12 +334,12 @@ ...@@ -325,12 +334,12 @@
}, 5000); }, 5000);
}, },
methods: { methods: {
openInfo(){ openInfo() {
this.isopenInfo=true this.isopenInfo = true
this.getopenInfo(); this.getopenInfo();
}, },
openInfo1(){ openInfo1() {
this.isopenInfo1=true this.isopenInfo1 = true
this.getopenInfo(); this.getopenInfo();
}, },
// 下发 // 下发
...@@ -348,7 +357,7 @@ ...@@ -348,7 +357,7 @@
type: 'success', type: 'success',
duration: 1500 duration: 1500
}) })
this.isopenInfo1=false this.isopenInfo1 = false
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e)
...@@ -613,11 +622,21 @@ ...@@ -613,11 +622,21 @@
let data = JSON.parse(event.data); let data = JSON.parse(event.data);
console.log(data) console.log(data)
if (data.type == 1) { if (data.type == 1) {
console.log("自己发的") if(data.userId==this.myId){
if (data.userId == this.myId) { data.mine=true
this.content = "" }else{
data.mine=false
} }
this.dialogueList.push(data) const msgObj = {
"date":data.time ,
"text": {
"text": data.chatContent
},
"mine": data.mine,
"name": data.name,
"img": "@static/images/tou.jpg"
}
this.dialogueList.push(msgObj)
} else { } else {
this.halList.push(data) this.halList.push(data)
} }
...@@ -634,14 +653,11 @@ ...@@ -634,14 +653,11 @@
this.websocket.close() this.websocket.close()
} }
}, },
send() { bindEnter() {
let content = this.content; const content = this.content
if (content.split(" ").join("").length == 0) { if (!content) return;
this.$message.error("请输入内容")
} else {
this.websocket.send(content) this.websocket.send(content)
} }
}
}, },
// watch: { // watch: {
// chatlog() { // chatlog() {
...@@ -679,6 +695,8 @@ ...@@ -679,6 +695,8 @@
position: absolute; position: absolute;
top: 10%; top: 10%;
right: 10%; right: 10%;
border:1px solid #CCCCCC;
padding:10px
} }
......
...@@ -292,16 +292,16 @@ export default { ...@@ -292,16 +292,16 @@ export default {
}, },
{ {
label: '联系人', label: '联系人',
prop: 'legalPersonName' prop: 'userName'
}, },
{ {
label: '手机号', label: '手机号',
prop: 'legalPersonPhone' prop: 'phonenumber'
}, },
{ {
label: '邮件', label: '邮件',
prop: 'legalPersonEmail' prop: 'email'
}, },
{ {
slot: 'operate' slot: 'operate'
...@@ -552,16 +552,17 @@ export default { ...@@ -552,16 +552,17 @@ export default {
}, },
// 邀请状态下选择供应商 // 邀请状态下选择供应商
choice(row) { choice(row) {
let indexof = false let list=[]
if (this.ruleForm.companyVOList.length > 0) { if (this.ruleForm.companyVOList.length > 0) {
for (let item of this.ruleForm.companyVOList) { for (let item of this.ruleForm.companyVOList) {
if (row.id === item.id) { list.push(item.companyId)
indexof = true
} }
} let indexof=list.indexOf(row.companyId)
if (!indexof) { if (indexof==-1) {
this.ruleForm.companyVOList.push(row) this.ruleForm.companyVOList.push(row)
// this.tableData..push(row) // this.tableData..push(row)
}else{
this.$message.error("请勿选择相同公司")
} }
} else { } else {
this.ruleForm.companyVOList.push(row) this.ruleForm.companyVOList.push(row)
......
...@@ -44,6 +44,10 @@ ...@@ -44,6 +44,10 @@
</div> </div>
<!-- 在线对话 --> <!-- 在线对话 -->
<div class="dialogue" style="margin-top: 30px;" v-show="dialogue"> <div class="dialogue" style="margin-top: 30px;" v-show="dialogue">
<JwChat :taleList="dialogueList" scrollType @enter="bindEnter" v-model="content" :toolConfig="tool" >
</JwChat>
</div>
<!-- <div class="dialogue" style="margin-top: 30px;" v-show="dialogue">
<ul class="dialogueList" v-chat-scroll> <ul class="dialogueList" v-chat-scroll>
<li v-for="(item,index) in dialogueList" :key="index" :class="myId==item.userId?'flex-left':'flex-right'"> <li v-for="(item,index) in dialogueList" :key="index" :class="myId==item.userId?'flex-left':'flex-right'">
<div> <div>
...@@ -58,7 +62,7 @@ ...@@ -58,7 +62,7 @@
</ul> </ul>
<el-input placeholder="请输入内容" v-model="content" clearable @keyup.enter.native="send" maxlength="30"> <el-input placeholder="请输入内容" v-model="content" clearable @keyup.enter.native="send" maxlength="30">
</el-input> </el-input>
</div> </div> -->
</div> </div>
<div class="flex-center buttons"> <div class="flex-center buttons">
<div> <div>
...@@ -121,6 +125,11 @@ ...@@ -121,6 +125,11 @@
}, },
data() { data() {
return { return {
tool: {
show: [''],
callback: this.toolEvent,
showEmoji: true,
},
issueTable:"", issueTable:"",
openStatus: "", openStatus: "",
isSignature: false, isSignature: false,
...@@ -284,10 +293,20 @@ ...@@ -284,10 +293,20 @@
console.log(data) console.log(data)
if (data.type == 1) { if (data.type == 1) {
if(data.userId==this.myId){ if(data.userId==this.myId){
console.log("自己发的") data.mine=true
this.content = "" }else{
data.mine=false
} }
this.dialogueList.push(data) const msgObj = {
"date":data.time ,
"text": {
"text": data.chatContent
},
"mine": data.mine,
"name": data.name,
"img": "@static/images/tou.jpg"
}
this.dialogueList.push(msgObj)
} else { } else {
this.halList.push(data) this.halList.push(data)
} }
...@@ -304,13 +323,10 @@ ...@@ -304,13 +323,10 @@
this.websocket.close() this.websocket.close()
}) })
}, },
send() { bindEnter() {
let content = this.content; const content = this.content
if (content.split(" ").join("").length == 0) { if (!content) return;
this.$message.error("请输入内容")
} else {
this.websocket.send(content) this.websocket.send(content)
}
}, },
back() { back() {
this.$router.go(-1) this.$router.go(-1)
...@@ -462,6 +478,8 @@ ...@@ -462,6 +478,8 @@
position: absolute; position: absolute;
top: 10%; top: 10%;
right: 10%; right: 10%;
border:1px solid #CCCCCC;
padding:10px
} }
.dialogue>.dialogueList { .dialogue>.dialogueList {
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
<div > <div >
<div class="content"> <div class="content">
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
<dataTable :table-data="tableData" :columns="columns" :is-pageobj="false" > <el-button type="primary" @click="add">创建新的角色</el-button>
<dataTable :table-data="tableData" :columns="columns" :is-pageobj="false" :tableTop="30">
<el-table-column slot="operate" label="操作" align="center" fixed="right" > <el-table-column slot="operate" label="操作" align="center" fixed="right" >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="see(scope.row)">查看</el-button> <el-button type="text" size="small" @click="see(scope.row)">查看</el-button>
...@@ -14,7 +15,8 @@ ...@@ -14,7 +15,8 @@
</template> </template>
<script> <script>
import dataTable from '@components/dataTable.vue' import {roleList} from '@api/purchaser/organization'
import dataTable from '@components/nopageTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default { export default {
components: { components: {
...@@ -24,14 +26,10 @@ export default { ...@@ -24,14 +26,10 @@ export default {
data() { data() {
return { return {
breads: ['系统管理', '角色权限'], breads: ['系统管理', '角色权限'],
tableData: [{ tableData: [],
name: '部长',
remark: 'XXXXX'
}],
columns: [{ columns: [{
label: '角色名称', label: '角色名称',
prop: 'name', prop: 'roleName',
width: 400 width: 400
}, },
{ {
...@@ -58,8 +56,27 @@ export default { ...@@ -58,8 +56,27 @@ export default {
methods: { methods: {
see() { see() {
this.$router.push('/purchaser/organization/jurisdictionSee') this.$router.push('/purchaser/organization/jurisdictionSee')
},
add(){
this.$router.push("/purchaser/organization/jurisdictionSee")
},
async getroleList() {
let type=JSON.parse(localStorage.getItem("userInfo")).type
const {
data,
code
} = await roleList(type)
for(let item of data){
if(!item.remark){
item.remark="空"
} }
} }
this.tableData=data
}
},
created() {
this.getroleList()
}
} }
</script> </script>
......
...@@ -7,90 +7,117 @@ ...@@ -7,90 +7,117 @@
</div> </div>
<div class="content"> <div class="content">
<div class="message"> <div class="message">
<div>角色名称:项目经理</div> <el-form :model="form" :rules="rules" ref="form" label-width="100px" class="demo-ruleForm">
<div>备注:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</div> <el-form-item label="角色名称" prop="roleName">
<div class="flex"> <el-input v-model="form.roleName"></el-input>
<div>权限</div> </el-form-item>
<el-tree :data="data" :props="defaultProps" show-checkbox node-key="id"> <el-form-item label="权限" prop="menuPOList">
<el-tree :data="data" :props="defaultProps" show-checkbox @check-change="handleCheckChange" node-key="id" ref="tree">
</el-tree> </el-tree>
</el-form-item>
</el-form>
</div> </div>
</div> </div>
<div class="centerButton">
<el-button @click="back">返回</el-button>
<el-button @click="add">添加</el-button>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import {
export default { roleMenus,roleadd
} from '@api/purchaser/organization'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
components: { components: {
dataBreadcrumb dataBreadcrumb
}, },
data() { data() {
let check = async (rule, value, callback) => {
console.log("1")
console.log(this.form.menuPOList.length)
if (this.form.menuPOList.length == 0) {
console.log("空")
return callback(new Error('请选择权限'));
} else {
callback();
}
};
return { return {
breads: ['系统管理', '权限管理'], breads: ['系统管理', '权限管理'],
data: [{ data: [],
id: 1,
label: '首页',
children: [{
id: 4,
label: '招标管理',
children: [{
id: 9,
label: '招标项目管理'
}]
}]
}, {
id: 2,
label: '平台交货管理',
children: [{
id: 5,
label: '平台交货列表'
}]
}, {
id: 3,
label: '供应商管理',
children: [{
id: 7,
label: '供应商列表'
}, {
id: 8,
label: '我的供应商'
}]
}, {
id: 10,
label: '组织管理',
children: [{
id: 11,
label: '单位信息'
}, {
id: 12,
label: '成员管理'
}, {
id: 13,
label: '权限管理'
}]
}, {
id: 14,
label: '系统管理',
children: [{
id: 15,
label: '绑定CA'
}, {
id: 16,
label: '日志列表'
}]
}],
defaultProps: { defaultProps: {
children: 'children', children: 'children',
label: 'label' label: 'label'
},
form: {
roleName: "",
menuPOList: []
},
rules: {
roleName: [{
required: true,
message: '请填写',
trigger: 'blur'
}],
menuPOList: [{
required: true,
validator: check,
trigger: 'change'
}],
} }
} }
}, },
methods: { methods: {
back() {
this.$router.go(-1)
},
async getroleMenus() {
const {
data,
code
} = await roleMenus(1)
this.data = data
},
handleCheckChange(data, checked, indeterminate) {
console.log(data, checked, indeterminate);
},
handleCheckChange() {
this.form.menuPOList = this.$refs.tree.getCheckedKeys()
},
async add() {
try {
const valid = await this.$refs['form'].validate()
if (valid) {
let form = this.form
const {
code,
msg
} = await roleadd(form)
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
})
setTimeout(() => {
this.$router.go(-1)
}, 1500)
}else{
this.$message.error(msg)
}
}
} catch (e) {
console.log(e)
}
}
},
created() {
this.getroleMenus()
}
} }
}
</script> </script>
......
<template> <template>
<div> <div>
<div class="content"> <div class="content">
<dataTable :table-data="tableData" :columns="columns" :page-obj="pageObj" :breads="breads" :checklist="checklist"> <dataTable :columns="columns" :page-obj="pageObj" :breads="breads" :checklist="checklist" ref="table" url="sys/user/member/list">
<el-button slot="moreButton" type="primary">添加新用户</el-button> <el-button slot="moreButton" type="primary" @click="add('form')">添加新用户</el-button>
<el-table-column slot="operate" label="操作" align="center" fixed="right" width="100"> <el-table-column slot="operate" label="操作" align="center" fixed="right" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="edit(scope.row)">编辑</el-button> <el-button type="text" size="small" @click="edit(scope.row)">编辑</el-button>
<el-button type="text" size="small" @click="delete(scope.row)">删除</el-button> <el-button type="text" size="small" @click="handdelete(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</dataTable> </dataTable>
<el-dialog :visible.sync="dialogFormVisible" title="添加"> <el-dialog :visible.sync="dialogFormVisible" title="添加">
<el-form ref="form" :model="form" :rules="rules"> <el-form ref="form" :model="form" :rules="rules">
<el-form-item label="姓名" label-width="50px" prop="name"> <el-form-item label="姓名" label-width="100px" prop="name">
<el-input v-model.trim="form.name" autocomplete="off" placeholder="请输入" maxlength="30"></el-input> <el-input v-model.trim="form.name" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="手机" label-width="50px" prop="phone"> <el-form-item label="手机" label-width="100px" prop="phone">
<el-input v-model.trim="form.phone" autocomplete="off" placeholder="请输入" maxlength="30"></el-input> <el-input v-model.trim="form.phone" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="邮箱" label-width="50px" prop="email"> <el-form-item label="邮箱" label-width="100px" prop="email">
<el-input v-model.trim="form.email" autocomplete="off" placeholder="请输入" maxlength="30"></el-input> <el-input v-model.trim="form.email" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="密码" label-width="50px" prop="password"> <el-form-item label="密码" label-width="100px" prop="password">
<el-input v-model.trim="form.password" autocomplete="off" show-password placeholder="请输入" maxlength="30"></el-input> <el-input v-model.trim="form.password" autocomplete="off" show-password placeholder="请输入" maxlength="30"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="角色" label-width="50px" prop="role"> <el-form-item label="角色" label-width="100px" prop="roleId">
<el-select v-model="form.role" placeholder="请选择"> <el-select v-model="form.roleId" placeholder="请选择">
<el-option v-for="item in roles" :key="item.value" :label="item.label" :value="item.value" :disabled="item.disabled"> <el-option v-for="item in roles" :key="item.roleId" :label="item.roleName" :value="item.roleId">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button> <el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="dialogFormVisible = false">确 定</el-button> <el-button type="primary" @click="submitData">确 定</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogFormVisible1" title="编辑">
<el-form ref="form" :model="form1" :rules="rules">
<el-form-item label="姓名" label-width="100px" prop="name">
<el-input v-model.trim="form1.name" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="手机" label-width="100px" prop="phone">
<el-input v-model.trim="form1.phone" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="邮箱" label-width="100px" prop="email">
<el-input v-model.trim="form1.email" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="角色" label-width="100px" prop="roleId">
<el-select v-model="form1.roleId" placeholder="请选择">
<el-option v-for="item in roles" :key="item.roleId" :label="item.roleName" :value="item.roleId">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible1 = false">取 消</el-button>
<el-button type="primary" @click="submitData1">确 定</el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
...@@ -41,30 +64,43 @@ ...@@ -41,30 +64,43 @@
</template> </template>
<script> <script>
import dataTable from '@components/dataTable.vue' import {
export default { roleList,
name: 'bidingList', checkAccount,
useradd,
userdelete,
useredit
} from '@api/purchaser/organization'
import dataTable from '@components/dataTable.vue'
export default {
components: { components: {
dataTable dataTable
}, },
data() { data() {
let checkPhone = async (rule, value, callback) => {
if (!value) {
return callback(new Error('手机号不能为空'));
} else {
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/
if (reg.test(value)) {
callback();
} else {
return callback(new Error('请输入正确的手机号'));
}
}
};
return { return {
checklist: [{ checklist: [{
title: '姓名', title: '姓名',
type: 'input', type: 'input',
model: ' name' model: 'name'
}, { }, {
title: '手机', title: '手机',
type: 'input', type: 'input',
model: 'phone' model: 'phone'
}], }],
breads: ['组织管理', '成员管理'], breads: ['组织管理', '成员管理'],
tableData: [{ tableData: [],
name: '胡彦斌',
phone: '17877666666',
role: '管理员',
data: '2017-10-01 12:00'
}],
columns: [{ columns: [{
label: '姓名', label: '姓名',
prop: 'name' prop: 'name'
...@@ -75,11 +111,11 @@ export default { ...@@ -75,11 +111,11 @@ export default {
}, },
{ {
label: '角色', label: '角色',
prop: 'role' prop: 'roleName'
}, },
{ {
label: '创建时间', label: '创建时间',
prop: 'data', prop: 'createTime',
sortable: true sortable: true
}, },
{ {
...@@ -89,31 +125,22 @@ export default { ...@@ -89,31 +125,22 @@ export default {
pageObj: { pageObj: {
size: 10, size: 10,
total: 1,
currentPage: 1, currentPage: 1,
sizes: [100, 200, 300],
func: (currentPage) => { func: (currentPage) => {
this.pageTurning(currentPage) this.pageTurning(currentPage)
} }
}, },
dialogFormVisible1:false,
dialogFormVisible: false, dialogFormVisible: false,
form1:{},
form: { form: {
name: '', name: '',
phone: '', phone: '',
email: '', email: '',
password: '', password: '',
role: '' roleId: ''
}, },
roles: [{ roles: [],
value: '1',
label: '管理员'
}, {
value: '2',
label: '经理'
}, {
value: '3',
label: '专员'
}],
rules: { rules: {
name: [{ name: [{
required: true, required: true,
...@@ -122,35 +149,129 @@ export default { ...@@ -122,35 +149,129 @@ export default {
}], }],
phone: [{ phone: [{
required: true, required: true,
message: '请输入', validator: checkPhone,
trigger: 'blur' trigger: 'blur'
}], }],
email: [{ email: [{
required: true, required: true,
message: '请输入', message: '请输入电子邮箱',
trigger: 'blur' trigger: 'blur'
}], },
{
pattern: /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
message: '请输入正确的邮箱地址'
}
],
password: [{ password: [{
required: true, required: true,
message: '请输入', message: '请输入密码',
trigger: 'blur' trigger: 'blur'
}], },
role: [{ {
pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/,
message: '密码需由8-16位数字字母组合'
}
],
roleId: [{
required: true, required: true,
message: '请选择', message: '请选择',
trigger: 'change' trigger: 'change'
}] }],
uid:""
} }
} }
}, },
methods: { methods: {
// 删除
async handdelete(row) {
try {
await this.$confirm("确定要删除么?", '提示', {
type: 'warning'
})
const {
msg,
code
} = await userdelete(row.uid)
if (code == 200) {
this.$message.success(msg)
this.$refs.table.getauditList()
} else {
this.$message.error(msg)
}
} catch (e) {
console.log(e)
}
},
// 编辑
edit(row) { edit(row) {
this.form = row this.form1 = Object.assign({}, row)
this.dialogFormVisible1 = true
this.uid=row.uid
},
// 获取角色列表
async getroleList() {
let type = JSON.parse(localStorage.getItem("userInfo")).type
const {
data,
code
} = await roleList(type)
this.roles = data
},
// 添加新用户
add(form) {
this.form = Object.assign({})
this.dialogFormVisible = true this.dialogFormVisible = true
},
// 提交添加
async submitData() {
try {
const valid = await this.$refs['form'].validate()
if (valid) {
let form = this.form
const {
code,
msg
} = await useradd(form)
if (code === 200) {
this.$message.success(msg)
this.dialogFormVisible = false
this.$refs.table.getauditList()
} else {
this.$message.error(msg)
}
}
} catch (e) {
console.log(e)
}
},
// 提交编辑
async submitData1() {
try {
const valid = await this.$refs['form'].validate()
if (valid) {
let form = this.form1
form.uid=this.uid
const {
code,
msg
} = await useredit(form)
if (code === 200) {
this.$message.success(msg)
this.dialogFormVisible1 = false
this.$refs.table.getauditList()
} else {
this.$message.error(msg)
}
}
} catch (e) {
console.log(e)
}
},
},
created() {
this.getroleList()
} }
} }
}
</script> </script>
<style scoped> <style scoped>
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
</template> </template>
<script> <script>
import dataTable from '@components/nopageTable.vue' import dataTable from '@components/dataTable.vue'
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default { export default {
components: { components: {
......
<template> <template>
<div> <div>
<div class="content"> <div class="content">
<dataTable :table-data="tableData" :columns="columns" :page-obj="pageObj" :breads="breads" :checklist="checklist"> <dataTable :table-data="tableData" :columns="columns" :page-obj="pageObj" :breads="breads" :checklist="checklist"
url="log/logList">
<el-table-column slot="name" label="姓名" align="center" width="100">
<template slot-scope="scope">
<div>{{scope.row.name?scope.row.name:"无"}}</div>
</template>
</el-table-column>
<el-table-column slot="args" label="请求参数" align="center" width="100">
<template slot-scope="scope">
<div>{{scope.row.args?scope.row.args:"无"}}</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="操作" align="center" fixed="right" width="100"> <el-table-column slot="operate" label="操作" align="center" fixed="right" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="examine(scope.row)">审核</el-button> <el-button type="text" size="small" @click="examine(scope.row)">审核</el-button>
...@@ -13,8 +25,8 @@ ...@@ -13,8 +25,8 @@
</template> </template>
<script> <script>
import dataTable from '@components/dataTable.vue' import dataTable from '@components/dataTable.vue'
export default { export default {
name: 'bidingList', name: 'bidingList',
components: { components: {
dataTable dataTable
...@@ -28,33 +40,31 @@ export default { ...@@ -28,33 +40,31 @@ export default {
}, { }, {
title: '用户操作', title: '用户操作',
type: 'input', type: 'input',
model: 'operate' model: 'operation'
}], }],
breads: ['系统管理', '日志列表'], breads: ['系统管理', '日志列表'],
tableData: [{}], tableData: [{}],
columns: [{ columns: [{
label: '姓名', slot: "name"
prop: 'name'
}, },
{ {
label: '用户操作', label: '用户操作',
prop: 'operate' prop: 'operation'
}, },
{ {
label: '请求方式', label: '请求方式',
prop: 'requestType' prop: 'method'
}, },
{ {
label: '请求参数', slot: "args"
prop: 'requestData'
}, },
{ {
label: '请求时长', label: '请求时长',
prop: 'requestTime' prop: 'elapsed'
}, },
{ {
label: '状态', label: '状态',
prop: 'state' prop: 'status'
}, },
{ {
label: '操作IP', label: '操作IP',
...@@ -62,13 +72,12 @@ export default { ...@@ -62,13 +72,12 @@ export default {
}, },
{ {
label: '创建时间', label: '创建时间',
prop: 'data' prop: 'createTime'
}], }
],
pageObj: { pageObj: {
size: 10, size: 10,
total: 1,
currentPage: 1, currentPage: 1,
sizes: [100, 200, 300],
func: (currentPage) => { func: (currentPage) => {
this.pageTurning(currentPage) this.pageTurning(currentPage)
} }
...@@ -80,7 +89,7 @@ export default { ...@@ -80,7 +89,7 @@ export default {
this.$router.push('/admin/bid/bidingDetail') this.$router.push('/admin/bid/bidingDetail')
} }
} }
} }
</script> </script>
<style scoped> <style scoped>
......
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