Commit 89e12557 by tang

feat: 用户中心入口-管理员板块【95%】

parent 8ef8d465
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
"pub": "./pub.sh", "pub": "./pub.sh",
"lint": "vue-cli-service lint", "lint": "vue-cli-service lint",
"fix-memory-limit": "cross-env LIMIT=3072 increase-memory-limit" "fix-memory-limit": "cross-env LIMIT=3072 increase-memory-limit"
}, },
"dependencies": { "dependencies": {
"@popperjs/core": "^2.10.1", "@popperjs/core": "^2.10.1",
...@@ -34,11 +32,11 @@ ...@@ -34,11 +32,11 @@
"vue-router": "^3.1.6", "vue-router": "^3.1.6",
"vuex": "^3.1.3", "vuex": "^3.1.3",
"wangeditor": "^3.1.1", "wangeditor": "^3.1.1",
"xss": "^1.0.6", "xss": "^1.0.6"
"increase-memory-limit": "^1.0.3",
"cross-env": "^5.0.5"
}, },
"devDependencies": { "devDependencies": {
"increase-memory-limit": "^1.0.3",
"cross-env": "^5.0.5",
"@vue/cli-plugin-babel": "^3.12.1", "@vue/cli-plugin-babel": "^3.12.1",
"@vue/cli-plugin-eslint": "^3.12.1", "@vue/cli-plugin-eslint": "^3.12.1",
"@vue/cli-service": "^3.12.1", "@vue/cli-service": "^3.12.1",
......
...@@ -486,6 +486,15 @@ ...@@ -486,6 +486,15 @@
cursor: pointer; cursor: pointer;
} }
.gs-clickable{
cursor: pointer;
color: $theme-color1!important;
}
.gs-clickable:hover{
color: $theme-color1-light!important;
}
.gs-hover:hover { .gs-hover:hover {
color: $theme-color1; color: $theme-color1;
} }
......
// 设置主题颜色 // 设置主题颜色
$theme-color1:#F26335; $theme-color1:#F26335;
$theme-color1-light: #f5825e;
// 背景颜色 // 背景颜色
$bg-color:#fff; $bg-color:#fff;
......
<script>
import { TableColumn } from 'element-ui';
const renderCell = {
slots(h, { $index, row, column }) {
const props = {
class: 'cell',
style: {},
};
if (column.showOverflowTooltip) {
props.class += ' el-tooltip';
props.style = { width: `${(column.realWidth || column.width) - 1}px` };
}
return (
<div {...props}>
{this.renderCell ? this.renderCell(row[column.property] || null, row, column, $index) : ''}
</div>
);
},
};
export default {
extends: TableColumn,
props: {
renderCell: {
type: Function,
},
},
created() {
if (this.renderCell) {
this.columnConfig.renderCell = renderCell.slots.bind(this);
}
},
};
</script>
<template>
<div class='gs-table'>
<el-table ref='table'
:data='tableData'
:cell-style='cellStyle'
:header-cell-style='headerCellStyle'
:height='height'
v-bind='$attrs'
v-on='$listeners'>
<template v-for='item in columns'>
<el-table-column v-if='item.type==="expand"'
:key='item.prop'
type='expand'>
<div slot-scope='scope'>
<slot name='expand' :row='scope.row'></slot>
</div>
</el-table-column>
<gs-column v-else
:key='item.prop'
:render='item.cellRender'
v-bind='item' />
</template>
</el-table>
<div v-if='page'
class='gs-table-page'>
<pages />
</div>
</div>
</template>
<script>
import GsColumn from './column.vue';
import pages from "../../views/comps/pages";
export default {
name: 'GsTable',
components: {
GsColumn,pages
},
props: {
data: Array,
columns: Array,
page: Object,
height: String,
headerCellStyle: Object,
cellStyle: {
type: Object,
default: () => ({
fontSize: '14px',
}),
},
},
data() {
return {
current: this.page ? this.page.current : 1,
size: this.page ? this.page.size : 10,
};
},
computed: {
tableData() {
// if (this.page && this.data.length > this.size) {
// return this.data.slice(
// (this.current - 1) * this.size,
// this.current * this.size,
// );
// }
return this.data;
},
},
watch: {
page: {
handler(val) {
if (val.current) this.current = val.current;
},
deep: true,
},
},
methods: {
/**
* @desc: 分页大小变化
* @param {*} size
* @return {*}
*/
handleSizeChange(size) {
this.size = size;
this.page.size = size;
this.current = 1;
this.page.current = 1;
console.log(this.page);
},
/**
* @desc: 分页页码变化
* @param {*} size
* @return {*}
*/
handleCurrentChange(current) {
this.current = current;
this.$emit('page-change', current);
},
},
};
</script>
<style lang='scss' scoped>
</style>
...@@ -10,13 +10,15 @@ import "./assets/css/layout.scss"; ...@@ -10,13 +10,15 @@ import "./assets/css/layout.scss";
import "bootstrap/dist/js/bootstrap.min.js"; import "bootstrap/dist/js/bootstrap.min.js";
import "./plugins/element.js"; import "./plugins/element.js";
import "./plugins/qrcode.js"; import "./plugins/qrcode.js";
// import "./assets/css/element-variables.scss"; import "./assets/css/element-variables.scss";
import GsTable from './components/table/index'
// 百度地图 // 百度地图
import BaiduMap from 'vue-baidu-map' import BaiduMap from 'vue-baidu-map'
Vue.use(BaiduMap, { Vue.use(BaiduMap, {
// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
ak: 'EoRpk2HWln2YKTEYYH5wutFX' ak: 'EoRpk2HWln2YKTEYYH5wutFX'
}) })
// 公共样式、布局样式 // 公共样式、布局样式
...@@ -29,16 +31,20 @@ Vue.use(BaiduMap, { ...@@ -29,16 +31,20 @@ Vue.use(BaiduMap, {
// 封装axios // 封装axios
import api from "./axios/index"; import api from "./axios/index";
Vue.use(api); Vue.use(api);
Vue.component(GsTable.name, GsTable)
// 过滤器封装 // 过滤器封装
import filters from "./filters/index"; import filters from "./filters/index";
Object.keys(filters).forEach((key) => { Object.keys(filters).forEach((key) => {
Vue.filter(key, filters[key]); Vue.filter(key, filters[key]);
}); });
// 全局注册 二次封装loading等待框、以及确认框函数 // 全局注册 二次封装loading等待框、以及确认框函数
import ElPack from "./utils/interaction.js"; import ElPack from "./utils/interaction.js";
Vue.prototype.$ElPack = ElPack; Vue.prototype.$ElPack = ElPack;
// 自定义指令 // 自定义指令
...@@ -46,74 +52,77 @@ import "./directives"; ...@@ -46,74 +52,77 @@ import "./directives";
// Clipboard // Clipboard
import Clipboard from "v-clipboard"; import Clipboard from "v-clipboard";
Vue.use(Clipboard); Vue.use(Clipboard);
// Vuex // Vuex
import storage from "./utils/storage.js"; import storage from "./utils/storage.js";
Vue.prototype.$storage = storage; Vue.prototype.$storage = storage;
// ngprogress // ngprogress
import NProgress from "nprogress"; import NProgress from "nprogress";
import "nprogress/nprogress.css"; import "nprogress/nprogress.css";
NProgress.inc(0.3); NProgress.inc(0.3);
NProgress.configure({ easing: "ease", speed: 500, showSpinner: false }); NProgress.configure({easing: "ease", speed: 500, showSpinner: false});
Vue.config.productionTip = false; Vue.config.productionTip = false;
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
NProgress.start(); NProgress.start();
const whiteList = ["/404"]; const whiteList = ["/404"];
if ( if (
whiteList.some((path) => { whiteList.some((path) => {
return path === to.path; return path === to.path;
}) })
) { ) {
next(); next();
} else { } else {
const { user } = store.state; const {user} = store.state;
// 检测是否已登录 // 检测是否已登录
if (user.token) { if (user.token) {
const authList = user.userMenus; const authList = user.userMenus;
const redirectPathList = ["/login"]; const redirectPathList = ["/login"];
const shouldRedirectToDefault = redirectPathList.some((path) => { const shouldRedirectToDefault = redirectPathList.some((path) => {
return path === to.path; return path === to.path;
}); });
if (!to.path || shouldRedirectToDefault) { if (!to.path || shouldRedirectToDefault) {
const defaultAuth = authList[0]; const defaultAuth = authList[0];
// 加载第一个菜单栏项 // 加载第一个菜单栏项
if (defaultAuth && defaultAuth.path) { if (defaultAuth && defaultAuth.path) {
next({ path: defaultAuth.path, replace: true }); next({path: defaultAuth.path, replace: true});
} else {
next({path: "/404", replace: true});
}
} else {
const isAuthed = authList.some((authItem) => {
const result =
to.path === authItem.path || to.path.startsWith(authItem.path);
return result;
});
isAuthed ? next() : next({path: "/404", replace: true});
}
} else { } else {
next({ path: "/404", replace: true }); next();
// 进入登录页面
// if (to.path === "/login") {
// next()
// } else {
// next({ path: "/login", replace: true })
// }
} }
} else {
const isAuthed = authList.some((authItem) => {
const result =
to.path === authItem.path || to.path.startsWith(authItem.path);
return result;
});
isAuthed ? next() : next({ path: "/404", replace: true });
}
} else {
next();
// 进入登录页面
// if (to.path === "/login") {
// next()
// } else {
// next({ path: "/login", replace: true })
// }
} }
}
}); });
router.afterEach(() => { router.afterEach(() => {
NProgress.done(); NProgress.done();
}); });
window.vm = new Vue({ window.vm = new Vue({
router, router,
store, store,
$, $,
render: (h) => h(App), render: (h) => h(App),
}).$mount("#app"); }).$mount("#app");
<template>
<div class="gs-admin-certification-detail">
<div class="to-sub-center" v-if="subCenter">
企业所属分中心:{{ subCenterName }}
<el-button type="primary" size="mini">切换企业所属分中心</el-button>
</div>
<div class="card_wrapper">
<div class="title">{{ title }}
<span class="back_btn" @click="handleBack">返回</span>
</div>
<div class="body">
<div class="detail-card">
<div class="detail-title">企业信息</div>
<div class="row">
<div class="detail-cell col-lg-6" v-for="item in entInfoFields">
<div class="label" :class="{required:item.required}">{{ item.label }}</div>
<div class="value" :class="{'gs-clickable':item.type==='file'}">{{ item.value }}</div>
</div>
</div>
</div>
<div class="detail-card">
<div class="detail-title">经办人信息</div>
<div class="row">
<div class="detail-cell col-lg-6" v-for="item in handlerInfoFields">
<div class="label" :class="{required:item.required}">{{ item.label }}</div>
<div class="value" :class="{'gs-clickable':item.type==='file'}">{{ item.value }}</div>
</div>
</div>
</div>
<div class="detail-card">
<div class="detail-title">办理业务</div>
<div class="row">
<div class="detail-cell col-lg-6" v-for="item in businessFields">
<div class="label" :class="{required:item.required}">{{ item.label }}</div>
<div class="value" :class="{'gs-clickable':item.type==='file'}">{{ item.value }}</div>
</div>
</div>
</div>
</div>
<div class="operation-btns">
<el-button type="primary">审核通过</el-button>
<el-button class="plain-with-border">审核不通过</el-button>
<el-button class="plain-with-border" v-if="reset">重置</el-button>
</div>
</div>
</div>
</template>
<script>
export default {
name: "CertificationDetail",
props: {
title: String,
subCenter: 'Boolean',
reset: Boolean
},
data() {
return {
subCenterName: '广东分中心',
entInfoFields: [
{
key: '',
label: '企业名称(中文)',
value: '红华中威(深圳)科技有限公司'
},
{
key: '',
label: '企业名称(英文)',
value: 'NRX Nicotine Revolution X'
},
{
key: '',
label: '注册地址', value: '深圳市宝安区沙井街道二蓝天科技园2栋4号楼'
},
{
key: '',
label: '注册地址(英文)', value: ''
},
{
key: '',
label: '注册地址邮政编码', value: '518000'
},
{
key: '',
label: '办公地址', value: '深圳市宝安区沙井街道二蓝天科技园'
},
{
key: '',
label: '办公地址(英文)', value: ''
},
{
key: '',
label: '办公地址邮政编码', value: '518000'
},
{
key: '',
label: '营业执照注册号', value: '91440300MA5EEBTD64'
},
{
key: '',
label: '注册行政区划代码', value: '440306'
},
{
key: '',
label: '注册资金(万元)', value: '100'
},
{
key: '',
label: '货币种类', value: '人民币'
},
{
key: '',
label: '企业类型', value: '进出口公司'
},
{
key: '',
label: '经济类型代码', value: '外贸'
},
{
key: '',
label: '国名经济行业分类代码', value: '其他电子设备制造'
},
{
key: '',
label: '组织机构代码', value: ''
},
{
key: '',
label: '法定代表人', value: '枫林尽'
},
{
key: '',
label: '电话', value: ''
},
{
key: '',
label: '手机', value: '13008899274'
},
{
key: '',
label: '企业网址', value: ''
},
{
key: '',
label: '上传已年检组织机构代码电子文件',
value: '',
type: 'file'
},
{
key: '',
label: '上传企业营业执照扫描件',
value: '查看已年检企业营业执照扫描件',
type: 'file'
},
],
handlerInfoFields: [
{
key: '',
label: '经办人姓名', value: '杨瑞'
},
{
key: '',
label: '身份证号', value: ''
},
{
key: '',
label: '电话',
required: true, value: '0755-1234567'
},
{
key: '',
label: '手机',
required: true, value: '13909873409'
},
{
key: '',
label: '传真',
required: true, value: '0755-1234567'
},
{
key: '',
label: 'E-mail', value: 'ericyang@nrx-vape.com'
},
{
key: '',
label: '上传实名认证扫描件',
value: '查看实名认证注册登记表',
type: 'file'
},
],
businessFields: [
{
key: '',
label: '办理业务', value: ''
}
],
}
},
methods: {
handleBack() {
this.$emit('back')
}
},
}
</script>
<style lang="scss">
.gs-admin-certification-detail {
.to-sub-center {
display: flex;
align-items: center;
justify-content: space-between;
padding-left: 40px;
padding-right: 30px;
height: 50px;
margin-bottom: 14px;
line-height: 50px;
font-size: 16px;
color: #F26335;
background: #FEF1EC;
border-radius: 2px;
}
.card_wrapper {
width: 100%;
background: #FFFFFF;
border-radius: 2px;
margin-bottom: 14px;
.title {
padding-left: 40px;
padding-right: 30px;
height: 57px;
line-height: 56px;
font-size: 16px;
color: #F26335;
border-bottom: 1px solid #F3F3F3;
.back_btn {
float: right;
cursor: pointer;
font-size: 13px;
color: #F26335;
}
}
.body {
width: 100%;
padding: 30px 40px;
overflow: hidden;
}
}
.detail-card {
width: 100%;
margin: 20px auto;
font-size: 14px;
.detail-title {
position: relative;
font-size: 14px;
color: #414345;
line-height: 20px;
padding-left: 16px;
margin-bottom: 10px;
&:before {
top: 6px;
left: 0;
position: absolute;
content: '';
width: 6px;
height: 6px;
background: #F26335;
transform: rotate(45deg);
}
}
.detail-cell {
display: flex;
line-height: 20px;
margin-top: 10px;
margin-bottom: 10px;
overflow: hidden;
.label {
color: #666666;
&::after {
content: ':';
}
&.required::before {
content: '*';
color: #F31F1F;
}
}
.value {
flex: 1;
padding-left: 10px;
color: #414345;
overflow: hidden;
}
}
}
.operation-btns {
padding: 20px 0 40px;
text-align: center;
.plain-with-border {
border-color: $theme-color1;
color: $theme-color1;
}
}
}
</style>
<template> <template>
<div class="gs_admin_check"> <div class="gs_admin_check">
<div class="dashboard" v-show="!showUnCheck&&!showCheckDetail"> <div class="dashboard" v-show="!query.status">
<div class="card_wrapper"> <div class="card_wrapper">
<div class="title">企业实名认证</div> <div class="title">企业实名认证</div>
<div class="body"> <div class="body clearfix">
<div class="card" <div class="card"
@click="handleClick(item)" @click="handleNewCertificationClick(item)"
:style="{borderLeftColor:item.color}" :style="{borderLeftColor:item.color}"
:key="item.key" :key="item.key"
v-for="item in realNameCertification"> v-for="item in realNameCertification">
...@@ -18,9 +18,9 @@ ...@@ -18,9 +18,9 @@
</div> </div>
<div class="card_wrapper"> <div class="card_wrapper">
<div class="title">企业实名认证(变更)</div> <div class="title">企业实名认证(变更)</div>
<div class="body"> <div class="body clearfix">
<div class="card" <div class="card"
@click="handleClick(item)" @click="handleCertificationChangeClick(item)"
:style="{borderLeftColor:item.color}" :style="{borderLeftColor:item.color}"
:key="item.key" :key="item.key"
v-for="item in realNameCertificationChange"> v-for="item in realNameCertificationChange">
...@@ -32,36 +32,39 @@ ...@@ -32,36 +32,39 @@
</div> </div>
</div> </div>
</div> </div>
<div class="card_wrapper uncheck-table" v-if="showUnCheck"> <CheckSearchTable v-if="query.status" :query="query"></CheckSearchTable>
<div class="title">等待审核
<span class="back_btn" @click="showUnCheck=false">返回</span>
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import CheckSearchTable from './checkSearchTable'
export default { export default {
components: {
CheckSearchTable
},
data() { data() {
return { return {
query: {},
showUnCheck: false, showUnCheck: false,
showCheckDetail: false,
realNameCertification: [ realNameCertification: [
{ {
key: '1', key: '1',
label: '等待审核', label: '等待审核',
value: '等待审核',
amount: '641', amount: '641',
color: '#2F7CF1' color: '#2F7CF1'
}, },
{ {
key: '2', key: '2',
label: '已通过审核', label: '已通过审核',
value: '已通过审核',
amount: '10,388', amount: '10,388',
color: '#3ABD79' color: '#3ABD79'
}, },
{ {
key: '3', key: '3',
label: '未通过审核', label: '未通过审核',
value: '未通过审核',
amount: '385', amount: '385',
color: '#F8A702' color: '#F8A702'
}, },
...@@ -76,18 +79,21 @@ export default { ...@@ -76,18 +79,21 @@ export default {
{ {
key: '1', key: '1',
label: '等待审核', label: '等待审核',
value: '等待审核',
amount: '17', amount: '17',
color: '#2F7CF1' color: '#2F7CF1'
}, },
{ {
key: '2', key: '2',
label: '已通过审核', label: '已通过审核',
value: '已通过审核',
amount: '77', amount: '77',
color: '#3ABD79' color: '#3ABD79'
}, },
{ {
key: '3', key: '3',
label: '未通过审核', label: '未通过审核',
value: '未通过审核',
amount: '1', amount: '1',
color: '#F8A702' color: '#F8A702'
}, },
...@@ -100,26 +106,49 @@ export default { ...@@ -100,26 +106,49 @@ export default {
], ],
} }
}, },
methods: { watch: {
handleClick(item) { '$route': {
console.log(item) handler(val) {
if (item.label === "等待审核") { if (val.query) {
this.showUnCheck = true; this.query = {...val.query}
} }
},
immediate: true
} }
}, },
methods: {
handleNewCertificationClick(item) {
this.certificationType = 'new'
this.$router.push({
path: '',
query: {
type: 'new',
status: item.label,
}
})
},
handleCertificationChangeClick(item) {
this.certificationType = 'change'
this.$router.push({
path: '',
query: {
type: 'change',
status: item.label,
}
})
},
},
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.gs_admin_check { .gs_admin_check {
width: 100%;
.dashboard { font-family: PingFangSC-Regular, PingFang SC;
font-weight: 600;
}
.card_wrapper { .card_wrapper {
height: 217px; width: 100%;
background: #FFFFFF; background: #FFFFFF;
border-radius: 2px; border-radius: 2px;
margin-bottom: 14px; margin-bottom: 14px;
...@@ -130,7 +159,6 @@ export default { ...@@ -130,7 +159,6 @@ export default {
height: 57px; height: 57px;
line-height: 56px; line-height: 56px;
font-size: 16px; font-size: 16px;
font-weight: 500;
color: #F26335; color: #F26335;
border-bottom: 1px solid #F3F3F3; border-bottom: 1px solid #F3F3F3;
...@@ -138,13 +166,16 @@ export default { ...@@ -138,13 +166,16 @@ export default {
float: right; float: right;
cursor: pointer; cursor: pointer;
font-size: 13px; font-size: 13px;
font-weight: 400;
color: #F26335; color: #F26335;
} }
} }
.body { .body {
width: 100%;
max-height: 100vh;
padding: 30px 0 30px 40px; padding: 30px 0 30px 40px;
box-sizing: border-box;
overflow: hidden;
} }
.card { .card {
...@@ -152,6 +183,7 @@ export default { ...@@ -152,6 +183,7 @@ export default {
float: left; float: left;
width: 190px; width: 190px;
height: 100px; height: 100px;
margin-bottom: 20px;
background: #FFFFFF; background: #FFFFFF;
box-shadow: 0px 4px 15px 2px rgba(4, 64, 141, 0.08); box-shadow: 0px 4px 15px 2px rgba(4, 64, 141, 0.08);
border-radius: 4px; border-radius: 4px;
...@@ -175,7 +207,6 @@ export default { ...@@ -175,7 +207,6 @@ export default {
.card_title { .card_title {
font-size: 12px; font-size: 12px;
font-weight: 400;
color: #999999; color: #999999;
margin-bottom: 10px; margin-bottom: 10px;
} }
......
<template>
<div class="gs-ac-search-table">
<div v-show="!checkDetail" class="card_wrapper">
<div class="title">{{ query.status }}
<span class="back_btn" @click="$router.push({path:''})">返回</span>
</div>
<div class="body" style="max-height: 100vh;">
<div class="gs-ac-search">
<el-form :inline="true" :model="search">
<div class="search row" style="margin: 15px 0;">
<div class="col-lg-4">
<el-form-item label="分中心名称:" label-width="90px">
<el-select size="small" style="width: 145px" v-model="search.entName">
<el-option
v-for="item in subCenterList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="col-lg-3">
<el-form-item label="状态:" label-width="50px">
<el-select size="small" style="width: 145px" v-model="search.status">
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="col-lg-3">
<el-form-item label="搜索:" label-width="50px">
<el-input size="small" style="width: 145px" v-model="search.entName"></el-input>
</el-form-item>
</div>
<div class="col-lg-2" style="text-align: right">
<el-form-item>
<el-button type="primary" size="small">搜索</el-button>
</el-form-item>
</div>
</div>
</el-form>
</div>
<div class="gs-ac-st-table">
<gs-table
:columns='cols'
:data="result"
:page="page"
height="66vh"
:cell-style="{fontSize:'13px',color: '#414345'}"
header-cell-class-name="gs-ac-st-table-header"
style="width: 100%">
</gs-table>
</div>
</div>
</div>
<CertificationDetail v-if="checkDetail" @back="handleBack" subCenter
:title="checkDetail.entName+'-企业实名认证信息'"></CertificationDetail>
</div>
</template>
<script>
import checked from '../img/checked.png'
import unchecked from '../img/unchecked.png'
import refuse from '../img/refuse.png'
import CertificationDetail from "./certificationDetail";
export default {
name: "CheckSearchTable",
components: {CertificationDetail},
props: {query: Object},
created() {
this.setData()
this.search.status = this.query.status
if (this.query.type === 'new') {
// TODO 查询新增
} else {
// TODO 查询变更
}
},
data() {
return {
page: {},
search: {
status: '',
entName: '',
subCenterName: ''
},
statusList: [
{
value: '等待审核',
},
{
value: '已审核通过',
},
{
value: '未审核通过',
},
],
subCenterList: [],
result: [],
cols: [
{
type: 'status',
label: '状态',
align: 'center',
width: '60px',
renderCell: (value, row) => (
<div>
<img style="width:16px;height:16px" src={(() => this.getIcon(row))()} alt=""/>
</div>
),
},
{
prop: 'type',
label: '业务类型',
},
{
prop: 'username',
label: '用户名',
},
{
prop: 'entName',
label: '企业名称',
renderCell: (value, row) => (
<span class="gs-clickable"
vOn:click_stop_prevent={() => {
this.handleEntNameCheck(row)
}}
>
{value}
</span>
),
},
{
prop: 'entAddress',
label: '企业地址',
},
{
prop: 'user',
label: '经办人',
width: '80px'
},
{
prop: 'mobile',
label: '经办人手机',
width: '120px'
},
{
prop: 'date1',
label: '申请日期',
},
{
prop: 'date2',
label: '审核日期',
},
{
prop: 'center',
label: '所属分中心',
},
{
label: '操作',
renderCell: (value, row) => (
<el-button type="text"
vOn:click_stop_prevent={() => {
this.handleCheck(row)
}}
>
操作
</el-button>
),
},
],
checkDetail: null
}
},
methods: {
handleCheck(row) {
console.log(row)
this.checkDetail = row
},
handleBack() {
this.checkDetail = null
},
handleEntNameCheck(row) {
console.log(row)
},
getIcon(status) {
status = status.status
if (status === 'checked') {
return checked
} else if (status === 'unchecked') {
return unchecked
} else if (status === 'refuse') {
return refuse
}
},
setData() {
for (let i = 0; i < 20; i++) {
this.result.push({
status: 'unchecked',
type: '新增',
username: '厦门皇名',
entName: '厦门皇名酒业有限公司',
entAddress: '福建省厦门市思明区鹭江道268号',
user: '王庆',
mobile: '18098097532',
date1: '2021/06/20 11:20:40',
date2: '',
center: '厦门办事处',
})
}
}
},
}
</script>
<style lang="scss">
.gs-ac-search-table {
width: 100%;
height: 100%;
.card_wrapper {
width: 100%;
background: #FFFFFF;
border-radius: 2px;
margin-bottom: 14px;
.title {
padding-left: 40px;
padding-right: 30px;
height: 57px;
line-height: 56px;
font-size: 16px;
color: #F26335;
border-bottom: 1px solid #F3F3F3;
.back_btn {
float: right;
cursor: pointer;
font-size: 13px;
color: #F26335;
}
}
.body {
display: flex;
flex-direction: column;
overflow: hidden;
width: 100%;
padding: 0 40px 30px;
}
}
.gs-ac-search {
flex: 0 0 90px;
padding-top: 20px;
}
.el-form--inline {
.el-form-item {
.el-form-item__label {
overflow: hidden;
}
//display: flex;
margin-right: 0;
}
}
.gs-ac-st-table {
width: 100%;
flex: 1;
overflow: hidden;
}
.el-table .gs-ac-st-table-header {
background: #F7F7F7;
padding: 0;
height: 50px;
font-size: 12px;
font-weight: 600;
color: #414345;
overflow: hidden;
& + .gs-ac-st-table-header {
//border-left: 1px solid white;
}
}
}
</style>
<template> <template>
<div class="gs-admin-ent-info">
<div v-show="!checkDetail" class="card_wrapper">
<div class="title">企业信息修改</div>
<div class="body" style="max-height: 100vh;">
<div class="gs-ac-search">
<el-form :inline="true" :model="search">
<div class="search row" style="margin: 15px 0;">
<div class="col-lg-5">
<el-form-item label="分中心名称:" label-width="90px">
<el-select size="small" style="width: 245px" v-model="search.entName">
<el-option
v-for="item in subCenterList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="col-lg-5">
<el-form-item label="企业名称:" label-width="90px">
<el-input size="small" style="width: 245px" v-model="search.entName"></el-input>
</el-form-item>
</div>
<div class="col-lg-2" style="text-align: right">
<el-form-item>
<el-button type="primary" size="small">搜索</el-button>
</el-form-item>
</div>
</div>
</el-form>
</div>
<div class="gs-ac-st-table">
<gs-table
:columns='cols'
:data="result"
:page="page"
height="66vh"
:cell-style="{fontSize:'13px',color: '#414345'}"
header-cell-class-name="gs-ac-st-table-header"
style="width: 100%">
</gs-table>
</div>
</div>
</div>
<CertificationDetail v-if="checkDetail"
@back="handleBack"
:title="checkDetail.entName"
reset
></CertificationDetail>
</div>
</template> </template>
<script> <script>
import CertificationDetail from "./certificationDetail";
export default { export default {
name: "index" components: {CertificationDetail},
created() {
this.setData()
},
data() {
return {
page: {},
search: {
status: '',
entName: '',
subCenterName: ''
},
statusList: [
{
value: '等待审核',
},
{
value: '已审核通过',
},
{
value: '未审核通过',
},
],
subCenterList: [],
result: [],
cols: [
{
type: 'index',
label: '序号',
align: 'center',
width: '60px',
},
{
prop: 'entName',
label: '企业名称',
width: '200px',
},
{
prop: 'center',
label: '所属分中心',
},
{
prop: 'date',
label: '上传时间',
},
{
label: '操作',
width: '110px',
renderCell: (value, row) => (
<div>
<el-button type="text"
vOn:click_stop_prevent={() => {
this.handleCheck(row)
}}
>
查看
</el-button>
<el-button type="text"
vOn:click_stop_prevent={() => {
this.handleEdit(row)
}}
>
编辑
</el-button>
</div>
),
},
],
checkDetail: null,
editDetail: null
}
},
methods: {
handleCheck(row) {
console.log(row)
this.checkDetail = row
},
handleEdit(row) {
console.log(row)
this.editDetail = row
},
handleBack() {
this.checkDetail = null
this.editDetail = row
},
handleEntNameCheck(row) {
console.log(row)
},
setData() {
for (let i = 0; i < 20; i++) {
this.result.push({
entName: '厦门皇名酒业有限公司',
date: '2021/06/20 11:20:40',
center: '厦门办事处',
})
}
}
},
} }
</script> </script>
<style scoped> <style lang="scss">
.gs-admin-ent-info {
width: 100%;
height: 100%;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 600;
.card_wrapper {
width: 100%;
background: #FFFFFF;
border-radius: 2px;
margin-bottom: 14px;
.title {
padding-left: 40px;
padding-right: 30px;
height: 57px;
line-height: 56px;
font-size: 16px;
color: #F26335;
border-bottom: 1px solid #F3F3F3;
.back_btn {
float: right;
cursor: pointer;
font-size: 13px;
color: #F26335;
}
}
.body {
display: flex;
flex-direction: column;
overflow: hidden;
width: 100%;
padding: 0 40px 30px;
}
}
.gs-ac-search {
flex: 0 0 90px;
padding-top: 20px;
}
.el-form--inline {
.el-form-item {
.el-form-item__label {
overflow: hidden;
}
//display: flex;
margin-right: 0;
}
}
.gs-ac-st-table {
width: 100%;
flex: 1;
overflow: hidden;
}
.el-table .gs-ac-st-table-header {
background: #F7F7F7;
padding: 0;
height: 50px;
font-size: 12px;
font-weight: 600;
color: #414345;
overflow: hidden;
& + .gs-ac-st-table-header {
//border-left: 1px solid white;
}
}
}
</style> </style>
<template> <template>
<div class="gs-admin-status-change">
<div class="card_wrapper">
<div class="title">日志查看</div>
<div class="body" style="max-height: 100vh;">
<div class="gs-ac-search">
<el-form :inline="true" :model="search">
<div class="search row" style="margin: 15px 0;">
<div class="col-lg-4">
<el-form-item label="分中心名称:" label-width="90px">
<el-select size="small" style="width: 145px" v-model="search.entName">
<el-option
v-for="item in subCenterList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="col-lg-3">
<el-form-item label="状态:" label-width="50px">
<el-select size="small" style="width: 145px" v-model="search.status">
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="col-lg-3">
<el-form-item label="搜索:" label-width="50px">
<el-input size="small" style="width: 145px" v-model="search.entName"></el-input>
</el-form-item>
</div>
<div class="col-lg-2" style="text-align: right">
<el-form-item>
<el-button type="primary" size="small">搜索</el-button>
</el-form-item>
</div>
</div>
</el-form>
</div>
<div class="gs-ac-st-table">
<gs-table
:columns='cols'
:data="result"
:page="page"
height="66vh"
:cell-style="{fontSize:'13px',color: '#414345'}"
header-cell-class-name="gs-ac-st-table-header"
style="width: 100%">
</gs-table>
</div>
</div>
</div>
</div>
</template> </template>
<script> <script>
export default { export default {
name: "index" created() {
this.setData()
},
data() {
return {
page: {},
search: {
status: '',
entName: '',
subCenterName: ''
},
statusList: [
{
value: '等待审核',
},
{
value: '已审核通过',
},
{
value: '未审核通过',
},
],
subCenterList: [],
result: [],
cols: [
{
type: 'index',
label: '序号',
align: 'center',
width: '60px',
},
{
prop: 'entName',
label: '企业名称',
width: '170px',
},
{
prop: 'center',
label: '所属分中心',
},
{
prop: 'status1',
label: '原审核状态',
},
{
prop: 'status2',
label: '修改后审核状态',
width: '120px',
renderCell: (value, row) => (
<span style={{color: value === '审核失败' ? '#F31F1F' : '#02B4A1'}}>
{value}
</span>
),
},
{
prop: 'reason',
label: '修改原因',
width: '90px'
},
{
prop: 'modify',
label: '修改人',
width: '80px'
},
{
prop: 'date1',
label: '修改日期',
},
{
prop: 'ip',
label: 'IP',
width: '130px',
},
],
}
},
methods: {
setData() {
for (let i = 0; i < 20; i++) {
this.result.push({
status1: '审核失败',
status2: '审核成功',
entName: '厦门皇名酒业有限公司',
reason: '',
modify: '王庆',
date1: '2021/06/20 11:20:40',
center: '厦门办事处',
ip: '162:13:12:0',
})
}
}
},
} }
</script> </script>
<style scoped> <style lang="scss">
.gs-admin-status-change {
width: 100%;
height: 100%;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 600;
.card_wrapper {
width: 100%;
background: #FFFFFF;
border-radius: 2px;
margin-bottom: 14px;
.title {
padding-left: 40px;
padding-right: 30px;
height: 57px;
line-height: 56px;
font-size: 16px;
color: #F26335;
border-bottom: 1px solid #F3F3F3;
.back_btn {
float: right;
cursor: pointer;
font-size: 13px;
color: #F26335;
}
}
.body {
display: flex;
flex-direction: column;
overflow: hidden;
width: 100%;
padding: 0 40px 30px;
}
}
.gs-ac-search {
flex: 0 0 90px;
padding-top: 20px;
}
.el-form--inline {
.el-form-item {
.el-form-item__label {
overflow: hidden;
}
//display: flex;
margin-right: 0;
}
}
.gs-ac-st-table {
width: 100%;
flex: 1;
overflow: hidden;
}
.el-table .gs-ac-st-table-header {
background: #F7F7F7;
padding: 0;
height: 50px;
font-size: 12px;
font-weight: 600;
color: #414345;
overflow: hidden;
& + .gs-ac-st-table-header {
//border-left: 1px solid white;
}
}
}
</style> </style>
<template> <template>
<div class="gs-admin-status-change">
<div v-show="!checkDetail" class="card_wrapper">
<div class="title">审核状态修改</div>
<div class="body" style="max-height: 100vh;">
<div class="gs-ac-search">
<el-form :inline="true" :model="search">
<div class="search row" style="margin: 15px 0;">
<div class="col-lg-4">
<el-form-item label="分中心名称:" label-width="90px">
<el-select size="small" style="width: 145px" v-model="search.entName">
<el-option
v-for="item in subCenterList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="col-lg-3">
<el-form-item label="状态:" label-width="50px">
<el-select size="small" style="width: 145px" v-model="search.status">
<el-option
v-for="item in statusList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="col-lg-3">
<el-form-item label="搜索:" label-width="50px">
<el-input size="small" style="width: 145px" v-model="search.entName"></el-input>
</el-form-item>
</div>
<div class="col-lg-2" style="text-align: right">
<el-form-item>
<el-button type="primary" size="small">搜索</el-button>
</el-form-item>
</div>
</div>
</el-form>
</div>
<div class="gs-ac-st-table">
<gs-table
:columns='cols'
:data="result"
:page="page"
height="66vh"
:cell-style="{fontSize:'13px',color: '#414345'}"
header-cell-class-name="gs-ac-st-table-header"
style="width: 100%">
</gs-table>
</div>
</div>
</div>
<CertificationDetail v-if="checkDetail"
@back="handleBack"
:title="checkDetail.entName"
reset
></CertificationDetail>
</div>
</template> </template>
<script> <script>
import CertificationDetail from "./certificationDetail";
export default { export default {
name: "index" components: {CertificationDetail},
created() {
this.setData()
},
data() {
return {
page: {},
search: {
status: '',
entName: '',
subCenterName: ''
},
statusList: [
{
value: '等待审核',
},
{
value: '已审核通过',
},
{
value: '未审核通过',
},
],
subCenterList: [],
result: [],
cols: [
{
type: 'index',
label: '序号',
align: 'center',
width: '60px',
},
{
prop: 'entName',
label: '企业名称',
width: '200px',
},
{
prop: 'center',
label: '所属分中心',
},
{
prop: 'status1',
label: '原审核状态',
},
{
prop: 'status2',
label: '原审核状态',
renderCell: (value, row) => (
<span style={{color: value === '审核失败' ? '#F31F1F' : '#02B4A1'}}>
{value}
</span>
),
},
{
prop: 'modify',
label: '修改人',
width: '80px'
},
{
prop: 'date1',
label: '修改日期',
},
{
label: '操作',
width: '80px',
renderCell: (value, row) => (
<el-button type="text"
vOn:click_stop_prevent={() => {
this.handleCheck(row)
}}
>
操作
</el-button>
),
},
],
checkDetail: null
}
},
methods: {
handleCheck(row) {
console.log(row)
this.checkDetail = row
},
handleBack() {
this.checkDetail = null
},
handleEntNameCheck(row) {
console.log(row)
},
setData() {
for (let i = 0; i < 20; i++) {
this.result.push({
status1: '审核失败',
status2: '审核成功',
type: '新增',
entName: '厦门皇名酒业有限公司',
entAddress: '福建省厦门市思明区鹭江道268号',
modify: '王庆',
date1: '2021/06/20 11:20:40',
center: '厦门办事处',
})
}
}
},
} }
</script> </script>
<style scoped> <style lang="scss">
.gs-admin-status-change {
width: 100%;
height: 100%;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 600;
.card_wrapper {
width: 100%;
background: #FFFFFF;
border-radius: 2px;
margin-bottom: 14px;
.title {
padding-left: 40px;
padding-right: 30px;
height: 57px;
line-height: 56px;
font-size: 16px;
color: #F26335;
border-bottom: 1px solid #F3F3F3;
.back_btn {
float: right;
cursor: pointer;
font-size: 13px;
color: #F26335;
}
}
.body {
display: flex;
flex-direction: column;
overflow: hidden;
width: 100%;
padding: 0 40px 30px;
}
}
.gs-ac-search {
flex: 0 0 90px;
padding-top: 20px;
}
.el-form--inline {
.el-form-item {
.el-form-item__label {
overflow: hidden;
}
//display: flex;
margin-right: 0;
}
}
.gs-ac-st-table {
width: 100%;
flex: 1;
overflow: hidden;
}
.el-table .gs-ac-st-table-header {
background: #F7F7F7;
padding: 0;
height: 50px;
font-size: 12px;
font-weight: 600;
color: #414345;
overflow: hidden;
& + .gs-ac-st-table-header {
//border-left: 1px solid white;
}
}
}
</style> </style>
...@@ -130,7 +130,7 @@ export default { ...@@ -130,7 +130,7 @@ export default {
// 1. 未申请条码 // 1. 未申请条码
// 2.系统成员 // 2.系统成员
// 3.管理员 // 3.管理员
this.userType = UN_VERIFY; this.userType = ADMIN;
if (this.userType === UN_VERIFY) { if (this.userType === UN_VERIFY) {
this.$store.commit("system/SET_SUB_NAV", this.routerList); this.$store.commit("system/SET_SUB_NAV", this.routerList);
} else if (this.userType === SYSTEM_MEMBER) { } else if (this.userType === SYSTEM_MEMBER) {
......
...@@ -2618,6 +2618,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: ...@@ -2618,6 +2618,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
safe-buffer "^5.0.1" safe-buffer "^5.0.1"
sha.js "^2.4.8" sha.js "^2.4.8"
cross-env@^5.0.5:
version "5.2.1"
resolved "https://registry.nlark.com/cross-env/download/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d"
integrity sha1-ssdsHKet1m3IdNEXmEZglPVRs00=
dependencies:
cross-spawn "^6.0.5"
cross-spawn@^3.0.0: cross-spawn@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.nlark.com/cross-spawn/download/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" resolved "https://registry.nlark.com/cross-spawn/download/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982"
...@@ -4197,9 +4204,9 @@ glob-to-regexp@^0.3.0: ...@@ -4197,9 +4204,9 @@ glob-to-regexp@^0.3.0:
resolved "https://registry.nlark.com/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" resolved "https://registry.nlark.com/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4:
version "7.2.0" version "7.2.0"
resolved "https://registry.npmmirror.com/glob/download/glob-7.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fglob%2Fdownload%2Fglob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" resolved "https://registry.npmmirror.com/glob/download/glob-7.2.0.tgz?cache=0&sync_timestamp=1632353796482&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fglob%2Fdownload%2Fglob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha1-0VU1r3cy4C6Uj0xBYovZECk/YCM= integrity sha1-0VU1r3cy4C6Uj0xBYovZECk/YCM=
dependencies: dependencies:
fs.realpath "^1.0.0" fs.realpath "^1.0.0"
...@@ -4669,6 +4676,13 @@ in-publish@^2.0.0: ...@@ -4669,6 +4676,13 @@ in-publish@^2.0.0:
resolved "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" resolved "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c"
integrity sha1-lIsaU1yAMFYc6lIvc/ePS+NX4Aw= integrity sha1-lIsaU1yAMFYc6lIvc/ePS+NX4Aw=
increase-memory-limit@^1.0.3:
version "1.0.7"
resolved "https://registry.nlark.com/increase-memory-limit/download/increase-memory-limit-1.0.7.tgz#80417e736e45fcfd6a3d515b435e2eaea4e62233"
integrity sha1-gEF+c25F/P1qPVFbQ14urqTmIjM=
dependencies:
glob "^7.1.1"
indent-string@^2.1.0: indent-string@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.nlark.com/indent-string/download/indent-string-2.1.0.tgz?cache=0&sync_timestamp=1618847271946&other_urls=https%3A%2F%2Fregistry.nlark.com%2Findent-string%2Fdownload%2Findent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" resolved "https://registry.nlark.com/indent-string/download/indent-string-2.1.0.tgz?cache=0&sync_timestamp=1618847271946&other_urls=https%3A%2F%2Fregistry.nlark.com%2Findent-string%2Fdownload%2Findent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
......
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