lex-xin 4 anos atrás
pai
commit
38089f7ae8

+ 5 - 0
package-lock.json

@@ -8054,6 +8054,11 @@
       "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
       "dev": true
     },
+    "numeral": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npm.taobao.org/numeral/download/numeral-2.0.6.tgz",
+      "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY="
+    },
     "oauth-sign": {
       "version": "0.9.0",
       "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz",

+ 1 - 0
package.json

@@ -15,6 +15,7 @@
     "es6-promise": "^4.2.8",
     "install": "^0.13.0",
     "lodash": "^4.17.15",
+    "numeral": "^2.0.6",
     "qrcodejs2": "0.0.2",
     "qs": "^6.8.0",
     "vant": "^2.8.4",

+ 1 - 0
public/MP_verify_KdzWVtgX4eMhMsGk.txt

@@ -0,0 +1 @@
+KdzWVtgX4eMhMsGk

+ 1 - 0
public/MP_verify_VTDvJN4J1B0jmkZf.txt

@@ -0,0 +1 @@
+VTDvJN4J1B0jmkZf

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
public/adaPay.min.js


+ 1 - 1
public/index.html

@@ -26,7 +26,7 @@
 
     <!-- <link rel="stylesheet" href="https://www.unpkg.com/vant@2.8.4/lib/index.css"> -->
     <script>!function(e,t){var n=t.documentElement,d=e.devicePixelRatio||1;function i(){var e=n.clientWidth/3.75;n.style.fontSize=e+"px"}if(function e(){t.body?t.body.style.fontSize="16px":t.addEventListener("DOMContentLoaded",e)}(),i(),e.addEventListener("resize",i),e.addEventListener("pageshow",function(e){e.persisted&&i()}),2<=d){var o=t.createElement("body"),a=t.createElement("div");a.style.border=".5px solid transparent",o.appendChild(a),n.appendChild(o),1===a.offsetHeight&&n.classList.add("hairlines"),n.removeChild(o)}}(window,document)</script>
-    <!-- <script type="text/javascript" src="./adaPay_min.js"></script> -->
+    <script type="text/javascript" src="./adaPay_min.js"></script>
   </head>
   <body>
     <div id="app"></div>

+ 3 - 0
src/views/signup/SignUp.vue

@@ -30,9 +30,11 @@ export default {
 	components: { MButton },
     data () {
 		localStorage.removeItem('examId')
+		localStorage.removeItem('organId')
 		let query = this.$route.query
         return {
 			examId: query.examId,
+			organId: query.organId,
 			show: false,
 			baseInfo: {}, // 基本信息
 			backgroundImg: null
@@ -46,6 +48,7 @@ export default {
 			setLoading(true)
 			try {
 				localStorage.setItem('examId', this.examId)
+				localStorage.setItem('organId', this.organId)
 				let res = await examinationBasicInfo({ examId: this.examId })
 				if(res.data.code == 200) {
 					let tempData = res.data.data

+ 28 - 1
src/views/signup/SignUpApi.js

@@ -122,7 +122,7 @@ export function examRegistrationAdd (data) {
     return axios({
         url: '/api-user/examRegistration/add',
         method: 'post',
-        data: qs.stringify(data)
+        data: data
     })
 }
 
@@ -151,4 +151,31 @@ export function getExamIngOrder (data) {
         method: 'get',
         params: data
     })
+}
+
+// 获取订单状态及订单信息
+export function paymentResult (data) {
+    return axios({
+        url: '/api-user/examOrder/paymentResult',
+        method: 'get',
+        params: data
+    })
+}
+
+// 获取报名信息
+export function getExamRegistration (data) {
+    return axios({
+        url: '/api-user/examRegistration/getExamRegistration',
+        method: 'get',
+        params: data
+    })
+}
+
+// 重新支付
+export function repay (data) {
+    return axios({
+        url: '/api-user/examRegistration/repay',
+        method: 'post',
+        data: qs.stringify(data)
+    })
 }

+ 5 - 1
src/views/signup/SignUpBaseInfo.vue

@@ -120,7 +120,11 @@ export default {
                         confirmButtonText: '重新下单'
                     }).then(() => {
                         this.$router.push({
-                            path: '/signUpPayment'
+                            path: '/signUpPayment',
+                            query: {
+                                orderNo: resultOrder.data.orderNo,
+                                examRegistrationId: resultOrder.data.examRegistrationId
+                            }
                         })
                     }).catch(() => {
                         this.$dialog.close()

+ 265 - 110
src/views/signup/SignUpLevel.vue

@@ -10,39 +10,23 @@
             <div class="title">报考曲目</div>
 
             <div class="van-hairline--bottom" v-if="practiceSongIdList" key="practiceNum">
-                <van-field required v-for="(item, index) in practiceNum" :key="index" readonly :label="`练习曲${numberToCN(index)}名称及作者`" v-model.trim="practiceSelect[index]" @click="onChangePractice('practice', index)" placeholder="请选择" is-link />
+                <van-field required readonly v-for="(item, index) in practiceNum" :key="index" :label="`练习曲${numberToCN(index)}名称及作者`" v-model.trim="practiceSelect[index]" @click="onChangePractice('practice', index)" placeholder="请选择" is-link />
             </div>
             <div class="van-hairline--bottom" v-else key="practiceNum">
-                <van-field required v-for="(item, index) in practiceNum" :key="index" clearable name="code" :label="`练习曲${numberToCN(index)}名称及作者`" placeholder="自定义曲目" >
-                    <template #input>
-                        <van-uploader
-                            :name="`practiceNum-${index}`"
-                            :before-read="beforeRead"
-                            :before-delete="beforeDelete"
-                            :after-read="afterRead"
-                            v-model.trim="practiceUpload[index]"
-                            accept="image/*"
-                            multiple
-                            :max-count="1" />
+                <van-field required readonly v-model.trim="practiceSelect[index]" v-for="(item, index) in practiceNum" :key="index" clearable name="code" :label="`练习曲${numberToCN(index)}名称及作者`" >
+                    <template #button>
+                        <span class="codeText" @click="onUploadSong('practiceNum', index)">上传曲目</span>
                     </template>
                 </van-field>
             </div>
 
             <div v-if="performSongIdList" key="performNum">
-                <van-field required v-for="(item, index) in performNum" :key="index" readonly :label="`演奏曲${numberToCN(index)}名称及作者`" v-model.trim="performNumSelect[index]" @click="onChangePractice('performNum', index)" placeholder="请选择" is-link />
+                <van-field required readonly v-for="(item, index) in performNum" :key="index" :label="`演奏曲${numberToCN(index)}名称及作者`" v-model.trim="performNumSelect[index]" @click="onChangePractice('performNum', index)" placeholder="请选择" is-link />
             </div>
             <div v-else key="performNum">
-                <van-field required v-for="(item, index) in performNum" :key="index" clearable name="code" :label="`演奏曲${numberToCN(index)}名称及作者`" placeholder="自定义曲目" >
-                    <template #input>
-                        <van-uploader
-                            :name="`performNum-${index}`"
-                            :before-read="beforeRead"
-                            :before-delete="beforeDelete"
-                            :after-read="afterRead"
-                            v-model.trim="performNumUpload[index]"
-                            accept="image/*"
-                            multiple
-                            :max-count="1" />
+                <van-field required readonly v-model.trim="performNumSelect[index]" v-for="(item, index) in performNum" :key="index" clearable name="code" :label="`演奏曲${numberToCN(index)}名称及作者`" >
+                    <template #button>
+                        <span class="codeText" @click="onUploadSong('performNum', index)">上传曲目</span>
                     </template>
                 </van-field>
             </div>
@@ -96,25 +80,47 @@
             <van-picker :default-index="sheetSong.index" :columns="sheetSong.columns" show-toolbar @cancel="sheetSong.status = false" @confirm="onPracticeConfirm" />
         </van-popup>
 
-        <!-- <van-popup class="van-popup-song" v-model="songStatus">
+        <van-popup class="van-popup-song" v-model="songUpload.songStatus">
             <div class="song-popup">
                 <div class="title">自定义曲目</div>
-                <div class="song-upload">
-                    <van-uploader multiple :max-count="1" :max-size="3 * 1024 * 1024" >
-                        <div class="upload-container">
-                            <van-icon name="plus" />
-                            <p>点击上传</p>
-                        </div>
-                    </van-uploader>
-                </div>
-                <p class="song-popup-tips">支持格式:pdf,png,jpg,bmp</p>
+                <van-field name="songName" v-model="songUpload.name" label="曲名" placeholder="请输入曲名" >
+                    <template #label><i style="color: #ee0a24">*</i>曲名</template>
+                </van-field>
+                <van-field name="songAuthor" v-model="songUpload.author" label="作者" placeholder="请输入作者" >
+                    <template #label><i style="color: #ffffff">*</i>作者</template>
+                </van-field>
+                <van-field readonly clearable >
+                    <template #input>
+                        <van-uploader
+                            v-if="songUpload.indexName == 'practiceNum'"
+                            :name="songUpload.indexName + '-' + songUpload.index"
+                            :before-read="beforeRead"
+                            :before-delete="beforeDelete"
+                            :after-read="afterRead"
+                            v-model.trim="practiceUpload[songUpload.index]"
+                            multiple
+                            :max-count="5" >
+                        </van-uploader>
+                        <van-uploader
+                            v-if="songUpload.indexName == 'performNum'"
+                            :name="songUpload.indexName + '-' + songUpload.index"
+                            :before-read="beforeRead"
+                            :before-delete="beforeDelete"
+                            :after-read="afterRead"
+                            v-model.trim="performNumUpload[songUpload.index]"
+                            multiple
+                            :max-count="5" >
+                        </van-uploader>
+                    </template>
+                </van-field>
+                <p class="song-popup-tips"><i style="color: #ee0a24">*</i>支持格式:pdf,png,jpg,bmp</p>
 
                 <div class="popup-group">
-                    <span @click="songStatus = false">取消</span>
-                    <span class="popup-sure" @click="songStatus = false">确定</span>
+                    <span @click="songUpload.songStatus = false">取消</span>
+                    <span class="popup-sure" @click="onSaveUpload">确定</span>
                 </div>
             </div>
-        </van-popup> -->
+        </van-popup>
     </div>
 </template>
 <script>
@@ -140,8 +146,10 @@ export default {
 	components: { MHeader, MStep },
     data () {
         const examId = localStorage.getItem('examId')
+        const organId = localStorage.getItem('organId')
         return {
             examId: examId,
+            organId: organId,
             patternPhone: patternPhone,
             sheetForm: { // 上拉弹窗
                 currentType: null, // 当前选择的类型
@@ -159,14 +167,20 @@ export default {
             performNum: 0, // 演奏曲数量
             performSongIdList: null,
             songList: [], //歌曲数量(包括练习曲和演奏曲)
-            songStatus: false, // 曲目状态
+            songUpload: {
+                songStatus: false, // 曲目状态
+                indexName: null,
+                index: null, // 索引
+                name: null, // 曲名
+                author: null // 作者
+            },
             form: {
                 subjectId: null,
                 levelId: null,
                 adviserName: null, // 老师姓名
                 adviserPhone: null, // 联系电话
                 lastExamCertificateUrl: null,
-                lastExamCertificateUrl2: null,
+                lastMusicTheoryCertificateUrl: null,
                 examMusicTheoryId: null,
             },
             formText: {
@@ -179,17 +193,19 @@ export default {
                 index: 0, // 选中的索引值
                 columns: []
             },
-            practiceSelect: [], // 循环列表
+            practiceSelect: [], // 练习曲循环列表
+            practiceSelectUploadList: [],
+            practiceSelectList: [], // 弹窗练习曲列表
             practiceSelectIds: [], // 选中练习曲编号
-            performNumSelect: [],
+            performNumSelect: [], // 演奏曲循环列表
+            performNumSelectUploadList: [],
+            performNumSelectList: [], // 弹窗演奏曲列表
             performNumSelectIds: [], // 选中演奏曲编号
             songSelectIndex: null, // 选中的哪个
             uploadCertificate: [],  // 上传证书
             uploadCertificate2: [], // 上传乐理证书
             practiceUpload: [],
-            practiceUploadImg: [],
             performNumUpload: [],
-            performNumUploadImg: [],
             examMusicTheoryList: [], // 乐理列表
             examMusicTheoryIndex: 0, // 乐理索引
         }
@@ -423,9 +439,11 @@ export default {
             if(value.type == "PRACTICE") { // 练习
                 this.practiceSelect[songSelectIndex] = value.text
                 this.practiceSelectIds[songSelectIndex] = value.value
+                this.practiceSelectList[songSelectIndex] = value
             } else if(value.type == "PERFORM") { // 演奏
                 this.performNumSelect[songSelectIndex] = value.text
                 this.performNumSelectIds[songSelectIndex] = value.value
+                this.performNumSelectList[songSelectIndex] = value
             }
 
             this.sheetSong.status = false
@@ -440,10 +458,11 @@ export default {
             return true
         },
         beforeDelete(file, detail) {
+            const obj = detail.name.split('-')
             let form = this.form
-            if(detail.name == "certificate2") {
-                form.lastExamCertificateUrl2 = "" // 上传图片地址为空
-            } else if(detail.name == "certificate") {
+            if(obj[0] == "certificate2") {
+                form.lastMusicTheoryCertificateUrl = "" // 上传图片地址为空
+            } else if(obj[0] == "certificate") {
                 form.lastExamCertificateUrl = ""
             }
             return true
@@ -461,13 +480,13 @@ export default {
                     file.status = 'done'
                     let form = this.form
                     if(obj[0] == "certificate2") {
-                        form.lastExamCertificateUrl2 = result.data.url // 上传图片地址为空
+                        form.lastMusicTheoryCertificateUrl = result.data.url // 上传图片地址为空
                     } else if(obj[0] == "certificate") {
                         form.lastExamCertificateUrl = result.data.url
                     } else if(obj[0] == 'practiceNum') {
-                        this.practiceUploadImg[obj[1]] = result.data.url
+                        file.url = result.data.url
                     } else if(obj[0] == 'performNum') {
-                        this.performNumUploadImg[obj[1]] = result.data.url
+                        file.url = result.data.url
                     }
                 } else {
                     file.status = 'failed'
@@ -479,16 +498,108 @@ export default {
                 return false
             }
         },
+        onUploadSong(value, index) { // 上传曲目
+            let songUpload = this.songUpload
+            songUpload.songStatus = true
+            songUpload.indexName = value
+            songUpload.index = index
+            let practiceSUL = this.practiceSelectUploadList[index]
+            let performSUL = this.performNumSelectUploadList[index]
+            if(value == "practiceNum") {
+                songUpload.name = practiceSUL ? practiceSUL.name : null
+                songUpload.author = practiceSUL ? practiceSUL.author : null
+            } else if(value == "performNum") {
+                songUpload.name = performSUL ? performSUL.name : null
+                songUpload.author = performSUL ? performSUL.author : null
+            }
+        },
+        onSaveUpload() {
+            let songUpload = this.songUpload
+            if(!songUpload.name) {
+                this.$toast("请输入曲名")
+                return
+            }
+            const nameAuthor = songUpload.name + (songUpload.author ? "-" + songUpload.author : "")
+            if(songUpload.indexName == "practiceNum") {
+                if(!this.practiceUpload[songUpload.index]) {
+                    this.$toast("请上传文件")
+                    return
+                } else {
+                    this.practiceSelect[songUpload.index] = nameAuthor
+                    this.practiceSelectUploadList[songUpload.index] = JSON.parse(JSON.stringify(songUpload))
+                }
+            } else if(songUpload.indexName == "performNum") {
+                if(!this.performNumUpload[songUpload.index]) {
+                    this.$toast("请上传文件")
+                    return
+                } else {
+                    this.performNumSelect[songUpload.index] = nameAuthor
+                    this.performNumSelectUploadList[songUpload.index] = JSON.parse(JSON.stringify(songUpload))
+                }
+            }
+            songUpload.name = null
+            songUpload.author = null
+            songUpload.songStatus = false
+        },
         async onSubmit() {
-            // setLoading(true)
-            this.$router.push({
-                path: '/signUpPayment'
-            })
+            setLoading(true)
             try {
                 // 验证
                 if(!this.onCheckFields()) {
                     return
                 }
+                let songJson = [] // json 数组
+                // 练习课 "PRACTICE"
+                if(this.practiceSongIdList) {  // 下拉选择
+                    this.practiceSelectList.forEach(item => {
+                        songJson.push({
+                            id: item.id,
+                            type: item.type,
+                            songName: item.songName,
+                            songAuthor: item.songAuthor
+                        })
+                    })
+                } else {  // 自选
+                    const practiceUpload = this.practiceUpload
+                    this.practiceSelectUploadList.forEach(item => {
+                        let tempUrl = []
+                        practiceUpload[item.index].forEach(item => {
+                            tempUrl.push(item.url)
+                        })
+                        songJson.push({
+                            songName: item.name,
+                            songAuthor: item.author,
+                            type: "PRACTICE",
+                            uploadUrl: tempUrl.join(',')
+                        })
+                    })
+                }
+                // 演奏课 "PERFORM"
+                if(this.performSongIdList) {
+                    this.performNumSelectList.forEach(item => {
+                        songJson.push({
+                            id: item.id,
+                            type: item.type,
+                            songName: item.songName,
+                            songAuthor: item.songAuthor
+                        })
+                    })
+                } else {
+                    const performNumUpload = this.performNumUpload
+                    this.performNumSelectUploadList.forEach(item => {
+                        let tempUrl = []
+                        performNumUpload[item.index].forEach(item => {
+                            tempUrl.push(item.url)
+                        })
+                        songJson.push({
+                            songName: item.name,
+                            songAuthor: item.author,
+                            type: "PERFORM",
+                            uploadUrl: tempUrl.join(',')
+                        })
+                    })
+                }
+
                 let form = this.form,
                     formText = this.formText
                 let params = {
@@ -499,14 +610,25 @@ export default {
                     examSubjectSongId: form.subjectId,
                     examinationBasicId: this.examId,
                     lastExamCertificateUrl: form.lastExamCertificateUrl,
-                    level: form.levelId
+                    lastMusicTheoryCertificateUrl: form.lastMusicTheoryCertificateUrl,
+                    level: form.levelId,
+                    subjectId: form.subjectId, // 考级专业
+                    songJson: JSON.stringify(songJson),
+                    organId: this.organId
                 }
                 console.log("参数", params)
-                let res = await examRegistrationAdd(params)
+                const res = await examRegistrationAdd(params)
                 setLoading(false)
-                let result = res.data
+                const result = res.data
                 if(result.code == 200) {
-                    //
+                    const tempResult = result.data
+                    this.$router.push({
+                        path: '/signUpPayment',
+                        query: {
+                            examRegistrationId: tempResult.examRegister.id,
+                            payMap: JSON.stringify(tempResult.payMap)
+                        }
+                    })
                 } else {
                     this.$toast(result.msg)
                 }
@@ -533,7 +655,7 @@ export default {
                     return false
                 }
             } else {
-                if(this.practiceUploadImg.length != this.practiceNum) {
+                if(this.practiceUpload.length != this.practiceNum) {
                     this.$toast('请上传练习曲')
                     return false
                 }
@@ -545,7 +667,7 @@ export default {
                     return false
                 }
             } else {
-                if(this.performNumUploadImg.length != this.performNum) {
+                if(this.performNumUpload.length != this.performNum) {
                     this.$toast('请上传演奏曲')
                     return false
                 }
@@ -556,7 +678,7 @@ export default {
                 return false
             }
 
-            if(form.examMusicTheoryId > 1 && !form.lastExamCertificateUrl2) {
+            if(form.examMusicTheoryId > 1 && !form.lastMusicTheoryCertificateUrl) {
                 this.$toast('请上传考级证书')
                 return false
             }
@@ -621,56 +743,89 @@ export default {
     }
 }
 
-// .van-popup-song {
-//     width: 80%;
-//     border-radius: .08rem;
-// }
-// .song-popup {
-//     text-align: center;
-//     .title {
-//         font-size: 18px;
-//         font-weight: 500;
-//         color: var(--font-main-color);
-//         padding: .2rem 0 .24rem;
-//     }
-//     .song-upload {
-//         margin: 0 .5rem;
-//         padding: .18rem 0 .1rem;
-//         border-radius: .05rem;
-//         // border: 1px dashed #777777;
-//         border: 1px dashed transparent;
-//         // background: linear-gradient(wihte, wihte);
-//         background: linear-gradient(0deg, transparent 6px, #777777 6px) repeat-y,
-//             linear-gradient(0deg, transparent 50%, #777777 0) repeat-y,
-//             linear-gradient(90deg, transparent 50%, #777777 0) repeat-x,
-//             linear-gradient(90deg, transparent 50%, #777777 0) repeat-x;
-//         background-size: 1px 12px, 1px 12px, 12px 1px, 12px 1px;
-//         background-position: 0 0, 100% 0, 0 0, 0 100%;
-//         font-size: .16rem;
-//         color: #777;
-//     }
-//     .song-popup-tips {
-//         font-size: .14rem;
-//         color: #808080;
-//         padding-top: .1rem;
-//         padding-bottom: .25rem;
-//     }
-//     .popup-group {
-//         width: 100%;
-//         display: flex;
-//         color: var(--main-color);
-//         background-color: #F0F0F0;
-//         font-size: .18rem;
-//         span {
-//             padding: .12rem 0;
-//             flex: 1;
-//         }
-//         .popup-sure {
-//             color: #ffffff;
-//             background-color: var(--main-color);
-//         }
-//     }
-// }
+.van-popup-song {
+    width: 80%;
+    border-radius: .08rem;
+}
+.song-popup {
+    text-align: center;
+    .title {
+        font-size: 18px;
+        font-weight: 500;
+        color: var(--font-main-color);
+        padding: .2rem 0 .15rem;
+    }
+    // .song-upload {
+    //     margin: 0 .5rem;
+    //     padding: .18rem 0 .1rem;
+    //     border-radius: .05rem;
+    //     border: 1px dashed transparent;
+    //     background: linear-gradient(0deg, transparent 6px, #777777 6px) repeat-y,
+    //         linear-gradient(0deg, transparent 50%, #777777 0) repeat-y,
+    //         linear-gradient(90deg, transparent 50%, #777777 0) repeat-x,
+    //         linear-gradient(90deg, transparent 50%, #777777 0) repeat-x;
+    //     background-size: 1px 12px, 1px 12px, 12px 1px, 12px 1px;
+    //     background-position: 0 0, 100% 0, 0 0, 0 100%;
+    //     font-size: .16rem;
+    //     color: #777;
+    // }
+    .song-upload {
+        border-radius: .05rem;
+        border: 1px solid #c5c7cb;
+        background-position: 0 0, 100% 0, 0 0, 0 100%;
+        font-size: .16rem;
+        color: #777;
+        width: 80px;
+        height: 80px;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        text-align: center;
+        .van-uploader__preview {
+            margin: 0;
+        }
+        p {
+            font-size: 13px;
+        }
+    }
+    /deep/.van-uploader {
+        margin: 0 auto;
+    }
+    /deep/.van-uploader__upload,
+    /deep/.van-uploader__preview-image {
+            width: 65px;
+            height: 65px;
+        }
+    .song-popup-tips {
+        font-size: .14rem;
+        color: #808080;
+        padding-bottom: .15rem
+        // padding-top: .1rem;
+        // padding-bottom: .25rem;
+    }
+    /deep/.van-cell {
+        padding: 13px 35px;
+    }
+    /deep/.van-field__label {
+        width: .8rem;
+        text-align: left;
+    }
+    .popup-group {
+        width: 100%;
+        display: flex;
+        color: var(--main-color);
+        background-color: #F0F0F0;
+        font-size: .18rem;
+        span {
+            padding: .12rem 0;
+            flex: 1;
+        }
+        .popup-sure {
+            color: #ffffff;
+            background-color: var(--main-color);
+        }
+    }
+}
 
 /deep/.van-uploader__upload {
     margin-bottom: 0;

+ 117 - 23
src/views/signup/SignUpPayment.vue

@@ -1,34 +1,37 @@
 <template>
-    <div class="signupPayment">
+    <div class="signUpPayment">
         <m-header />
         <m-step :number="4" />
 
         <van-cell-group>
-            <van-cell title="准考证号:" :border="false">
+            <!-- <van-cell title="准考证号:" :border="false">
                 <template #default>支付完成后系统生成</template>
-            </van-cell>
+            </van-cell> -->
             <van-cell title="考生名字:" :border="false">
-                <template #default>白鸽</template>
+                <template #default>{{ orderInfo.studentName }}</template>
             </van-cell>
             <van-cell title="报考专业:" :border="false">
-                <template #default>钢琴</template>
+                <template #default>{{ orderInfo.subjectName }}</template>
+            </van-cell>
+            <van-cell title="乐理知识:" :border="false">
+                <template #default>{{ orderInfo.examMusicTheoryLevel }}</template>
             </van-cell>
-            <van-cell title="报考曲目:" :border="false">
+            <!-- <van-cell title="报考曲目:" :border="false">
                 <template #default>
                     <p>钢琴音阶:B大调</p>
                     <p>钢琴练习曲:音画练习曲 OP.33 No.2</p>
                     <p>钢琴乐曲一:奏鸣曲第一乐章</p>
                     <p>钢琴乐曲二:奏鸣曲第二乐章</p>
                 </template>
+            </van-cell> -->
+            <van-cell title="预计考试日期:" :border="false">
+                <template #default>{{ orderInfo.examStartTime }}</template>
             </van-cell>
-            <van-cell title="考试时间:" :border="false">
-                <template #default>2020-04-23</template>
-            </van-cell>
-            <van-cell title="考试地点:" :border="false">
+            <!-- <van-cell title="考试地点:" :border="false">
                 <template #default>姜杰城航天桥分部</template>
-            </van-cell>
+            </van-cell> -->
             <van-cell title="报名费用:" :border="false">
-                <template #default>¥{{ payMoney }}</template>
+                <template #default>¥{{ orderInfo.fee }}</template>
             </van-cell>
         </van-cell-group>
 
@@ -38,7 +41,7 @@
 
         <div class="pay-group">
             <div class="pay-amount">
-                <span>¥</span>{{ payMoney }}
+                <span>¥</span>{{ orderInfo.fee }}
             </div>
             <div class="pay-btn">
                 <van-button color="var(--main-color)" @click="onSubmit" round>确认并支付</van-button>
@@ -52,14 +55,37 @@
 import MHeader from '@/components/MHeader'
 import MStep from '@/components/MStep'
 import MPayment from '@/components/MPayment'
-import { changeTwoDecimal } from '@/utils/common'
+import dayjs from 'dayjs'
+import numeral from 'numeral'
+// import { changeTwoDecimal } from '@/utils/common'
+import { getExamRegistration, repay } from './SignUpApi'
+import setLoading from '@/utils/loading'
+const levelToCN = {
+    1: "一级",
+    2: "二级",
+    3: "三级",
+    4: "四级",
+    5: "五级",
+    6: "六级",
+    7: "七级",
+    8: "八级",
+    9: "九级",
+    10: "十级",
+}
 export default {
-    name: 'signupPayment',
+    name: 'signUpPayment',
 	components: { MHeader, MStep, MPayment },
     data () {
+        const query = this.$route.query
+        // const examId = localStorage.getItem('examId')
+        const payMap = query.payMap ? JSON.parse(query.payMap) : {}
         return {
-            payMoney: changeTwoDecimal(480),
+            orderNo: query.orderNo,
+            examRegistrationId: query.examRegistrationId,
+            payMoney: 0,
+            orderInfo: { fee: 0 },
             isStatus: false,
+            payMap: payMap,
 			payment: {}, // 支付对象
         }
     },
@@ -70,22 +96,90 @@ export default {
         //     localStorage.setItem('Authorization', decodeURI(params.Authorization))
         //     localStorage.setItem('userInfo', decodeURI(params.Authorization))
         // }
+        this.__init()
     },
     methods: {
+        async __init() {
+            setLoading(true)
+            try {
+                const res = await getExamRegistration({ examRegistrationId: this.examRegistrationId })
+                setLoading(false)
+                const result = res.data
+                if(result.code == 200) {
+                    //
+                    const tempResult = result.data
+                    let fee = numeral(tempResult.theoryLevelFee).add(tempResult.levelFee)
+                    let number = fee.value()
+                    const tempLevel = tempResult.examMusicTheoryLevel ? levelToCN[tempResult.examMusicTheoryLevel] + `/${numeral(tempResult.theoryLevelFee).value()}元` : "无"
+                    const params = {
+                        studentName: tempResult.studentName,
+                        subjectName: tempResult.subjectName + `(${tempResult.level}/${numeral(tempResult.levelFee).value()}元)`,
+                        examMusicTheoryLevel: tempLevel,
+                        examStartTime: dayjs(tempResult.examStartTime).format("YYYY-MM-DD"),
+                        fee: numeral(number).format('0,0.00')
+                    }
+                    this.payMoney = number
+                    this.orderInfo = params
+                } else {
+                    this.$toast(result.msg)
+                }
+            } catch(err) {
+                //
+            }
+        },
         onChangeStatus(val) {
             this.isStatus = val
         },
-        onSubmit() {
-            // console.log('submit', values)
-            this.payment = {}
-            // 开始支付窗口
-            this.isStatus = true
+        async onSubmit() {
+            setLoading(true)
+            // 没有订单号说明是创建订单
+            if(!this.orderNo) {
+                setLoading(false)
+                this.onSubmitPay()
+                return
+            }
+
+            // 有订单号说明重新支付
+            try {
+                let res = await repay({ orderNo: this.orderNo })
+                let result = res.data
+                console.log(result)
+                setLoading(false)
+                if(result.code == 200) {
+                    this.payMap = result.data
+                    this.onSubmitPay()
+                } else {
+                    this.$toast(result.msg)
+                }
+            } catch(err) {
+                //
+            }
+        },
+        onSubmitPay() {
+            // submit 提交
+            let result = this.payMap
+            if(result.type == "YQPAY") {
+                let f = result.payMap
+                document.querySelector('#onSubmit').action = f.host
+                document.querySelector('#apiContent').value = f.apiContent
+                document.querySelector('#merNo').value = f.merNo
+                document.querySelector('#notifyUrl').value = f.notifyUrl
+                document.querySelector('#sign').value = f.sign
+                document.querySelector('#signType').value = f.signType
+                document.querySelector('#timestamp').value = f.timestamp
+                document.querySelector('#version').value = f.version
+                document.querySelector('#onSubmit').submit()
+            } else if (result.type == 'ADAPAY') {
+				this.payment = result
+				// 开始支付窗口
+				this.isStatus = true
+			}
         }
     }
 }
 </script>
 <style lang="less" scoped>
-.signupPayment {
+.signUpPayment {
     height: 100vh;
     overflow-y: auto;
     overflow-x: hidden;
@@ -101,7 +195,7 @@ export default {
         color: var(--font-main-color);
     }
     /deep/.van-cell__title {
-        width: .9rem;
+        width: 1.1rem;
         flex: none;
     }
     /deep/.van-cell__value {

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff