From a215332de67f865091184fe86a81923cdb9c0846 Mon Sep 17 00:00:00 2001 From: fengchenchen Date: Mon, 13 Dec 2021 20:58:17 +0800 Subject: [PATCH] =?UTF-8?q?[update]-=E4=BC=81=E4=B8=9A=E7=AB=AF=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=A0=87=E5=8D=8F=E4=BC=9A=E5=91=98-=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E4=BF=A1=E6=81=AF=E3=80=81=E4=BC=9A=E5=91=98=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/development_address_config.js | 7 +- public/production_address_config.js | 8 +- src/api/memberManage.js | 179 ++ src/api/standardsAssociationApi.js | 45 + src/components/jero/JImageUpload.vue | 12 + .../standardsAssociation/JImageUpload.vue | 257 +++ .../standardsAssociation.md | 1 + src/mixins/DisabledAuthFilterMixin.js | 19 + src/mixins/JeroListMixin.js | 4 +- src/router/index.js | 1 + src/utils/memberRequest.js | 172 ++ src/views/standardsAssociation/BasicInfo.vue | 137 +- .../standardsAssociation/MemberManagement.vue | 381 +++- .../memberInfo/CertificateInfo.vue | 241 +++ .../memberInfo/CompanyNameApplyRecord.vue | 239 +++ .../memberInfo/DownloadRecord.vue | 130 ++ .../memberInfo/MemberInfo.vue | 636 +++++++ .../memberInfo/PaymentInfo.vue | 241 +++ .../memberInfo/modules/ChangeApproveModal.vue | 295 +++ .../memberInfo/modules/ChangeCompanyModal.vue | 177 ++ .../memberInfo/modules/MemberInfoModal.vue | 1627 +++++++++++++++++ .../memberInfo/modules/PreViewImgModal.vue | 68 + .../memberInfo/modules/TableComponent.vue | 142 ++ 23 files changed, 5007 insertions(+), 12 deletions(-) create mode 100644 src/api/memberManage.js create mode 100644 src/api/standardsAssociationApi.js create mode 100644 src/components/standardsAssociation/JImageUpload.vue create mode 100644 src/components/standardsAssociation/standardsAssociation.md create mode 100644 src/mixins/DisabledAuthFilterMixin.js create mode 100644 src/utils/memberRequest.js create mode 100644 src/views/standardsAssociation/memberInfo/CertificateInfo.vue create mode 100644 src/views/standardsAssociation/memberInfo/CompanyNameApplyRecord.vue create mode 100644 src/views/standardsAssociation/memberInfo/DownloadRecord.vue create mode 100644 src/views/standardsAssociation/memberInfo/MemberInfo.vue create mode 100644 src/views/standardsAssociation/memberInfo/PaymentInfo.vue create mode 100644 src/views/standardsAssociation/memberInfo/modules/ChangeApproveModal.vue create mode 100644 src/views/standardsAssociation/memberInfo/modules/ChangeCompanyModal.vue create mode 100644 src/views/standardsAssociation/memberInfo/modules/MemberInfoModal.vue create mode 100644 src/views/standardsAssociation/memberInfo/modules/PreViewImgModal.vue create mode 100644 src/views/standardsAssociation/memberInfo/modules/TableComponent.vue diff --git a/public/development_address_config.js b/public/development_address_config.js index e790313..b609370 100644 --- a/public/development_address_config.js +++ b/public/development_address_config.js @@ -10,8 +10,13 @@ window._CONFIG["staticDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/d window._CONFIG["pdfDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/pdf/pdfPreviewIframe"; window._CONFIG["casPrefixUrl"] = "http://cas.example.org:8443/cas"; // 预览文件地址 -window._CONFIG["onlinePreviewDomainURL"] = "http://localhost:8012/onlinePreview"; +window._CONFIG["onlinePreviewDomainURL"] = "http://127.0.0.1:8012/onlinePreview"; // 会议管理报名二维码地址 window._CONFIG['singUpQRCodeURL'] = 'http://localhost:3000/signupentrance' +// 路由转发 -会员系统的路由转发前缀 +window._CONFIG["memberURL"] = "/memberApi"; +// 会员系统的静态文件的地址 +window._CONFIG["memberStaticDomainURL"] = window._CONFIG["memberURL"] + "/sys/common/static"; +window._CONFIG["memberDomianWebSocketURL"] = "http://127.0.0.1:9000/memberApi"; diff --git a/public/production_address_config.js b/public/production_address_config.js index 38763a7..659c110 100644 --- a/public/production_address_config.js +++ b/public/production_address_config.js @@ -4,15 +4,19 @@ window._CONFIG = {}; window._CONFIG["domianURL"] = "/jero-boot"; // 路由转发 devServer // websocket连接的地址 -window._CONFIG["domianWebSocketURL"] = "http://10.10.10.46:8077/jero-boot"; +window._CONFIG["domianWebSocketURL"] = "http://139.9.235.66:1015/jero-boot"; // 单点登录地址 window._CONFIG["staticDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/download"; window._CONFIG["pdfDomainURL"] = window._CONFIG["domianURL"] + "/sys/common/pdf/pdfPreviewIframe"; window._CONFIG["casPrefixUrl"] = "http://cas.example.org:8443/cas"; // 预览文件地址 -window._CONFIG["onlinePreviewDomainURL"] = "http://10.10.10.46:8012/onlinePreview"; +window._CONFIG["onlinePreviewDomainURL"] = "http://139.9.235.66:8012/onlinePreview"; // 会议管理报名二维码地址 window._CONFIG['singUpQRCodeURL'] = 'http://10.10.10.46:8055/signupentrance' +// 路由转发 -会员系统的路由转发前缀 +window._CONFIG["memberURL"] = "/memberApi"; +// 会员系统的静态文件的地址 +window._CONFIG["memberStaticDomainURL"] = window._CONFIG["memberURL"] + "/sys/common/static"; diff --git a/src/api/memberManage.js b/src/api/memberManage.js new file mode 100644 index 0000000..ecd09da --- /dev/null +++ b/src/api/memberManage.js @@ -0,0 +1,179 @@ +import Vue from 'vue' +import { axios } from '@/utils/memberRequest' + +//post +export function postAction(url,parameter) { + return axios({ + url: url, + method:'post' , + data: parameter + }) +} + +//post method= {post | put} +export function httpAction(url,parameter,method) { + return axios({ + url: url, + method:method , + data: parameter + }) +} + +//put +export function putAction(url,parameter) { + return axios({ + url: url, + method:'post', + data: parameter + }) +} + +//get +export function getAction(url,parameter) { + return axios({ + url: url, + method: 'get', + params: parameter + }) +} + +//deleteAction +export function deleteAction(url,parameter) { + return axios({ + url: url, + method: 'delete', + params: parameter + }) +} + + +/** + * 下载文件 用于excel导出 + * @param url + * @param parameter + * @returns {*} + */ +export function downFile(url,parameter){ + return axios({ + url: url, + params: parameter, + method:'get' , + responseType: 'blob' + }) +} + +/** + * 通过A标签下载文件的通用方法 + * @param data--接口返回的数据 + * @param fileName --下载文件的名称 + */ +export function downloadFileByA(data, fileName) { + if (!data || data.size === 0) { + Vue.prototype['$message'].warning('文件下载失败') + return + } + // 当没有返回数据或者返回错误信息的时候,对数据进行解析后提示 + if (!data || data.type === 'application/json') { + const reader = new FileReader() + reader.readAsText(data) + // 处理load事件。该事件在读取操作完成时触发 + reader.onload = e => { + // 解析返回的值 + const res = JSON.parse(e.target.result) + // 异常信息抛出 + if (!res.success) { + Vue.prototype['$message'].warning(res.message || '文件下载失败') + } + } + return + } + // if (!data || data.size === 0) { + // Vue.prototype['$message'].warning('文件下载失败') + // return + // } + if (typeof window.navigator.msSaveBlob !== 'undefined') { + window.navigator.msSaveBlob(new Blob([data]), fileName) + } else { + let url = window.URL.createObjectURL(new Blob([data])) + let link = document.createElement('a') + link.style.display = 'none' + link.href = url + link.setAttribute('download', fileName) + document.body.appendChild(link) + link.click() + document.body.removeChild(link) //下载完成移除元素 + window.URL.revokeObjectURL(url) //释放掉blob对象 + } +} + +/** + * get请求下载文件 + * @param url 文件路径 + * @param fileName 文件名 + * @param parameter + * @returns {*} + */ +export function downloadFile(url, fileName, parameter) { + return downFile(url, parameter).then((data) => { + // 调用a标签下载文件的方法 + downloadFileByA(data, fileName) + }) +} + +/** + * post下载文件 + * @param url 文件路径 + * @param fileName 文件名 + * @param parameter + * @returns {*} + */ +export function downloadPostFile(url, fileName, parameter) { + return axios({ + url: url, + data: parameter, + method: 'post', + responseType: 'blob' + }).then((data) => { + // 调用a标签下载文件的方法 + downloadFileByA(data, fileName) + }) +} + +/** + * 文件上传 用于富文本上传图片 + * @param url + * @param parameter + * @returns {*} + */ +export function uploadAction(url,parameter){ + return axios({ + url: url, + data: parameter, + method:'post' , + headers: { + 'Content-Type': 'multipart/form-data', // 文件上传 + }, + }) +} + +/** + * 获取文件服务访问路径 + * @param avatar + * @param subStr + * @returns {*} + */ +export function getFileAccessHttpUrl(avatar,subStr) { + if(!subStr) subStr = 'http' + try { + if(avatar && avatar.startsWith(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 + } + } + }catch(err){ + return + } +} diff --git a/src/api/standardsAssociationApi.js b/src/api/standardsAssociationApi.js new file mode 100644 index 0000000..cd6ad1e --- /dev/null +++ b/src/api/standardsAssociationApi.js @@ -0,0 +1,45 @@ + +import Vue from 'vue' +// eslint-disable-next-line no-unused-vars +import { getAction as incomeGetAction, postAction as incomePostAction } from '@api/manage' +// eslint-disable-next-line no-unused-vars +import { getAction, postAction } from '@api/memberManage' + +import { ACCESS_TOKEN } from '@/store/mutation-types' + +const TokenKey = 'X-Access-Token' +// 标协会员-基本信息-调用来款系统的接口 +const queryCommonProjectById = (param) => incomeGetAction('/project/payCommonProject/queryCompanyById', param) + +// pdf预览网址 +const previewPdf = (file) => { + // const url = `${window._CONFIG['memberURL']}/sys/common/static/${id}?type=view&${TokenKey}=${Vue.ls.get(ACCESS_TOKEN)}` + // 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 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)}` + return url +} + +// 查询会员是否有批复文号 +const queryApprovalNo = (params) => getAction('/memberInfo/memberInfo/getApprovalMember', params) + +/** + * 获取加密字符串,并对结果进行缓存 + */ +const getEncryptedString = () => getAction('/sys/getRSAPublicKey', {}) + +// 通过文件的id获取文件的名称 +const getFilesByIds = (params) => getAction('/sys/common/static/getFilesByIds', params) + + +export { + queryCommonProjectById, + queryApprovalNo, + previewPdf, + getEncryptedString, + getFilesByIds +} diff --git a/src/components/jero/JImageUpload.vue b/src/components/jero/JImageUpload.vue index 646d08e..830254c 100644 --- a/src/components/jero/JImageUpload.vue +++ b/src/components/jero/JImageUpload.vue @@ -123,6 +123,13 @@ this.headers = {'X-Access-Token':token} }, methods:{ + blobToBase64(blob, callback) { + let a = new FileReader() + a.onload = function(e) { + callback(e.target.result) + } + a.readAsDataURL(blob) + }, async initFileList(paths){ if(!paths || paths.length === 0){ this.fileList = [] @@ -229,6 +236,11 @@ if(this.fileList.length>0){ let url = this.fileList[this.fileList.length-1].url // console.log( getFileAccessHttpUrl(url),'url') + let img = document.createElement('img') + img.src = getFileAccessHttpUrl(url) + img.onload = function(e) { + (e.target.result) + } return getFileAccessHttpUrl(url) } }, diff --git a/src/components/standardsAssociation/JImageUpload.vue b/src/components/standardsAssociation/JImageUpload.vue new file mode 100644 index 0000000..3c4bf07 --- /dev/null +++ b/src/components/standardsAssociation/JImageUpload.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/src/components/standardsAssociation/standardsAssociation.md b/src/components/standardsAssociation/standardsAssociation.md new file mode 100644 index 0000000..9951e83 --- /dev/null +++ b/src/components/standardsAssociation/standardsAssociation.md @@ -0,0 +1 @@ +###### 该文件夹 存储会员系统 使用的组件,主要是对应url的不同 diff --git a/src/mixins/DisabledAuthFilterMixin.js b/src/mixins/DisabledAuthFilterMixin.js new file mode 100644 index 0000000..4e64e2e --- /dev/null +++ b/src/mixins/DisabledAuthFilterMixin.js @@ -0,0 +1,19 @@ +/** + * + */ +import { disabledAuthFilter } from '@/utils/authFilter' + +export const DisabledAuthFilterMixin = { + props: ['formData'], + data() { + return { + + } + }, + methods: { + isDisabledAuth(code) { + return disabledAuthFilter(code, this.formData) + } + } + +} diff --git a/src/mixins/JeroListMixin.js b/src/mixins/JeroListMixin.js index fde2066..749ddc4 100644 --- a/src/mixins/JeroListMixin.js +++ b/src/mixins/JeroListMixin.js @@ -20,6 +20,8 @@ export const JeroListMixin = { lastQueryParam: {}, /* 数据源 */ dataSource:[], + // 做一步转换,方便会员系统的使用 + getAction, /* 分页参数 */ ipagination:{ current: 1, @@ -85,7 +87,7 @@ export const JeroListMixin = { } var params = this.getQueryParams()//查询条件 this.loading = true - getAction(this.url.list, params).then((res) => { + this.getAction(this.url.list, params).then((res) => { if (res.success) { //update-begin---author:zhangyafei Date:20201118 for:适配不分页的数据列表------------ this.dataSource = res.result.records||res.result diff --git a/src/router/index.js b/src/router/index.js index 32f6f6e..9f0028f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -13,6 +13,7 @@ Router.prototype.push = function push(location, onResolve, onReject) { export default new Router({ mode: 'history', // eslint-disable-next-line no-undef + // base: process.env.BASE_URL + (process.env.NODE_ENV === 'production' ? '/enterprise' : '/enterprise'), base: process.env.BASE_URL, scrollBehavior: () => ({ y: 0 }), routes: constantRouterMap diff --git a/src/utils/memberRequest.js b/src/utils/memberRequest.js new file mode 100644 index 0000000..3c46e0c --- /dev/null +++ b/src/utils/memberRequest.js @@ -0,0 +1,172 @@ +/** + * @Description: 会员系统请求接口的 封装 和request.js 只差在了 baseURL + * @author:fengchenchen @Date:2021-12-13 + */ + +import Vue from 'vue' +import axios from 'axios' +import store from '@/store' +import {Modal, notification} from 'ant-design-vue' +import { ACCESS_TOKEN, TENANT_ID } from '@/store/mutation-types' + +/** + * 【指定 axios的 baseURL】 + * 如果手工指定 baseURL: '/jero-boot' + * 则映射后端域名,通过 vue.config.js + * @type {*|string} + */ +let apiBaseUrl = window._CONFIG['memberURL'] || '/memberApi' +//console.log("apiBaseUrl= ",apiBaseUrl) +// 创建 axios 实例 +const service = axios.create({ + //baseURL: '/jero-boot', + baseURL: apiBaseUrl, // api base_url + timeout: 9000 // 请求超时时间 +}) + +const err = (error) => { + if (error.response) { + let data = error.response.data + const token = Vue.ls.get(ACCESS_TOKEN) + console.log('------异常响应------',token) + console.log('------异常响应------',error.response.status) + switch (error.response.status) { + case 403: + notification.error({ message: '系统提示', description: '拒绝访问',duration: 4}) + break + case 500: + console.log('------error.response------',error.response) + // update-begin- --- author:liusq ------ date:20200910 ---- for:处理Blob情况---- + // eslint-disable-next-line no-case-declarations + let type=error.response.request.responseType + if(type === 'blob'){ + blobToJson(data) + break + } + // update-end- --- author:liusq ------ date:20200910 ---- for:处理Blob情况---- + //notification.error({ message: '系统提示', description:'Token失效,请重新登录!',duration: 4}) + if(token && data.message.includes('Token失效')){ + // update-begin- --- author:scott ------ date:20190225 ---- for:Token失效采用弹框模式,不直接跳转---- + Modal.error({ + title: '登录已过期', + content: '很抱歉,登录已过期,请重新登录', + okText: '重新登录', + mask: false, + onOk: () => { + store.dispatch('Logout').then(() => { + Vue.ls.remove(ACCESS_TOKEN) + try { + let path = window.document.location.pathname + console.log('location pathname -> '+path) + if(path!='/' && path.indexOf('/user/login')==-1){ + window.location.reload() + } + }catch (e) { + window.location.reload() + } + }) + } + }) + // update-end- --- author:scott ------ date:20190225 ---- for:Token失效采用弹框模式,不直接跳转---- + } + break + case 404: + notification.error({ message: '系统提示', description:'很抱歉,资源未找到!',duration: 4}) + break + case 504: + notification.error({ message: '系统提示', description: '网络超时'}) + break + case 401: + notification.error({ message: '系统提示', description:'未授权,请重新登录',duration: 4}) + if (token) { + store.dispatch('Logout').then(() => { + setTimeout(() => { + window.location.reload() + }, 1500) + }) + } + break + default: + notification.error({ + message: '系统提示', + description: data.message, + duration: 4 + }) + break + } + } + return Promise.reject(error) +} + +// request interceptor +service.interceptors.request.use(config => { + // const token = Vue.ls.get(ACCESS_TOKEN) + //TODO 暂时将token写成固定值,后续再做动态 + const token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzkzNzY3MzcsInVzZXJuYW1lIjoiMGI4ZDQ2YTBiZTI0NGJlZGI5ZDI1Y2Y5ZmQ5OTc3MTcifQ.FvA0UgdKJm1m0rbkaS4CX72-GozZVPDmcZ296FvaBfQ' + if (token) { + config.headers[ 'X-Access-Token' ] = token // 让每个请求携带自定义 token 请根据实际情况自行修改 + } + //update-begin-author:taoyan date:2020707 for:多租户 + let tenantid = Vue.ls.get(TENANT_ID) + if (!tenantid) { + tenantid = 0 + } + config.headers[ 'tenant_id' ] = tenantid + //update-end-author:taoyan date:2020707 for:多租户 + if(config.method=='get'){ + if(config.url.indexOf('sys/dict/getDictItems')<0){ + config.params = { + _t: Date.parse(new Date())/1000, + ...config.params + } + } + } + return config +},(error) => { + return Promise.reject(error) +}) + +// response interceptor +service.interceptors.response.use((response) => { + return response.data +}, err) + +/** + * Blob解析 + * @param data + */ +function blobToJson(data) { + let fileReader = new FileReader() + let token = Vue.ls.get(ACCESS_TOKEN) + fileReader.onload = function() { + try { + let jsonData = JSON.parse(this.result) // 说明是普通对象数据,后台转换失败 + console.log('jsonData',jsonData) + if (jsonData.status === 500) { + console.log('token----------》',token) + if(token && jsonData.message.includes('Token失效')){ + Modal.error({ + title: '登录已过期', + content: '很抱歉,登录已过期,请重新登录', + okText: '重新登录', + mask: false, + onOk: () => { + store.dispatch('Logout').then(() => { + Vue.ls.remove(ACCESS_TOKEN) + window.location.reload() + }) + } + }) + } + } + } catch (err) { + // 解析成对象失败,说明是正常的文件流 + console.log('blob解析fileReader返回err',err) + } + } + fileReader.readAsText(data) +} + +export { + service as axios +} diff --git a/src/views/standardsAssociation/BasicInfo.vue b/src/views/standardsAssociation/BasicInfo.vue index a90f8a3..314a1a2 100644 --- a/src/views/standardsAssociation/BasicInfo.vue +++ b/src/views/standardsAssociation/BasicInfo.vue @@ -1,13 +1,142 @@ - \ No newline at end of file + .panel-cell{ + flex: 1; + width: 0; + height: 419px; + //padding: 10px; + background: #ffffff; + border-radius: 4px; + box-shadow: -2px 0px 10px 10px rgba(51, 51, 51, 0.10); + background: #ffffff; + .title { + height: 56px; + line-height: 56px; + background: #fff; + border-bottom: 2px solid #f2f2f2; + padding: 0 20px; + font-size: 16px; + } + .content{ + padding: 10px; + // 每行数据 + .info-row{ + padding: 10px; + display: flex; + flex-direction: row; + align-items: baseline; + & > span { + display: inline-block; + white-space: pre-wrap; + } + .label-span{ + width: 100px; + } + .value-span{ + width: 0; + flex: 1; + overflow: hidden; + white-space: pre-wrap; + word-break: break-all; + } + } + } + } + .panel-cell + .panel-cell{ + margin-left: 10px; + } +} + + diff --git a/src/views/standardsAssociation/MemberManagement.vue b/src/views/standardsAssociation/MemberManagement.vue index 97e3d9d..eb0a051 100644 --- a/src/views/standardsAssociation/MemberManagement.vue +++ b/src/views/standardsAssociation/MemberManagement.vue @@ -1,13 +1,386 @@ + - \ No newline at end of file + diff --git a/src/views/standardsAssociation/memberInfo/CertificateInfo.vue b/src/views/standardsAssociation/memberInfo/CertificateInfo.vue new file mode 100644 index 0000000..e9efbd3 --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/CertificateInfo.vue @@ -0,0 +1,241 @@ + + + + + + diff --git a/src/views/standardsAssociation/memberInfo/CompanyNameApplyRecord.vue b/src/views/standardsAssociation/memberInfo/CompanyNameApplyRecord.vue new file mode 100644 index 0000000..f5d93ab --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/CompanyNameApplyRecord.vue @@ -0,0 +1,239 @@ + + + + + + diff --git a/src/views/standardsAssociation/memberInfo/DownloadRecord.vue b/src/views/standardsAssociation/memberInfo/DownloadRecord.vue new file mode 100644 index 0000000..bd46569 --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/DownloadRecord.vue @@ -0,0 +1,130 @@ + + + + + + diff --git a/src/views/standardsAssociation/memberInfo/MemberInfo.vue b/src/views/standardsAssociation/memberInfo/MemberInfo.vue new file mode 100644 index 0000000..122f9ea --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/MemberInfo.vue @@ -0,0 +1,636 @@ + + + + + + diff --git a/src/views/standardsAssociation/memberInfo/PaymentInfo.vue b/src/views/standardsAssociation/memberInfo/PaymentInfo.vue new file mode 100644 index 0000000..c9bdabc --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/PaymentInfo.vue @@ -0,0 +1,241 @@ + + + + + + diff --git a/src/views/standardsAssociation/memberInfo/modules/ChangeApproveModal.vue b/src/views/standardsAssociation/memberInfo/modules/ChangeApproveModal.vue new file mode 100644 index 0000000..9d5e66b --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/modules/ChangeApproveModal.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/src/views/standardsAssociation/memberInfo/modules/ChangeCompanyModal.vue b/src/views/standardsAssociation/memberInfo/modules/ChangeCompanyModal.vue new file mode 100644 index 0000000..728ef2c --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/modules/ChangeCompanyModal.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/src/views/standardsAssociation/memberInfo/modules/MemberInfoModal.vue b/src/views/standardsAssociation/memberInfo/modules/MemberInfoModal.vue new file mode 100644 index 0000000..00310a4 --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/modules/MemberInfoModal.vue @@ -0,0 +1,1627 @@ + + + diff --git a/src/views/standardsAssociation/memberInfo/modules/PreViewImgModal.vue b/src/views/standardsAssociation/memberInfo/modules/PreViewImgModal.vue new file mode 100644 index 0000000..c8309ba --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/modules/PreViewImgModal.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/views/standardsAssociation/memberInfo/modules/TableComponent.vue b/src/views/standardsAssociation/memberInfo/modules/TableComponent.vue new file mode 100644 index 0000000..32e4215 --- /dev/null +++ b/src/views/standardsAssociation/memberInfo/modules/TableComponent.vue @@ -0,0 +1,142 @@ + + + + +