[update]-企业端 修改标协会员-会员管理、增加标协会员-缴费信息的功能

This commit is contained in:
fengchenchen
2021-12-14 16:06:30 +08:00
parent 3343f87335
commit 34b33e5994
35 changed files with 10826 additions and 988 deletions
+1
View File
@@ -20,3 +20,4 @@ window._CONFIG['singUpQRCodeURL'] = 'http://10.10.10.46:8055/signupentrance'
window._CONFIG["memberURL"] = "/memberApi";
// 会员系统的静态文件的地址
window._CONFIG["memberStaticDomainURL"] = window._CONFIG["memberURL"] + "/sys/common/static";
window._CONFIG["memberDomianWebSocketURL"] = "http://10.0.10.78:9000/memberApi";
-1
View File
@@ -169,7 +169,6 @@ export function getFileAccessHttpUrl(avatar,subStr) {
return avatar
}else{
if(avatar && avatar.length>0 && avatar.indexOf('[') === -1){
console.log('window._CONFIG[\'memberStaticDomainURL\']=======', window._CONFIG['memberStaticDomainURL'])
return window._CONFIG['memberStaticDomainURL'] + '/' + avatar
}
}
+40 -2
View File
@@ -17,7 +17,7 @@ const previewPdf = (file) => {
// return `${process.env.BASE_URL}pdfjs/web/viewer.html?file=` + encodeURIComponent(url) + '&.pdf'
// const token = Vue.ls.get(ACCESS_TOKEN)
// todo 先写死token
const token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzkzNzY3MzcsInVzZXJuYW1lIjoiMGI4ZDQ2YTBiZTI0NGJlZGI5ZDI1Y2Y5ZmQ5OTc3MTcifQ.FvA0UgdKJm1m0rbkaS4CX72-GozZVPDmcZ296FvaBfQ'
const token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2Mzk0NjEyMzcsInVzZXJuYW1lIjoiMGI4ZDQ2YTBiZTI0NGJlZGI5ZDI1Y2Y5ZmQ5OTc3MTcifQ.jKG-mtZ4VHS5BAFGayuwOJgBBzZTiKQc3bkbya2YTNA'
const fileFullUrl = `${window._CONFIG['memberDomianWebSocketURL']}/sys/common/download/${file.id}?token=${token}&fullfilename=${file.fileName}`
console.log(fileFullUrl, '$$$$$$$$')
let url = `${window._CONFIG['onlinePreviewDomainURL']}?url=${encodeURIComponent(fileFullUrl)}`
@@ -35,11 +35,49 @@ const getEncryptedString = () => getAction('/sys/getRSAPublicKey', {})
// 通过文件的id获取文件的名称
const getFilesByIds = (params) => getAction('/sys/common/static/getFilesByIds', params)
// 验证企业是否存在
const checkOnlyCompany = (params) => getAction('/memberInfo/memberInfo/checkOnlyCompany', params)
// 会员变更单位名称
const changeCompany = (params) => postAction('/memberInfo/companyNameRecord/add', params)
// 会员编辑变更单位全称
const changeCompanyEdit = (params) => postAction('/memberInfo/companyNameRecord/edit', params)
// 字典标签专用(通过code获取字典数组)
const ajaxGetDictItems = (code, params) => getAction(`/sys/dict/getDictItems/${code}`, params)
/****证书管理列表页所用接口-开始 ****/
const getLastPaymentByMemberId = (params) => getAction('/paymentInfo/getLastPaymentByMemberId', params)
const getCertificateByMemberId = (params) => getAction('/vinCertificate/vinCertificate/getCertificateByMemberId', params)
/****证书管理列表页所用接口-结束 ****/
/****会员缴费 列表页所用接口-开始 ****/
const getMemberInfoById = (params) => getAction('/memberInfo/memberInfo/queryById', params)
const getCheckInfo = (params) => getAction('/paymentInfo/paymentCheckinfo/queryByPaymentId', params)
const getByMemberTime = (params) => getAction('/threshold/thresholdSetting/getByMemberTime', params)
// 会员下载缴费通知单
const downNewestNotice = (params) => getAction('/approvalDocumentNumber/approvalDocumentNumber/queryLatest', params)
/****会员缴费 列表页所用接口-结束 ****/
/****证书缴费 列表页所用接口-开始 ****/
// 证书缴费
const getCertificateById = (params) => getAction('/vinCertificate/vinCertificate/getCertificateById', params)
/****证书缴费 列表页所用接口-结束 ****/
export {
queryCommonProjectById,
queryApprovalNo,
previewPdf,
getEncryptedString,
getFilesByIds
getFilesByIds,
checkOnlyCompany,
changeCompany,
changeCompanyEdit,
ajaxGetDictItems,
getLastPaymentByMemberId,
getCertificateByMemberId,
getMemberInfoById,
getCheckInfo,
getByMemberTime,
downNewestNotice,
getCertificateById
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 447 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

@@ -0,0 +1,110 @@
<template>
<a-radio-group v-if="tagType=='radio'" @change="handleInput" :value="getValueSting" :disabled="disabled">
<a-radio v-for="(item, key) in dictOptions" :key="key" :value="item.value">{{ item.text }}</a-radio>
</a-radio-group>
<a-radio-group v-else-if="tagType=='radioButton'" buttonStyle="solid" @change="handleInput" :value="getValueSting" :disabled="disabled">
<a-radio-button v-for="(item, key) in dictOptions" :key="key" :value="item.value">{{ item.text }}</a-radio-button>
</a-radio-group>
<a-select v-else-if="tagType=='select'" :getPopupContainer = "getPopupContainer" :placeholder="placeholder" :disabled="disabled" :value="getValueSting" @change="handleInput">
<a-select-option :value="undefined">请选择</a-select-option>
<a-select-option v-for="(item, key) in dictOptions" :key="key" :value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.text || item.label ">
{{ item.text || item.label }}
</span>
</a-select-option>
</a-select>
</template>
<script>
import {ajaxGetDictItems} from '@/api/standardsAssociationApi'
export default {
name: 'JDictSelectTag',
props: {
dictCode: String,
placeholder: String,
triggerChange: Boolean,
disabled: Boolean,
value: [String, Number],
type: String,
getPopupContainer:{
type: Function,
default: (node) => node.parentNode
}
},
data() {
return {
dictOptions: [],
tagType:''
}
},
watch:{
dictCode:{
immediate:true,
handler() {
this.initDictData()
},
}
},
created() {
// console.log(this.dictCode);
if(!this.type || this.type==='list'){
this.tagType = 'select'
}else{
this.tagType = this.type
}
//获取字典数据
// this.initDictData();
},
computed: {
getValueSting(){
// update-begin author:wangshuai date:20200601 for: 不显示placeholder的文字 ------
// 当有null或“” placeholder不显示
return this.value != null ? this.value.toString() : undefined
// update-end author:wangshuai date:20200601 for: 不显示placeholder的文字 ------
},
},
methods: {
initDictData() {
//优先从缓存中读取字典配置
// if(getDictItemsFromCache(this.dictCode)){
// this.dictOptions = getDictItemsFromCache(this.dictCode)
// return
// }
//根据字典Code, 初始化字典数组
ajaxGetDictItems(this.dictCode, null).then((res) => {
if (res.success) {
// console.log(res.result);
this.dictOptions = res.result
}
})
},
handleInput(e) {
let val
if(this.tagType=='radio'){
val = e.target.value
}else{
val = e
}
console.log(val)
if(this.triggerChange){
this.$emit('change', val)
}else{
this.$emit('input', val)
}
},
setCurrentDictOptions(dictOptions){
this.dictOptions = dictOptions
},
getCurrentDictOptions(){
return this.dictOptions
}
}
}
</script>
<style scoped>
</style>
@@ -115,7 +115,7 @@ export default {
created() {
// const token = Vue.ls.get(ACCESS_TOKEN)
//TODO 暂时将token写成固定值,后续再做动态
const token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzkzNzY3MzcsInVzZXJuYW1lIjoiMGI4ZDQ2YTBiZTI0NGJlZGI5ZDI1Y2Y5ZmQ5OTc3MTcifQ.FvA0UgdKJm1m0rbkaS4CX72-GozZVPDmcZ296FvaBfQ'
const token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2Mzk0NjEyMzcsInVzZXJuYW1lIjoiMGI4ZDQ2YTBiZTI0NGJlZGI5ZDI1Y2Y5ZmQ5OTc3MTcifQ.jKG-mtZ4VHS5BAFGayuwOJgBBzZTiKQc3bkbya2YTNA'
this.headers = { 'X-Access-Token': token }
},
methods: {
@@ -0,0 +1,132 @@
<template>
<a-checkbox-group v-if="tagType=='checkbox'" @change="onChange" :value="arrayValue" :disabled="disabled">
<a-checkbox v-for="(item, key) in dictOptions" :key="key" :value="item.value">{{ item.text || item.label }}</a-checkbox>
</a-checkbox-group>
<a-select
v-else-if="tagType=='select'"
:value="arrayValue"
@change="onChange"
:disabled="disabled"
mode="multiple"
:placeholder="placeholder"
:getPopupContainer="getParentContainer"
optionFilterProp="children"
:filterOption="filterOption"
allowClear>
<a-select-option
v-for="(item,index) in dictOptions"
:key="index"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.text || item.label ">
{{ item.text || item.label }}
</span>
</a-select-option>
</a-select>
</template>
<script>
import {ajaxGetDictItems} from '@/api/standardsAssociationApi'
export default {
name: 'JMultiSelectTag',
props: {
dictCode: String,
placeholder: String,
disabled: Boolean,
value: String,
type: String,
options:Array,
spliter:{
type: String,
required: false,
default: ','
},
popContainer:{
type:String,
default:'',
required:false
},
},
data() {
return {
dictOptions: [],
tagType:'',
arrayValue:!this.value?[]:this.value.split(this.spliter)
}
},
created() {
if(!this.type || this.type==='list_multi'){
this.tagType = 'select'
}else{
this.tagType = this.type
}
//获取字典数据
//this.initDictData();
},
watch:{
options: function(val){
this.setCurrentDictOptions(val)
},
dictCode:{
immediate:true,
handler() {
this.initDictData()
},
},
value (val) {
if(!val){
this.arrayValue = []
}else{
this.arrayValue = this.value.split(this.spliter)
}
}
},
methods: {
initDictData() {
if(this.options && this.options.length>0){
this.dictOptions = [...this.options]
}else{
//优先从缓存中读取字典配置
// let cacheOption = getDictItemsFromCache(this.dictCode)
// if(cacheOption && cacheOption.length>0){
// this.dictOptions = cacheOption
// return
// }
//根据字典Code, 初始化字典数组
ajaxGetDictItems(this.dictCode, null).then((res) => {
if (res.success) {
this.dictOptions = res.result
}
})
}
},
onChange (selectedValue) {
this.$emit('change', selectedValue.join(this.spliter))
},
setCurrentDictOptions(dictOptions){
this.dictOptions = dictOptions
},
getCurrentDictOptions(){
return this.dictOptions
},
getParentContainer(node){
if(!this.popContainer){
return node.parentNode
}else{
return document.querySelector(this.popContainer)
}
},
// update--begin--autor:lvdandan-----date:20201120------forLOWCOD-1086 下拉多选框,搜索时只字典code进行搜索不能通过字典text搜索
filterOption(input, option) {
return option.componentOptions.children[0].children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
}
// update--end--autor:lvdandan-----date:20201120------forLOWCOD-1086 下拉多选框,搜索时只字典code进行搜索不能通过字典text搜索
},
model: {
prop: 'value',
event: 'change'
}
}
</script>
@@ -0,0 +1,246 @@
<template>
<a-select
v-if="async"
showSearch
labelInValue
:disabled="disabled"
:getPopupContainer="getParentContainer"
@search="loadData"
:placeholder="placeholder"
v-model="selectedAsyncValue"
style="width: 100%"
:filterOption="false"
@change="handleAsyncChange"
allowClear
:notFoundContent="loading ? undefined : null"
>
<a-spin v-if="loading" slot="notFoundContent" size="small"/>
<a-select-option v-for="d in options" :key="d.value" :value="d.value">{{ d.text }}</a-select-option>
</a-select>
<a-select
v-else
:getPopupContainer="getParentContainer"
showSearch
:disabled="disabled"
:placeholder="placeholder"
optionFilterProp="children"
style="width: 100%"
@change="handleChange"
:filterOption="filterOption"
v-model="selectedValue"
allowClear
:notFoundContent="loading ? undefined : null">
<a-spin v-if="loading" slot="notFoundContent" size="small"/>
<a-select-option v-for="d in options" :key="d.value" :value="d.value">{{ d.text }}</a-select-option>
</a-select>
</template>
<script>
import { ajaxGetDictItems } from '@/api/standardsAssociationApi'
import debounce from 'lodash/debounce'
import { getAction } from '../../api/memberManage'
export default {
name: 'JSearchSelectTag',
props:{
disabled: Boolean,
value: [String, Number],
dict: String,
dictOptions: Array,
async: Boolean,
placeholder:{
type:String,
default:'请选择',
required:false
},
popContainer:{
type:String,
default:'',
required:false
},
pageSize:{
type: Number,
default: 10,
required: false
}
},
data(){
this.loadData = debounce(this.loadData, 800)//消抖
this.lastLoad = 0
return {
loading:false,
selectedValue:[],
selectedAsyncValue:[],
options: [],
}
},
created(){
this.initDictData()
},
watch:{
'value':{
immediate:true,
handler(val){
if(!val){
if(val==0){
this.initSelectValue()
}else{
this.selectedValue=[]
this.selectedAsyncValue=[]
}
}else{
this.initSelectValue()
}
}
},
'dict':{
handler(){
this.initDictData()
}
},
'dictOptions':{
deep: true,
handler(val){
if(val && val.length>0){
this.options = [...val]
}
}
}
},
methods:{
initSelectValue(){
if(this.async){
if(!this.selectedAsyncValue || !this.selectedAsyncValue.key || this.selectedAsyncValue.key!=this.value){
console.log('这才请求后台')
getAction(`/sys/dict/loadDictItem/${this.dict}`,{key:this.value}).then(res=>{
if(res.success){
let obj = {
key:this.value,
label:res.result
}
this.selectedAsyncValue = {...obj}
}
})
}
}else{
this.selectedValue = this.value.toString()
}
},
loadData(value){
console.log('数据加载',value)
this.lastLoad +=1
const currentLoad = this.lastLoad
this.options = []
this.loading=true
// 字典code格式:table,text,code
getAction(`/sys/dict/loadDict/${this.dict}`,{keyword:value, pageSize: this.pageSize}).then(res=>{
this.loading=false
if(res.success){
if(currentLoad!=this.lastLoad){
return
}
this.options = res.result
console.log('我是第一个',res)
}else{
this.$message.warning(res.message)
}
})
},
initDictData(){
if(!this.async){
//如果字典项集合有数据
if(this.dictOptions && this.dictOptions.length>0){
this.options = [...this.dictOptions]
}else{
//根据字典Code, 初始化字典数组
let dictStr = ''
if(this.dict){
let arr = this.dict.split(',')
if(arr[0].indexOf('where')>0){
let tbInfo = arr[0].split('where')
dictStr = tbInfo[0].trim()+','+arr[1]+','+arr[2]+','+encodeURIComponent(tbInfo[1])
}else{
dictStr = this.dict
}
// if (this.dict.indexOf(',') == -1) {
// //优先从缓存中读取字典配置
// if (getDictItemsFromCache(this.dictCode)) {
// this.options = getDictItemsFromCache(this.dictCode)
// return
// }
// }
ajaxGetDictItems(dictStr, null).then((res) => {
if (res.success) {
this.options = res.result
}
})
}
}
}else{
//异步一开始也加载一点数据
this.loading=true
getAction(`/sys/dict/loadDict/${this.dict}`,{pageSize: this.pageSize, keyword:''}).then(res=>{
this.loading=false
if(res.success){
this.options = res.result
}else{
this.$message.warning(res.message)
}
})
}
},
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
handleChange (selectedValue) {
console.log('selectedValue',selectedValue)
this.selectedValue = selectedValue
this.callback()
},
handleAsyncChange(selectedObj){
//update-begin-author:scott date:20201222 for:【搜索】搜索查询组件,删除条件,默认下拉还是上次的缓存数据,不好 JT-191
if(selectedObj){
this.selectedAsyncValue = selectedObj
this.selectedValue = selectedObj.key
}else{
this.selectedAsyncValue = null
this.selectedValue = null
this.options = null
this.loadData('')
}
this.callback()
//update-end-author:scott date:20201222 for:【搜索】搜索查询组件,删除条件,默认下拉还是上次的缓存数据,不好 JT-191
},
callback(){
this.$emit('change', this.selectedValue)
},
setCurrentDictOptions(dictOptions){
this.options = dictOptions
},
getCurrentDictOptions(){
return this.options
},
getParentContainer(node){
if(!this.popContainer){
return node.parentNode
}else{
return document.querySelector(this.popContainer)
}
},
},
model: {
prop: 'value',
event: 'change'
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,539 @@
<template>
<div :id="containerId" style="position: relative">
<a-upload
name="file"
:action="uploadAction"
:headers="headers"
:data="{'biz':bizPath}"
:fileList="fileList"
:beforeUpload="beforeUpload"
@change="handleChange"
:disabled="disabled"
:returnUrl="returnUrl"
:listType="complistType"
@preview="handlePreview"
v-bind="$attrs"
v-on="childListeners"
:class="{'uploadty-disabled':disabled}">
<template>
<div v-if="isImageComp">
<a-icon type="plus"/>
<div class="ant-upload-text">{{ text }}</div>
</div>
<a-button v-else-if="buttonVisible">
<a-icon type="upload"/>
{{ text }}
</a-button>
</template>
</a-upload>
<!-- :show-upload-list="showUploadList"-->
<!-- 增加上传文件的下载和查看的按钮主要思想是生成相应的元素用定位的思想定位到原来的文件列表中 -->
<template v-if="showOtherIcon">
<div class="file-list-html">
<template v-for="(item,index) in fileList">
<div :key="index" class="file-item" :class="{'show': item.status === 'done'}">
<span class="file-item-btn" @click.prevent.stop="myDownload(item)">
<a-icon type="download" />
下载
</span>
<span class="file-item-btn" @click.prevent.stop="myPreview(item)">
<a-icon type="eye" />
查看
</span>
</div>
</template>
</div>
</template>
</div>
</template>
<script>
import Vue from 'vue'
import {ACCESS_TOKEN} from '@/store/mutation-types'
import {getFileAccessHttpUrl, downloadFile} from '@/api/manage'
import {getFileInfo} from '@/api/api'
// eslint-disable-next-line no-undef
// const Base64 = require('js-base64').Base64
const FILE_TYPE_ALL = 'all'
const FILE_TYPE_IMG = 'image'
// const FILE_TYPE_TXT = 'file'
const uidGenerator = () => {
return '-' + parseInt(Math.random() * 10000 + 1, 10)
}
export default {
name: 'JUpload',
data() {
return {
uploadAction: window._CONFIG['memberURL'] + '/sys/common/upload',
headers: {},
fileList: [],
newFileList: [],
uploadGoOn: true,
fileTypes: this.fileType
}
},
props: {
text: {
type: String,
required: false,
default: '点击上传'
},
fileType: {
type: String,
required: false,
default: FILE_TYPE_ALL
},
/*这个属性用于控制文件上传的业务路径*/
bizPath: {
type: String,
required: false,
default: 'temp'
},
value: {
type: [String, Array],
required: false
},
// update-begin- --- author:wangshuai ------ date:20190929 ---- for:Jupload组件增加是否能够点击
disabled: {
type: Boolean,
required: false,
default: false
},
// update-end- --- author:wangshuai ------ date:20190929 ---- for:Jupload组件增加是否能够点击
//此属性被废弃了
triggerChange: {
type: Boolean,
required: false,
default: false
},
/**
* update -- author:lvdandan -- date:20190219 -- for:Jupload组件增加是否返回url
* true:仅返回url
* false:返回fileName filePath fileSize
*/
returnUrl: {
type: Boolean,
required: false,
default: true
},
/**
* 仅返回文件id
* true 仅返回文件id
* false 返回reurl
* */
returnId: {
type: Boolean,
required: false,
default: false
},
number: {
type: Number,
required: false,
default: 0
},
buttonVisible: {
type: Boolean,
required: false,
default: true
},
/**
* 是否显示下载和查看按钮
**/
showOtherIcon: {
type: Boolean,
required: false,
default: true
}
},
watch: {
value: {
immediate: true,
handler() {
let val = this.value
if (val instanceof Array) {
if (this.returnUrl) {
this.initFileList(val.join(','))
} else {
this.initFileListArr(val)
}
} else {
this.initFileList(val)
}
}
}
},
computed: {
//透传给下级组件的事件,需要排除本组件使用的change事件
childListeners() {
// const vm = this
let result = Object.assign({},
this.$listeners,
)
delete result.change
return result
},
isImageComp() {
return this.fileType === FILE_TYPE_IMG
},
complistType() {
return this.fileType === FILE_TYPE_IMG ? 'picture-card' : 'text'
},
},
created() {
const token = Vue.ls.get(ACCESS_TOKEN)
//---------------------------- begin 图片左右换位置 -------------------------------------
this.headers = {'X-Access-Token': token}
this.containerId = 'container-ty-' + new Date().getTime()
//---------------------------- end 图片左右换位置 -------------------------------------
},
methods: {
initFileListArr(val) {
if (!val || val.length === 0) {
this.fileList = []
return
}
for (let a = 0; a < val.length; a++) {
this.fileList.forEach((item) => {
if (item.url === val[a]) {
item.uid = uidGenerator()
item.response.status = 'done'
}
})
}
},
async initFileList(paths) {
if (!paths || paths.length === 0) {
this.fileList = []
return
}
let arr = paths.split(',')
// 返回路径的时候,对路径进行操作,取出所属id
if (!this.returnId && arr.length > 0) {
const newArr = []
arr.map(item => {
let itemArr = item.split('/')
newArr.push(itemArr[itemArr.length - 1])
})
arr = newArr
}
const fileList = []
for (let a = 0; a < arr.length; a++) {
// 获取每一个文件的信息,组成fileList
// 突然想判断现在的fileList 中是否是历史的信息,如果是的话则先进行匹配
let isHistory = this.fileList.find(file => file.response.status === 'history' && (file.response.result || {}).id === arr[a])
console.log('isHistory===', isHistory)
if (isHistory) {
fileList.push(isHistory)
} else {
const fileObj = await this.getFileInfo(arr[a])
const url = getFileAccessHttpUrl(arr[a])
fileList.push({
uid: uidGenerator(),
name: (fileObj || {}).fileName,
status: 'done',
url: url,
response: {
status: 'history',
message: arr[a],
result: fileObj
}
})
}
}
this.fileList = [...fileList]
this.showOtherIcon && this.actionsClass()
},
handlePathChange() {
let uploadFiles = this.fileList
let path = ''
// 文件id
let fileIds = ''
if (!uploadFiles || uploadFiles.length === 0) {
path = ''
}
let arr = []
// 如果returnid为true 只返回id
if (this.returnId) {
for (let a = 0; a < uploadFiles.length; a++) {
if (uploadFiles[a].status === 'done') {
arr.push(uploadFiles[a].response.result.id)
} else {
return
}
}
if (arr.length > 0) {
fileIds = arr.join(',')
}
this.$emit('change', fileIds)
return
}
for (let a = 0; a < uploadFiles.length; a++) {
if (uploadFiles[a].status === 'done') {
arr.push(uploadFiles[a].url)
} else {
return
}
}
if (arr.length > 0) {
path = arr.join(',')
}
this.$emit('change', path)
},
beforeUpload(file) {
this.uploadGoOn = true
file.uploadGoOn = true
const fileSize = file.size // 上传的文件大小
const fileType = file.type // 上传的文件类型
if (fileSize > 1024 * 1024 * 50) {
this.$message.warning('文件大小限制为50M')
this.uploadGoOn = false
file.uploadGoOn = false
return false
}
// 不等于全部类型可以上传的时候,对上传的文件进行判断
if (this.fileType !== FILE_TYPE_ALL) {
// filter(tt => fileType.indexOf(tt) > -1) 判断用户传的文件类型,和要求传的文件类型是否一致
// 当上传的图片格式为jpg时,在此组件中,会返回类型为 image/jpeg ElememntUI设计如此 所以需要把用户传下来的jpg强制改成jpeg
this.fileTypes = this.fileTypes.replace('jpg', 'jpeg')
const arr = this.fileTypes.split(',').filter(tt => fileType.indexOf(tt) > -1)
if (arr.length === 0) {
this.$message.warning(this.fileTypeErrorMessage || `请上传${this.fileTypes}文件`)
this.uploadGoOn = false
file.uploadGoOn = false
return false
}
}
if (this.fileTypes === FILE_TYPE_IMG) {
if (fileType.indexOf('image') < 0) {
this.$message.warning('请上传图片')
this.uploadGoOn = false
file.uploadGoOn = false
return false
}
}
// TODO 扩展功能验证文件大小
return true
},
handleChange(info) {
if (!info.file.status && this.uploadGoOn === false) {
info.fileList.pop()
}
let fileList = info.fileList
if (info.file.status === 'done') {
if (this.number > 0) {
fileList = fileList.slice(-this.number)
}
if (info.file.response.success) {
fileList = fileList.map((file) => {
if (file.response) {
// let reUrl = `${file.response.result.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.response.result.fileName}`;
file.url = getFileAccessHttpUrl(file.response.result.id)
}
return file
})
}else{
info.fileList.pop()
this.uploadGoOn = false
this.$message.warn(info.file.response.message)
}
//this.$message.success(`${info.file.name} 上传成功!`);
} else if (info.file.status === 'error') {
this.$message.error(`${info.file.name} 上传失败.`)
} else if (info.file.status === 'removed') {
this.handleDelete(info.file)
}
this.fileList = fileList
if (info.file.status === 'done' || info.file.status === 'removed') {
//returnUrl为true时仅返回文件路径
if (this.returnUrl) {
this.handlePathChange()
} else {
//returnUrl为false时返回文件名称、文件路径及文件大小
this.newFileList = []
for (let a = 0; a < fileList.length; a++) {
// update-begin-author:lvdandan date:20200603 for:【TESTA-514】【开源issue】多个文件同时上传时,控制台报错
if (fileList[a].status === 'done') {
let fileJson = {
fileName: fileList[a].name,
filePath: fileList[a].url,
fileSize: fileList[a].size
}
this.newFileList.push(fileJson)
} else {
return
}
// update-end-author:lvdandan date:20200603 for:【TESTA-514】【开源issue】多个文件同时上传时,控制台报错
}
this.$emit('change', this.newFileList)
}
}
},
handleDelete(file) {
//如有需要新增 删除逻辑
console.log(file)
},
handlePreview(file) {
if (this.showOtherIcon) {
return
}
// eslint-disable-next-line no-unreachable
if (file && file.url) {
const fileFullUrl = `${window._CONFIG['domianWebSocketURL']}/sys/common/download/${file.response.result.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.name}`
let url = `${window._CONFIG['onlinePreviewDomainURL']}?url=${encodeURIComponent(fileFullUrl)}`
// let url = `${window._CONFIG['onlinePreviewDomainURL']}?url=${encodeURIComponent(fileFullUrl)}`
window.open(url)
}
},
getFileUrl(fileId) {
return `${window._CONFIG['domianURL']}/sys/common/download/${fileId}`
},
/**
* 通过文件的id获取文件的相关信息
* @param id
*/
getFileInfo(id) {
return new Promise(resolve => {
let result = {}
getFileInfo({id: id}).then(res => {
if (res.success) {
result = res.result
}
}).finally(() => {
resolve(result)
})
})
},
// 修改删除按钮的样式,增加文字说明
actionsClass(){
this.$nextTick(()=>{
let content = document.getElementsByClassName('ant-upload-list-item-card-actions')
for (let i = 0; i < content.length; i++) {
if ( content[i].childNodes.length > 0){
// content[i].innerHTML = '<a-icon type="delete" />'
content[i].childNodes[0].childNodes[0].innerHTML = ' <svg class="delete-icon" viewBox=\'64 64 896 896\' data-icon=\'delete\' width=\'1em\' height=\'1em\' fill=\'currentColor\'\n' +
' aria-hidden=\'true\' focusable=\'false\' className=\'\'>\n' +
' <path\n' +
' d=\'M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\'></path>\n' +
' </svg><span class="delete-span">删除</span>'
}
}
})
},
/**
* 单个文件的下载功能
* @param file
*/
myDownload(file) {
downloadFile(`sys/common/download/${file.response.result.id}`, file.name)
},
/**
* 单个文件的预览功能
* @param file
*/
myPreview(file) {
if (file && file.url) {
const fileFullUrl = `${window._CONFIG['domianWebSocketURL']}/sys/common/download/${file.response.result.id}?token=${Vue.ls.get(ACCESS_TOKEN)}&fullfilename=${file.name}`
let url = `${window._CONFIG['onlinePreviewDomainURL']}?url=${encodeURIComponent(fileFullUrl)}`
// let url = `${window._CONFIG['onlinePreviewDomainURL']}?url=${encodeURIComponent(fileFullUrl)}`
window.open(url)
}
}
},
mounted() {
},
model: {
prop: 'value',
event: 'change'
}
}
</script>
<style lang="less" scoped>
.uploadty-disabled {
/deep/.ant-upload-list-item {
.anticon-close {
display: none;
}
.anticon-delete {
display: none;
}
}
}
// 新增的文件操作按钮的样式
/deep/.file-list-html{
position: absolute!important;
top: 45px!important;
right: 60px!important;
height: auto!important;
z-index:2!important;
}
/deep/.file-item {
height: 30px;
position: relative;
display: flex;
align-items: center;
transition: opacity 1s;
opacity: 0;
&.show{
opacity: 1;
transition: opacity 2s;
}
& > span {
vertical-align: middle;
}
.file-item-btn {
display: inline-block;
margin-left: 10px;
color: #808080;
cursor: pointer;
}
}
// 左侧文件名称的样式
/deep/.ant-upload-list-item-name{
width: calc(100% - 150px) !important;
height: 23px !important;
text-align: left;
line-height: 23px;
padding-right: 10px !important;
text-overflow: ellipsis !important;
overflow: hidden !important;
white-space: nowrap !important;
}
// 删除按钮的样式
/deep/.ant-upload-list-item-card-actions{
opacity: 1!important;
color: #808080;
cursor: pointer!important;
}
// 删除按钮 样式的修改
/deep/.delete-icon,
/deep/.delete-span{
display: inline-block;
vertical-align: middle;
margin-top: -4px;
cursor: pointer!important;
color: #808080;
}
// 单显hover隐掉
/deep/.ant-upload-list-item-info:hover {
background: none !important;
;
}
/deep/.ant-upload-list-item-name:hover {
cursor: pointer;
}
</style>
+3 -3
View File
@@ -172,7 +172,7 @@ export const routerData = [
keepAlive: false,
internalOrExternal: false,
componentName: 'MemberInfo',
title: '会员信息'
title: '会员缴费'
},
name: 'standardsAssociation/PaymentInfo/MemberInfo',
path: '/standardsAssociation/PaymentInfo/MemberInfo',
@@ -184,7 +184,7 @@ export const routerData = [
keepAlive: false,
internalOrExternal: false,
componentName: 'CertificateInfo',
title: '证书信息'
title: '证书缴费'
},
name: 'standardsAssociation/PaymentInfo/CertificateInfo',
path: '/standardsAssociation/PaymentInfo/CertificateInfo',
@@ -386,4 +386,4 @@ export const routerData = [
name: 'council-detail-page',
id: '12'
}
]
]
+7 -5
View File
@@ -20,8 +20,10 @@ export const JeroListMixin = {
lastQueryParam: {},
/* 数据源 */
dataSource:[],
// 做一步转换,方便会员系统使用
// 做一步转换,方便会员系统使用自己内部的方法
getAction,
deleteAction,
getFileAccessHttpUrl,
/* 分页参数 */
ipagination:{
current: 1,
@@ -184,7 +186,7 @@ export const JeroListMixin = {
content: '是否删除选中数据?',
onOk: function () {
that.loading = true
deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => {
that.deleteAction(that.url.deleteBatch, {ids: ids}).then((res) => {
if (res.success) {
that.$message.success(res.message)
// 判断当前删除的数据是否是最后一页的全部数据,如果是的话页码减一
@@ -215,7 +217,7 @@ export const JeroListMixin = {
title: '确认删除',
content: '确定要删除此条数据吗?',
onOk: function() {
deleteAction(that.url.delete, {id: id}).then((res) => {
that.deleteAction(that.url.delete, {id: id}).then((res) => {
if (res.success) {
that.$message.success(res.message)
// 判断当前删除的数据是否是最后一页的最后一条数据,如果是的话页码减一
@@ -339,7 +341,7 @@ export const JeroListMixin = {
if(text && text.indexOf(',')>0){
text = text.substring(0,text.indexOf(','))
}
return getFileAccessHttpUrl(text)
return this.getFileAccessHttpUrl(text)
},
/* 文件下载 */
// update--autor:lvdandan-----date:20200630------for:修改下载文件方法名uploadFile改为downloadFile------
@@ -352,7 +354,7 @@ export const JeroListMixin = {
if(text.indexOf(',')>0){
text = text.substring(0,text.indexOf(','))
}
let url = getFileAccessHttpUrl(text)
let url = this.getFileAccessHttpUrl(text)
window.open(url)
},
/*
+6 -1
View File
@@ -21,7 +21,12 @@ export const RangeDateMixin = {
return false
}
// console.log(endValue.valueOf(),'endValue.valueOf()')
return startValue.valueOf() > endValue.valueOf() + 86400000
if(this.rangeDateFormat.begin === 'YYYY-MM-DD') {
return startValue.valueOf() > endValue.valueOf() + 86400000
} else {
return startValue.valueOf() > endValue.valueOf()
}
},
disabledEndDate(endValue) {
+1 -1
View File
@@ -102,7 +102,7 @@ const err = (error) => {
service.interceptors.request.use(config => {
// const token = Vue.ls.get(ACCESS_TOKEN)
//TODO 暂时将token写成固定值,后续再做动态
const token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzkzNzY3MzcsInVzZXJuYW1lIjoiMGI4ZDQ2YTBiZTI0NGJlZGI5ZDI1Y2Y5ZmQ5OTc3MTcifQ.FvA0UgdKJm1m0rbkaS4CX72-GozZVPDmcZ296FvaBfQ'
const token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2Mzk0NjEyMzcsInVzZXJuYW1lIjoiMGI4ZDQ2YTBiZTI0NGJlZGI5ZDI1Y2Y5ZmQ5OTc3MTcifQ.jKG-mtZ4VHS5BAFGayuwOJgBBzZTiKQc3bkbya2YTNA'
if (token) {
config.headers[ 'X-Access-Token' ] = token // 让每个请求携带自定义 token 请根据实际情况自行修改
}
+51 -44
View File
@@ -1,48 +1,48 @@
<template>
<div class='main-box member-basic-info'>
<div class='panel-cell'>
<div class="main-box member-basic-info">
<div class="panel-cell">
<div class="title">秘书处信息</div>
<div class='content'>
<div class='info-row'>
<span class='label-span'>地址</span>
<span class='value-span'>{{secretariatInfo.address}}</span>
<div class="content">
<div class="info-row">
<span class="label-span">地址</span>
<span class="value-span">{{ secretariatInfo.address }}</span>
</div>
<div class='info-row'>
<span class='label-span'>联系人</span>
<span class='value-span'>{{secretariatInfo.contactPerson}}</span>
<div class="info-row">
<span class="label-span">联系人</span>
<span class="value-span">{{ secretariatInfo.contactPerson }}</span>
</div>
<div class='info-row'>
<span class='label-span'>联系人电话</span>
<span class='value-span'>{{secretariatInfo.contactPhone}}</span>
<div class="info-row">
<span class="label-span">联系人电话</span>
<span class="value-span">{{ secretariatInfo.contactPhone }}</span>
</div>
<div class='info-row'>
<span class='label-span'>联系人邮箱</span>
<span class='value-span'>{{secretariatInfo.contactMail}}</span>
<div class="info-row">
<span class="label-span">联系人邮箱</span>
<span class="value-span">{{ secretariatInfo.contactMail }}</span>
</div>
</div>
</div>
<div class='panel-cell'>
<div class="panel-cell">
<div class="title">本企业信息</div>
<div class='content'>
<div class='info-row'>
<span class='label-span'>企业名称</span>
<span class='value-span'>{{memberInfo.companyName}}</span>
<div class="content">
<div class="info-row">
<span class="label-span">企业名称</span>
<span class="value-span">{{ memberInfo.companyName }}</span>
</div>
<div class='info-row'>
<span class='label-span'>企业管理员</span>
<span class='value-span'>{{memberInfo.contactPerson}}</span>
<div class="info-row">
<span class="label-span">企业管理员</span>
<span class="value-span">{{ memberInfo.contactPerson }}</span>
</div>
<div class='info-row'>
<span class='label-span'>管理员电话</span>
<span class='value-span'>{{memberInfo.contactPhone}}</span>
<div class="info-row">
<span class="label-span">管理员电话</span>
<span class="value-span">{{ memberInfo.contactPhone }}</span>
</div>
<div class='info-row'>
<span class='label-span'>管理员邮箱</span>
<span class='value-span'>{{memberInfo.contactMail}}</span>
<div class="info-row">
<span class="label-span">管理员邮箱</span>
<span class="value-span">{{ memberInfo.contactMail }}</span>
</div>
<div class='info-row'>
<span class='label-span'>会员有效期</span>
<span class='value-span'>{{memberInfo.memberTerm}}</span>
<div class="info-row">
<span class="label-span">会员有效期</span>
<span class="value-span">{{ memberInfo.memberTerm }}</span>
</div>
</div>
</div>
@@ -56,10 +56,10 @@ export default {
return {
// 秘书处信息
secretariatInfo: {
address: '东丽区' , // 地址
contactPerson: '郭某某' , // 联系人
contactPhone: '022-5907252' , // 联系人电话
contactMail: '113222222222222@qq.c113222222222222113222222222222113222222222222113222222222222113222222222222113222222222222113222222222222om' , // 联系人邮箱
address: '东丽区', // 地址
contactPerson: '郭某某', // 联系人
contactPhone: '022-5907252', // 联系人电话
contactMail: '113222222222222@qq.c113222222222222113222222222222113222222222222113222222222222113222222222222113222222222222113222222222222om' // 联系人邮箱
},
// 本企业信息
memberInfo: {
@@ -67,7 +67,7 @@ export default {
contactPerson: '', // 企业管理员
contactPhone: '', // 管理员电话
contactMail: '', // 管理员邮箱
memberTerm: 'xxxx年xx月xx日到xxxx年xx月xx日', // 会员有效期
memberTerm: 'xxxx年xx月xx日到xxxx年xx月xx日' // 会员有效期
}
}
},
@@ -80,8 +80,9 @@ export default {
}
</script>
<style scoped lang='less'>
<style scoped lang="less">
@import '~@assets/less/common.less';
.member-basic-info {
position: relative;
margin-bottom: 20px;
@@ -92,7 +93,7 @@ export default {
color: #999;
opacity: 1;
.panel-cell{
.panel-cell {
flex: 1;
width: 0;
height: 419px;
@@ -101,6 +102,7 @@ export default {
border-radius: 4px;
box-shadow: -2px 0px 10px 10px rgba(51, 51, 51, 0.10);
background: #ffffff;
.title {
height: 56px;
line-height: 56px;
@@ -109,22 +111,26 @@ export default {
padding: 0 20px;
font-size: 16px;
}
.content{
.content {
padding: 10px;
// 每行数据
.info-row{
.info-row {
padding: 10px;
display: flex;
flex-direction: row;
align-items: baseline;
& > span {
display: inline-block;
white-space: pre-wrap;
}
.label-span{
.label-span {
width: 100px;
}
.value-span{
.value-span {
width: 0;
flex: 1;
overflow: hidden;
@@ -134,7 +140,8 @@ export default {
}
}
}
.panel-cell + .panel-cell{
.panel-cell + .panel-cell {
margin-left: 10px;
}
}
@@ -1,13 +1,563 @@
<!--标协会员-证书管理-->
<template>
<div>证书管理</div>
<div class="main-box">
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :span="6" :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="证书类型" class="certificate-type-item">
<j-dict-select-tag
placeholder="请选择证书类型"
v-model="queryParam.certificateType"
:title="queryParam.certificateType"
dictCode="certificate_type" />
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="状态">
<j-multi-select-tag
placeholder="请选择证书状态"
v-model="queryParam.certificateStatus"
dictCode="certificate_status"
>
</j-multi-select-tag>
</a-form-item>
</a-col>
<template>
<a-col :xl="10" :lg="11" :md="12" :sm="24">
<a-form-item label="发证时间">
<j-date
placeholder="请选择开始日期"
date-format="YYYY-MM-DD 00:00:00"
class="query-group-cust"
v-model="queryParam.beginCertificationDate"
:disabled-date="disabledStartDate">
</j-date>
<span class="query-group-split-cust"></span>
<j-date
placeholder="请选择结束日期"
date-format="YYYY-MM-DD 23:59:59"
class="query-group-cust"
v-model="queryParam.endCertificationDate"
:disabled-date="disabledEndDate">
</j-date>
</a-form-item>
</a-col>
</template>
<a-col :xl="6" :lg="7" :md="8" :sm="24" v-has=" 'vin:applicationHistory'">
<a-form-item label="单位全称">
<a-input placeholder="请输入单位全称" v-model="queryParam.companyName"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">刷新</a-button>
<a-button
type="primary"
@click="applyCertificate"
class="primary"
style="margin-left: 8px">申请证书
</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- table区域-begin -->
<div>
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img
v-else
:src="getImgView(text)"
height="25px"
alt=""
style="max-width:80px;font-size: 12px;font-style: italic;" />
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="uploadFile(text)">
下载
</a-button>
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record">
<a @click="handleDetail(record)">查看</a>
<!-- <a v-has="'vin:verify'" v-show="record.certificateStatus == 3">-->
<!-- <a href="javascript:;" @click="(record.certificateStatus === 3) && handleVerify(record)">核实</a>-->
<!-- </a>-->
<a v-show="record.certificateStatus == 4">
<a href="javascript:;" @click="(record.certificateStatus == 4) && bindMember(record)">绑定会员</a>
</a>
<!-- v-show="record.chargeType != 1 && record.certificateModality == 3 && record.certificateStatus == 5"-->
<!-- 已绑定的证书不能续费 已支付已缴费的不能续费 需要流程走完才能续费 v-has="'vin:renew'"-->
<a
v-show="record.certificateStatus === 4 ||record.certificateStatus === 5 || record.certificateStatus === 7 ">
<a href="javascript:;" @click="renewCharge(record)">续费</a>
</a>
<!-- v-has="'vin:renewal'"-->
<a
v-show="record.certificateModality == 3 && (record.certificateStatus == 1 || record.certificateStatus == 4)">
<a href="javascript:;"
@click="(record.certificateModality == 3 && (record.certificateStatus == 1 || record.certificateStatus == 4)) && replacement(record)">换证</a>
</a>
<a v-show="(record.certificateStatus == 6 && record.chargeType == 2) || record.certificateStatus == 0">
<a href="javascript:;"
@click="((record.certificateStatus == 6 && record.chargeType == 2) || record.certificateStatus == 0) && handleEditRenew(record)">编辑</a>
</a>
<!-- 会员 只有企业证书才 正常使用 已绑定的证书 可授权申请-->
<a
v-show="roleCode === 'member'&& record.certificateType === 2 && (record.certificateStatus === 4 || record.certificateStatus === 1)"
>
<a href="javascript:;" @click="authorizationFunc(record)">授权申请</a>
</a>
<a v-show="record.certificateStatus == 6 || record.certificateStatus == 0">
<a
@click="(record.certificateStatus == 6 || record.certificateStatus == 0) && handleDelete(record.id)">删除</a>
</a>
</span>
<!-- 状态渲染模板 -->
<template slot="customRenderStatus" slot-scope="certificateStatus">
<a-tag v-if="certificateStatus==0" color="#c37e00">待支付</a-tag>
<a-tag v-if="certificateStatus==1" color="#40835e">已绑定</a-tag>
<a-tag v-if="certificateStatus==2" color="#40835e">已支付</a-tag>
<a-tag v-if="certificateStatus==3" color="#40835e">已缴费</a-tag>
<a-tag v-if="certificateStatus==4" color="#40835e">正常使用</a-tag>
<a-tag v-if="certificateStatus==5" color="#8a8c8e">已失效</a-tag>
<a-tag v-if="certificateStatus==6" color="#8a8c8e">已驳回</a-tag>
<a-tag v-if="certificateStatus==7" color="#8a8c8e">绑定已失效</a-tag>
</template>
<!-- 临近证书与超期证书-->
<template slot="codeState" slot-scope="text,record">
<span v-if="record.codeState === 0 ">{{ text }}<span class="state-0">超期证书</span></span><!--
--><span v-if="record.codeState === 1 ">{{ text }}<span class="state-1">临期证书</span></span><!--
--><span v-if="record.codeState === 2 ">{{ text }}</span>
</template>
</a-table>
</div>
<vinCertificate-modal ref="modalForm" @ok="modalFormOk"></vinCertificate-modal>
</a-card>
</div>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import VinCertificateModal from './memberManagementModule/VinCertificateModal'
import JDate from '../../components/tools/JDate'
import Vue from 'vue'
import { USER_INFO } from '@/store/mutation-types'
import JMultiSelectTag from '@comp/standardsAssociation/JMultiSelectTag'
import { RangeDateMixin } from '@/mixins/RangeDateMixin'
import JDictSelectTag from '../../components/standardsAssociation/JDictSelectTag'
// eslint-disable-next-line no-unused-vars
import { deleteAction, downloadFile, getAction, getFileAccessHttpUrl } from '@/api/memberManage'
export default {
name: 'CertificateManagement'
name: 'CertificateManagement',
mixins: [JeroListMixin, mixinDevice, RangeDateMixin],
components: {
JMultiSelectTag,
JDate,
VinCertificateModal,
JDictSelectTag
},
data() {
return {
deleteAction,
getAction,
getFileAccessHttpUrl,
// 时间范围查询显示的类型
rangeDateFormat: {
begin: 'YYYY-MM-DD hh:mm:ss',
end: 'YYYY-MM-DD'
},
description: 'VIN证书管理页面',
roleCode: Vue.ls.get(USER_INFO).roleCode,
// 表头
columns: [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function(t, r, index) {
return parseInt(index) + 1
}
},
{
title: '单位全称',
align: 'center',
dataIndex: 'companyName'
},
{
title: '证书类型',
align: 'center',
dataIndex: 'certificateType',
customRender: function(text) {
if (text === 1) {
return '世界制造厂识别代号(WMI)证书'
} else if (text === 2) {
return '企业名称代号证书'
}
}
},
{
title: '证书代码',
align: 'center',
dataIndex: 'code',
scopedSlots: { customRender: 'codeState' }
},
{
title: '发证时间',
align: 'center',
dataIndex: 'certificationDate'
},
{
title: '生效时间',
align: 'center',
dataIndex: 'effectDate',
customRender: function(text) {
return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text)
}
},
{
title: '失效时间',
align: 'center',
dataIndex: 'invalidDate',
customRender: function(text) {
return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text)
}
},
{
title: '备案通知书',
align: 'center',
dataIndex: 'noticeOfFiling',
customRender: function(text) {
if (text === 1) {
return '是'
} else if (text === 0) {
return '否'
} else {
return ''
}
}
},
{
title: '状态',
align: 'center',
dataIndex: 'certificateStatus',
scopedSlots: { customRender: 'customRenderStatus' }
},
{
title: '证书形式',
align: 'center',
dataIndex: 'certificateModality',
customRender: function(text) {
if (text === 1) {
return '换证'
} else if (text === 2) {
return '续证'
} else if (text === 3) {
return '正常'
} else if (text === 4) {
return '申请'
}
}
},
{
title: '操作',
dataIndex: 'action',
align: 'center',
// fixed:"right",
width: 147,
scopedSlots: { customRender: 'action' }
}
],
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
url: {
list: '/vinCertificate/vinCertificate/getMyVinCertificate',
delete: '/vinCertificate/vinCertificate/delete',
deleteBatch: '/vinCertificate/vinCertificate/deleteBatch',
exportXlsUrl: '/vinCertificate/vinCertificate/exportXls',
importExcelUrl: 'vinCertificate/vinCertificate/importExcel'
},
dictOptions: {},
dateKeyObj: {
beginKey: 'beginCertificationDate',
endKey: 'endCertificationDate'
}
}
},
computed: {
importExcelUrl: function() {
return `${window._CONFIG['memberURL']}/${this.url.importExcelUrl}`
}
},
methods: {
initDictConfig() {
},
// 授权
authorizationFunc(record) {
this.$router.push({
name: 'member-vinCertificate-Authorization',
query: {
id: record.id
}
})
},
/*
* 授权记录
* */
authorizationHistoryFunc(record) {
this.$router.push({
name: 'member-vinCertificate-Authorization',
query: {
id: record.id
}
})
},
// 申请证书
applyCertificate: function() {
const that = this
// 可申请的免费证书的个数
let freeCount
getAction('/vinCertificate/vinCertificate/getFreeCount').then(res => {
if (res.success) {
freeCount = res.result
that.$refs.modalForm.title = '新增申请'
that.$refs.modalForm.disableSubmit = false
that.$refs.modalForm.freeCount = freeCount
// freeCount 为0 打开收费证书申请窗口
if (freeCount === 0) {
that.$refs.modalForm.pageType = 6
} else {
that.$refs.modalForm.pageType = 5
}
// 弹窗口操作
that.$refs.modalForm.add()
} else {
that.$message.warning(res.message)
}
})
},
// 查看证书
handleDetail: function(record) {
this.$refs.modalForm.title = '查看证书'
this.$refs.modalForm.disableSubmit = true
this.$refs.modalForm.pageType = 1
this.$refs.modalForm.remainingTime = this.remainingTimeCount(record.certificateValidDate)
this.$refs.modalForm.edit(record)
},
// 核实证书
handleVerify: function(val) {
this.$refs.modalForm.title = '核对证书'
this.$refs.modalForm.disableSubmit = true
if (val.certificateModality === 1) {
this.$refs.modalForm.pageType = 3
} else {
// 新增和续证使用2号核对窗口
this.$refs.modalForm.pageType = 2
}
// 换证时使用3号核对窗口
this.$refs.modalForm.edit(val)
},
// 绑定会员
bindMember: function(record) {
this.$refs.modalForm.title = '绑定会员'
this.$refs.modalForm.disableSubmit = true
// 绑定会员时使用4号窗口
this.$refs.modalForm.pageType = 4
// 证书id
this.$refs.modalForm.vinId = record.id
this.$refs.modalForm.edit(record)
},
// 续费
renewCharge: function(record) {
// if(!(record.chargeType != 1 && record.certificateModality == 3 && record.certificateStatus == 5)){
// return;
// }
this.$refs.modalForm.title = '续费'
this.$refs.modalForm.disableSubmit = true
// 换证显示 1是世界证书
this.$refs.modalForm.isChangeCer = record.certificateType
// 证书续费时使用7号窗口
this.$refs.modalForm.pageType = 7
this.$refs.modalForm.edit2(record)
},
// 换证
replacement: function(record) {
this.$refs.modalForm.title = '换证'
this.$refs.modalForm.disableSubmit = true
// 换证的时候使用8号窗口
this.$refs.modalForm.pageType = 8
this.$refs.modalForm.edit3(record)
},
// 编辑: 包括免费证书,收费证书,续费,换证
handleEditRenew: function(record) {
console.log(record)
record.certificateModality = Number(record.certificateModality)
record.certificateStatus = Number(record.certificateStatus)
record.chargeType = Number(record.chargeType)
// 分为续证驳回和 非免费证书申请驳回 chargeType 1是免费证书 2是收费证书
this.$refs.modalForm.title = ''
this.$refs.modalForm.disableSubmit = true
// certificateStatus 0 是待支付
if (record.certificateStatus === 0) {
if (record.chargeType === 1) {
if (record.certificateModality === 4) {
// 免费证书申请编辑
let freeCount
getAction('/vinCertificate/vinCertificate/getFreeCount').then((res) => {
freeCount = res.result
this.$refs.modalForm.freeCountVin = freeCount + 1
this.$refs.modalForm.title = '新增申请'
this.$refs.modalForm.disableSubmit = false
this.$refs.modalForm.pageType = 10
this.$refs.modalForm.edit5(record)
return
})
return
} else if (record.certificateModality === 1) {
// 免费证书换证编辑
this.$refs.modalForm.title = '换证'
this.$refs.modalForm.disableSubmit = true
// 换证的时候使用13号窗口
this.$refs.modalForm.pageType = 13
this.$refs.modalForm.edit8(record)
}
} else if (record.chargeType === 2 && record.certificateModality === 4) {
// 收费证书编辑
this.$refs.modalForm.title = '新增申请'
this.$refs.modalForm.disableSubmit = false
this.$refs.modalForm.pageType = 11
this.$refs.modalForm.edit6(record)
} else if (record.chargeType === 2 && record.certificateModality === 2) {
// 续费编辑
this.$refs.modalForm.title = '续费'
this.$refs.modalForm.disableSubmit = true
// 证书续费编辑时使用12号窗口
this.$refs.modalForm.pageType = 12
this.$refs.modalForm.edit7(record)
} else if (record.chargeType === 2 && record.certificateModality === 1) {
// 换证编辑
this.$refs.modalForm.title = '换证'
this.$refs.modalForm.disableSubmit = true
// 换证的时候使用13号窗口
this.$refs.modalForm.pageType = 13
this.$refs.modalForm.edit8(record)
}
} else {
// 新增证书缴费编辑窗口
if (record.chargeType === 2 && record.certificateModality === 4 && record.certificateStatus === 6) {
this.$refs.modalForm.title = '新增申请'
this.$refs.modalForm.disableSubmit = false
this.$refs.modalForm.pageType = 11
this.$refs.modalForm.edit6(record)
} else if (record.chargeType === 2 && record.certificateModality === 2 && record.certificateStatus === 6) {
this.$refs.modalForm.title = '续费'
this.$refs.modalForm.disableSubmit = true
// 证书续费编辑时使用12号窗口
this.$refs.modalForm.pageType = 12
this.$refs.modalForm.edit7(record)
}
}
},
remainingTimeCount: function(date) {
if (date === null || date === undefined || date.length === 0) {
return 0
}
date = date.substring(11)
var strArr = (date + ' 23:59:59').split(' ')
var strDay = strArr[0].split('-')
var strTime = strArr[1].split(':')
var yy = strDay[0]
var mm = strDay[1]
var dd = strDay[2]
var hh = strTime[0]
var mi = strTime[1]
var se = strTime[2]
var date1 = new Date(Date.UTC(yy, mm - 1, dd, hh - 8, mi, se))
var date2 = new Date()
if (date1 <= date2) {
return 0
}
// var miao = (date1.getTime() - date2.getTime()) / 1000
var fen = ((date1.getTime() - date2.getTime()) / 1000) / 60
return parseInt(fen / (24 * 60)) // 得出剩bai余
}
}
}
</script>
<style scoped>
<style scoped lang="less">
@import '~@assets/less/common.less';
</style>
@label-width: 78px;
.certificate-type-item {
/deep/ .ant-form-item-label {
min-width: @label-width !important;
}
/deep/ .ant-form-item-control-wrapper {
width: calc(100% - @label-width);
max-width: calc(100% - @label-width);
& > span {
max-width: 100%;
}
}
}
.state-0 {
display: inline-block;
margin-left: 5px;
color: red;
}
.state-1 {
display: inline-block;
margin-left: 5px;
color: #c37e00;
}
</style>
@@ -1,6 +1,6 @@
<!--企业端的会员管理的相关信息 -->
<template>
<div class='main-box'>
<div class="main-box">
<a-card :bordered="false">
<!--企业端-编辑框-->
<div>
@@ -28,28 +28,29 @@
<a-col :span="6" v-if="memberInfo.memberStatus === 3 ">
<a-form-item label="会员批复文件" :labelCol="labelColTopInfo" :wrapperCol="wrapperColTopInfo">
<!-- 如果当前没有批复文号 不显示 会员批复文件-->
<span v-if="currentApproval" class="approveFile" @click="uploadApproveFile(memberInfo)">会员批复文件.pdf</span>
<span v-if="currentApproval" class="approveFile"
@click="uploadApproveFile(memberInfo)">会员批复文件.pdf</span>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24">
<a-col :span='6'>
<a-form-item label='会员状态' :labelCol='labelColTopInfo' :wrapperCol='wrapperColTopInfo'>
<a-col :span="6">
<a-form-item label="会员状态" :labelCol="labelColTopInfo" :wrapperCol="wrapperColTopInfo">
<span
data-v-fd11489c=''
class='ant-tag ant-tag-yellow'
v-if='memberInfo.memberStatus === 1'>待审核</span>
<span data-v-fd11489c='' class='ant-tag ant-tag-blue' v-if='memberInfo.memberStatus === 2'>未缴费</span>
data-v-fd11489c=""
class="ant-tag ant-tag-yellow"
v-if="memberInfo.memberStatus === 1">待审核</span>
<span data-v-fd11489c="" class="ant-tag ant-tag-blue" v-if="memberInfo.memberStatus === 2">未缴费</span>
<span
data-v-fd11489c=''
class='ant-tag ant-tag-green'
v-if='memberInfo.memberStatus === 3'>已缴费</span>
data-v-fd11489c=""
class="ant-tag ant-tag-green"
v-if="memberInfo.memberStatus === 3">已缴费</span>
<span
data-v-fd11489c=''
class='ant-tag ant-tag-gray'
v-if='memberInfo.memberStatus === 4'>会员已过期</span>
<span class='red'>会员还剩<b>{{ remainingTime }}</b></span>
data-v-fd11489c=""
class="ant-tag ant-tag-gray"
v-if="memberInfo.memberStatus === 4">会员已过期</span>
<span class="red">会员还剩<b>{{ remainingTime }}</b></span>
</a-form-item>
</a-col>
<a-col :span="6">
@@ -64,29 +65,33 @@
</a-col>
<!-- 副理事会长才显示推荐表-->
<a-col :span="6" v-if="memberInfo.memberNature === 1 ">
<a-form-item label="推荐表" :labelCol="labelColTopInfo" :wrapperCol="wrapperColTopInfo">
<span class="approveFile" @click="downRecommendWord(memberInfo.recommendWordId)">{{ memberInfo.recommendWordName }}</span>
<a-form-item label="推荐表" :labelCol="labelColTopInfo" :wrapperCol="wrapperColTopInfo">
<span class="approveFile"
@click="downRecommendWord(memberInfo.recommendWordId)">{{ memberInfo.recommendWordName }}</span>
</a-form-item>
</a-col>
</a-row>
<div>
<div class="row clearfix">
<div class="col-md-12 column">
<a-tabs @change="switchNav" :animated='false'>
<a-tabs @change="switchNav" :animated="false">
<a-tab-pane key="1" tab="会员信息">
<member-info v-if='navIndex === 1' ref='memberInfoDom' :member-info='memberInfo'></member-info>
<member-info v-if="navIndex === 1" ref="memberInfoDom" :member-info="memberInfo"></member-info>
</a-tab-pane>
<a-tab-pane key="2" tab="缴费记录">
<payment-info v-if='navIndex === 2' ref='paymentInfo' :member-info='memberInfo'></payment-info>
<payment-info v-if="navIndex === 2" ref="paymentInfo" :member-info="memberInfo"></payment-info>
</a-tab-pane>
<a-tab-pane key="3" tab="证书记录">
<certificate-info v-if='navIndex === 3' ref='certificateInfo' :member-info='memberInfo'></certificate-info>
<certificate-info v-if="navIndex === 3" ref="certificateInfo"
:member-info="memberInfo"></certificate-info>
</a-tab-pane>
<a-tab-pane key="4" tab="单位名称变更记录">
<company-name-apply-record v-if='navIndex === 4' ref='companyNameApplyRecord' :member-info='memberInfo'></company-name-apply-record>
<company-name-apply-record v-if="navIndex === 4" ref="companyNameApplyRecord"
:member-info="memberInfo"></company-name-apply-record>
</a-tab-pane>
<a-tab-pane key="5" tab="资源下载记录">
<download-record v-if='navIndex === 5' ref='downloadRecord' :member-info='memberInfo'></download-record>
<download-record v-if="navIndex === 5" ref="downloadRecord"
:member-info="memberInfo"></download-record>
</a-tab-pane>
</a-tabs>
</div>
@@ -178,7 +183,8 @@ export default {
return '理事单位'
case 3:
return '会员单位'
default: return ''
default:
return ''
}
}
},
@@ -360,7 +366,7 @@ export default {
}
</script>
<style scoped lang='less'>
<style scoped lang="less">
@import '~@assets/less/common.less';
// 会员批复文件的样式
.approveFile {
@@ -368,14 +374,16 @@ export default {
cursor: pointer;
margin-left: 10px;
}
.red {
color: red;
}
// 2021-09-23 标题部分的修改
/deep/.member-panel-title{
/deep/ .member-panel-title {
height: 48px;
line-height: 48px;
background: rgba(6,159,153,0.1);
background: rgba(6, 159, 153, 0.1);
font-size: 16px;
width: calc(100% - 0px);
color: #2F3133;
@@ -1,13 +1,306 @@
<!--缴费信息-证书缴费-->
<template>
<div>缴费信息-证书信息</div>
<div class="main-box">
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24" v-if="!memberFlag">
<a-form-item label="单位全称">
<a-input placeholder="请输入单位全称" v-model="queryParam.companyName"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="缴费状态">
<j-dict-select-tag placeholder="请选择缴费状态" v-model="queryParam.paymentStatus"
dictCode="certificate_payment_status" />
</a-form-item>
</a-col>
<template>
<a-col :xl="10" :lg="11" :md="12" :sm="24">
<a-form-item label="缴费时间">
<j-date date-format="YYYY-MM-DD 00:00:00" placeholder="请选择开始日期" class="query-group-cust"
v-model="queryParam.submissionTime_begin" :disabled-date="disabledStartDate"></j-date>
<span class="query-group-split-cust"></span>
<j-date date-format="YYYY-MM-DD 23:59:59" placeholder="请选择结束日期" class="query-group-cust"
v-model="queryParam.submissionTime_end" :disabled-date="disabledEndDate"></j-date>
</a-form-item>
</a-col>
</template>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="缴费类型">
<j-dict-select-tag placeholder="请选择缴费类型" v-model="queryParam.paymentType"
dictCode="certificate_payment_type" />
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">刷新</a-button>
<!-- <a @click="handleToggleSearch" style="margin-left: 8px">-->
<!-- {{ toggleSearchStatus ? '收起' : '展开' }}-->
<!-- <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>-->
<!-- </a>-->
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>-->
</div>
<!-- table区域-begin -->
<div>
<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">-->
<!-- <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>-->
<!-- <a style="margin-left: 24px" @click="onClearSelected">清空</a>-->
<!-- </div>-->
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" height="25px" alt=""
style="max-width:80px;font-size: 12px;font-style: italic;" />
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="uploadFile(text)">
下载
</a-button>
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record">
<!-- <a v-has="'certificate:paymentinfo:check'" v-show="record.paymentStatus==1" @click="(record.paymentStatus==1) && handleCheck(record)">核对凭证</a>-->
<a @click="handleDetail(record)">查看</a>
</span>
</a-table>
</div>
<certificatePaymentInfo-modal ref="modalForm" @ok="modalFormOk"></certificatePaymentInfo-modal>
</a-card>
</div>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import CertificatePaymentInfoModal from './modules/CertificatePaymentInfoModal'
import JDictSelectTag from '@/components/standardsAssociation/JDictSelectTag.vue'
import JDate from '@/components/tools/JDate.vue'
import { getMemberInfoById } from '@/api/standardsAssociationApi'
import { RangeDateMixin } from '@/mixins/RangeDateMixin'
import { deleteAction, getAction, getFileAccessHttpUrl } from '@/api/memberManage'
export default {
name: 'CertificateInfo'
name: 'CertificateInfo',
mixins: [JeroListMixin, mixinDevice, RangeDateMixin],
components: {
JDictSelectTag,
JDate,
CertificatePaymentInfoModal
},
data() {
return {
deleteAction,
getAction,
getFileAccessHttpUrl,
// 时间范围查询显示的类型
rangeDateFormat: {
begin: 'YYYY-MM-DD hh:mm:ss',
end: 'YYYY-MM-DD hh:mm:ss'
},
// todo 目前先固定id
userId: '1413419593870872578',
description: '证书缴费信息表管理页面',
// 表头
columns: [],
url: {
list: '/certificatePaymentInfo/list',
delete: '/certificatePaymentInfo/delete',
deleteBatch: '/certificatePaymentInfo/deleteBatch',
exportXlsUrl: '/certificatePaymentInfo/exportXls',
importExcelUrl: '/certificatePaymentInfo/importExcel'
},
/* 筛选参数 */
filters: {
column: '',
order: ''
},
dictOptions: {},
memberFlag: true,
dateKeyObj: {
beginKey: 'submissionTime_begin',
endKey: 'submissionTime_end'
}
}
},
created() {
this.loadMember()
},
methods: {
initDictConfig() {
},
// 核对凭证
handleCheck: function(record) {
this.$refs.modalForm.handleCheck(record)
this.$refs.modalForm.title = '核对凭证'
this.$refs.modalForm.pageType = 2
},
// 查看
handleDetail: function(record) {
this.$refs.modalForm.detail(record)
this.$refs.modalForm.title = '查看'
this.$refs.modalForm.disableSubmit = true
this.$refs.modalForm.pageType = 2
},
loadMember() {
getMemberInfoById({ id: this.userId }).then((res) => {
if (res.success) {
this.memberFlag = true
// 表头
this.columns = [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function(t, r, index) {
return parseInt(index) + 1
}
},
{
title: '缴费单号',
align: 'center',
dataIndex: 'billNumber'
},
{
title: '缴费类型',
align: 'center',
dataIndex: 'paymentType_dictText'
},
{
title: '缴费金额',
align: 'center',
dataIndex: 'paymentAmount'
},
{
title: '缴费时间',
align: 'center',
dataIndex: 'submissionTime'
},
{
title: '核对时间',
align: 'center',
dataIndex: 'checkTime'
},
{
title: '缴费状态',
align: 'center',
dataIndex: 'paymentStatus_dictText'
},
{
title: '操作',
dataIndex: 'action',
align: 'center',
// fixed:"right",
width: 200,
scopedSlots: { customRender: 'action' }
}
]
} else {
this.memberFlag = false
// 表头
this.columns = [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function(t, r, index) {
return parseInt(index) + 1
}
},
{
title: '缴费单号',
align: 'center',
dataIndex: 'billNumber'
},
{
title: '单位全称',
align: 'center',
dataIndex: 'companyName'
},
{
title: '缴费类型',
align: 'center',
dataIndex: 'paymentType_dictText'
},
{
title: '缴费金额',
align: 'center',
dataIndex: 'paymentAmount'
},
{
title: '缴费时间',
align: 'center',
dataIndex: 'submissionTime'
},
{
title: '核对时间',
align: 'center',
dataIndex: 'checkTime'
},
{
title: '缴费状态',
align: 'center',
dataIndex: 'paymentStatus_dictText'
},
{
title: '操作',
dataIndex: 'action',
align: 'center',
// fixed:"right",
width: 200,
scopedSlots: { customRender: 'action' }
}
]
console.log(res.message)
}
})
}
}
}
</script>
<style scoped>
</style>
<style scoped lang="less">
@import '~@assets/less/common.less';
</style>
@@ -1,13 +1,284 @@
<!--缴费信息-发票信息-->
<template>
<div>缴费信息-发票信息</div>
<div class="main-box">
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="邮寄单号">
<a-input placeholder="请输入邮寄单号" :maxLength="20" v-model="queryParam.postNo"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="状态">
<j-dict-select-tag
placeholder="请选择邮寄状态"
v-model="queryParam.postStatus"
dictCode="post_status" />
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="邮寄方式">
<j-dict-select-tag
placeholder="请选择邮寄方式"
v-model="queryParam.sendMethod"
dictCode="send_method" />
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="缴费单号">
<a-input placeholder="请输入缴费单号" :maxLength="20" v-model="queryParam.billNumber"></a-input>
</a-form-item>
</a-col>
<template>
<a-col :xl="10" :lg="11" :md="12" :sm="24">
<a-form-item label="邮寄日期">
<j-date
placeholder="请选择开始日期"
date-format="YYYY-MM-DD"
class="query-group-cust"
v-model="queryParam.sendDate_begin"
:disabled-date="disabledStartDate"></j-date>
<span class="query-group-split-cust"></span>
<j-date
placeholder="请选择结束日期"
date-format="YYYY-MM-DD"
class="query-group-cust"
v-model="queryParam.sendDate_end"
:disabled-date="disabledEndDate"></j-date>
</a-form-item>
</a-col>
</template>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- table区域-begin -->
<div>
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img
v-else
:src="getImgView(text)"
height="25px"
alt=""
style="max-width:80px;font-size: 12px;font-style: italic;" />
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="uploadFile(text)">
下载
</a-button>
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record">
<!-- <a @click="handlePost(record)" v-has="'bill.post'" v-show="record.postStatus !=2 ">邮寄</a>-->
<a @click="handleInfo(record)">查看</a>
</span>
</a-table>
</div>
<billingInfo-modal ref="modalForm" @ok="modalFormOk"></billingInfo-modal>
</a-card>
</div>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import BillingInfoModal from './modules/BillingInfoModal'
import JDate from '@/components/tools/JDate'
import { RangeDateMixin } from '@/mixins/RangeDateMixin'
import { deleteAction, getAction, getFileAccessHttpUrl } from '@/api/memberManage'
import JDictSelectTag from '../../../components/standardsAssociation/JDictSelectTag'
export default {
name: 'InvoiceInfo'
name: 'InvoiceInfo',
mixins: [JeroListMixin, mixinDevice, RangeDateMixin],
components: {
BillingInfoModal,
JDate,
JDictSelectTag
},
data() {
return {
deleteAction,
getAction,
getFileAccessHttpUrl,
// 时间范围查询显示的类型
rangeDateFormat: {
begin: 'YYYY-MM-DD hh:mm:ss',
end: 'YYYY-MM-DD hh:mm:ss'
},
description: '开票信息表管理页面',
isMember: true,
// 表头
columns: [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function(t, r, index) {
return parseInt(index) + 1
}
},
{
title: '单位全称',
align: 'center',
dataIndex: 'companyName'
},
{
title: '联系人',
align: 'center',
dataIndex: 'liaisonMan'
},
{
title: '联系人手机号',
align: 'center',
dataIndex: 'mobile'
},
// 邮寄状态
{
title: '状态',
align: 'center',
dataIndex: 'postStatus_dictText'
},
// {
// title: '开票类型',
// align: 'center',
// // rank_dictText
// dataIndex: 'billingType_dictText'
// },
{
title: '缴费单号',
align: 'center',
dataIndex: 'billNumber'
},
{
title: '缴费时间',
align: 'center',
dataIndex: 'paymentDate',
customRender: function(text) {
return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text)
}
},
{
title: '发票金额',
align: 'center',
dataIndex: 'billMoney'
},
{
title: '发票号',
align: 'center',
// rank_dictText
dataIndex: 'billNo'
},
{
title: '邮寄方式',
align: 'center',
dataIndex: 'sendMethod_dictText'
},
{
title: '邮寄单号',
align: 'center',
dataIndex: 'postNo'
},
{
title: '邮寄日期',
align: 'center',
dataIndex: 'sendDate',
customRender: function(text) {
return !text ? '' : (text.length > 10 ? text.substr(0, 10) : text)
}
},
{
title: '操作',
dataIndex: 'action',
align: 'center',
// fixed:"right",
width: 147,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: '/billingInfo/billingInfo/list',
delete: '/billingInfo/billingInfo/delete',
deleteBatch: '/billingInfo/billingInfo/deleteBatch',
exportXlsUrl: '/billingInfo/billingInfo/exportXls',
importExcelUrl: 'billingInfo/billingInfo/importExcel'
},
dictOptions: {},
dateKeyObj: {
beginKey: 'sendDate_begin',
endKey: 'sendDate_end'
}
}
},
created() {
// 会员不显示 单位全称列
if (this.isMember === 'member') {
const index = this.columns.findIndex(item => item.dataIndex === 'companyName')
index > -1 ? this.columns.splice(index, 1) : this.columns
}
},
methods: {
initDictConfig() {
},
// 邮寄发票方法
handlePost(record) {
this.$refs.modalForm.title = '邮寄发票'
this.$refs.modalForm.disableSubmit = true
this.$refs.modalForm.pageType = 1
this.$refs.modalForm.edit(record)
},
// 查看发票方法
handleInfo(record) {
this.$refs.modalForm.title = '查看发票'
this.$refs.modalForm.disableSubmit = true
this.$refs.modalForm.pageType = 2
this.$refs.modalForm.edit(record)
}
}
}
</script>
<style scoped>
</style>
<style scoped lang="less">
@import '~@assets/less/common.less';
</style>
@@ -1,13 +1,375 @@
<!--缴费信息-会员缴费-->
<template>
<div>缴费信息-会员信息</div>
<div class="main-box">
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24" v-if="!memberFlag">
<a-form-item label="单位全称">
<a-input placeholder="请输入单位全称" v-model="queryParam.companyName"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="缴费类型">
<j-dict-select-tag placeholder="请选择缴费类型" v-model="queryParam.paymentType" dictCode="payment_type" />
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="缴费状态">
<j-dict-select-tag placeholder="请选择缴费状态" v-model="queryParam.paymentStatus" dictCode="payment_status" />
</a-form-item>
</a-col>
<a-col :xl="10" :lg="11" :md="12" :sm="24">
<a-form-item label="缴费时间">
<j-date date-format="YYYY-MM-DD 00:00:00" placeholder="请选择开始日期" class="query-group-cust"
v-model="queryParam.submissionTime_begin" :disabled-date="disabledStartDate"></j-date>
<span class="query-group-split-cust"></span>
<j-date date-format="YYYY-MM-DD 23:59:59" placeholder="请选择结束日期" class="query-group-cust"
v-model="queryParam.submissionTime_end" :disabled-date="disabledEndDate"></j-date>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">刷新</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel">
<a-icon type="delete" />
删除
</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作
<a-icon type="down" />
</a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" height="25px" alt=""
style="max-width:80px;font-size: 12px;font-style: italic;" />
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="uploadFile(text)">
下载
</a-button>
</template>
<!-- 状态 -->
<template slot="status" slot-scope="text, record">
<span v-if="record.paymentStatus === 1 " style="color:#33A3DC">已支付</span>
<span v-if="record.paymentStatus === 2 " style="color:#F56C6C"> 已驳回 </span>
<span v-if="record.paymentStatus === 3 " style="color:#40835E">已缴费</span>
</template>
<template slot="bind">
</template>
<span slot="action" class="action-span-cell" slot-scope="text, record">
<a v-show="record.paymentStatus<1 ||record.paymentStatus==2"
@click="(record.paymentStatus<1 ||record.paymentStatus==2) && handleEdit(record)">编辑</a>
<a v-show="record.paymentStatus<1||record.paymentStatus==2">
<a @click="(record.paymentStatus<1||record.paymentStatus==2) && handleDelete(record.id)">删除</a>
</a>
<!-- <a v-has="'paymentinfo:check'" v-show="record.paymentStatus==1">-->
<!-- <a href="javascript:;" @click="(record.paymentStatus==1) && handleCheck(record)">核对凭证</a>-->
<!-- </a>-->
<a>
<a href="javascript:;" @click="handleDetail(record)">查看</a>
</a>
</span>
</a-table>
</div>
<paymentInfo-modal ref="modalForm" @ok="modalFormOk"></paymentInfo-modal>
</a-card>
</div>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import PaymentInfoModal from './modules/PaymentInfoModal'
import JDictSelectTag from '@/components/standardsAssociation/JDictSelectTag.vue'
import JDate from '@/components/tools/JDate.vue'
import { getMemberInfoById } from '@/api/standardsAssociationApi'
import { RangeDateMixin } from '@/mixins/RangeDateMixin'
import { deleteAction, getAction, getFileAccessHttpUrl } from '@/api/memberManage'
export default {
name: 'MemberInfo'
name: 'MemberInfo',
mixins: [JeroListMixin, mixinDevice, RangeDateMixin],
components: {
JDictSelectTag,
JDate,
PaymentInfoModal
},
data() {
return {
deleteAction,
getAction,
getFileAccessHttpUrl,
// 时间范围查询显示的类型
rangeDateFormat: {
begin: 'YYYY-MM-DD hh:mm:ss',
end: 'YYYY-MM-DD hh:mm:ss'
},
// todo 目前先固定id
userId: '1413419593870872578',
isAdmin: false,
description: '缴费信息表管理页面',
// 表头
columns: [],
url: {
list: '/paymentInfo/list',
delete: '/paymentInfo/delete',
deleteBatch: '/paymentInfo/deleteBatch',
exportXlsUrl: '/paymentInfo/exportXls',
importExcelUrl: '/paymentInfo/importExcel'
},
/* 筛选参数 */
filters: {
column: '',
order: ''
},
dictOptions: {},
memberFlag: true,
dateKeyObj: {
beginKey: 'submissionTime_begin',
endKey: 'submissionTime_end'
}
}
},
created() {
// 根据会员id获取会员信息
this.loadMember()
},
methods: {
initDictConfig() {
},
// 根据会员id获取会员信息
loadMember() {
getMemberInfoById({ id: this.userId }).then((res) => {
if (res.success) {
this.memberFlag = true
// 表头
this.columns = [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function(t, r, index) {
return parseInt(index) + 1
}
},
{
title: '缴费单号',
align: 'center',
dataIndex: 'billNumber'
},
{
title: '缴费类型',
align: 'center',
dataIndex: 'paymentType_dictText'
},
{
title: '生效日期',
align: 'center',
dataIndex: 'effectiveDate'
},
{
title: '失效日期',
align: 'center',
dataIndex: 'invalidationDate'
},
{
title: '缴费时长',
align: 'center',
dataIndex: 'paymentTime_dictText'
},
{
title: '缴费金额',
align: 'center',
dataIndex: 'paymentAmount'
},
{
title: '网员服务费',
align: 'center',
dataIndex: 'serviceCharge'
},
// {
// title:'证书个数',
// align:"center",
// dataIndex: 'certificatesNum'
// },
{
title: '缴费时间',
align: 'center',
dataIndex: 'submissionTime'
},
{
title: '核对时间',
align: 'center',
dataIndex: 'checkTime'
},
{
title: '缴费状态',
align: 'center',
dataIndex: 'paymentStatus_dictText'
},
{
title: '操作',
dataIndex: 'action',
align: 'center',
// fixed:"right",
width: 200,
scopedSlots: { customRender: 'action' }
}
]
} else {
this.memberFlag = false
// 表头
this.columns = [
{
title: '序号',
dataIndex: '',
key: 'rowIndex',
width: 60,
align: 'center',
customRender: function(t, r, index) {
return parseInt(index) + 1
}
},
{
title: '缴费单号',
align: 'center',
dataIndex: 'billNumber'
},
{
title: '单位全称',
align: 'center',
dataIndex: 'companyName'
},
{
title: '缴费类型',
align: 'center',
dataIndex: 'paymentType_dictText'
},
{
title: '生效日期',
align: 'center',
dataIndex: 'effectiveDate'
},
{
title: '失效日期',
align: 'center',
dataIndex: 'invalidationDate'
},
{
title: '缴费时长',
align: 'center',
dataIndex: 'paymentTime_dictText'
},
{
title: '缴费金额',
align: 'center',
dataIndex: 'paymentAmount'
},
{
title: '缴费时间',
align: 'center',
dataIndex: 'submissionTime'
},
{
title: '绑定证书',
align: 'center',
dataIndex: 'bind_dictText',
scopedSlots: { customRender: 'bind', title: 'bind' }
},
{
title: '核对时间',
align: 'center',
dataIndex: 'checkTime'
},
{
title: '缴费状态',
align: 'center',
dataIndex: 'paymentStatus_dictText',
scopedSlots: { customRender: 'status' }
},
{
title: '操作',
dataIndex: 'action',
align: 'center',
// fixed:"right",
width: 200,
scopedSlots: { customRender: 'action' }
}
]
console.log(res.message)
}
})
},
// 核对凭证
handleCheck: function(record) {
this.$refs.modalForm.handleCheck(record)
this.$refs.modalForm.title = '核对凭证'
this.$refs.modalForm.pageType = 2
},
// 查看
handleDetail: function(record) {
this.$refs.modalForm.detail(record)
this.$refs.modalForm.title = '查看'
this.$refs.modalForm.disableSubmit = true
this.$refs.modalForm.pageType = 2
}
}
}
</script>
<style scoped>
</style>
<style scoped lang="less">
@import '~@assets/less/common.less';
</style>
@@ -0,0 +1,436 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<template v-if="pageType == 1">
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-divider orientation="left">
缴费信息
</a-divider>
<a-row>
<a-col :span="12">
<a-form-item label="单位全称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['companyName']" placeholder="请输入单位全称"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['liaisonMan']" placeholder="请输入联系人"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="手机" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['mobile', validatorRules.mobile]"
placeholder="请输入手机号"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="通讯地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['address']" placeholder="请输入通讯地址"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="邮编" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['postcode']" placeholder="请输入邮编"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="开票类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-search-select-tag
dict="billing_type"
disabled
v-decorator="['billingType']"
placeholder="请选择开票类型">
</j-search-select-tag>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="缴费时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date
placeholder="请选择缴费时间"
date-format="YYYY-MM-DD"
disabled
v-decorator="['paymentDate']"
:trigger-change="true"
style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="缴费单号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['billNumber']" placeholder="请输入缴费单号"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['paymentAmount']" placeholder="请输入缴费金额"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-divider orientation="left">
发票信息
</a-divider>
<a-row>
<a-col :span="12">
<a-form-item label="发票金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input-number
:maxLength="50"
v-decorator="['billMoney',validatorRules.billMoney]"
placeholder="请输入发票金额"
style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="发票号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" @change="e => {e.target.value = (e.target.value + '').trim()}"
v-decorator="['billNo',validatorRules.billNo]" placeholder="请输入发票号码"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="快递公司" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-search-select-tag
dict="send_method"
v-decorator="['sendMethod',validatorRules.sendMethod]"
placeholder="请选择快递公司">
</j-search-select-tag>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="邮寄单号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="20" @change="e => {e.target.value = (e.target.value + '').trim()}"
v-decorator="['postNo',validatorRules.postNo]" placeholder="请输入邮寄单号"></a-input>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
</template>
<template v-if="pageType == 2">
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-divider orientation="left">
缴费信息
</a-divider>
<a-row>
<a-col :span="12">
<a-form-item label="单位全称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['companyName']" placeholder="请输入单位全称"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['liaisonMan']" placeholder="请输入联系人"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="手机" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['mobile']" placeholder="请输入手机号"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="通讯地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['address']" placeholder="请输入通讯地址"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="邮编" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['postcode']" placeholder="请输入邮编"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="开票类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-search-select-tag
disabled
dict="billing_type"
v-decorator="['billingType']"
placeholder="请选择开票类型">
</j-search-select-tag>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="缴费时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date
disabled
placeholder="请选择缴费时间"
date-format="YYYY-MM-DD"
v-decorator="['paymentDate']"
:trigger-change="true"
style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="缴费单号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['billNumber']" placeholder="请输入缴费单号"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['paymentAmount']" placeholder="请输入缴费金额"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-divider orientation="left">
发票信息
</a-divider>
<a-row>
<a-col :span="12">
<a-form-item label="发票金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input-number
:maxLength="50"
disabled
v-decorator="['billMoney',{initialValue:model.billMoney}]"
placeholder="请输入发票金额"
style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="发票号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" disabled v-decorator="['billNo',{initialValue:model.billNo}]"
placeholder="请输入发票号码"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="快递公司" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-search-select-tag
disabled
dict="send_method"
v-decorator="['sendMethod',{initialValue:model.sendMethod}]"
placeholder="请选择快递公司">
</j-search-select-tag>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="邮寄单号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="20" disabled v-decorator="['postNo',{initialValue:model.postNo}]"
placeholder="请输入邮寄单号"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<span v-if="model.postNo" @click="searchInfo" class="search-express" style="margin-left: 40px">快递查询</span>
<!-- <span @click="searchInfo"href="http://www.kuaidi.com/" target="_blank" style="margin-left: 40px">快递查询</span>-->
</a-col>
</a-row>
</a-form>
</a-spin>
</template>
<!-- 编辑窗口 -->
<template slot="footer" v-if="pageType == 1">
<a-button @click="handleCancel">取消</a-button>
<a-button @click="handleOk" type="primary">确定</a-button>
</template>
<!-- 查看窗口-->
<template slot="footer" v-if="pageType == 2">
<a-button @click="handleCancel" type="primary">返回</a-button>
</template>
</j-modal>
</template>
<script>
import JSearchSelectTag from '@/components/standardsAssociation/JSearchSelectTag'
import { httpAction } from '@/api/memberManage'
import pick from 'lodash.pick'
import JDate from '@/components/tools/JDate'
export default {
name: 'BillingInfoModal',
components: {
JDate,
JSearchSelectTag
},
data() {
return {
form: this.$form.createForm(this),
title: '操作',
width: 1200,
visible: false,
model: {},
// 页面类型: 1.邮寄; 2.查看
pageType: 1,
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
confirmLoading: false,
validatorRules: {
mobile: {
rules: [
{ required: true, message: '请输入联系人手机号!' },
{
pattern: /^1[3|4|5|7|8][0-9]{9}$/,
message: '请输入正确的手机号码'
},
{ min: 1, max: 50, message: '长度不超过50个字符' }
]
},
billMoney: {
rules: [
{ required: true, message: '请输入发票金额!' },
{
pattern: /^[1-9](\d{1,10})?(\.\d{1,2})$|^0\.([1-9](\d{0,1})|\d[1-9])$|^[1-9]\d{0,10}$|^0$/,
message: '请输入合法的金额数字,最多2位小数,11位正数',
trigger: 'blur'
}
],
validateTrigger: 'blur'
},
billNo: {
rules: [
{ required: true, message: '请输入发票号码!' },
{ min: 1, max: 50, message: '长度不超过50个字符' }
],
validateTrigger: 'blur'
},
sendMethod: {
rules: [
{ required: true, message: '请选择快递公司!' }
]
},
postNo: {
rules: [
{ required: true, message: '请输入快递单号!' },
{ min: 1, max: 20, message: '长度不超过20个字符' }
],
validateTrigger: 'blur'
}
},
url: {
add: '/billingInfo/billingInfo/add',
edit: '/billingInfo/billingInfo/edit'
}
}
},
created() {
},
methods: {
add() {
this.edit({})
},
edit(record) {
this.form.resetFields()
this.model = Object.assign({}, record)
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'address', 'postcode', 'paymentAmount', 'companyName', 'sendMethod', 'postNo', 'liaisonMan', 'mobile', 'postStatus', 'billingType', 'billNumber', 'paymentDate', 'sendDate', 'billMoney', 'billNo'))
})
},
close() {
this.$emit('close')
this.visible = false
},
handleOk() {
const that = this
// 触发表单验证
this.form.validateFields((err, values) => {
if (!err) {
that.confirmLoading = true
let httpurl = ''
let method = ''
if (!this.model.id) {
httpurl += this.url.add
method = 'post'
} else {
httpurl += this.url.edit
method = 'put'
}
const formData = Object.assign(this.model, values)
// 将邮寄状态修改为 已邮寄
formData.postStatus = 2
console.log('表单提交数据', formData)
httpAction(httpurl, formData, method).then((res) => {
if (res.success) {
that.$message.success('邮寄成功')
that.$emit('ok')
that.close()
} else {
that.$message.warning(res.message)
}
}).finally(() => {
that.confirmLoading = false
})
}
})
},
handleCancel() {
this.close()
},
popupCallback(row) {
this.form.setFieldsValue(pick(row, 'address', 'postcode', 'paymentAmount', 'companyName', 'sendMethod', 'postNo', 'liaisonMan', 'mobile', 'postStatus', 'billingType', 'billNumber', 'paymentDate', 'sendDate', 'billMoney', 'billNo'))
},
// 查询快递单号
searchInfo() {
// this.model.sendMethod 1是ems 2是顺丰
// https://www.kuaidi100.com/chaxun?com=[]&nu=[]
const com = Number(this.model.sendMethod) === 1 && 'ems' || 'shunfeng'
window.open(`https://www.kuaidi100.com/chaxun?com=${com}&nu=${this.model.postNo}`)
}
}
}
</script>
<style lang="less" scoped>
.search-express {
cursor: pointer;
&:hover {
color: @primary-color;
}
}
</style>
@@ -0,0 +1,880 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<a-spin :spinning="confirmLoading">
<a-form :form="form" style="margin-left: 10px">
<a-divider orientation="left">
证书缴费信息
</a-divider>
<a-row>
<a-col :span="12">
<a-form-item label="单位全称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled=true v-model="companyName" placeholder="请输入单位名称"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled=true v-model="liaisonMan" placeholder="请输入联系人"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="手机" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled=true v-model="mobile" placeholder="请输入手机号"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="缴费方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:disabled="checkFlag||detailFlag" type="list"
v-decorator="['paymentMethod',validatorRules.paymentMethod]" :trigger-change="true"
dictCode="payment_method" placeholder="请选择缴费方式" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="缴费类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:disabled=true type="list" v-decorator="['paymentType']" :trigger-change="true"
dictCode="certificate_payment_type" placeholder="请选择缴费类型" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="缴费单号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled=true v-decorator="['billNumber']" placeholder="请输入缴费单号"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input-number
:disabled="checkFlag||detailFlag"
v-decorator="['paymentAmount',validatorRules.paymentAmount]" placeholder="请输入缴费金额"
style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="缴费时长" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:disabled="checkFlag||detailFlag" @change="changgeType" type="list"
v-decorator="['paymentTime',validatorRules.paymentTime]" :trigger-change="true"
dictCode="payment_time" placeholder="请选择缴费时长" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="缴费日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-date
:disabled="checkFlag||detailFlag" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择缴费时间"
v-decorator="['submissionTime',validatorRules.submissionTime]" :trigger-change="true"
style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12" v-if="paymentMethodFlag==1">
<a-form-item label="缴费凭证" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-image-upload
isLessThan5M
isMultiple
:number="2"
:disabled="checkFlag||detailFlag"
bizPath="payment"
v-decorator="['paymentRecord',validatorRules.paymentRecord]">
</j-image-upload>
</a-form-item>
</a-col>
<a-row>
<a-col :span="12" v-if="paymentMethodFlag==2">
<a-form-item label="打包协议" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-upload
file-type="pdf"
file-type-error-message="请上传pdf文件" :multiple="false" :number="1"
:disabled="checkFlag||detailFlag" bizPath="payment"
v-decorator="['paymentRecord',validatorRules.paymentRecord]"
:trigger-change="true"></j-upload>
<span v-show="!detailFlag && !checkFlag" style="color: #bfbfbf">请上传pdf文件</span>
</a-form-item>
</a-col>
</a-row>
</a-row>
<div v-if="paymentMethodFlag==1">
<a-row>
<a-col :span="12">
<a-form-item label="发票" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:disabled="checkFlag||detailFlag" @change="invoiceRequirementsChange" type="list"
v-decorator="['invoiceRequirements']" :trigger-change="true"
dictCode="invoice_requirements" placeholder="请选择发票" />
</a-form-item>
</a-col>
<a-col :span="12" v-if="invoiceRequirementsFlag">
<a-form-item label="关联付款发票名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:disabled="checkFlag||detailFlag"
v-decorator="['headerName',validatorRules.headerName]"
:trigger-change="true" placeholder="请输入关联付款发票名称"></a-input>
</a-form-item>
</a-col>
</a-row>
<template v-if="invoiceRequirementsFlag">
<a-row>
<a-col :span="12">
<a-form-item label="社会统一代码/税号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:disabled="checkFlag||detailFlag" v-decorator="['taxNumber',validatorRules.taxNumber]"
placeholder="请输入社会统一代码/税号"></a-input>
</a-form-item>
</a-col>
<!-- 2021-09-23变更 增加 单位地址 增值税发票的时候存在-->
<a-col :span="12" v-if="currentSelectInvoiceType === 2">
<a-form-item label="单位地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:disabled="checkFlag||detailFlag"
@change="event => event.target.value = event.target.value.trim()"
v-decorator="['invoiceAddress', validatorRules.invoiceAddress]"
placeholder="请输入单位地址"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 2021-09-23变更 增加 电话号码 开户银行 银行账户 增值税发票的时候存在-->
<a-row v-if="currentSelectInvoiceType === 2">
<a-col :span="12">
<a-form-item label="电话号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:disabled="checkFlag||detailFlag"
v-decorator="['invoicePhone', validatorRules.invoicePhone]"
:trigger-change="true"
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9|-]/g,'')}"
placeholder="请输入电话号码"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="开户银行" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:disabled="checkFlag||detailFlag"
@change="event => event.target.value = event.target.value.trim()"
v-decorator="['depositBank', validatorRules.depositBank]"
placeholder="请输入开户银行"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row v-if="currentSelectInvoiceType === 2">
<a-col :span="12">
<a-form-item label="银行账户" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:disabled="checkFlag||detailFlag"
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}"
v-decorator="['bankAccount', validatorRules.bankAccount]"
placeholder="请输入银行账户"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
</a-row>
</template>
</div>
<!-- 缴费备注-->
<a-row>
<a-col :span="24" class="remark">
<a-form-item label="备注" :labelCol="labelColText" :wrapperCol="wrapperCol">
<a-textarea
rows="5" v-decorator="['paymentMark' ]" placeholder="请输入备注" disabled
:maxLength="500"></a-textarea>
</a-form-item>
<span style="color: #bfbfbf" v-show="!detailFlag && !checkFlag">一个缴费单可在多个缴费处上传</span>
</a-col>
</a-row>
<div v-show="typeFlag">
<a-divider orientation="left">证书需求</a-divider>
<a-table
:pagination=false bordered :data-source="dataSource" :columns="columns"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange,getCheckboxProps:getCheckboxProps }">
<template slot="imgSlot" slot-scope="text, record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text,record)" height="25px" alt=""
style="max-width:80px;font-size: 12px;font-style: italic;" />
</template>
</a-table>
<div style="position: relative;top: 20px;">
<a-row>
<a-col :span="12">
<a-form-item label="通讯地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled="checkFlag||detailFlag" v-model="address" placeholder="请输入通讯地址"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="邮编" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :disabled="checkFlag||detailFlag" v-model="postcode" placeholder="请输入邮编"></a-input>
</a-form-item>
</a-col>
</a-row>
</div>
</div>
<div v-show="checkFlag">
<a-divider orientation="left">审核结果</a-divider>
<a-row>
<a-col :span="12">
<a-form-item label="核对结果" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-radio-group v-decorator="['checkResult',validatorRules.checkResult]" @change="onCheckChange">
<a-radio :value="1">通过</a-radio>
<a-radio :value="0">不通过</a-radio>
</a-radio-group>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="24">
<a-form-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-textarea
rows="5" v-decorator="['checkMark',validatorRules.checkMark]" placeholder="请输入备注"
:maxLength="500"></a-textarea>
</a-form-item>
</a-col>
</a-row>
</div>
<div v-show="detailFlag">
<a-divider orientation="left">审核信息</a-divider>
<a-table :pagination=false bordered :data-source="checkInfo" :columns="checkColumns">
</a-table>
</div>
</a-form>
</a-spin>
<template slot="footer">
<a-button @click="handleCancel">关闭</a-button>
<a-button @click="handleOk" type="primary" v-show="!detailFlag" :disabled="confirmLoading">提交</a-button>
</template>
</j-modal>
</template>
<script>
import { httpAction, getFileAccessHttpUrl } from '@/api/memberManage'
import pick from 'lodash.pick'
import JDate from '@/components/tools/JDate'
import JUpload from '@/components/standardsAssociation/JUpload'
import JImageUpload from '@/components/standardsAssociation/JImageUpload'
import JDictSelectTag from '@/components/standardsAssociation/JDictSelectTag'
import { getMemberInfoById, getCertificateById, getCheckInfo, getByMemberTime } from '@/api/standardsAssociationApi'
export default {
name: 'CertificatePaymentInfoModal',
components: {
JDate,
JImageUpload,
JUpload,
JDictSelectTag
},
data() {
return {
// todo 目前先固定id
userId: '1413419593870872578',
// userName: JSON.parse(localStorage.getItem('pro__Login_Userinfo')).value.realname,
userName: '',
form: this.$form.createForm(this),
title: '操作',
width: 1100,
visible: false,
model: {},
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
},
labelColText: {
xs: { span: 24 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
confirmLoading: false,
validatorRules: {
paymentMethod: {
rules: [{
required: true, message: '请选择缴费方式'
}],
validateTrigger: ['blur', 'change']
},
paymentType: {
rules: [{
required: true, message: '请选择缴费类型'
}],
validateTrigger: ['blur', 'change']
},
billNumber: {
rules: [{
required: true, message: '请输入缴费单号'
}],
validateTrigger: 'blur'
},
paymentAmount: {
rules: [
{ required: true, message: '请输入缴费金额' },
{
pattern: /^[1-9](\d{1,10})?(\.\d{1,2})$|^0\.([1-9](\d{0,1})|\d[1-9])$|^[1-9]\d{0,10}$|^0$/,
message: '请输入合法的金额数字,最多2位小数,11位正数',
trigger: 'blur'
}
],
validateTrigger: 'blur'
},
paymentTime: {
rules: [{ required: true, message: '请选择缴费时长' }],
validateTrigger: ['blur', 'change']
},
submissionTime: {
rules: [{ required: true, message: '请选择缴费日期!' }],
validateTrigger: ['blur', 'change']
},
paymentRecord: {
rules: [{ required: true, message: '请上传缴费凭证' }],
validateTrigger: ['blur', 'change']
},
headerName: {
rules: [
{ required: true, message: '请输入关联付款发票名称' },
{ min: 1, max: 50, message: '长度不超过50个字符' }
],
validateTrigger: 'blur'
},
taxNumber: {
rules: [
{ required: true, message: '请输入社会统一代码/税号' },
// { pattern: /^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/, message: '15位、17位、18位、20位数字和大写英文字母' }
{
pattern: /^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/,
message: '请输入15位、18位的社会统一代码/税号'
}
],
validateTrigger: 'blur'
},
invoiceAddress: { rules: [{ required: true, message: '请输入单位地址' }], validateTrigger: 'blur' },
invoicePhone: {
rules: [
{ required: true, message: '请输入电话号码' },
{
pattern: /^((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9])|(19[8|9])|(16[6]))\d{8}$|^([0-9]{3,4}-)[0-9]{7,8}$/,
message: '请输入正确格式的电话号码',
validateTrigger: 'onBlur'
}
],
validateTrigger: 'blur'
},
depositBank: { rules: [{ required: true, message: '请输入开户银行' }], validateTrigger: 'blur' },
bankAccount: { rules: [{ required: true, message: '请输入银行账户' }], validateTrigger: 'blur' },
address: {
rules: [
{ required: true, message: '请输入通讯地址' },
{ min: 1, max: 50, message: '长度不超过50个字符' }
],
validateTrigger: 'blur'
},
postcode: {
rules: [
{ required: true, message: '请输入邮编' },
{ pattern: /^[0-9]\d{5}$/, message: '请输入正确的邮编' }
],
validateTrigger: 'blur'
},
checkResult: {
rules: [
{ required: true, message: '请选择核对结果' }
],
validateTrigger: ['blur', 'change']
},
checkMark: {
rules: [
{ min: 0, max: 500, message: '长度不超过500个字符' }
],
validateTrigger: 'blur'
}
},
url: {
add: '/certificatePaymentInfo/add',
edit: '/certificatePaymentInfo/edit'
},
// 缴费类型 普通会员 false vip会员 true
typeFlag: false,
// 添加
addFlag: false,
// 审核
checkFlag: false,
// 证书回显
certificatesFlag: false,
// 查看
detailFlag: false,
// 发票 否 false 是 ture
invoiceRequirementsFlag: false,
// 当前选择是否需要发票的值,用于dom的判断 0-无 1-普通发票 2-增值税发票
currentSelectInvoiceType: 0,
startTime: '',
endTime: '',
// 申请证书
selectedRowKeys: [],
// 证书信息
dataSource: [],
count: 2,
// 证书列表
columns: [
{
title: '序号',
dataIndex: 'index',
width: '10%',
align: 'center'
},
{
title: '证书类型',
dataIndex: 'certificate',
width: '20%',
align: 'center'
},
{
title: '证书代码',
dataIndex: 'certificate_code',
width: '30%',
scopedSlots: { customRender: 'code' },
align: 'center'
},
{
title: '证书示意图',
dataIndex: 'text',
width: '30%',
align: 'center',
scopedSlots: { customRender: 'imgSlot' }
}
],
// 审核结果 0:驳回 1:通过 2其他
checkResult: 2,
memberId: '',
// 公司名称
companyName: '',
// 联系人
liaisonMan: '',
// 电话
mobile: '',
// 地址
address: '',
// 邮编
postcode: '',
certificate: [], // 证书信息
checkInfo: [], // 审核信息
// 审核列表
checkColumns: [
{
title: '序号',
dataIndex: 'index',
width: '10%',
align: 'center'
},
{
title: '审批人',
dataIndex: 'checkMember',
width: '15%',
align: 'center'
},
{
title: '审批时间',
dataIndex: 'checkTime',
width: '20%',
align: 'center'
},
{
title: '结果',
dataIndex: 'checkResult',
width: '15%',
align: 'center'
},
{
title: '备注',
dataIndex: 'checkMark',
width: '40%',
align: 'center'
}
],
// 缴费方式 电汇:1 会员打包:2
paymentMethodFlag: '',
submitFlag: true
}
},
created() {
},
methods: {
/* 添加*/
add() {
this.addFlag = true
this.memberId = this.userId
this.edit({})
},
check() {
this.checkFlag = true
this.memberId = this.userId
this.edit({})
},
/* 审核*/
handleCheck(record) {
this.paymentMethodFlag = record.paymentMethod
this.checkFlag = true
this.form.resetFields()
this.model = Object.assign({}, record)
if (!this.addFlag) {
this.memberId = this.model.memberId
this.loadMember()
} else {
this.memberId = this.userId
this.loadMember()
this.model.certificate = this.certificate
}
// 查找证书信息
this.getCertificateById(record.certificateId)
var type = this.model.paymentTime
// 会员类型
this.changgeType(type)
this.visible = true
// 审核人
this.model.checkMember = this.userName
this.model.checkMemberId = this.userId
// 查找审核信息
this.getCheckInfo(record.id)
this.model.certificate = this.certificate
this.checkResult = this.model.checkResult
// 发票选择
if (Number(record.invoiceRequirements) === 0) {
this.invoiceRequirementsFlag = false
} else {
this.invoiceRequirementsFlag = true
}
this.currentSelectInvoiceType = Number(record.invoiceRequirements)
// 审核信息
this.checkResult = this.model.checkResult
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'billNumber', 'companyName', 'paymentType', 'validPeriod', 'paymentTime', 'paymentAmount', 'certificatesNum', 'submissionTime', 'checkTime', 'paymentStatus', 'paymentMethod', 'paymentRecord', 'invoiceRequirements', 'headerName', 'taxNumber', 'invoiceAddress', 'invoicePhone', 'depositBank', 'bankAccount', 'checkMember', 'checkMemberId', 'memberId', 'certificate', 'address', 'postcode', 'serviceCharge', 'paymentMark'))
})
},
detail(record) {
this.paymentMethodFlag = record.paymentMethod
this.detailFlag = true
this.form.resetFields()
this.model = Object.assign({}, record)
if (!this.addFlag) {
this.memberId = this.model.memberId
this.loadMember()
} else {
this.memberId = this.userId
this.loadMember()
this.model.certificate = this.certificate
}
this.getCertificateById(record.certificateId)
this.getCheckInfo(record.id)
var type = this.model.paymentTime
this.changgeType(type)
this.visible = true
this.model.memberId = this.memberId
if (this.model.certificatesNum > 0) {
this.certificatesFlag = true
} else {
this.certificatesFlag = false
}
this.model.certificate = this.certificate
this.checkResult = this.model.checkResult
// 发票选择
if (Number(record.invoiceRequirements) === 0) {
this.invoiceRequirementsFlag = false
} else {
this.invoiceRequirementsFlag = true
}
this.currentSelectInvoiceType = Number(record.invoiceRequirements)
// 审核信息
this.checkResult = this.model.checkResult
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'billNumber', 'companyName', 'paymentType', 'validPeriod', 'paymentTime', 'paymentAmount', 'certificatesNum', 'submissionTime', 'checkTime', 'paymentStatus', 'paymentMethod', 'paymentRecord', 'invoiceRequirements', 'headerName', 'taxNumber', 'invoiceAddress', 'invoicePhone', 'depositBank', 'bankAccount', 'checkResult', 'checkMark', 'checkMember', 'checkMemberId', 'memberId', 'certificate', 'address', 'postcode', 'paymentMark', 'serviceCharge'))
})
},
/* 备用,目前用不到*/
edit(record) {
this.form.resetFields()
this.model = Object.assign({}, record)
this.getCertificateById(record.certificateId)
this.getCheckInfo(record.id)
var type = this.model.paymentTime
this.changgeType(type)
if (!this.addFlag) {
this.memberId = this.model.memberId
} else {
this.model.certificate = this.certificate
this.model.headerName = this.headerName
this.model.taxNumber = this.taxNumber
}
this.visible = true
this.model.memberId = this.memberId
if (this.model.certificatesNum > 0) {
this.certificatesFlag = true
} else {
this.certificatesFlag = false
}
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'billNumber', 'companyName', 'paymentType', 'validPeriod', 'paymentTime', 'paymentAmount', 'certificatesNum', 'submissionTime', 'checkTime', 'paymentStatus', 'paymentMethod', 'paymentRecord', 'invoiceRequirements', 'headerName', 'taxNumber', 'invoiceAddress', 'invoicePhone', 'depositBank', 'bankAccount', 'checkResult', 'checkMark', 'checkMember', 'checkMemberId', 'memberId', 'certificate', 'address', 'postcode'))
})
},
close() {
this.$emit('close')
this.visible = false
this.addFlag = false
this.typeFlag = false
this.checkFlag = false
this.checkResult = 2
this.certificatesFlag = false
this.dataSource = []
this.checkInfo = []
this.detailFlag = false
this.selectedRowKeys = []
this.invoiceRequirementsFlag = false
this.currentSelectInvoiceType = 0
this.paymentMethodFlag = ''
this.submitFlag = true
},
handleOk() {
const that = this
// 触发表单验证
this.form.validateFields((err, values) => {
if (!err) {
that.confirmLoading = true
let httpurl = ''
let method = ''
if (!this.model.id) {
httpurl += this.url.add
method = 'post'
} else {
httpurl += this.url.edit
method = 'put'
}
if (this.checkResult === 0) {
this.checkResult = 2
this.model.paymentStatus = 2
} else if (this.checkResult === 1) {
this.checkResult = 2
this.model.paymentStatus = 3
} else {
this.model.paymentStatus = 1
}
const formData = Object.assign(this.model, values)
// if (this.typeFlag) {
// formData.paymentType = 1;
// } else {
// formData.paymentType = 0;
// }
this.model.address = this.address
this.model.postcode = this.postcode
this.model.companyName = this.companyName
console.log('表单提交数据', formData)
httpAction(httpurl, formData, method).then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
that.close()
} else {
that.$message.warning(res.message)
}
}).finally(() => {
that.confirmLoading = false
})
}
})
},
handleCancel() {
this.close()
},
popupCallback(row) {
this.form.setFieldsValue(pick(row, 'billNumber', 'paymentType', 'validPeriod', 'paymentTime', 'paymentAmount', 'certificatesNum', 'submissionTime', 'checkTime', 'paymentStatus', 'paymentMethod', 'paymentRecord', 'invoiceRequirements', 'headerName', 'taxNumber', 'invoiceAddress', 'invoicePhone', 'depositBank', 'bankAccount', 'checkResult', 'checkMark', 'checkMember', 'checkMemberId', 'memberId', 'certificate', 'address', 'postcode'))
},
// 根据会员id获取会员信息
loadMember() {
getMemberInfoById({ id: this.memberId }).then((res) => {
if (res.success) {
var memberInfo = res.result
this.companyName = memberInfo.companyName
this.liaisonMan = memberInfo.liaisonMan
this.mobile = memberInfo.mobile
this.address = memberInfo.address
this.postcode = memberInfo.postcode
} else {
console.log(res.message)
}
})
},
/* 会员类型*/
changgeType(value) {
if (value === '2') {
// 5年
this.typeFlag = true
} else {
this.typeFlag = false
}
},
onCheckChange(e) {
this.checkResult = e.target.value
},
/* 选择发票*/
invoiceRequirementsChange(value) {
this.currentSelectInvoiceType = Number(value)
if (this.currentSelectInvoiceType === 0) {
this.invoiceRequirementsFlag = false
} else {
this.invoiceRequirementsFlag = true
}
},
// table选择
onSelectChange(selectedRowKeys) {
this.selectedRowKeys = selectedRowKeys
this.model.certificatesNum = this.selectedRowKeys.length
for (var i in selectedRowKeys) {
this.certificate[i] = this.dataSource[i]
}
},
// 设置证书选中 禁用
getCheckboxProps: record => ({
props: {
disabled: record.id !== '',
// 某几项默认选中(R: 当state等于1时)
defaultChecked: record.id
}
}),
// 证书code改变
onCellChange(key, dataIndex, value) {
const dataSource = [...this.dataSource]
const target = dataSource.find(item => item.key === key)
if (target) {
target[dataIndex] = value
this.dataSource = dataSource
}
},
/* 图片预览 */
getImgView(text) {
if (text && text.indexOf(',') > 0) {
text = text.substring(0, text.indexOf(','))
}
return getFileAccessHttpUrl(text)
},
/* 查找证书信息*/
getCertificateById(certificateId) {
this.dataSource = []
if (this.addFlag) {
this.dataSource = [
{
id: '',
key: 0,
index: '1',
certificate: '世界制造厂识别代号(WMI)证书',
certificate_code: '',
text: 'payment/Snipaste_2020-12-23_17-30-29_1608894552133.png'
},
{
id: '',
key: 1,
index: '2',
certificate: '企业名称代号证书',
certificate_code: '',
text: 'payment/Snipaste_2020-12-23_17-30-29_1608894552133.png'
}
]
this.certificate = this.dataSource
} else {
getCertificateById({ id: certificateId }).then((res) => {
if (res.success) {
this.dataSource = []
this.dataSource = res.result
this.certificate = this.dataSource
} else {
this.dataSource = []
this.certificate = this.dataSource
}
})
}
},
/* 查找审核信息*/
getCheckInfo(recordId) {
this.checkInfo = []
getCheckInfo({ id: recordId, paymentType: 1 }).then((res) => {
if (res.success) {
this.checkInfo = res.result
}
})
},
/* 根据缴费时长,获取缴费金额*/
getByMemberTime(rule, value, callback) {
const type = this.form.getFieldValue('paymentTime')
if (type === undefined) {
callback(new Error('请选择'))
}
/* 校验时间和金额*/
getByMemberTime({ memberTime: type }).then((res) => {
if (res.success) {
const thresholdSettings = res.result
for (var thresholdSetting of thresholdSettings) {
const paymentAmount = this.form.getFieldValue('paymentAmount')
if (paymentAmount) {
if (paymentAmount < thresholdSetting.memberMoney) {
callback('输入金额与时间不符')
} else {
callback()
}
} else {
callback('请先输入金额')
}
}
}
})
}
}
}
</script>
<style scoped lang="less">
.table {
width: 100%;
height: 180px;
text-align: center;
margin-bottom: 10px;
border-color: #ccc;
border-collapse: collapse;
}
.remark span {
display: inline-block;
font-size: 14px;
//margin-left: 100px;
transform: translateY(-20px);
}
// 2021-09-23 新增固定宽度
/deep/ .ant-form-item-label {
width: 140px !important;
}
</style>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,68 @@
<template>
<j-modal
title="预览"
width="800px"
:visible="previewVisible"
:maskClosable="false"
:footer="null"
@cancel="handleCancel()"
cancelText="关闭">
<img :src="imgSrc" class="img" v-if="imgSrc" />
<img :src="getImgView()" class="img" v-else />
</j-modal>
</template>
<script>
import { getFileAccessHttpUrl } from '@/api/memberManage'
export default {
name: 'PreViewImgModal',
data() {
return {
previewVisible: false,
imgId: '',
imgSrc: ''
}
},
methods: {
open(val) {
this.previewVisible = true
this.imgId = val
},
openPre(val) {
this.$nextTick(() => {
if (val === 1) {
this.imgSrc = require('../../../../assets/imgs/standardsAssociation/certificate/wmi.png')
} else if (val === 2) {
this.imgSrc = require('../../../../assets/imgs/standardsAssociation/certificate/cam.png')
}
})
this.previewVisible = true
},
handleCancel() {
this.$nextTick(() => {
this.imgId = ''
this.previewVisible = false
})
},
/* 图片预览 */
getImgView() {
let text = this.imgId
if (text && text.indexOf(',') > 0) {
text = text.substring(0, text.indexOf(','))
}
return getFileAccessHttpUrl(text)
}
}
}
</script>
<style scoped lang="less">
.img {
max-width: 100%;
max-height: 100%;
display: block;
margin: auto;
}
</style>
@@ -1,48 +1,48 @@
<!--会员管理-证书的相关信息-->
<template>
<div class='table-page-search-wrapper certificate-info-container'>
<a-form layout="inline">
<a-row :span="24" class="create-date-row" :gutter="24">
<a-col :span="8">
<a-form-item label="证书代码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" v-model="queryParam.code" placeholder="请输入证书代码"></a-input>
</a-form-item>
</a-col>
<a-col :span="8" class="ope-col">
<a-button class="btn btn-primary" type="primary" @click="vinQuery" icon="search">
查询
</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 5px">
重置
</a-button>
</a-col>
</a-row>
</a-form>
<div class="row clearfix">
<div class="col-md-12 column">
<div class="table-page-search-wrapper certificate-info-container">
<a-form layout="inline">
<a-row :span="24" class="create-date-row" :gutter="24">
<a-col :span="8">
<a-form-item label="证书代码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :maxLength="50" v-model="queryParam.code" placeholder="请输入证书代码"></a-input>
</a-form-item>
</a-col>
<a-col :span="8" class="ope-col">
<a-button class="btn btn-primary" type="primary" @click="vinQuery" icon="search">
查询
</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 5px">
重置
</a-button>
</a-col>
</a-row>
</a-form>
<div class="row clearfix">
<div class="col-md-12 column">
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
@change="handleTableChange"
class="j-table-force-nowrap">
</a-table>
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
@change="handleTableChange"
class="j-table-force-nowrap">
</a-table>
</div>
</div>
</div>
</div>
</template>
<script>
import { getAction } from '../../../api/memberManage'
import { JeroListMixin } from '../../../mixins/JeroListMixin'
import { RangeDateMixin} from '../../../mixins/RangeDateMixin'
import { RangeDateMixin } from '../../../mixins/RangeDateMixin'
export default {
name: 'CertificateInfo',
@@ -50,9 +50,7 @@ export default {
JeroListMixin,
RangeDateMixin
],
components: {
},
components: {},
props: {
memberInfo: {
type: Object,
@@ -185,7 +183,7 @@ export default {
},
methods: {
loadData(arg) {
if(!this.url.list){
if (!this.url.list) {
this.$message.error('请设置url.list属性!')
return
}
@@ -198,18 +196,17 @@ export default {
getAction(this.url.list, params).then((res) => {
if (res.success) {
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records||res.result
if(res.result.total)
{
this.dataSource = res.result.records || res.result
if (res.result.total) {
this.ipagination.total = res.result.total
//清空列表选中
// this.onClearSelected()
}else{
} else {
this.ipagination.total = 0
}
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
}
if(res.code===510){
if (res.code === 510) {
this.$message.warning(res.message)
}
this.loading = false
@@ -1,29 +1,30 @@
<!--单位 名称 变更申请-->
<template>
<div class='company-name-apply-record'>
<table-component
:columns="columnsChangeApprove"
:data-source="changeApproveData"
:page-type="4"
:expand-row-by-click="true"
:pagination="ipagination"
:is-loading="loading"
@ok="getChangeHistoryData"
@edit="handleApproveEdit">
</table-component>
<!-- 变更申请模态框-->
<!-- <change-company-modal ref="changeCompany" @ok="getChangeHistoryData"></change-company-modal>-->
</div>
<div class="company-name-apply-record">
<table-component
:columns="columnsChangeApprove"
:data-source="changeApproveData"
:expand-row-by-click="true"
:pagination="ipagination"
:is-loading="loading"
@ok="getChangeHistoryData"
@edit="handleApproveEdit">
</table-component>
<!-- 变更申请模态框-->
<change-company-modal ref="changeCompany" @ok="getChangeHistoryData"></change-company-modal>
</div>
</template>
<script>
import { getAction } from '../../../api/memberManage'
import TableComponent from './modules/TableComponent'
import ChangeCompanyModal from './modules/ChangeCompanyModal'
export default {
name: 'CompanyNameApplyRecord',
components: {
TableComponent
TableComponent,
ChangeCompanyModal
},
props: {
memberInfo: {
@@ -129,13 +130,14 @@ export default {
title: '操作',
dataIndex: 'action',
align: 'center',
width: 120,
scopedSlots: { customRender: 'action' }
}
],
// 单位申请变更数据源
changeApproveData: [],
/* 分页参数 */
ipagination:{
ipagination: {
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '20', '30', '50', '100'],
@@ -207,7 +209,7 @@ export default {
* */
handleApproveEdit(record) {
this.$refs.changeCompany.originCompanyName = record.originCompanyName
this.$refs.changeCompany.memberId = this.$route.query.id
this.$refs.changeCompany.memberId = this.memberInfo.id
this.$refs.changeCompany.recordId = record.id
this.$refs.changeCompany.listEdit = true
this.$refs.changeCompany.edit(record)
@@ -1,19 +1,18 @@
<!--下载的记录 -->
<template>
<div class='download-record'>
<table-component
:columns="columnsDownFile"
:data-source="downFileData"
:page-type="5"
:pagination="ipagination"
:is-loading="loading"
@ok="getDownFileList">
</table-component>
</div>
<div class="download-record">
<table-component
:columns="columnsDownFile"
:data-source="downFileData"
:pagination="ipagination"
:is-loading="loading"
@ok="getDownFileList">
</table-component>
</div>
</template>
<script>
import { postAction} from '../../../api/memberManage'
import { postAction } from '../../../api/memberManage'
import TableComponent from './modules/TableComponent'
export default {
@@ -31,7 +30,7 @@ export default {
}
},
data() {
return{
return {
// 资源下载表头
columnsDownFile: [
{
@@ -64,7 +63,7 @@ export default {
// 资源下载数据源
downFileData: [],
/* 分页参数 */
ipagination:{
ipagination: {
current: 1,
pageSize: 10,
pageSizeOptions: ['10', '20', '30', '50', '100'],
@@ -1,294 +1,298 @@
<!--会员信息-->
<template>
<div class='member-info'>
<a-form :form="form">
<div class="row clearfix">
<div class="column">
<p class='member-panel-title'>单位信息</p>
<div class="member-info">
<a-form :form="form">
<div class="row clearfix">
<div class="column">
<p class="member-panel-title">单位信息</p>
</div>
</div>
</div>
<a-row :span="24" class='label-width-row'>
<a-col :span="16">
<a-form-item label="单位全称" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<a-input
disabled
:maxLength="50"
v-decorator="['companyName',validatorRules.companyName]"
placeholder="请输入单位全称"></a-input>
<!--会员审核通过后 会员才能查看-->
<a-button
v-has="'memberInfo:companyNameRecord:add'"
v-if="memberInfo.memberStatus === 3"
class="btn btn-primary changeCompany"
type="primary"
@click="changeCompanyName"
style="z-index: 1000">变更申请
</a-button>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class='label-width-row'>
<a-col :span="16">
<a-form-item label="用户昵称" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<a-input @change="event => event.target.value = event.target.value.trim()" v-decorator="[ 'realname', validatorRules.realname]" placeholder="请输入用户昵称" :maxLength="50"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class='label-width-row'>
<a-col :span="16">
<a-form-item label="隶属部门/集团" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<a-input
:maxLength="50"
v-decorator="['companyDepartment']"
placeholder="请输入隶属部门/集团"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class='label-width-row'>
<a-col :span="16">
<a-form-item label="单位性质" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<j-multi-select-tag
v-decorator="['companyNature',validatorRules.companyNature]"
:options="dictOptions"
type="checkbox">
</j-multi-select-tag>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class="label-width-row">
<a-col :span="16">
<a-form-item label="单位全称" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<a-input
disabled
:maxLength="50"
v-decorator="['companyName',validatorRules.companyName]"
placeholder="请输入单位全称"></a-input>
<!--会员审核通过后 会员才能查看-->
<!-- v-has="'memberInfo:companyNameRecord:add'"-->
<a-button
v-if="memberInfo.memberStatus === 3"
class="btn btn-primary changeCompany"
type="primary"
@click="changeCompanyName"
style="z-index: 1000">变更申请
</a-button>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class="label-width-row">
<a-col :span="16">
<a-form-item label="用户昵称" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<a-input @change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'realname', validatorRules.realname]" placeholder="请输入用户昵称"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class="label-width-row">
<a-col :span="16">
<a-form-item label="隶属部门/集团" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<a-input
:maxLength="50"
v-decorator="['companyDepartment']"
placeholder="请输入隶属部门/集团"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class="label-width-row">
<a-col :span="16">
<a-form-item label="单位性质" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<j-multi-select-tag
v-decorator="['companyNature',validatorRules.companyNature]"
:options="dictOptions"
type="checkbox">
</j-multi-select-tag>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class='label-width-row'>
<a-col :span="16">
<a-form-item label="主要业务或主要产品简介" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<a-textarea
:maxLength="500"
rows="5"
v-decorator="['companyBusinessDesc',validatorRules.companyBusinessDesc]"/>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class='label-width-row'>
<a-col :span="16">
<a-form-item label="营业执照复印件" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<j-image-upload
:number="10"
bizPath="payment"
isMultiple
v-decorator="['businessLicenseFileId', validatorRules.businessLicenseFileId]"></j-image-upload>
</a-form-item>
</a-col>
</a-row>
<!-- 标准化部门信息-->
<div class="row clearfix">
<div class="column">
<p class='member-panel-title'>标准化部门信息</p>
<a-row :span="24" class="label-width-row">
<a-col :span="16">
<a-form-item label="主要业务或主要产品简介" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<a-textarea
:maxLength="500"
rows="5"
v-decorator="['companyBusinessDesc',validatorRules.companyBusinessDesc]" />
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class="label-width-row">
<a-col :span="16">
<a-form-item label="营业执照复印件" :labelCol="labelCol1" :wrapperCol="wrapperCol1">
<j-image-upload
:number="10"
bizPath="payment"
isMultiple
v-decorator="['businessLicenseFileId', validatorRules.businessLicenseFileId]"></j-image-upload>
</a-form-item>
</a-col>
</a-row>
<!-- 标准化部门信息-->
<div class="row clearfix">
<div class="column">
<p class="member-panel-title">标准化部门信息</p>
</div>
</div>
</div>
<a-row :span="24" class='label-width-row'>
<a-col :span="8">
<a-form-item label="标准化部门(主管/监管)" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardDepartment',validatorRules.standardDepartment]"
placeholder="请输入标准化部门"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="标准化工作负责人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardLeadingMan',validatorRules.standardLeadingMan]"
placeholder="请输入标准化工作负责人"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="固定电话" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardPhone',validatorRules.standardPhone]"
placeholder="请输入固定电话"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class='label-width-row'>
<a-col :span="8">
<a-form-item label="手机" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardMobile',validatorRules.standardMobile]"
placeholder="请输入手机"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="E-mail" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardEmail',validatorRules.standardEmail]"
placeholder="请输入E-mail"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardPost',validatorRules.standardPost]"
placeholder="请输入职务"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class='label-width-row joined-col'>
<a-col :span="8" >
<a-form-item label="已加入的行业组织/协会/团体/联盟/委员会等" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['industrialOrganization']"
placeholder="请输入已加入的行业组织/协会/团体/联盟/委员会等"></a-input>
</a-form-item>
</a-col>
</a-row>
<!--联系人信息-->
<div class="row clearfix">
<div class="column">
<p class='member-panel-title'>联系人信息</p>
<a-row :span="24" class="label-width-row">
<a-col :span="8">
<a-form-item label="标准化部门(主管/监管)" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardDepartment',validatorRules.standardDepartment]"
placeholder="请输入标准化部门"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="标准化工作负责人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardLeadingMan',validatorRules.standardLeadingMan]"
placeholder="请输入标准化工作负责人"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="固定电话" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardPhone',validatorRules.standardPhone]"
placeholder="请输入固定电话"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class="label-width-row">
<a-col :span="8">
<a-form-item label="手机" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardMobile',validatorRules.standardMobile]"
placeholder="请输入手机"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="E-mail" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardEmail',validatorRules.standardEmail]"
placeholder="请输入E-mail"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="职务" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['standardPost',validatorRules.standardPost]"
placeholder="请输入职务"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class="label-width-row joined-col">
<a-col :span="8">
<a-form-item label="已加入的行业组织/协会/团体/联盟/委员会等" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['industrialOrganization']"
placeholder="请输入已加入的行业组织/协会/团体/联盟/委员会等"></a-input>
</a-form-item>
</a-col>
</a-row>
<!--联系人信息-->
<div class="row clearfix">
<div class="column">
<p class="member-panel-title">联系人信息</p>
</div>
</div>
</div>
<a-row :span="24" class='label-width-row'>
<a-col :span="8">
<a-form-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['liaisonMan',validatorRules.liaisonMan]"
placeholder="请输入联系人"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="手机" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
:disabled="isDisabledAuth('member.phone')"
v-decorator="['mobile',validatorRules.mobile]"
placeholder="请输入手机"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="固定电话" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['phone',validatorRules.phone]"
placeholder="请输入固定电话"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class='label-width-row'>
<a-col :span="8">
<a-form-item label="E-mail" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['email',validatorRules.email]"
placeholder="请输入E-mail"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="通讯地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['address',validatorRules.address]"
placeholder="请输入通讯地址"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="邮编" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['postcode',validatorRules.postcode]"
placeholder="请输入邮编"></a-input>
</a-form-item>
</a-col>
</a-row>
<!--发票信息-->
<div class="row clearfix">
<div class="column">
<p class='member-panel-title'>发票信息</p>
<a-row :span="24" class="label-width-row">
<a-col :span="8">
<a-form-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['liaisonMan',validatorRules.liaisonMan]"
placeholder="请输入联系人"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="手机" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
:disabled="isDisabledAuth('member.phone')"
v-decorator="['mobile',validatorRules.mobile]"
placeholder="请输入手机"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="固定电话" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['phone',validatorRules.phone]"
placeholder="请输入固定电话"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :span="24" class="label-width-row">
<a-col :span="8">
<a-form-item label="E-mail" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['email',validatorRules.email]"
placeholder="请输入E-mail"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="通讯地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['address',validatorRules.address]"
placeholder="请输入通讯地址"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="邮编" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['postcode',validatorRules.postcode]"
placeholder="请输入邮编"></a-input>
</a-form-item>
</a-col>
</a-row>
<!--发票信息-->
<div class="row clearfix">
<div class="column">
<p class="member-panel-title">发票信息</p>
</div>
</div>
</div>
<a-row :span="24" class='label-width-row'>
<a-col :span="8">
<a-form-item label="关联付款发票名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['invoiceInfo', validatorRules.invoiceInfo]"
placeholder="请输入关联付款发票名称"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="社会统一代码/税号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['taxNo', validatorRules.taxNo]"
placeholder="请输入社会统一代码/税号"></a-input>
</a-form-item>
</a-col>
<!-- 2021-09-23 增加 单位地址 -->
<a-col :span="8">
<a-form-item label="单位地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'invoiceAddress', validatorRules.invoiceAddress]"
placeholder="请输入单位地址"
:maxLength="50"
></a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 2021-09-23 增加 电话号码 开户银行 银行账户-->
<a-row :span="24" class='label-width-row'>
<a-col :span="8">
<a-form-item label="电话号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
v-decorator="[ 'invoicePhone', validatorRules.invoicePhone]"
placeholder="请输入电话号码"
:maxLength="50"
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9|-]/g,'')}"
></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="开户银行" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'depositBank', validatorRules.depositBank]"
placeholder="请输入开户银行"
:maxLength="50"
></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="银行账户" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
v-decorator="[ 'bankAccount', validatorRules.bankAccount]"
placeholder="请输入银行账户"
:maxLength="50"
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}"
></a-input>
</a-form-item>
</a-col>
</a-row>
<div class="row clearfix">
<div class="column">
<p class='member-panel-title'>入会申请表</p>
<a-row :span="24" class="label-width-row">
<a-col :span="8">
<a-form-item label="关联付款发票名称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['invoiceInfo', validatorRules.invoiceInfo]"
placeholder="请输入关联付款发票名称"></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="社会统一代码/税号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
:maxLength="50"
v-decorator="['taxNo', validatorRules.taxNo]"
placeholder="请输入社会统一代码/税号"></a-input>
</a-form-item>
</a-col>
<!-- 2021-09-23 增加 单位地址 -->
<a-col :span="8">
<a-form-item label="单位地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'invoiceAddress', validatorRules.invoiceAddress]"
placeholder="请输入单位地址"
:maxLength="50"
></a-input>
</a-form-item>
</a-col>
</a-row>
<!-- 2021-09-23 增加 电话号码 开户银行 银行账户-->
<a-row :span="24" class="label-width-row">
<a-col :span="8">
<a-form-item label="电话号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
v-decorator="[ 'invoicePhone', validatorRules.invoicePhone]"
placeholder="请输入电话号码"
:maxLength="50"
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9|-]/g,'')}"
></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="开户银行" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
@change="event => event.target.value = event.target.value.trim()"
v-decorator="[ 'depositBank', validatorRules.depositBank]"
placeholder="请输入开户银行"
:maxLength="50"
></a-input>
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="银行账户" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
v-decorator="[ 'bankAccount', validatorRules.bankAccount]"
placeholder="请输入银行账户"
:maxLength="50"
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9]/g,'')}"
></a-input>
</a-form-item>
</a-col>
</a-row>
<div class="row clearfix">
<div class="column">
<p class="member-panel-title">入会申请表</p>
</div>
</div>
</div>
<a-row :span="24" class='label-width-row'>
<a-col :span="12">
<a-form-item label="入会申请表" :labelCol="labelCol" :wrapperCol="wrapperCol">
{{applicationWordName}}
<span class="preview" @click="previewApplyPdf(memberInfo.applicationWordId)">预览</span>
<span class="download" @click="downApplyPdf(memberInfo.applicationWordId)">下载</span>
</a-form-item>
</a-col>
<a-col :span="12"></a-col>
</a-row>
</a-form>
</div>
<a-row :span="24" class="label-width-row">
<a-col :span="12">
<a-form-item label="入会申请表" :labelCol="labelCol" :wrapperCol="wrapperCol">
{{ applicationWordName }}
<span class="preview" @click="previewApplyPdf(memberInfo.applicationWordId)">预览</span>
<span class="download" @click="downApplyPdf(memberInfo.applicationWordId)">下载</span>
</a-form-item>
</a-col>
<a-col :span="12"></a-col>
</a-row>
</a-form>
<!-- 变更申请模态框 -->
<change-company-modal ref="changeCompany" @ok="getChangeHistoryData"></change-company-modal>
</div>
</template>
<script>
@@ -297,14 +301,17 @@ import JMultiSelectTag from '../../../components/dict/JMultiSelectTag'
import { previewPdf, getFilesByIds } from '../../../api/standardsAssociationApi'
import { getFileAccessHttpUrl } from '../../../api/memberManage'
import { DisabledAuthFilterMixin } from '@/mixins/DisabledAuthFilterMixin'
import ChangeCompanyModal from './modules/ChangeCompanyModal'
import pick from 'lodash.pick'
// eslint-disable-next-line no-unused-vars
import Vue from 'vue'
export default {
name: 'MemberInfo',
components: {
JImageUpload,
JMultiSelectTag
JMultiSelectTag,
ChangeCompanyModal
},
props: {
// 会员对象
@@ -365,7 +372,10 @@ export default {
rules: [
{ required: true, message: '请输入单位社会统一代码/税号', validateTrigger: 'blur' },
// { pattern: /^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/, message: '15位、17位、18位、20位数字和大写英文字母' }
{ pattern: /^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/, message: '请输入15位、18位的社会统一代码/税号' }
{
pattern: /^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/,
message: '请输入15位、18位的社会统一代码/税号'
}
],
validateTrigger: 'blur'
},
@@ -557,7 +567,7 @@ export default {
/*
* 预览入会申请表
* */
previewApplyPdf(id) {
previewApplyPdf() {
// const url = `${window._CONFIG['memberURL']}/sys/common/static/${id}?type=view&${TokenKey}=${Vue.ls.get(ACCESS_TOKEN)}`
window.open(previewPdf(this.applicationWordInfo))
/**
@@ -589,11 +599,25 @@ export default {
},
// 初始化数据的方法
initData(memberInfo) {
this.model = { ...memberInfo}
this.model = { ...memberInfo }
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'invoiceInfo', 'taxNo', 'userName', 'registerTime', 'companyName', 'companyNature', 'companyDepartment', 'companyBusinessDesc', 'standardDepartment', 'standardLeadingMan', 'standardPhone', 'standardMobile', 'standardEmail', 'standardPost', 'standardSoleDutyCount', 'standardConcurrentCount', 'liaisonMan', 'email', 'phone', 'mobile', 'address', 'postcode', 'memberStatus', 'userId', 'validDate', 'memberType', 'createTime', 'businessLicenseFileId', 'recommendWordId', 'memberNature', 'industrialOrganization', 'applicationWordId', 'realname', 'invoiceAddress', 'invoicePhone', 'depositBank', 'bankAccount'))
})
this.getApplyPdfFilesByIds()
},
// 打开变更公司全称模态框
changeCompanyName() {
this.$refs.changeCompany.originCompanyName = this.memberInfo.companyName
this.$refs.changeCompany.memberId = this.memberInfo.id
// 是否已经发起变更
this.$refs.changeCompany.companyNameApply = this.memberInfo.companyNameApply
this.$refs.changeCompany.title = '变更申请'
this.$refs.changeCompany.visible = true
},
// 更新变更
getChangeHistoryData() {
}
},
created() {
@@ -603,34 +627,47 @@ export default {
}
</script>
<style scoped lang='less'>
<style scoped lang="less">
@import '~@assets/less/common.less';
.preview,.download{
.preview, .download {
display: inline-block;
margin-left: 8px;
color: #00A0E9;
cursor: pointer;
}
.joined-col{
/deep/label {
.joined-col {
/deep/ label {
white-space: pre-wrap;
line-height: 20px!important;
line-height: 20px !important;
}
}
/* 多选组件的样式 ---开始 */
/deep/.ant-checkbox-group {
/deep/ .ant-checkbox-group {
display: flex;
flex-wrap: wrap;
}
/deep/.ant-checkbox-wrapper + .ant-checkbox-wrapper{
width:25%
/deep/ .ant-checkbox-wrapper + .ant-checkbox-wrapper {
width: 25%
}
/deep/.ant-checkbox-wrapper:nth-child(1){
/deep/ .ant-checkbox-wrapper:nth-child(1) {
width: 25%;
}
/deep/.ant-checkbox-wrapper + .ant-checkbox-wrapper {
/deep/ .ant-checkbox-wrapper + .ant-checkbox-wrapper {
margin-left: 0px;
}
/* 多选组件的样式 ---结束 */
// 变更申请 按钮的样式
.changeCompany {
position: absolute;
top: -5px;
right: -100px;
}
</style>
@@ -1,66 +1,66 @@
<!--缴费记录 页面-->
<template>
<div class='payment-info'>
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :span="24" :gutter="24" class="create-date-row">
<a-col :span="14">
<a-form-item label="订单创建日期" :labelCol="labelColDate" :wrapperCol="wrapperColDate">
<j-date
date-format="YYYY-MM-DD 00:00:00"
placeholder="请选择开始日期"
v-model="queryParam[dateKeyObj.beginKey]"
:disabled-date="disabledStartDate"></j-date>
<span class="query-group-split-cust"></span>
<j-date
date-format="YYYY-MM-DD 23:59:59"
placeholder="请选择结束日期"
v-model="queryParam[dateKeyObj.endKey]"
:disabled-date="disabledEndDate"></j-date>
</a-form-item>
</a-col>
<div class="payment-info">
<div class="table-page-search-wrapper">
<a-form layout="inline">
<a-row :span="24" :gutter="24" class="create-date-row">
<a-col :span="14">
<a-form-item label="订单创建日期" :labelCol="labelColDate" :wrapperCol="wrapperColDate">
<j-date
date-format="YYYY-MM-DD 00:00:00"
placeholder="请选择开始日期"
v-model="queryParam[dateKeyObj.beginKey]"
:disabled-date="disabledStartDate"></j-date>
<span class="query-group-split-cust"></span>
<j-date
date-format="YYYY-MM-DD 23:59:59"
placeholder="请选择结束日期"
v-model="queryParam[dateKeyObj.endKey]"
:disabled-date="disabledEndDate"></j-date>
</a-form-item>
</a-col>
<a-col :span="8" class="ope-col">
<a-button class="btn btn-primary" type="primary" @click="payQuery" icon="searchQuery">查询
</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 5px">刷新
</a-button>
</a-col>
</a-row>
</a-form>
<!-- <table-component-->
<!-- :columns="columns"-->
<!-- :data-source="dataSource"-->
<!-- :page-type="pageType"-->
<!-- :pagination="ipagination"-->
<!-- @ok="paymentSearchQuery"-->
<!-- ></table-component>-->
<a-col :span="8" class="ope-col">
<a-button class="btn btn-primary" type="primary" @click="payQuery" icon="searchQuery">查询
</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 5px">刷新
</a-button>
</a-col>
</a-row>
</a-form>
<!-- <table-component-->
<!-- :columns="columns"-->
<!-- :data-source="dataSource"-->
<!-- :page-type="pageType"-->
<!-- :pagination="ipagination"-->
<!-- @ok="paymentSearchQuery"-->
<!-- ></table-component>-->
<div class="row clearfix">
<div class="col-md-12 column">
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
@change="handleTableChange"
class="j-table-force-nowrap">
</a-table>
<div class="row clearfix">
<div class="col-md-12 column">
<a-table
ref="table"
size="middle"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
@change="handleTableChange"
class="j-table-force-nowrap">
</a-table>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import moment from 'moment'
import { getAction } from '../../../api/memberManage'
import { JeroListMixin } from '../../../mixins/JeroListMixin'
import { RangeDateMixin} from '../../../mixins/RangeDateMixin'
import { RangeDateMixin } from '../../../mixins/RangeDateMixin'
import JDate from '@comp/tools/JDate'
export default {
@@ -93,6 +93,11 @@ export default {
beginKey: 'submissionTime_begin',
endKey: 'submissionTime_end'
},
// 时间组件的单位
rangeDateFormat: {
begin: 'YYYY-MM-DD hh:mm:ss',
end: 'YYYY-MM-DD hh:mm:ss'
},
labelColDate: {
xs: { span: 24 },
sm: { span: 4 }
@@ -161,7 +166,7 @@ export default {
methods: {
moment,
loadData(arg) {
if(!this.url.list){
if (!this.url.list) {
this.$message.error('请设置url.list属性!')
return
}
@@ -174,18 +179,17 @@ export default {
getAction(this.url.list, params).then((res) => {
if (res.success) {
//update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
this.dataSource = res.result.records||res.result
if(res.result.total)
{
this.dataSource = res.result.records || res.result
if (res.result.total) {
this.ipagination.total = res.result.total
//清空列表选中
// this.onClearSelected()
}else{
} else {
this.ipagination.total = 0
}
//update-end---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------
}
if(res.code===510){
if (res.code === 510) {
this.$message.warning(res.message)
}
this.loading = false
@@ -235,7 +239,7 @@ export default {
}
</script>
<style scoped lang='less'>
<style scoped lang="less">
@import '~@assets/less/common.less';
</style>
@@ -16,13 +16,14 @@
</a-form-item>
<a-form-item label="变更后单位全称" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input
v-decorator="['changeCompanyName',validatorRules.changeCompanyName]"
:maxLength="50"
placeholder="请输入变更后单位全称"
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
v-decorator="['changeCompanyName',validatorRules.changeCompanyName]"
:maxLength="50"
placeholder="请输入变更后单位全称"
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
<a-form-item label="工商注册变更证明" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-image-upload v-decorator="['registerChangeProve',validatorRules.registerChangeProve]" is-multiple is-less-than5-m :number="2"></j-image-upload>
<j-image-upload v-decorator="['registerChangeProve',validatorRules.registerChangeProve]" is-multiple
is-less-than5-m :number="2"></j-image-upload>
</a-form-item>
</a-form>
</a-spin>
@@ -30,9 +31,9 @@ v-decorator="['changeCompanyName',validatorRules.changeCompanyName]"
</template>
<script>
import JImageUpload from '@comp/jero/JImageUpload'
import JImageUpload from '@comp/standardsAssociation/JImageUpload'
import pick from 'lodash.pick'
import { checkOnlyCompany, changeCompany, changeCompanyEdit } from '@api/api'
import { checkOnlyCompany, changeCompany, changeCompanyEdit } from '@api/standardsAssociationApi'
export default {
name: 'ChangeCompanyModal',
@@ -112,7 +113,8 @@ export default {
// 为true是编辑
if (this.listEdit) {
formData.id = this.recordId
formData.registerChangeProve = formData.registerChangeProve.join(',')
console.log('------------', formData)
// formData.registerChangeProve = formData.registerChangeProve.join(',')
changeCompanyEdit(formData).then((res) => {
if (res.success) {
that.$message.success('申请变更成功,请等待审批结果')
File diff suppressed because it is too large Load Diff
@@ -7,14 +7,15 @@
:footer="null"
@cancel="handleCancel()"
cancelText="关闭">
<!-- <img src="../../../../assets/images/wmi.png">-->
<!-- <img src="../../../../assets/images/wmi.png">-->
<img :src="imgSrc" class="img" v-if="imgSrc" />
<img :src="getImgView()" class="img" v-else/>
<img :src="getImgView()" class="img" v-else />
</j-modal>
</template>
<script>
import { getFileAccessHttpUrl } from '@/api/memberManage'
export default {
name: 'PreViewImgModal',
data() {
@@ -16,11 +16,13 @@
class="j-table-force-nowrap">
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span><!--
--><j-ellipsis :value="text" :length="30"/>
-->
<j-ellipsis :value="text" :length="30" />
</template>
<template slot="textSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;"></span><!--
--><j-ellipsis :value="text" :length="30"/>
-->
<j-ellipsis :value="text" :length="30" />
</template>
<template slot="status" slot-scope="text, record">
<span v-if="record.status === 1 " style="color:red">待审核</span>
@@ -37,12 +39,13 @@
height="60px"
alt=""
class="img"
@click.stop="openView(textItem)"/>
@click.stop="openView(textItem)" />
</template>
<span slot="action" class="action-span-cell action-span-cell-other" slot-scope="text, record">
<template v-if="record.isParent">
<a @click.stop="record.status === 2 && handleApproveEdit(record)" v-show="record.status === 2 && pageType === 1" v-has="'memberInfo:companyNameRecord:edit' ">编辑</a>
<a @click="handleDetail(record)" v-if='record.children && record.children.length > 0'>查看</a>
<a @click.stop="record.status === 2 && handleApproveEdit(record)"
v-show="record.status === 2 && pageType === 1">编辑</a>
<a @click="handleDetail(record)" v-if="record.children && record.children.length > 0">查看</a>
<a v-if="!record.children && record.status !== 2">-</a>
</template>
<template v-if="!record.isParent">-</template>
@@ -86,15 +89,15 @@ export default {
expandRowByClick: {
type: Boolean
},
// 1 是编辑 2-是查看 在企业端应该都是编辑
pageType: {
type: Number,
default: 2
default: 1
}
},
data() {
return {
}
return {}
},
methods: {
handleChange(pagination) {
@@ -112,14 +115,14 @@ export default {
this.$refs.previewModal.open(val)
},
/*
* 编辑
* */
* 编辑
* */
handleApproveEdit(record) {
this.$emit('edit', record)
},
/*
* 查看
* */
* 查看
* */
handleDetail(record) {
console.log(record)
}
@@ -130,13 +133,14 @@ export default {
<style scoped lang="less">
//@import '~@/assets/less/TableExpand.less';
.img {
width:120px;
width: 120px;
font-size: 12px;
font-style: italic;
margin-right: 4px;
cursor: pointer;
}
.action-span-cell-other a{
.action-span-cell-other a {
padding: 0 10px;
}
</style>
@@ -0,0 +1,50 @@
<template>
<j-modal
title="预览"
width="500px"
:visible="previewVisible"
:maskClosable="false"
:footer="null"
switchFullscreen
@cancel="handleCancel()"
cancelText="关闭">
<!--<img alt="example" style="width: 100%" :src="previewImage"/>-->
<img :src="getImgView()" height="300px" alt="this img is flying" style="width: 100%;height: 100%" />
</j-modal>
</template>
<script>
import { getFileAccessHttpUrl } from '@/api/memberManage'
export default {
name: 'PreViewImgModal',
data() {
return {
previewVisible: false,
imgId: ''
}
},
methods: {
open(val) {
this.previewVisible = true
this.imgId = val
},
handleCancel() {
this.previewVisible = false
},
/* 图片预览 */
getImgView() {
let text = this.imgId
if (text && text.indexOf(',') > 0) {
text = text.substring(0, text.indexOf(','))
}
return getFileAccessHttpUrl(text)
}
}
}
</script>
<style scoped>
</style>
File diff suppressed because it is too large Load Diff