abf5e3a4 by 杨炀

no message

1 parent 12a5d160
1 <template>
2 <!-- <el-config-provider :locale="locale">-->
3 <router-view />
4 <!-- </el-config-provider>-->
5
6 <reset-pwd ref="resetPwdRef" />
7 </template>
8
9 <script setup>
10 import useSettingsStore from '@/store/modules/settings'
11 import { handleThemeStyle } from '@/utils/theme'
12 import { nextTick, onMounted, watch } from 'vue'
13 import useUserStore from '@/store/modules/user'
14 import ResetPwd from '@/views/system/user/profile/components/resetPwd'
15 import { getCurrentInstance } from '@vue/runtime-core'
16 // import { ElConfigProvider } from 'element-plus'
17 // import locale from 'element-plus/lib/locale/lang/zh-cn'
18
19 const userStore = useUserStore()
20 const { proxy } = getCurrentInstance()
21
22 onMounted(() => {
23 document.body.style.setProperty('--el-color-primary', '#453DEA')
24 // 鼠标移动到按钮上方时显示的颜色,默认蓝色,可以和primary设置的颜色不一样
25 document.body.style.setProperty('--el-color-primary-light-3', '#8623FC')
26
27 document.body.style.setProperty('--el-color-success', '#29c490')
28 document.body.style.setProperty('--el-color-success-light-3', '#54d0a6')
29 // danger
30 document.body.style.setProperty('--el-color-danger', '#d51515')
31 document.body.style.setProperty('--el-color-danger-light-3', '#d44')
32 // warning
33 document.body.style.setProperty('--el-color-warning', '#e6a23c')
34 document.body.style.setProperty('--el-color-warning-light-3', '#ebb563')
35
36 nextTick(() => {
37 // 初始化主题样式
38 handleThemeStyle(useSettingsStore().theme)
39 })
40 })
41
42 watch(() => userStore.user?.changePassFlag, (val) => {
43 if (val === '1') {
44 proxy.$modal.confirm('密码长期未更新,请及时更新').then(() => {
45 proxy.$refs['resetPwdRef'].open()
46 })
47 }
48 })
49
50 </script>
51 <style lang="scss">
52 .app-container{
53 background-color: #F5F7F9;
54 padding:20px;
55 min-height: calc(100vh - 85px);
56 }
57
58 /* 搜索栏 */
59 .from-Card{
60 background-color: #fff;
61 padding: 20px;
62 }
63 .btn-card{
64 padding: 20px;
65 background: #fff;
66 border-radius: 10px;
67
68 }
69 /* 表格 */
70 .table{
71 background-color: #fff;
72 padding:0 20px 10px;
73 position: relative;
74
75 }
76
77 .box{
78 background: #fff;
79 border-radius: 5px;
80 padding: 10px;
81 }
82
83 /* 分页 */
84 .foot{
85 background-color: #fff;
86 height: 50px;
87 }
88
89
90 .btn-top{
91 margin-top: 10px;
92 }
93 .el-table{
94 background: url("@/assets/admin/tableBg.png") #F5FBFE no-repeat top;
95 background-color:#F5FBFE!important;
96 background-size: 750px;
97 --el-bg-color:#F5FBFE;
98 --el-table-border-color:#e1e4ec;
99 --el-fill-color-blank:transparent;
100 --el-fill-color-light:#fff;
101 }
102
103 // 审核通过添加背景色
104 .success-row{
105 --el-table-tr-bg-color: rgba(41, 196, 144,.15);
106 }
107
108 .totalCost{
109 font-weight: 700;
110 font-size: 16px;
111 margin-top: 10px;
112 position: absolute;
113 bottom: 30px;
114 left: 20px;
115 z-index: 999;
116
117 span{
118 color: orange;
119 margin-right: 20px;
120 }
121
122 }
123
124 // 禁选背景色
125 .disabled-row{
126 --el-table-tr-bg-color: rgba(36, 37, 37,0.1);
127 }
128 </style>
1 import { createApp } from 'vue'
2
3 import Cookies from 'js-cookie'
4
5 import ElementPlus from 'element-plus'
6 import locale from 'element-plus/lib/locale/lang/zh-cn' // 中文语言
7
8 import '@/assets/styles/index.scss' // global css
9 import App from './App'
10 import store from './store'
11 import router from './router'
12 import directive from './directive' // directive
13
14 // 注册指令
15 import plugins from './plugins' // plugins
16 import { download } from '@/utils/request'
17
18 // svg图标
19 import 'virtual:svg-icons-register'
20 import SvgIcon from '@/components/SvgIcon'
21 import elementIcons from '@/components/SvgIcon/svgicon'
22
23 import './permission' // permission control
24
25 import { useDict } from '@/utils/dict'
26 import { getConfigKey, updateConfigByKey } from '@/api/system/config'
27 import {
28 parseTime,
29 resetForm,
30 addDateRange,
31 handleTree,
32 selectDictLabel,
33 selectDictLabels,
34 fillImgUrl
35 } from '@/utils/ruoyi'
36
37 import VueUeditorWrap from 'vue-ueditor-wrap'
38
39 // 分页组件
40 import Pagination from '@/components/Pagination'
41 // 自定义表格工具组件
42 import RightToolbar from '@/components/RightToolbar'
43 // 富文本组件
44 import Editor from '@/components/Editor'
45 import UEditor from '@/components/UEditor'
46 // 文件上传组件
47 import FileUpload from '@/components/FileUpload'
48 // 图片上传组件
49 import ImageUpload from '@/components/ImageUpload'
50 import ImageUpload2 from '@/components/ImageUpload/index2'
51 // 图片预览组件
52 import ImagePreview from '@/components/ImagePreview'
53 // 自定义树选择组件
54 import TreeSelect from '@/components/TreeSelect'
55 // 字典标签组件
56 import DictTag from '@/components/DictTag'
57
58 import draggable from 'vuedraggable'
59
60 const app = createApp(App)
61
62 // 全局方法挂载
63 app.config.globalProperties.useDict = useDict
64 app.config.globalProperties.getConfigKey = getConfigKey
65 app.config.globalProperties.updateConfigByKey = updateConfigByKey
66 app.config.globalProperties.download = download
67 app.config.globalProperties.parseTime = parseTime
68 app.config.globalProperties.resetForm = resetForm
69 app.config.globalProperties.handleTree = handleTree
70 app.config.globalProperties.addDateRange = addDateRange
71 app.config.globalProperties.selectDictLabel = selectDictLabel
72 app.config.globalProperties.selectDictLabels = selectDictLabels
73 app.config.globalProperties.fillImgUrl = fillImgUrl
74
75 // 全局组件挂载
76 app.component('DictTag', DictTag)
77 app.component('Pagination', Pagination)
78 app.component('TreeSelect', TreeSelect)
79 app.component('FileUpload', FileUpload)
80 app.component('ImageUpload', ImageUpload)
81 app.component('ImageUpload2', ImageUpload2)
82 app.component('ImagePreview', ImagePreview)
83 app.component('RightToolbar', RightToolbar)
84 app.component('Editor', Editor)
85 app.component('UEditor', UEditor)
86 app.component('Draggable', draggable)
87
88 app.use(router)
89 app.use(store)
90 app.use(VueUeditorWrap)
91 app.use(plugins)
92 app.use(elementIcons)
93 app.component('SvgIcon', SvgIcon)
94
95 directive(app)
96
97 // 使用element-plus 并且设置全局的大小
98 app.use(ElementPlus, {
99 locale: locale,
100 // 支持 large、default、small
101 size: Cookies.get('size') || 'default'
102 })
103
104 // 修改 el-dialog 默认点击遮照为不关闭
105 app._context.components.ElDialog.props.closeOnClickModal.default = false
106
107 app.mount('#app')
108
109 if (process.env.NODE_ENV !== 'development') {
110 // disorderCopy()
111 }
...@@ -518,12 +518,6 @@ export const constantRoutes = [ ...@@ -518,12 +518,6 @@ export const constantRoutes = [
518 meta: { title: '缴费清单' } 518 meta: { title: '缴费清单' }
519 }, 519 },
520 { 520 {
521 path: 'list/:id/singleSign',
522 component: () => import('@/viewsPc/match/singleSign'),
523 name: 'singleSign',
524 meta: { title: '个人报名' }
525 },
526 {
527 path: 'list/:id/teamSign', 521 path: 'list/:id/teamSign',
528 component: () => import('@/viewsPc/match/teamSign'), 522 component: () => import('@/viewsPc/match/teamSign'),
529 name: 'teamSign', 523 name: 'teamSign',
......
...@@ -423,12 +423,6 @@ export const constantRoutes = [ ...@@ -423,12 +423,6 @@ export const constantRoutes = [
423 meta: { title: '缴费清单' } 423 meta: { title: '缴费清单' }
424 }, 424 },
425 { 425 {
426 path: 'list/:id/singleSign',
427 component: () => import('@/viewsPc/match/singleSign'),
428 name: 'singleSign',
429 meta: { title: '个人报名' }
430 },
431 {
432 path: 'list/:id/teamSign', 426 path: 'list/:id/teamSign',
433 component: () => import('@/viewsPc/match/teamSign'), 427 component: () => import('@/viewsPc/match/teamSign'),
434 name: 'teamSign', 428 name: 'teamSign',
......
...@@ -410,12 +410,6 @@ export const constantRoutes = [ ...@@ -410,12 +410,6 @@ export const constantRoutes = [
410 meta: { title: '赛事详情' } 410 meta: { title: '赛事详情' }
411 }, 411 },
412 { 412 {
413 path: 'list/:id/singleSign',
414 component: () => import('@/viewsPc/match/singleSign'),
415 name: 'singleSign',
416 meta: { title: '个人报名' }
417 },
418 {
419 path: 'list/:id/teamSign', 413 path: 'list/:id/teamSign',
420 component: () => import('@/viewsPc/match/teamSign'), 414 component: () => import('@/viewsPc/match/teamSign'),
421 name: 'teamSign', 415 name: 'teamSign',
......
...@@ -181,7 +181,6 @@ ...@@ -181,7 +181,6 @@
181 181
182 <dialogEditWdsf ref="dialogEditWdsfRef" @submitForm="changeMeDone"/> 182 <dialogEditWdsf ref="dialogEditWdsfRef" @submitForm="changeMeDone"/>
183 <dialogEditAccompany ref="dialogEditAccompanyRef" @submitForm="getMyMemberTable"/> 183 <dialogEditAccompany ref="dialogEditAccompanyRef" @submitForm="getMyMemberTable"/>
184 <!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>-->
185 <dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/> 184 <dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/>
186 </div> 185 </div>
187 </template> 186 </template>
...@@ -192,9 +191,7 @@ import * as match from '@/apiPc/match' ...@@ -192,9 +191,7 @@ import * as match from '@/apiPc/match'
192 import {getCurrentInstance, onMounted} from '@vue/runtime-core' 191 import {getCurrentInstance, onMounted} from '@vue/runtime-core'
193 import dialogEditWdsf from './components/addWdsf' 192 import dialogEditWdsf from './components/addWdsf'
194 import dialogEditAccompany from './components/addAccompany' 193 import dialogEditAccompany from './components/addAccompany'
195 import dialogSportsmanList from './components/sportsmanList'
196 import dialogAllSportsmanList from './components/allSportsmanList' 194 import dialogAllSportsmanList from './components/allSportsmanList'
197 import dialogChangeCoach from './components/changeCoach'
198 import dialogExtraForm from './components/extraForm' 195 import dialogExtraForm from './components/extraForm'
199 import dialogMates from './components/dialogMates' 196 import dialogMates from './components/dialogMates'
200 import {Search, Switch} from "@element-plus/icons-vue"; 197 import {Search, Switch} from "@element-plus/icons-vue";
......
...@@ -137,7 +137,6 @@ ...@@ -137,7 +137,6 @@
137 </div> 137 </div>
138 138
139 <dialogAddCoach ref="dialogAddCoachRef"/> 139 <dialogAddCoach ref="dialogAddCoachRef"/>
140 <dialogSportsmanList ref="dialogSportsmanListRef" @submitForm="getSignInfoList"/>
141 <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @transfer="getChoosed" @submitForm="getSignInfoList"/> 140 <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @transfer="getChoosed" @submitForm="getSignInfoList"/>
142 141
143 <dialogMates ref="dialogMatesRef" @submitForm="getSignInfoList"/> 142 <dialogMates ref="dialogMatesRef" @submitForm="getSignInfoList"/>
...@@ -153,9 +152,6 @@ ...@@ -153,9 +152,6 @@
153 </el-result> 152 </el-result>
154 153
155 </el-dialog> 154 </el-dialog>
156
157 <!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>-->
158
159 <dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/> 155 <dialogExtraForm ref="popExtraForm" @submitForm="getSignInfoList"/>
160 </div> 156 </div>
161 </template> 157 </template>
...@@ -165,10 +161,8 @@ import {ref, reactive, toRefs} from 'vue' ...@@ -165,10 +161,8 @@ import {ref, reactive, toRefs} from 'vue'
165 import * as match from '@/apiPc/match' 161 import * as match from '@/apiPc/match'
166 import {getCurrentInstance, onMounted} from '@vue/runtime-core' 162 import {getCurrentInstance, onMounted} from '@vue/runtime-core'
167 import dialogAddCoach from './components/addCoach' 163 import dialogAddCoach from './components/addCoach'
168 import dialogSportsmanList from './components/sportsmanList'
169 import dialogAllSportsmanList from './components/allSportsmanList' 164 import dialogAllSportsmanList from './components/allSportsmanList'
170 import dialogImport from './components/import' 165 import dialogImport from './components/import'
171 import dialogChangeCoach from './components/changeCoach'
172 import dialogExtraForm from './components/extraForm' 166 import dialogExtraForm from './components/extraForm'
173 import dialogMates from './components/dialogMates' 167 import dialogMates from './components/dialogMates'
174 import {Search, Switch} from "@element-plus/icons-vue"; 168 import {Search, Switch} from "@element-plus/icons-vue";
...@@ -472,19 +466,6 @@ function delchoosedchoosed() { ...@@ -472,19 +466,6 @@ function delchoosedchoosed() {
472 choosedchoosed.value = [] 466 choosedchoosed.value = []
473 } 467 }
474 468
475 function editThis(row) {
476 const params = {
477 title: '修改报项',
478 personal: row.cptPersonInfo,
479 matchId: matchId.value,
480 groupId: groupId.value,
481 rankId: activeTeam.value,
482 signType: signType.value,
483 noPhotoCanSign: noPhotoCanSign.value,
484 coachOrLeaderFlag: coachOrLeaderFlag.value
485 }
486 proxy.$refs['dialogSportsmanListRef'].open(params)
487 }
488 469
489 function editMates(row) { 470 function editMates(row) {
490 const params = { 471 const params = {
......
1 <template>
2 <el-dialog :title="title">
3 <el-form v-model="coachForm">
4 <el-form-item label="教练">
5 <el-select v-model="coachForm.coachs" multiple>
6 <el-option v-for="c in myCoachList" :key="c.id" :label="c.realName" :value="c.id">
7 <div class="optionFlex">
8 <el-avatar :size="60" :src="c.picUrl" />
9 <p class="name">{{ c.realName }}
10 <span v-if="c.sex=='0'">(女)</span>
11 <span v-else>(男)</span>
12 </p>
13 </div>
14 </el-option>
15 </el-select>
16 </el-form-item>
17 <el-form-item label="领队">
18 <el-select v-model="coachForm.leaders" multiple>
19 <el-option v-for="c in myCoachList" :key="c.id" :label="c.realName" :value="c.id">
20 <div class="optionFlex">
21 <el-avatar :size="60" :src="c.picUrl" />
22 <p class="name">{{ c.realName }}
23 <span v-if="c.sex=='0'">(女)</span>
24 <span v-else>(男)</span>
25 </p>
26 </div>
27 </el-option>
28 </el-select>
29 </el-form-item>
30 <el-form-item label="其他">
31 <el-select v-model="coachForm.others" multiple>
32 <el-option v-for="c in myCoachList" :key="c.id" :label="c.realName" :value="c.id">
33 <div class="optionFlex">
34 <el-avatar :size="60" :src="c.picUrl" />
35 <p class="name">{{ c.realName }}
36 <span v-if="c.sex=='0'">(女)</span>
37 <span v-else>(男)</span>
38 </p>
39 </div>
40 </el-option>
41 </el-select>
42 </el-form-item>
43 <el-form-item>
44 <el-button type="success">确定</el-button>
45 </el-form-item>
46 </el-form>
47 </el-dialog>
48 </template>
49
50 <script setup>
51
52 </script>
53
54 <style scoped lang="scss">
55
56 </style>
1 <template>
2 <el-row>
3 <el-col :span="20" :offset="2"><h3>队伍信息</h3></el-col>
4 <el-col :span="20" :offset="2" class="rankArea">
5 <el-form :inline="true" label-width="120px">
6 <!-- 已有队伍-->
7 <div v-for="(r,index) in rankList" class="rankBox">
8 <el-icon class="del" @click="delRank(r)">
9 <Close />
10 </el-icon>
11 <el-row>
12 <el-col :span="6">
13 <el-form-item label="队伍logo:">
14 <el-avatar :size="120" :src="r.imgUrl" />
15 </el-form-item>
16 </el-col>
17 <el-col :span="8">
18 <el-form-item label="队伍名称:">
19 <span>{{ r.name }}</span>
20 </el-form-item>
21 <el-form-item v-if="props.coachOrLeaderFlag=='1'" label="领队:">
22 <div v-if="r.leaderNames" class="goChooseBox">
23 <el-tag v-for="(tag,index) in r.leaderNames.split(',')" :key="index" class="mx-1" :disable-transitions="false">
24 {{ tag }}
25 </el-tag>
26 </div>
27 </el-form-item>
28 <el-form-item v-if="props.coachOrLeaderFlag=='1'" label="翻译:">
29 <div v-if="r.translatorNames" class="goChooseBox">
30 <el-tag v-for="(tag,index) in r.translatorNames.split(',')" :key="index" class="mx-1" :disable-transitions="false">
31 {{ tag }}
32 </el-tag>
33 </div>
34 <span v-else>暂无</span>
35 </el-form-item>
36 <el-form-item v-if="props.coachOrLeaderFlag=='1'" label="其他:">
37 <div v-if="r.otherNames" class="goChooseBox">
38 <el-tag v-for="(tag,index) in r.otherNames.split(',')" :key="index" class="mx-1" :disable-transitions="false">
39 {{ tag }}
40 </el-tag>
41 </div>
42 <span v-else>暂无</span>
43 </el-form-item>
44 </el-col>
45 <el-col v-if="props.coachOrLeaderFlag=='1'" :span="8">
46 <el-form-item label="教练:">
47 <div v-if="r.coachNames" class="goChooseBox">
48 <el-tag
49 v-for="(tag,index) in r.coachNames.split(',')"
50 :key="index" class="mx-1"
51 :disable-transitions="false"
52 >
53 {{ tag }}
54 </el-tag>
55 </div>
56 </el-form-item>
57 <el-form-item label="队医:">
58 <div v-if="r.teamDoctorNames" class="goChooseBox">
59 <el-tag v-for="(tag,index) in r.teamDoctorNames.split(',')" :key="index" class="mx-1" :disable-transitions="false">
60 {{ tag }}
61 </el-tag>
62 </div>
63 <span v-else>暂无</span>
64 </el-form-item>
65 <el-form-item label="官员:">
66 <div v-if="r.officialNames" class="goChooseBox">
67 <el-tag
68 v-for="(tag,index) in r.officialNames.split(',')"
69 :key="index" class="mx-1"
70 :disable-transitions="false"
71 >
72 {{ tag }}
73 </el-tag>
74 </div>
75 <span v-else>暂无</span>
76 </el-form-item>
77 </el-col>
78 </el-row>
79 <el-row>
80 <el-col :span="2" :offset="22">
81 <el-button type="primary" link class="fr" @click="editRank(r)">编辑</el-button>
82 </el-col>
83 </el-row>
84 </div>
85 <el-button type="success" plain @click="addRank">+添加队伍</el-button>
86 <el-button v-if="rankList.length>0||showAdd" type="success" plain @click="addCoach">+添加教练/领队</el-button>
87 </el-form>
88 </el-col>
89 </el-row>
90
91 <!-- 添加人员-->
92 <addCoachdialog ref="dialogAddCoach" @submitForm="getGroupInfo" />
93 <!-- 队伍信息-->
94 <editRankdialog ref="dialogEditRank" @submitForm="getList" />
95 </template>
96
97 <script setup>
98 import { computed, reactive } from 'vue'
99 import * as match from '@/apiPc/match'
100 import { getCurrentInstance, onMounted } from '@vue/runtime-core'
101 import { ElMessage, ElMessageBox } from 'element-plus'
102 import addCoachdialog from './addCoach'
103 import editRankdialog from './editRank'
104
105 const router = useRouter()
106 const route = useRoute()
107 const { proxy } = getCurrentInstance()
108 const data = reactive({
109 form: {},
110 rankList: [],
111 group: {},
112 groupId: '',
113 teamType: [{ label: '学校', value: '0' }, { label: '俱乐部', value: '1' }],
114 rules: {
115 imgUrl: { required: true, message: '请上传图标', trigger: 'blur' },
116 name: { required: true, message: '请填写名称', trigger: 'blur' }
117 }
118 })
119 const { teamType, rules, rankList, form, group, groupId } = toRefs(data)
120 const backRankId = ''
121 let cptId = ''
122 const props = defineProps({
123 coachOrLeaderFlag: {
124 type: String
125 }
126 })
127 onMounted(() => {
128 cptId = route.query.matchId
129 groupId.value = route.query.groupId
130 getList()
131 getGroupInfo()
132 })
133 // 弹窗加人
134 const addCoach = () => {
135 const params = {
136 id: 0,
137 groupId: groupId.value
138 }
139 proxy.$refs['dialogAddCoach'].open(params)
140 }
141
142 function getGroupInfo() {
143 match.getGroupById(groupId.value).then(res => {
144 group.value = res.data
145 })
146 }
147
148 function getList() {
149 // 获取队伍列表
150 match.getMyTeamList(cptId, groupId.value).then(response => {
151 rankList.value = response.data
152 })
153 }
154
155 function delRank(r) {
156 ElMessageBox.confirm(
157 '确定删除该队伍吗?',
158 '提示',
159 {
160 confirmButtonText: '确定',
161 cancelButtonText: '取消',
162 type: 'warning'
163 }
164 )
165 .then(() => {
166 match.delRank(r.id).then(response => {
167 getList()
168 ElMessage({
169 type: 'success',
170 message: '已删除'
171 })
172 })
173 })
174 }
175 function addRank() {
176 const params = {
177 form: {},
178 cptId: cptId,
179 title: '新建队伍',
180 coachOrLeaderFlag: props.coachOrLeaderFlag,
181 group: group.value
182 }
183 proxy.$refs['dialogEditRank'].open(params)
184 }
185 function editRank(rank) {
186 const params = {
187 form: rank,
188 cptId: cptId,
189 title: '编辑队伍',
190 coachOrLeaderFlag: props.coachOrLeaderFlag,
191 group: group.value
192 }
193 proxy.$refs['dialogEditRank'].open(params)
194 }
195 </script>
196
197 <style lang="scss" scoped>
198 .rankArea {
199 background: #FBFCFD;
200 border-radius: 10px;
201 padding: 25px 30px;
202 }
203
204 .rankBox {
205 background: #FFFFFF;
206 padding: 20px;
207 position: relative;
208 border-radius: 10px;
209 margin: 0 0 20px;
210 }
211
212 :deep(.el-upload--picture-card) {
213 width: 80px;
214 height: 80px;
215 border-radius: 50%;
216 }
217
218 :deep(.el-upload-list__item.is-success .el-upload-list__item-status-label) {
219 display: none;
220 }
221
222 :deep(.el-upload-list--picture-card .el-upload-list__item) {
223 width: 80px;
224 height: 80px;
225 border-radius: 50%;
226 }
227
228 .del {
229 position: absolute;
230 right: 15px;
231 top: 15px;
232 font-size: 20px;
233 z-index: 1;
234 }
235
236 .mx-1 {
237 margin: 5px
238 }
239 </style>
1 <template>
2 <el-dialog v-model="show" :title="title" width="1000px" append-to-body :close-on-click-modal="false">
3
4 <el-form label-width="120px" label-position="top" class="chooseForm" :model="form">
5 <el-row :gutter="20">
6 <el-col :span="24" />
7
8 <el-col :span="8">
9 <el-form-item>
10 <p class="title">可选项目</p>
11 <el-radio-group v-model="form.project" @change="chooseThisProject">
12 <div v-for="c in projectList" :key="c" class="athleteBox">
13 <el-radio :label="c">
14 <p class="name">{{ c.name }}
15 </p>
16 </el-radio>
17 </div>
18 </el-radio-group>
19 <el-empty v-if="projectList.length==0" :image="`/img/order_no.png`" :image-size="228" description="无可选项目" />
20 </el-form-item>
21 </el-col>
22 <el-col :span="8">
23 <el-form-item>
24 <p class="title">可选组别</p>
25 <el-radio-group v-model="form.groupId" @change="chooseThisGroup">
26 <div v-for="c in signGroupList" :key="c" class="athleteBox">
27 <el-radio :label="c.id">
28 <p class="name">{{ c.name }}
29 </p>
30 </el-radio>
31 </div>
32 </el-radio-group>
33 <el-empty v-if="signGroupList.length==0" style="width: 100%;" description="无可选组别" />
34 </el-form-item>
35 </el-col>
36 <el-col :span="8">
37 <el-form-item>
38 <el-radio-group v-model="form.levelId" @change="chooseThisLevel">
39 <div v-if="signlevelListBoy.length>0">
40 <p class="title">男子组</p>
41 <div v-for="c in signlevelListBoy" :key="c" class="athleteBox">
42 <el-radio :label="c.id">{{ c.name }}</el-radio>
43 </div>
44 </div>
45 <div v-if="signlevelListGirl.length>0">
46 <p class="title">女子组</p>
47 <div v-for="c in signlevelListGirl" :key="c" class="athleteBox">
48 <el-radio :label="c.id">{{ c.name }}</el-radio>
49 </div>
50 </div>
51 </el-radio-group>
52 <div v-if="signLevelList.length>0">
53 <p class="title">可选级别</p>
54 <el-radio-group :key="c" v-model="form.levelId" @change="chooseThisLevel">
55 <div v-for="c in signLevelList" :key="c" class="athleteBox">
56 <el-radio :label="c.id">{{ c.name }}</el-radio>
57 </div>
58 </el-radio-group>
59 </div>
60 <div v-if="signLevelList.length==0&&signlevelListGirl.length==0&&signlevelListBoy.length==0" style="width: 100%">
61 <p class="title">可选级别</p>
62 <el-empty style="width: 100%;" description="无可选级别" />
63 </div>
64
65 </el-form-item>
66
67 </el-col>
68 </el-row>
69 </el-form>
70
71 <template #footer>
72 <div class="dialog-footer text-center">
73 <el-button type="primary" @click="levelDone">保 存</el-button>
74 <el-button @click="cancel">取 消</el-button>
75 </div>
76 </template>
77 </el-dialog>
78 </template>
79
80 <script setup>
81 import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core'
82 import { reactive, toRefs, watch } from 'vue'
83 import * as match from '@/apiPc/match'
84 import { ElMessage, ElMessageBox } from 'element-plus'
85
86 const { proxy } = getCurrentInstance()
87 const emit = defineEmits(['submitForm'])
88
89 const data = reactive({
90 projectList: [],
91 signGroupList: [],
92 signLevelList: [],
93 signlevelListBoy: [],
94 signlevelListGirl: [],
95 show: false,
96 title: '',
97 matchId: '',
98 form: {}
99 })
100 const { show, projectList, title, form, matchId, signGroupList, signLevelList, signlevelListBoy, signlevelListGirl } = toRefs(data)
101 let personId = ''
102 onMounted(() => {
103 getMyself()
104 })
105 const getMyself = () => {
106 match.getMyPersonInfo().then(res => {
107 personId = res.data.id
108 })
109 }
110
111 const getProjectList = (id) => {
112 projectList.value = []
113 match.getCanSignProjectList(id).then(res => {
114 for (const p of res.data) {
115 if (p.canSign == '1') {
116 projectList.value.push(p)
117 }
118 }
119 })
120 }
121 const chooseThisProject = (e) => {
122 console.log(e)
123 getSignGroupList(e.id, personId)
124 form.value.levelId = ''
125 form.value.groupId = ''
126 signLevelList.value = []
127 signlevelListBoy.value = []
128 signlevelListGirl.value = []
129 }
130 // 获取组别
131 const getSignGroupList = (projectId, personId) => {
132 signGroupList.value = []
133 match.getCanSignGroupListFromSelectPerson(projectId, personId).then(res => {
134 for (var g of res.data) {
135 if (g.canSign == '1') {
136 signGroupList.value.push(g)
137 }
138 }
139 })
140 }
141 const chooseThisGroup = (e) => {
142 console.log(e)
143 getLevels(form.value.groupId, personId)
144 }
145 // 获取级别
146 const getLevels = (groupId, personId) => {
147 signLevelList.value = []
148 signlevelListBoy.value = []
149 signlevelListGirl.value = []
150 match.getCanSignlevelListFromSelectPerson(groupId, personId).then(res => {
151 for (const l of res.data) {
152 l.text = l.name
153 l.value = l.id
154 if (l.levelType == '1') {
155 signlevelListBoy.value.push(l)
156 } else if (l.levelType == '2') {
157 signlevelListGirl.value.push(l)
158 } else {
159 signLevelList.value.push(l)
160 }
161 }
162 })
163 }
164 const levelDone = () => {
165 if (!form.value.levelId) {
166 ElMessage.error('请选择级别')
167 return
168 }
169 const obj = {
170 levelId: form.value.levelId,
171 athleteIds: personId,
172 groupId: '',
173 teamId: ''
174 }
175 saveOne(obj)
176 }
177 const saveOne = (obj) => {
178 match.sportsmanDone(obj).then(res => {
179 if (res.msg.indexOf('Exception:') > -1) {
180 const msg = res.msg.slice(10)
181 ElMessageBox.confirm(msg).then(() => {
182
183 })
184 return
185 }
186 show.value = false
187 emit('submitForm')
188 })
189 }
190 watch(show, (val) => {
191 if (!val) {
192 form.value = {}
193 }
194 })
195
196 function cancel() {
197 show.value = false
198 }
199 const open = (params) => {
200 show.value = true
201 title.value = params.title || '项目列表'
202 matchId.value = params.matchId
203 getProjectList(matchId.value)
204 }
205 defineExpose({
206 open
207 })
208 </script>
209
210 <style lang="scss" scoped>
211 .el-radio-group{ width: 100%;display: block;}
212 .athleteBox{height: 40px; display: flex;align-items: center;
213 .el-radio__label{display: flex;align-items: center;margin: 0 20px;}
214 .el-radio__inner{ scale: 1.5;}
215 .name{margin: 0 20px;font-size: 16px;}
216 }
217 .athleteBox:hover{background: #efefef;}
218 p.title{font-size: 16px;margin: 0 0 15px;}
219 .el-form-item{min-height: 400px;border: 1px solid #eee;padding:10px 20px}
220 </style>
221
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4 <el-card class="mb60 mt30"> 4 <el-card class="mb60 mt30">
5 <div class="text-center mt30"> 5 <div class="text-center mt30">
6 <el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon> 6 <el-icon color="#32B16C" size="80">
7 <p class="text-success mb20">{{ language==0?'支付成功':'successfully!' }}</p> 7 <SuccessFilled/>
8 8 </el-icon>
9 <el-button type="primary" class="btn-lineG mb60" @click="goBillDetail" round>{{ language==0?'返回订单详情':'Return order details' }}</el-button> 9 <p class="text-success mb20">{{ language == 0 ? '支付成功' : 'successfully!' }}</p>
10 </div> 10
11 </el-card> 11 <el-button type="primary" class="btn-lineG mb60" @click="goBillDetail" round>
12 </div> 12 {{ language == 0 ? '返回订单详情' : 'Return order details' }}
13 </el-button>
14 </div>
15 </el-card>
16 </div>
13 </div> 17 </div>
14 </template> 18 </template>
15 19
16 <script setup> 20 <script setup>
17 import {ref} from "vue"; 21 import {ref} from "vue";
18 import cache from "@/plugins/cache"; 22 import cache from "@/plugins/cache";
19 import {useRoute,useRouter} from "vue-router"; 23 import {useRoute, useRouter} from "vue-router";
20 import {onMounted} from "@vue/runtime-core"; 24 import {onMounted} from "@vue/runtime-core";
21 import {callbackPalPay} from "@/apiPc/match"; 25 import {callbackPalPay} from "@/apiPc/match";
26
22 const route = useRoute() 27 const route = useRoute()
23 const router = useRouter() 28 const router = useRouter()
24 const language = ref(cache.local.get('language') || 0) 29 const language = ref(cache.local.get('language') || 0)
25 const orderId = ref(route.query.orderId) 30 const orderId = ref(route.query.orderId)
26 31
27 onMounted(()=>{ 32 onMounted(() => {
28 callbackPalPay(route.query.orderId).then(res=>{ 33 callbackPalPay(route.query.orderId).then(res => {
29 34
30 }) 35 })
31 }) 36 })
37
32 function goBillDetail() { 38 function goBillDetail() {
33 router.push({ 39 router.push({
34 name:`signPay`, 40 name: `signPay`,
35 query: { 41 query: {
36 orderId: route.query.orderId 42 orderId: route.query.orderId
37 } 43 }
......
...@@ -131,13 +131,14 @@ const zuQuery = ref({ ...@@ -131,13 +131,14 @@ const zuQuery = ref({
131 groupName:'' 131 groupName:''
132 }) 132 })
133 onMounted(()=>{ 133 onMounted(()=>{
134 // console.log(route.query) 134 Promise.all([
135 getSignList() 135 getMatch(),
136 getSignList(),
136 getFee(groupId.value) 137 getFee(groupId.value)
138 ])
137 if(user.utype=='1'){ 139 if(user.utype=='1'){
138 getMyMemberTable() 140 getMyMemberTable()
139 } 141 }
140 getMatch()
141 }) 142 })
142 function getMatch() { 143 function getMatch() {
143 match.getMatchById({ 144 match.getMatchById({
...@@ -151,7 +152,6 @@ function getMyMemberTable() { ...@@ -151,7 +152,6 @@ function getMyMemberTable() {
151 myMemberTable.value = res.rows 152 myMemberTable.value = res.rows
152 }) 153 })
153 } 154 }
154
155 function getSignList() { 155 function getSignList() {
156 match.getMySignInfoList(zuQuery.value).then(res=>{ 156 match.getMySignInfoList(zuQuery.value).then(res=>{
157 signInfoList.value = res.data.singleData 157 signInfoList.value = res.data.singleData
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
15 <el-row> 15 <el-row>
16 <el-col :lg="8" :offset="2"> 16 <el-col :lg="8" :offset="2">
17 <el-form-item :label="language==0?'团体Logo':'Group Logo'" prop="imgUrl"> 17 <el-form-item :label="language==0?'团体Logo':'Group Logo'" prop="imgUrl">
18 <ImageUpload2 v-model="form.imgUrl" :crop-width="200" :crop-height="200" :limit="1"/> 18 <ImageUpload2 v-model="form.imgUrl" :is-show-tip="false" :crop-width="200" :crop-height="200" :limit="1"/>
19 <span class="tip" v-if="language==0">请上传不超过 <i>5M</i> 的文件 格式为 <i>png/jpg/jpeg</i> 的文件</span> 19 <span class="tip" v-if="language==0">请上传不超过 <i>5M</i> 的文件 格式为 <i>png/jpg/jpeg</i> 的文件</span>
20 <span class="tip" v-else>Please upload a file in the format of 20 <span class="tip" v-else>Please upload a file in the format of
21 <i>png/jpg/jpeg</i> that does not exceed <i>5MB</i> 21 <i>png/jpg/jpeg</i> that does not exceed <i>5MB</i>
...@@ -30,10 +30,10 @@ ...@@ -30,10 +30,10 @@
30 <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" /> 30 <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" />
31 </el-form-item> 31 </el-form-item>
32 <el-form-item :label="language==0?'负责人姓名':'Contact Person'" prop="contactPerson"> 32 <el-form-item :label="language==0?'负责人姓名':'Contact Person'" prop="contactPerson">
33 <el-input v-model="form.contactPerson" placeholder="请输入联系人" /> 33 <el-input v-model="form.contactPerson" :placeholder="language==0?'请输入联系人':''" />
34 </el-form-item> 34 </el-form-item>
35 <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail"> 35 <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail">
36 <el-input v-model="form.contactEmail" type="email" placeholder="请输入内容"/> 36 <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/>
37 </el-form-item> 37 </el-form-item>
38 <el-form-item :label="language==0?'团体类型':'Group type'" prop="type"> 38 <el-form-item :label="language==0?'团体类型':'Group type'" prop="type">
39 <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> 39 <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;">
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
45 </el-select> 45 </el-select>
46 </el-form-item> 46 </el-form-item>
47 <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address"> 47 <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address">
48 <el-input type="textarea" v-model="form.address" class="mt10" placeholder="请输入详细地址"/> 48 <el-input type="textarea" v-model="form.address" class="mt10" :placeholder="language==0?'请输入详细地址':''"/>
49 </el-form-item> 49 </el-form-item>
50 50
51 51
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
66 </el-select> 66 </el-select>
67 <ImageUpload v-if="s.type == '3'" v-model="s.value" :limit="1" :is-show-tip="false" /> 67 <ImageUpload v-if="s.type == '3'" v-model="s.value" :limit="1" :is-show-tip="false" />
68 <!-- 文件 2--> 68 <!-- 文件 2-->
69 <FileUpload v-if="s.type == '2'" v-model="s.fixWxFile" :action="uploadUrl" :accept="accept" /> 69 <FileUpload v-if="s.type == '2'" :button-text="language==0?'上传文件':'Upload file'" :is-show-tip="false" v-model="s.fixWxFile" :action="uploadUrl" :accept="accept" />
70 70
71 </el-form-item> 71 </el-form-item>
72 </el-col> 72 </el-col>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!