提交 f0e7477c authored 作者: zax's avatar zax

单位管理页面数据接入

上级 75af43f2
......@@ -7,12 +7,21 @@ textarea, p, blockquote, th, td {
margin: 0;
padding: 0;
}
html{
width: 100%;
height:100%;
}
body {
font-size: 16px;
line-height: 20px;
background: #fff;
font-family: "Regular";
width: 100%;
height:100%;
}
#app{
width: 100%;
height:100%;
}
a {
......
<template>
<div class="role">
<el-row>
<el-col :span="24">
<div class="content">
<p class="title">产品管理</p>
<p class="search">
<span class="searchVal">
<span>产品名称:</span>
<el-input size="medium" placeholder="请输入"></el-input>
</span>
<span class="searchVal">
<span>产品分类:</span>
<el-select v-model="type" placeholder="请选择">
<el-option
v-for="item in typeList"
:key="item"
:label="typeChange(item)"
:value="typeChange(item)">
</el-option>
</el-select>
</span>
<span class="searchVal">
<span>技术路线:</span>
</span>
<span class="button">搜索</span>
<span class="button add">新建产品</span>
<span class="button import">导入产品
</span>
</p>
<div class="common-table">
<el-table
highlight-current-row
max-height="840"
:data="allData"
stripe
style="width: 100%;margin-bottom: 10px;">
<el-table-column
prop="name"
label="产品名称"
align="center">
</el-table-column>
<el-table-column
:formatter="typeChange"
prop="type"
label="产品分类"
align="center">
</el-table-column>
<el-table-column
:formatter="typeChange"
prop="status"
label="准入状态"
align="center">
</el-table-column>
<el-table-column
prop="number"
label="技术路线"
align="center">
</el-table-column>
<el-table-column
prop="type"
label="查看详情"
align="center">
<template>
<span class="change"><img src="../../basicInformation/company/img/look.png">查看</span>
</template>
</el-table-column>
</el-table>
</div>
<!-- 分页 -->
<!-- 分页 -->
</div>
</el-col>
</el-row>
<!-- 新增 / 编辑 公用弹窗 -->
<!-- <el-dialog :visible.sync="openModel" class="model">-->
<!-- <img src="../../../assets/img/close.png" class="closeModel" @click="reset()">-->
<!-- <component :is="components" :name="companyName" :list="companyList" @on-cancel="reset" @on-name="getName"></component>-->
<!-- </el-dialog>-->
</div>
</template>
<script>
import '../../basicInformation/company/company.css'
export default {
name: 'product',
data() {
return {
type: '',
typeList: [
{type: '1'},
{type: '2'}
],
allData: [],
typeVal: {
'1':'软件',
'2': '硬件'
}
}
},
mounted() {
this.init();
},
methods: {
init() {
this.$server.getProduceFindAll().then(res => {
this.allData = res.data.data;
})
},
typeChange(row) {
return this.typeVal[String(row.type)]
}
}
}
</script>
<style scoped>
</style>
\ No newline at end of file
.role{
background: #ebf0f8;
width: 100%;
}
.role .content{
margin: 40px;
height: 841px;
background: #fff;
overflow: hidden;
}
.role .content .title{
padding: 30px 0 0 60px;
font-size: 20px;
color: #233b6e;
}
.role .content .search{
position: relative;
margin-top: 36px;
padding: 0px 70px 0px 70px;
display: flex;
}
.role .content .searchVal{
width: 280px;
display: flex;
font-size: 18px;
color: #4663a6;
}
.role .content .searchVal>span{
width: 140px;
display: inline-block;
line-height: 34px;
}
.role .content .change{
color: #4877e6;
cursor: pointer;
}
.role .content .change>img{
margin-right: 3px;
}
.role .content .common-table{
box-shadow: 4px 4px 5px rgba(72,119,230,0.1);
border: .5px solid transparent;
border-radius: 10px;
}
.role>>>.el-input__inner{
border: 1px solid rgba(8,104,157,.3);
border-radius: 2px;
font-size: 18px;
color: #999;
height: 34px;
line-height: 34px;
width: 180px;
}
.role .content .button{
display: inline-block;
width: 100px;
height: 34px;
line-height: 34px;
text-align: center;
background: #4877e6;
cursor: pointer;
margin-left: 35px;
border-radius: 2px;
color: #fff;
font-size: 18px;
}
.role .content .button:hover{
background: rgba(72,119,230,.6);
}
.role .content .import{
position: absolute;
right: 70px;
}
.add{
position: absolute;
right: 220px;
}
.role .content .common-table{
margin: 24px 70px 0 70px;
}
.role .content .common-table>>>.el-table th > .cell{
font-size: 18px;
color: #333;
font-weight: normal;
}
.role .content .common-table>>>.el-table th.is-leaf{
height: 70px;
}
.role .content .common-table>>>.el-table tr{
font-size: 18px;
}
.role .content .common-table>>>.el-table{
color: #233b6e;
}
.role .content .common-table>>>.el-table--striped .el-table__body tr.el-table__row--striped.el-table__row--striped.el-table__row--striped td {
background-color: #fff;
}
.role .content .common-table>>>.el-table--enable-row-hover .el-table__body tr:hover>td{
background-color: #f5f8fd;
}
.role .content .common-table>>>.el-table th.is-leaf, .el-table td {
border-bottom: 1px solid #d5e3ff;
}
.role .content .common-table>>>.el-table__body tr, .el-table__body td {
padding: 0;
height: 60px;
background: #f5f8fd;
}
.role .content .block{
text-align: right;
padding: 30px 70px 0 0;
}
.role .content>>>.el-pagination.is-background .el-pager li{
background-image: linear-gradient(to bottom, #c5d5f7,#7a95e6);
color: #fff;
}
.role .content>>>.el-pagination.is-background .el-pager li:not(.disabled).active{
background-image: linear-gradient(to bottom, #7a9eeb,#274acf);
color: #fff;
}
.role .content>>>.el-table td{
border-bottom: 1px solid #d5e3ff;
}
.role .content>>>.btn-prev,.role .content>>>.btn-next{
background: #c5d5f7;
background-image: linear-gradient(to bottom, #c5d5f7,#7a95e6);
color: #fff;
}
.role .content>>>.btn-prev:disabled,.dynamicList .content>>>.btn-next:disabled{
color: #C0C4CC;
}
.role .content>>>.el-table__body tr.current-row > td{
background: #f5f8fd;
}
\ No newline at end of file
<template>
<div class="details">
<el-row>
<el-col :span="24">
<div class="content">
<el-row>
<el-col :span="9">
<p class="title">单位信息</p>
<p class="search">
<span class="value">
<span>单位名称:</span>
<el-input v-model="data.name" size="medium" :disabled="true"></el-input>
</span>
</p>
<p class="search">
<span class="value">
<span>单位地址:</span>
<el-input v-model="data.address" size="medium" :disabled="true"></el-input>
</span>
</p>
<p class="search">
<span class="value">
<span>联系方式:</span>
<el-input v-model="data.number" size="medium" :disabled="true"></el-input>
</span>
</p>
</el-col>
<el-col :span="5">
<p class="search">
<span class="status">
<span>单位类别:</span>
<img src="../person/img/click.png" style="width: 21px;height: 21px;">
<span>{{typeChange(data.type)}}</span>
</span>
</p>
<p class="search">
<span class="status">
<span>是否准入:</span>
<img src="../person/img/click.png" style="width: 21px;height: 21px;">
<span>{{statusChange(data.status)}}</span>
</span>
</p>
</el-col>
<el-col :span="4">
<p class="search">
<span class="button">相关项目</span>
</p>
<p class="search">
<span class="button">相关人员</span>
</p>
<p class="search">
<span class="button">相关评价</span>
</p>
</el-col>
</el-row>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
name: 'details',
data () {
return {
data: {},
type: {}
}
},
mounted() {
let val = this.$store.getters.getSidebar;
if (val[val.length - 1].path !== 'companyDetails') {
val.push(
{
name: '单位信息',
path: 'companyDetails'
}
)
this.$store.commit('changeSidebar', val);
}
this.data = this.$route.params.value;
this.type = this.$route.params.type;
},
methods: {
// 单位类别转换
typeChange(val) {
return this.type[String(val)];
},
// 准入状态转换
statusChange(val) {
return val === 1 ? '是': '否'
}
}
}
</script>
<style scoped>
.details{
background: #ebf0f8;
width: 100%;
}
.details .content{
margin: 40px;
height: 841px;
background: #fff;
overflow: hidden;
}
.details .content .title{
padding: 30px 0 0 60px;
font-size: 20px;
color: #233b6e;
}
.details .content .search{
position: relative;
margin-top: 36px;
padding: 0px 0px 0px 70px;
height: 36px;
width: 100%;
}
.details .content .value{
width: 410px;
display: flex;
font-size: 18px;
color: #666;
}
.details .content .status>span{
vertical-align: bottom;
}
.details .content .value>span{
width: 150px;
display: inline-block;
line-height: 34px;
text-align: right;
}
.details .content .button{
display: inline-block;
width: 100px;
height: 34px;
line-height: 34px;
text-align: center;
background: #4877e6;
cursor: pointer;
margin-left: 55px;
border-radius: 2px;
color: #fff;
font-size: 18px;
}
.details .content .button:hover{
background: rgba(72,119,230,.6);
}
.details>>>.el-input--medium .el-input__inner{
font-size: 18px;
color: #333;
font-family: 'Regular';
}
.status{
display: flex;
font-size: 18px;
color: #666;
}
.details>>>.el-col-9{
width: 49.5%;
}
.details>>>.el-col-5{
margin-top: 57px;
}
.details>>>.el-col-4{
margin-top: 49px;
}
.button{
display: inline-block;
width: 100px;
height: 34px;
line-height: 34px;
text-align: center;
background: #4877e6;
cursor: pointer;
margin-left: 100px;
border-radius: 2px;
color: #fff;
font-size: 18px;
}
</style>
\ No newline at end of file
<template>
<div class="details">
<el-row>
<el-col :span="24">
<div class="content">
<p class="title">单位信息</p>
<ul>
<li></li>
</ul>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
name: 'details'
}
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<div class="newrole">
<p class="dialog-header">
<span>单位</span>
<span>单位</span>
</p>
<div class="company-content" style="text-align: center; margin-top: 4px;">
<p class="add">
<p class="new">
<span class="addVal">
<span>单位名称:</span>
<el-input v-model="nameVal" size="medium" placeholder="请输入"></el-input>
<el-input v-model="name" size="medium" placeholder="请输入"></el-input>
</span>
<span class="addVal">
<span class="addVal" style="width: 450px;">
<span>单位类别:</span>
<el-radio-group v-model="classVal" size="small" style="line-height: 34px;width: 100%;text-align: left">
<el-radio label="1">备选项1</el-radio>
<el-radio label="2">备选项2</el-radio>
<el-radio label="3">备选项2</el-radio>
<el-radio-group v-model="type" size="small" style="padding-top: 11px;width: 100%;text-align: left">
<el-radio label="1">AK中心 </el-radio>
<el-radio label="3">监理方</el-radio>
<el-radio label="6">专家</el-radio>
<el-radio label="7">测试机构 </el-radio>
<el-radio label="4">集成商</el-radio>
<el-radio label="5">建设方</el-radio>
<el-radio label="8">开发商 </el-radio>
<el-radio label="2">实施系统管理员</el-radio>
</el-radio-group>
</span>
<span class="addVal">
<span class="addVal" style="margin-top: 4px">
<span>是否准入:</span>
<el-radio-group v-model="getVal" size="small" style="line-height: 34px;width: 100%;text-align: left">
<el-radio-group v-model="status" size="small" style="padding-top: 11px; width: 100%;text-align: left">
<el-radio label="1"></el-radio>
<el-radio label="2"></el-radio>
</el-radio-group>
......@@ -28,9 +33,13 @@
<span>单位地址:</span>
<el-input v-model="address" size="medium" placeholder="请输入"></el-input>
</span>
<span class="addVal">
<span>负责人:</span>
<el-input v-model="principal" size="medium" placeholder="请输入"></el-input>
</span>
<span class="addVal">
<span>联系方式:</span>
<el-input v-model="tell" size="medium" placeholder="请输入"></el-input>
<el-input v-model="number" size="medium" placeholder="请输入"></el-input>
</span>
</p>
</div>
......@@ -46,11 +55,12 @@
export default {
data () {
return {
classVal: '',
nameVal: '',
getVal: '',
type: '',
name: '',
status: '',
address: '',
tell: ''
number: '',
principal: ''
}
},
created() {
......@@ -62,12 +72,29 @@ export default {
this.$emit('on-cancel')
},
save() {
console.log(this.classVal);
if (this.classVal === '') {
this.$message.error('角色名称不能为空!')
} else {
this.$emit('on-name', this.classVal)
}
if (!this.name) {
this.$message.error('单位名称不可为空!');
return;
};
let data = {
address: this.address,
name: this.name,
number: this.number,
principal: this.principal,
score: '',
status: parseInt(this.status),
type: parseInt(this.type)
};
this.$server.postUnitAdd(data).then(res => {
if (res.data.code === 200) {
this.$message.success('单位新建成功!');
this.$emit('on-cancel', true)
} else {
this.$message.error('单位新建失败!');
}
}).catch(err => {
this.$message.error('单位新建失败!');
})
}
},
components: {
......@@ -77,16 +104,19 @@ export default {
}
</script>
<style scoped>
.newrole .add{
.newrole .new{
display: inline-block;
}
.new{
right: 220px;
}
.newrole .addVal{
width: 390px;
display: flex;
font-size: 18px;
color: #666;
text-align: center;
margin-top: 24px;
margin-top: 15px;
}
.newrole .addVal>span{
width: 140px;
......@@ -103,17 +133,19 @@ export default {
width: 180px;
}
.newrole .line{
margin: 29px 30px 0 30px;
margin: 25px 30px 0 30px;
height: 1px;
background: rgba(72,119,230,0.2);
}
.newrole .buttonClick{
display: flex;
justify-content: space-evenly;
margin-top: 20px;
margin-top: 13px;
}
.newrole .company-content>>>.el-radio{
margin-right: 22px;
margin-bottom: 11px;
width: 49px;
}
.newrole .company-content>>>.el-input__inner{
width: 290px;
......
<template>
<div class="login">
this is login page
<div class="login">
<div class="login-border">
<p class="login-text">欢迎登录</p>
<div class="login-content">
<p class="login-content-text">登录</p>
<div class="login-input">
<input class="input user" type="text" v-model="user" placeholder="请输入用户名"/>
<input class="input user" type="password" v-model="password" @keyup.enter="login" placeholder="请输入密码"/>
<button class="button" @click="login">登录</button>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data () {
return {
user: '',
password: ''
}
},
created() {
......@@ -15,6 +27,27 @@ export default {
mounted(){
},
methods: {
// 登录
login() {
if (!this.user || !this.password) {
this.$message.error('用户名和密码不能为空!');
return;
}
let data = {
userName: this.user,
password: this.password
}
this.$server.postUserLogin(data).then(res => {
if (res.data.code === 200) {
this.$store.commit('changeUserData', res.data.data);
this.$router.push({name: 'XCalliance'})
} else {
this.$message.error(res.data.msg);
}
}).catch(err => {
this.$message.error('用户登录失败');
})
}
},
components: {
},
......@@ -23,4 +56,78 @@ export default {
}
</script>
<style scoped>
.login{
width: 100%;
height: 100%;
background-image: url("./img/login-bg.png");
background-repeat: no-repeat;
background-size: 100% 100%;
-moz-background-size: 100% 100%;
}
.login-border{
width: 664px;
height: 531px;
background-image: url("./img/login-border.png");
background-repeat: no-repeat;
background-size: 100% 100%;
-moz-background-size: 100% 100%;
position: absolute;
left: 50%;
top: 50%;
margin-left: -332px;
margin-top: -265px;
color: #ffffff;
}
.login-text{
font-size: 24px;
font-weight: bold;
position: absolute;
left: 15%;
top: 42%;
}
.login-content-text{
color: #333333;
font-size: 32px;
font-weight: bold;
}
.login-content{
position: absolute;
width: 250px;
text-align: left;
top: 22%;
right: 74px;
}
.login-input{
margin-top: 12px;
}
.button{
width: 160px;
height: 40px;
background-color: #4877e6;
border-radius: 4px;
border: none;
font-size: 20px;
color: #ffffff;
cursor: pointer;
margin-top: 40px;
}
.button:hover{
background: rgba(72,119,230,.6);
}
.input{
width: 208px;
height: 36px;
border: none;
padding-left: 12px;
border-bottom: 1px solid #cccccc;
background-color: rgba(0,0,0,0);
font-size: 18px;
margin-top: 32px;
}
.login .login-border .login-content>>>.el-input--medium .el-input__inner{
width: 208px;
}
.login .login-border .login-content>>>.el-input{
margin-top: 32px;
}
</style>
......@@ -31,7 +31,7 @@
</p>
</div>
<div>
<div @click="clickMenu('product',4,'市准入管理')">
<span class="line"></span>
<p class="menu" style="margin-top: 0">
<span class="icon">
......
......@@ -80,6 +80,18 @@ export default new Router({
name: 'company',
component: resolve => require(['../components/basicInformation/company/company.vue'], resolve)
},
// 基础资料管理-单位信息
{
path: '/companyDetails',
name: 'companyDetails',
component: resolve => require(['../components/basicInformation/company/companyDetails.vue'], resolve)
},
// 基础资料管理-单位信息
{
path: '/product',
name: 'product',
component: resolve => require(['../components/admittance/product/product.vue'], resolve)
},
]
}
]
......
......@@ -60,6 +60,30 @@ const server = {
method: 'post',
data: data
});
}
},
postUnitAdd(data) { // 新建单位
return axios('/unit/add', {
method: 'post',
data: data
});
},
postUserLogin(data) { // 用户登录
return axios('/user/login', {
method: 'post',
data: data
});
},
postUnitLoad(data) { // 单位导入
return axios('/unit/upload', {
method: 'post',
data: data,
headers: {'Content-Type': 'multipart/form-data'}
});
},
getProduceFindAll() { // 获取所有产品列表
return axios('/produce/findAll', {
method: 'get'
});
},
}
export default server;
......@@ -6,6 +6,12 @@ const actions = {
sidebar: payload
})
},
changeUserData(store, payload) {
store.commit({
type: 'changeUserData',
userData: payload
})
},
};
export default actions;
......@@ -3,6 +3,9 @@ const getters = {
getSidebar(state) {
return state.sidebar
},
getUserData(state) {
return state.userData
}
};
export default getters;
......@@ -3,6 +3,9 @@ const mutations = {
changeSidebar(state, payload) {
state.sidebar = payload;
},
changeUserData(state, payload) {
state.userData = payload;
},
};
export default mutations;
const state = {
sidebar: []
sidebar: [],
userData: {} // 登录用户信息
};
export default state;
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论