231f1f81 by 华明祺

no message

1 parent fade3bf0
1 # 忽略build目录下类型为js的文件的语法检查
2 build/*.js
3 # 忽略src/assets目录下文件的语法检查
4 # src/assets
5 # 忽略public目录下文件的语法检查
6 public
7 # 忽略当前目录下为js的文件的语法检查
8 # *.js
9 # 忽略当前目录下为vue的文件的语法检查
10 # *.vue
1 // Eslint 检查配置
2 module.exports = {
3 root: true,
4 parserOptions: {
5 parser: 'babel-eslint',
6 sourceType: 'module'
7 },
8 env: {
9 browser: true,
10 node: true,
11 es6: true,
12 'vue/setup-compiler-macros': true
13 },
14 extends: [
15 // 'eslint:recommended',
16 // 'plugin:vue/vue3-essential',
17 'plugin:vue/vue3-recommended'
18 ],
19 plugins: [
20 'vue',
21 'html'
22 ],
23 // add your custom rules here
24 // it is base on https://github.com/vuejs/eslint-config-vue
25 rules: {
26 // vue 中 script 的缩进
27 // 'vue/script-indent': [
28 // 'error',
29 // 2,
30 // {
31 // baseIndent: 0,
32 // switchCase: 1,
33 // ignores: []
34 // }
35 // ],
36 // vue 中 template 的空格
37 'vue/html-indent': [
38 'error',
39 2,
40 {
41 attribute: 1,
42 baseIndent: 1,
43 closeBracket: 0,
44 alignAttributesVertically: true,
45 ignores: []
46 }
47 ],
48 'vue/max-attributes-per-line': [2, {
49 singleline: { max: 5 },
50 multiline: { max: 5 }
51 }], // 一行5个属性
52 'vue/singleline-html-element-content-newline': 'off',
53 'vue/multiline-html-element-content-newline': 'off',
54 'vue/name-property-casing': ['error', 'PascalCase'],
55 'vue/no-v-html': 'off',
56 'accessor-pairs': 2,
57 'arrow-spacing': [2, {
58 'before': true,
59 'after': true
60 }],
61 'block-spacing': [2, 'always'],
62 'brace-style': [2, '1tbs', {
63 'allowSingleLine': true
64 }],
65 'camelcase': [0, {
66 'properties': 'always'
67 }],
68 'comma-dangle': [1, 'never'], // 对象的最后一个元素是否加逗号
69 'comma-spacing': [2, {
70 'before': false,
71 'after': true
72 }],
73 'comma-style': [2, 'last'],
74 'constructor-super': 2,
75 'curly': [2, 'multi-line'],
76 'dot-location': [2, 'property'],
77 'eol-last': 2,
78 'eqeqeq': ['off'],
79 'generator-star-spacing': [2, {
80 'before': true,
81 'after': true
82 }],
83 'handle-callback-err': [2, '^(err|error)$'],
84 'indent': [2, 2, {
85 'SwitchCase': 1
86 }],
87 'jsx-quotes': [2, 'prefer-single'],
88 'key-spacing': [2, {
89 'beforeColon': false,
90 'afterColon': true
91 }],
92 'keyword-spacing': [2, {
93 'before': true,
94 'after': true
95 }],
96 'new-cap': [2, {
97 'newIsCap': true,
98 'capIsNew': false
99 }],
100 'new-parens': 2,
101 'no-array-constructor': 2,
102 'no-caller': 2,
103 'no-console': 'off',
104 'no-class-assign': 2,
105 'no-cond-assign': 2,
106 'no-const-assign': 2,
107 'no-control-regex': 0,
108 'no-delete-var': 2,
109 'no-dupe-args': 2,
110 'no-dupe-class-members': 2,
111 'no-dupe-keys': 2,
112 'no-duplicate-case': 2,
113 'no-empty-character-class': 2,
114 'no-empty-pattern': 2,
115 'no-eval': 2,
116 'no-ex-assign': 2,
117 'no-extend-native': 1,
118 'no-extra-bind': 2,
119 'no-extra-boolean-cast': 2,
120 'no-extra-parens': [2, 'functions'],
121 'no-fallthrough': 2,
122 'no-floating-decimal': 2,
123 'no-func-assign': 2,
124 'no-implied-eval': 2,
125 'no-inner-declarations': [2, 'functions'],
126 'no-invalid-regexp': 2,
127 'no-irregular-whitespace': 2,
128 'no-iterator': 2,
129 'no-label-var': 2,
130 'no-labels': [2, {
131 'allowLoop': false,
132 'allowSwitch': false
133 }],
134 'no-lone-blocks': 2,
135 'no-mixed-spaces-and-tabs': 2, // 不能空格与tab混用
136 'no-multi-spaces': 2,
137 'no-multi-str': 2,
138 'no-multiple-empty-lines': [2, {
139 'max': 2
140 }], // 空行最多不能超过2行
141 'no-native-reassign': 2,
142 'no-negated-in-lhs': 2,
143 'no-new-object': 2,
144 'no-new-require': 2,
145 'no-new-symbol': 2,
146 'no-new-wrappers': 2,
147 'no-obj-calls': 2,
148 'no-octal': 2,
149 'no-octal-escape': 2,
150 'no-path-concat': 2,
151 'no-proto': 2,
152 'no-redeclare': 2,
153 'no-regex-spaces': 2,
154 'no-return-assign': [2, 'except-parens'],
155 'no-self-assign': 2,
156 'no-self-compare': 2,
157 'no-sequences': 2,
158 'no-shadow-restricted-names': 2,
159 'no-spaced-func': 2,
160 'no-sparse-arrays': 2,
161 'no-this-before-super': 2,
162 'no-throw-literal': 2,
163 'no-trailing-spaces': 0, // 一行结束后面不要有空格
164 'no-undef': 2, // 未定义
165 'no-undef-init': 2,
166 'no-unexpected-multiline': 2,
167 'no-unmodified-loop-condition': 2,
168 'no-unneeded-ternary': [2, {
169 'defaultAssignment': false
170 }],
171 'no-unreachable': 2,
172 'no-unsafe-finally': 2,
173 'no-unused-vars': [2, {
174 'vars': 'all',
175 'args': 'none'
176 }],
177 'no-useless-call': 2,
178 'no-useless-computed-key': 2,
179 'no-useless-constructor': 2,
180 'no-useless-escape': 0,
181 'no-whitespace-before-property': 2,
182 'no-with': 2,
183 'one-var': [2, {
184 'initialized': 'never'
185 }], // 连续声明
186 'operator-linebreak': [2, 'after', {
187 'overrides': {
188 '?': 'before',
189 ':': 'before'
190 }
191 }],
192 'padded-blocks': [2, 'never'], // 块语句内行首行尾是否要空行
193 'quotes': [1, 'single', {
194 'avoidEscape': true,
195 'allowTemplateLiterals': true
196 }], // 单引号
197 'semi': [1, 'never'], // 语句强制分号结尾 always
198 'semi-spacing': [2, {
199 'before': false,
200 'after': true
201 }], // 分号前后空格
202 'space-after-keywords': [0, 'always'], // 关键字后面是否要空一格
203 'space-before-blocks': [2, 'always'], // 不以新行开始的块{前面要不要有空格
204 'space-before-function-paren': [2, 'never'], // 函数定义时括号前面要不要有空格
205 'space-in-parens': [2, 'never'], // 小括号里面要不要有空格
206 'space-infix-ops': 2, // 中缀操作符周围要不要有空格
207 'space-unary-ops': [2, {
208 'words': true,
209 'nonwords': false
210 }],
211 'spaced-comment': [2, 'always', {
212 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',', '#region', '#endregion']
213 }],
214 'template-curly-spacing': [2, 'never'],
215 'use-isnan': 2,
216 'valid-typeof': 2,
217 'wrap-iife': [2, 'any'],
218 'yield-star-spacing': [2, 'both'],
219 'yoda': [2, 'never'],
220 'prefer-const': 2,
221 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
222 'object-curly-spacing': [2, 'always', {
223 objectsInObjects: false
224 }],
225 'array-bracket-spacing': [2, 'never'],
226 'vue/multi-word-component-names': 'off'
227 },
228 globals: {
229 // 'defineEmits': 'readonly'
230 '__DEV__': true,
231 'If': true,
232 'For': true,
233 'POBrowser': true
234 }
235 }
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
18 "@vueuse/core": "^10.1.2", 18 "@vueuse/core": "^10.1.2",
19 "axios": "0.27.2", 19 "axios": "0.27.2",
20 "crypto-js": "^4.1.1", 20 "crypto-js": "^4.1.1",
21 "dayjs": "^1.11.13",
21 "echarts": "5.4.0", 22 "echarts": "5.4.0",
22 "echarts-wordcloud": "^2.1.0", 23 "echarts-wordcloud": "^2.1.0",
23 "element-plus": "2.6.1", 24 "element-plus": "2.6.1",
......
...@@ -14,82 +14,38 @@ ...@@ -14,82 +14,38 @@
14 </div> 14 </div>
15 </div> 15 </div>
16 <div v-loading="loading" class="box"> 16 <div v-loading="loading" class="box">
17 <el-collapse v-model="activeName" accordion style="--el-collapse-header-height:'auto'"> 17 <div v-for="(h,index) in list" :key="index">
18 <el-collapse-item v-for="(h,index) in list" :name="index" class="hotel">
19 <template #title>
20 <el-row :gutter="20" align="middle" class="w100"> 18 <el-row :gutter="20" align="middle" class="w100">
21 <el-col :span="4"> 19 <el-col :span="4">
22 <div class="index">{{ language == 0 ? '路线' : 'Route' }}{{ index + 1 }} 20 <div class="index">{{ language == 0 ? '路线' : 'Route' }}{{ index + 1 }}
23 <img src="@/assets/booking/arrow.png"/>
24 </div> 21 </div>
25 </el-col> 22 </el-col>
26 <el-col :span="7"> 23 <el-col :span="6">
27 <p class="esp">{{ h.checkIn }}</p> 24 <p class="esp">{{ h.checkIn }}</p>
28 </el-col> 25 </el-col>
29 <el-col :span="4" class="text-center"> 26 <el-col :span="4" class="text-center">
30 <img class="mauto w40px" src="@/assets/booking/wf.png"/> 27 <img class="mauto w40px" src="@/assets/booking/wf.png"/>
31 </el-col> 28 </el-col>
32 <el-col :span="7"> 29 <el-col :span="6">
33 <p class="esp ">{{ h.checkOut }}</p> 30 <p class="esp ">{{ h.checkOut }}</p>
34 </el-col> 31 </el-col>
35 </el-row> 32 <el-col :span="2">
36 </template> 33 <div v-if="language==0" class="price">¥
37 34 <span>{{h.upPrice}}</span>
38 <!-- <div class="plr20">--> 35 </div>
39 <!-- <div v-for="(r,index) in h.carVoList" :key="index" class="room">--> 36 <div v-else class="price">
40 <!-- <el-row :gutter="30" align="middle">--> 37
41 <!-- <el-col :span="4">--> 38 <span>{{h.upPriceEn}}</span>
42 <!-- <div class="roomImg">--> 39 </div>
43 <!-- <img :src="fillImgUrl(r.photos?.split(',')[0])">-->
44 <!-- </div>-->
45 <!-- </el-col>-->
46 <!-- <el-col :span="14">-->
47 <!-- <h3 class="name flex">{{ r.carType }}-->
48 <!-- <div class="tagbox">-->
49 <!-- <span class="tag">{{ r.carColor }}</span>-->
50 <!-- <span v-show="r.checkOut==1" class="tag">{{ language == 0 ? '可送车' : 'drop-off' }}</span>-->
51 <!-- <span v-show="r.checkIn==1" class="tag">{{ language == 0 ? '可接车' : 'pick-up' }}</span>-->
52 <!-- </div>-->
53 <!-- </h3>-->
54 <!-- <div class="text-gray mt20">-->
55 <!-- <span class="mr20">{{ language == 0 ? '座位数' : 'Seats' }}: {{ r.carSeat }}</span>-->
56 <!-- <span class="mr20">|</span>-->
57 <!-- <span :span="8">{{-->
58 <!-- language == 0 ? '运营时间' : 'Servers Time'-->
59 <!-- }}: {{ r.operStart }} ~ {{ r.operEnd }}</span>-->
60 <!-- </div>-->
61 <!-- </el-col>-->
62 <!-- <el-col :span="3">-->
63 <!-- <div v-if="language==0" class="price">¥-->
64 <!-- <span-->
65 <!-- v-if="r.outPrice&&r.inPrice">{{ Number(r.inPrice) > Number(r.outPrice) ? r.outPrice : r.inPrice }}</span>-->
66 <!-- <span v-else-if="r.inPrice>0">{{ r.inPrice }}</span>-->
67 <!-- <span v-else>{{ r.outPrice }}</span>-->
68 <!-- 起-->
69 <!-- </div>-->
70 <!-- <div v-else class="price">-->
71 <!-- €-->
72 <!-- <span-->
73 <!-- v-if="r.outPriceEn&&r.inPriceEn">{{ (Number(r.inPriceEn) || 0) > Number(r.outPriceEn) ? r.outPriceEn : r.inPriceEn }}</span>-->
74 <!-- <span v-else-if="r.inPriceEn>0">{{ r.inPriceEn }}</span>-->
75 <!-- <span v-else>{{ r.outPriceEn }}</span>-->
76 <!-- </div>-->
77
78 <!-- </el-col>-->
79 <!-- <el-col :span="3">-->
80 <!-- <el-button class="btn-lineG w100" round type="primary" @click="goOrder(h,r)">-->
81 <!-- {{ language == 0 ? '我要预订' : 'Select' }}-->
82 <!-- </el-button>-->
83 <!-- </el-col>-->
84 <!-- </el-row>-->
85 <!-- </div>-->
86
87 <!-- <el-empty v-if="h.carVoList.length == 0" :image="`/img/order_no.png`" :image-size="228" description=""/>-->
88 <!-- </div>-->
89
90 </el-collapse-item>
91 </el-collapse>
92 40
41 </el-col>
42 <el-col :span="2">
43 <el-button class="btn-lineG w100" round type="primary" @click="goOrder(h)">
44 {{ language == 0 ? '我要预订' : 'Select' }}
45 </el-button>
46 </el-col>
47 </el-row>
48 </div>
93 49
94 <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description=""/> 50 <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description=""/>
95 <div style="height: 50px"></div> 51 <div style="height: 50px"></div>
...@@ -144,8 +100,7 @@ function goOrder(item, car) { ...@@ -144,8 +100,7 @@ function goOrder(item, car) {
144 id: item.id, 100 id: item.id,
145 }, 101 },
146 query: { 102 query: {
147 item: encodeURIComponent(JSON.stringify(item)), 103 item: encodeURIComponent(JSON.stringify(item))
148 car: encodeURIComponent(JSON.stringify(car)),
149 } 104 }
150 }) 105 })
151 } 106 }
......
...@@ -2,148 +2,73 @@ ...@@ -2,148 +2,73 @@
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4 <el-card :body-style="{ padding: '0px' }" class="mt20"> 4 <el-card :body-style="{ padding: '0px' }" class="mt20">
5 <div slot="header"> 5 <template #header>
6 <div class="bg-lineg uppercase">{{ 6 <div class="bg-lineg uppercase">{{
7 language == 0 ? '车辆预约下单' : 'TRANSPORTATION RESERVATION order' 7 language == 0 ? '车辆预约下单' : 'TRANSPORTATION RESERVATION order'
8 }} 8 }}
9 </div> 9 </div>
10 </div> 10 </template>
11 <el-row :gutter="20" class="pd20"> 11 <el-row :gutter="20" class="pd20">
12 <el-col :span="14"> 12 <el-col :span="14">
13 <div class="border-info"> 13 <div class="border-info">
14 <div class="flex aic"> 14 <div class="flex aic">
15 <h3 class="esp">{{ item.checkIn }}</h3> 15 <h3 class="esp">{{ item.checkIn }}</h3>
16 <img class="w40px mlr20 " src="@/assets/booking/wf.png" style="height: 40px;"/> 16 <img class="w40px mlr20 " src="@/assets/booking/wf.png" style="height: 40px;">
17 <h3 class="esp">{{ item.checkOut }}</h3> 17 <h3 class="esp">{{ item.checkOut }}</h3>
18 </div> 18 </div>
19 <div class="flex">
20 <el-image :src="fillImgUrl(car.photos?.split(',')[0])" class="w150px br10 as16_9" fit="cover"/>
21 <div class="ml20">
22 <div class="roomType">{{ car.carType }}</div>
23 <div class="tagbox">
24 <span class="tag">{{ car.carColor }}</span>
25 <span v-show="car.checkOut==1" class="tag">{{ language == 0 ? '可送车' : 'Can send car' }}</span>
26 <span v-show="car.checkIn==1" class="tag">{{ language == 0 ? '可接车' : 'Can pick up' }}</span>
27 </div>
28 <div class="room">
29 <span>{{ language == 0 ? '座位数' : 'Seats' }}: {{ car.carSeat }}</span>
30 <span> | {{
31 language == 0 ? '运营时间' : 'Servers Time'
32 }}: {{ car.operStart }} ~ {{ car.operEnd }}</span>
33 </div>
34 </div>
35 </div>
36
37 </div> 19 </div>
38 20
39 <div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div> 21 <div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div>
40 <div class="border-rr mt20 pd20"> 22 <div class="border-rr mt20 pd20">
41 <el-form ref="formRef" :label-width="language == 0 ?'120':'200'" :model="form" :rules="rules"> 23 <el-form ref="formRef" :label-width="language == 0 ?'120':'200'" :model="form" :rules="rules">
42 <el-form-item :label="language==0?'车辆数量':'cars'" prop="num" required> 24 <el-form-item :label="language==0?'人数':'Person Count'" required>
43 <el-input-number v-model="form.num" :min="1" @change="changecarNum"/> 25 <el-input-number v-model="form.pickUpBo.count" type="text" @change="changecarNum" />
44 </el-form-item>
45 <el-form-item :label="language==0?'是否接送':'use Type'" prop="useType" required>
46 <el-checkbox-group v-model="form.useType" @change="changeUseType">
47 <el-checkbox v-if="car.checkIn == 1" value="0">
48 {{ language == 0 ? '接站' : 'Pick up' }}
49 </el-checkbox>
50 <el-checkbox v-if="car.checkOut == 1" value="1">{{ language == 0 ? '送站' : 'Drop off' }}
51 </el-checkbox>
52 </el-checkbox-group>
53 </el-form-item> 26 </el-form-item>
54
55 <div v-show="form.useType?.indexOf('0')> -1">
56 <h3 class="afterLine">{{ language == 0 ? '接站信息' : 'Pick up information' }}</h3>
57 <el-form-item :label="language==0?'用车日期':'Date'" required> 27 <el-form-item :label="language==0?'用车日期':'Date'" required>
58 <el-date-picker v-model="date1" :disabled-date="disabledDate" 28 <el-date-picker
29 v-model="date1" :disabled-date="disabledDate"
59 :placeholder="language==0?'选择日期':'Select date'" 30 :placeholder="language==0?'选择日期':'Select date'"
60 format="YYYY-MM-DD" type="date" 31 format="YYYY-MM-DD" type="date"
61 value-format="YYYY-MM-DD"/> 32 value-format="YYYY-MM-DD"
62 <!-- :picker-options="pickerOptions"--> 33 />
63 </el-form-item> 34 </el-form-item>
64 <el-form-item :label="language==0?'用车时间':'Time'" required> 35 <el-form-item :label="language==0?'用车时间':'Time'" required>
65 <el-time-picker 36 <el-time-picker v-model="revTime1" format="HH:mm" value-format="HH:mm" @change="bindTimeChange" />
66 v-model="revTime1" :end="car.operEnd" :start="car.operStart"
67 format="HH:mm" value-format="HH:mm" @change="bindTimeChange"
68 />
69 </el-form-item> 37 </el-form-item>
70 <el-form-item :label="language==0?'联系人':'Contacts'" required> 38 <el-form-item :label="language==0?'联系人':'Contacts'" required>
71 <el-input v-model="form.pickUpBo.contacts" type="text"/> 39 <el-input v-model="form.pickUpBo.contacts" type="text" />
72 </el-form-item> 40 </el-form-item>
73 <el-form-item :label="language==0?'联系电话':'Phone'" required> 41 <el-form-item :label="language==0?'联系电话':'Phone'" required>
74 <el-input v-model="form.pickUpBo.phone" type="text"/> 42 <el-input v-model="form.pickUpBo.phone" type="text" />
75 </el-form-item>
76 <el-form-item :label="language==0?'人数':'Person Count'" required>
77 <el-input-number v-model="form.pickUpBo.count" type="text"/>
78 </el-form-item> 43 </el-form-item>
79 <el-form-item :label="language==0?'航班/火车班次:':'Flight/Train No'" required> 44 <el-form-item :label="language==0?'航班/火车班次:':'Flight/Train No'" required>
80 <el-input v-model="form.pickUpBo.no" type="text"/> 45 <el-input v-model="form.pickUpBo.no" type="text" />
81 </el-form-item> 46 </el-form-item>
82 <el-form-item :label="language==0?'接机/接站地点':'Pick up/Drop off Address'" required> 47 <el-form-item :label="language==0?'接机/接站地点':'Pick up/Drop off Address'" required>
83 <el-input v-model="form.pickUpBo.noAddress" type="text"/> 48 <el-input v-model="form.pickUpBo.noAddress" type="text" />
84 </el-form-item> 49 </el-form-item>
85 <el-form-item :label="language==0?'送达地点':'Delivery Address'" required> 50 <el-form-item :label="language==0?'送达地点':'Delivery Address'" required>
86 <el-input v-model="form.pickUpBo.deliveryAddress" type="text"/> 51 <el-input v-model="form.pickUpBo.deliveryAddress" type="text" />
87 </el-form-item> 52 </el-form-item>
88 <el-form-item :label="language==0?'备注':'Remarks'"> 53 <el-form-item :label="language==0?'备注':'Remarks'">
89 <el-input v-model="form.pickUpBo.remarks" rows="3" type="textarea"/> 54 <el-input v-model="form.pickUpBo.remarks" rows="3" type="textarea" />
90 </el-form-item>
91 </div>
92 <div v-show="form.useType?.indexOf('1')> -1">
93 <h3 class="afterLine">{{ language == 0 ? '送站信息' : 'Drop off information' }}</h3>
94 <el-form-item :label="language==0?'用车日期':'Date'" required>
95 <el-date-picker v-model="date2" :disabled-date="disabledDate"
96 :placeholder="language==0?'选择日期':'Select date'"
97 format="YYYY-MM-DD" type="date"
98 value-format="YYYY-MM-DD"/>
99 <!-- :picker-options="pickerOptions"-->
100 </el-form-item>
101 <el-form-item :label="language==0?'用车时间':'Time'" required>
102 <el-time-picker
103 v-model="revTime2" :end="car.operEnd" :start="car.operStart"
104 format="HH:mm" value-format="HH:mm" @change="bindTimeChange2"
105 />
106 </el-form-item>
107 <el-form-item :label="language==0?'联系人':'Contacts'" required>
108 <el-input v-model="form.dropOffBo.contacts" type="text"/>
109 </el-form-item>
110 <el-form-item :label="language==0?'联系电话':'Phone'" required>
111 <el-input v-model="form.dropOffBo.phone" type="text"/>
112 </el-form-item>
113 <el-form-item label="人数" required>
114 <el-input v-model="form.dropOffBo.count" type="text"/>
115 </el-form-item>
116 <el-form-item label="送达地点" required>
117 <el-input v-model="form.dropOffBo.deliveryAddress" type="text"/>
118 </el-form-item> 55 </el-form-item>
119 <el-form-item :label="language==0?'备注':'Remarks'">
120 <el-input v-model="form.dropOffBo.remarks" rows="3" type="textarea"/>
121 </el-form-item>
122 </div>
123 </el-form> 56 </el-form>
124 </div> 57 </div>
125 </el-col> 58 </el-col>
126 <el-col :span="10"> 59 <el-col :span="10">
127 <div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div> 60 <div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div>
128 <div class="border-rr mt20 pd20 ccitemBox"> 61 <div class="border-rr mt20 pd20 ccitemBox">
129 <label v-show="form.useType.indexOf('0')>-1"> {{ language == 0 ? '接站车辆费' : 'Room fee' }} 62 <label> {{ language == 0 ? '单价' : 'Price' }}
130 <span class="fr">{{ language == 0 ? '¥' : '€' }}{{ form.pickUpBo.total }}</span> 63 <span class="fr">{{ language == 0 ? '¥' : '€' }}{{ language == 0 ? item.upPrice: item.upPriceEn }}</span>
131 </label> 64 </label>
132 <div v-show="form.useType.indexOf('0')>-1" class="ccitem"> 65 <div class="ccitem">
133 {{ car.name }} 66 <span>{{ form.pickUpBo.count }} *{{ language == 0 ? '¥' : '€' }}{{ language == 0 ? item.upPrice: item.upPriceEn }}</span>
134 <span>{{ form.num }} *{{ language == 0 ? '¥' : '€' }}{{ car.inPrice }}</span>
135 </div>
136 <label v-show="form.useType.indexOf('1')>-1">{{ language == 0 ? '送站车辆费' : 'Extra bed fee' }}
137 <span class="fr">{{ language == 0 ? '¥' : '€' }}{{ form.dropOffBo.total }}</span>
138 </label>
139
140 <div v-show="form.useType.indexOf('1')>-1" class="ccitem">
141 {{ car.name }}
142 <span>{{ form.num }}*{{ language == 0 ? '¥' : '€' }}{{ car.outPrice }}</span>
143 </div> 67 </div>
144 68
145 <label>{{ language == 0 ? '共计' : 'Total' }}<span 69 <label>{{ language == 0 ? '共计' : 'Total' }}<span
146 class="fr bigMoney">{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label> 70 class="fr bigMoney"
71 >{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label>
147 72
148 </div> 73 </div>
149 </el-col> 74 </el-col>
...@@ -160,25 +85,28 @@ ...@@ -160,25 +85,28 @@
160 </label> 85 </label>
161 </el-col> 86 </el-col>
162 <el-col :span="12" class="text-right"> 87 <el-col :span="12" class="text-right">
163 <el-button :loading="payLoading" class="btn-lineG w200px" round type="primary" @click="submit"> 88 <el-button
89 :loading="payLoading" :disabled="money<=0" class="btn-lineG w200px" round type="primary"
90 @click="submit"
91 >
164 {{ language == 0 ? '确认付款' : 'Pay' }} 92 {{ language == 0 ? '确认付款' : 'Pay' }}
165 </el-button> 93 </el-button>
166 </el-col> 94 </el-col>
167 </el-row> 95 </el-row>
168 </el-card> 96 </el-card>
169 <div style="height: 60px;"></div> 97 <div style="height: 60px;" />
170 </div> 98 </div>
171 </div> 99 </div>
172 </template> 100 </template>
173 101
174 <script setup> 102 <script setup>
175 import {useRouter, useRoute} from "vue-router"; 103 import { useRouter, useRoute } from 'vue-router'
176 import {ref, reactive, onMounted} from "vue"; 104 import { ref, onMounted, watch } from 'vue'
177 import {useStorage} from "@vueuse/core/index"; 105 import { useStorage } from '@vueuse/core/index'
178 import {checkResidueRoom, getBaseInfoByActiveId, newsSubmitOrderHotel, submitOrderCar} from "@/apiPc/booking" 106 import { getBaseInfoByActiveId, submitOrderCar } from '@/apiPc/booking'
179 import dayjs from 'dayjs' 107 import dayjs from 'dayjs'
180 import {ElMessage, ElMessageBox} from "element-plus"; 108 import { ElMessage, ElMessageBox } from 'element-plus'
181 import useUserStore from "@/store/modules/user"; 109 import useUserStore from '@/store/modules/user'
182 110
183 const payLoading = ref(false) 111 const payLoading = ref(false)
184 const user = useUserStore().user 112 const user = useUserStore().user
...@@ -186,76 +114,32 @@ const language = useStorage('language', 0) ...@@ -186,76 +114,32 @@ const language = useStorage('language', 0)
186 const router = useRouter() 114 const router = useRouter()
187 const route = useRoute() 115 const route = useRoute()
188 const item = ref({}) 116 const item = ref({})
189 const car = ref({})
190 const revTime1 = ref('') 117 const revTime1 = ref('')
191 const revTime2 = ref('')
192 const date1 = ref('') 118 const date1 = ref('')
193 const date2 = ref('')
194 const form = ref({ 119 const form = ref({
195 num: 1,
196 pickUpBo: { 120 pickUpBo: {
197 carsList: [], 121 count: 1
198 total: 0 122 }
199 },
200 dropOffBo: {
201 carsList: [],
202 total: 0
203 },
204 useType: []
205 }) 123 })
206 const rzRange = ref([]) 124
207 const rzUserArr = ref([])
208 const money = ref(0) 125 const money = ref(0)
209 const choseRooms = ref([])
210 const rules = ref({}) 126 const rules = ref({})
211 const lform = ref({}) 127 const lform = ref({})
212 128
213 129
214 onMounted(() => { 130 onMounted(() => {
215 item.value = JSON.parse(decodeURIComponent(route.query.item)) 131 item.value = JSON.parse(decodeURIComponent(route.query.item))
216 car.value = JSON.parse(decodeURIComponent(route.query.car))
217 money.value = 0 132 money.value = 0
218 console.log(item.value, car.value) 133 changecarNum()
219 initDays() 134 initDays()
220 }) 135 })
221 136
222 function changeUseType(e) { 137 function changecarNum() {
223 console.log(form.value.useType) 138 money.value = (form.value.pickUpBo.count * (language.value == 0 ? item.value.upPrice : item.value.upPriceEn)).toFixed(2)
224 changecarNum()
225 console.log(form.value)
226 }
227
228 function changecarNum(e) {
229 var m1 = 0
230 var m2 = 0
231 if (form.value.useType.indexOf('0') > -1) {
232 if (language.value == 0) {
233 m1 = form.value.num * car.value.inPrice
234 } else {
235 m1 = form.value.num * car.value.inPriceEn
236 }
237 }
238 if (form.value.useType.indexOf('1') > -1) {
239 if (language.value == 0) {
240 m2 = form.value.num * car.value.outPrice
241 } else {
242 m2 = form.value.num * car.value.outPriceEn
243
244 }
245 }
246 form.value.pickUpBo.total = m1.toFixed(2)
247 form.value.dropOffBo.total = m2.toFixed(2)
248 console.log(form.value.num, m1, m2)
249 money.value = (m1 + m2).toFixed(2)
250 } 139 }
251 140
252 function bindTimeChange(e) { 141 function bindTimeChange(e) {
253 revTime1.value = e 142 revTime1.value = e
254 console.log(e)
255 }
256
257 function bindTimeChange2(e) {
258 revTime2.value = e
259 } 143 }
260 144
261 function initDays() { 145 function initDays() {
...@@ -267,10 +151,8 @@ function initDays() { ...@@ -267,10 +151,8 @@ function initDays() {
267 } 151 }
268 152
269 function disabledDate(date) { 153 function disabledDate(date) {
270 // const today = dayjs().format('YYYY-MM-DD')
271 if (lform.value.carStart) { 154 if (lform.value.carStart) {
272 return (date.getTime() < dayjs(lform.value.carStart).valueOf()) || (date.getTime() > dayjs(lform.value.carEnd).valueOf()) 155 return (date.getTime() < dayjs(lform.value.carStart).valueOf()) || (date.getTime() > dayjs(lform.value.carEnd).valueOf())
273
274 } 156 }
275 return true 157 return true
276 } 158 }
...@@ -280,8 +162,8 @@ function submit() { ...@@ -280,8 +162,8 @@ function submit() {
280 useUserStore().setReLogin() 162 useUserStore().setReLogin()
281 return 163 return
282 } 164 }
283 if (money.value == 0) { 165 if (money.value <= 0) {
284 ElMessage.error(language.value == 0 ? '请选择接站/送站' : 'Please select pickup/drop off') 166 // ElMessage.error(language.value == 0 ? '请选择接站/送站' : 'Please select pickup/drop off')
285 return 167 return
286 } 168 }
287 // 提交确认 169 // 提交确认
...@@ -296,38 +178,7 @@ function submit() { ...@@ -296,38 +178,7 @@ function submit() {
296 178
297 function pushFrom() { 179 function pushFrom() {
298 payLoading.value = true 180 payLoading.value = true
299 var obj = {
300 avcId: car.value.id,
301 num: form.value.num,
302 price: car.value.inPrice,
303 carSeat: car.value.carSeat,
304 carColor: car.value.carColor,
305 typeName: "接站",
306 name: car.value.carType,
307 checkIn: car.value.checkIn,
308 checkOut: car.value.checkOut,
309 total: (form.value.num * car.value.inPrice).toFixed(2)
310 }
311 var obj2 = {
312 avcId: car.value.id,
313 num: form.value.num,
314 price: car.value.outPrice,
315 carSeat: car.value.carSeat,
316 carColor: car.value.carColor,
317 typeName: "送站",
318 name: car.value.carType,
319 checkIn: car.value.checkIn,
320 checkOut: car.value.checkOut,
321 total: (form.value.num * car.value.outPrice).toFixed(2)
322 }
323 if (form.value.useType.indexOf('0') > -1) {
324 form.value.pickUpBo.carsList.push(obj)
325 form.value.pickUpBo.revTime = date1.value + ' ' + revTime1.value 181 form.value.pickUpBo.revTime = date1.value + ' ' + revTime1.value
326 }
327 if (form.value.useType.indexOf('1') > -1) {
328 form.value.dropOffBo.carsList.push(obj2)
329 form.value.dropOffBo.revTime = date2.value + ' ' + revTime2.value
330 }
331 form.value.activeId = item.value.activityId 182 form.value.activeId = item.value.activityId
332 form.value.lavId = item.value.id 183 form.value.lavId = item.value.id
333 form.value.checkIn = item.value.checkIn 184 form.value.checkIn = item.value.checkIn
......
1 <template>
2 <div>
3 <div class="box">
4 <el-card :body-style="{ padding: '0px' }" class="mt20">
5 <div slot="header">
6 <div class="bg-lineg uppercase">{{
7 language == 0 ? '车辆预约下单' : 'TRANSPORTATION RESERVATION order'
8 }}
9 </div>
10 </div>
11 <el-row :gutter="20" class="pd20">
12 <el-col :span="14">
13 <div class="border-info">
14 <div class="flex aic">
15 <h3 class="esp">{{ item.checkIn }}</h3>
16 <img class="w40px mlr20 " src="@/assets/booking/wf.png" style="height: 40px;"/>
17 <h3 class="esp">{{ item.checkOut }}</h3>
18 </div>
19 <div class="flex">
20 <el-image :src="fillImgUrl(car.photos?.split(',')[0])" class="w150px br10 as16_9" fit="cover"/>
21 <div class="ml20">
22 <div class="roomType">{{ car.carType }}</div>
23 <div class="tagbox">
24 <span class="tag">{{ car.carColor }}</span>
25 <span v-show="car.checkOut==1" class="tag">{{ language == 0 ? '可送车' : 'Can send car' }}</span>
26 <span v-show="car.checkIn==1" class="tag">{{ language == 0 ? '可接车' : 'Can pick up' }}</span>
27 </div>
28 <div class="room">
29 <span>{{ language == 0 ? '座位数' : 'Seats' }}: {{ car.carSeat }}</span>
30 <span> | {{
31 language == 0 ? '运营时间' : 'Servers Time'
32 }}: {{ car.operStart }} ~ {{ car.operEnd }}</span>
33 </div>
34 </div>
35 </div>
36
37 </div>
38
39 <div class="leftboderTT">{{ language == 0 ? '预约信息' : 'Reservation information' }}</div>
40 <div class="border-rr mt20 pd20">
41 <el-form ref="formRef" :label-width="language == 0 ?'120':'200'" :model="form" :rules="rules">
42 <el-form-item :label="language==0?'车辆数量':'cars'" prop="num" required>
43 <el-input-number v-model="form.num" :min="1" @change="changecarNum"/>
44 </el-form-item>
45 <el-form-item :label="language==0?'是否接送':'use Type'" prop="useType" required>
46 <el-checkbox-group v-model="form.useType" @change="changeUseType">
47 <el-checkbox v-if="car.checkIn == 1" value="0">
48 {{ language == 0 ? '接站' : 'Pick up' }}
49 </el-checkbox>
50 <el-checkbox v-if="car.checkOut == 1" value="1">{{ language == 0 ? '送站' : 'Drop off' }}
51 </el-checkbox>
52 </el-checkbox-group>
53 </el-form-item>
54
55 <div v-show="form.useType?.indexOf('0')> -1">
56 <h3 class="afterLine">{{ language == 0 ? '接站信息' : 'Pick up information' }}</h3>
57 <el-form-item :label="language==0?'用车日期':'Date'" required>
58 <el-date-picker v-model="date1" :disabled-date="disabledDate"
59 :placeholder="language==0?'选择日期':'Select date'"
60 format="YYYY-MM-DD" type="date"
61 value-format="YYYY-MM-DD"/>
62 <!-- :picker-options="pickerOptions"-->
63 </el-form-item>
64 <el-form-item :label="language==0?'用车时间':'Time'" required>
65 <el-time-picker
66 v-model="revTime1" :end="car.operEnd" :start="car.operStart"
67 format="HH:mm" value-format="HH:mm" @change="bindTimeChange"
68 />
69 </el-form-item>
70 <el-form-item :label="language==0?'联系人':'Contacts'" required>
71 <el-input v-model="form.pickUpBo.contacts" type="text"/>
72 </el-form-item>
73 <el-form-item :label="language==0?'联系电话':'Phone'" required>
74 <el-input v-model="form.pickUpBo.phone" type="text"/>
75 </el-form-item>
76 <el-form-item :label="language==0?'人数':'Person Count'" required>
77 <el-input-number v-model="form.pickUpBo.count" type="text"/>
78 </el-form-item>
79 <el-form-item :label="language==0?'航班/火车班次:':'Flight/Train No'" required>
80 <el-input v-model="form.pickUpBo.no" type="text"/>
81 </el-form-item>
82 <el-form-item :label="language==0?'接机/接站地点':'Pick up/Drop off Address'" required>
83 <el-input v-model="form.pickUpBo.noAddress" type="text"/>
84 </el-form-item>
85 <el-form-item :label="language==0?'送达地点':'Delivery Address'" required>
86 <el-input v-model="form.pickUpBo.deliveryAddress" type="text"/>
87 </el-form-item>
88 <el-form-item :label="language==0?'备注':'Remarks'">
89 <el-input v-model="form.pickUpBo.remarks" rows="3" type="textarea"/>
90 </el-form-item>
91 </div>
92 <div v-show="form.useType?.indexOf('1')> -1">
93 <h3 class="afterLine">{{ language == 0 ? '送站信息' : 'Drop off information' }}</h3>
94 <el-form-item :label="language==0?'用车日期':'Date'" required>
95 <el-date-picker v-model="date2" :disabled-date="disabledDate"
96 :placeholder="language==0?'选择日期':'Select date'"
97 format="YYYY-MM-DD" type="date"
98 value-format="YYYY-MM-DD"/>
99 <!-- :picker-options="pickerOptions"-->
100 </el-form-item>
101 <el-form-item :label="language==0?'用车时间':'Time'" required>
102 <el-time-picker
103 v-model="revTime2" :end="car.operEnd" :start="car.operStart"
104 format="HH:mm" value-format="HH:mm" @change="bindTimeChange2"
105 />
106 </el-form-item>
107 <el-form-item :label="language==0?'联系人':'Contacts'" required>
108 <el-input v-model="form.dropOffBo.contacts" type="text"/>
109 </el-form-item>
110 <el-form-item :label="language==0?'联系电话':'Phone'" required>
111 <el-input v-model="form.dropOffBo.phone" type="text"/>
112 </el-form-item>
113 <el-form-item label="人数" required>
114 <el-input v-model="form.dropOffBo.count" type="text"/>
115 </el-form-item>
116 <el-form-item label="送达地点" required>
117 <el-input v-model="form.dropOffBo.deliveryAddress" type="text"/>
118 </el-form-item>
119 <el-form-item :label="language==0?'备注':'Remarks'">
120 <el-input v-model="form.dropOffBo.remarks" rows="3" type="textarea"/>
121 </el-form-item>
122 </div>
123 </el-form>
124 </div>
125 </el-col>
126 <el-col :span="10">
127 <div class="leftboderTT">{{ language == 0 ? '订单明细' : 'Order details' }}</div>
128 <div class="border-rr mt20 pd20 ccitemBox">
129 <label v-show="form.useType.indexOf('0')>-1"> {{ language == 0 ? '接站车辆费' : 'Room fee' }}
130 <span class="fr">{{ language == 0 ? '¥' : '€' }}{{ form.pickUpBo.total }}</span>
131 </label>
132 <div v-show="form.useType.indexOf('0')>-1" class="ccitem">
133 {{ car.name }}
134 <span>{{ form.num }} *{{ language == 0 ? '¥' : '€' }}{{ car.inPrice }}</span>
135 </div>
136 <label v-show="form.useType.indexOf('1')>-1">{{ language == 0 ? '送站车辆费' : 'Extra bed fee' }}
137 <span class="fr">{{ language == 0 ? '¥' : '€' }}{{ form.dropOffBo.total }}</span>
138 </label>
139
140 <div v-show="form.useType.indexOf('1')>-1" class="ccitem">
141 {{ car.name }}
142 <span>{{ form.num }}*{{ language == 0 ? '¥' : '€' }}{{ car.outPrice }}</span>
143 </div>
144
145 <label>{{ language == 0 ? '共计' : 'Total' }}<span
146 class="fr bigMoney">{{ language == 0 ? '¥' : '€' }}{{ money }}</span></label>
147
148 </div>
149 </el-col>
150 </el-row>
151 </el-card>
152
153 <el-card class="mt30">
154 <el-row align="middle" justify="space-between">
155 <el-col :span="12">
156 <label>{{ language == 0 ? '共计金额' : 'Total' }}
157 <span class=" text-warning"> {{ language == 0 ? '¥' : '€' }}<span class="bigMoney">{{
158 money
159 }}</span></span>
160 </label>
161 </el-col>
162 <el-col :span="12" class="text-right">
163 <el-button :loading="payLoading" class="btn-lineG w200px" round type="primary" @click="submit">
164 {{ language == 0 ? '确认付款' : 'Pay' }}
165 </el-button>
166 </el-col>
167 </el-row>
168 </el-card>
169 <div style="height: 60px;"></div>
170 </div>
171 </div>
172 </template>
173
174 <script setup>
175 import {useRouter, useRoute} from "vue-router";
176 import {ref, reactive, onMounted} from "vue";
177 import {useStorage} from "@vueuse/core/index";
178 import {checkResidueRoom, getBaseInfoByActiveId, newsSubmitOrderHotel, submitOrderCar} from "@/apiPc/booking"
179 import dayjs from 'dayjs'
180 import {ElMessage, ElMessageBox} from "element-plus";
181 import useUserStore from "@/store/modules/user";
182
183 const payLoading = ref(false)
184 const user = useUserStore().user
185 const language = useStorage('language', 0)
186 const router = useRouter()
187 const route = useRoute()
188 const item = ref({})
189 const car = ref({})
190 const revTime1 = ref('')
191 const revTime2 = ref('')
192 const date1 = ref('')
193 const date2 = ref('')
194 const form = ref({
195 num: 1,
196 pickUpBo: {
197 carsList: [],
198 total: 0
199 },
200 dropOffBo: {
201 carsList: [],
202 total: 0
203 },
204 useType: []
205 })
206 const rzRange = ref([])
207 const rzUserArr = ref([])
208 const money = ref(0)
209 const choseRooms = ref([])
210 const rules = ref({})
211 const lform = ref({})
212
213
214 onMounted(() => {
215 item.value = JSON.parse(decodeURIComponent(route.query.item))
216 car.value = JSON.parse(decodeURIComponent(route.query.car))
217 money.value = 0
218 console.log(item.value, car.value)
219 initDays()
220 })
221
222 function changeUseType(e) {
223 console.log(form.value.useType)
224 changecarNum()
225 console.log(form.value)
226 }
227
228 function changecarNum(e) {
229 var m1 = 0
230 var m2 = 0
231 if (form.value.useType.indexOf('0') > -1) {
232 if (language.value == 0) {
233 m1 = form.value.num * car.value.inPrice
234 } else {
235 m1 = form.value.num * car.value.inPriceEn
236 }
237 }
238 if (form.value.useType.indexOf('1') > -1) {
239 if (language.value == 0) {
240 m2 = form.value.num * car.value.outPrice
241 } else {
242 m2 = form.value.num * car.value.outPriceEn
243
244 }
245 }
246 form.value.pickUpBo.total = m1.toFixed(2)
247 form.value.dropOffBo.total = m2.toFixed(2)
248 console.log(form.value.num, m1, m2)
249 money.value = (m1 + m2).toFixed(2)
250 }
251
252 function bindTimeChange(e) {
253 revTime1.value = e
254 console.log(e)
255 }
256
257 function bindTimeChange2(e) {
258 revTime2.value = e
259 }
260
261 function initDays() {
262 getBaseInfoByActiveId(route.params.cptId).then(res => {
263 lform.value = res.data
264 }).catch(err => {
265 console.log(err)
266 })
267 }
268
269 function disabledDate(date) {
270 // const today = dayjs().format('YYYY-MM-DD')
271 if (lform.value.carStart) {
272 return (date.getTime() < dayjs(lform.value.carStart).valueOf()) || (date.getTime() > dayjs(lform.value.carEnd).valueOf())
273
274 }
275 return true
276 }
277
278 function submit() {
279 if (!user) {
280 useUserStore().setReLogin()
281 return
282 }
283 if (money.value == 0) {
284 ElMessage.error(language.value == 0 ? '请选择接站/送站' : 'Please select pickup/drop off')
285 return
286 }
287 // 提交确认
288 ElMessageBox.confirm(language.value == 0 ? '确认提交订单吗?' : 'Confirm to submit the order?', {
289 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
290 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
291 type: 'warning'
292 }).then(() => {
293 pushFrom()
294 })
295 }
296
297 function pushFrom() {
298 payLoading.value = true
299 var obj = {
300 avcId: car.value.id,
301 num: form.value.num,
302 price: car.value.inPrice,
303 carSeat: car.value.carSeat,
304 carColor: car.value.carColor,
305 typeName: "接站",
306 name: car.value.carType,
307 checkIn: car.value.checkIn,
308 checkOut: car.value.checkOut,
309 total: (form.value.num * car.value.inPrice).toFixed(2)
310 }
311 var obj2 = {
312 avcId: car.value.id,
313 num: form.value.num,
314 price: car.value.outPrice,
315 carSeat: car.value.carSeat,
316 carColor: car.value.carColor,
317 typeName: "送站",
318 name: car.value.carType,
319 checkIn: car.value.checkIn,
320 checkOut: car.value.checkOut,
321 total: (form.value.num * car.value.outPrice).toFixed(2)
322 }
323 if (form.value.useType.indexOf('0') > -1) {
324 form.value.pickUpBo.carsList.push(obj)
325 form.value.pickUpBo.revTime = date1.value + ' ' + revTime1.value
326 }
327 if (form.value.useType.indexOf('1') > -1) {
328 form.value.dropOffBo.carsList.push(obj2)
329 form.value.dropOffBo.revTime = date2.value + ' ' + revTime2.value
330 }
331 form.value.activeId = item.value.activityId
332 form.value.lavId = item.value.id
333 form.value.checkIn = item.value.checkIn
334 form.value.checkOut = item.value.checkOut
335 submitOrderCar(form.value).then(res => {
336 payLoading.value = false
337 if (res.data && res.data.total != -100) {
338 router.push({
339 name: 'bookingPay',
340 query: {
341 orderId: res.data.orderId,
342 money: res.data.total,
343 type: 'car'
344 }
345 })
346 } else {
347 ElMessage.warning(language.value == 0 ? '下单失败,稍后重试' : 'Order failed, please try again later')
348 }
349 })
350 }
351 </script>
352
353 <style lang="scss" scoped>
354 .bigMoney {
355 font-size: 36px !important;
356 font-family: 'DIN Alternate';
357 font-weight: bold;
358 }
359
360 .bg-lineg {
361 height: 40px;
362 line-height: 40px;
363 font-size: 18px;
364 text-align: center;
365 }
366
367 .leftboderTT {
368 font-weight: 600;
369 font-size: 16px;
370 color: #453DEA;
371 }
372
373 .border-rr {
374 border-radius: 5px;
375 border: 1px solid #DCDFE6;
376 }
377
378 .room {
379 font-weight: 400;
380 font-size: 14px;
381 color: #929AA0;
382 }
383
384 .ccitemBox {
385 overflow: auto;
386
387 label {
388 margin: 10px 0;
389 display: block;
390 font-weight: 600;
391 min-height: 30px;
392
393 span {
394 color: #FF8124;
395 font-family: DIN Alternate;
396 font-size: 24px;
397 }
398 }
399 }
400
401 .ccitem {
402 display: flex;
403 justify-content: space-between;
404 font-size: 15px;
405 color: #666;
406 margin: 5px 0 10px;
407
408 label {
409 font-size: 16px;
410 color: #000;
411 }
412
413 span {
414 font-size: 13px;
415 }
416 }
417
418 .red {
419 color: #FF8124;
420 }
421
422 .tip {
423 font-size: 14px;
424 color: #666;
425 padding: 0 10px;
426 }
427
428 .tagbox {
429 margin: 15px 0;
430
431 a {
432 color: #AFB5B9;
433 font-size: 12px;
434 }
435
436 span {
437 border-radius: 13px;
438 font-size: 12px;
439 padding: 4px 10px;
440 margin-right: 10px;
441 font-weight: 400;
442 }
443
444 span:nth-child(4n) {
445 background: rgba(50, 177, 108, 0.2);
446 color: rgba(50, 177, 108, 1);
447 }
448
449 span:nth-child(4n+1) {
450 background: rgba(243, 152, 0, 0.2);
451 color: rgba(243, 152, 0, 1);
452 }
453
454 span:nth-child(4n+2) {
455 background: rgba(0, 160, 233, 0.2);
456 color: rgba(0, 160, 233, 1);
457 }
458
459 span:nth-child(4n+3) {
460 background: rgba(247, 64, 166, 0.2);
461 color: rgba(247, 64, 166, 1);
462 }
463 }
464 </style>
1 <template>
2 <div>
3 <div class="banner">
4 <img v-if="language==0" src="@/assets/booking/cl_text_c.png">
5 <img v-else src="@/assets/booking/cl_text_e.png">
6 </div>
7 <div class="box">
8 <div class="searchBar">
9 <el-input v-model="query.name" :placeholder="language==0?'请输入关键字搜索':'Search'" class="no-border">
10 </el-input>
11 <el-button class="btn-lineG" icon="search" size="large" type="primary" @click="getList">
12 {{ language == 0 ? '搜索' : 'Search' }}
13 </el-button>
14 </div>
15 </div>
16 <div v-loading="loading" class="box">
17 <el-collapse v-model="activeName" accordion style="--el-collapse-header-height:'auto'">
18 <el-collapse-item v-for="(h,index) in list" :name="index" class="hotel">
19 <template #title>
20 <el-row :gutter="20" align="middle" class="w100">
21 <el-col :span="4">
22 <div class="index">{{ language == 0 ? '路线' : 'Route' }}{{ index + 1 }}
23 <img src="@/assets/booking/arrow.png"/>
24 </div>
25 </el-col>
26 <el-col :span="7">
27 <p class="esp">{{ h.checkIn }}</p>
28 </el-col>
29 <el-col :span="4" class="text-center">
30 <img class="mauto w40px" src="@/assets/booking/wf.png"/>
31 </el-col>
32 <el-col :span="7">
33 <p class="esp ">{{ h.checkOut }}</p>
34 </el-col>
35 </el-row>
36 </template>
37
38 <div class="plr20">
39 <div v-for="(r,index) in h.carVoList" :key="index" class="room">
40 <el-row :gutter="30" align="middle">
41 <el-col :span="4">
42 <div class="roomImg">
43 <img :src="fillImgUrl(r.photos?.split(',')[0])">
44 </div>
45 </el-col>
46 <el-col :span="14">
47 <h3 class="name flex">{{ r.carType }}
48 <div class="tagbox">
49 <span class="tag">{{ r.carColor }}</span>
50 <span v-show="r.checkOut==1" class="tag">{{ language == 0 ? '可送车' : 'drop-off' }}</span>
51 <span v-show="r.checkIn==1" class="tag">{{ language == 0 ? '可接车' : 'pick-up' }}</span>
52 </div>
53 </h3>
54 <div class="text-gray mt20">
55 <span class="mr20">{{ language == 0 ? '座位数' : 'Seats' }}: {{ r.carSeat }}</span>
56 <span class="mr20">|</span>
57 <span :span="8">{{
58 language == 0 ? '运营时间' : 'Servers Time'
59 }}: {{ r.operStart }} ~ {{ r.operEnd }}</span>
60 </div>
61 </el-col>
62 <el-col :span="3">
63 <div v-if="language==0" class="price">¥
64 <span
65 v-if="r.outPrice&&r.inPrice">{{ Number(r.inPrice) > Number(r.outPrice) ? r.outPrice : r.inPrice }}</span>
66 <span v-else-if="r.inPrice>0">{{ r.inPrice }}</span>
67 <span v-else>{{ r.outPrice }}</span>
68
69 </div>
70 <div v-else class="price">
71
72 <span
73 v-if="r.outPriceEn&&r.inPriceEn">{{ (Number(r.inPriceEn) || 0) > Number(r.outPriceEn) ? r.outPriceEn : r.inPriceEn }}</span>
74 <span v-else-if="r.inPriceEn>0">{{ r.inPriceEn }}</span>
75 <span v-else>{{ r.outPriceEn }}</span>
76 </div>
77
78 </el-col>
79 <el-col :span="3">
80 <el-button class="btn-lineG w100" round type="primary" @click="goOrder(h,r)">
81 {{ language == 0 ? '我要预订' : 'Select' }}
82 </el-button>
83 </el-col>
84 </el-row>
85 </div>
86
87 <el-empty v-if="h.carVoList.length == 0" :image="`/img/order_no.png`" :image-size="228" description=""/>
88 </div>
89
90 </el-collapse-item>
91 </el-collapse>
92
93
94 <el-empty v-show="!loading&&list.length==0" :image="`/img/order_no.png`" :image-size="228" description=""/>
95 <div style="height: 50px"></div>
96 </div>
97
98 </div>
99 </template>
100
101 <script setup>
102 import {onMounted} from "@vue/runtime-core"
103 import * as booking from "@/apiPc/booking"
104 import {useRouter, useRoute} from "vue-router";
105 import {useStorage} from "@vueuse/core/index";
106 import useUserStore from "@/store/modules/user";
107
108 const user = useUserStore().user
109 const router = useRouter()
110 const route = useRoute()
111 const language = useStorage('language', 0)
112 const query = ref({
113 name: ''
114 })
115 const activeName = ref(0)
116 const cptId = ref('')
117 const list = ref([])
118 const loading = ref(false)
119 onMounted(() => {
120 query.value.activityId = route.params.cptId
121 // if (language.value==0)
122 getList()
123 })
124
125 function getList() {
126 // if (language.value!=0)return
127 loading.value = true
128 booking.getActivityCarList(query.value).then(res => {
129 list.value = res.rows
130 loading.value = false
131 }).catch(e => {
132 loading.value = false
133 })
134 }
135
136 function goOrder(item, car) {
137 if (!user) {
138 useUserStore().setReLogin()
139 return
140 }
141 router.push({
142 name: 'carOrder',
143 params: {
144 id: item.id,
145 },
146 query: {
147 item: encodeURIComponent(JSON.stringify(item)),
148 car: encodeURIComponent(JSON.stringify(car)),
149 }
150 })
151 }
152 </script>
153
154 <style lang="scss" scoped>
155
156 .hotel {
157 margin-bottom: 20px;
158 cursor: pointer;
159
160 .index {
161 display: flex;
162 font-weight: 500;
163 padding-left: 20px;
164 font-size: 18px;
165 align-items: center;
166
167 img {
168 margin-left: 15px;
169 }
170 }
171
172 p {
173 font-weight: 500;
174 font-size: 24px;
175 color: #000000;
176 }
177
178 &:hover .el-card {
179 box-shadow: 0 0 10px #aaa;
180 }
181 }
182
183 .hotel:nth-child(7n) .index {
184 color: #009E96;
185 }
186
187 .hotel:nth-child(7n+1) .index {
188 color: #FF8124;
189 }
190
191 .hotel:nth-child(7n+2) .index {
192 color: #E4007F;
193 }
194
195 .hotel:nth-child(7n+3) .index {
196 color: #0068B7;
197 }
198
199 .hotel:nth-child(7n+4) .index {
200 color: #32B16C;
201 }
202
203 .hotel:nth-child(7n+5) .index {
204 color: #920783;
205 }
206
207 .hotel:nth-child(7n+6) .index {
208 color: #00B7EE;
209 }
210
211 .banner {
212 height: 140px;
213 background-size: cover;
214 text-align: center;
215 background: url("@/assets/booking/cl_bg.png") center;
216 display: flex;
217 align-items: center;
218 justify-content: center;
219
220 img {
221 display: block;
222 margin: -30px auto 0;
223 width: auto;
224 }
225 }
226
227 .searchBar {
228 position: relative;
229 top: -30px;
230 background: #FFFFFF;
231 display: flex;
232 padding: 20px;
233 border-radius: 10px;
234 }
235
236 .no-border {
237 border: none;
238 background: #F5F7F9;
239
240 :deep(.el-input__wrapper) {
241 border: none;
242 box-shadow: none;
243 background: #F5F7F9;
244 }
245 }
246
247 .starBox {
248 img {
249 display: inline-block;
250 margin-right: 4px
251 }
252 }
253
254 .tagbox {
255 margin: 15px 0;
256
257 a {
258 color: #AFB5B9;
259 font-size: 12px;
260 }
261
262 span {
263 border-radius: 13px;
264 font-size: 12px;
265 padding: 4px 10px;
266 margin-right: 10px;
267 font-weight: 400;
268 }
269
270 span:nth-child(4n) {
271 background: rgba(50, 177, 108, 0.2);
272 color: rgba(50, 177, 108, 1);
273 }
274
275 span:nth-child(4n+1) {
276 background: rgba(243, 152, 0, 0.2);
277 color: rgba(243, 152, 0, 1);
278 }
279
280 span:nth-child(4n+2) {
281 background: rgba(0, 160, 233, 0.2);
282 color: rgba(0, 160, 233, 1);
283 }
284
285 span:nth-child(4n+3) {
286 background: rgba(247, 64, 166, 0.2);
287 color: rgba(247, 64, 166, 1);
288 }
289 }
290
291 .name.flex {
292 align-items: center;
293 }
294
295 .name .tagbox {
296 margin: 0 0 0 15px;
297 }
298
299 .room {
300 background: #FAFBFD;
301 margin: 20px 0 0;
302 padding: 20px;
303 border: 1px solid #E5E5E5;
304
305 .name {
306 font-size: 20px;
307 margin: 0 0 10px;
308 }
309
310 .roomImg {
311 aspect-ratio: 16/9;
312 border-radius: 10px;
313 overflow: hidden;
314
315 img {
316 width: 100%;
317 object-fit: cover;
318 object-position: center;
319 height: 100%;
320 }
321 }
322
323 .price {
324 color: #FF8124;
325 font-size: 24px;
326
327 span {
328 font-size: 36px;
329 font-family: "DIN Alternate"
330 }
331 }
332
333 .bg-lineg {
334 margin: auto;
335 border-radius: 10px;
336 text-align: center;
337 padding: 7px 2px 2px;
338 font-size: 24px;
339 width: 66px;
340 cursor: pointer;
341
342 div {
343 background: #fff;
344 font-size: 13px;
345 border-radius: 20px;
346 padding: 0 10px;
347 color: #453DEA;
348 font-weight: 500;
349 }
350 }
351 }
352
353 </style>
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
33 <div class="border-info mt20"> 33 <div class="border-info mt20">
34 <div class="flex aic"> 34 <div class="flex aic">
35 <h3 class="esp">{{ form.checkIn }}</h3> 35 <h3 class="esp">{{ form.checkIn }}</h3>
36 <img class="w40px mlr20 " src="@/assets/booking/wf.png" style="height: 40px;"/> 36 <img class="w40px mlr20 " src="@/assets/booking/wf.png" style="height: 40px;">
37 <h3 class="esp">{{ form.checkOut }}</h3> 37 <h3 class="esp">{{ form.checkOut }}</h3>
38 </div> 38 </div>
39 </div> 39 </div>
...@@ -67,8 +67,10 @@ ...@@ -67,8 +67,10 @@
67 </el-col> 67 </el-col>
68 <el-col> 68 <el-col>
69 {{ language == 0 ? '套餐' : 'Package' }}{{ formInfo.mealName }} <span 69 {{ language == 0 ? '套餐' : 'Package' }}{{ formInfo.mealName }} <span
70 style="margin-left: 40px">{{ language == 0 ? '价格' : 'Price' }}</span><span 70 style="margin-left: 40px"
71 class="price">{{ language == 0 ? '¥' + formInfo.mealPrice : '€' + formInfo.mealPriceEn }}</span> 71 >{{ language == 0 ? '价格' : 'Price' }}</span><span
72 class="price"
73 >{{ language == 0 ? '¥' + formInfo.mealPrice : '€' + formInfo.mealPriceEn }}</span>
72 <span style="margin-left: 40px">{{ 74 <span style="margin-left: 40px">{{
73 language == 0 ? '工作室电话' : 'Studio phone number' 75 language == 0 ? '工作室电话' : 'Studio phone number'
74 }}{{ formInfo.contact }}</span> 76 }}{{ formInfo.contact }}</span>
...@@ -101,8 +103,10 @@ ...@@ -101,8 +103,10 @@
101 </el-col> 103 </el-col>
102 <el-col> 104 <el-col>
103 {{ language == 0 ? '套餐' : 'Package' }}{{ formInfo.photoName }} <span 105 {{ language == 0 ? '套餐' : 'Package' }}{{ formInfo.photoName }} <span
104 style="margin-left: 40px">{{ language == 0 ? '价格' : 'Price' }}</span><span 106 style="margin-left: 40px"
105 class="price">{{ language == 0 ? '¥' + formInfo.photoPrice : '€' + formInfo.photoPriceEn }}</span> 107 >{{ language == 0 ? '价格' : 'Price' }}</span><span
108 class="price"
109 >{{ language == 0 ? '¥' + formInfo.photoPrice : '€' + formInfo.photoPriceEn }}</span>
106 </el-col> 110 </el-col>
107 <el-col> 111 <el-col>
108 {{ language == 0 ? '套餐说明' : 'Package Description' }}{{ formInfo.introduction }} 112 {{ language == 0 ? '套餐说明' : 'Package Description' }}{{ formInfo.introduction }}
...@@ -171,24 +175,23 @@ ...@@ -171,24 +175,23 @@
171 language == 0 ? '联系方式' : 'Contact Information' 175 language == 0 ? '联系方式' : 'Contact Information'
172 }}{{ form.phone }} 176 }}{{ form.phone }}
173 </el-col> 177 </el-col>
174 <el-col :lg="8" :md="12" :sm="12" :xs="24"></el-col> 178 <el-col :lg="8" :md="12" :sm="12" :xs="24" />
175 </el-row> 179 </el-row>
176 <el-row v-if="type == 'car'"> 180 <el-row v-if="type == 'car'">
177 <el-col v-if="form.pickUpBo?.revTime" :lg="12" :md="12" :sm="12" :xs="24"> 181 <el-col :lg="12" :md="12" :sm="12" :xs="24">
178 <h4>{{ language == 0 ? '接站信息' : 'Pick-up Information' }}</h4>
179 <div class="st-info"> 182 <div class="st-info">
180 <div>{{ language == 0 ? '用车时间' : 'Delivery Time' }}{{ form.pickUpBo.revTime }}</div> 183 <div>{{ language == 0 ? '用车时间' : 'Delivery Time' }}{{ form.pickUpBo?.revTime }}</div>
181 <div v-for="(car,index) in form.pickUpBo.carsList" :key="index" class="carLine"> 184 <!-- <div v-for="(car,index) in form.pickUpBo.carsList" :key="index" class="carLine">-->
182 <div v-if="car.num > 0"> 185 <!-- <div v-if="car.num > 0">-->
183 <label>{{ car.name }}</label> 186 <!-- <label>{{ car.name }}</label>-->
184 <el-tag class="mr10">{{ car.carSeat }} {{ language == 0 ? '座 ' : 'Sets' }}</el-tag> 187 <!-- <el-tag class="mr10">{{ car.carSeat }} {{ language == 0 ? '座 ' : 'Sets' }}</el-tag>-->
185 <el-tag>{{ car.carColor }}</el-tag> 188 <!-- <el-tag>{{ car.carColor }}</el-tag>-->
186 </div> 189 <!-- </div>-->
187 190
188 <span v-if="car.num > 0"> {{ car.num }}{{ 191 <!-- <span v-if="car.num > 0"> {{ car.num }}{{-->
189 language == 0 ? '辆' : 'Cars' 192 <!-- language == 0 ? '辆' : 'Cars'-->
190 }} * {{ language == 0 ? '¥' : '€' }}{{ car.price }}</span> 193 <!-- }} * {{ language == 0 ? '¥' : '€' }}{{ car.price }}</span>-->
191 </div> 194 <!-- </div>-->
192 195
193 <div>{{ language == 0 ? '人数' : 'People' }} {{ form.pickUpBo.count }}</div> 196 <div>{{ language == 0 ? '人数' : 'People' }} {{ form.pickUpBo.count }}</div>
194 <div>{{ language == 0 ? '航班/火车班次' : 'Flight/Train' }} {{ form.pickUpBo.no }}</div> 197 <div>{{ language == 0 ? '航班/火车班次' : 'Flight/Train' }} {{ form.pickUpBo.no }}</div>
...@@ -201,27 +204,6 @@ ...@@ -201,27 +204,6 @@
201 <div>{{ language == 0 ? '备注' : 'Remarks' }}{{ form.pickUpBo.remarks || '-' }}</div> 204 <div>{{ language == 0 ? '备注' : 'Remarks' }}{{ form.pickUpBo.remarks || '-' }}</div>
202 </div> 205 </div>
203 </el-col> 206 </el-col>
204 <el-col v-if="form.dropOffBo?.revTime" :lg="12" :md="12" :sm="12" :xs="24">
205 <h4>{{ language == 0 ? '送站信息' : 'Drop-off Information' }}</h4>
206 <div class="st-info">
207 <div>{{ language == 0 ? '用车时间' : 'Delivery Time' }}{{ form.dropOffBo.revTime }}</div>
208 <div v-for="(car,index) in form.dropOffBo.carsList" :key="index" class="carLine">
209 <div v-if="car.num > 0">
210 <label>{{ car.name }}</label>
211 <el-tag class="mr10">{{ car.carSeat }} {{ language == 0 ? '座 ' : 'Sets' }}</el-tag>
212 <el-tag>{{ car.carColor }}</el-tag>
213 </div>
214
215 <span v-if="car.num > 0"> {{ car.num }}{{
216 language == 0 ? '辆' : 'Cars'
217 }} * {{ language == 0 ? '¥' : '€' }}{{ car.price }}</span>
218 </div>
219 <div>{{ language == 0 ? '人数' : 'Counts' }}{{ form.dropOffBo.count }}</div>
220 <div>{{ language == 0 ? '联系人' : 'Contact Person' }}{{ form.dropOffBo.contacts }}</div>
221 <div>{{ language == 0 ? '联系电话' : 'Contact Phone' }}{{ form.dropOffBo.phone }}</div>
222 <div>{{ language == 0 ? '备注' : 'Remarks' }}{{ form.dropOffBo.remarks || '-' }}</div>
223 </div>
224 </el-col>
225 </el-row> 207 </el-row>
226 <el-row v-if="type == 'food'"> 208 <el-row v-if="type == 'food'">
227 <el-col :lg="8" :md="12" :sm="12" :xs="24"> 209 <el-col :lg="8" :md="12" :sm="12" :xs="24">
...@@ -261,7 +243,7 @@ ...@@ -261,7 +243,7 @@
261 <el-col :lg="8" :md="12" :sm="12" :xs="24"> 243 <el-col :lg="8" :md="12" :sm="12" :xs="24">
262 <div class="mb10">{{ language == 0 ? '联系人' : 'Contact Person' }}{{ form.contacts }}</div> 244 <div class="mb10">{{ language == 0 ? '联系人' : 'Contact Person' }}{{ form.contacts }}</div>
263 </el-col> 245 </el-col>
264 <el-col :lg=12 :md="12" :sm="12" :xs="24"> 246 <el-col :lg="12" :md="12" :sm="12" :xs="24">
265 <div class="mb10"> 247 <div class="mb10">
266 {{ language == 0 ? '联系方式' : 'Contact Phone' }}{{ form.phone }} 248 {{ language == 0 ? '联系方式' : 'Contact Phone' }}{{ form.phone }}
267 </div> 249 </div>
...@@ -377,12 +359,14 @@ ...@@ -377,12 +359,14 @@
377 </el-col> 359 </el-col>
378 <el-col :lg="24"> 360 <el-col :lg="24">
379 <div class="text-center"> 361 <div class="text-center">
380 <el-button v-if="(form.viewStatus=='1'||form.viewStatus=='5')&&type == 'hotel'" class="mt20 btn-lineG" 362 <el-button
363 v-if="(form.viewStatus=='1'||form.viewStatus=='5')&&type == 'hotel'" class="mt20 btn-lineG"
381 round 364 round
382 size="large" type="primary" 365 size="large" type="primary"
383 @click="exportPdf"> 366 @click="exportPdf"
367 >
384 <el-icon> 368 <el-icon>
385 <Upload/> 369 <Upload />
386 </el-icon> 370 </el-icon>
387 {{ language == 0 ? '导出酒店预订单' : 'Export PDF' }} 371 {{ language == 0 ? '导出酒店预订单' : 'Export PDF' }}
388 </el-button> 372 </el-button>
...@@ -391,9 +375,10 @@ ...@@ -391,9 +375,10 @@
391 class="mt20 btn-lineG" round 375 class="mt20 btn-lineG" round
392 size="large" 376 size="large"
393 type="primary" 377 type="primary"
394 @click="downInvoice"> 378 @click="downInvoice"
379 >
395 <el-icon> 380 <el-icon>
396 <Download/> 381 <Download />
397 </el-icon> 382 </el-icon>
398 {{ language == 0 ? '下载收据' : 'DownLoad Invoice' }} 383 {{ language == 0 ? '下载收据' : 'DownLoad Invoice' }}
399 </el-button> 384 </el-button>
...@@ -403,9 +388,11 @@ ...@@ -403,9 +388,11 @@
403 </div> 388 </div>
404 </div> 389 </div>
405 <div v-else class="pd20 skeletonBox"> 390 <div v-else class="pd20 skeletonBox">
406 <el-skeleton :rows="8"/> 391 <el-skeleton :rows="8" />
407 <el-button :style="language == 0 ?'width:200px':'width:400px'" class="btn-lineG" round size="large" 392 <el-button
408 type="primary" @click="showLogin"> 393 :style="language == 0 ?'width:200px':'width:400px'" class="btn-lineG" round size="large"
394 type="primary" @click="showLogin"
395 >
409 {{ language == 0 ? '登录后查看明细' : 'View detailed information after logging in' }} 396 {{ language == 0 ? '登录后查看明细' : 'View detailed information after logging in' }}
410 </el-button> 397 </el-button>
411 </div> 398 </div>
...@@ -417,55 +404,69 @@ ...@@ -417,55 +404,69 @@
417 <el-radio-group v-model="payType"> 404 <el-radio-group v-model="payType">
418 <el-radio v-if="language==0" border value="2"> 405 <el-radio v-if="language==0" border value="2">
419 <!-- 微信--> 406 <!-- 微信-->
420 <svg class="icon" height="40" p-id="24747" t="1709002960407" 407 <svg
421 version="1.1" viewBox="0 0 3152 1024" width="94" xmlns="http://www.w3.org/2000/svg"> 408 class="icon" height="40" p-id="24747" t="1709002960407"
409 version="1.1" viewBox="0 0 3152 1024" width="94" xmlns="http://www.w3.org/2000/svg"
410 >
422 <path 411 <path
423 d="M381.998922 630.960647c-4.416173 2.208086-8.832345 3.312129-14.352561 3.312129-12.144474 0-22.080863-7.17628-28.1531-17.66469l-2.208086-4.968194-87.771428-204.247978c-1.104043-2.208086-1.104043-4.416173-1.104043-6.624259 0-9.384367 6.624259-16.560647 15.456603-16.560647 3.312129 0 6.624259 1.104043 9.936388 3.312129l103.780054 78.387062c7.728302 4.968194 16.560647 8.280323 26.497035 8.280324 5.520216 0 11.040431-1.104043 16.560647-3.312129l486.330998-230.192992C819.752022 131.381132 676.226415 60.17035 513.380054 60.17035 248.409704 59.618329 32.017251 250.61779 32.017251 486.883019c0 128.069003 64.586523 244.545553 166.15849 322.932614 7.728302 6.072237 13.248518 16.560647 13.248518 27.601079 0 3.312129-1.104043 7.17628-2.208086 10.488409-7.728302 32.017251-20.976819 84.459299-20.97682 86.667386-1.104043 3.312129-2.208086 8.280323-2.208086 13.248517 0 9.384367 6.624259 16.560647 15.456604 16.560647 3.312129 0 6.624259-1.104043 8.832345-3.312129l104.884097-65.138545c7.728302-4.968194 16.560647-8.280323 25.392992-8.280323 4.416173 0 9.936388 1.104043 14.35256 2.208086 49.129919 15.456604 102.676011 23.736927 157.326146 23.736927 265.522372 0 481.362803-191.551482 481.362803-427.816711 0-71.210782-19.872776-139.109434-54.650135-198.175741L385.863073 628.752561l-3.864151 2.208086z" 412 d="M381.998922 630.960647c-4.416173 2.208086-8.832345 3.312129-14.352561 3.312129-12.144474 0-22.080863-7.17628-28.1531-17.66469l-2.208086-4.968194-87.771428-204.247978c-1.104043-2.208086-1.104043-4.416173-1.104043-6.624259 0-9.384367 6.624259-16.560647 15.456603-16.560647 3.312129 0 6.624259 1.104043 9.936388 3.312129l103.780054 78.387062c7.728302 4.968194 16.560647 8.280323 26.497035 8.280324 5.520216 0 11.040431-1.104043 16.560647-3.312129l486.330998-230.192992C819.752022 131.381132 676.226415 60.17035 513.380054 60.17035 248.409704 59.618329 32.017251 250.61779 32.017251 486.883019c0 128.069003 64.586523 244.545553 166.15849 322.932614 7.728302 6.072237 13.248518 16.560647 13.248518 27.601079 0 3.312129-1.104043 7.17628-2.208086 10.488409-7.728302 32.017251-20.976819 84.459299-20.97682 86.667386-1.104043 3.312129-2.208086 8.280323-2.208086 13.248517 0 9.384367 6.624259 16.560647 15.456604 16.560647 3.312129 0 6.624259-1.104043 8.832345-3.312129l104.884097-65.138545c7.728302-4.968194 16.560647-8.280323 25.392992-8.280323 4.416173 0 9.936388 1.104043 14.35256 2.208086 49.129919 15.456604 102.676011 23.736927 157.326146 23.736927 265.522372 0 481.362803-191.551482 481.362803-427.816711 0-71.210782-19.872776-139.109434-54.650135-198.175741L385.863073 628.752561l-3.864151 2.208086z"
424 fill="#09BB07" p-id="24748"></path> 413 fill="#09BB07" p-id="24748"
414 />
425 <path 415 <path
426 d="M1398.822642 381.998922c-9.384367 19.320755-20.424798 38.641509-32.017251 57.962264v263.866307h-31.465229V485.226954c-13.248518 18.216712-27.049057 34.225337-40.297574 48.025876-3.864151-7.17628-14.352561-23.736927-20.424798-30.361186 34.777358-33.673315 71.210782-82.803235 93.843666-131.933153l30.361186 11.040431z m-8.280324-91.63558c-22.632884 36.985445-59.066307 78.939084-91.635579 105.98814-4.416173-7.17628-13.248518-19.320755-19.320755-25.945013 29.809164-23.736927 62.378437-61.274394 78.939083-92.187601l32.017251 12.144474z m181.615094 289.811321c1.656065 7.728302 6.072237 19.320755 8.832345 24.84097-55.754178 37.537466-66.242588 46.369811-72.866846 54.650135-1.656065-7.728302-8.280323-22.080863-12.696496-28.705121 4.968194-3.312129 12.696496-10.48841 12.696496-28.705121v-54.098114h-60.17035v27.049057c0 38.641509-7.728302 91.083558-42.505661 128.069003-4.416173-7.17628-16.560647-19.320755-22.632884-23.184906 29.809164-31.465229 34.225337-72.866846 34.225337-105.436119v-54.098113h118.684636v82.251213l36.433423-22.632884z m123.100809-176.094879c-9.384367 73.970889-23.184906 136.349326-48.025876 187.687332 16.560647 36.433423 39.193531 66.242588 67.346631 83.355256-7.17628 6.072237-17.112668 18.216712-22.632884 27.049057-25.945013-18.216712-46.369811-45.265768-62.930459-78.939084-20.424798 32.017251-45.81779 59.066307-78.939083 81.699191-3.864151-6.624259-13.248518-19.872776-19.872776-25.392992 36.985445-22.632884 64.034501-52.99407 83.907277-89.979514-12.696496-34.777358-22.080863-73.418868-28.705121-115.372507-4.968194 11.040431-10.48841 22.632884-16.560647 31.465229-3.864151-4.416173-10.48841-13.248518-17.112668-20.424798v5.520216h-154.014017v-29.809165h154.014017v9.384367c24.84097-49.129919 37.537466-118.684636 44.713746-191.551483l31.465229 4.968195c-3.864151 31.465229-8.280323 61.274394-13.800539 90.531536h96.051752v29.809164h-14.904582z m-142.973585 22.632884h-145.181671v-110.404312h24.84097v82.251213h35.32938V278.770889h26.497035v119.78868h33.673316V316.308356h25.392992v110.404312z m55.202156-22.632884c-1.656065 6.624259-3.312129 12.696496-4.416172 18.768734 6.072237 46.369811 14.904582 91.083558 28.1531 130.277088 16.560647-43.057682 26.497035-91.63558 32.569272-149.045822h-56.3062zM1882.393531 289.259299c-10.48841 31.465229-24.288949 62.378437-39.193531 91.63558v324.036657h-32.017251V437.201078c-13.800539 22.632884-29.257143 42.50566-44.161725 60.170351-3.312129-7.728302-13.248518-24.288949-19.320754-32.017251 41.953639-45.265768 80.043127-114.820485 103.780053-184.927224l30.913208 8.832345z m288.707278 65.690566v29.257143h-294.779515v-29.257143h294.779515z m-267.730459 199.831806h235.713208v147.941779h-30.913208v-16.560647h-174.438814v18.216712h-30.361186v-149.597844z m231.297035-104.332075H1909.994609v-28.1531h224.672776v28.1531zM1909.994609 486.883019h224.672776v28.1531H1909.994609v-28.1531z m23.736927 96.603773V656.90566h174.438814v-73.418868h-174.438814z m81.699192-231.297035c-6.072237-16.560647-20.424798-43.057682-32.017251-61.826415l29.257143-12.144474c13.248518 19.320755 27.601078 44.161725 34.225337 60.722372l-31.465229 13.248517zM2586.221024 468.114286c-26.497035 63.48248-69.002695 111.508356-122.548787 147.941779 50.785984 25.945013 110.956334 43.609704 180.511051 52.442048-7.728302 8.280323-16.560647 23.184906-21.528841 33.673316-75.074933-11.592453-139.661456-32.569272-192.655525-64.034502-57.962264 32.017251-125.308895 52.99407-195.415634 66.794609-3.312129-9.384367-12.696496-25.392992-19.320754-33.121293 66.242588-10.48841 129.173046-28.1531 183.271159-55.202157-44.161725-32.017251-78.939084-72.866846-103.780054-123.65283l10.48841-3.864151h-49.12992v-34.225337h155.670081V383.654987h-176.6469v-34.225337h176.6469V278.770889h35.32938v70.658761h177.750944v34.225337h-177.750944v71.210781H2555.859838l7.176281-1.656064 23.184905 14.904582z m-255.033962 20.976819c23.184906 43.609704 56.858221 80.043127 100.467925 108.748248 44.161725-28.1531 80.043127-63.48248 104.332075-108.748248h-204.8zM2834.630728 292.571429c-13.800539 34.777358-30.361186 69.554717-49.129919 101.571967v308.580054h-34.225337V447.689488c-14.904582 20.976819-31.465229 40.297574-46.921833 56.306199-4.416173-7.728302-14.904582-25.945013-21.528841-34.225337 47.473854-45.265768 91.63558-115.924528 118.132614-188.239353l33.673316 11.040432z m270.490566 123.65283h-58.514286v240.12938c0 25.945013-7.728302 36.985445-24.84097 41.953639-18.216712 5.520216-49.129919 6.072237-99.915903 5.520215-1.656065-8.832345-8.280323-24.84097-13.248518-34.225337 39.193531 1.656065 77.283019 1.656065 88.32345 1.104043 10.48841-1.104043 14.352561-3.864151 14.352561-14.35256V416.224259h-187.687332v-34.225337h187.687332V283.739084h34.777359v97.707816h58.514285v34.777359z m-184.375202 178.854986c-13.800539-28.705121-43.609704-78.939084-67.346631-115.924528l29.809164-13.800539c24.288949 35.881402 55.202156 84.459299 70.106739 112.612399l-32.569272 17.112668z" 416 d="M1398.822642 381.998922c-9.384367 19.320755-20.424798 38.641509-32.017251 57.962264v263.866307h-31.465229V485.226954c-13.248518 18.216712-27.049057 34.225337-40.297574 48.025876-3.864151-7.17628-14.352561-23.736927-20.424798-30.361186 34.777358-33.673315 71.210782-82.803235 93.843666-131.933153l30.361186 11.040431z m-8.280324-91.63558c-22.632884 36.985445-59.066307 78.939084-91.635579 105.98814-4.416173-7.17628-13.248518-19.320755-19.320755-25.945013 29.809164-23.736927 62.378437-61.274394 78.939083-92.187601l32.017251 12.144474z m181.615094 289.811321c1.656065 7.728302 6.072237 19.320755 8.832345 24.84097-55.754178 37.537466-66.242588 46.369811-72.866846 54.650135-1.656065-7.728302-8.280323-22.080863-12.696496-28.705121 4.968194-3.312129 12.696496-10.48841 12.696496-28.705121v-54.098114h-60.17035v27.049057c0 38.641509-7.728302 91.083558-42.505661 128.069003-4.416173-7.17628-16.560647-19.320755-22.632884-23.184906 29.809164-31.465229 34.225337-72.866846 34.225337-105.436119v-54.098113h118.684636v82.251213l36.433423-22.632884z m123.100809-176.094879c-9.384367 73.970889-23.184906 136.349326-48.025876 187.687332 16.560647 36.433423 39.193531 66.242588 67.346631 83.355256-7.17628 6.072237-17.112668 18.216712-22.632884 27.049057-25.945013-18.216712-46.369811-45.265768-62.930459-78.939084-20.424798 32.017251-45.81779 59.066307-78.939083 81.699191-3.864151-6.624259-13.248518-19.872776-19.872776-25.392992 36.985445-22.632884 64.034501-52.99407 83.907277-89.979514-12.696496-34.777358-22.080863-73.418868-28.705121-115.372507-4.968194 11.040431-10.48841 22.632884-16.560647 31.465229-3.864151-4.416173-10.48841-13.248518-17.112668-20.424798v5.520216h-154.014017v-29.809165h154.014017v9.384367c24.84097-49.129919 37.537466-118.684636 44.713746-191.551483l31.465229 4.968195c-3.864151 31.465229-8.280323 61.274394-13.800539 90.531536h96.051752v29.809164h-14.904582z m-142.973585 22.632884h-145.181671v-110.404312h24.84097v82.251213h35.32938V278.770889h26.497035v119.78868h33.673316V316.308356h25.392992v110.404312z m55.202156-22.632884c-1.656065 6.624259-3.312129 12.696496-4.416172 18.768734 6.072237 46.369811 14.904582 91.083558 28.1531 130.277088 16.560647-43.057682 26.497035-91.63558 32.569272-149.045822h-56.3062zM1882.393531 289.259299c-10.48841 31.465229-24.288949 62.378437-39.193531 91.63558v324.036657h-32.017251V437.201078c-13.800539 22.632884-29.257143 42.50566-44.161725 60.170351-3.312129-7.728302-13.248518-24.288949-19.320754-32.017251 41.953639-45.265768 80.043127-114.820485 103.780053-184.927224l30.913208 8.832345z m288.707278 65.690566v29.257143h-294.779515v-29.257143h294.779515z m-267.730459 199.831806h235.713208v147.941779h-30.913208v-16.560647h-174.438814v18.216712h-30.361186v-149.597844z m231.297035-104.332075H1909.994609v-28.1531h224.672776v28.1531zM1909.994609 486.883019h224.672776v28.1531H1909.994609v-28.1531z m23.736927 96.603773V656.90566h174.438814v-73.418868h-174.438814z m81.699192-231.297035c-6.072237-16.560647-20.424798-43.057682-32.017251-61.826415l29.257143-12.144474c13.248518 19.320755 27.601078 44.161725 34.225337 60.722372l-31.465229 13.248517zM2586.221024 468.114286c-26.497035 63.48248-69.002695 111.508356-122.548787 147.941779 50.785984 25.945013 110.956334 43.609704 180.511051 52.442048-7.728302 8.280323-16.560647 23.184906-21.528841 33.673316-75.074933-11.592453-139.661456-32.569272-192.655525-64.034502-57.962264 32.017251-125.308895 52.99407-195.415634 66.794609-3.312129-9.384367-12.696496-25.392992-19.320754-33.121293 66.242588-10.48841 129.173046-28.1531 183.271159-55.202157-44.161725-32.017251-78.939084-72.866846-103.780054-123.65283l10.48841-3.864151h-49.12992v-34.225337h155.670081V383.654987h-176.6469v-34.225337h176.6469V278.770889h35.32938v70.658761h177.750944v34.225337h-177.750944v71.210781H2555.859838l7.176281-1.656064 23.184905 14.904582z m-255.033962 20.976819c23.184906 43.609704 56.858221 80.043127 100.467925 108.748248 44.161725-28.1531 80.043127-63.48248 104.332075-108.748248h-204.8zM2834.630728 292.571429c-13.800539 34.777358-30.361186 69.554717-49.129919 101.571967v308.580054h-34.225337V447.689488c-14.904582 20.976819-31.465229 40.297574-46.921833 56.306199-4.416173-7.728302-14.904582-25.945013-21.528841-34.225337 47.473854-45.265768 91.63558-115.924528 118.132614-188.239353l33.673316 11.040432z m270.490566 123.65283h-58.514286v240.12938c0 25.945013-7.728302 36.985445-24.84097 41.953639-18.216712 5.520216-49.129919 6.072237-99.915903 5.520215-1.656065-8.832345-8.280323-24.84097-13.248518-34.225337 39.193531 1.656065 77.283019 1.656065 88.32345 1.104043 10.48841-1.104043 14.352561-3.864151 14.352561-14.35256V416.224259h-187.687332v-34.225337h187.687332V283.739084h34.777359v97.707816h58.514285v34.777359z m-184.375202 178.854986c-13.800539-28.705121-43.609704-78.939084-67.346631-115.924528l29.809164-13.800539c24.288949 35.881402 55.202156 84.459299 70.106739 112.612399l-32.569272 17.112668z"
427 fill="#595757" p-id="24749"></path> 417 fill="#595757" p-id="24749"
418 />
428 </svg> 419 </svg>
429 </el-radio> 420 </el-radio>
430 <el-radio v-if="language==1" border value="3"> 421 <el-radio v-if="language==1" border value="3">
431 <!--paypal--> 422 <!--paypal-->
432 <svg class="icon" height="40" p-id="22654" t="1709002828937" 423 <svg
433 version="1.1" viewBox="0 0 4220 1024" width="94" xmlns="http://www.w3.org/2000/svg"> 424 class="icon" height="40" p-id="22654" t="1709002828937"
425 version="1.1" viewBox="0 0 4220 1024" width="94" xmlns="http://www.w3.org/2000/svg"
426 >
434 <path 427 <path
435 d="M3249.722604 229.409369h-232.537679c-15.641548 0-29.197556 11.470468-32.325865 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h118.875764c11.470468 0 20.855397-8.342159 21.898167-18.769858l27.112016-168.928717c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641547c41.710794 0 81.336049 0 102.191447 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731z" 428 d="M3249.722604 229.409369h-232.537679c-15.641548 0-29.197556 11.470468-32.325865 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h118.875764c11.470468 0 20.855397-8.342159 21.898167-18.769858l27.112016-168.928717c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641547c41.710794 0 81.336049 0 102.191447 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731z"
436 fill="#009CDE" p-id="22655"></path> 429 fill="#009CDE" p-id="22655"
430 />
437 <path 431 <path
438 d="M1594.84684 229.409369h-232.537678c-15.641548 0-29.197556 11.470468-32.325866 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h110.533605c15.641548 0 29.197556-11.470468 32.325866-27.112017l25.026476-160.586558c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641548c41.710794 0 81.336049 0 102.191446 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731zM2288.288795 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.213849 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710794 171.014257 34.411405 39.625255 82.378819 56.309572 139.731161 56.309572 99.063136 0 153.287169-63.608961 153.287169-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480652-380.610998c2.08554-10.427699-6.256619-21.898167-18.769858-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.079429-30.240326-16.684318-19.812627-22.940937-46.924644-17.727088-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z" 432 d="M1594.84684 229.409369h-232.537678c-15.641548 0-29.197556 11.470468-32.325866 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h110.533605c15.641548 0 29.197556-11.470468 32.325866-27.112017l25.026476-160.586558c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641548c41.710794 0 81.336049 0 102.191446 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731zM2288.288795 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.213849 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710794 171.014257 34.411405 39.625255 82.378819 56.309572 139.731161 56.309572 99.063136 0 153.287169-63.608961 153.287169-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480652-380.610998c2.08554-10.427699-6.256619-21.898167-18.769858-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.079429-30.240326-16.684318-19.812627-22.940937-46.924644-17.727088-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z"
439 fill="#003087" p-id="22656"></path> 433 fill="#003087" p-id="22656"
434 />
440 <path 435 <path
441 d="M3943.164559 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.21385 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710795 171.014257 34.411405 39.625255 82.378819 56.309572 139.73116 56.309572 99.063136 0 153.287169-63.608961 153.28717-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480651-380.610998c2.08554-10.427699-6.256619-21.898167-18.769857-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.07943-30.240326-16.684318-19.812627-22.940937-46.924644-17.727087-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z" 436 d="M3943.164559 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.21385 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710795 171.014257 34.411405 39.625255 82.378819 56.309572 139.73116 56.309572 99.063136 0 153.287169-63.608961 153.28717-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480651-380.610998c2.08554-10.427699-6.256619-21.898167-18.769857-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.07943-30.240326-16.684318-19.812627-22.940937-46.924644-17.727087-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z"
442 fill="#009CDE" p-id="22657"></path> 437 fill="#009CDE" p-id="22657"
438 />
443 <path 439 <path
444 d="M2880.582074 443.177189h-111.576375c-10.427699 0-20.855397 5.213849-27.112016 14.598778l-154.329939 227.323829-65.694501-217.9389c-4.171079-13.556008-16.684318-22.940937-31.283096-22.940937h-109.490835c-13.556008 0-22.940937 13.556008-18.769857 26.069247l123.046843 360.79837-115.747454 162.672098c-9.384929 12.513238 0 30.240326 15.641548 30.240326h111.576375c10.427699 0 20.855397-5.213849 26.069246-13.556008l371.226069-535.983707c11.470468-13.556008 2.08554-31.283096-13.556008-31.283096z" 440 d="M2880.582074 443.177189h-111.576375c-10.427699 0-20.855397 5.213849-27.112016 14.598778l-154.329939 227.323829-65.694501-217.9389c-4.171079-13.556008-16.684318-22.940937-31.283096-22.940937h-109.490835c-13.556008 0-22.940937 13.556008-18.769857 26.069247l123.046843 360.79837-115.747454 162.672098c-9.384929 12.513238 0 30.240326 15.641548 30.240326h111.576375c10.427699 0 20.855397-5.213849 26.069246-13.556008l371.226069-535.983707c11.470468-13.556008 2.08554-31.283096-13.556008-31.283096z"
445 fill="#003087" p-id="22658"></path> 441 fill="#003087" p-id="22658"
442 />
446 <path 443 <path
447 d="M4074.553561 245.050916l-94.892057 605.849288c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h95.934827c15.641548 0 29.197556-11.470468 32.325866-27.112017l93.849287-595.421588c2.08554-11.470468-7.299389-21.898167-18.769857-21.898167h-107.405296c-10.427699 1.04277-18.769857 7.299389-19.812627 16.684317z" 444 d="M4074.553561 245.050916l-94.892057 605.849288c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h95.934827c15.641548 0 29.197556-11.470468 32.325866-27.112017l93.849287-595.421588c2.08554-11.470468-7.299389-21.898167-18.769857-21.898167h-107.405296c-10.427699 1.04277-18.769857 7.299389-19.812627 16.684317z"
448 fill="#009CDE" p-id="22659"></path> 445 fill="#009CDE" p-id="22659"
446 />
449 <path 447 <path
450 d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l-13.556008 85.507128c-2.08554 14.598778 9.384929 27.112016 23.983707 27.112016h165.800407c19.812627 0 36.496945-14.598778 39.625255-33.368635l2.08554-8.342159 31.283095-198.126273 2.08554-10.427699c3.12831-19.812627 19.812627-33.368635 39.625255-33.368635h25.026476c160.586558 0 285.718941-64.651731 322.215886-253.393075 15.641548-79.250509 7.299389-144.94501-33.368635-190.826884-12.513238-13.556008-28.154786-26.069246-45.881874-35.454175" 448 d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l-13.556008 85.507128c-2.08554 14.598778 9.384929 27.112016 23.983707 27.112016h165.800407c19.812627 0 36.496945-14.598778 39.625255-33.368635l2.08554-8.342159 31.283095-198.126273 2.08554-10.427699c3.12831-19.812627 19.812627-33.368635 39.625255-33.368635h25.026476c160.586558 0 285.718941-64.651731 322.215886-253.393075 15.641548-79.250509 7.299389-144.94501-33.368635-190.826884-12.513238-13.556008-28.154786-26.069246-45.881874-35.454175"
451 fill="#009CDE" p-id="22660"></path> 449 fill="#009CDE" p-id="22660"
450 />
452 <path 451 <path
453 d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958-1.04277 9.384929c3.12831-21.898167 21.898167-38.582485 44.839104-38.582485h93.849287c183.527495 0 327.429735-74.03666 369.140529-289.89002l3.12831-18.769857" 452 d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958-1.04277 9.384929c3.12831-21.898167 21.898167-38.582485 44.839104-38.582485h93.849287c183.527495 0 327.429735-74.03666 369.140529-289.89002l3.12831-18.769857"
454 fill="#012169" p-id="22661"></path> 453 fill="#012169" p-id="22661"
454 />
455 <path 455 <path
456 d="M326.838693 260.692464c2.08554-13.556008 10.427699-23.983707 21.898167-30.240326 5.213849-2.08554 11.470468-4.171079 16.684318-4.171079h250.264766c29.197556 0 57.352342 2.08554 82.378819 6.256619 7.299389 1.04277 14.598778 2.08554 20.855397 4.17108 7.299389 1.04277 13.556008 3.12831 19.812627 5.213849l9.384929 3.128309c12.513238 4.171079 23.983707 9.384929 34.411405 14.598779 12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958L326.838693 260.692464z" 456 d="M326.838693 260.692464c2.08554-13.556008 10.427699-23.983707 21.898167-30.240326 5.213849-2.08554 11.470468-4.171079 16.684318-4.171079h250.264766c29.197556 0 57.352342 2.08554 82.378819 6.256619 7.299389 1.04277 14.598778 2.08554 20.855397 4.17108 7.299389 1.04277 13.556008 3.12831 19.812627 5.213849l9.384929 3.128309c12.513238 4.171079 23.983707 9.384929 34.411405 14.598779 12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958L326.838693 260.692464z"
457 fill="#003087" p-id="22662"></path> 457 fill="#003087" p-id="22662"
458 />
458 </svg> 459 </svg>
459 </el-radio> 460 </el-radio>
460 </el-radio-group> 461 </el-radio-group>
461 <div v-if="payType == '2'&&wePayCodeUrl"> 462 <div v-if="payType == '2'&&wePayCodeUrl">
462 <div class="payImgbox flexCenter"> 463 <div class="payImgbox flexCenter">
463 <div> 464 <div>
464 <img :src="wePayCodeUrl" class="border" width="260"/> 465 <img :src="wePayCodeUrl" class="border" width="260">
465 <img class="mt20" src="@/assets/img/sm.png"/> 466 <img class="mt20" src="@/assets/img/sm.png">
466 </div> 467 </div>
467 <div class="ml20"> 468 <div class="ml20">
468 <img height="360" src="@/assets/img/rr.jpg"/> 469 <img height="360" src="@/assets/img/rr.jpg">
469 </div> 470 </div>
470 </div> 471 </div>
471 <div v-if="language==0" class="tip text-center text-danger"> 472 <div v-if="language==0" class="tip text-center text-danger">
...@@ -474,7 +475,7 @@ ...@@ -474,7 +475,7 @@
474 </div> 475 </div>
475 <div v-else class="tip text-center text-danger"> 476 <div v-else class="tip text-center text-danger">
476 After payment, do not close this window and wait for confirmation of successful payment. 477 After payment, do not close this window and wait for confirmation of successful payment.
477 <br/> 478 <br>
478 If you have not received a notification of successful payment for a long time, 479 If you have not received a notification of successful payment for a long time,
479 please refresh the page 480 please refresh the page
480 </div> 481 </div>
...@@ -483,8 +484,10 @@ ...@@ -483,8 +484,10 @@
483 </div> 484 </div>
484 <el-row align="middle" class="mt20 mb60" justify="center"> 485 <el-row align="middle" class="mt20 mb60" justify="center">
485 <el-col :span="24" class="text-center"> 486 <el-col :span="24" class="text-center">
486 <el-button v-if="!hideconfirmbtn&&form.viewStatus == '0'" class="btn-lineG w200px" round type="primary" 487 <el-button
487 @click="goPay"> 488 v-if="!hideconfirmbtn&&form.viewStatus == '0'" class="btn-lineG w200px" round type="primary"
489 @click="goPay"
490 >
488 {{ language == 0 ? '确定' : 'Submit' }} 491 {{ language == 0 ? '确定' : 'Submit' }}
489 </el-button> 492 </el-button>
490 <el-button v-if="form.viewStatus == '5'" round @click="unsubscribe"> 493 <el-button v-if="form.viewStatus == '5'" round @click="unsubscribe">
...@@ -499,7 +502,7 @@ ...@@ -499,7 +502,7 @@
499 <div v-if="form.payDate&&form.viewStatus=='1'"> 502 <div v-if="form.payDate&&form.viewStatus=='1'">
500 <div class="text-center"> 503 <div class="text-center">
501 <el-icon color="#32B16C" size="80"> 504 <el-icon color="#32B16C" size="80">
502 <SuccessFilled/> 505 <SuccessFilled />
503 </el-icon> 506 </el-icon>
504 <p class="text-success">{{ language == 0 ? '支付成功' : 'successful!' }}</p> 507 <p class="text-success">{{ language == 0 ? '支付成功' : 'successful!' }}</p>
505 <h3 class="wePrice">{{ language == 0 ? '¥' : '€' }}{{ totalFee || 0 }}</h3> 508 <h3 class="wePrice">{{ language == 0 ? '¥' : '€' }}{{ totalFee || 0 }}</h3>
...@@ -521,14 +524,16 @@ ...@@ -521,14 +524,16 @@
521 </template> 524 </template>
522 </el-result> 525 </el-result>
523 </div> 526 </div>
524 <Dialog ref="DialogRef"/> 527 <Dialog ref="DialogRef" />
525 528
526 <el-dialog v-model="showSJDialog" :close-on-click-modal="false" :close-on-press-escape="false" 529 <el-dialog
527 :title="language==0?'开收据':'Issue a receipt'" width="460px"> 530 v-model="showSJDialog" :close-on-click-modal="false" :close-on-press-escape="false"
531 :title="language==0?'开收据':'Issue a receipt'" width="460px"
532 >
528 <div class="flex"> 533 <div class="flex">
529 <el-form-item :label="language==0?'开票人':'Name'"> 534 <el-form-item :label="language==0?'开票人':'Name'">
530 <div class="flex"> 535 <div class="flex">
531 <el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'"></el-input> 536 <el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'" />
532 <el-button type="primary" @click="submitSJ">{{ language == 0 ? '提交并下载' : 'Submit' }}</el-button> 537 <el-button type="primary" @click="submitSJ">{{ language == 0 ? '提交并下载' : 'Submit' }}</el-button>
533 </div> 538 </div>
534 </el-form-item> 539 </el-form-item>
...@@ -544,16 +549,16 @@ ...@@ -544,16 +549,16 @@
544 </template> 549 </template>
545 550
546 <script setup> 551 <script setup>
547 import {Search} from "@element-plus/icons-vue" 552 import { Search } from '@element-plus/icons-vue'
548 import {getCurrentInstance, ref} from 'vue' 553 import { getCurrentInstance, ref } from 'vue'
549 import {onMounted} from "@vue/runtime-core" 554 import { onMounted } from '@vue/runtime-core'
550 import {useRoute, useRouter} from "vue-router" 555 import { useRoute, useRouter } from 'vue-router'
551 import * as booking from "@/apiPc/booking" 556 import * as booking from '@/apiPc/booking'
552 import Dialog from '@/viewsPc/booking/component/dailog.vue' 557 import Dialog from '@/viewsPc/booking/component/dailog.vue'
553 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row"; 558 import MatchInfoRow from '@/viewsPc/match/components/matchInfo-row'
554 559
555 560
556 const {proxy} = getCurrentInstance() 561 const { proxy } = getCurrentInstance()
557 const route = useRoute() 562 const route = useRoute()
558 const router = useRouter() 563 const router = useRouter()
559 const matchInfo = ref({}) 564 const matchInfo = ref({})
...@@ -563,19 +568,19 @@ const payType = ref('2') ...@@ -563,19 +568,19 @@ const payType = ref('2')
563 const orderId = ref(route.query.orderId) 568 const orderId = ref(route.query.orderId)
564 const matchId = ref() 569 const matchId = ref()
565 const groupId = ref() 570 const groupId = ref()
566 import useUserStore from "@/store/modules/user"; 571 import useUserStore from '@/store/modules/user'
567 import FileUpload from "@/components/FileUpload"; 572 import FileUpload from '@/components/FileUpload'
568 import {useStorage} from "@vueuse/core/index"; 573 import { useStorage } from '@vueuse/core/index'
569 import {ElMessage, ElMessageBox} from "element-plus"; 574 import { ElMessage, ElMessageBox } from 'element-plus'
570 import { 575 import {
571 cancelOrder, 576 cancelOrder,
572 cancelOrder2, getBaseInfoByActiveId, 577 cancelOrder2, getBaseInfoByActiveId,
573 getCarBilldetailbyId, 578 getCarBilldetailbyId,
574 getFoodBilldetailbyId, 579 getFoodBilldetailbyId,
575 getMealOrderInfoByLogex, getPhotoOrderInfo, getPhotoOrderInfoByLogex, getTicketInfoByActivityId, getTicketOrderInfo, 580 getMealOrderInfoByLogex, getPhotoOrderInfo, getPhotoOrderInfoByLogex, getTicketInfoByActivityId, getTicketOrderInfo
576 } from "@/apiPc/booking"; 581 } from '@/apiPc/booking'
577 import dayjs from 'dayjs' 582 import dayjs from 'dayjs'
578 import {delPerson} from "@/api/exam/person"; 583 import { delPerson } from '@/api/exam/person'
579 584
580 const isLogin = ref(false) 585 const isLogin = ref(false)
581 const language = useStorage('language', 0) 586 const language = useStorage('language', 0)
...@@ -635,7 +640,10 @@ onMounted(() => { ...@@ -635,7 +640,10 @@ onMounted(() => {
635 640
636 function getData() { 641 function getData() {
637 if (type.value == 'car') { 642 if (type.value == 'car') {
638 return booking.getCarBilldetailbyId({orderId: orderId.value}).then(res => { 643 form.value = {
644 pickUpBo: {}
645 }
646 return booking.getCarBilldetailbyId({ orderId: orderId.value }).then(res => {
639 form.value = res.data 647 form.value = res.data
640 if (language.value == 0) { 648 if (language.value == 0) {
641 totalFee.value = res.data.total 649 totalFee.value = res.data.total
...@@ -648,7 +656,7 @@ function getData() { ...@@ -648,7 +656,7 @@ function getData() {
648 }) 656 })
649 } 657 }
650 if (type.value == 'food') { 658 if (type.value == 'food') {
651 return booking.getFoodBilldetailbyId({orderId: orderId.value}).then(res => { 659 return booking.getFoodBilldetailbyId({ orderId: orderId.value }).then(res => {
652 if (language.value == 0) { 660 if (language.value == 0) {
653 totalFee.value = res.data.total 661 totalFee.value = res.data.total
654 } else { 662 } else {
...@@ -661,7 +669,7 @@ function getData() { ...@@ -661,7 +669,7 @@ function getData() {
661 }) 669 })
662 } 670 }
663 if (type.value == 'hotel') { 671 if (type.value == 'hotel') {
664 return booking.getRoomBilldetailbyId({orderId: orderId.value}).then(res => { 672 return booking.getRoomBilldetailbyId({ orderId: orderId.value }).then(res => {
665 if (language.value == 0) { 673 if (language.value == 0) {
666 totalFee.value = res.data.total 674 totalFee.value = res.data.total
667 } else { 675 } else {
...@@ -692,7 +700,7 @@ function getData() { ...@@ -692,7 +700,7 @@ function getData() {
692 700
693 // 票务订单详情 701 // 票务订单详情
694 async function getTicketOrderInfoFN() { 702 async function getTicketOrderInfoFN() {
695 const res = await getTicketOrderInfo({orderId: orderId.value}) 703 const res = await getTicketOrderInfo({ orderId: orderId.value })
696 form.value = res.data 704 form.value = res.data
697 form.value.extJson = JSON.parse(form.value.extJson) 705 form.value.extJson = JSON.parse(form.value.extJson)
698 try { 706 try {
...@@ -709,11 +717,10 @@ async function getTicketOrderInfoFN() { ...@@ -709,11 +717,10 @@ async function getTicketOrderInfoFN() {
709 717
710 } 718 }
711 console.log(form.value) 719 console.log(form.value)
712
713 } 720 }
714 721
715 async function getDetail(activeId) { 722 async function getDetail(activeId) {
716 const res = await getTicketInfoByActivityId({activityId: activeId}) 723 const res = await getTicketInfoByActivityId({ activityId: activeId })
717 matchForm.value = res.data 724 matchForm.value = res.data
718 console.log(matchForm.value) 725 console.log(matchForm.value)
719 } 726 }
...@@ -725,14 +732,14 @@ function goHome() { ...@@ -725,14 +732,14 @@ function goHome() {
725 732
726 function goPay() { 733 function goPay() {
727 if (payType.value == '2') { 734 if (payType.value == '2') {
728 booking.createWePay({orderId: orderId.value}).then(res => { 735 booking.createWePay({ orderId: orderId.value }).then(res => {
729 wePayCodeUrl.value = res.data 736 wePayCodeUrl.value = res.data
730 hideconfirmbtn.value = true 737 hideconfirmbtn.value = true
731 startforGetData() 738 startforGetData()
732 }) 739 })
733 } 740 }
734 if (payType.value == '3') { 741 if (payType.value == '3') {
735 booking.createPalPay({orderId: orderId.value}).then(res => { 742 booking.createPalPay({ orderId: orderId.value }).then(res => {
736 if (res.data) { 743 if (res.data) {
737 location.href = res.data 744 location.href = res.data
738 } 745 }
...@@ -740,7 +747,7 @@ function goPay() { ...@@ -740,7 +747,7 @@ function goPay() {
740 } 747 }
741 } 748 }
742 749
743 let handle; 750 let handle
744 751
745 function startforGetData() { 752 function startforGetData() {
746 handle = setTimeout(() => { 753 handle = setTimeout(() => {
...@@ -798,7 +805,7 @@ function showLogin() { ...@@ -798,7 +805,7 @@ function showLogin() {
798 805
799 806
800 function MakeUpOrder() { 807 function MakeUpOrder() {
801 return booking.getMealOrderInfo({orderId: orderId.value}).then(res => { 808 return booking.getMealOrderInfo({ orderId: orderId.value }).then(res => {
802 form.value = res.data 809 form.value = res.data
803 totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn 810 totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn
804 matchId.value = form.value.activeId 811 matchId.value = form.value.activeId
...@@ -811,7 +818,7 @@ function MakeUpOrder() { ...@@ -811,7 +818,7 @@ function MakeUpOrder() {
811 } 818 }
812 819
813 function MakeUpIno() { 820 function MakeUpIno() {
814 booking.getMealOrderInfoByLogex({asmId: form.value.asmId}).then(res => { 821 booking.getMealOrderInfoByLogex({ asmId: form.value.asmId }).then(res => {
815 formInfo.value = res.data 822 formInfo.value = res.data
816 console.log(res) 823 console.log(res)
817 }) 824 })
...@@ -823,7 +830,7 @@ function MakeUpIno() { ...@@ -823,7 +830,7 @@ function MakeUpIno() {
823 830
824 831
825 function photographyOrder() { 832 function photographyOrder() {
826 return booking.getPhotoOrderInfo({orderId: orderId.value}).then(res => { 833 return booking.getPhotoOrderInfo({ orderId: orderId.value }).then(res => {
827 form.value = res.data 834 form.value = res.data
828 totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn 835 totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn
829 photographyInfo() 836 photographyInfo()
...@@ -834,7 +841,7 @@ function photographyOrder() { ...@@ -834,7 +841,7 @@ function photographyOrder() {
834 } 841 }
835 842
836 function photographyInfo() { 843 function photographyInfo() {
837 booking.getPhotoOrderInfoByLogex({aspId: form.value.aspId}).then(res => { 844 booking.getPhotoOrderInfoByLogex({ aspId: form.value.aspId }).then(res => {
838 formInfo.value = res.data 845 formInfo.value = res.data
839 }) 846 })
840 // .catch((e) => { 847 // .catch((e) => {
...@@ -844,7 +851,7 @@ function photographyInfo() { ...@@ -844,7 +851,7 @@ function photographyInfo() {
844 } 851 }
845 852
846 const cancel = () => { 853 const cancel = () => {
847 //取消订单 854 // 取消订单
848 proxy.$modal.confirm(language.value == 0 ? '确定取消订单吗 ?' : `Are you sure to cancel the order?`).then(() => { 855 proxy.$modal.confirm(language.value == 0 ? '确定取消订单吗 ?' : `Are you sure to cancel the order?`).then(() => {
849 return cancelOrder2(orderId.value).then(res => { 856 return cancelOrder2(orderId.value).then(res => {
850 getData() 857 getData()
...@@ -880,7 +887,6 @@ function exportPdf() { ...@@ -880,7 +887,6 @@ function exportPdf() {
880 ...obj 887 ...obj
881 }, `Hotel Reservation.pdf`) 888 }, `Hotel Reservation.pdf`)
882 } 889 }
883
884 } 890 }
885 891
886 // 套餐详情 892 // 套餐详情
......
1 <template>
2 <div style="min-height: 100vh">
3 <div v-if="!errorBox" class="box">
4 <el-card :body-style="{ padding: '0px' }" class="mt20 mb60">
5 <div slot="header">
6 <div class="bg-lineg">{{ language == 0 ? '缴费清单' : 'Payment List' }}</div>
7 </div>
8 <div v-if="isLogin">
9 <div class="pd20">
10 <div v-if="type == 'hotel'">
11 <div class="leftboderTT">{{ language == 0 ? '酒店信息' : 'Hotel Information' }}</div>
12 <div class="border-info mt20">
13 <h3>{{ form.hotelName }}</h3>
14 <el-row>
15 <el-col>
16 {{ language == 0 ? '地址' : 'Address' }}
17 <span v-if="language == 0">{{ form.provinceName }} {{ form.cityName }} {{ form.areaName }} </span>
18 {{ form.address }}
19 </el-col>
20 <el-col>
21 {{ language == 0 ? '入住信息' : 'Check-in&Check-out' }}{{ form.messageObj?.roomStayDate }}
22 </el-col>
23 <el-col>
24 {{ language == 0 ? '房间信息' : 'Room Information' }}{{ form.messageObj?.roomName }}
25 {{ form.roomNum }}
26 {{ language == 0 ? '间' : 'rooms' }}
27 </el-col>
28 </el-row>
29 </div>
30 </div>
31 <div v-if="type == 'car'">
32 <div class="leftboderTT">{{ language == 0 ? '路线信息' : 'Car Information' }}</div>
33 <div class="border-info mt20">
34 <div class="flex aic">
35 <h3 class="esp">{{ form.checkIn }}</h3>
36 <img class="w40px mlr20 " src="@/assets/booking/wf.png" style="height: 40px;"/>
37 <h3 class="esp">{{ form.checkOut }}</h3>
38 </div>
39 </div>
40 </div>
41 <div v-if="type == 'food'">
42 <div class="leftboderTT">{{ language == 0 ? '饭店信息' : 'Restaurant Information' }}</div>
43 <div class="border-info mt20">
44 <h3>{{ form.name }}</h3>
45 <!-- <p>{{ language == 0 ?'地址':'Address' }}{{form.address}}</p>-->
46 <el-row>
47 <el-col :lg="12" :md="12" :sm="12" :xs="24">
48 <div class="mb10">{{ language == 0 ? '送餐地址' : 'Delivery Address' }}{{
49 form.address || '-'
50 }}
51 </div>
52 </el-col>
53 <el-col :lg="12" :md="12" :sm="12" :xs="24">
54 <div>{{ language == 0 ? '送餐时间' : 'Delivery Time' }}{{ form.psStart }} ~ {{ form.psEnd }}</div>
55 </el-col>
56 </el-row>
57 </div>
58 </div>
59 <div v-if="type == 'makeUp'">
60 <div class="leftboderTT">{{ language == 0 ? '化妆信息' : 'Hotel Information' }}</div>
61 <div class="border-info mt20">
62 <h3>{{ formInfo.studioName }}</h3>
63 <el-row>
64 <el-col>
65 {{ language == 0 ? '地址' : 'Address' }}
66 <span>{{ formInfo.remarks }} </span>
67 </el-col>
68 <el-col>
69 {{ language == 0 ? '套餐' : 'Package' }}{{ formInfo.mealName }} <span
70 style="margin-left: 40px">{{ language == 0 ? '价格' : 'Price' }}</span><span
71 class="price">{{ language == 0 ? '¥' + formInfo.mealPrice : '€' + formInfo.mealPriceEn }}</span>
72 <span style="margin-left: 40px">{{
73 language == 0 ? '工作室电话' : 'Studio phone number'
74 }}{{ formInfo.contact }}</span>
75 </el-col>
76 <el-col>
77 <div class="esp_3 s" @click="handleView()">
78 {{ language == 0 ? '套餐说明' : 'Package Description' }}{{ formInfo.introduction }}
79 </div>
80 </el-col>
81 <!-- <el-col>-->
82 <!-- <div v-if="language == 0">-->
83 <!-- 套餐详情: <span v-html="form.details"></span>-->
84 <!-- </div>-->
85 <!-- <div v-else>-->
86 <!-- Package details:<span v-html="form.detailsEn"></span>-->
87 <!-- </div>-->
88 <!--&lt;!&ndash; {{ language == 0 ?'套餐详情':'Package details' }}{{ language == 0?form.details:form.detailsEn}}&ndash;&gt;-->
89 <!-- </el-col>-->
90 </el-row>
91 </div>
92 </div>
93 <div v-if="type == 'photography'">
94 <div class="leftboderTT">{{ language == 0 ? '拍摄信息' : 'Shooting Information' }}</div>
95 <div class="border-info mt20">
96 <h3>{{ formInfo.shootName }}</h3>
97 <el-row>
98 <el-col>
99 {{ language == 0 ? '地址' : 'Address' }}
100 <span>{{ formInfo.remarks }} </span>
101 </el-col>
102 <el-col>
103 {{ language == 0 ? '套餐' : 'Package' }}{{ formInfo.photoName }} <span
104 style="margin-left: 40px">{{ language == 0 ? '价格' : 'Price' }}</span><span
105 class="price">{{ language == 0 ? '¥' + formInfo.photoPrice : '€' + formInfo.photoPriceEn }}</span>
106 </el-col>
107 <el-col>
108 {{ language == 0 ? '套餐说明' : 'Package Description' }}{{ formInfo.introduction }}
109 </el-col>
110 </el-row>
111 </div>
112 </div>
113 <div v-if="type == 'ticket'">
114 <div class="leftboderTT">{{ language == 0 ? '购票信息' : 'Ticket Information' }}</div>
115 <div class="border-info mt20">
116 <h3>{{ matchForm.name }}</h3>
117 <el-row>
118 <el-col>
119 {{ language == 0 ? '地址' : 'Address' }}
120 {{ matchForm.address }}
121 </el-col>
122 <el-col>
123 {{
124 form?.extJson?.ticketType?.name
125 }}:{{ form?.extJson?.num }}{{ language == 0 ? '张' : 'Tickets' }}
126 </el-col>
127 <el-col>
128 {{
129 language == 0 ? '时间' : 'Time'
130 }}{{
131 dayjs(form?.extJson?.ticketDate?.ticketStart).format('YYYY-MM-DD')
132 }}{{
133 form.extJson?.ticketDate?.ticketType == 1 ? '~' + dayjs(form?.extJson?.ticketDate?.ticketEnd).format('YYYY-MM-DD') : ''
134 }}
135 </el-col>
136 <el-col v-if="form?.extJson?.ticketDate?.isCountSale==1">
137 {{
138 language == 0 ? `满${form?.extJson?.ticketDate.counts}人优惠` : `Discount for up to ${form?.extJson?.ticketDate.counts} people`
139 }}<span v-if="language == 0">{{ form?.extJson?.ticketDate.discount }}</span>
140 <span v-else>{{ (10 - form?.extJson?.ticketDate.discount) * 10 + '%' }}off</span>
141 </el-col>
142 <!-- <el-col>-->
143 <!-- {{-->
144 <!-- language == 0 ? '原价票' : 'Cost Ticket'-->
145 <!-- }}{{-->
146 <!-- language == 0 ? form?.extJson?.ticketDate?.price : form?.extJson?.ticketDate?.priceEn-->
147 <!-- }}{{ language == 0 ? '元' : 'Euro' }} x 1-->
148 <!-- {{ language == 0 ? '张' : 'Tickets' }}-->
149 <!-- </el-col>-->
150 <!-- <el-col>-->
151 <!-- {{-->
152 <!-- language == 0 ? '优惠票' : 'Concession Ticket'-->
153 <!-- }}{{-->
154 <!-- language == 0 ? form?.extJson?.ticketDate?.rebatePrice : form?.extJson?.ticketDate?.rebatePriceEn-->
155 <!-- }}{{ language == 0 ? '元' : 'Euro' }} x 1-->
156 <!-- {{ language == 0 ? '张' : 'Tickets' }}-->
157 <!-- </el-col>-->
158
159 </el-row>
160 </div>
161 </div>
162
163 <div class="leftboderTT">{{ language == 0 ? '预订信息' : 'Booking information' }}</div>
164
165 <div class="border-info mt20">
166 <el-row v-if="type == 'hotel'">
167 <el-col :lg="8" :md="12" :sm="12" :xs="24">
168 <div>{{ language == 0 ? '入住人' : 'Check-in Person' }}{{ form.rzUsers }}</div>
169 </el-col>
170 <el-col :lg="8" :md="12" :sm="12" :xs="24">{{
171 language == 0 ? '联系方式' : 'Contact Information'
172 }}{{ form.phone }}
173 </el-col>
174 <el-col :lg="8" :md="12" :sm="12" :xs="24"></el-col>
175 </el-row>
176 <el-row v-if="type == 'car'">
177 <el-col v-if="form.pickUpBo?.revTime" :lg="12" :md="12" :sm="12" :xs="24">
178 <h4>{{ language == 0 ? '接站信息' : 'Pick-up Information' }}</h4>
179 <div class="st-info">
180 <div>{{ language == 0 ? '用车时间' : 'Delivery Time' }}{{ form.pickUpBo.revTime }}</div>
181 <div v-for="(car,index) in form.pickUpBo.carsList" :key="index" class="carLine">
182 <div v-if="car.num > 0">
183 <label>{{ car.name }}</label>
184 <el-tag class="mr10">{{ car.carSeat }} {{ language == 0 ? '座 ' : 'Sets' }}</el-tag>
185 <el-tag>{{ car.carColor }}</el-tag>
186 </div>
187
188 <span v-if="car.num > 0"> {{ car.num }}{{
189 language == 0 ? '辆' : 'Cars'
190 }} * {{ language == 0 ? '¥' : '€' }}{{ car.price }}</span>
191 </div>
192
193 <div>{{ language == 0 ? '人数' : 'People' }} {{ form.pickUpBo.count }}</div>
194 <div>{{ language == 0 ? '航班/火车班次' : 'Flight/Train' }} {{ form.pickUpBo.no }}</div>
195 <div>{{ language == 0 ? '接机/接站地点' : 'Pick-up/Drop-off Place' }}
196 {{ form.pickUpBo.noAddress }}
197 </div>
198 <div>{{ language == 0 ? '送达地点' : 'Delivery Place' }} {{ form.pickUpBo.deliveryAddress }}</div>
199 <div>{{ language == 0 ? '联系人' : 'Contact Person' }}{{ form.pickUpBo.contacts }}</div>
200 <div>{{ language == 0 ? '联系电话' : 'Contact Phone' }}{{ form.pickUpBo.phone }}</div>
201 <div>{{ language == 0 ? '备注' : 'Remarks' }}{{ form.pickUpBo.remarks || '-' }}</div>
202 </div>
203 </el-col>
204 <el-col v-if="form.dropOffBo?.revTime" :lg="12" :md="12" :sm="12" :xs="24">
205 <h4>{{ language == 0 ? '送站信息' : 'Drop-off Information' }}</h4>
206 <div class="st-info">
207 <div>{{ language == 0 ? '用车时间' : 'Delivery Time' }}{{ form.dropOffBo.revTime }}</div>
208 <div v-for="(car,index) in form.dropOffBo.carsList" :key="index" class="carLine">
209 <div v-if="car.num > 0">
210 <label>{{ car.name }}</label>
211 <el-tag class="mr10">{{ car.carSeat }} {{ language == 0 ? '座 ' : 'Sets' }}</el-tag>
212 <el-tag>{{ car.carColor }}</el-tag>
213 </div>
214
215 <span v-if="car.num > 0"> {{ car.num }}{{
216 language == 0 ? '辆' : 'Cars'
217 }} * {{ language == 0 ? '¥' : '€' }}{{ car.price }}</span>
218 </div>
219 <div>{{ language == 0 ? '人数' : 'Counts' }}{{ form.dropOffBo.count }}</div>
220 <div>{{ language == 0 ? '联系人' : 'Contact Person' }}{{ form.dropOffBo.contacts }}</div>
221 <div>{{ language == 0 ? '联系电话' : 'Contact Phone' }}{{ form.dropOffBo.phone }}</div>
222 <div>{{ language == 0 ? '备注' : 'Remarks' }}{{ form.dropOffBo.remarks || '-' }}</div>
223 </div>
224 </el-col>
225 </el-row>
226 <el-row v-if="type == 'food'">
227 <el-col :lg="8" :md="12" :sm="12" :xs="24">
228 <div v-for="f in form.messageObj?.foodsList">
229 <span v-if="f.category==0">{{ language == 0 ? '早餐' : 'Breakfast' }}</span>
230 <span v-if="f.category==1">{{ language == 0 ? '午餐' : 'Lunch' }}</span>
231 <span v-if="f.category==2">{{ language == 0 ? '晚餐' : 'Dinner' }}</span>
232 {{ f.name }} * {{ f.num }} {{ language == 0 ? '份' : 'pcs' }}
233 </div>
234 </el-col>
235 <el-col :lg="12" :md="12" :sm="12" :xs="24">
236 <div class="mb10">{{
237 language == 0 ? '订餐周期' : 'Check-in date'
238 }}{{ form.extJsonObj?.dcStart || '-' }} ~ {{ form.extJsonObj?.dcEnd || '-' }}
239 </div>
240 </el-col>
241 <el-col :lg="8" :md="12" :sm="12" :xs="24">
242 <div class="mb10">{{ language == 0 ? '联系人' : 'Contact Person' }}{{ form.contacts }}</div>
243 </el-col>
244 <el-col :lg="8" :md="12" :sm="12" :xs="24">{{
245 language == 0 ? '联系方式' : 'Contact Phone'
246 }}{{ form.phone }}
247 </el-col>
248 <el-col :span="24">{{ language == 0 ? '备注' : 'Remarks' }}{{ form.remarks || '-' }}</el-col>
249 </el-row>
250 <el-row v-if="type == 'makeUp'">
251 <el-col :lg="8" :md="12" :sm="12" :xs="24">
252 <div class="mb10">{{ language == 0 ? '化妆时间' : 'Makeup time' }}
253 <!-- {{ dayjs(form.dcStart).format('YYYY-MM-DD') +'&nbsp;' }} ~ {{dayjs(form.dcStart).format('YYYY-MM-DD') +'&nbsp;'}}-->
254 {{ dayjs(form.dcStart).format('YYYY-MM-DD') + '&nbsp;' + form.nameStart }} ~
255 {{ dayjs(form.dcStart).format('YYYY-MM-DD') + '&nbsp;' + form.nameEnd }}
256 </div>
257 </el-col>
258 <el-col :lg="12" :md="12" :sm="12" :xs="24">
259 <div class="mb10">{{ language == 0 ? '预约数' : 'Number of appointments' }}{{ form.num }}</div>
260 </el-col>
261 <el-col :lg="8" :md="12" :sm="12" :xs="24">
262 <div class="mb10">{{ language == 0 ? '联系人' : 'Contact Person' }}{{ form.contacts }}</div>
263 </el-col>
264 <el-col :lg=12 :md="12" :sm="12" :xs="24">
265 <div class="mb10">
266 {{ language == 0 ? '联系方式' : 'Contact Phone' }}{{ form.phone }}
267 </div>
268 </el-col>
269 <el-col :lg="8" :md="12" :sm="12" :xs="24">
270 <div class="mb10">
271 {{ language == 0 ? '备注' : 'Remarks' }}{{ form.remarks }}
272 </div>
273 </el-col>
274 <el-col :lg="8" :md="12" :sm="12" :xs="24">
275 <div class="mb10">
276 {{ language == 0 ? '地点' : 'Address' }}{{ language == 0 ? formInfo.address : formInfo.addressEn }}
277 </div>
278 </el-col>
279 </el-row>
280 <el-row v-if="type == 'photography'">
281 <el-col :lg="8" :md="12" :sm="12" :xs="24">
282 <div class="mb10">{{ language == 0 ? '拍摄时间' : 'Makeup time' }}
283 {{ dayjs(form.dcStart).format('YYYY-MM-DD') + '&nbsp;' + form.nameStart }} ~
284 {{ dayjs(form.dcStart).format('YYYY-MM-DD') + '&nbsp;' + form.nameEnd }}
285 </div>
286 </el-col>
287 <el-col :lg="12" :md="12" :sm="12" :xs="24">
288 <div class="mb10">{{ language == 0 ? '预约数' : 'Number of appointments' }}{{ form.num }}</div>
289 </el-col>
290 <el-col :lg="8" :md="12" :sm="12" :xs="24">
291 <div class="mb10">{{ language == 0 ? '联系人' : 'Contact Person' }}{{ form.contacts }}</div>
292 </el-col>
293 <el-col :lg="8" :md="12" :sm="12" :xs="24">{{
294 language == 0 ? '联系方式' : 'Contact Phone'
295 }}{{ form.phone }}
296 </el-col>
297 <el-col :span="24">{{ language == 0 ? '备注' : 'Remarks' }}{{ form.remarks }}</el-col>
298 </el-row>
299 <el-row v-if="type == 'ticket'" style="width: 100%">
300 <el-row v-for="v in form.extJson?.message" style="width: 100%">
301 <el-col :lg="8" :md="12" :sm="12" :xs="24">
302 <div>{{ v.name }}
303 </div>
304 </el-col>
305 <el-col :lg="8" :md="12" :sm="12" :xs="24">
306 <!-- <div>{{-->
307 <!-- !v.discount ? language == 0 ? '原价票' : 'Cost Ticket' : language == 0 ? '优惠票' : 'Concession Ticket'-->
308 <!-- }}-->
309 <!-- </div>-->
310 <div>{{ v.idCard }}
311 </div>
312 </el-col>
313 <el-col :lg="8" :md="12" :sm="12" :xs="24">
314 <div v-if="language == 0 ">
315 {{ language == 0 ? '¥' : '€' }}
316 {{
317 !v.discount ? form.extJson?.ticketDate?.price : form.extJson?.ticketDate?.rebatePrice
318 }}
319 /{{ language == 0 ? '张' : 'Tickets' }}
320 </div>
321 <div v-else>
322 {{ language == 0 ? '¥' : '€' }}
323 {{
324 !v.discount ? form.extJson?.ticketDate?.priceEn : form.extJson?.ticketDate?.rebatePriceEn
325 }}
326 /{{ language == 0 ? '张' : 'Tickets' }}
327 </div>
328 </el-col>
329 </el-row>
330 <el-row style="width: 100%">
331 <el-col :lg="8" :md="12" :sm="12" :xs="24">
332 <div>{{
333 language == 0 ? '购票数量' : 'Number of tickets purchased'
334 }}{{ form.num }}{{ language == 0 ? '张' : 'Tickets' }}
335 </div>
336 </el-col>
337 <el-col :lg="8" :md="12" :sm="12" :xs="24">{{
338 language == 0 ? '联系方式' : 'Contact Information'
339 }}{{ form.phone }}
340 </el-col>
341 <el-col :lg="8" :md="12" :sm="12" :xs="24">
342 {{ language == 0 ? '共计' : 'total' }}:{{
343 language == 0 ? '¥' : '€'
344 }}{{ Number(totalFee).toFixed(2) }}
345 </el-col>
346 </el-row>
347
348 </el-row>
349
350 </div>
351
352 <el-row align="middle" justify="space-between">
353 <el-col :lg="12">
354 <div v-if="form.payDate">{{ language == 0 ? '支付时间' : 'Payment Time' }}{{ form.payDate }}</div>
355 <div v-if="form.payDate" class="mt10">{{ language == 0 ? '支付方式' : 'Payment Method' }}
356 <span v-if="form.paymentType=='1'">{{ language == 0 ? '微信支付' : 'WePay' }}</span>
357 <span v-if="form.paymentType=='3'">PayPal</span>
358 </div>
359 </el-col>
360 <el-col :lg="12" class="result">
361 <div v-if="form.viewStatus=='0'" class="priceb">{{ language == 0 ? '待支付金额' : 'Amount Due' }}
362 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
363 </div>
364 <div v-if="form.viewStatus=='1'||form.viewStatus=='5'" class="priceb">
365 {{ language == 0 ? '已支付金额' : 'Amount Due' }}
366 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
367 </div>
368 <div v-if="form.viewStatus=='4'" class="priceb">{{ language == 0 ? '已退订' : 'Refunded' }}
369 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
370 </div>
371 <div v-if="form.viewStatus=='2'" class="priceb">{{ language == 0 ? '已取消' : 'Canceled' }}
372 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
373 </div>
374 <div v-if="form.viewStatus=='7'" class="priceb">{{ language == 0 ? '退款审核中' : 'Refund in review' }}
375 <span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span>
376 </div>
377 </el-col>
378 <el-col :lg="24">
379 <div class="text-center">
380 <el-button v-if="(form.viewStatus=='1'||form.viewStatus=='5')&&type == 'hotel'" class="mt20 btn-lineG"
381 round
382 size="large" type="primary"
383 @click="exportPdf">
384 <el-icon>
385 <Upload/>
386 </el-icon>
387 {{ language == 0 ? '导出酒店预订单' : 'Export PDF' }}
388 </el-button>
389 <el-button
390 v-if="(form.viewStatus=='1'||form.viewStatus=='5')&&(type=='makeUp'||type=='hotel'||type=='ticket')"
391 class="mt20 btn-lineG" round
392 size="large"
393 type="primary"
394 @click="downInvoice">
395 <el-icon>
396 <Download/>
397 </el-icon>
398 {{ language == 0 ? '下载收据' : 'DownLoad Invoice' }}
399 </el-button>
400 </div>
401 </el-col>
402 </el-row>
403 </div>
404 </div>
405 <div v-else class="pd20 skeletonBox">
406 <el-skeleton :rows="8"/>
407 <el-button :style="language == 0 ?'width:200px':'width:400px'" class="btn-lineG" round size="large"
408 type="primary" @click="showLogin">
409 {{ language == 0 ? '登录后查看明细' : 'View detailed information after logging in' }}
410 </el-button>
411 </div>
412
413 <div v-if="form.viewStatus == '0'&&(form.surplus!='0,0'&&form.surplus!='0')" class="pd20">
414
415 <div class="leftboderTT">{{ language == 0 ? '选择支付方式' : 'Choose payment method' }}</div>
416 <div class="mt20">
417 <el-radio-group v-model="payType">
418 <el-radio v-if="language==0" border value="2">
419 <!-- 微信-->
420 <svg class="icon" height="40" p-id="24747" t="1709002960407"
421 version="1.1" viewBox="0 0 3152 1024" width="94" xmlns="http://www.w3.org/2000/svg">
422 <path
423 d="M381.998922 630.960647c-4.416173 2.208086-8.832345 3.312129-14.352561 3.312129-12.144474 0-22.080863-7.17628-28.1531-17.66469l-2.208086-4.968194-87.771428-204.247978c-1.104043-2.208086-1.104043-4.416173-1.104043-6.624259 0-9.384367 6.624259-16.560647 15.456603-16.560647 3.312129 0 6.624259 1.104043 9.936388 3.312129l103.780054 78.387062c7.728302 4.968194 16.560647 8.280323 26.497035 8.280324 5.520216 0 11.040431-1.104043 16.560647-3.312129l486.330998-230.192992C819.752022 131.381132 676.226415 60.17035 513.380054 60.17035 248.409704 59.618329 32.017251 250.61779 32.017251 486.883019c0 128.069003 64.586523 244.545553 166.15849 322.932614 7.728302 6.072237 13.248518 16.560647 13.248518 27.601079 0 3.312129-1.104043 7.17628-2.208086 10.488409-7.728302 32.017251-20.976819 84.459299-20.97682 86.667386-1.104043 3.312129-2.208086 8.280323-2.208086 13.248517 0 9.384367 6.624259 16.560647 15.456604 16.560647 3.312129 0 6.624259-1.104043 8.832345-3.312129l104.884097-65.138545c7.728302-4.968194 16.560647-8.280323 25.392992-8.280323 4.416173 0 9.936388 1.104043 14.35256 2.208086 49.129919 15.456604 102.676011 23.736927 157.326146 23.736927 265.522372 0 481.362803-191.551482 481.362803-427.816711 0-71.210782-19.872776-139.109434-54.650135-198.175741L385.863073 628.752561l-3.864151 2.208086z"
424 fill="#09BB07" p-id="24748"></path>
425 <path
426 d="M1398.822642 381.998922c-9.384367 19.320755-20.424798 38.641509-32.017251 57.962264v263.866307h-31.465229V485.226954c-13.248518 18.216712-27.049057 34.225337-40.297574 48.025876-3.864151-7.17628-14.352561-23.736927-20.424798-30.361186 34.777358-33.673315 71.210782-82.803235 93.843666-131.933153l30.361186 11.040431z m-8.280324-91.63558c-22.632884 36.985445-59.066307 78.939084-91.635579 105.98814-4.416173-7.17628-13.248518-19.320755-19.320755-25.945013 29.809164-23.736927 62.378437-61.274394 78.939083-92.187601l32.017251 12.144474z m181.615094 289.811321c1.656065 7.728302 6.072237 19.320755 8.832345 24.84097-55.754178 37.537466-66.242588 46.369811-72.866846 54.650135-1.656065-7.728302-8.280323-22.080863-12.696496-28.705121 4.968194-3.312129 12.696496-10.48841 12.696496-28.705121v-54.098114h-60.17035v27.049057c0 38.641509-7.728302 91.083558-42.505661 128.069003-4.416173-7.17628-16.560647-19.320755-22.632884-23.184906 29.809164-31.465229 34.225337-72.866846 34.225337-105.436119v-54.098113h118.684636v82.251213l36.433423-22.632884z m123.100809-176.094879c-9.384367 73.970889-23.184906 136.349326-48.025876 187.687332 16.560647 36.433423 39.193531 66.242588 67.346631 83.355256-7.17628 6.072237-17.112668 18.216712-22.632884 27.049057-25.945013-18.216712-46.369811-45.265768-62.930459-78.939084-20.424798 32.017251-45.81779 59.066307-78.939083 81.699191-3.864151-6.624259-13.248518-19.872776-19.872776-25.392992 36.985445-22.632884 64.034501-52.99407 83.907277-89.979514-12.696496-34.777358-22.080863-73.418868-28.705121-115.372507-4.968194 11.040431-10.48841 22.632884-16.560647 31.465229-3.864151-4.416173-10.48841-13.248518-17.112668-20.424798v5.520216h-154.014017v-29.809165h154.014017v9.384367c24.84097-49.129919 37.537466-118.684636 44.713746-191.551483l31.465229 4.968195c-3.864151 31.465229-8.280323 61.274394-13.800539 90.531536h96.051752v29.809164h-14.904582z m-142.973585 22.632884h-145.181671v-110.404312h24.84097v82.251213h35.32938V278.770889h26.497035v119.78868h33.673316V316.308356h25.392992v110.404312z m55.202156-22.632884c-1.656065 6.624259-3.312129 12.696496-4.416172 18.768734 6.072237 46.369811 14.904582 91.083558 28.1531 130.277088 16.560647-43.057682 26.497035-91.63558 32.569272-149.045822h-56.3062zM1882.393531 289.259299c-10.48841 31.465229-24.288949 62.378437-39.193531 91.63558v324.036657h-32.017251V437.201078c-13.800539 22.632884-29.257143 42.50566-44.161725 60.170351-3.312129-7.728302-13.248518-24.288949-19.320754-32.017251 41.953639-45.265768 80.043127-114.820485 103.780053-184.927224l30.913208 8.832345z m288.707278 65.690566v29.257143h-294.779515v-29.257143h294.779515z m-267.730459 199.831806h235.713208v147.941779h-30.913208v-16.560647h-174.438814v18.216712h-30.361186v-149.597844z m231.297035-104.332075H1909.994609v-28.1531h224.672776v28.1531zM1909.994609 486.883019h224.672776v28.1531H1909.994609v-28.1531z m23.736927 96.603773V656.90566h174.438814v-73.418868h-174.438814z m81.699192-231.297035c-6.072237-16.560647-20.424798-43.057682-32.017251-61.826415l29.257143-12.144474c13.248518 19.320755 27.601078 44.161725 34.225337 60.722372l-31.465229 13.248517zM2586.221024 468.114286c-26.497035 63.48248-69.002695 111.508356-122.548787 147.941779 50.785984 25.945013 110.956334 43.609704 180.511051 52.442048-7.728302 8.280323-16.560647 23.184906-21.528841 33.673316-75.074933-11.592453-139.661456-32.569272-192.655525-64.034502-57.962264 32.017251-125.308895 52.99407-195.415634 66.794609-3.312129-9.384367-12.696496-25.392992-19.320754-33.121293 66.242588-10.48841 129.173046-28.1531 183.271159-55.202157-44.161725-32.017251-78.939084-72.866846-103.780054-123.65283l10.48841-3.864151h-49.12992v-34.225337h155.670081V383.654987h-176.6469v-34.225337h176.6469V278.770889h35.32938v70.658761h177.750944v34.225337h-177.750944v71.210781H2555.859838l7.176281-1.656064 23.184905 14.904582z m-255.033962 20.976819c23.184906 43.609704 56.858221 80.043127 100.467925 108.748248 44.161725-28.1531 80.043127-63.48248 104.332075-108.748248h-204.8zM2834.630728 292.571429c-13.800539 34.777358-30.361186 69.554717-49.129919 101.571967v308.580054h-34.225337V447.689488c-14.904582 20.976819-31.465229 40.297574-46.921833 56.306199-4.416173-7.728302-14.904582-25.945013-21.528841-34.225337 47.473854-45.265768 91.63558-115.924528 118.132614-188.239353l33.673316 11.040432z m270.490566 123.65283h-58.514286v240.12938c0 25.945013-7.728302 36.985445-24.84097 41.953639-18.216712 5.520216-49.129919 6.072237-99.915903 5.520215-1.656065-8.832345-8.280323-24.84097-13.248518-34.225337 39.193531 1.656065 77.283019 1.656065 88.32345 1.104043 10.48841-1.104043 14.352561-3.864151 14.352561-14.35256V416.224259h-187.687332v-34.225337h187.687332V283.739084h34.777359v97.707816h58.514285v34.777359z m-184.375202 178.854986c-13.800539-28.705121-43.609704-78.939084-67.346631-115.924528l29.809164-13.800539c24.288949 35.881402 55.202156 84.459299 70.106739 112.612399l-32.569272 17.112668z"
427 fill="#595757" p-id="24749"></path>
428 </svg>
429 </el-radio>
430 <el-radio v-if="language==1" border value="3">
431 <!--paypal-->
432 <svg class="icon" height="40" p-id="22654" t="1709002828937"
433 version="1.1" viewBox="0 0 4220 1024" width="94" xmlns="http://www.w3.org/2000/svg">
434 <path
435 d="M3249.722604 229.409369h-232.537679c-15.641548 0-29.197556 11.470468-32.325865 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h118.875764c11.470468 0 20.855397-8.342159 21.898167-18.769858l27.112016-168.928717c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641547c41.710794 0 81.336049 0 102.191447 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731z"
436 fill="#009CDE" p-id="22655"></path>
437 <path
438 d="M1594.84684 229.409369h-232.537678c-15.641548 0-29.197556 11.470468-32.325866 27.112016l-93.849287 595.421589c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h110.533605c15.641548 0 29.197556-11.470468 32.325866-27.112017l25.026476-160.586558c2.08554-15.641548 15.641548-27.112016 32.325866-27.112016h72.99389c153.287169 0 240.879837-74.03666 263.820774-221.06721 10.427699-63.608961 0-114.704684-29.197556-150.158859-31.283096-38.582485-89.678208-58.395112-167.885947-58.395112z m27.112016 216.89613c-12.513238 83.421589-76.1222 83.421589-137.645621 83.421589h-35.454175l25.026476-155.372709c1.04277-9.384929 9.384929-16.684318 18.769858-16.684318h15.641548c41.710794 0 81.336049 0 102.191446 23.983707 12.513238 14.598778 15.641548 35.454175 11.470468 64.651731zM2288.288795 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.213849 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710794 171.014257 34.411405 39.625255 82.378819 56.309572 139.731161 56.309572 99.063136 0 153.287169-63.608961 153.287169-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480652-380.610998c2.08554-10.427699-6.256619-21.898167-18.769858-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.079429-30.240326-16.684318-19.812627-22.940937-46.924644-17.727088-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z"
439 fill="#003087" p-id="22656"></path>
440 <path
441 d="M3943.164559 443.177189h-111.576375c-9.384929 0-17.727088 7.299389-18.769857 16.684318l-5.21385 31.283096-7.299389-11.470469c-23.983707-34.411405-77.164969-46.924644-131.389002-46.924643-123.046843 0-227.323829 92.806517-248.179226 223.152749-10.427699 64.651731 4.171079 127.217923 41.710795 171.014257 34.411405 39.625255 82.378819 56.309572 139.73116 56.309572 99.063136 0 153.287169-63.608961 153.28717-63.608961l-5.21385 31.283096c-2.08554 11.470468 7.299389 21.898167 18.769858 21.898167h100.105906c15.641548 0 29.197556-11.470468 32.325866-27.112017l60.480651-380.610998c2.08554-10.427699-6.256619-21.898167-18.769857-21.898167z m-154.329939 216.896131c-10.427699 63.608961-61.523422 106.362525-125.132383 106.362525-32.325866 0-58.395112-10.427699-75.07943-30.240326-16.684318-19.812627-22.940937-46.924644-17.727087-78.207739 10.427699-62.566191 61.523422-107.405295 124.089613-107.405295 31.283096 0 57.352342 10.427699 74.03666 30.240326 17.727088 20.855397 25.026477 47.967413 19.812627 79.250509z"
442 fill="#009CDE" p-id="22657"></path>
443 <path
444 d="M2880.582074 443.177189h-111.576375c-10.427699 0-20.855397 5.213849-27.112016 14.598778l-154.329939 227.323829-65.694501-217.9389c-4.171079-13.556008-16.684318-22.940937-31.283096-22.940937h-109.490835c-13.556008 0-22.940937 13.556008-18.769857 26.069247l123.046843 360.79837-115.747454 162.672098c-9.384929 12.513238 0 30.240326 15.641548 30.240326h111.576375c10.427699 0 20.855397-5.213849 26.069246-13.556008l371.226069-535.983707c11.470468-13.556008 2.08554-31.283096-13.556008-31.283096z"
445 fill="#003087" p-id="22658"></path>
446 <path
447 d="M4074.553561 245.050916l-94.892057 605.849288c-2.08554 11.470468 7.299389 21.898167 18.769857 21.898167h95.934827c15.641548 0 29.197556-11.470468 32.325866-27.112017l93.849287-595.421588c2.08554-11.470468-7.299389-21.898167-18.769857-21.898167h-107.405296c-10.427699 1.04277-18.769857 7.299389-19.812627 16.684317z"
448 fill="#009CDE" p-id="22659"></path>
449 <path
450 d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l-13.556008 85.507128c-2.08554 14.598778 9.384929 27.112016 23.983707 27.112016h165.800407c19.812627 0 36.496945-14.598778 39.625255-33.368635l2.08554-8.342159 31.283095-198.126273 2.08554-10.427699c3.12831-19.812627 19.812627-33.368635 39.625255-33.368635h25.026476c160.586558 0 285.718941-64.651731 322.215886-253.393075 15.641548-79.250509 7.299389-144.94501-33.368635-190.826884-12.513238-13.556008-28.154786-26.069246-45.881874-35.454175"
451 fill="#009CDE" p-id="22660"></path>
452 <path
453 d="M782.529121 259.649695c12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958-1.04277 9.384929c3.12831-21.898167 21.898167-38.582485 44.839104-38.582485h93.849287c183.527495 0 327.429735-74.03666 369.140529-289.89002l3.12831-18.769857"
454 fill="#012169" p-id="22661"></path>
455 <path
456 d="M326.838693 260.692464c2.08554-13.556008 10.427699-23.983707 21.898167-30.240326 5.213849-2.08554 11.470468-4.171079 16.684318-4.171079h250.264766c29.197556 0 57.352342 2.08554 82.378819 6.256619 7.299389 1.04277 14.598778 2.08554 20.855397 4.17108 7.299389 1.04277 13.556008 3.12831 19.812627 5.213849l9.384929 3.128309c12.513238 4.171079 23.983707 9.384929 34.411405 14.598779 12.513238-79.250509 0-133.474542-42.753564-182.484726C691.808143 22.940937 606.301015 0 496.81018 0H178.765374c-21.898167 0-41.710794 16.684318-44.839104 38.582485L0.451728 879.05499c-3.12831 16.684318 10.427699 31.283096 27.112016 31.283096h196.040733l49.010184-312.830958L326.838693 260.692464z"
457 fill="#003087" p-id="22662"></path>
458 </svg>
459 </el-radio>
460 </el-radio-group>
461 <div v-if="payType == '2'&&wePayCodeUrl">
462 <div class="payImgbox flexCenter">
463 <div>
464 <img :src="wePayCodeUrl" class="border" width="260"/>
465 <img class="mt20" src="@/assets/img/sm.png"/>
466 </div>
467 <div class="ml20">
468 <img height="360" src="@/assets/img/rr.jpg"/>
469 </div>
470 </div>
471 <div v-if="language==0" class="tip text-center text-danger">
472 支付后不要关闭此窗口,等待确认支付成功.
473 若长时间未收到支付成功提醒,请刷新页面
474 </div>
475 <div v-else class="tip text-center text-danger">
476 After payment, do not close this window and wait for confirmation of successful payment.
477 <br/>
478 If you have not received a notification of successful payment for a long time,
479 please refresh the page
480 </div>
481 </div>
482 </div>
483 </div>
484 <el-row align="middle" class="mt20 mb60" justify="center">
485 <el-col :span="24" class="text-center">
486 <el-button v-if="!hideconfirmbtn&&form.viewStatus == '0'" class="btn-lineG w200px" round type="primary"
487 @click="goPay">
488 {{ language == 0 ? '确定' : 'Submit' }}
489 </el-button>
490 <el-button v-if="form.viewStatus == '5'" round @click="unsubscribe">
491 {{ language == 0 ? '退订' : 'Unsubscribe' }}
492 </el-button>
493 <el-button v-if="form.viewStatus == '0'" class="underline" link @click="cancel">
494 {{ language == 0 ? '取消订单' : 'Cancel Order' }}
495 </el-button>
496 </el-col>
497 </el-row>
498
499 <div v-if="form.payDate&&form.viewStatus=='1'">
500 <div class="text-center">
501 <el-icon color="#32B16C" size="80">
502 <SuccessFilled/>
503 </el-icon>
504 <p class="text-success">{{ language == 0 ? '支付成功' : 'successful!' }}</p>
505 <h3 class="wePrice">{{ language == 0 ? '¥' : '€' }}{{ totalFee || 0 }}</h3>
506 </div>
507 </div>
508 </el-card>
509 </div>
510
511 <div v-if="errorBox" class="box">
512 <el-result
513 :sub-title="language==0?'请确认订单号是否正确':'Please confirm if the order number is correct'"
514 :title="language==0?'未找到对应订单':'No corresponding order found'"
515 icon="error"
516 >
517 <template #extra>
518 <el-button class="btn-lineG w200px" round type="primary" @click="goHome">
519 {{ language == 0 ? '返回首页' : 'Home' }}
520 </el-button>
521 </template>
522 </el-result>
523 </div>
524 <Dialog ref="DialogRef"/>
525
526 <el-dialog v-model="showSJDialog" :close-on-click-modal="false" :close-on-press-escape="false"
527 :title="language==0?'开收据':'Issue a receipt'" width="460px">
528 <div class="flex">
529 <el-form-item :label="language==0?'开票人':'Name'">
530 <div class="flex">
531 <el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'"></el-input>
532 <el-button type="primary" @click="submitSJ">{{ language == 0 ? '提交并下载' : 'Submit' }}</el-button>
533 </div>
534 </el-form-item>
535 </div>
536 <div v-if="remark" class="tip mt20">
537 <label>{{ language == 0 ? '开电子收据须知' : 'Receipt notice' }}:</label>
538 <div class="pd10">
539 {{ remark }}
540 </div>
541 </div>
542 </el-dialog>
543 </div>
544 </template>
545
546 <script setup>
547 import {Search} from "@element-plus/icons-vue"
548 import {getCurrentInstance, ref} from 'vue'
549 import {onMounted} from "@vue/runtime-core"
550 import {useRoute, useRouter} from "vue-router"
551 import * as booking from "@/apiPc/booking"
552 import Dialog from '@/viewsPc/booking/component/dailog.vue'
553 import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
554
555
556 const {proxy} = getCurrentInstance()
557 const route = useRoute()
558 const router = useRouter()
559 const matchInfo = ref({})
560 const approved = ref(true)
561 const tableData = ref([])
562 const payType = ref('2')
563 const orderId = ref(route.query.orderId)
564 const matchId = ref()
565 const groupId = ref()
566 import useUserStore from "@/store/modules/user";
567 import FileUpload from "@/components/FileUpload";
568 import {useStorage} from "@vueuse/core/index";
569 import {ElMessage, ElMessageBox} from "element-plus";
570 import {
571 cancelOrder,
572 cancelOrder2, getBaseInfoByActiveId,
573 getCarBilldetailbyId,
574 getFoodBilldetailbyId,
575 getMealOrderInfoByLogex, getPhotoOrderInfo, getPhotoOrderInfoByLogex, getTicketInfoByActivityId, getTicketOrderInfo,
576 } from "@/apiPc/booking";
577 import dayjs from 'dayjs'
578 import {delPerson} from "@/api/exam/person";
579
580 const isLogin = ref(false)
581 const language = useStorage('language', 0)
582 const totalFee = ref('')
583 const wePayCodeUrl = ref('')
584 const form = ref({})
585 const formInfo = ref({})
586 const type = ref('')
587 const errorBox = ref(false)
588 const hideconfirmbtn = ref(false)
589 const remark = ref('')
590 const showSJDialog = ref(false)
591 const loading = ref(false)
592 const lpName = ref('')
593 const matchForm = ref({})
594
595 const user = useUserStore().user
596 if (useUserStore().user) {
597 isLogin.value = true
598 }
599 onMounted(() => {
600 if (language.value == 0) {
601 payType.value = '2'
602 } else {
603 payType.value = '3'
604 }
605 if (route.query.type) {
606 type.value = route.query.type
607 }
608 if (route.query.orderType) {
609 switch (route.query.orderType) {
610 case '0':
611 type.value = 'hotel'
612 break
613 case '1':
614 type.value = 'car'
615 break
616 case '2':
617 type.value = 'food'
618 break
619 case '3':
620 type.value = 'makeUp'
621 break
622 case '4':
623 type.value = 'photography'
624 break
625 case '5':
626 type.value = 'ticket'
627 break
628 }
629 }
630 if (route.query.matchId) {
631 matchId.value = route.query.matchId
632 }
633 getData()
634 })
635
636 function getData() {
637 if (type.value == 'car') {
638 return booking.getCarBilldetailbyId({orderId: orderId.value}).then(res => {
639 form.value = res.data
640 if (language.value == 0) {
641 totalFee.value = res.data.total
642 } else {
643 totalFee.value = res.data.totalEn
644 }
645 }).catch(err => {
646 console.log(err)
647 errorBox.value = true
648 })
649 }
650 if (type.value == 'food') {
651 return booking.getFoodBilldetailbyId({orderId: orderId.value}).then(res => {
652 if (language.value == 0) {
653 totalFee.value = res.data.total
654 } else {
655 totalFee.value = res.data.totalEn
656 }
657 form.value = res.data
658 form.value.messageObj = JSON.parse(form.value.message)
659 form.value.extJsonObj = JSON.parse(form.value.extJson)
660 console.log(form.value)
661 })
662 }
663 if (type.value == 'hotel') {
664 return booking.getRoomBilldetailbyId({orderId: orderId.value}).then(res => {
665 if (language.value == 0) {
666 totalFee.value = res.data.total
667 } else {
668 totalFee.value = res.data.totalEn
669 }
670 form.value = res.data
671 form.value.messageObj = JSON.parse(form.value.message) || {}
672 form.value.extJsonObj = JSON.parse(form.value.extJson) || {}
673 matchId.value = form.value.extJsonObj?.activeId
674 }).catch(err => {
675 console.log(err)
676 errorBox.value = true
677 })
678 }
679 if (type.value == 'makeUp') {
680 MakeUpOrder()
681 // MakeUpIno()
682 }
683 if (type.value == 'photography') {
684 photographyOrder()
685 // photographyInfo()
686 }
687 if (type.value == 'ticket') {
688 getTicketOrderInfoFN()
689 }
690 console.log(payType.value)
691 }
692
693 // 票务订单详情
694 async function getTicketOrderInfoFN() {
695 const res = await getTicketOrderInfo({orderId: orderId.value})
696 form.value = res.data
697 form.value.extJson = JSON.parse(form.value.extJson)
698 try {
699 form.value.extJson.ticketDate = JSON.parse(form.value.extJson.ticketDate)
700 form.value.extJson.ticketType = JSON.parse(form.value.extJson.ticketType)
701 form.value.extJson.message = JSON.parse(form.value.extJson.message)
702 await getDetail(form.value.extJson.ticketDate.activityId)
703 matchId.value = form.value.extJson.ticketDate.activityId
704
705 totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn
706 } catch (e) {
707 console.log(e)
708 } finally {
709
710 }
711 console.log(form.value)
712
713 }
714
715 async function getDetail(activeId) {
716 const res = await getTicketInfoByActivityId({activityId: activeId})
717 matchForm.value = res.data
718 console.log(matchForm.value)
719 }
720
721
722 function goHome() {
723 router.push('/')
724 }
725
726 function goPay() {
727 if (payType.value == '2') {
728 booking.createWePay({orderId: orderId.value}).then(res => {
729 wePayCodeUrl.value = res.data
730 hideconfirmbtn.value = true
731 startforGetData()
732 })
733 }
734 if (payType.value == '3') {
735 booking.createPalPay({orderId: orderId.value}).then(res => {
736 if (res.data) {
737 location.href = res.data
738 }
739 })
740 }
741 }
742
743 let handle;
744
745 function startforGetData() {
746 handle = setTimeout(() => {
747 if (type.value == 'photography') {
748 photographyOrder().then(res => {
749 if (form.value.payDate) {
750 if (handle) {
751 clearTimeout(handle)
752 handle = null
753 }
754 } else {
755 startforGetData()
756 }
757 })
758 } else if (type.value == 'makeUp') {
759 MakeUpOrder().then(res => {
760 if (form.value.payDate) {
761 if (handle) {
762 clearTimeout(handle)
763 handle = null
764 }
765 } else {
766 startforGetData()
767 }
768 })
769 } else if (type.value == 'ticket') {
770 getTicketOrderInfoFN().then(res => {
771 if (form.value.payDate) {
772 if (handle) {
773 clearTimeout(handle)
774 handle = null
775 }
776 } else {
777 startforGetData()
778 }
779 })
780 } else {
781 getData().then(res => {
782 if (form.value.payDate) {
783 if (handle) {
784 clearTimeout(handle)
785 handle = null
786 }
787 } else {
788 startforGetData()
789 }
790 })
791 }
792 }, 2000)
793 }
794
795 function showLogin() {
796 useUserStore().setReLogin()
797 }
798
799
800 function MakeUpOrder() {
801 return booking.getMealOrderInfo({orderId: orderId.value}).then(res => {
802 form.value = res.data
803 totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn
804 matchId.value = form.value.activeId
805 MakeUpIno()
806 console.log(res)
807 }).catch(err => {
808 console.log(err)
809 errorBox.value = true
810 })
811 }
812
813 function MakeUpIno() {
814 booking.getMealOrderInfoByLogex({asmId: form.value.asmId}).then(res => {
815 formInfo.value = res.data
816 console.log(res)
817 })
818 .catch((e) => {
819 console.log(e)
820 errorBox.value = true
821 })
822 }
823
824
825 function photographyOrder() {
826 return booking.getPhotoOrderInfo({orderId: orderId.value}).then(res => {
827 form.value = res.data
828 totalFee.value = language.value == 0 ? form.value.total : form.value.totalEn
829 photographyInfo()
830 }).catch(err => {
831 console.log(err)
832 errorBox.value = true
833 })
834 }
835
836 function photographyInfo() {
837 booking.getPhotoOrderInfoByLogex({aspId: form.value.aspId}).then(res => {
838 formInfo.value = res.data
839 })
840 // .catch((e) => {
841 // console.log(e)
842 // errorBox.value = true
843 // })
844 }
845
846 const cancel = () => {
847 //取消订单
848 proxy.$modal.confirm(language.value == 0 ? '确定取消订单吗 ?' : `Are you sure to cancel the order?`).then(() => {
849 return cancelOrder2(orderId.value).then(res => {
850 getData()
851 ElMessage({
852 message: language.value == 0 ? '操作成功' : 'Successful operation!',
853 type: 'success'
854 })
855 })
856 })
857 }
858 const unsubscribe = () => {
859 proxy.$modal.confirm(language.value == 0 ? `确定退款吗 ?` : 'Are you sure to refund?').then(() => {
860 return cancelOrder(orderId.value).then(res => {
861 getData()
862 ElMessage({
863 message: language.value == 0 ? '已提交退款,请等待审核!' : 'Refund has been submitted, please wait for review!',
864 type: 'success'
865 })
866 })
867 })
868 }
869
870 function exportPdf() {
871 var obj = {
872 orderId: orderId.value
873 }
874 if (language.value == 0) {
875 proxy.download('/ota/orderRoom/downRoomConfirmation', {
876 ...obj
877 }, `订房确认书.pdf`)
878 } else {
879 proxy.download('/ota/orderRoom/downRoomConfirmation', {
880 ...obj
881 }, `Hotel Reservation.pdf`)
882 }
883
884 }
885
886 // 套餐详情
887 function handleView() {
888 console.log(form.value)
889 proxy.$refs['DialogRef'].open(language.value == 0 ? form.value.details : form.value.detailsEn)
890 }
891
892 function downInvoice() {
893 getremark()
894 if (form.value.receiptFlag == '0') {
895 showSJDialog.value = true
896 } else {
897 showSJ()
898 }
899 }
900
901 function getremark() {
902 getBaseInfoByActiveId(matchId.value).then(res => {
903 if (res.data) {
904 remark.value = res.data.remarks
905 }
906 })
907 }
908
909 function submitSJ() {
910 if (!lpName.value) {
911 ElMessage.warning(language.value == 0 ? '请填写开票人' : 'Please fill in the invoice recipient')
912 return
913 }
914 loading.value = true
915 ElMessageBox.confirm(language.value == 0 ? '提交后无法修改开票人,确认提交吗?' : 'Confirm to submit ?', {
916 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
917 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
918 type: 'warning'
919 }).then(() => {
920 showSJ()
921 })
922 }
923
924 const showSJ = () => {
925 // 查看电子收据预览信息
926 var obj = {
927 orderId: orderId.value,
928 type: 1
929 }
930 if (form.value.receiptFlag == '0') {
931 obj.receiptInfo = lpName.value
932 }
933 // // 报名
934 // proxy.download(`/ota/norder/getReceipt/${obj.orderId}`, {
935 // ...obj
936 // }, `Receipt_${new Date().getTime()}.pdf`)
937
938 // 报名
939 proxy.download(`/ota/norder/getReceipt/${obj.orderId}`, {
940 ...obj
941 }, `Receipt_${new Date().getTime()}.pdf`)
942 showSJDialog.value = false
943 getData()
944 }
945 </script>
946
947 <style lang="scss" scoped>
948 .st-info {
949 line-height: 2;
950 font-size: 14px;
951 }
952
953 .underline {
954 text-decoration: underline;
955 }
956
957 .wePrice {
958 font-size: 24px;
959 font-family: "DIN Alternate";
960 font-weight: 400;
961 }
962
963 .el-radio.is-bordered {
964 height: 40px;
965 }
966
967 .border {
968 border: 1px solid #e1e1e1;
969 }
970
971 .leftboderTT {
972 font-weight: 600;
973 font-size: 16px;
974 color: #453DEA;
975 }
976
977 .bg-lineg {
978 height: 40px;
979 line-height: 40px;
980 font-size: 18px;
981 text-align: center;
982 }
983
984 .table {
985 width: 100%;
986 max-width: 1000px;
987 margin: 20px auto;
988
989 .head {
990 background: #EFF2F7;
991 height: 50px;
992 font-size: 16px;
993 font-weight: 400;
994 }
995
996 th {
997 background: #FAFBFD;
998 font-size: 14px;
999 border-bottom: 1px solid #E5E5E5;
1000 border-right: 1px solid #E5E5E5;
1001 }
1002
1003 td {
1004 border-bottom: 1px solid #E5E5E5;
1005 border-right: 1px solid #E5E5E5;
1006 padding: 10px;
1007 }
1008
1009 &.table-border {
1010 border-top: 1px solid #E5E5E5;
1011 border-left: 1px solid #E5E5E5;
1012 }
1013 }
1014
1015 .text-gray {
1016 font-weight: 400;
1017 font-size: 12px;
1018 color: #929AA0;
1019 }
1020
1021 .size12 {
1022 font-size: 12px;
1023 }
1024
1025 .result {
1026 font-size: 22px;
1027
1028 .flex {
1029 display: flex;
1030 align-items: center;
1031 font-weight: 500;
1032
1033 img {
1034 margin-right: 10px
1035 }
1036 }
1037
1038 .priceb {
1039 color: #7B7F83;
1040 font-size: 16px;
1041 text-align: right;
1042 line-height: 50px;
1043
1044 span {
1045 font-weight: bold;
1046 font-size: 22px;
1047 font-family: DIN Alternate;
1048 color: #EB6100;
1049 }
1050 }
1051 }
1052
1053 .skeletonBox {
1054 position: relative;
1055 overflow: hidden;
1056
1057 .btn-lineG {
1058 position: absolute;
1059 left: 0;
1060 right: 0;
1061 margin: auto;
1062 top: 0;
1063 bottom: 0;
1064 width: 200px;
1065 box-shadow: 0 0 1000px 500px rgba(255, 255, 255, 0.5);
1066
1067 }
1068 }
1069
1070 .payImgbox {
1071 text-align: center;
1072 border: 1px solid #fff;
1073 padding: 20px;
1074 }
1075
1076 .priceBar {
1077 padding: 0 0 20px;
1078
1079 .flex {
1080 display: flex;
1081 justify-content: right;
1082 align-items: baseline;
1083
1084 .item {
1085 font-size: 16px;
1086 margin-right: 15px;
1087
1088 label {
1089 color: #95A1A6;
1090 }
1091
1092 span {
1093 font-family: DIN Alternate;
1094 }
1095 }
1096 }
1097
1098 .size26 {
1099 font-size: 26px;
1100 }
1101 }
1102
1103 .rre {
1104 color: #333;
1105 font-size: 16px;
1106 margin-top: 10px
1107 }
1108
1109 .price {
1110 color: orange;
1111 }
1112 </style>
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!