flat:暂存

This commit is contained in:
史典卓
2025-03-26 14:52:22 +08:00
parent 15fda3a485
commit a066de010e
17 changed files with 545 additions and 485 deletions

View File

@@ -1,5 +1,5 @@
VUE_APP_SITE='default' VUE_APP_SITE='default'
VUE_APP_LOGIN_ERROR = http://10.160.7.216:9920/casserver/login VUE_APP_LOGIN_ERROR = http://10.160.7.216:9920/casserver/login
VUE_APP_REPLACE_STR = {"{oss_file_url}": "http://39.98.184.58:8000", "https://dy12333.org.cn/api/jobslink-api/front/file": "http://39.98.184.58:8000/jobslink-api/front/file"} VUE_APP_REPLACE_STR = {"{oss_file_url}": "http://39.98.44.136:8082", "https://dy12333.org.cn/api/jobslink-api/front/file": "http://39.98.44.136:8082/jobslink-api/front/file"}
VUE_APP_LOGIN_NEXT = http://10.160.7.216:9920/casserver/login?service=http://39.98.184.58/manage/login&stService=http%3A%2F%2F39.98.184.58%2Fmanage%2Flogin VUE_APP_LOGIN_NEXT = http://10.160.7.216:9920/casserver/login?service=http://39.98.184.58/manage/login&stService=http%3A%2F%2F39.98.184.58%2Fmanage%2Flogin
VUE_APP_SUPPER_MAP = http://10.165.0.44:1205/proxy/rest/maps/c02c6f51f3ab4190bffd5e3e54cf5ac4/111013e9067749488d44841208771768 VUE_APP_SUPPER_MAP = http://10.165.0.44:1205/proxy/rest/maps/c02c6f51f3ab4190bffd5e3e54cf5ac4/111013e9067749488d44841208771768

1
.gitignore vendored
View File

@@ -36,3 +36,4 @@ Thumbs.db
# Mac # # Mac #
.DS_Store .DS_Store
._.DS_Store ._.DS_Store
!/manage/

View File

