【update】 标协会员注册页面迁移至来款企业端;修改会员缴费、证书缴费反馈的问题
This commit is contained in:
@@ -7,6 +7,17 @@ import { getAction, postAction } from '@api/memberManage'
|
||||
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
|
||||
// 验证用户是否存在
|
||||
const checkOnlyUser = (params) => getAction('/sys/user/checkOnlyUser', params)
|
||||
// 验证税号是否重复
|
||||
const checkOnlytaxNo = (params) => getAction('/sys/user/taxNoCheck', params)
|
||||
// 企业性质dict查询
|
||||
const getDictOptions = (params) => getAction('/memberInfo/memberInfo/getDictOptions', params)
|
||||
// 手机号唯一性校验
|
||||
const phoneCheck = (params) => getAction('/sys/user/phoneCheck', params)
|
||||
// 邮箱唯一性校验
|
||||
const emailCheck = (params) => getAction('/sys/user/emailCheck', params)
|
||||
|
||||
// 标协会员-基本信息-调用来款系统的接口
|
||||
const getMemberBaseInfo = (param) => incomeGetAction('/company/payContactsManagement/baseInfo', param)
|
||||
|
||||
@@ -87,6 +98,11 @@ export {
|
||||
getCertificateById,
|
||||
|
||||
application,
|
||||
determineOrCancel
|
||||
determineOrCancel,
|
||||
checkOnlyUser,
|
||||
checkOnlytaxNo,
|
||||
getDictOptions,
|
||||
phoneCheck,
|
||||
emailCheck
|
||||
|
||||
}
|
||||
|
||||
@@ -130,3 +130,18 @@
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
.ant-checkbox-group {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.ant-checkbox-wrapper + .ant-checkbox-wrapper{
|
||||
width:25%
|
||||
}
|
||||
.ant-checkbox-wrapper:nth-child(1){
|
||||
width: 25%;
|
||||
}
|
||||
.ant-checkbox-wrapper + .ant-checkbox-wrapper {
|
||||
margin-left: 0px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -0,0 +1,247 @@
|
||||
<template>
|
||||
<a-upload
|
||||
name="file"
|
||||
listType="picture-card"
|
||||
:multiple="isMultiple"
|
||||
:action="uploadAction"
|
||||
:headers="headers"
|
||||
:data="{biz:bizPath}"
|
||||
:fileList="fileList"
|
||||
:beforeUpload="beforeUpload"
|
||||
:disabled="disabled"
|
||||
:isMultiple="isMultiple"
|
||||
:showUploadList="isMultiple"
|
||||
@change="handleChange"
|
||||
@preview="handlePreview">
|
||||
<img v-if="!isMultiple && picUrl" :src="getAvatarView()" @click="clickFunc" style="height:104px;max-width:300px"/>
|
||||
<div v-else >
|
||||
<a-icon :type="uploadLoading ? 'loading' : 'plus'" />
|
||||
<div class="ant-upload-text">{{ text }}</div>
|
||||
</div>
|
||||
<j-modal
|
||||
title="预览"
|
||||
width="800px"
|
||||
:visible="previewVisible"
|
||||
:maskClosable="false"
|
||||
:footer="null"
|
||||
switchFullscreen
|
||||
@cancel="handleCancel()"
|
||||
cancelText="关闭">
|
||||
<img alt="example" style="width: 100%" :src="previewImage"/>
|
||||
</j-modal>
|
||||
<!--<j-modal :visible="previewVisible" :footer="null" @cancel="handleCancel()">-->
|
||||
<!--<img alt="example" style="width: 100%" :src="previewImage"/>-->
|
||||
<!--</j-modal>-->
|
||||
</a-upload>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getFileAccessHttpUrl } from '@/api/memberManage'
|
||||
|
||||
const uidGenerator = () => {
|
||||
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
||||
}
|
||||
const getFileName = (path) => {
|
||||
if (path.lastIndexOf('\\') >= 0) {
|
||||
const reg = new RegExp('\\\\', 'g')
|
||||
path = path.replace(reg, '/')
|
||||
}
|
||||
return path.substring(path.lastIndexOf('/') + 1)
|
||||
}
|
||||
export default {
|
||||
name: 'RImageUpload',
|
||||
data() {
|
||||
return {
|
||||
uploadAction: window._CONFIG['memberURL'] + '/memberInfo/memberInfo/upload',
|
||||
uploadLoading: false,
|
||||
picUrl: false,
|
||||
headers: {},
|
||||
fileList: [],
|
||||
previewImage: '',
|
||||
previewVisible: false
|
||||
}
|
||||
},
|
||||
props: {
|
||||
text: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '上传'
|
||||
},
|
||||
number: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 0
|
||||
},
|
||||
/* 这个属性用于控制文件上传的业务路径*/
|
||||
bizPath: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: 'temp'
|
||||
},
|
||||
value: {
|
||||
type: [String, Array],
|
||||
required: false
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
isMultiple: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
// 是否需要校验图片大小不超过5M
|
||||
isLessThan5M: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value(val) {
|
||||
if (val instanceof Array) {
|
||||
this.initFileList(val.join(','))
|
||||
} else {
|
||||
this.initFileList(val)
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// const token = Vue.ls.get(ACCESS_TOKEN);
|
||||
// this.headers = {"X-Access-Token":token}
|
||||
},
|
||||
methods: {
|
||||
initFileList(paths) {
|
||||
if (!paths || paths.length === 0) {
|
||||
this.fileList = []
|
||||
this.picUrl = false
|
||||
return
|
||||
}
|
||||
this.picUrl = true
|
||||
const fileList = []
|
||||
const arr = paths.split(',')
|
||||
for (var a = 0; a < arr.length; a++) {
|
||||
const url = getFileAccessHttpUrl(arr[a])
|
||||
fileList.push({
|
||||
uid: uidGenerator(),
|
||||
name: getFileName(arr[a]),
|
||||
status: 'done',
|
||||
url: url,
|
||||
response: {
|
||||
status: 'history',
|
||||
message: arr[a]
|
||||
}
|
||||
})
|
||||
}
|
||||
this.fileList = fileList
|
||||
},
|
||||
beforeUpload: function(file) {
|
||||
var fileType = file.type
|
||||
const imgTypes = ['jpg', 'jpeg', 'png']
|
||||
const imgFlag = imgTypes.some(item => {
|
||||
return fileType.indexOf(item) > 0
|
||||
})
|
||||
file.uploadGoOn = true
|
||||
if (!imgFlag) {
|
||||
this.$message.warning('请上传jpg,jpeg,png格式的图片')
|
||||
file.uploadGoOn = false
|
||||
return false
|
||||
}
|
||||
if (this.isLessThan5M) {
|
||||
if (file.size > 1024 * 1024 * 5) {
|
||||
this.$message.warning('图片大小限制为5M')
|
||||
file.uploadGoOn = false
|
||||
return false
|
||||
}
|
||||
}
|
||||
},
|
||||
clickFunc() {
|
||||
if (!this.disabled) return
|
||||
if (this.fileList.length > 0) {
|
||||
this.handlePreview(this.fileList[0])
|
||||
}
|
||||
},
|
||||
handleChange(info) {
|
||||
if (!info.file.status && info.file.uploadGoOn === false) {
|
||||
info.fileList.pop()
|
||||
return
|
||||
}
|
||||
this.picUrl = false
|
||||
let fileList = info.fileList
|
||||
if (info.file.status === 'done') {
|
||||
if (this.number > 0) {
|
||||
fileList = fileList.slice(-this.number)
|
||||
}
|
||||
if (info.file.response.success) {
|
||||
this.picUrl = true
|
||||
fileList = fileList.map((file) => {
|
||||
if (file.response) {
|
||||
file.url = file.response.message
|
||||
}
|
||||
return file
|
||||
})
|
||||
}
|
||||
// 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') {
|
||||
this.handlePathChange()
|
||||
}
|
||||
},
|
||||
// 预览
|
||||
handlePreview(file) {
|
||||
this.previewImage = file.url || file.thumbUrl
|
||||
this.previewVisible = true
|
||||
},
|
||||
getAvatarView() {
|
||||
if (this.fileList.length > 0) {
|
||||
return this.fileList[0].url
|
||||
}
|
||||
},
|
||||
handlePathChange() {
|
||||
const uploadFiles = this.fileList
|
||||
let path = ''
|
||||
if (!uploadFiles || uploadFiles.length === 0) {
|
||||
path = ''
|
||||
}
|
||||
const arr = []
|
||||
if (!this.isMultiple) {
|
||||
arr.push(uploadFiles[uploadFiles.length - 1].response.message)
|
||||
} else {
|
||||
for (var a = 0; a < uploadFiles.length; a++) {
|
||||
arr.push(uploadFiles[a].response.message)
|
||||
}
|
||||
}
|
||||
if (arr.length > 0) {
|
||||
path = arr.join(',')
|
||||
}
|
||||
this.$emit('change', path)
|
||||
},
|
||||
handleDelete(file) {
|
||||
// 如有需要新增 删除逻辑
|
||||
console.log(file)
|
||||
},
|
||||
handleCancel() {
|
||||
this.close()
|
||||
this.previewVisible = false
|
||||
},
|
||||
close() {
|
||||
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'change'
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,487 @@
|
||||
<template>
|
||||
<div :id="containerId" style="position: relative">
|
||||
|
||||
<!-- ---------------------------- begin 图片左右换位置 ------------------------------------- -->
|
||||
<div class="movety-container" :style="{top:top+'px',left:left+'px',display:moveDisplay}" style="padding:0 8px;position: absolute;z-index: 91;height: 32px;width: 104px;text-align: center;">
|
||||
<div :id="containerId+'-mover'" :class="showMoverTask?'uploadty-mover-mask':'movety-opt'" style="margin-top: 12px">
|
||||
<a @click="moveLast" style="margin: 0 5px;"><a-icon type="arrow-left" style="color: #fff;font-size: 16px"/></a>
|
||||
<a @click="moveNext" style="margin: 0 5px;"><a-icon type="arrow-right" style="color: #fff;font-size: 16px"/></a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ---------------------------- end 图片左右换位置 ------------------------------------- -->
|
||||
|
||||
<a-upload
|
||||
name="file"
|
||||
:multiple="true"
|
||||
:action="uploadAction"
|
||||
:headers="headers"
|
||||
:data="{'biz':bizPath}"
|
||||
:fileList="fileList"
|
||||
:beforeUpload="beforeUpload"
|
||||
@change="handleChange"
|
||||
:disabled="disabled"
|
||||
:returnUrl="returnUrl"
|
||||
:listType="complistType"
|
||||
@preview="handlePreview"
|
||||
: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>
|
||||
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancel">
|
||||
<img alt="example" style="width: 100%" :src="previewImage" />
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import Vue from 'vue'
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
import { getFileAccessHttpUrl } from '@/api/memberManage'
|
||||
import { getFilesByIds } from '@api/standardsAssociationApi'
|
||||
|
||||
const FILE_TYPE_ALL = 'all'
|
||||
const FILE_TYPE_IMG = 'image'
|
||||
const FILE_TYPE_JPG = 'image/jpg'
|
||||
const FILE_TYPE_PNG = 'image/png'
|
||||
const FILE_TYPE_TXT = 'file'
|
||||
const FILE_TYPE_PDF = 'pdf'
|
||||
const FILE_TYPE_VIDEO = 'video'
|
||||
const FILE_TYPE_ZIP = 'zip'
|
||||
const FILE_TYPE_WORD = 'word'
|
||||
const FILE_TYPE_MP3 = 'audio'
|
||||
const uidGenerator = () => {
|
||||
return '-' + parseInt(Math.random() * 10000 + 1, 10)
|
||||
}
|
||||
const getFileName = (path) => {
|
||||
if (path.lastIndexOf('\\') >= 0) {
|
||||
const reg = new RegExp('\\\\', 'g')
|
||||
path = path.replace(reg, '/')
|
||||
}
|
||||
return path.substring(path.lastIndexOf('/') + 1)
|
||||
}
|
||||
export default {
|
||||
name: 'JUpload',
|
||||
props: {
|
||||
text: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '点击上传'
|
||||
},
|
||||
fileType: {
|
||||
type: [String, Array],
|
||||
required: false,
|
||||
default: FILE_TYPE_ALL
|
||||
},
|
||||
fileTypeErrorMessage: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: ''
|
||||
},
|
||||
/* 这个属性用于控制文件上传的业务路径*/
|
||||
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
|
||||
},
|
||||
number: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 0
|
||||
},
|
||||
buttonVisible: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
uploadAction: window._CONFIG['memberURL'] + '/memberInfo/memberInfo/upload',
|
||||
headers: {},
|
||||
fileList: [],
|
||||
newFileList: [],
|
||||
uploadGoOn: true,
|
||||
previewVisible: false,
|
||||
// ---------------------------- begin 图片左右换位置 -------------------------------------
|
||||
previewImage: '',
|
||||
containerId: '',
|
||||
top: '',
|
||||
left: '',
|
||||
moveDisplay: 'none',
|
||||
showMoverTask: false,
|
||||
moverHold: false,
|
||||
currentImg: '',
|
||||
fileTypes: this.fileType
|
||||
// ---------------------------- end 图片左右换位置 -------------------------------------
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value: {
|
||||
immediate: true,
|
||||
handler() {
|
||||
const val = this.value
|
||||
if (val instanceof Array) {
|
||||
if (this.returnUrl) {
|
||||
this.initFileList(val.join(','))
|
||||
} else {
|
||||
this.initFileListArr(val)
|
||||
}
|
||||
} else {
|
||||
this.initFileList(val)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isImageComp() {
|
||||
return this.fileTypes === FILE_TYPE_IMG || this.fileTypes === FILE_TYPE_PNG || this.fileTypes === FILE_TYPE_JPG
|
||||
},
|
||||
complistType() {
|
||||
return (this.fileTypes === FILE_TYPE_IMG || this.fileTypes === FILE_TYPE_PNG || this.fileTypes === FILE_TYPE_JPG) ? '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
|
||||
}
|
||||
const fileList = []
|
||||
for (var a = 0; a < val.length; a++) {
|
||||
const url = getFileAccessHttpUrl(val[a].filePath)
|
||||
fileList.push({
|
||||
uid: uidGenerator(),
|
||||
name: val[a].fileName,
|
||||
status: 'done',
|
||||
url: url,
|
||||
response: {
|
||||
status: 'history',
|
||||
message: val[a].filePath
|
||||
}
|
||||
})
|
||||
}
|
||||
this.fileList = fileList
|
||||
},
|
||||
async getFilesByIds(params) {
|
||||
return new Promise(resolve => {
|
||||
let result = []
|
||||
getFilesByIds({ ids: params }).then(res => {
|
||||
if (res.success) {
|
||||
result = res.result.map(tt => tt.fileName)
|
||||
}
|
||||
}).finally(() => {
|
||||
resolve(result)
|
||||
})
|
||||
})
|
||||
},
|
||||
async initFileList(paths) {
|
||||
if (!paths || paths.length === 0) {
|
||||
// return [];
|
||||
// update-begin- --- author:os_chengtgen ------ date:20190729 ---- for:issues:326,Jupload组件初始化bug
|
||||
this.fileList = []
|
||||
return
|
||||
// update-end- --- author:os_chengtgen ------ date:20190729 ---- for:issues:326,Jupload组件初始化bug
|
||||
}
|
||||
const fileList = []
|
||||
const arr = paths.split(',')
|
||||
const nameArr = await this.getFilesByIds(paths)
|
||||
for (var a = 0; a < arr.length; a++) {
|
||||
const url = getFileAccessHttpUrl(arr[a])
|
||||
fileList.push({
|
||||
uid: uidGenerator(),
|
||||
// name:getFileName(arr[a]),
|
||||
name: nameArr[a],
|
||||
status: 'done',
|
||||
url: url,
|
||||
response: {
|
||||
status: 'history',
|
||||
message: arr[a]
|
||||
}
|
||||
})
|
||||
}
|
||||
this.fileList = fileList
|
||||
},
|
||||
handlePathChange() {
|
||||
const uploadFiles = this.fileList
|
||||
let path = ''
|
||||
if (!uploadFiles || uploadFiles.length === 0) {
|
||||
path = ''
|
||||
}
|
||||
const arr = []
|
||||
|
||||
for (var a = 0; a < uploadFiles.length; a++) {
|
||||
arr.push((uploadFiles[a].response || {}).message)
|
||||
}
|
||||
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 && info.file.uploadGoOn === false) {
|
||||
info.fileList.pop()
|
||||
return
|
||||
}
|
||||
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) {
|
||||
const reUrl = file.response.message
|
||||
file.url = getFileAccessHttpUrl(reUrl)
|
||||
file.fileName = file.name
|
||||
}
|
||||
return file
|
||||
})
|
||||
} else {
|
||||
this.$message.error(`${info.file.response.message}`)
|
||||
info.fileList.pop()
|
||||
return
|
||||
}
|
||||
// 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 (var a = 0; a < fileList.length; a++) {
|
||||
var fileJson = {
|
||||
fileName: fileList[a].name,
|
||||
filePath: fileList[a].response.message,
|
||||
fileSize: fileList[a].size
|
||||
}
|
||||
this.newFileList.push(fileJson)
|
||||
}
|
||||
this.$emit('change', this.newFileList)
|
||||
}
|
||||
}
|
||||
},
|
||||
handleDelete(file) {
|
||||
// 如有需要新增 删除逻辑
|
||||
console.log(file)
|
||||
},
|
||||
handlePreview(file) {
|
||||
if (this.fileTypes === FILE_TYPE_IMG) {
|
||||
this.previewImage = file.url || file.thumbUrl
|
||||
this.previewVisible = true
|
||||
} else {
|
||||
location.href = file.url
|
||||
}
|
||||
},
|
||||
handleCancel() {
|
||||
this.previewVisible = false
|
||||
},
|
||||
// ---------------------------- begin 图片左右换位置 -------------------------------------
|
||||
moveLast() {
|
||||
// console.log(ev)
|
||||
// console.log(this.fileList)
|
||||
// console.log(this.currentImg)
|
||||
const index = this.getIndexByUrl()
|
||||
if (index == 0) {
|
||||
this.$message.warn('未知的操作')
|
||||
} else {
|
||||
const curr = this.fileList[index].url
|
||||
const last = this.fileList[index - 1].url
|
||||
const arr = []
|
||||
for (let i = 0; i < this.fileList.length; i++) {
|
||||
if (i == index - 1) {
|
||||
arr.push(curr)
|
||||
} else if (i == index) {
|
||||
arr.push(last)
|
||||
} else {
|
||||
arr.push(this.fileList[i].url)
|
||||
}
|
||||
}
|
||||
this.currentImg = last
|
||||
this.$emit('change', arr.join(','))
|
||||
}
|
||||
},
|
||||
moveNext() {
|
||||
const index = this.getIndexByUrl()
|
||||
if (index == this.fileList.length - 1) {
|
||||
this.$message.warn('已到最后~')
|
||||
} else {
|
||||
const curr = this.fileList[index].url
|
||||
const next = this.fileList[index + 1].url
|
||||
const arr = []
|
||||
for (let i = 0; i < this.fileList.length; i++) {
|
||||
if (i == index + 1) {
|
||||
arr.push(curr)
|
||||
} else if (i == index) {
|
||||
arr.push(next)
|
||||
} else {
|
||||
arr.push(this.fileList[i].url)
|
||||
}
|
||||
}
|
||||
this.currentImg = next
|
||||
this.$emit('change', arr.join(','))
|
||||
}
|
||||
},
|
||||
getIndexByUrl() {
|
||||
for (let i = 0; i < this.fileList.length; i++) {
|
||||
if (this.fileList[i].url === this.currentImg || encodeURI(this.fileList[i].url) === this.currentImg) {
|
||||
return i
|
||||
}
|
||||
}
|
||||
return -1
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
const moverObj = document.getElementById(this.containerId + '-mover')
|
||||
moverObj.addEventListener('mouseover', () => {
|
||||
this.moverHold = true
|
||||
this.moveDisplay = 'block'
|
||||
})
|
||||
moverObj.addEventListener('mouseout', () => {
|
||||
this.moverHold = false
|
||||
this.moveDisplay = 'none'
|
||||
})
|
||||
const picList = document.getElementById(this.containerId) ? document.getElementById(this.containerId).getElementsByClassName('ant-upload-list-picture-card') : []
|
||||
if (picList && picList.length > 0) {
|
||||
picList[0].addEventListener('mouseover', (ev) => {
|
||||
ev = ev || window.event
|
||||
const target = ev.target || ev.srcElement
|
||||
if (target.className == 'ant-upload-list-item-info') {
|
||||
this.showMoverTask = false
|
||||
const item = target.parentElement
|
||||
this.left = item.offsetLeft
|
||||
this.top = item.offsetTop + item.offsetHeight - 50
|
||||
this.moveDisplay = 'block'
|
||||
this.currentImg = target.getElementsByTagName('img')[0].src
|
||||
}
|
||||
})
|
||||
|
||||
picList[0].addEventListener('mouseout', (ev) => {
|
||||
ev = ev || window.event
|
||||
const target = ev.target || ev.srcElement
|
||||
// console.log('移除',target)
|
||||
if (target.className == 'ant-upload-list-item-info') {
|
||||
this.showMoverTask = true
|
||||
setTimeout(() => {
|
||||
if (this.moverHold === false) { this.moveDisplay = 'none' }
|
||||
}, 100)
|
||||
}
|
||||
if (target.className == 'ant-upload-list-item ant-upload-list-item-done' || target.className == 'ant-upload-list ant-upload-list-picture-card') {
|
||||
this.moveDisplay = 'none'
|
||||
}
|
||||
})
|
||||
// ---------------------------- end 图片左右换位置 -------------------------------------
|
||||
}
|
||||
},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'change'
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.uploadty-disabled{
|
||||
.ant-upload-list-item {
|
||||
.anticon-close{
|
||||
display: none;
|
||||
}
|
||||
.anticon-delete{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------- begin 图片左右换位置 -------------------------------------
|
||||
.uploadty-mover-mask{
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
opacity: .8;
|
||||
color: #fff;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
}
|
||||
//---------------------------- end 图片左右换位置 -------------------------------------
|
||||
</style>
|
||||
@@ -52,7 +52,16 @@ export const constantRouterMap = [
|
||||
path: 'alteration',
|
||||
name: 'alteration',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/user/alteration/Alteration')
|
||||
}
|
||||
},{
|
||||
path: 'member-register',
|
||||
name: 'MemberRegister',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/standardsAssociation/register/Register')
|
||||
},
|
||||
{
|
||||
path: 'member-register-result',
|
||||
name: 'MemberRegisterResult',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/standardsAssociation/register/RegisterResult')
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ import { generateIndexRouter } from '@/utils/util'
|
||||
|
||||
NProgress.configure({ showSpinner: false }) // NProgress Configuration
|
||||
|
||||
const whiteList = ['/user/login', '/user/register', '/user/register-result', '/user/alteration','/signupentrance','/signUpPage'] // no redirect whitelist
|
||||
const whiteList = ['/user/login', '/user/register', '/user/register-result', '/user/member-register', '/user/member-register-result', '/user/alteration','/signupentrance','/signUpPage'] // no redirect whitelist
|
||||
|
||||
const ThirdLoginFunc = (token) => {
|
||||
return new Promise(resolve => {
|
||||
|
||||
@@ -12,7 +12,8 @@ export function isEmail(s) {
|
||||
* @param {*} s
|
||||
*/
|
||||
export function isPhone(s) {
|
||||
return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
|
||||
// return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
|
||||
return /^([0-9-]{0,15})$/.test(s)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -81,4 +82,4 @@ export function dutyCode(s) {
|
||||
*/
|
||||
export function number(s) {
|
||||
return /^[0-9]*$/.test(s)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,6 +251,8 @@ export default {
|
||||
method = 'put'
|
||||
}
|
||||
const formData = Object.assign(this.model, values)
|
||||
// 用户昵称 默认等于单位全称
|
||||
formData.realname = formData.companyName
|
||||
let encrypt = new JSEncrypt()
|
||||
encrypt.setPublicKey(that.encryptedString)
|
||||
formData.standardPhone = encrypt.encrypt(values.standardPhone)
|
||||
|
||||
@@ -51,6 +51,9 @@
|
||||
|
||||
<!-- 操作按钮区域 -->
|
||||
<div class="table-operator">
|
||||
<div class="notice-msg">
|
||||
附加证书需求,请转至“证书管理”工作区提交申请。本页面仅提供数据查询。
|
||||
</div>
|
||||
<!-- <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>-->
|
||||
</div>
|
||||
|
||||
@@ -303,4 +306,8 @@ export default {
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
.notice-msg{
|
||||
color: red;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -235,11 +235,11 @@ export default {
|
||||
align: 'center',
|
||||
dataIndex: 'paymentAmount'
|
||||
},
|
||||
{
|
||||
title: '网员服务费',
|
||||
align: 'center',
|
||||
dataIndex: 'serviceCharge'
|
||||
},
|
||||
// {
|
||||
// title: '网员服务费',
|
||||
// align: 'center',
|
||||
// dataIndex: 'serviceCharge'
|
||||
// },
|
||||
// {
|
||||
// title:'证书个数',
|
||||
// align:"center",
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<a-form :form="form" style="margin-left: 10px">
|
||||
<a-divider orientation="left">
|
||||
缴费信息<font color="red">(缴费时长满5年才可申请证书)</font>
|
||||
缴费信息<font color="red">(缴费时长5年可绑定两张证书)</font>
|
||||
<span
|
||||
v-if="isMember === 'member'"
|
||||
class="charge-notice"
|
||||
@@ -60,7 +60,7 @@
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-row class="payment-table">
|
||||
<a-col :span="1"></a-col>
|
||||
<a-col :span="22">
|
||||
<table class="table" border="1">
|
||||
@@ -82,6 +82,7 @@
|
||||
:trigger-change="true"
|
||||
dictCode="payment_time"
|
||||
placeholder="请选择缴费时长"
|
||||
:get-popup-container="(node) => node.parentNode || document.body"
|
||||
style="width: 140px" />
|
||||
</a-form-item>
|
||||
</td>
|
||||
@@ -100,7 +101,7 @@
|
||||
</a-form-item>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- <tr>
|
||||
<td>网员服务费</td>
|
||||
<td>
|
||||
<span>1年</span>
|
||||
@@ -118,7 +119,7 @@
|
||||
style="width: 180px" />
|
||||
</a-form-item>
|
||||
</td>
|
||||
</tr>
|
||||
</tr>-->
|
||||
</table>
|
||||
</a-col>
|
||||
<a-col :span="1"></a-col>
|
||||
@@ -329,8 +330,8 @@
|
||||
|
||||
<!-- 证书信息 -->
|
||||
<div v-if="typeFlag || memberType === 1 ">
|
||||
<a-divider orientation="left">证书需求</a-divider>
|
||||
<span>申请证书</span>
|
||||
<a-divider orientation="left">绑定证书</a-divider>
|
||||
<!-- <span>申请证书</span>-->
|
||||
<div v-if="checkFlag||detailFlag">
|
||||
|
||||
</div>
|
||||
@@ -381,6 +382,7 @@
|
||||
<a-select-option value="1">是</a-select-option>
|
||||
<a-select-option value="0">否</a-select-option>
|
||||
</a-select>
|
||||
<span v-else> — </span>
|
||||
</template>
|
||||
</a-table>
|
||||
<div style="position: relative;top: 20px;" v-if="certificatesNum>0">
|
||||
@@ -694,13 +696,13 @@ export default {
|
||||
payTime: '1/5',
|
||||
paymentType: '',
|
||||
payNumber: ''
|
||||
},
|
||||
}/*,
|
||||
{
|
||||
payCategory: '网员服务费',
|
||||
payTime: '1',
|
||||
paymentType: '',
|
||||
payNumber: ''
|
||||
}
|
||||
}*/
|
||||
],
|
||||
// 是否是添加功能
|
||||
addFlag: false,
|
||||
@@ -1039,6 +1041,8 @@ export default {
|
||||
} else {
|
||||
formData.paymentType = 0
|
||||
}
|
||||
// 客户要去掉网员服务费字段,但是后端没有去掉校验,所以前端写死
|
||||
formData.serviceCharge = 0
|
||||
httpAction(httpurl, formData, method).then((res) => {
|
||||
if (res.success) {
|
||||
that.$message.success(res.message)
|
||||
@@ -1090,6 +1094,8 @@ export default {
|
||||
}
|
||||
this.model.certificatesNum = this.selectedRowKeys.length
|
||||
const formData = Object.assign(this.model, values)
|
||||
// 客户要去掉网员服务费字段,但是后端没有去掉校验,所以前端写死
|
||||
formData.serviceCharge = 0
|
||||
if (this.typeFlag) {
|
||||
formData.paymentType = 1
|
||||
} else {
|
||||
@@ -1466,4 +1472,8 @@ export default {
|
||||
/deep/ .ant-form-item-label {
|
||||
width: 145px !important;
|
||||
}
|
||||
// 会员缴费表格的样式修改,防止缴费年限下拉框被遮挡
|
||||
.payment-table{
|
||||
z-index: 10;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -27,15 +27,15 @@
|
||||
</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 @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">
|
||||
@@ -303,6 +303,8 @@ import { getFileAccessHttpUrl } from '../../../api/memberManage'
|
||||
import { DisabledAuthFilterMixin } from '@/mixins/DisabledAuthFilterMixin'
|
||||
import ChangeCompanyModal from './modules/ChangeCompanyModal'
|
||||
import pick from 'lodash.pick'
|
||||
import {phoneReg, isPhone} from '@/utils/validate'
|
||||
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
import Vue from 'vue'
|
||||
|
||||
@@ -618,7 +620,22 @@ export default {
|
||||
// 更新变更
|
||||
getChangeHistoryData() {
|
||||
|
||||
}
|
||||
},
|
||||
/*
|
||||
* 验证发票信息-电话号码 的正确性
|
||||
* */
|
||||
handleInvoicePhoneCheck(rule, value, callback) {
|
||||
if (!value) {
|
||||
callback(new Error('请输入电话号码'))
|
||||
return
|
||||
} else {
|
||||
if (phoneReg(value) || isPhone(value)) {
|
||||
callback()
|
||||
} else {
|
||||
callback(new Error('请输入正确格式的电话号码'))
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
console.log('&&*****会员信息****')
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<a-card style="width: 100%;height: 100%;text-align: left;">
|
||||
<div class="register-result-content">
|
||||
<result
|
||||
:isSuccess="true"
|
||||
:content="false"
|
||||
:title="email">
|
||||
|
||||
<template slot="action">
|
||||
<a-button size="large" style="margin-left: 8px" @click="goHomeHandle">返回登录页</a-button>
|
||||
</template>
|
||||
|
||||
</result>
|
||||
</div>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Result from '@/views/result/Result'
|
||||
|
||||
export default {
|
||||
name: 'MemberRegisterResult',
|
||||
components: {
|
||||
Result
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
form: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
email() {
|
||||
const v = this.form ? this.form.username || this.form.mobile : ' XXX '
|
||||
// const title = `申请表提交成功,等待标协管理员审核,审核结果将24小时内发送至邮箱。`
|
||||
const title = `感谢您的关注!您的申请已收到,请耐心等待系统审核,24小时内您将收到我们发至预留联系人电子邮箱的邮件,请注意查收!`
|
||||
// eslint-disable-next-line vue/no-side-effects-in-computed-properties
|
||||
this.username = v
|
||||
return title
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.form = this.$route.params
|
||||
},
|
||||
methods: {
|
||||
goHomeHandle() {
|
||||
const params = {}
|
||||
params.username = this.form.username
|
||||
params.password = this.form.password
|
||||
this.$router.push({path: '/user/login'})
|
||||
// console.log(params)
|
||||
// this.$router.push({ name: 'login', params })
|
||||
// window.open(`${window._CONFIG['IncomePaymentsLoginUrl']}/user/login`, '_self')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
/deep/ .ant-card {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
/deep/ .ant-card-body {
|
||||
padding: 0 !important;
|
||||
height: 100%;
|
||||
background: #F0F2F5;
|
||||
}
|
||||
.register-result-content{
|
||||
background: #fff;
|
||||
width: calc(100% - 40px);
|
||||
height: calc(100% - 40px);
|
||||
margin: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/deep/.result{
|
||||
margin-bottom: 20px;
|
||||
width: 60%;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user