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_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_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 #
.DS_Store
._.DS_Store
!/manage/

View File

@@ -1,9 +1,9 @@
<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 v-if="jlHelpShow">
<div class="jl-switch">
{{helpSwitch}}
{{ helpSwitch }}
<el-switch
v-model="switchValue"
@change="switchHelp"
@@ -20,8 +20,8 @@
暂无内容
</div>
<div class="jl-small-title" v-for="(item, index) in policyList" :key="index" @click="lookNews(item)">
<span>[{{item.secondName}}]</span>
<p>{{item.title}}</p>
<span>[{{ item.secondName }}]</span>
<p>{{ item.title }}</p>
</div>
</div>
@@ -39,8 +39,8 @@
暂无内容
</div>
<div class="jl-small-title" v-for="(item, index) in questionList" :key="index" @click="lookNews(item)">
<span>[{{item.secondName}}]</span>
<p>{{item.title}}</p>
<span>[{{ item.secondName }}]</span>
<p>{{ item.title }}</p>
</div>
</div>
@@ -66,7 +66,7 @@
<div class="big-blank"></div>
<div class="jl-user">
<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 class="jl-userInfo">
<p class="name">您好我是小助手</p>
@@ -91,7 +91,7 @@
<p class="jl-help-title">服务热线</p>
<div class="medium-blank"></div>
<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>
</div>
<div class="jl-help-time">
@@ -114,207 +114,231 @@
</template>
<script>
import {mapState, mapGetters} from "vuex";
import {
getStore,
} from '@/util/store'
export default {
name: "index",
props: {
helpShow: {
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
}
}
import {mapState, mapGetters} from "vuex";
import {
getStore,
} from '@/util/store'
export default {
name: "index",
props: {
helpShow: {
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
}
}
}
</script>
<style scoped>
p {
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;
}
p {
margin: 0 !important;
}
.jl-help-title{
font-weight: bold;
.big-blank {
height: 24px;
}
height: 19px;
font-size: 14px;
color: rgba(0, 0, 0, 0.8);
line-height: 19px;
}
.medium-blank {
height: 16px;
}
.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;
}
.small-blank {
height: 12px;
}
.jl-advertisement .img{
width: 198px;
height: 120px;
background-color: #e3e3e3;
border-radius: 4px;
}
.jl-switch {
height: 40px;
border-bottom: 1px solid #f6f6f6;
margin-left: -20px;
margin-right: -20px;
line-height: 40px;
padding-left: 20px;
}
.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-hr {
width: 198px;
height: 1px;
background-color: rgba(0, 0, 0, 0.08);
}
.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-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-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 {
width: 0;
}
.jl-help-time{
font-size: 12px;
color: rgba(0, 0, 0, 0.4);
line-height: 16px;
margin-top: 9px;
}
.jl-help-title {
font-weight: bold;
height: 19px;
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>

View File

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

View File

@@ -1,198 +1,202 @@
<template>
<div class="avue-contail" :class="{ 'avue--collapse': isCollapse }" v-if="isRouterAlive">
<div class="avue-header">
<!-- 顶部导航栏 -->
<top ref="top" />
<div class="avue-helpText" v-if="helpShow" :class="{'avue-helpText-active':helpTag}" @click="jlHelpChange">
<div class="text">
<img src="../../../public/img/help/icon.png" height="20" width="20"/>
<div class="avue-contail" :class="{ 'avue--collapse': isCollapse }" v-if="isRouterAlive">
<div class="avue-header">
<!-- 顶部导航栏 -->
<top ref="top"/>
<div class="avue-helpText" v-if="helpShow" :class="{'avue-helpText-active':helpTag}" @click="jlHelpChange">
<div class="text">
<img src="/img/help/icon.png" height="20" width="20"/>
<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"/>
<span>帮助中心</span>
</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 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 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>
<script>
import {mapGetters, mapState} from "vuex";
import tags from "./tags";
import search from "./search";
import top from "./top/";
import sidebar from "./sidebar/";
import admin from "@/util/admin";
import { validatenull } from "@/util/validate";
import { calcDate } from "@/util/date.js";
import { getStore } from "@/util/store.js";
import { resetRouter } from "@/router/router";
import {whetherSetSignPwd } from '@/api/manage/econtract';
import setSignPwd from './setSignPwd'
import jlHelp from '@/components/jl-help'
import {mapGetters, mapState} from "vuex";
import tags from "./tags";
import search from "./search";
import top from "./top/";
import sidebar from "./sidebar/";
import admin from "@/util/admin";
import {validatenull} from "@/util/validate";
import {calcDate} from "@/util/date.js";
import {getStore} from "@/util/store.js";
import {resetRouter} from "@/router/router";
import {whetherSetSignPwd} from '@/api/manage/econtract';
import setSignPwd from './setSignPwd'
import jlHelp from '@/components/jl-help'
export default {
components: {
top,
tags,
search,
sidebar,
setSignPwd,
jlHelp
},
name: "index",
provide() {
return {
index: this,
};
},
data() {
return {
//搜索控制
isSearch: false,
//刷新token锁
refreshLock: false,
//刷新token的时间
refreshTime: "",
isRouterAlive: true,
hasPass:'',
};
},
created() {
//实时检测刷新token
this.refreshToken();
export default {
components: {
top,
tags,
search,
sidebar,
setSignPwd,
jlHelp
},
name: "index",
provide() {
return {
index: this,
};
},
data() {
return {
//搜索控制
isSearch: false,
//刷新token锁
refreshLock: false,
//刷新token的时间
refreshTime: "",
isRouterAlive: true,
hasPass: '',
};
},
created() {
//实时检测刷新token
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();
// this.getSignatureStatus();//获取企业是否设置了签章密码
},
props: [],
methods: {
jlHelpChange() {
this.$store.dispatch('jlHelpTag', !this.helpTag)
},
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);
showCollapse() {
this.$store.commit("SET_COLLAPSE");
},
// 初始化
init() {
this.$store.commit("SET_SCREEN", admin.getScreen());
window.onresize = () => {
setTimeout(() => {
this.$store.commit("SET_SCREEN", admin.getScreen());
}, 0);
};
this.$store.dispatch("FlowRoutes").then(() => {
});
this.$store.dispatch("InitArea");
},
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);
});
return arr;
},
}
},
props: [],
methods: {
jlHelpChange () {
this.$store.dispatch('jlHelpTag', !this.helpTag)
},
showCollapse() {
this.$store.commit("SET_COLLAPSE");
},
// 初始化
init() {
this.$store.commit("SET_SCREEN", admin.getScreen());
window.onresize = () => {
setTimeout(() => {
this.$store.commit("SET_SCREEN", admin.getScreen());
}, 0);
};
this.$store.dispatch("FlowRoutes").then(() => { });
this.$store.dispatch("InitArea");
},
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);
});
// 定时检测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;
});
}
},
// 定时检测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);
},
}, 10000);
},
watch: {
trial() {
this.$jlEvent("trialCheck").then(
() => { },
() => { }
);
},
isSearch(val) {
if (!val) {
this.isRouterAlive = false;
this.$nextTick(() => {
this.isRouterAlive = true;
});
},
watch: {
trial() {
this.$jlEvent("trialCheck").then(
() => {
},
() => {
}
},
);
},
};
isSearch(val) {
if (!val) {
this.isRouterAlive = false;
this.$nextTick(() => {
this.isRouterAlive = true;
});
}
},
},
};
</script>

