diff --git a/src/assets/css/main.css b/src/assets/css/main.css index 38ca490..d98ddcf 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -432,6 +432,9 @@ li { .el-switch__label span { font-size: 12px; } +.m-b-20 { + margin-bottom: 20px; +} @media (max-width: 720px) { .el-message { min-width: auto !important; diff --git a/src/assets/img/avatar.png b/src/assets/img/avatar.png new file mode 100644 index 0000000..2b5ca9f Binary files /dev/null and b/src/assets/img/avatar.png differ diff --git a/src/assets/img/close.png b/src/assets/img/close.png new file mode 100644 index 0000000..24e36d4 Binary files /dev/null and b/src/assets/img/close.png differ diff --git a/src/assets/img/mini-code.png b/src/assets/img/mini-code.png deleted file mode 100644 index 72678f4..0000000 Binary files a/src/assets/img/mini-code.png and /dev/null differ diff --git a/src/assets/img/mini-code1.png b/src/assets/img/mini-code1.png deleted file mode 100644 index 0e5754a..0000000 Binary files a/src/assets/img/mini-code1.png and /dev/null differ diff --git a/src/assets/img/mini.jpg b/src/assets/img/mini.jpg new file mode 100644 index 0000000..a4e7a32 Binary files /dev/null and b/src/assets/img/mini.jpg differ diff --git a/src/components/Sidebar.vue b/src/components/Sidebar.vue index 2a48182..928cc82 100644 --- a/src/components/Sidebar.vue +++ b/src/components/Sidebar.vue @@ -82,6 +82,11 @@ export default { index: '/data', title: '数据管理' }, + { + icon: 'el-icon-box', + index: '/match', + title: '大赛管理' + }, { icon: 'el-icon-office-building', index: '/configure', diff --git a/src/router/index.js b/src/router/index.js index 43a628c..4627f66 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -117,6 +117,26 @@ let router = new Router({ component: () => import( '../views/data/Data.vue'), // meta: { title: '数据管理' } }, + { + path: '/match', + component: () => import( '../views/match/list'), + // meta: { title: '数据管理' } + }, + { + path: '/addMatch', + component: () => import( '../views/match/add'), + // meta: { title: '数据管理' } + }, + { + path: '/matchManage', + component: () => import( '../views/match/manage'), + // meta: { title: '数据管理' } + }, + { + path: '/noticeDetail', + component: () => import( '../views/match/manage/noticeDetail'), + // meta: { title: '数据管理' } + }, { path: '/system', component: () => import( '../views/system'), diff --git a/src/setting.js b/src/setting.js index f688425..70e8e90 100644 --- a/src/setting.js +++ b/src/setting.js @@ -10,8 +10,8 @@ let host = `${location.origin}:9000/` if (isDev) { jumpPath = "http://192.168.31.125:8087/"; // 本地调试-需要启动本地判分点系统 // host = 'http://39.108.250.202:9000/' - // host = 'http://192.168.31.151:9000/'// 榕 - host = 'http://192.168.31.137:9000/'// 赓 + host = 'http://192.168.31.151:9000/'// 榕 + // host = 'http://192.168.31.137:9000/'// 赓 } else if (isPro) { jumpPath = "http://www.huorantech.cn/judgmentPoint/"; } diff --git a/src/store/index.js b/src/store/index.js index 61664fa..733f155 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -21,7 +21,7 @@ const store = new Vuex.Store({ projectFields: {}, btns: [], routes: [], - customerPage: 1 + customerPage: 1, }, actions: { setSystemId({ state,commit },systemId) { diff --git a/src/utils/api.js b/src/utils/api.js index ab882c9..8d880e6 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -274,4 +274,38 @@ export default { queryUserInfoByPhone: `nakadai/partner-team/queryUserInfoByPhone`, getAllTeam: `nakadai/partnerClassification/getAllTeam`, partnerRemoval: `nakadai/partnerAccount/partnerRemoval`, + generateTransferCode: `nakadai/partnerAccount/generateTransferCode`, + transferAdmin: `nakadai/partnerAccount/transferAdmin`, + transferTeam: `nakadai/partnerAccount/transferTeam`, + + // 赛事 + contestPageConditionQueryByNakadai: `occupationlab/enterprise/match/contest/contestPageConditionQueryByNakadai`, + addContest: `occupationlab/enterprise/match/contest/addContest`, + editContest: `occupationlab/enterprise/match/contest/editContest`, + deleteContest: `occupationlab/enterprise/match/contest/deleteContest`, + getContest: `occupationlab/enterprise/match/contest/getContest`, + deleteAnnex: `occupationlab/contest/annex/delete`, + saveAnnex: `occupationlab/contest/annex/save`, + getSchoolsByProvince: `nakadai/nakadai/school/getSchoolsByProvince`, + + // 竞赛进展 + addContestProgress: `occupationlab/enterprise/match/contest-progress/addContestProgress`, + deleteContestProgress: `occupationlab/enterprise/match/contest-progress/deleteContestProgress`, + getContestProgress: `occupationlab/enterprise/match/contest-progress/getContestProgress`, + editContestProgress: `occupationlab/enterprise/match/contest-progress/editContestProgress`, + // 报名人员 + addApplicant: `occupationlab/enterprise/match/applicant/addApplicant`, + disableContests: `occupationlab/enterprise/match/applicant/disableContests`, + excelExport: `occupationlab/enterprise/match/applicant/excelExport`, + queryApplicantByCondition: `occupationlab/enterprise/match/applicant/queryApplicantByCondition`, + disableApplicant: `occupationlab/enterprise/match/applicant/disableApplicant`, + batchExport: `occupationlab/enterprise/match/applicant/batchExport`, + // 赛事公告 + addAnnouncement: `occupationlab/contest/announcement/addAnnouncement`, + amendmentAnnouncement: `occupationlab/contest/announcement/amendmentAnnouncement`, + deleteAnnouncement: `occupationlab/contest/announcement/deleteAnnouncement`, + queryAnnouncementByContestId: `occupationlab/contest/announcement/queryAnnouncementByContestId`, + queryAnnouncementDetails: `occupationlab/contest/announcement/queryAnnouncementDetails`, + deleteAnnouncementAnnex: `occupationlab/contestAnnouncementAnnex/delete`, + saveAnnouncementAnnex: `occupationlab/contestAnnouncementAnnex/save`, }; \ No newline at end of file diff --git a/src/views/join/index.vue b/src/views/join/index.vue index a14c8d0..b69fcf8 100644 --- a/src/views/join/index.vue +++ b/src/views/join/index.vue @@ -41,6 +41,7 @@ export default { return { isMobile: util.isMobile(), userName: this.$route.query.userName, + admin: this.$route.query.admin, // 是否是转让超管 form: { id: this.$route.query.accountId, partnerClassificationId: this.$route.query.id, @@ -153,7 +154,7 @@ export default { const { form } = this form.uniqueIdentification = Date.now() this.submiting = true - this.$post(this.api.savePartnerAccount, form).then(res => { + this.$post(this.api[this.admin ? 'transferAdmin' : 'savePartnerAccount'], form).then(res => { this.$router.push('/success') }).catch(res => { this.submiting = false diff --git a/src/views/join/success.vue b/src/views/join/success.vue index b3f96ac..5626206 100644 --- a/src/views/join/success.vue +++ b/src/views/join/success.vue @@ -7,7 +7,7 @@

你已加入城市合伙人计划

请保存并用微信扫以下二维码打开城市合伙人小程序

- + diff --git a/src/views/match/add/index.vue b/src/views/match/add/index.vue new file mode 100644 index 0000000..fbc8036 --- /dev/null +++ b/src/views/match/add/index.vue @@ -0,0 +1,594 @@ + + + + + \ No newline at end of file diff --git a/src/views/match/list/index.vue b/src/views/match/list/index.vue new file mode 100644 index 0000000..304bc45 --- /dev/null +++ b/src/views/match/list/index.vue @@ -0,0 +1,323 @@ + + + + + \ No newline at end of file diff --git a/src/views/match/list/manage/matchDetail.vue b/src/views/match/list/manage/matchDetail.vue new file mode 100644 index 0000000..ece2024 --- /dev/null +++ b/src/views/match/list/manage/matchDetail.vue @@ -0,0 +1,450 @@ + + + + + \ No newline at end of file diff --git a/src/views/match/manage/index.vue b/src/views/match/manage/index.vue new file mode 100644 index 0000000..2a29cba --- /dev/null +++ b/src/views/match/manage/index.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file diff --git a/src/views/match/manage/matchDetail.vue b/src/views/match/manage/matchDetail.vue new file mode 100644 index 0000000..971243f --- /dev/null +++ b/src/views/match/manage/matchDetail.vue @@ -0,0 +1,641 @@ + + + + + \ No newline at end of file diff --git a/src/views/match/manage/matchProgress.vue b/src/views/match/manage/matchProgress.vue new file mode 100644 index 0000000..b66c238 --- /dev/null +++ b/src/views/match/manage/matchProgress.vue @@ -0,0 +1,238 @@ + + + + + \ No newline at end of file diff --git a/src/views/match/manage/matchSignup.vue b/src/views/match/manage/matchSignup.vue new file mode 100644 index 0000000..2750164 --- /dev/null +++ b/src/views/match/manage/matchSignup.vue @@ -0,0 +1,153 @@ + + + + + \ No newline at end of file diff --git a/src/views/match/manage/notice.vue b/src/views/match/manage/notice.vue new file mode 100644 index 0000000..a83119a --- /dev/null +++ b/src/views/match/manage/notice.vue @@ -0,0 +1,124 @@ + + + + + \ No newline at end of file diff --git a/src/views/match/manage/noticeDetail.vue b/src/views/match/manage/noticeDetail.vue new file mode 100644 index 0000000..c952db3 --- /dev/null +++ b/src/views/match/manage/noticeDetail.vue @@ -0,0 +1,300 @@ + + + + + \ No newline at end of file diff --git a/src/views/order/AddOrder.vue b/src/views/order/AddOrder.vue index 61bb4a5..0806556 100644 --- a/src/views/order/AddOrder.vue +++ b/src/views/order/AddOrder.vue @@ -1556,6 +1556,7 @@ export default { // 城市合伙人人员 getBm() { this.$post(this.api.partnerAccountList, { + type: 1, partnerClassificationId: this.form.teamId, keyWord: '', pageNum: 1, diff --git a/src/views/parner/staff.vue b/src/views/parner/staff.vue index 2f2f7ca..7247540 100644 --- a/src/views/parner/staff.vue +++ b/src/views/parner/staff.vue @@ -14,8 +14,8 @@
-
- +
+
组织架构
添加分类
@@ -99,7 +99,7 @@
- 添加城市合伙人 + 添加城市合伙人
@@ -114,8 +114,9 @@ @@ -123,7 +124,7 @@
- +

链接/二维码失效时间:{{ expireTime }}

城市合伙人 邀请链接

加盟商、合作伙伴可以通过这个链接加入 城市合伙人计划

@@ -135,6 +136,29 @@

加盟商、合作伙伴可以通过这个二维码加入 城市合伙人计划

+ + +
+ 转给团队成员 + 邀请外部人员 +
+
+ + + + + 取 消 + 确 定 + + @@ -253,7 +277,12 @@ export default { expireTime: '', curTeamId: '', submiting: false, // 新增编辑防抖标识 - setKey: '' + setKey: '', + transferVisible: false, + chooseVisible: false, + members: [], + choosePartnerId: '', + curRow: '' }; }, watch: { @@ -445,7 +474,7 @@ export default { this.$confirm("确定要删除吗?", "提示", { type: "warning" }).then(() => { - this.$post(`${this.api.delPartnerAccount}?teamId=${row.partnerClassificationId}`).then(res => { + this.$post(`${this.api.delPartnerAccount}?accountId=${row.accountId}`).then(res => { util.successMsg("删除成功") this.getList() }).catch(res => {}) @@ -465,6 +494,11 @@ export default { }).catch(res => {}) }).catch(() => {}) }, + // 转让超管 + transfer(row) { + this.curRow = row + this.transferVisible = true + }, // 重置密码 resetPassword(row) { const newPwd = Setting.initialPassword @@ -474,30 +508,68 @@ export default { }).catch(res => {}) }).catch(() => {}) }, - // 添加 - add() { - const curNode = this.$refs.orgTree.getCurrentNode() - if (curNode && curNode.isTeam) { - util.warningMsg('请选择分类添加城市合伙人!') + // 显示选择成员 + showChoose() { + this.chooseVisible = true + this.$post(this.api.partnerAccountList, { + type: 1, + partnerClassificationId: this.curRow.partnerClassificationId, + keyWord: '', + pageNum: 1, + pageSize: 10000 + }).then(({ pageList }) => { + this.members = pageList.records + }).catch(err => {}) + }, + // 选择成员提交 + chooseSubmit() { + const { curRow } = this + const id = this.choosePartnerId + const member = this.members.find(e => e.partnerId === id) // 获取选择的成员 + if (member) { + this.$post(this.api.transferTeam, { + adminPartnerId: curRow.partnerId, + adminTeamId: curRow.partnerClassificationId, + memberName: member.userName, + memberPartnerId: member.partnerId, + memberTeamId: member.partnerClassificationId + }).then(({ pageList }) => { + this.chooseVisible = false + this.transferVisible = false + this.initData() + }).catch(err => {}) } else { - const { accountId } = this - // 获取邀请码 - this.$post(`${this.api.generateInvitationCode}?accountId=${accountId}`).then(({ expireTime, invitationCode }) => { - const date = new Date(Date.now() + expireTime * 1000) // 返回的秒,要*1000 - this.expireTime = `${date.getFullYear()}-${util.preZero(date.getMonth() + 1)}-${util.preZero(date.getDate())} ${util.preZero(date.getHours())}:${util.preZero(date.getMinutes())}:${util.preZero(date.getMinutes())}` - this.parnerVisible = true - const cur = this.$refs.orgTree.getCurrentKey() - const link = `${location.origin}${Setting.isDev || Setting.isPro ? '' : '/nakadai'}/#/join?accountId=${accountId}&id=${cur || ''}&isTeam=1` + util.warningMsg('请选择成员!') + } + }, + // 添加 + add(transfer) { + // 非转让超管,不能在团队下加团队 + if (!transfer) { + const curNode = this.$refs.orgTree.getCurrentNode() + if (curNode && curNode.isTeam) return util.warningMsg('请选择分类添加城市合伙人!') + } + const { curRow } = this + const accountId = transfer ? curRow.accountId : this.accountId + // 获取邀请码 + this.$post(`${this.api[transfer ? 'generateTransferCode' : 'generateInvitationCode']}?accountId=${accountId}`).then(({ expireTime }) => { + const date = new Date(Date.now() + expireTime * 1000) // 返回的秒,要*1000 + this.expireTime = `${date.getFullYear()}-${util.preZero(date.getMonth() + 1)}-${util.preZero(date.getDate())} ${util.preZero(date.getHours())}:${util.preZero(date.getMinutes())}:${util.preZero(date.getMinutes())}` + this.parnerVisible = true + const cur = transfer ? curRow.partnerClassificationId : this.$refs.orgTree.getCurrentKey() + const link = `${location.origin}${Setting.isDev || Setting.isPro ? '' : '/nakadai'}/#/join?accountId=${accountId}&id=${cur || ''}${transfer ? '&admin=1' : '&isTeam=1'}` - // 生成二维码 - this.link = link - axios.get(`${this.api.generationQrCode}?url=${encodeURIComponent(link)}`, { - responseType: 'blob' - }).then(({ data }) => { - this.qrcode = window.URL.createObjectURL(data) - }).catch(res => {}) + // 生成二维码 + this.link = link + axios.get(`${this.api.generationQrCode}?url=${encodeURIComponent(link)}`, { + responseType: 'blob' + }).then(({ data }) => { + this.qrcode = window.URL.createObjectURL(data) }).catch(res => {}) - } + }).catch(res => {}) + }, + closeAdd() { + this.initData() }, // 复制链接 copy(e) { @@ -560,4 +632,28 @@ export default { border-radius: 4px; } } +/deep/.choose-dia { + .member-list { + li { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 10px; + } + .info { + display: inline-flex; + align-items: center; + } + img { + width: 40px; + height: 40px; + } + .name { + margin-left: 10px; + } + .el-radio__label { + display: none; + } + } +} \ No newline at end of file