@@ -1,9 +1,9 @@
<template> <template>
<!-- <div v-if="jlHelpShow" class="jl-help" :style="{'height': height, 'width': width +'px'}">--> <!-- <div v-if="jlHelpShow" class="jl-help" :style="{'height': height, 'width': width +'px'}">-->
<div class="jl-help avue-right-sidebar" :class="{'jl-help-active': jlHelpShow}"> <div class="jl-help avue-right-sidebar" :class="{'jl-help-active': jlHelpShow}">
<div v-if="jlHelpShow"> <div v-if="jlHelpShow">
<div class="jl-switch"> <div class="jl-switch">
{{helpSwitch}} {{ helpSwitch }}
<el-switch <el-switch
v-model="switchValue" v-model="switchValue"
@change="switchHelp" @change="switchHelp"
@@ -20,8 +20,8 @@
暂无内容 暂无内容
</div> </div>
<div class="jl-small-title" v-for="(item, index) in policyList" :key="index" @click="lookNews(item)"> <div class="jl-small-title" v-for="(item, index) in policyList" :key="index" @click="lookNews(item)">
<span>[{{item.secondName}}]</span> <span>[{{ item.secondName }}]</span>
<p>{{item.title}}</p> <p>{{ item.title }}</p>
</div> </div>
</div> </div>
@@ -39,8 +39,8 @@
暂无内容 暂无内容
</div> </div>
<div class="jl-small-title" v-for="(item, index) in questionList" :key="index" @click="lookNews(item)"> <div class="jl-small-title" v-for="(item, index) in questionList" :key="index" @click="lookNews(item)">
<span>[{{item.secondName}}]</span> <span>[{{ item.secondName }}]</span>
<p>{{item.title}}</p> <p>{{ item.title }}</p>
</div> </div>
</div> </div>
@@ -66,7 +66,7 @@
<div class="big-blank"></div> <div class="big-blank"></div>
<div class="jl-user"> <div class="jl-user">
<div class="jl-head-portrait"> <div class="jl-head-portrait">
<img src="../../../public/img/help/portrait.png" height="42" width="42"/> <img src="/img/help/portrait.png" height="42" width="42"/>
</div> </div>
<div class="jl-userInfo"> <div class="jl-userInfo">
<p class="name">您好我是小助手</p> <p class="name">您好我是小助手</p>
@@ -91,7 +91,7 @@
<p class="jl-help-title">服务热线</p> <p class="jl-help-title">服务热线</p>
<div class="medium-blank"></div> <div class="medium-blank"></div>
<div class="jl-help-phone"> <div class="jl-help-phone">
<img src="../../../public/img/help/phone.png" height="20" width="20"/> <img src="/img/help/phone.png" height="20" width="20"/>
<p>185-0020-6848</p> <p>185-0020-6848</p>
</div> </div>
<div class="jl-help-time"> <div class="jl-help-time">
@@ -114,207 +114,231 @@
</template> </template>
<script> <script>
import {mapState, mapGetters} from "vuex"; import {mapState, mapGetters} from "vuex";
import { import {
getStore, getStore,
} from '@/util/store' } from '@/util/store'
export default {
name: "index", export default {
props: { name: "index",
helpShow: { props: {
default: true, helpShow: {
type: Boolean default: true,
} type: Boolean
},
data () {
return {
switchValue: true,
drawer: false,
direction: 'rtl',
drawerSize: '1000px',
content: '',
height: 0,
}
},
watch: {},
methods: {
// 每次点击时进行切换;修改状态在整个系统生效;
switchHelp (v) {
var helpSwitch = v ? 1 : 2
this.$store.dispatch('jlHelpSwitch', helpSwitch)
},
lookNews(item){
this.drawer = true
this.content = item.content
}
},
computed: {
...mapState({
helpTag: state => state.common.helpTag,
helpList: state => state.common.helpList,
}),
jlHelpShow () {
return this.helpTag
},
helpSwitch () {
var helpSwitch = this.$store.state.common.helpSwitch
var status = helpSwitch === 1 ? true : false;
this.switchValue = status
return ''
},
policyList () {
return this.helpList.contentListPolicy
},
questionList () {
return this.helpList.contentListQuestion
},
carouselVoList () {
return this.helpList.carouselVoList
}
}
} }
},
data() {
return {
switchValue: true,
drawer: false,
direction: 'rtl',
drawerSize: '1000px',
content: '',
height: 0,
}
},
watch: {},
methods: {
// 每次点击时进行切换;修改状态在整个系统生效;
switchHelp(v) {
var helpSwitch = v ? 1 : 2
this.$store.dispatch('jlHelpSwitch', helpSwitch)
},
lookNews(item) {
this.drawer = true
this.content = item.content
}
},
computed: {
...mapState({
helpTag: state => state.common.helpTag,
helpList: state => state.common.helpList,
}),
jlHelpShow() {
return this.helpTag
},
helpSwitch() {
var helpSwitch = this.$store.state.common.helpSwitch
var status = helpSwitch === 1 ? true : false;
this.switchValue = status
return ''
},
policyList() {
return this.helpList.contentListPolicy
},
questionList() {
return this.helpList.contentListQuestion
},
carouselVoList() {
return this.helpList.carouselVoList
}
}
}
</script> </script>
<style scoped> <style scoped>
p { p {
margin: 0!important; margin: 0 !important;
} }
.big-blank{
height:24px;
}
.medium-blank{
height:16px;
}
.small-blank{
height:12px;
}
.jl-switch{
height: 40px;border-bottom:1px solid #f6f6f6;
margin-left: -20px;margin-right: -20px;line-height: 40px;padding-left:20px;
}
.jl-hr{
width: 198px;
height: 1px;
background-color: rgba(0, 0, 0, 0.08);
}
.jl-help-active{
border-top:1px solid #f6f6f6;
border-left:1px solid #f6f6f6;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
width: 240px !important;
overflow: auto;min-height: 500px;
height: calc(100% - 64px);
background-color: #FFFFFF;
padding: 0 20px 20px 20px;
}
.jl-help{
width: 0;
}
.jl-help-title{ .big-blank {
font-weight: bold; height: 24px;
}
height: 19px; .medium-blank {
font-size: 14px; height: 16px;
color: rgba(0, 0, 0, 0.8); }
line-height: 19px;
}
.jl-small-title:hover p{ .small-blank {
color: rgba(0, 0, 0, 1) !important; height: 12px;
} }
.jl-small-title:hover span{
color: rgba(0, 0, 0, 1) !important;
}
.jl-small-title{
display: flex;
font-size: 12px;
margin-bottom: 12px;
cursor: pointer;
}
.jl-small-title span{
color: rgba(0, 0, 0, 0.4);
margin-right:12px;
}
.jl-small-title p{
color: rgba(0, 0, 0, 0.7);
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.jl-advertisement .img{ .jl-switch {
width: 198px; height: 40px;
height: 120px; border-bottom: 1px solid #f6f6f6;
background-color: #e3e3e3; margin-left: -20px;
border-radius: 4px; margin-right: -20px;
} line-height: 40px;
padding-left: 20px;
}
.jl-user{ .jl-hr {
display: flex; width: 198px;
align-items: center; height: 1px;
font-size: 12px; background-color: rgba(0, 0, 0, 0.08);
} }
.jl-user .jl-head-portrait{
width: 56px;
height: 56px;
border-radius: 50%;
border: 1px solid #fdfef8;
text-align: center;
line-height: 44px;
background-color: #fdfef8;
margin-right: 8px;
}
.jl-userInfo{
font-size: 15px;
line-height: 20px;
}
.jl-userInfo .name{
color: rgba(0, 0, 0, 0.7);
}
.jl-userInfo .tip{
color: #419EFF;
}
.jl-help-code{ .jl-help-active {
display: flex; border-top: 1px solid #f6f6f6;
align-items: center; border-left: 1px solid #f6f6f6;
flex-flow: column; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
} width: 240px !important;
.jl-help-code .img{ overflow: auto;
background: url("/manage/img/kefu.jpg") no-repeat; min-height: 500px;
background-size: 126px 126px; height: calc(100% - 64px);
width: 126px; background-color: #FFFFFF;
height: 126px; padding: 0 20px 20px 20px;
} }
.jl-help-code-tips{
width: 120px;
height: 17px;
font-size: 12px;
font-weight: 400;
color: rgba(0, 0, 0, 0.4);
line-height: 17px;
/*margin-bottom: 20px;*/
margin-top: 16px;
}
.jl-help-phone{ .jl-help {
display: flex; width: 0;
align-items: center; }
font-size: 20px;
font-weight: 600;
color: rgba(0, 0, 0, 0.8);
}
.jl-help-phone img{
margin-right: 14px;
}
.jl-help-time{ .jl-help-title {
font-size: 12px; font-weight: bold;
color: rgba(0, 0, 0, 0.4);
line-height: 16px; height: 19px;
margin-top: 9px; font-size: 14px;
} color: rgba(0, 0, 0, 0.8);
line-height: 19px;
}
.jl-small-title:hover p {
color: rgba(0, 0, 0, 1) !important;
}
.jl-small-title:hover span {
color: rgba(0, 0, 0, 1) !important;
}
.jl-small-title {
display: flex;
font-size: 12px;
margin-bottom: 12px;
cursor: pointer;
}
.jl-small-title span {
color: rgba(0, 0, 0, 0.4);
margin-right: 12px;
}
.jl-small-title p {
color: rgba(0, 0, 0, 0.7);
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.jl-advertisement .img {
width: 198px;
height: 120px;
background-color: #e3e3e3;
border-radius: 4px;
}
.jl-user {
display: flex;
align-items: center;
font-size: 12px;
}
.jl-user .jl-head-portrait {
width: 56px;
height: 56px;
border-radius: 50%;
border: 1px solid #fdfef8;
text-align: center;
line-height: 44px;
background-color: #fdfef8;
margin-right: 8px;
}
.jl-userInfo {
font-size: 15px;
line-height: 20px;
}
.jl-userInfo .name {
color: rgba(0, 0, 0, 0.7);
}
.jl-userInfo .tip {
color: #419EFF;
}
.jl-help-code {
display: flex;
align-items: center;
flex-flow: column;
}
.jl-help-code .img {
background: url("/manage/img/kefu.jpg") no-repeat;
background-size: 126px 126px;
width: 126px;
height: 126px;
}
.jl-help-code-tips {
width: 120px;
height: 17px;
font-size: 12px;
font-weight: 400;
color: rgba(0, 0, 0, 0.4);
line-height: 17px;
/*margin-bottom: 20px;*/
margin-top: 16px;
}
.jl-help-phone {
display: flex;
align-items: center;
font-size: 20px;
font-weight: 600;
color: rgba(0, 0, 0, 0.8);
}
.jl-help-phone img {
margin-right: 14px;
}
.jl-help-time {
font-size: 12px;
color: rgba(0, 0, 0, 0.4);
line-height: 16px;
margin-top: 9px;
}
</style> </style>

View File

@@ -8,7 +8,7 @@
<div class="basic-info"> <div class="basic-info">
<div class="avatar"> <div class="avatar">
<img src="/manage/svg/avatar.svg" style="display:inline-block;width:100%;height:auto;" /> <img src="/svg/avatar.svg" style="display:inline-block;width:100%;height:auto;"/>
<i <i
class="iconfont iconnan" class="iconfont iconnan"
style="position:absolute;top:5px;right:5px;" style="position:absolute;top:5px;right:5px;"
@@ -19,16 +19,16 @@
<table> <table>
<tr> <tr>
<td>{{data.realName}}</td> <td>{{ data.realName }}</td>
<td>{{data.age}}</td> <td>{{ data.age }}</td>
<td style="padding-left:120px">身份</td> <td style="padding-left:120px">身份</td>
<td>灵活用工</td> <td>灵活用工</td>
</tr> </tr>
<tr> <tr>
<td>联系方式</td> <td>联系方式</td>
<td>{{data.telphone}}</td> <td>{{ data.telphone }}</td>
<td style="padding-left:120px">期望地点</td> <td style="padding-left:120px">期望地点</td>
<td>{{getCity(data.cityId)}}</td> <td>{{ getCity(data.cityId) }}</td>
</tr> </tr>
</table> </table>
</div> </div>
@@ -37,21 +37,21 @@
<b>期望行业</b> <b>期望行业</b>
</div> </div>
<div class="content"> <div class="content">
<el-tag v-for="(item,index) in data.list" :key="index">{{item.trade}}</el-tag> <el-tag v-for="(item,index) in data.list" :key="index">{{ item.trade }}</el-tag>
</div> </div>
<div class="title"> <div class="title">
<b>具备技能</b> <b>具备技能</b>
</div> </div>
<div class="content"> <div class="content">
<el-tag type="success" v-for="(item,index) in data.list" :key="index">{{item.worktypes}}</el-tag> <el-tag type="success" v-for="(item,index) in data.list" :key="index">{{ item.worktypes }}</el-tag>
</div> </div>
<div class="title"> <div class="title">
<b>技能水平</b> <b>技能水平</b>
</div> </div>
<div class="content"> <div class="content">
<el-tag type="danger" v-for="(item,index) in data.list" :key="index">{{item.skills}}</el-tag> <el-tag type="danger" v-for="(item,index) in data.list" :key="index">{{ item.skills }}</el-tag>
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
@@ -60,16 +60,13 @@
<script> <script>
import { getDetail } from "@/api/tenant/resume"; import {getDetail} from "@/api/tenant/resume";
// import {mapGetters} from "vuex"; // import {mapGetters} from "vuex";
export default { export default {
comments: { comments: {},
components: {},
}, data() {
components: {
},
data () {
return { return {
userId: '', userId: '',
loading: false, loading: false,
@@ -77,25 +74,22 @@ export default {
data: {} data: {}
} }
}, },
computed: { computed: {},
}, watch: {},
watch: {
},
methods: { methods: {
getCity (val) { getCity(val) {
if (val) { if (val) {
return this.$store.getters.getAreaParents(val)[0].label + this.$store.getters.getAreaParents(val)[1].label return this.$store.getters.getAreaParents(val)[0].label + this.$store.getters.getAreaParents(val)[1].label
} }
}, },
/*打开drawer*/ /*打开drawer*/
openDialog (row) { openDialog(row) {
this.userId = row.userId; this.userId = row.userId;
this.drawer = true; this.drawer = true;
this.getDetail(); this.getDetail();
}, },
/*加载数据*/ /*加载数据*/
getDetail () { getDetail() {
this.loading = true; this.loading = true;
getDetail(this.userId).then(res => { getDetail(this.userId).then(res => {
const data = res.data.data; const data = res.data.data;
@@ -111,6 +105,7 @@ export default {
.page { .page {
/* padding: 0 30px; */ /* padding: 0 30px; */
} }
.page .title { .page .title {
margin-bottom: 20px; margin-bottom: 20px;
font-size: 16px; font-size: 16px;
@@ -130,10 +125,12 @@ export default {
width: 120px; width: 120px;
margin-right: 100px; margin-right: 100px;
} }
.page .basic-info table { .page .basic-info table {
border-collapse: separate; border-collapse: separate;
border-spacing: 0px 20px; border-spacing: 0px 20px;
} }
.page .basic-info table tr td { .page .basic-info table tr td {
min-width: 100px; min-width: 100px;
} }
@@ -141,6 +138,7 @@ export default {
.page .content { .page .content {
margin-bottom: 30px; margin-bottom: 30px;
} }
.el-tag { .el-tag {
margin-right: 10px; margin-right: 10px;
} }

View File

@@ -1,198 +1,202 @@
<template> <template>
<div class="avue-contail" :class="{ 'avue--collapse': isCollapse }" v-if="isRouterAlive"> <div class="avue-contail" :class="{ 'avue--collapse': isCollapse }" v-if="isRouterAlive">
<div class="avue-header"> <div class="avue-header">
<!-- 顶部导航栏 --> <!-- 顶部导航栏 -->
<top ref="top" /> <top ref="top"/>
<div class="avue-helpText" v-if="helpShow" :class="{'avue-helpText-active':helpTag}" @click="jlHelpChange"> <div class="avue-helpText" v-if="helpShow" :class="{'avue-helpText-active':helpTag}" @click="jlHelpChange">
<div class="text"> <div class="text">
<img src="../../../public/img/help/icon.png" height="20" width="20"/> <img src="/img/help/icon.png" height="20" width="20"/>
<span>帮助中心</span> <span>帮助中心</span>
</div>
<img v-if="!helpTag" src="../../../public/img/help/zuo_jiantou.png" height="16" width="16"/>
<img v-else src="../../../public/img/help/right_jiantou.png" height="16" width="16"/>
</div> </div>
<img v-if="!helpTag" src="/img/help/zuo_jiantou.png" height="16" width="16"/>
<img v-else src="/img/help/right_jiantou.png" height="16" width="16"/>
</div> </div>
<div class="avue-layout">
<div class="avue-left">
<!-- 左侧导航栏 -->
<sidebar />
</div>
<div class="avue-main" :class="{'avue-main-active':helpTag}">
<!-- 顶部标签卡 -->
<tags />
<transition name="fade-scale">
<search class="avue-view" v-show="isSearch"></search>
</transition>
<!-- 主体视图层 -->
<div style="height: 100%; overflow-y: auto; overflow-x: hidden" id="avue-view" v-show="!isSearch">
<keep-alive :include="include" max="10">
<router-view class="avue-view" v-if="$route.meta.$keepAlive" />
</keep-alive>
<router-view class="avue-view" v-if="!$route.meta.$keepAlive" />
</div>
</div>
<!-- 侧边栏 -->
<jl-help></jl-help>
</div>
<div class="avue-shade" @click="showCollapse"></div>
<set-sign-pwd ref="setSignPwd"></set-sign-pwd>
</div> </div>
<div class="avue-layout">
<div class="avue-left">
<!-- 左侧导航栏 -->
<sidebar/>
</div>
<div class="avue-main" :class="{'avue-main-active':helpTag}">
<!-- 顶部标签卡 -->
<tags/>
<transition name="fade-scale">
<search class="avue-view" v-show="isSearch"></search>
</transition>
<!-- 主体视图层 -->
<div style="height: 100%; overflow-y: auto; overflow-x: hidden" id="avue-view" v-show="!isSearch">
<keep-alive :include="include" max="10">
<router-view class="avue-view" v-if="$route.meta.$keepAlive"/>
</keep-alive>
<router-view class="avue-view" v-if="!$route.meta.$keepAlive"/>
</div>
</div>
<!-- 侧边栏 -->
<jl-help></jl-help>
</div>
<div class="avue-shade" @click="showCollapse"></div>
<set-sign-pwd ref="setSignPwd"></set-sign-pwd>
</div>
</template> </template>
<script> <script>
import {mapGetters, mapState} from "vuex"; import {mapGetters, mapState} from "vuex";
import tags from "./tags"; import tags from "./tags";
import search from "./search"; import search from "./search";
import top from "./top/"; import top from "./top/";
import sidebar from "./sidebar/"; import sidebar from "./sidebar/";
import admin from "@/util/admin"; import admin from "@/util/admin";
import { validatenull } from "@/util/validate"; import {validatenull} from "@/util/validate";
import { calcDate } from "@/util/date.js"; import {calcDate} from "@/util/date.js";
import { getStore } from "@/util/store.js"; import {getStore} from "@/util/store.js";
import { resetRouter } from "@/router/router"; import {resetRouter} from "@/router/router";
import {whetherSetSignPwd } from '@/api/manage/econtract'; import {whetherSetSignPwd} from '@/api/manage/econtract';
import setSignPwd from './setSignPwd' import setSignPwd from './setSignPwd'
import jlHelp from '@/components/jl-help' import jlHelp from '@/components/jl-help'
export default { export default {
components: { components: {
top, top,
tags, tags,
search, search,
sidebar, sidebar,
setSignPwd, setSignPwd,
jlHelp jlHelp
}, },
name: "index", name: "index",
provide() { provide() {
return { return {
index: this, index: this,
}; };
}, },
data() { data() {
return { return {
//搜索控制 //搜索控制
isSearch: false, isSearch: false,
//刷新token锁 //刷新token锁
refreshLock: false, refreshLock: false,
//刷新token的时间 //刷新token的时间
refreshTime: "", refreshTime: "",
isRouterAlive: true, isRouterAlive: true,
hasPass:'', hasPass: '',
}; };
}, },
created() { created() {
//实时检测刷新token //实时检测刷新token
this.refreshToken(); this.refreshToken();
},
mounted() {
this.init();
// this.getSignatureStatus();//获取企业是否设置了签章密码
},
activated() {
},
computed: {
...mapGetters([
"isMenu",
"isLock",
"isCollapse",
"website",
"menu",
"trial",
"tagList",
]),
...mapState({
helpTag: state => state.common.helpTag,
helpShow: state => state.common.helpShow
}),
include() {
const arr = [];
Array.prototype.forEach.call(this.tagList, (item) => {
arr.push(item.code);
});
return arr;
}, },
mounted() { },
this.init(); props: [],
// this.getSignatureStatus();//获取企业是否设置了签章密码 methods: {
jlHelpChange() {
this.$store.dispatch('jlHelpTag', !this.helpTag)
}, },
activated() { }, showCollapse() {
computed: { this.$store.commit("SET_COLLAPSE");
...mapGetters([ },
"isMenu", // 初始化
"isLock", init() {
"isCollapse", this.$store.commit("SET_SCREEN", admin.getScreen());
"website", window.onresize = () => {
"menu", setTimeout(() => {
"trial", this.$store.commit("SET_SCREEN", admin.getScreen());
"tagList", }, 0);
]), };
...mapState({ this.$store.dispatch("FlowRoutes").then(() => {
helpTag: state => state.common.helpTag, });
helpShow: state => state.common.helpShow this.$store.dispatch("InitArea");
}), },
include() { getSignatureStatus() {
const arr = []; whetherSetSignPwd().then(res => {
Array.prototype.forEach.call(this.tagList, (item) => { this.hasPass = res.data.data;
arr.push(item.code); if (!this.hasPass) {
this.$refs.setSignPwd.open();
}
})
},
//打开菜单
openMenu(item = {}) {
if (this.$store.state.user.auth === "2") {
this.$store.dispatch("GetMenu", item.id).then((data) => {
resetRouter();
this.$router.$avueRouter.formatRoutes(data, true);
}); });
return arr; }
},
}, },
props: [], // 定时检测token
methods: { refreshToken() {
jlHelpChange () { this.refreshTime = setInterval(() => {
this.$store.dispatch('jlHelpTag', !this.helpTag) const token =
}, getStore({
showCollapse() { name: "token",
this.$store.commit("SET_COLLAPSE"); debug: true,
}, }) || {};
// 初始化 const date = calcDate(token.datetime, new Date().getTime());
init() { if (validatenull(date)) return;
this.$store.commit("SET_SCREEN", admin.getScreen()); if (date.seconds >= this.website.tokenTime && !this.refreshLock) {
window.onresize = () => { this.refreshLock = true;
setTimeout(() => { this.$store
this.$store.commit("SET_SCREEN", admin.getScreen()); .dispatch("refreshToken")
}, 0); .then(() => {
}; this.refreshLock = false;
this.$store.dispatch("FlowRoutes").then(() => { }); })
this.$store.dispatch("InitArea"); .catch(() => {
}, this.refreshLock = false;
getSignatureStatus() { });
whetherSetSignPwd().then(res => {
this.hasPass=res.data.data;
if(!this.hasPass){
this.$refs.setSignPwd.open();
}
})
},
//打开菜单
openMenu(item = {}) {
if (this.$store.state.user.auth === "2") {
this.$store.dispatch("GetMenu", item.id).then((data) => {
resetRouter();
this.$router.$avueRouter.formatRoutes(data, true);
});
} }
}, }, 10000);
// 定时检测token
refreshToken() {
this.refreshTime = setInterval(() => {
const token =
getStore({
name: "token",
debug: true,
}) || {};
const date = calcDate(token.datetime, new Date().getTime());
if (validatenull(date)) return;
if (date.seconds >= this.website.tokenTime && !this.refreshLock) {
this.refreshLock = true;
this.$store
.dispatch("refreshToken")
.then(() => {
this.refreshLock = false;
})
.catch(() => {
this.refreshLock = false;
});
}
}, 10000);
},
}, },
watch: { },
trial() { watch: {
this.$jlEvent("trialCheck").then( trial() {
() => { }, this.$jlEvent("trialCheck").then(
() => { } () => {
); },
}, () => {
isSearch(val) {
if (!val) {
this.isRouterAlive = false;
this.$nextTick(() => {
this.isRouterAlive = true;
});
} }
}, );
}, },
}; isSearch(val) {
if (!val) {
this.isRouterAlive = false;
this.$nextTick(() => {
this.isRouterAlive = true;
});
}
},
},
};
</script> </script>

View File

@@ -1,12 +1,12 @@
<template> <template>
<div class="avue-logo"> <div class="avue-logo">
<transition name="fade"> <transition name="fade">
<span v-if="keyCollapse" class="avue-logo_subtitle" key="0">{{website.logo}}</span> <span v-if="keyCollapse" class="avue-logo_subtitle" key="0">{{ website.logo }}</span>
</transition> </transition>
<transition-group name="fade"> <transition-group name="fade">
<template v-if="!keyCollapse"> <template v-if="!keyCollapse">
<span class="avue-logo_title" style=" display: flex !important; align-items: center !important;" key="1"> <span class="avue-logo_title" style=" display: flex !important; align-items: center !important;" key="1">
<img height="42px" width="200px" src="/manage/svg/logo_dark2.png" alt /> <img height="42px" width="200px" src="/svg/logo_dark2.png" alt/>
</span> </span>
</template> </template>
</transition-group> </transition-group>
@@ -14,13 +14,15 @@
</template> </template>
<script> <script>
import { mapGetters, mapState } from "vuex"; import {mapGetters, mapState} from "vuex";
export default { export default {
name: "logo", name: "logo",
data () { data() {
return {}; return {};
}, },
created () { }, created() {
},
computed: { computed: {
...mapState({ ...mapState({
loginType: (state) => state.user.userInfo.login_type, loginType: (state) => state.user.userInfo.login_type,
@@ -40,16 +42,20 @@ export default {
margin-left: 20px; margin-left: 20px;
} }
} }
.fade-leave-active { .fade-leave-active {
transition: opacity 0.2s; transition: opacity 0.2s;
} }
.fade-enter-active { .fade-enter-active {
transition: opacity 2.5s; transition: opacity 2.5s;
} }
.fade-enter, .fade-enter,
.fade-leave-to { .fade-leave-to {
opacity: 0; opacity: 0;
} }
.avue-logo { .avue-logo {
position: fixed; position: fixed;
top: 0; top: 0;
@@ -64,12 +70,14 @@ export default {
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15); box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
color: rgba(255, 255, 255, 0.8); color: rgba(255, 255, 255, 0.8);
z-index: 1024; z-index: 1024;
&_title { &_title {
display: block; display: block;
text-align: center; text-align: center;
font-weight: 300; font-weight: 300;
font-size: 20px; font-size: 20px;
} }
&_subtitle { &_subtitle {
display: block; display: block;
text-align: center; text-align: center;

View File

@@ -22,14 +22,14 @@
<i v-if="notice.count > 0" class="el-icon-bell" style="color:red"></i> <i v-if="notice.count > 0" class="el-icon-bell" style="color:red"></i>
<i v-else class="el-icon-bell"></i> <i v-else class="el-icon-bell"></i>
<span>客户消息&nbsp;</span> <span>客户消息&nbsp;</span>
<span v-if="notice.count > 0">({{notice.count}})</span> <span v-if="notice.count > 0">({{ notice.count }})</span>
<span v-else-if="notice.count > 10">(99+)</span> <span v-else-if="notice.count > 10">(99+)</span>
</el-button> </el-button>
</div> </div>
</router-link> </router-link>
<div style="margin-top:2px"> <div style="margin-top:2px">
<img class="top-bar__img" src="/manage/img/head.png" /> <img class="top-bar__img" src="/img/head.png"/>
<span class="top-bar__name">{{userInfo.real_name}}</span> <span class="top-bar__name">{{ userInfo.real_name }}</span>
<el-dropdown> <el-dropdown>
<span class="el-dropdown-link"> <span class="el-dropdown-link">
<i class="el-icon-arrow-down el-icon--right"></i> <i class="el-icon-arrow-down el-icon--right"></i>
@@ -43,10 +43,10 @@
<router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link> <router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link>
</el-dropdown-item>--> </el-dropdown-item>-->
<el-dropdown-item> <el-dropdown-item>
<router-link to="/tenant/account/index">{{$t('navbar.accountsafe')}}</router-link> <router-link to="/tenant/account/index">{{ $t('navbar.accountsafe') }}</router-link>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item v-if="auth === '2' && loginType === 'Type-S'" divided> <el-dropdown-item v-if="auth === '2' && loginType === 'Type-S'" divided>
<a href="http://www.jlhrms.com/#/" target="_blank">{{$t('navbar.experienceEntrance')}}</a> <a href="http://www.jlhrms.com/#/" target="_blank">{{ $t('navbar.experienceEntrance') }}</a>
</el-dropdown-item> </el-dropdown-item>
<!-- <el-dropdown-item> <!-- <el-dropdown-item>
<router-link to="/tenant/set/index">{{$t('navbar.set')}}</router-link> <router-link to="/tenant/set/index">{{$t('navbar.set')}}</router-link>
@@ -54,7 +54,7 @@
<!-- <el-dropdown-item> <!-- <el-dropdown-item>
<router-link to="/tenant/company/index">{{$t('navbar.companyindex')}}</router-link> <router-link to="/tenant/company/index">{{$t('navbar.companyindex')}}</router-link>
</el-dropdown-item>--> </el-dropdown-item>-->
<el-dropdown-item @click.native="logout" divided>{{$t('navbar.logOut')}}</el-dropdown-item> <el-dropdown-item @click.native="logout" divided>{{ $t('navbar.logOut') }}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
@@ -62,9 +62,9 @@
</div> </div>
</template> </template>
<script> <script>
import { resetRouter } from "@/router/router"; import {resetRouter} from "@/router/router";
import { mapGetters, mapState } from "vuex"; import {mapGetters, mapState} from "vuex";
import { fullscreenToggel, listenfullscreen } from "@/util/util"; import {fullscreenToggel, listenfullscreen} from "@/util/util";
import topLock from "./top-lock"; import topLock from "./top-lock";
import topMenu from "./top-menu"; import topMenu from "./top-menu";
import topSearch from "./top-search"; import topSearch from "./top-search";
@@ -73,6 +73,7 @@ import topLogs from "./top-logs";
import topColor from "./top-color"; import topColor from "./top-color";
import topNotice from "./top-notice"; import topNotice from "./top-notice";
import topLang from "./top-lang"; import topLang from "./top-lang";
let interval; let interval;
export default { export default {
@@ -91,7 +92,8 @@ export default {
return {}; return {};
}, },
filters: {}, filters: {},
created() {}, created() {
},
mounted() { mounted() {
listenfullscreen(this.setScreen); listenfullscreen(this.setScreen);
if (this.loginType === 'Type-S') { if (this.loginType === 'Type-S') {
@@ -152,7 +154,7 @@ export default {
this.$store.dispatch("LogOut").then(() => { this.$store.dispatch("LogOut").then(() => {
resetRouter(); resetRouter();
this.$store.dispatch('jlHelpShow', false) this.$store.dispatch('jlHelpShow', false)
this.$router.push({ path: "/login" }); this.$router.push({path: "/login"});
}); });
}); });
}, },

View File

@@ -8,7 +8,7 @@
<a href="/home/img/license/YYZZ.jpg" target="blank" <a href="/home/img/license/YYZZ.jpg" target="blank"
><img ><img
height="16" height="16"
src="/manage/img/icon-badge-1.png" src="img/icon-badge-1.png"
/>电子营业执照</a />电子营业执照</a
>&nbsp; >&nbsp;
<a href="/home/img/license/RLZYXKZ.jpg" target="blank" <a href="/home/img/license/RLZYXKZ.jpg" target="blank"

View File

@@ -49,9 +49,9 @@ import {setStore, getStore} from '@/util/store'
let config; let config;
if (process.env.VUE_APP_SITE === "default") { if (process.env.VUE_APP_SITE === "default") {
config = { config = {
logo: "/manage/img/cmanage/logo/default.pn", logo: "/manage/img/cmanage/logo/default.png",
wxTitle: "馆陶县智慧就业服务平台小程序", wxTitle: "馆陶县智慧就业服务平台小程序",
wxImg: "/manage/img/cmanage/wx/xcx/default.jpeg", wxImg: process.env.BASE_URL + "img/cmanage/wx/xcx/default.jpeg",
zixun: "馆陶县智慧就业服务平台资讯", zixun: "馆陶县智慧就业服务平台资讯",
guanyu: "关于馆陶县智慧就业服务平台", guanyu: "关于馆陶县智慧就业服务平台",
}; };

View File

@@ -12,6 +12,7 @@ import {
setStore, setStore,
getStore, getStore,
} from '@/util/store' } from '@/util/store'
NProgress.configure({showSpinner: false}); NProgress.configure({showSpinner: false});
const lockPage = store.getters.website.lockPage; //锁屏页 const lockPage = store.getters.website.lockPage; //锁屏页
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
@@ -83,6 +84,7 @@ router.beforeEach((to, from, next) => {
if (meta.isAuth === false) { if (meta.isAuth === false) {
next() next()
} else { } else {
next('/login') next('/login')
} }
} }

View File

@@ -18,7 +18,7 @@ Vue.use(VueRouter);
export const createRouter = () => export const createRouter = () =>
new VueRouter({ new VueRouter({
mode: 'history', mode: 'history',
base: '/manage/', base: '/gt/manage/',
// https://router.vquejs.org/zh/guide/advanced/scroll-behavior.html#%E5%BC%82%E6%AD%A5%E6%BB%9A%E5%8A%A8 // https://router.vquejs.org/zh/guide/advanced/scroll-behavior.html#%E5%BC%82%E6%AD%A5%E6%BB%9A%E5%8A%A8
// 这个方法 是控制滚动条 // 这个方法 是控制滚动条
// 如果 retuen falsy || {} ,则不发生滚动 // 如果 retuen falsy || {} ,则不发生滚动

View File

@@ -3,7 +3,7 @@
<div v-loading="loading"> <div v-loading="loading">
<el-row> <el-row>
<el-col :sm="24" :md="{ span: 12, offset: 6 }"> <el-col :sm="24" :md="{ span: 12, offset: 6 }">
<img class="basic-info-container-stamp" src="/manage/img/stamp.png" /> <img class="basic-info-container-stamp" src="/img/stamp.png"/>
<div class="basic-info-container"> <div class="basic-info-container">
<el-form <el-form
:model="form" :model="form"
@@ -35,7 +35,7 @@
</el-form-item> </el-form-item>
<el-form-item label="企业营业执照:"> <el-form-item label="企业营业执照:">
<!--:src="props.row.cImg"--> <!--:src="props.row.cImg"-->
<img :src="form.authUrlId" class="avatarImg" /> <img :src="form.authUrlId" class="avatarImg"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@@ -45,8 +45,8 @@
</basic-container> </basic-container>
</template> </template>
<script> <script>
import { getTradeDic } from "@/api/manage/trade"; import {getTradeDic} from "@/api/manage/trade";
import { getBaseDetail } from "@/api/tenant/company"; import {getBaseDetail} from "@/api/tenant/company";
export default { export default {
props: {}, props: {},
@@ -100,10 +100,12 @@ export default {
width: 160px; width: 160px;
height: 100px; height: 100px;
} }
.basic-info-container { .basic-info-container {
position: relative; position: relative;
z-index: 1; z-index: 1;
} }
.basic-info-container-stamp { .basic-info-container-stamp {
position: absolute; position: absolute;
z-index: 0; z-index: 0;

View File

@@ -184,7 +184,7 @@ export default {
calibrationDialog: false, calibrationDialog: false,
excelBox: false, excelBox: false,
excelForm: {}, excelForm: {},
imageUrl: "/img/scimg.png", imageUrl: process.env.BASE_URL + "/img/scimg.png",
imgFile: '', imgFile: '',
btnClickFlag: false, btnClickFlag: false,
formLabelWidth: '120px', formLabelWidth: '120px',
@@ -291,7 +291,7 @@ export default {
border: true, border: true,
index: true, index: true,
esignatureId: '', esignatureId: '',
imageUrl: "/img/license.png", imageUrl: process.env.BASE_URL + "/img/license.png",
indexLabel: "序号", indexLabel: "序号",
selection: true, selection: true,
dialogType: "drawer", dialogType: "drawer",

View File

@@ -5,51 +5,63 @@
<!--<li> <!--<li>
<h3>电子签章管理</h3> <h3>电子签章管理</h3>
</li>--> </li>-->
<li v-if="econtractStatus.sealOn == 0">电子签章未开通请申请开通电子签章 <el-button type="primary" <li v-if="econtractStatus.sealOn == 0">电子签章未开通请申请开通电子签章
@click="handelEnableSignature">申请开通电子签章</el-button> <el-button type="primary"
@click="handelEnableSignature">申请开通电子签章
</el-button>
</li> </li>
<li v-else-if="econtractStatus.sealOn == 1">电子签章已申请正在审核中...</li> <li v-else-if="econtractStatus.sealOn == 1">电子签章已申请正在审核中...</li>
<li v-else-if="econtractStatus.sealOn == 2">电子合同状态:<span v-if="econtractStatus.contractOn">启用</span><span <li v-else-if="econtractStatus.sealOn == 2">电子合同状态<span
v-else>启用</span></li> v-if="econtractStatus.contractOn">启用</span><span
<li v-show="econtractStatus.contractOn">电子签章:<el-button @click="handelViewSignature" type="primary"> v-else>未启用</span></li>
</el-button><el-button @click="handelResetPwd">重置密码</el-button></li> <li v-show="econtractStatus.contractOn">电子签章
<el-button @click="handelViewSignature" type="primary">
</el-button>
<el-button @click="handelResetPwd">重置密码</el-button>
</li>
</ul> </ul>
</basic-container> </basic-container>
<basic-container> <basic-container>
<div class="econtract"> <div class="econtract">
<!--申请电子签章dialog--> <!--申请电子签章dialog-->
<el-dialog title="申请电子签章" append-to-body :visible.sync="dialogVisible" width="30%" :before-close="handleClose" <el-dialog title="申请电子签章" append-to-body :visible.sync="dialogVisible" width="30%"
class="applyEcontract"> :before-close="handleClose"
class="applyEcontract">
<el-form :model="applyEcontractForm" ref="applyEcontractForm" label-width="100px" class="demo-ruleForm" <el-form :model="applyEcontractForm" ref="applyEcontractForm" label-width="100px" class="demo-ruleForm"
:rules="ruleValidate"> :rules="ruleValidate">
<el-form-item label="上传《电子签章申请表》:" prop="authUrlId" :label-position="labelPosition" label-width="210px"> <el-form-item label="上传《电子签章申请表》:" prop="authUrlId" :label-position="labelPosition"
label-width="210px">
<el-upload :show-file-list="false" :on-progress="() => { <el-upload :show-file-list="false" :on-progress="() => {
uploading = true; uploading = true;
} }
" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" :http-request="httpRequest"> " :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload" :http-request="httpRequest">
<div v-loading="uploading"> <div v-loading="uploading">
<img class="contract-signature-image" :src="applyEcontractForm.authUrlId || imageUrl" /> <img class="contract-signature-image" :src="applyEcontractForm.authUrlId || imageUrl"/>
</div> </div>
<div slot="tip" class="el-upload__tip">*请上传高清扫描文件</div> <div slot="tip" class="el-upload__tip">*请上传高清扫描文件</div>
</el-upload> </el-upload>
<div class="uploadEcontractBtn" @click="handleDownload"><i class="el-icon-download" <div class="uploadEcontractBtn" @click="handleDownload"><i class="el-icon-download"
style="color: #409EFF;"></i>下载《电子签章申请表》模板</div> style="color: #409EFF;"></i>下载《电子签章申请表》模板
</div>
<!-- <p class="uploadImgP">上传图片大小限制5M以内</p> --> <!-- <p class="uploadImgP">上传图片大小限制5M以内</p> -->
</el-form-item> </el-form-item>
<el-form-item label="请设置签章密码" prop="pwd" :label-position="labelPosition" label-width="210px"> <el-form-item label="请设置签章密码" prop="pwd" :label-position="labelPosition" label-width="210px">
<el-col :span="16"> <el-col :span="16">
<el-input type="number" maxlength="6" <el-input type="number" maxlength="6"
onKeypress="return(/^[0-9]*$/.test(String.fromCharCode(event.keyCode)))" onKeypress="return(/^[0-9]*$/.test(String.fromCharCode(event.keyCode)))"
v-model="applyEcontractForm.pwd" show-password placeholder="请输入六位数字密码"> v-model="applyEcontractForm.pwd" show-password placeholder="请输入六位数字密码">
</el-input> </el-input>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="请再次输入签章密码" prop="confirmpwd" :label-position="labelPosition" label-width="210px"> <el-form-item label="请再次输入签章密码" prop="confirmpwd" :label-position="labelPosition"
label-width="210px">
<el-col :span="16"> <el-col :span="16">
<el-input type="number" maxlength="6" <el-input type="number" maxlength="6"
onKeypress="return(/^[0-9]*$/.test(String.fromCharCode(event.keyCode)))" onKeypress="return(/^[0-9]*$/.test(String.fromCharCode(event.keyCode)))"
v-model="applyEcontractForm.confirmpwd" show-password placeholder="请再次输入六位数字密码"></el-input> v-model="applyEcontractForm.confirmpwd" show-password
placeholder="请再次输入六位数字密码"></el-input>
</el-col> </el-col>
</el-form-item> </el-form-item>
<!-- <!--
@@ -72,7 +84,7 @@
<!--重置密码dialog--> <!--重置密码dialog-->
<el-dialog title="重置密码" :visible.sync="resetPwdDialogVisible" append-to-body width="30%"> <el-dialog title="重置密码" :visible.sync="resetPwdDialogVisible" append-to-body width="30%">
<el-form class="econtract-resetForm" label-position="right" :model="resetPwdForm" :rules="resetPwdRules" <el-form class="econtract-resetForm" label-position="right" :model="resetPwdForm" :rules="resetPwdRules"
ref="resetPwdForm"> ref="resetPwdForm">
<el-form-item label="手机号码" :label-width="formLabelWidth" prop="account"> <el-form-item label="手机号码" :label-width="formLabelWidth" prop="account">
<span>{{ phone }}</span> <span>{{ phone }}</span>
</el-form-item> </el-form-item>
@@ -82,13 +94,15 @@
</el-form-item> </el-form-item>
<el-form-item label="请设置新密码" :label-width="formLabelWidth" prop="pwd"> <el-form-item label="请设置新密码" :label-width="formLabelWidth" prop="pwd">
<el-input type="number" maxlength="6" <el-input type="number" maxlength="6"
onKeypress="return(/^[0-9]*$/.test(String.fromCharCode(event.keyCode)))" v-model="resetPwdForm.pwd" onKeypress="return(/^[0-9]*$/.test(String.fromCharCode(event.keyCode)))"
autocomplete="off" show-password placeholder="请输入六位数字密码"></el-input> v-model="resetPwdForm.pwd"
autocomplete="off" show-password placeholder="请输入六位数字密码"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="请再次输入新密码" :label-width="formLabelWidth" prop="pwd2"> <el-form-item label="请再次输入新密码" :label-width="formLabelWidth" prop="pwd2">
<el-input type="number" maxlength="6" <el-input type="number" maxlength="6"
onKeypress="return(/^[0-9]*$/.test(String.fromCharCode(event.keyCode)))" v-model="resetPwdForm.pwd2" onKeypress="return(/^[0-9]*$/.test(String.fromCharCode(event.keyCode)))"
autocomplete="off" show-password placeholder="请再次输入六位数字密码"></el-input> v-model="resetPwdForm.pwd2"
autocomplete="off" show-password placeholder="请再次输入六位数字密码"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@@ -99,11 +113,11 @@
<!-- /查看签章dialog --> <!-- /查看签章dialog -->
<el-dialog title="查看" :visible.sync="calibrationDialog" width="500px" :modal="false" <el-dialog title="查看" :visible.sync="calibrationDialog" width="500px" :modal="false"
class="calibrationForm excelBox checkForm"> class="calibrationForm excelBox checkForm">
<el-form :model="viewSignatureForm" :rules="rules"> <el-form :model="viewSignatureForm" :rules="rules">
<el-form-item label="公章" prop="authUrlId"> <el-form-item label="公章" prop="authUrlId">
<div v-loading="uploading"> <div v-loading="uploading">
<img class="companyInfo-upload-image" :src="'data:image/png;base64,' + viewSignatureForm.imgStr" /> <img class="companyInfo-upload-image" :src="'data:image/png;base64,' + viewSignatureForm.imgStr"/>
</div> </div>
</el-form-item> </el-form-item>
</el-form> </el-form>
@@ -140,8 +154,8 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-date-picker v-model="monthData" type="daterange" range-separator="" start-placeholder="请选择开始日期" <el-date-picker v-model="monthData" type="daterange" range-separator="" start-placeholder="请选择开始日期"
end-placeholder="请选择结束日期" value-format="yyyy-MM-dd hh:mm:ss" format="yyyy-MM-dd" end-placeholder="请选择结束日期" value-format="yyyy-MM-dd hh:mm:ss" format="yyyy-MM-dd"
@change="getDateValueStime"> @change="getDateValueStime">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<tool-tip></tool-tip> <tool-tip></tool-tip>
@@ -165,9 +179,10 @@ import {
viewSignature, viewSignature,
} from "@/api/manage/econtract"; } from "@/api/manage/econtract";
import { getTemplate } from "@/api/resource/template"; import {getTemplate} from "@/api/resource/template";
import httpRequest from "./httpRequest"; import httpRequest from "./httpRequest";
import { mapGetters } from 'vuex' import {mapGetters} from 'vuex'
export default { export default {
components: { components: {
contentIndex, contentIndex,
@@ -176,32 +191,28 @@ export default {
const validatePwd = (rule, value, callback) => { const validatePwd = (rule, value, callback) => {
if (value != this.resetPwdForm.pwd) { if (value != this.resetPwdForm.pwd) {
callback(new Error('两次输入密码不一致')); callback(new Error('两次输入密码不一致'));
} } else {
else {
callback(); callback();
} }
}; };
const validPwdNums = (rule, value, callback) => { const validPwdNums = (rule, value, callback) => {
if (value.length != 6 || isNaN(Number(value))) { if (value.length != 6 || isNaN(Number(value))) {
callback(new Error('请输入6位数的数字密码')); callback(new Error('请输入6位数的数字密码'));
} } else {
else {
callback(); callback();
} }
} }
const apply_validPwdNums = (rule, value, callback) => { const apply_validPwdNums = (rule, value, callback) => {
if (value.length != 6 || isNaN(Number(value))) { if (value.length != 6 || isNaN(Number(value))) {
callback(new Error('请输入6位数的数字密码')); callback(new Error('请输入6位数的数字密码'));
} } else {
else {
callback(); callback();
} }
} }
const apply_validatePwd = (rule, value, callback) => { const apply_validatePwd = (rule, value, callback) => {
if (value != this.applyEcontractForm.pwd) { if (value != this.applyEcontractForm.pwd) {
callback(new Error('两次输入密码不一致')); callback(new Error('两次输入密码不一致'));
} } else {
else {
callback(); callback();
} }
}; };
@@ -296,7 +307,7 @@ export default {
}, },
], ],
}, },
imageUrl: "/manage/img/idcard-h.png", imageUrl: process.env.BASE_URL + "/img/idcard-h.png",
putFile: '', putFile: '',
fileUrl: '', fileUrl: '',
econtractStatus: '', econtractStatus: '',
@@ -516,7 +527,7 @@ export default {
// //
handelEnableSignature() { handelEnableSignature() {
this.applyEcontractForm = {} this.applyEcontractForm = {}
this.imageUrl = "/manage/img/idcard-h.png" this.imageUrl = process.env.BASE_URL + "/img/idcard-h.png"
this.dialogVisible = true; this.dialogVisible = true;
}, },
getDateValueStime(val) { getDateValueStime(val) {

View File

@@ -1,10 +1,10 @@
<template> <template>
<card title="用工单位信息"> <card title="用工单位信息">
<div class="wel-cards-business"> <div class="wel-cards-business">
<img src="/manage/svg/pic_business.svg" alt /> <img src="/manage/svg/pic_business.svg" alt/>
<div class="wel-cards-txt"> <div class="wel-cards-txt">
<div :title="companyName"> <div :title="companyName">
<span>{{companyName}}</span> <span>{{ companyName }}</span>
</div> </div>
<div> <div>
企业资料审核状态 企业资料审核状态
@@ -18,21 +18,21 @@
<script> <script>
import card from "./card"; import card from "./card";
import { getBaseDetail } from "@/api/tenant/company"; import {getBaseDetail} from "@/api/tenant/company";
export default { export default {
components: { card }, components: {card},
data () { data() {
return { return {
companyName: "", companyName: "",
status: -1 status: -1
}; };
}, },
mounted () { mounted() {
this.getData(); this.getData();
}, },
methods: { methods: {
getData () { getData() {
getBaseDetail().then(resp => { getBaseDetail().then(resp => {
this.companyName = resp.data.data.companyName; this.companyName = resp.data.data.companyName;
this.status = resp.data.data.status; this.status = resp.data.data.status;
@@ -49,6 +49,7 @@ export default {
position: relative; position: relative;
overflow: hidden; overflow: hidden;
} }
.wel-cards-business img { .wel-cards-business img {
position: absolute; position: absolute;
top: 10px; top: 10px;
@@ -58,11 +59,13 @@ export default {
width: auto; width: auto;
height: 160px; height: 160px;
} }
.wel-cards-business .wel-cards-txt { .wel-cards-business .wel-cards-txt {
position: absolute; position: absolute;
bottom: 0px; bottom: 0px;
left: 0px; left: 0px;
} }
.wel-cards-business .wel-cards-txt div { .wel-cards-business .wel-cards-txt div {
font-size: 16px; font-size: 16px;
width: 100%; width: 100%;
@@ -70,9 +73,11 @@ export default {
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.wel-cards-business .wel-cards-txt div:not(:first-child) { .wel-cards-business .wel-cards-txt div:not(:first-child) {
margin-top: 12px; margin-top: 12px;
} }
.wel-cards-business-status { .wel-cards-business-status {
color: #80bf50; color: #80bf50;
} }

View File

@@ -4,8 +4,8 @@
<ul> <ul>
<li v-for="item in quickBtn" :key="item.id"> <li v-for="item in quickBtn" :key="item.id">
<router-link tag="div" :to="item.url" :title="item.name"> <router-link tag="div" :to="item.url" :title="item.name">
<img :src="item.icon" /> <img :src="item.icon"/>
<div>{{item.name}}</div> <div>{{ item.name }}</div>
</router-link> </router-link>
</li> </li>
</ul> </ul>
@@ -16,15 +16,16 @@
<script> <script>
import card from "./card"; import card from "./card";
const publicPath = process.env.BASE_URL || '/';
export default { export default {
components: { card }, components: {card},
data () { data() {
return { return {
quickBtn: [ quickBtn: [
{ id: 1, url: "/tenant/mission/index", icon: "/manage/img/icon/task.png", name: "发布零工岗位" }, {id: 1, url: "/tenant/mission/index", icon: `${publicPath}img/icon/task.png`, name: "发布零工岗位"},
{ id: 2, url: "/tenant/talents/index", icon: "/manage/img/icon/m_search.png", name: "人才库查询" }, {id: 2, url: "/tenant/talents/index", icon: `${publicPath}img/icon/m_search.png`, name: "人才库查询"},
{ id: 3, url: "", icon: "/manage/img/icon/insure_search.png", name: "社区服务站" }, {id: 3, url: "", icon: `${publicPath}img/icon/insure_search.png`, name: "社区服务站"},
{ id: 4, url: "", icon: "/manage/img/icon/count.png", name: "政策制度" } {id: 4, url: "", icon: `${publicPath}img/icon/count.png`, name: "政策制度"}
] ]
}; };
} }
@@ -44,6 +45,7 @@ export default {
margin: 0 auto; margin: 0 auto;
} }
.wel-cards-quick ul { .wel-cards-quick ul {
margin: 0; margin: 0;
padding: 0; padding: 0;
@@ -55,22 +57,26 @@ export default {
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.wel-cards-quick li { .wel-cards-quick li {
list-style: none; list-style: none;
flex-basis: 33.3%; flex-basis: 33.3%;
text-align: center; text-align: center;
} }
.wel-cards-quick div { .wel-cards-quick div {
display: inline-block; display: inline-block;
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
} }
.wel-cards-quick img { .wel-cards-quick img {
width: 40px; width: 40px;
height: auto; height: auto;
display: block; display: block;
margin: 0 auto; margin: 0 auto;
} }
.wel-cards-quick div { .wel-cards-quick div {
width: 100%; width: 100%;
padding-top: 5px; padding-top: 5px;

View File

@@ -1,6 +1,6 @@
module.exports = { module.exports = {
//路径前缀 //路径前缀
publicPath: "/manage/", publicPath: '/gt/manage/',
outputDir: "manage", outputDir: "manage",
lintOnSave: true, lintOnSave: true,
productionSourceMap: false, productionSourceMap: false,
@@ -24,12 +24,9 @@ module.exports = {
port: 1888, port: 1888,
proxy: { proxy: {
"/api": { "/api": {
target: 'http://39.98.184.58:8000', target: 'http://39.98.44.136:80',
ws: true, ws: true,
changeOrigin: true, changeOrigin: true,
pathRewrite: {
'^/api': '/'
}
}, },
"/qq/map": { "/qq/map": {
//本地服务接口地址 //本地服务接口地址