View File

@@ -1,12 +1,12 @@
<template>
<div class="avue-logo">
<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-group name="fade">
<template v-if="!keyCollapse">
<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>
</template>
</transition-group>
@@ -14,13 +14,15 @@
</template>
<script>
import { mapGetters, mapState } from "vuex";
import {mapGetters, mapState} from "vuex";
export default {
name: "logo",
data () {
data() {
return {};
},
created () { },
created() {
},
computed: {
...mapState({
loginType: (state) => state.user.userInfo.login_type,
@@ -40,16 +42,20 @@ export default {
margin-left: 20px;
}
}
.fade-leave-active {
transition: opacity 0.2s;
}
.fade-enter-active {
transition: opacity 2.5s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
.avue-logo {
position: fixed;
top: 0;
@@ -64,12 +70,14 @@ export default {
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
color: rgba(255, 255, 255, 0.8);
z-index: 1024;
&_title {
display: block;
text-align: center;
font-weight: 300;
font-size: 20px;
}
&_subtitle {
display: block;
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-else class="el-icon-bell"></i>
<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>
</el-button>
</div>
</router-link>
<div style="margin-top:2px">
<img class="top-bar__img" src="/manage/img/head.png" />
<span class="top-bar__name">{{userInfo.real_name}}</span>
<img class="top-bar__img" src="/img/head.png"/>
<span class="top-bar__name">{{ userInfo.real_name }}</span>
<el-dropdown>
<span class="el-dropdown-link">
<i class="el-icon-arrow-down el-icon--right"></i>
@@ -43,10 +43,10 @@
<router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link>
</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 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>
<router-link to="/tenant/set/index">{{$t('navbar.set')}}</router-link>
@@ -54,7 +54,7 @@
<!-- <el-dropdown-item>
<router-link to="/tenant/company/index">{{$t('navbar.companyindex')}}</router-link>
</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>
</div>
@@ -62,9 +62,9 @@
</div>
</template>
<script>
import { resetRouter } from "@/router/router";
import { mapGetters, mapState } from "vuex";
import { fullscreenToggel, listenfullscreen } from "@/util/util";
import {resetRouter} from "@/router/router";
import {mapGetters, mapState} from "vuex";
import {fullscreenToggel, listenfullscreen} from "@/util/util";
import topLock from "./top-lock";
import topMenu from "./top-menu";
import topSearch from "./top-search";
@@ -73,6 +73,7 @@ import topLogs from "./top-logs";
import topColor from "./top-color";
import topNotice from "./top-notice";
import topLang from "./top-lang";
let interval;
export default {
@@ -91,7 +92,8 @@ export default {
return {};
},
filters: {},
created() {},
created() {
},
mounted() {
listenfullscreen(this.setScreen);
if (this.loginType === 'Type-S') {
@@ -152,7 +154,7 @@ export default {
this.$store.dispatch("LogOut").then(() => {
resetRouter();
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"
><img
height="16"
src="/manage/img/icon-badge-1.png"
src="img/icon-badge-1.png"
/>电子营业执照</a
>&nbsp;
<a href="/home/img/license/RLZYXKZ.jpg" target="blank"

View File

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

View File

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

View File

@@ -18,7 +18,7 @@ Vue.use(VueRouter);
export const createRouter = () =>
new VueRouter({
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
// 这个方法 是控制滚动条
// 如果 retuen falsy || {} ,则不发生滚动

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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