Merge branch 'branch20211008' of http://10.10.10.43:9090/income_payments/income_payments_client into xuqiubangeng1026

 Conflicts:
	src/views/contractManagement/revenueContract/modules/RevenueContractModule.vue
This commit is contained in:
zhaoxiao
2021-10-28 09:19:19 +08:00
21 changed files with 373 additions and 258 deletions
+1 -1
View File
@@ -13,7 +13,7 @@ window._CONFIG["casPrefixUrl"] = "http://cas.example.org:8443/cas";
window._CONFIG["onlinePreviewDomainURL"] = "http://localhost:8012/onlinePreview"; window._CONFIG["onlinePreviewDomainURL"] = "http://localhost:8012/onlinePreview";
// 会议管理报名二维码地址 // 会议管理报名二维码地址
window._CONFIG['singUpQRCodeURL'] = 'http://localhost:3000/signUpEntrance' window._CONFIG['singUpQRCodeURL'] = 'http://localhost:3000/signupentrance'
// 签到二维码url // 签到二维码url
window._CONFIG['signInUrl'] = '/meeting/payMeetingSituation/getSignInPage' window._CONFIG['signInUrl'] = '/meeting/payMeetingSituation/getSignInPage'
+1 -1
View File
@@ -12,5 +12,5 @@ window._CONFIG["casPrefixUrl"] = "http://cas.example.org:8443/cas";
window._CONFIG["onlinePreviewDomainURL"] = "http://10.10.10.46:8012/onlinePreview"; window._CONFIG["onlinePreviewDomainURL"] = "http://10.10.10.46:8012/onlinePreview";
// 会议管理报名二维码地址 // 会议管理报名二维码地址
window._CONFIG['singUpQRCodeURL'] = 'http://10.10.10.46:8055/signUpEntrance' window._CONFIG['singUpQRCodeURL'] = 'http://10.10.10.46:8055/signupentrance'
+20 -1
View File
@@ -18,8 +18,27 @@ window.addEventListener('message', function (event) {
document.getElementsByClassName('tab-layout-tabs ant-tabs ant-tabs-top')[0].style.display = 'none' document.getElementsByClassName('tab-layout-tabs ant-tabs ant-tabs-top')[0].style.display = 'none'
}, 1000) }, 1000)
} }
}) })
document.onkeydown = keyDown
function keyDown(e) {
console.log(navigator.userAgent)
// 拦截backspace按钮,谷歌浏览器不需要拦截
// 拦截仍然存在的问题:当input、textarea失去焦点后,仍然会后退页面
if (e.keyCode === 8 && navigator.userAgent.indexOf('AppleWebKit') === -1 ) {
// 判断是不是在input或textarea触发backspace按钮事件
if (window.event.srcElement.tagName.toUpperCase() === 'INPUT' || window.event.srcElement.tagName.toUpperCase() === 'TEXTAREA') {
// 判断输入框中是否还有值可删除
if (window.event.srcElement.value.length === 1) {
// 拦截事件
e.keyCode=0
e.returnValue=false
}
}
}
}
export default { export default {
data() { data() {
return { return {
+1 -1
View File
@@ -113,7 +113,7 @@ const getContactsByCompany = (params) => getAction('/company/payContactsManageme
// 通过企业名称获取该企业下的联系人无权限接口 // 通过企业名称获取该企业下的联系人无权限接口
const getContactsByCompanyNoLimit = (params) => getAction('/company/payContactsManagement/queryByCompanyMeeting', params) const getContactsByCompanyNoLimit = (params) => getAction('/company/payContactsManagement/queryByCompanyMeeting', params)
// 通过联系人id获取联系人信息 // 通过联系人id获取联系人信息
const getContactsById = (param) => getAction('/company/payContactsManagement/queryByIdMeeting', param) const getContactsById = (param) => getAction('/company/payContactsManagement/queryByIdGetContract', param)
// 加密获取key 与 iv // 加密获取key 与 iv
const getKeyIv = (param) => getAction('/sys/getEncryptedString',param) const getKeyIv = (param) => getAction('/sys/getEncryptedString',param)
+1 -3
View File
@@ -26,7 +26,7 @@
</a-col> </a-col>
</a-row> </a-row>
<!-- 来款方式为合同的显示--> <!-- 来款方式为合同的显示-->
<a-row :gutter="24" v-if="!!basicInfo.contractNum"> <a-row :gutter="24" v-if="basicInfo.chargeWay === 2">
<a-col :span="12" class="detail-item"> <a-col :span="12" class="detail-item">
<label>{{ createIncomeType(basicInfo.projectType) }}</label> <label>{{ createIncomeType(basicInfo.projectType) }}</label>
<span>{{ basicInfo.chargeWay_dictText }}</span> <span>{{ basicInfo.chargeWay_dictText }}</span>
@@ -356,8 +356,6 @@ export default {
} else { } else {
return '缴费方式' return '缴费方式'
} }
} }
} }
} }
+9
View File
@@ -4,6 +4,7 @@
<contextmenu :itemList="menuItemList" :visible.sync="menuVisible" style="z-index: 9999;" @select="onMenuSelect"/> <contextmenu :itemList="menuItemList" :visible.sync="menuVisible" style="z-index: 9999;" @select="onMenuSelect"/>
<!-- update-end- author:sunjianlei --- date:20191009 --- for: 提升右键菜单的层级 --> <!-- update-end- author:sunjianlei --- date:20191009 --- for: 提升右键菜单的层级 -->
<a-tabs <a-tabs
v-show="showMenu"
@contextmenu.native="e => onContextmenu(e)" @contextmenu.native="e => onContextmenu(e)"
v-if="multipage" v-if="multipage"
:active-key="activePage" :active-key="activePage"
@@ -39,6 +40,7 @@
const indexKey = '/dashboard/analysis' const indexKey = '/dashboard/analysis'
import Vue from 'vue' import Vue from 'vue'
import { CACHE_INCLUDED_ROUTES } from '@/store/mutation-types' import { CACHE_INCLUDED_ROUTES } from '@/store/mutation-types'
import {mapState} from 'vuex'
export default { export default {
name: 'TabLayout', name: 'TabLayout',
@@ -77,6 +79,13 @@
} else { } else {
return this.$store.state.app.multipage return this.$store.state.app.multipage
} }
},
...mapState({
// 系统名称 目的是监听是否是会员系统,会员系统隐藏菜单
system: state => state.user.system
}),
showMenu() {
return this.system !== 'member'
} }
}, },
created() { created() {
+10 -4
View File
@@ -1,6 +1,5 @@
<template> <template>
<a-layout class="layout" :class="[device]"> <a-layout class="layout" :class="[device]">
<template v-if="layoutMode === 'sidemenu'"> <template v-if="layoutMode === 'sidemenu'">
<a-drawer <a-drawer
v-if="device === 'mobile'" v-if="device === 'mobile'"
@@ -22,7 +21,7 @@
</a-drawer> </a-drawer>
<side-menu <side-menu
v-show="device === 'desktop'" v-show="device === 'desktop' && showMenu"
mode="inline" mode="inline"
:menus="menus" :menus="menus"
@menuSelect="myMenuSelect" @menuSelect="myMenuSelect"
@@ -33,6 +32,7 @@
<!-- 下次优化这些代码 --> <!-- 下次优化这些代码 -->
<template v-else> <template v-else>
<a-drawer <a-drawer
v-show="showMenu"
v-if="device === 'mobile'" v-if="device === 'mobile'"
:wrapClassName="'drawer-sider ' + navTheme" :wrapClassName="'drawer-sider ' + navTheme"
placement="left" placement="left"
@@ -62,6 +62,7 @@
:collapsed="collapsed" :collapsed="collapsed"
:device="device" :device="device"
@toggle="toggle" @toggle="toggle"
v-show="showMenu"
/> />
<!-- layout content --> <!-- layout content -->
@@ -119,8 +120,13 @@ export default {
// 主路由 // 主路由
mainRouters: state => state.permission.addRouters, mainRouters: state => state.permission.addRouters,
// 后台菜单 // 后台菜单
permissionMenuList: state => state.user.permissionList permissionMenuList: state => state.user.permissionList,
}) // 系统名称 目的是监听是否是会员系统,会员系统隐藏菜单
system: state => state.user.system
}),
showMenu() {
return this.system !== 'member'
}
}, },
watch: { watch: {
sidebarOpened(val) { sidebarOpened(val) {
+188 -181
View File
@@ -4,7 +4,7 @@
<a-dropdown> <a-dropdown>
<span class="action action-full ant-dropdown-link user-dropdown-menu"> <span class="action action-full ant-dropdown-link user-dropdown-menu">
<a-avatar class="avatar" size="small" :src="getAvatar()"/> <a-avatar class="avatar" size="small" :src="getAvatar()"/>
<span v-if="isDesktop()">欢迎您{{ nickname() }}</span> <span v-if="isDesktop()"><j-ellipsis :value="`欢迎您,${nickname()}`" :length="10"></j-ellipsis></span>
</span> </span>
<a-menu slot="overlay" class="user-dropdown-menu-wrapper"> <a-menu slot="overlay" class="user-dropdown-menu-wrapper">
<a-menu-item key="0"> <a-menu-item key="0">
@@ -19,9 +19,9 @@
<span>账户设置</span> <span>账户设置</span>
</router-link> </router-link>
</a-menu-item> </a-menu-item>
<a-menu-item key="3" @click="systemSetting"> <a-menu-item key="3" @click="systemSetting">
<a-icon type="tool"/> <a-icon type="tool"/>
<span>系统设置</span> <span>系统设置</span>
</a-menu-item> </a-menu-item>
<a-menu-item key="4" @click="updatePassword"> <a-menu-item key="4" @click="updatePassword">
<a-icon type="setting"/> <a-icon type="setting"/>
@@ -35,17 +35,17 @@
<a-icon type="sync"/> <a-icon type="sync"/>
<span>清理缓存</span> <span>清理缓存</span>
</a-menu-item> </a-menu-item>
<!-- <a-menu-item key="2" disabled> <!-- <a-menu-item key="2" disabled>
<a-icon type="setting"/> <a-icon type="setting"/>
<span>测试</span> <span>测试</span>
</a-menu-item> </a-menu-item>
<a-menu-divider/> <a-menu-divider/>
<a-menu-item key="3"> <a-menu-item key="3">
<a href="javascript:;" @click="handleLogout"> <a href="javascript:;" @click="handleLogout">
<a-icon type="logout"/> <a-icon type="logout"/>
<span>退出登录</span> <span>退出登录</span>
</a> </a>
</a-menu-item>--> </a-menu-item>-->
</a-menu> </a-menu>
</a-dropdown> </a-dropdown>
<span class="action"> <span class="action">
@@ -61,194 +61,201 @@
</template> </template>
<script> <script>
import HeaderNotice from './HeaderNotice' import HeaderNotice from './HeaderNotice'
import UserPassword from './UserPassword' import UserPassword from './UserPassword'
import SettingDrawer from '@/components/setting/SettingDrawer' import SettingDrawer from '@/components/setting/SettingDrawer'
import DepartSelect from './DepartSelect' import DepartSelect from './DepartSelect'
import { mapActions, mapGetters,mapState } from 'vuex' import { mapActions, mapGetters, mapState } from 'vuex'
import { mixinDevice } from '@/utils/mixin.js' import { mixinDevice } from '@/utils/mixin.js'
import { getFileAccessHttpUrl,getAction } from '@/api/manage' import { getFileAccessHttpUrl, getAction } from '@/api/manage'
import Vue from 'vue' import Vue from 'vue'
import { UI_CACHE_DB_DICT_DATA } from '@/store/mutation-types' import { UI_CACHE_DB_DICT_DATA } from '@/store/mutation-types'
export default { export default {
name: 'UserMenu', name: 'UserMenu',
mixins: [mixinDevice], mixins: [mixinDevice],
data(){ data() {
return{ return {
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 -------------- // update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
searchMenuOptions:[], searchMenuOptions: [],
searchMenuComp: 'span', searchMenuComp: 'span',
searchMenuVisible: false, searchMenuVisible: false
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 -------------- // update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
}
},
components: {
HeaderNotice,
UserPassword,
DepartSelect,
SettingDrawer
},
props: {
theme: {
type: String,
required: false,
default: 'dark'
}
},
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
created() {
let lists = []
this.searchMenus(lists, this.permissionMenuList)
this.searchMenuOptions = [...lists]
},
mounted() {
//如果是单点登录模式
if (process.env.VUE_APP_SSO == 'true') {
let depart = this.userInfo().orgCode
if (!depart) {
this.updateCurrentDepart()
} }
}, }
components: { },
HeaderNotice, computed: {
UserPassword, ...mapState({
DepartSelect, // 后台菜单
SettingDrawer permissionMenuList: state => state.user.permissionList
},
props: { })
theme: { },
type: String, /* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
required: false, watch: {
default: 'dark' // update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
device: {
immediate: true,
handler() {
this.searchMenuVisible = false
this.searchMenuComp = this.isMobile() ? 'a-modules' : 'span'
} }
}, }
// update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
},
methods: {
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/ /* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
created() { showClick() {
let lists = [] this.searchMenuVisible = true
this.searchMenus(lists,this.permissionMenuList)
this.searchMenuOptions=[...lists]
}, },
mounted() { hiddenClick() {
//如果是单点登录模式 this.shows = false
if (process.env.VUE_APP_SSO == 'true') {
let depart = this.userInfo().orgCode
if (!depart) {
this.updateCurrentDepart()
}
}
},
computed: {
...mapState({
// 后台菜单
permissionMenuList: state => state.user.permissionList
})
}, },
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/ /* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
watch: { ...mapActions(['Logout']),
// update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框 ...mapGetters(['nickname', 'avatar', 'userInfo']),
device: { getAvatar() {
immediate: true, return getFileAccessHttpUrl(this.avatar())
handler() {
this.searchMenuVisible = false
this.searchMenuComp = this.isMobile() ? 'a-modules' : 'span'
},
},
// update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
}, },
methods: { handleLogout() {
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/ const that = this
showClick() {
this.searchMenuVisible = true
},
hiddenClick(){
this.shows = false
},
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
...mapActions(['Logout']),
...mapGetters(['nickname', 'avatar','userInfo']),
getAvatar(){
return getFileAccessHttpUrl(this.avatar())
},
handleLogout() {
const that = this
this.$confirm({ this.$confirm({
title: '提示', title: '提示',
content: '真的要注销登录吗 ?', content: '真的要注销登录吗 ?',
onOk() { onOk() {
return that.Logout({}).then(() => { return that.Logout({}).then(() => {
// update-begin author:wangshuai date:20200601 for: 退出登录跳转登录页面 // update-begin author:wangshuai date:20200601 for: 退出登录跳转登录页面
that.$router.push({ path: '/user/login' }) that.$router.push({ path: '/user/login' })
// update-end author:wangshuai date:20200601 for: 退出登录跳转登录页面 // update-end author:wangshuai date:20200601 for: 退出登录跳转登录页面
//window.location.reload() //window.location.reload()
}).catch(err => { }).catch(err => {
that.$message.error({ that.$message.error({
title: '错误', title: '错误',
description: err.message description: err.message
})
}) })
}, })
onCancel() { },
}, onCancel() {
})
},
updatePassword(){
let username = this.userInfo().username
this.$refs.userPassword.show(username)
},
updateCurrentDepart(){
this.$refs.departSelect.show()
},
systemSetting(){
this.$refs.settingDrawer.showDrawer()
},
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
searchMenus(arr,menus){
for(let i of menus){
if(!i.hidden && 'layouts/RouteView'!==i.component){
arr.push(i)
}
if(i.children&& i.children.length>0){
this.searchMenus(arr,i.children)
}
} }
}, })
filterOption(input, option) { },
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0 updatePassword() {
}, let username = this.userInfo().username
// update_begin author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题 this.$refs.userPassword.show(username)
searchMethods(value) { },
let route = this.searchMenuOptions.filter(item => item.id === value)[0] updateCurrentDepart() {
if (route.meta.internalOrExternal === true || route.component.includes('layouts/IframePageView')) { this.$refs.departSelect.show()
window.open(route.meta.url, '_blank') },
} else { systemSetting() {
this.$router.push({ path: route.path }) this.$refs.settingDrawer.showDrawer()
},
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
searchMenus(arr, menus) {
for (let i of menus) {
if (!i.hidden && 'layouts/RouteView' !== i.component) {
arr.push(i)
}
if (i.children && i.children.length > 0) {
this.searchMenus(arr, i.children)
} }
this.searchMenuVisible = false
},
// update_end author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
/*update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
/*update_begin author:liushaoqian date:20200507 for: 刷新缓存*/
clearCache(){
getAction('sys/dict/refleshCache').then((res) => {
if (res.success) {
//重新加载缓存
getAction('sys/dict/queryAllDictItems').then((res) => {
if (res.success) {
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
}
})
this.$message.success('刷新缓存完成!')
}
}).catch(e=>{
this.$message.warn('刷新缓存失败!')
console.log('刷新失败',e)
})
} }
/*update_end author:liushaoqian date:20200507 for: 刷新缓存*/ },
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
// update_begin author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
searchMethods(value) {
let route = this.searchMenuOptions.filter(item => item.id === value)[0]
if (route.meta.internalOrExternal === true || route.component.includes('layouts/IframePageView')) {
window.open(route.meta.url, '_blank')
} else {
this.$router.push({ path: route.path })
}
this.searchMenuVisible = false
},
// update_end author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
/*update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
/*update_begin author:liushaoqian date:20200507 for: 刷新缓存*/
clearCache() {
getAction('sys/dict/refleshCache').then((res) => {
if (res.success) {
//重新加载缓存
getAction('sys/dict/queryAllDictItems').then((res) => {
if (res.success) {
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
}
})
this.$message.success('刷新缓存完成!')
}
}).catch(e => {
this.$message.warn('刷新缓存失败!')
console.log('刷新失败', e)
})
} }
/*update_end author:liushaoqian date:20200507 for: 刷新缓存*/
} }
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
/* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/ /* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
/* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */ /* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
.user-wrapper .search-input { .user-wrapper .search-input {
width: 180px; width: 180px;
color: inherit; color: inherit;
/deep/ .ant-select-selection { /deep/ .ant-select-selection {
background-color: inherit; background-color: inherit;
border: 0; border: 0;
border-bottom: 1px solid white; border-bottom: 1px solid white;
&__placeholder, &__field__placeholder {
color: inherit; &__placeholder, &__field__placeholder {
} color: inherit;
} }
} }
/* update-end author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */ }
/* update_end author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
/* update-end author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
/* update_end author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
.user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item {
width: 100%;
text-align: center;
}
</style> </style>
<style scoped> <style scoped>
.logout_title { .logout_title {
color: inherit; color: inherit;
text-decoration: none; text-decoration: none;
} }
</style> </style>
+31 -15
View File
@@ -197,7 +197,11 @@ export const JeroListMixin = {
that.loadData() that.loadData()
that.onClearSelected() that.onClearSelected()
} else { } else {
that.$message.warning(res.message) if (res.message.indexOf('<br/>') > -1) {
that.messageLineFeed('删除失败', res.message)
} else {
that.$message.warning(res.message)
}
} }
}).finally(() => { }).finally(() => {
that.loading = false that.loading = false
@@ -225,7 +229,11 @@ export const JeroListMixin = {
} }
that.loadData() that.loadData()
} else { } else {
that.$message.warning(res.message) if (res.message.indexOf('<br/>') > -1) {
that.messageLineFeed('删除失败', res.message)
} else {
that.$message.warning(res.message)
}
} }
}) })
} }
@@ -322,19 +330,7 @@ export const JeroListMixin = {
} }
this.loadData() this.loadData()
} else { } else {
const messageArr = info.file.response.message.split('<br/>') this.messageLineFeed('文件导入错误', info.file.response.message)
let htmlDom = []
messageArr.map(tt => {
if (tt) {
htmlDom.push((<div>{tt}</div>))
}
})
this.$warning({
title: '文件导入错误',
content: (h) => <div>
{htmlDom}
</div>
})
// this.$message.error(`${info.file.name} ${info.file.response.message}.`); // this.$message.error(`${info.file.name} ${info.file.response.message}.`);
} }
} else if (info.file.status === 'error') { } else if (info.file.status === 'error') {
@@ -386,6 +382,26 @@ export const JeroListMixin = {
let url = getFileAccessHttpUrl(text) let url = getFileAccessHttpUrl(text)
window.open(url) window.open(url)
}, },
/**
* 对包含<br/>的后端错误信息进行处理
* @param title
* @param content
*/
messageLineFeed(title, content) {
const messageArr = content.split('<br/>')
let htmlDom = []
messageArr.map(tt => {
if (tt) {
htmlDom.push((<div>{tt}</div>))
}
})
this.$warning({
title: title,
content: (h) => <div>
{htmlDom}
</div>
})
}
} }
} }
+5 -1
View File
@@ -9,12 +9,16 @@ import { generateIndexRouter } from '@/utils/util'
NProgress.configure({ showSpinner: false }) // NProgress Configuration NProgress.configure({ showSpinner: false }) // NProgress Configuration
const whiteList = ['/user/login', '/user/register', '/user/register-result', '/user/alteration','/signUpEntrance','/signUpPage'] // no redirect whitelist const whiteList = ['/user/login', '/user/register', '/user/register-result', '/user/alteration','/signupentrance','/signUpPage'] // no redirect whitelist
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
if (to.query.token) { if (to.query.token) {
Vue.ls.set(ACCESS_TOKEN, to.query.token, 7 * 24 * 60 * 60 * 1000) Vue.ls.set(ACCESS_TOKEN, to.query.token, 7 * 24 * 60 * 60 * 1000)
store.commit('SET_TOKEN', to.query.token) store.commit('SET_TOKEN', to.query.token)
// 判断是否是会员系统iframe嵌入的,如果是 不先做左侧菜单和 头部标签
if(to.query.system === 'member') {
store.commit('SET_SYSTEM', to.query.system)
}
} }
NProgress.start() // start progress bar NProgress.start() // start progress bar
+5
View File
@@ -7,6 +7,8 @@ import { getAction } from '@/api/manage'
const user = { const user = {
state: { state: {
// 使用系统的名称,只有在会员系统嵌入来款系统的时候使用 传值为 member
system: '',
token: '', token: '',
username: '', username: '',
realname: '', realname: '',
@@ -18,6 +20,9 @@ const user = {
}, },
mutations: { mutations: {
SET_SYSTEM: (state, system) => {
state.system = system
},
SET_TOKEN: (state, token) => { SET_TOKEN: (state, token) => {
state.token = token state.token = token
}, },
+1 -1
View File
@@ -4,7 +4,7 @@ const hasPermission = {
install (Vue, options) { install (Vue, options) {
Vue.directive('has', { Vue.directive('has', {
inserted: (el, binding, vnode)=>{ inserted: (el, binding, vnode)=>{
// console.log('binding=====',binding.value) // console.log('binding=====',binding)
if(binding.arg){ if(binding.arg){
binding.value = binding.arg binding.value = binding.arg
// console.log( binding.value ,' binding.value =================') // console.log( binding.value ,' binding.value =================')
@@ -220,7 +220,11 @@ export default {
} }
that.loadData() that.loadData()
} else { } else {
that.$message.warning(res.message) if (res.message.indexOf('<br/>') > -1) {
that.messageLineFeed('删除失败', res.message)
} else {
that.$message.warning(res.message)
}
} }
}) })
} }
@@ -267,7 +271,11 @@ export default {
that.loadData() that.loadData()
that.onClearSelected() that.onClearSelected()
} else { } else {
that.$message.warning(res.message) if (res.message.indexOf('<br/>') > -1) {
that.messageLineFeed('删除失败', res.message)
} else {
that.$message.warning(res.message)
}
} }
}).finally(() => { }).finally(() => {
that.loading = false that.loading = false
@@ -502,6 +502,7 @@ export default {
this.accountsReceivableNum = record.accountsReceivableAmount this.accountsReceivableNum = record.accountsReceivableAmount
this.amountReceivedNum = record.amountReceived this.amountReceivedNum = record.amountReceived
this.model = Object.assign({}, record) this.model = Object.assign({}, record)
this.getUserDetailByUserId()
// 计算未收金额和赊账状态 // 计算未收金额和赊账状态
this.calculateOutstandingAmount() this.calculateOutstandingAmount()
this.$nextTick(() => { this.$nextTick(() => {
@@ -809,21 +810,16 @@ export default {
switch (type) { switch (type) {
// 普通项目 // 普通项目
case 1: case 1:
this.getUserDetailByUserId().then(res => { // 混入筛选条件
this.departId = res this.$refs.selectProjectModule.filters = {
// 混入筛选条件 chargeCompanyId: this.selectedCompany.id,
this.$refs.selectProjectModule.filters = { contractId: this.contractId
chargeCompanyId: this.selectedCompany.id, // departId: this.departId // 一个用户多部门情况下传给后端第一个部门id
contractId: this.contractId, }
departId: this.departId // 一个用户多部门情况下传给后端第一个部门id // 获取负责人列表
} this.$refs.selectProjectModule.departChange(this.departId)
// 获取负责人列表 // 打开弹窗
this.$refs.selectProjectModule.departChange(this.departId) this.$refs.selectProjectModule.open()
// 打开弹窗
this.$refs.selectProjectModule.open()
}).catch((err) => {
this.$message.warn(err)
})
break break
// 工作组项目 // 工作组项目
case 2: case 2:
@@ -858,14 +854,12 @@ export default {
let param = { let param = {
id: this.model.principalId id: this.model.principalId
} }
return new Promise((resolve, reject) => { queryUserByDepartId(param).then(res => {
queryUserByDepartId(param).then(res => { if (res.success) {
if (res.success) { this.departId = res.result[0].departIds
resolve(res.result[0].departIds) } else {
} else { console.log(res.message)
reject(res.message) }
}
})
}) })
}, },
/** /**
@@ -150,6 +150,7 @@ export default {
requird: false, requird: false,
default: null default: null
}, },
// 负责人id
principal: { principal: {
type: String, type: String,
requird: false, requird: false,
@@ -261,7 +262,6 @@ export default {
} }
}, },
methods: { methods: {
/** /**
* 运行年份变化 * 运行年份变化
*/ */
@@ -278,7 +278,7 @@ export default {
// 运行年份默认为当年 // 运行年份默认为当年
this.queryParam.year = new Date().getFullYear().toString() this.queryParam.year = new Date().getFullYear().toString()
this.lastQueryParam.year = new Date().getFullYear().toString() this.lastQueryParam.year = new Date().getFullYear().toString()
// // 默认科室、负责人
this.queryParam.principalId = this.principal this.queryParam.principalId = this.principal
this.lastQueryParam.principalId = this.principal this.lastQueryParam.principalId = this.principal
this.queryParam.departId = this.departId this.queryParam.departId = this.departId
@@ -618,9 +618,9 @@ export default {
signUpHerfUrl() { signUpHerfUrl() {
return `${ window._CONFIG['singUpQRCodeURL'] }?id=${ this.$route.query.id }` return `${ window._CONFIG['singUpQRCodeURL'] }?id=${ this.$route.query.id }`
}, },
// 签到地址 只给一个会议id // 签到地址 只给一个会议id 加前缀是为了区分 小程序的扫码签到是否扫描的是签到二维码
signInUrl() { signInUrl() {
return this.$route.query.id return `scanSign=${this.$route.query.id}`
} }
}, },
methods: { methods: {
@@ -204,9 +204,34 @@ export default {
meetingType: '', meetingType: '',
// 会议费用是否为0 // 会议费用是否为0
meetingCostBool:false, meetingCostBool:false,
url:{ // url:{
add:'/meeting/payMeetingSituation/add', // add:'/meeting/payMeetingSituation/add',
edit:'/meeting/payMeetingSituation/edit' // edit:'/meeting/payMeetingSituation/edit'
// },
// 其他会议的url
otherMeetingUrl: {
add: '/meeting/ohterMeetingSituation/add',
edit:'/meeting/ohterMeetingSituation/edit'
},
// 分标委会议的url
committeeMeetingUrl: {
add: '/meeting/committeeMeetingSituation/add',
edit:'/meeting/committeeMeetingSituation/edit'
},
// 国际研讨会的url
internalMeetingUrl: {
add: '/meeting/internalMeetingSituation/add',
edit:'/meeting/internalMeetingSituation/edit'
},
// 标协会议的url
standardsMeetingUrl: {
add: '/meeting/standardsMeetingSituation/add',
edit:'/meeting/standardsMeetingSituation/edit'
},
// 工作组会议的url
workGroupMeetingUrl: {
add: '/meeting/workGroupMeetingSituation/add',
edit:'/meeting/workGroupMeetingSituation/edit'
}, },
title:'添加参会人', title:'添加参会人',
} }
@@ -229,6 +254,23 @@ export default {
} }
}, },
computed:{
// eslint-disable-next-line
url() {
switch (this.$route.query.meetingType) {
case '1':
return this.workGroupMeetingUrl
case '2':
return this.standardsMeetingUrl
case '3':
return this.internalMeetingUrl
case '4':
return this.otherMeetingUrl
case '5':
return this.committeeMeetingUrl
}
},
},
methods: { methods: {
addContactsOk() { addContactsOk() {
this.$refs.selectContacts.getContactsList() this.$refs.selectContacts.getContactsList()
@@ -36,7 +36,7 @@
<!-- 操作按钮区域 --> <!-- 操作按钮区域 -->
<div class="table-operator"> <div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus" v-has="'template:add'">新增</a-button> <!-- <a-button @click="handleAdd" type="primary" icon="plus" v-has="'template:add'">新增</a-button>-->
</div> </div>
<!-- table区域-begin --> <!-- table区域-begin -->
@@ -110,8 +110,10 @@
<a-col :xl="12" :sm="24"> <a-col :xl="12" :sm="24">
<a-form-item label="来款方式" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="来款方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<span v-if="defaultChargeWay === 2 && chargeWayType === 2">合同</span> <span v-if="defaultChargeWay === 2 && chargeWayType === 2">合同</span>
<a-radio-group v-decorator="['chargeWay',validatorRules.chargeWay]" @change="handlechargeWayChange" <a-radio-group v-decorator="['chargeWay',validatorRules.chargeWay]"
v-else :disabled="isAssociatedContract"> @change="handlechargeWayChange"
v-else
:disabled="isAssociatedContract">
<a-radio :value="1"></a-radio> <a-radio :value="1"></a-radio>
<a-radio :value="2">合同</a-radio> <a-radio :value="2">合同</a-radio>
<a-radio :value="3">收费通知</a-radio> <a-radio :value="3">收费通知</a-radio>
+7 -1
View File
@@ -121,7 +121,13 @@ export default {
} }
}, },
async mounted() { async mounted() {
this.singUpQRCode = await this.generateQRCode('123') this.singUpQRCode = await this.generateQRCode(this.signUpHerfUrl)
},
computed:{
// 报名链接
signUpHerfUrl() {
return `${ window._CONFIG['singUpQRCodeURL'] }?id=${this.meetingId}`
},
}, },
methods: { methods: {
/* /*
+11 -12
View File
@@ -13,13 +13,13 @@
<!-- 查询区域 --> <!-- 查询区域 -->
<div class="table-page-search-wrapper"> <div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery"> <a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24"> <a-row>
<a-col :xl="9" :lg="8" :md="8" :sm="24"> <a-col :xxl="6" :xl="9" :lg="8" :md="8" :sm="24">
<a-form-item label="搜索日志"> <a-form-item label="搜索日志">
<a-input placeholder="请输入搜索关键词" v-model="queryParam.keyWord" :maxLength="50"></a-input> <a-input placeholder="请输入搜索关键词" v-model="queryParam.keyWord" :maxLength="50"></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="9" :lg="8" :md="8" :sm="24"> <a-col :xxl="6" :xl="9" :lg="8" :md="8" :sm="24">
<a-form-item label="创建时间" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form-item label="创建时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-range-picker <a-range-picker
style="width: 100%" style="width: 100%"
@@ -31,20 +31,19 @@
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :xl="9" :lg="8" :md="8" :sm="24" v-if="tabKey === '2' "> <a-col :xxl="6" :xl="9" :lg="8" :md="8" :sm="24" v-if="tabKey === '2' ">
<a-form-item label="操作类型" style="left: 10px"> <a-form-item label="操作类型">
<j-dict-select-tag v-model="queryParam.operateType" placeholder="请选择操作类型" dictCode="operate_type"/> <j-dict-select-tag v-model="queryParam.operateType" placeholder="请选择操作类型" dictCode="operate_type"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :xl="4" :lg="8" :md="8" :sm="24"> <a-col :xl="6" :lg="8" :md="8" :sm="24">
<a-button type="primary" style="left: 10px" @click="searchQuery" icon="search" v-has="'sys:log:search'">查询</a-button> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search" v-has="'sys:log:search'">查询</a-button>
<a-button class="reset-button" @click="searchReset" icon="reload" <a-button class="reset-button" @click="searchReset" icon="reload"
style="margin-left: 8px;left: 10px">重置</a-button> style="margin-left: 8px;">重置</a-button>
</span>
</a-col> </a-col>
</span>
</a-row> </a-row>
</a-form> </a-form>
</div> </div>