bb678af5 by 杨炀

no message

1 parent 9da759d0
...@@ -51,5 +51,4 @@ export default { ...@@ -51,5 +51,4 @@ export default {
51 /*每个页面公共css */ 51 /*每个页面公共css */
52 @import '/common/uni.css'; 52 @import '/common/uni.css';
53 @import '/common/mystyle.scss'; 53 @import '/common/mystyle.scss';
54 @import '@/static/font/iconfont.css';
55 </style> 54 </style>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -670,6 +670,13 @@ function groupWithDraw(data) { ...@@ -670,6 +670,13 @@ function groupWithDraw(data) {
670 params: data 670 params: data
671 }) 671 })
672 } 672 }
673 function certifiedwithDraw(data) {
674 return request({
675 url: `/member/certified/withDraw`,
676 method: 'post',
677 params:data
678 })
679 }
673 // 省合并缴费通知单 680 // 省合并缴费通知单
674 function mergePayMentApi(data) { 681 function mergePayMentApi(data) {
675 return request({ 682 return request({
...@@ -701,6 +708,13 @@ function unMerge(recordId) { ...@@ -701,6 +708,13 @@ function unMerge(recordId) {
701 method: 'post' 708 method: 'post'
702 }) 709 })
703 } 710 }
711 function certifiedunMerge(recordId) {
712 return request({
713 url: `/member/certified/unMerge/${recordId}`,
714 method: 'post'
715 })
716 }
717
704 function dellevelPerson(examId) { 718 function dellevelPerson(examId) {
705 return request({ 719 return request({
706 url: '/exam/person/' + examId, 720 url: '/exam/person/' + examId,
...@@ -1031,4 +1045,5 @@ export { ...@@ -1031,4 +1045,5 @@ export {
1031 getMemberInfoModRange,commitGroupChange,delGroupChange, 1045 getMemberInfoModRange,commitGroupChange,delGroupChange,
1032 getChangeGroupByRangeId,groupInfoMod,addGroupInfoModeToRange, 1046 getChangeGroupByRangeId,groupInfoMod,addGroupInfoModeToRange,
1033 groupChangeEditMod,groupChangeAudit,extractInfoFromChinaIdCard 1047 groupChangeEditMod,groupChangeAudit,extractInfoFromChinaIdCard
1048 ,certifiedwithDraw,certifiedunMerge
1034 } 1049 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -95,7 +95,7 @@ page { ...@@ -95,7 +95,7 @@ page {
95 .uni-forms-item__content{text-align: right;} 95 .uni-forms-item__content{text-align: right;}
96 .uni-date-x .icon-calendar{display: none;} 96 .uni-date-x .icon-calendar{display: none;}
97 .uni-date__x-input{font-size: 30rpx!important;} 97 .uni-date__x-input{font-size: 30rpx!important;}
98 .selected-area{justify-content: right;font-size: 30rpx;} 98 .selected-area{justify-content: flex-end;font-size: 30rpx;}
99 .input-value{padding: 0!important;} 99 .input-value{padding: 0!important;}
100 .input-value-border{padding: 0;} 100 .input-value-border{padding: 0;}
101 .uni-forms-item__label{ flex-direction: row-reverse!important; justify-content: start!important;} 101 .uni-forms-item__label{ flex-direction: row-reverse!important; justify-content: start!important;}
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
7 // const baseUrl_api = "http://123.60.96.243/stage-api/"; 7 // const baseUrl_api = "http://123.60.96.243/stage-api/";
8 const baseUrl_api = 'http://192.168.1.11:8787' 8 const baseUrl_api = 'http://192.168.1.11:8787'
9 // const baseUrl_api = 'https://ztx.itechtop.cn/stage-api' 9 // const baseUrl_api = 'https://ztx.itechtop.cn/stage-api'
10 // const baseUrl_api = 'https://tkcn.19wk.cn:8001/stage-api'
10 // const baseUrl_api = 'https://newsystem.taekwondo.org.cn/stage-api/' 11 // const baseUrl_api = 'https://newsystem.taekwondo.org.cn/stage-api/'
11 12
12 // train 13 // train
......
...@@ -38,7 +38,10 @@ ...@@ -38,7 +38,10 @@
38 38
39 <view class="func" v-if="item.auditStatus == 100"> 39 <view class="func" v-if="item.auditStatus == 100">
40 <button @click="handleAudit(item)">提交</button> 40 <button @click="handleAudit(item)">提交</button>
41 <!-- <button v-if="item.lastIds?.slice(0, 1) != '-'" @click="resolution(item)">取消合并</button> --> 41 <button v-if="item.lastIds?.slice(0, 1) != '-'" @click="resolution(item)">取消合并</button>
42 </view>
43 <view class="func" v-if="item.auditStatus == 1 && item.isView == 1">
44 <button @click="sendBack(item)">撤回</button>
42 </view> 45 </view>
43 </view> 46 </view>
44 </view> 47 </view>
...@@ -194,6 +197,45 @@ ...@@ -194,6 +197,45 @@
194 url: path 197 url: path
195 }); 198 });
196 } 199 }
200 function sendBack(row){
201 uni.showModal({
202 title: '提示',
203 content: `确定撤回${row.content.certName}吗`,
204 success: function(res) {
205 if (res.confirm) {
206 api.certifiedwithDraw({
207 recordId: row.recordId,
208 reason: row.reason
209 }).then(res => {
210 uni.showToast({
211 title: '操作成功',
212 icon: 'none'
213 })
214 getList()
215 })
216
217 }
218 }
219 })
220 }
221 function resolution(row){
222 uni.showModal({
223 title: '提示',
224 content: `确定拆分${row.content.certName}吗`,
225 success: function(res) {
226 if (res.confirm) {
227 api.certifiedunMerge(row.recordId).then(res => {
228 uni.showToast({
229 title: '已拆分',
230 icon: 'none'
231 })
232 getList()
233 })
234
235 }
236 }
237 })
238 }
197 </script> 239 </script>
198 240
199 <style scoped> 241 <style scoped>
......
...@@ -531,27 +531,12 @@ ...@@ -531,27 +531,12 @@
531 }] 531 }]
532 },{ 532 },{
533 "root": "training", 533 "root": "training",
534 "pages":[{ 534 "pages":[]
535 "path" : "trainList",
536 "style" :
537 {
538 "navigationBarTitleText" : "培训列表",
539 "enablePullDownRefresh" : false
540 }
541 },
542 {
543 "path" : "detailPage",
544 "style" :
545 {
546 "navigationBarTitleText" : "培训详情",
547 "enablePullDownRefresh" : false
548 }
549 }]
550 }], 535 }],
551 "preloadRule": { 536 "preloadRule": {
552 "pages/index/index": { 537 "pages/index/index": {
553 "network": "all", 538 "network": "all",
554 "packages": ["login","personalVip", "group","level","training"] 539 "packages": ["login","personalVip", "group","level"]
555 } 540 }
556 } 541 }
557 } 542 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
108 <uni-data-checkbox v-model="form.newSex" :localdata="sexs" /> 108 <uni-data-checkbox v-model="form.newSex" :localdata="sexs" />
109 </uni-forms-item> 109 </uni-forms-item>
110 <uni-forms-item label="证件类型:" v-show="type=='newIdcType'"> 110 <uni-forms-item label="证件类型:" v-show="type=='newIdcType'">
111 <uni-data-select v-model="form.newIdcType" :localdata="cardType" 111 <uni-data-select v-model="form.newIdcType" :localdata="cardType1"
112 :clear='false'></uni-data-select> 112 :clear='false'></uni-data-select>
113 </uni-forms-item> 113 </uni-forms-item>
114 <uni-forms-item label="证件号码:" v-show="type=='newIdcCode'"> 114 <uni-forms-item label="证件号码:" v-show="type=='newIdcCode'">
...@@ -212,6 +212,23 @@ ...@@ -212,6 +212,23 @@
212 value: '5' 212 value: '5'
213 } 213 }
214 ]) 214 ])
215 const cardType1 = ref([{
216 text: '身份证',
217 value: '0'
218 },
219 {
220 text: '港澳台通行证 ',
221 value: '1'
222 },
223 {
224 text: '外国护照',
225 value: '3'
226 },
227 {
228 text: '户口本',
229 value: '5'
230 }
231 ])
215 onLoad((option) => { 232 onLoad((option) => {
216 if (option.rangeId) { 233 if (option.rangeId) {
217 queryParams.value.rangeId = option.rangeId 234 queryParams.value.rangeId = option.rangeId
......
...@@ -181,10 +181,6 @@ ...@@ -181,10 +181,6 @@
181 text: "外国护照" 181 text: "外国护照"
182 }, 182 },
183 { 183 {
184 value: '4',
185 text: "其它"
186 },
187 {
188 value: '5', 184 value: '5',
189 text: "户口本" 185 text: "户口本"
190 } 186 }
......
...@@ -504,7 +504,4 @@ ...@@ -504,7 +504,4 @@
504 text-align: left; 504 text-align: left;
505 } 505 }
506 506
507 :deep(.selected-list) {
508 justify-content: flex-end;
509 }
510 </style> 507 </style>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
22 </uni-list> 22 </uni-list>
23 23
24 </view> 24 </view>
25 <view class="height1"></view>
25 </template> 26 </template>
26 27
27 <script setup> 28 <script setup>
...@@ -72,7 +73,8 @@ ...@@ -72,7 +73,8 @@
72 </script> 73 </script>
73 74
74 <style scoped lang="scss"> 75 <style scoped lang="scss">
75 .mainbox{margin: 30rpx 25rpx;padding: 1px; 76 .height1{height:1rpx}
77 .mainbox{margin: 30rpx 25rpx 60rpx;padding: 1px;
76 background: #FFFFFF; 78 background: #FFFFFF;
77 border-radius: 15rpx; 79 border-radius: 15rpx;
78 :deep(.uni-list-item__content-title){color: #4C5359;font-size: 30rpx; 80 :deep(.uni-list-item__content-title){color: #4C5359;font-size: 30rpx;
......
1 <template> 1 <template>
2 <view> 2 <view>
3 <z-paging ref="paging" v-model="list" @query="getQuery" emptyViewImg="/static/nodata.png"> 3 <z-paging ref="paging" v-show="total>0" v-model="list" @query="getQuery" emptyViewImg="/static/nodata.png">
4 <view class="searchbar" :slot="top"> 4 <view class="searchbar" :slot="top">
5 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search" 5 <uni-easyinput placeholderStyle="font-size:30rpx" :input-border="false" prefixIcon="search"
6 v-model="query.name" @blur="getList" @clear="getList" placeholder="搜索姓名"> 6 v-model="query.name" @blur="getList" @clear="getList" placeholder="搜索姓名">
7 </uni-easyinput> 7 </uni-easyinput>
8 8
9 </view> 9 </view>
10
11 <uni-swipe-action> 10 <uni-swipe-action>
12 <uni-swipe-action-item class="personitem" v-for="(n,index) in list" :key="index"> 11 <uni-swipe-action-item class="personitem" v-for="(n,index) in list" :key="index">
13 <view class="content-box" @click="handleInfo(n)"> 12 <view class="content-box" @click="handleInfo(n)">
...@@ -53,13 +52,12 @@ ...@@ -53,13 +52,12 @@
53 </template> 52 </template>
54 </uni-swipe-action-item> 53 </uni-swipe-action-item>
55 </uni-swipe-action> 54 </uni-swipe-action>
56 55 </z-paging>
57 <view class="nodata" v-if="list.length==0"> 56 <view class="nodata" v-if="list.length==0">
58 <!-- <image mode="aspectFit" src="/static/nodata.png"></image> --> 57 <!-- <image mode="aspectFit" src="/static/nodata.png"></image> -->
59 <button class="btn-red" v-if="userType=='4'" @click="goVipList">+ 添加会员</button> 58 <button class="btn-red" v-if="userType=='4'" @click="goVipList">+ 添加会员</button>
60 <!-- <text v-else>暂无数据</text> --> 59 <!-- <text v-else>暂无数据</text> -->
61 </view> 60 </view>
62 </z-paging>
63 </view> 61 </view>
64 </template> 62 </template>
65 63
...@@ -71,7 +69,7 @@ ...@@ -71,7 +69,7 @@
71 ref 69 ref
72 } from 'vue' 70 } from 'vue'
73 import { 71 import {
74 onLoad 72 onLoad,onShow
75 } from '@dcloudio/uni-app' 73 } from '@dcloudio/uni-app'
76 const query = ref({ 74 const query = ref({
77 pageNum: 1, 75 pageNum: 1,
...@@ -89,7 +87,7 @@ ...@@ -89,7 +87,7 @@
89 onLoad(() => { 87 onLoad(() => {
90 userType.value = app.globalData.userType 88 userType.value = app.globalData.userType
91 }) 89 })
92 onMounted(() => { 90 onShow(() => {
93 getList() 91 getList()
94 }) 92 })
95 function getQuery(pageNum,pageSize){ 93 function getQuery(pageNum,pageSize){
......
1 @font-face {
2 font-family: "iconfont";
3 /* Project id 3873999 */
4 src: url('/static/font/iconfont.ttf') format('woff2'),
5 url('/static/font/iconfont.ttf') format('woff'),
6 url('/static/font/iconfont.ttf') format('truetype');
7 }
8
9 .iconfont {
10 font-family: "iconfont" !important;
11 font-size: 16px;
12 font-style: normal;
13 -webkit-font-smoothing: antialiased;
14 -moz-osx-font-smoothing: grayscale;
15 }
16
17 .icon-31dingwei:before {
18 content: "\e600";
19 }
20
21 .icon-ai253:before {
22 content: "\e6f1";
23 }
24
25 .icon-loufangfangzi:before {
26 content: "\e729";
27 }
No preview for this file type
1 <template>
2 <view class="box">
3 <view class="box1">
4 <view class="title">
5 <view class="title-left">{{ porps.title }}</view>
6 <view class="title-icon" @click="changFN">
7 <uni-icons type="top" color="#95a1a6" v-if="show"></uni-icons>
8 <uni-icons type="bottom" color="#95a1a6" v-else></uni-icons>
9 </view>
10 </view>
11 <view class="conter-liner-cost">
12 <view class="liner-left">{{ porps.text }}&nbsp;&nbsp; 合计:</view>
13 <view class="liner-right">{{ porps.cost }}</view>
14 </view>
15 </view>
16 <view class="box2" v-show="show"><slot></slot></view>
17 </view>
18 </template>
19
20 <script setup>
21 import { ref } from 'vue';
22 const porps = defineProps({
23 title: String,
24 text: String,
25 cost: String
26 });
27 const show = ref(false);
28
29 function changFN() {
30 show.value = !show.value;
31 }
32 </script>
33
34 <style lang="scss" scoped>
35 .box {
36 margin: 0;
37 padding: 0 25rpx;
38 .box1 {
39 margin-bottom: 23rpx;
40 margin-top: 35rpx;
41 .title {
42 display: flex;
43 justify-content: space-between;
44 margin-bottom: 10rpx;
45
46 .title-left {
47 font-size: 30rpx;
48 font-family: PingFang SC;
49 font-weight: 500;
50 color: #2b3133;
51 }
52 }
53 .conter-liner-cost {
54 display: flex;
55 .liner-left {
56 font-size: 28rpx;
57 font-family: PingFang SC;
58 font-weight: 400;
59 color: #7b7f83;
60 }
61 .liner-right {
62 font-size: 28rpx;
63 font-family: PingFang SC;
64 font-weight: 400;
65 color: #ff8124;
66 }
67 }
68 }
69 .box2 {
70 border-top: 1rpx solid #e6e6e6;
71 }
72 }
73 </style>
1 <template>
2 <view class="box">
3 <view class="box-title">
4 <view class="title-left">是否住宿</view>
5 <view class="title-right ">
6 <radio-group name="radio" @change="radio">
7 <label>
8 <radio value="1" :checked="flag" />
9 <text></text>
10 </label>
11 <label>
12 <radio value="0" :checked="!flag" />
13 <text></text>
14 </label>
15 </radio-group>
16 </view>
17 </view>
18
19 <!-- 酒店信息 -->
20 <view class="box-conter" v-if="flag">
21 <checkbox-group @change="change">
22 <view class="conter-conter" v-for="item in range" :key="item.id">
23 <view class="bgcColor">
24 <view class="conter-top">
25 <view class="text">{{ item.name }}</view>
26 <checkbox :value="item.hotelFlag" @click="checkedFN(item)" :disabled="disabled" />
27 </view>
28 <view class="box-dress">
29 <uni-icons custom-prefix="iconfont" type="icon-31dingwei" color="#95A1A6"></uni-icons>
30 {{ item.address }}
31 </view>
32 <view class="conter-text">
33 <view class="conter-liner">
34 <view class="liner-left">房型:</view>
35 <view class="liner-right">{{ item.houseType }}</view>
36 </view>
37
38 <view class="conter-liner">
39 <view class="liner-left">价格:</view>
40 <view class="liner-right">{{ item.spend }}</view>
41 </view>
42
43 <view class="conter-liner">
44 <view class="liner-left">餐食:</view>
45 <view class="liner-right">{{ item.haveDinner == 1 ? '含早' : '不含早参' }}</view>
46 </view>
47
48 <view class="conter-liner">
49 <view class="liner-left">入住时间:</view>
50 <view class="liner-right liner-move">
51 <view class="liner-right-hotl" v-for="val in item.move" :key="val.id">
52 <uni-datetime-picker
53 :start="val.moveIntoTime"
54 :end="val.leaveTime"
55 type="daterange"
56 v-model="val.move"
57 return-type="yyyy/MM/dd"
58 @change="maskClick(val)"
59 />
60 <uni-icons
61 class="liner-del"
62 @click="delHot(item, val)"
63 v-if="item.move.length > 1"
64 custom-prefix="custom-icon"
65 type="trash"
66 size="20"
67 />
68 </view>
69 <uni-icons
70 @click="addHot(item)"
71 custom-prefix="custom-icon"
72 type="plusempty"
73 size="20"
74 />
75 </view>
76 </view>
77 </view>
78 </view>
79 </view>
80 </checkbox-group>
81 <view class="remark" v-if="hotelList">
82 <view class="liner-left">备注:</view>
83 <input class="uni-input" v-model="remark" placeholder="请输入你的内容" />
84 </view>
85 </view>
86 <view class="foot ">
87 <view class="button1" @click="upFN">上一步</view>
88 <view class="button" @click="nextFN">下一步</view>
89 </view>
90 </view>
91 </template>
92
93 <script setup>
94 import * as train from '@/common/train.js';
95 import {
96 onLoad,
97 onReady,
98 onShareAppMessage,
99 onShareTimeline,
100 onPullDownRefresh,
101 onReachBottom,
102 onShow
103 } from '@dcloudio/uni-app';
104 import { ref, getCurrentInstance, reactive, watch, toRefs } from 'vue';
105
106 const emit = defineEmits(['nextFN']);
107 const props = defineProps({
108 projectIdsArray: {},
109 id: {},
110 signId: {},
111 examIdsArry: {}
112 });
113 const moveList = ref([
114 {
115 id: 1,
116 move: null
117 }
118 ]);
119 const hotShow = ref(true);
120 const popup = ref();
121 const hotlList = ref();
122 const omve = ref();
123 const arr = ref([]);
124 const range = ref();
125 const id = ref(props.id);
126 const hotelIdsArray = ref();
127 const state = ref(); //是否住宿
128 const remark = ref();
129 const flag = ref(true);
130 const disabled = ref(false);
131 const costID = ref();
132 const code = ref();
133 const status = ref();
134 const signId = ref();
135 const data = reactive({
136 addForm: {}
137 });
138 const { addForm } = toRefs(data);
139
140 onShow(() => {
141 status.value = 3;
142 });
143 getList();
144 async function getList() {
145 addForm.value.id = id.value;
146 let res = await train.trainParticulars(addForm.value);
147 status.value = res.data.signStatus;
148 range.value = res.data.hotelList;
149 range.value.forEach(item => {
150 let tId = uuid();
151 item.move = [
152 {
153 moveIntoTime: item.moveIntoTime.replace(/-/g, '/'),
154 leaveTime: item.leaveTime.replace(/-/g, '/'),
155 id: tId,
156 hotlId: item.id,
157 move: [item.moveIntoTime.replace(/-/g, '/'), item.leaveTime.replace(/-/g, '/')]
158 }
159 ];
160 });
161 // 数据加工
162
163 if (res.data.signId) signId.value = res.data.signId;
164 console.log(range.value);
165 }
166
167 function uuid() {
168 var s = [];
169 var hexDigits = '0123456789abcdef';
170 for (var i = 0; i < 36; i++) {
171 s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
172 }
173 s[14] = '4'; // bits 12-15 of the time_hi_and_version field to 0010
174 s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
175 s[8] = s[13] = s[18] = s[23] = '-';
176 var uuid = s.join('');
177 return uuid;
178 }
179
180 // 是否住宿
181 function changeRadio(e) {
182 console.log(e);
183 if (e.target.value == 0) {
184 hotShow.value = false;
185 } else {
186 hotShow.value = true;
187 }
188 }
189
190 // 获取用酒店信息
191 function change(e) {
192 hotelIdsArray.value = e.target;
193 }
194
195 // 封装数据处理
196 function changeKey(arr) {
197 let newArr = [];
198 arr.forEach(item => {
199 newArr.push({
200 text: item.moveIntoTimeStr,
201 value: item.id
202 });
203 });
204 return newArr;
205 }
206
207 // 下一步
208 async function nextFN() {
209 await initData();
210 }
211
212 // 上一步
213 function upFN() {
214 console.log(111);
215 emit('nextFN', 1);
216 }
217
218 // 是否住宿
219 function radio(e) {
220 console.log(e);
221 e.target.value == 1 ? (flag.value = true) : (flag.value = false);
222 console.log(flag.value);
223 }
224
225 // 页面跳转
226 async function goRenew() {
227 let path = `/pages/train/costBreakdown/costBreakdown?id=` + id.value;
228 await wx.navigateTo({
229 url: path
230 });
231 }
232
233 function checkedFN(item) {
234 item.hotelFlag = !item.hotelFlag;
235 }
236
237 // 日期确定时处发
238 // function maskClick(item) {
239 // item.move.forEach(val => {
240 // val = val.replace(/-/g, '/');
241 // });
242 // console.log(item.move);
243 // console.log(item);
244 // }
245
246 // 添加住宿
247 function addHot(item) {
248 let tId = uuid;
249 item.move.push({
250 moveIntoTime: item.moveIntoTime.replace(/-/g, '/'),
251 leaveTime: item.leaveTime.replace(/-/g, '/'),
252 id: tId,
253 move: [item.moveIntoTime.replace(/-/g, '/'), item.leaveTime.replace(/-/g, '/')],
254 hotlId: item.id
255 });
256 }
257
258 function delHot(item, val) {
259 item.move = item.move.filter(obj => {
260 return obj.id != val.id;
261 });
262 }
263
264 // 提交
265 async function initData() {
266 let list = null;
267 list = JSON.parse(JSON.stringify(range.value));
268 // 1.过滤没有选中的酒店
269 list = list.filter(item => {
270 return item.hotelFlag == true;
271 });
272 // 2.过滤没有选择日期的
273 let arr = [];
274 list.forEach((item, index) => {
275 arr[index] = item;
276 arr[index].move = item.move.filter(val => {
277 return val.move.length != 0;
278 });
279 });
280
281 // 3.过滤酒店日期相同
282 let arr1 = [];
283 arr.forEach((item, index) => {
284 item.move.forEach(val => {
285 arr1.push(val);
286 });
287 });
288 let arr2 = [];
289 arr1.forEach(item => {
290 item.move = item.move.join();
291 arr2.push({
292 hotlId: item.hotlId,
293 move: item.move
294 });
295 });
296 // // 去重
297 // for (var i = 0; i < arr2.length - 1; i++) {
298 // for (var j = i + 1; j < arr2.length; j++) {
299 // if (arr2[i].move == arr2[j].move) {
300 // arr2.splice(j, 1);
301 // j--;
302 // }
303 // }
304 // }
305
306 if (flag.value) {
307 if (arr2.length == 0) {
308 uni.showToast({
309 title: '请选择入住酒店!',
310 duration: 2000,
311 icon: 'error'
312 });
313 return false;
314 }
315 addForm.value.hotelIdsArray = arr2;
316 } else {
317 addForm.value.hotelIdsArray = [];
318 }
319 addForm.value.projectIdsArray = props.projectIdsArray;
320 addForm.value.examIdsArray = props.examIdsArry;
321 addForm.value.trainId = id.value;
322 addForm.value.remark = remark.value;
323 let res = null;
324 // if (status.value == null || status.value == 4) {
325 // 添加
326 // addForm.value.id = null
327 addForm.value.id = signId.value;
328 res = await train.trainNext(addForm.value);
329 signId.value = res.data;
330 // } else {
331 // // 修改
332 // addForm.value.id = signId.value
333 // res = await train.trainUpdata(addForm.value);
334 // }
335 costID.value = res.data;
336 // 报名成功才跳转
337 if (res.code == 200) {
338 // 酒店是否已住满
339
340 goRenew();
341 }
342 }
343 </script>
344
345 <style scoped lang="scss">
346 .box {
347 margin-top: 5rpx;
348 padding: 25rpx;
349
350 .bgcColor {
351 background-color: #fff;
352 border-radius: 15rpx;
353 padding: 25rpx;
354 }
355
356 .box-title {
357 padding: 25rpx;
358 display: flex;
359 justify-content: space-between;
360 margin-bottom: 30rpx;
361 background-color: #fff;
362 border-radius: 15rpx;
363 }
364
365 .title-left {
366 text {
367 font-size: 30rpx;
368 font-family: PingFang SC;
369 font-weight: 400;
370 color: #000000;
371 }
372 }
373
374 .box-conter {
375 padding: 25rpx 0;
376 display: block;
377
378 .conter-conter {
379 margin-bottom: 20rpx;
380
381 .conter-top {
382 display: flex;
383 justify-content: space-between;
384 margin-bottom: 10rpx;
385
386 .text {
387 font-size: 33rpx;
388 font-family: PingFang SC;
389 font-weight: 500;
390 color: #2b3133;
391 }
392
393 .checkbox {
394 }
395 }
396
397 .box-dress {
398 font-family: PingFang SC;
399 font-weight: 400;
400 color: #2b3133;
401 font-size: 24rpx;
402 border-bottom: 1px solid #e6e6e6;
403 padding-bottom: 32rpx;
404 }
405
406 .conter-text {
407 .conter-liner {
408 display: flex;
409 justify-content: space-between;
410 margin-top: 20rpx;
411 padding: 0 10rpx;
412
413 .liner-left {
414 font-size: 28rpx;
415 font-family: PingFang SC;
416 font-weight: 400;
417 color: #7b7f83;
418 padding-top: 10rpx;
419 }
420
421 .liner-right {
422 font-size: 28rpx;
423 font-family: PingFang SC;
424 font-weight: 400;
425 color: #2b3133;
426 width: 80%;
427 text-align: right;
428 }
429 }
430 }
431 }
432 }
433
434 .remark {
435 margin-top: 35rpx;
436 display: flex;
437 justify-content: space-between;
438 margin-bottom: 120rpx;
439 background-color: #fff;
440 border-radius: 15rpx;
441 padding: 10rpx 25rpx;
442
443 .liner-left {
444 font-size: 28rpx;
445 font-family: PingFang SC;
446 font-weight: 400;
447 color: #7b7f83;
448 padding-top: 18rpx;
449 }
450 }
451
452 .foot {
453 background-color: #ffffff;
454 padding: 20rpx 0;
455 position: absolute;
456 left: 0;
457 bottom: 0;
458 width: 100%;
459 display: flex;
460
461 .button {
462 margin: 0 auto;
463 height: 80rpx;
464 width: 300rpx;
465 text-align: center;
466 font-size: 32rpx;
467 font-family: PingFang SC;
468 font-weight: 500;
469 color: #ffffff;
470 line-height: 80rpx;
471 background: linear-gradient(270deg, #54e1b9, #00caa6);
472 border-radius: 40rpx;
473 }
474
475 .button1 {
476 margin: 0 auto;
477 height: 80rpx;
478 width: 300rpx;
479 text-align: center;
480 font-size: 32rpx;
481 font-family: PingFang SC;
482 font-weight: 500;
483 line-height: 80rpx;
484 background: #fff;
485 border-radius: 40rpx;
486 border: 1px solid #2ed981;
487 color: #2ed981;
488 }
489 }
490
491 .select {
492 width: 300rpx;
493 }
494 }
495
496 .uni-date {
497 flex: 0;
498 width: 65%;
499 }
500
501 .popup-center {
502 display: flex;
503 justify-content: space-between;
504 }
505
506 .popup-title {
507 display: flex;
508 justify-content: space-between;
509 border-bottom: 1px solid #e6e6e6;
510 padding: 30rpx 50rpx;
511 }
512
513 .popup-title-left {
514 font-size: 30rpx;
515 font-weight: 400;
516 color: 000;
517 font-family: PingFangSC-Medium;
518 }
519
520 .popup-body {
521 border-bottom: 1px solid #e6e6e6;
522 padding: 15rpx 50rpx;
523 color: #4c5359;
524 font-size: 30rpx;
525 }
526
527 .popup-box {
528 height: 500rpx;
529 overflow-y: scroll;
530 }
531
532 .liner-right-hotl {
533 display: flex;
534 }
535
536 .liner-del {
537 margin-top: 19rpx;
538 }
539 </style>
1 <template>
2 <view class=" conter-box">
3 <view class="box" v-if="props.trainProjectsList.length != 0">
4 <view class="text">培训科目</view>
5 <view class="box2">
6 <checkbox-group>
7 <view class="box-check" v-for="item in props.trainProjectsList" :key="item.id">
8 <view class="">
9 <view class="title">{{ item.projectName }}</view>
10 <view class="content">
11 {{ item.isNecessary == 1 ? '必选' : '非必选' }}&nbsp;&nbsp;合计:
12 <view class="span">{{ item.cost }}</view>
13 </view>
14 </view>
15 <view class="checkbox">
16 <checkbox
17 :disabled="item.isNecessary == 1"
18 :value="item.id"
19 @click="checkTrain(item)"
20 :checked="item.check"
21 />
22 </view>
23 </view>
24 </checkbox-group>
25 </view>
26 </view>
27 <view class="box" v-if="props.examProjectsList.length != 0">
28 <view class="text">考试科目</view>
29 <view class="box2">
30 <checkbox-group>
31 <view class="box-check" v-for="item in props.examProjectsList" :key="item.id">
32 <view class="">
33 <view class="title">{{ item.projectName }}</view>
34 <view class="content">
35 {{ item.isNecessary == 1 ? '必选' : '非必选' }}&nbsp;&nbsp;合计:
36 <view class="span">{{ item.cost }}</view>
37 </view>
38 </view>
39 <view class="checkbox">
40 <checkbox
41 :disabled="item.isNecessary == 1"
42 :value="item.id"
43 @click="checkTrain(item)"
44 :checked="item.check"
45 />
46 </view>
47 </view>
48 </checkbox-group>
49 </view>
50 </view>
51 </view>
52 <view class="foot">
53 <view class="button1" @click="upFN">上一步</view>
54 <view class="button" @click="nextFN">下一步</view>
55 </view>
56 <view class="nodata " v-if="props.examProjectsList.length == 0 && props.trainProjectsList.length == 0">
57 没有培训科目
58 </view>
59 </template>
60
61 <script setup>
62 import { forEach } from 'lodash';
63 import { ref, getCurrentInstance, reactive, toRefs } from 'vue';
64 const props = defineProps({
65 trainProjectsList: {},
66 examProjectsList: {},
67 hotelList: {},
68 id: {}
69 });
70 const data = reactive({
71 projectIdsArray: []
72 });
73
74 const examIdsArry = ref([]);
75 const { projectIdsArray } = toRefs(data);
76 const emit = defineEmits(['nextFN']);
77 const checkbox1 = ref([0]);
78
79 function checkTrain(item) {
80 if (item.isNecessary == 1) {
81 item.check = true;
82 } else {
83 item.check = !item.check;
84 }
85 }
86
87 // 上一步
88 function upFN() {
89 emit('nextFN', 0);
90 }
91
92 // 下一步
93 function nextFN() {
94 let falg = true;
95 let arr1 = [];
96 let arr2 = [];
97 props.examProjectsList.forEach(item => {
98 if (item.check) {
99 arr1.push(item.id);
100 }
101 });
102 props.trainProjectsList.forEach(item => {
103 if (item.check) {
104 arr2.push(item.id);
105 }
106 });
107 let examList = JSON.parse(JSON.stringify(props.examProjectsList));
108 let trainList = JSON.parse(JSON.stringify(props.trainProjectsList));
109 examList.concat(trainList).forEach(item => {
110 if (item.isNecessary == 1 && item.check == false) {
111 falg = false;
112 }
113 });
114
115 if (falg) {
116 examIdsArry.value = arr1;
117 projectIdsArray.value = arr2;
118 if (props.hotelList.length == 0) {
119 // 没有酒店直接报名
120 // 页面跳转
121 let path = `/pages/train/costBreakdown/costBreakdown?id=` + props.id;
122 wx.navigateTo({
123 url: path
124 });
125 } else {
126 emit('nextFN', 2, projectIdsArray.value, examIdsArry.value);
127 }
128 } else {
129 uni.showToast({
130 title: '请选择必选科目!',
131 duration: 2000,
132 icon: 'error'
133 });
134 return false;
135 }
136 }
137 </script>
138
139 <style scoped lang="scss">
140 .nodata {
141 background: url(/static/nodata.png) no-repeat;
142 background-size: 100%;
143 width: 100%;
144 height: 835rpx;
145 color: #aaa59f;
146 font-size: 50rpx;
147 }
148
149 .conter-box {
150 padding-bottom: 100rpx;
151 }
152
153 .box {
154 padding: 34rpx 25rpx;
155 background-color: #f4f6fa;
156 padding-bottom: 0;
157
158 .box2 {
159 background-color: #fff;
160 border-radius: 15rpx;
161 margin-top: 20rpx;
162 }
163
164 .text {
165 height: 29px;
166 font-size: 30rpx;
167 font-family: PingFang SC;
168 font-weight: 500;
169 color: #000000;
170 line-height: 62rpx;
171 }
172
173 .box-check {
174 padding: 40rpx;
175 display: flex;
176 justify-content: space-between;
177 border-bottom: 1rpx solid #e6e6e6;
178 padding-bottom: 20rpx;
179
180 :deep(.checkbox__inner) {
181 background-color: #d9d9d9 !important;
182 border-color: #d9d9d9 !important;
183 border-radius: 50% !important;
184 width: 45rpx !important;
185 height: 45rpx !important;
186 line-height: 40rpx;
187 }
188
189 .text {
190 font-size: 12px;
191 color: #666;
192 margin-top: 5px;
193 }
194
195 .title {
196 font-size: 30rpx;
197 font-family: PingFang SC;
198 font-weight: 400;
199 color: #2b3133;
200 margin-bottom: 10rpx;
201 }
202
203 .content {
204 display: flex;
205 font-size: 30rpx;
206 font-family: PingFang SC;
207 font-weight: 400;
208 color: #2b3133;
209
210 .span {
211 color: #ff8124;
212 font-size: 28rpx;
213 font-family: PingFang SC;
214 font-weight: 400;
215 }
216 }
217 }
218
219 :deep(.checkbox__inner-icon) {
220 position: absolute !important;
221 top: 4px !important;
222 left: 7px !important;
223 color: #000 !important;
224 }
225
226 :deep(.uni-data-checklist .checklist-group .checklist-box) {
227 margin-right: 0;
228 }
229 }
230
231 .conter-button {
232 position: absolute;
233 left: 0;
234 bottom: 10rpx;
235 width: 100%;
236 display: flex;
237 justify-content: center;
238
239 .button {
240 height: 80rpx;
241 width: 500rpx;
242 text-align: center;
243 font-size: 32rpx;
244 font-family: PingFang SC;
245 font-weight: 500;
246 color: #ffffff;
247 line-height: 80rpx;
248 background: linear-gradient(270deg, #54e1b9, #00caa6);
249 border-radius: 40rpx;
250 }
251 }
252
253 .foot {
254 display: flex;
255 background-color: #ffffff;
256 padding: 20rpx 0;
257 position: absolute;
258 left: 0;
259 bottom: 0;
260 width: 100%;
261
262 .button {
263 margin: 0 auto;
264 height: 80rpx;
265 width: 300rpx;
266 text-align: center;
267 font-size: 32rpx;
268 font-family: PingFang SC;
269 font-weight: 500;
270 color: #ffffff;
271 line-height: 80rpx;
272 background: linear-gradient(270deg, #54e1b9, #00caa6);
273 border-radius: 40rpx;
274 }
275
276 .button1 {
277 margin: 0 auto;
278 height: 80rpx;
279 width: 300rpx;
280 text-align: center;
281 font-size: 32rpx;
282 font-family: PingFang SC;
283 font-weight: 500;
284 line-height: 80rpx;
285 background: #fff;
286 border-radius: 40rpx;
287 border: 1px solid #2ed981;
288 color: #2ed981;
289 }
290 }
291 </style>
1 <template>
2 <view class="box">
3 <view class="liner" v-for="item in props.scheduleList" :key="item.id">
4 <view class="timer">
5 <uni-icons custom-prefix="iconfont" type="icon-ai253" color="#1ec886" size="20"></uni-icons>
6 &nbsp; {{ item.dayStr }} 10:00-12:00
7 </view>
8 <view class="conetr">{{ item.event }}</view>
9 <view class="data">
10 <uni-icons custom-prefix="iconfont" type="icon-loufangfangzi"></uni-icons>
11 {{ item.place }}
12 </view>
13 </view>
14 <view class="nodata" v-if="props?.scheduleList?.length == 0">你还没有日程安排</view>
15 </view>
16 </template>
17
18 <script setup>
19 import { ref, getCurrentInstance, reactive, toRefs } from 'vue';
20 const props = defineProps({
21 scheduleList: {}
22 });
23 </script>
24
25 <style scoped lang="scss">
26 .nodata {
27 background: url(/static/nodata.png) no-repeat;
28 background-size: 100%;
29 width: 100%;
30 height: 835rpx;
31 color: #aaa59f;
32 font-size: 50rpx;
33 }
34
35 .box {
36 padding-top: 25rpx;
37
38 .liner {
39 margin-bottom: 20rpx;
40 background-color: #fff;
41 border-radius: 15rpx;
42 padding: 20rpx;
43 }
44
45 .timer {
46 display: flex;
47 font-size: 28rpx;
48 font-family: PingFang SC;
49 font-weight: 400;
50 color: #1ec886;
51 }
52
53 .conetr {
54 font-size: 30rpx;
55 font-family: PingFang SC;
56 font-weight: 400;
57 color: #2b3133;
58 margin: 25rpx 0;
59 }
60
61 .data {
62 font-size: 28rpx;
63 font-family: PingFang SC;
64 font-weight: 400;
65 color: #7b7f83;
66 }
67 }
68 </style>
1 <template>
2 <view class="big-box">
3 <view class="list-box">
4 <view class="image">
5 <image class="img" referrer="no-referrer|origin|unsafe-url" :src="porps.pic" mode="aspectFill"></image>
6 </view>
7 <view class="text">
8 <view class="text-title">{{ porps.title }}</view>
9 <view class="text-card color" v-if="porps.card == '报名中'">{{ porps.card }}</view>
10 <view class="text-card color1" v-if="porps.card == '进行中'">{{ porps.card }}</view>
11 <view class="text-card color2" v-if="porps.card == '即将开始'">{{ porps.card }}</view>
12 <view class="text-card color3" v-if="porps.card == '已结束'">{{ porps.card }}</view>
13 <view class="text-card color4" v-if="porps.card == '培训未开始'">{{ porps.card }}</view>
14 <view class="text-card color4" v-if="porps.card == '报名未开始'">{{ porps.card }}</view>
15 <view class="text-timer ">报名时间:{{ porps.timer }}</view>
16 </view>
17 </view>
18 <view class="hr"></view>
19 </view>
20 </template>
21
22 <script setup>
23 const porps = defineProps({
24 pic: {
25 type: String
26 },
27 title: {
28 type: String
29 },
30 card: {
31 type: String
32 },
33 timer: {
34 type: String
35 }
36 });
37 </script>
38
39 <style lang="scss">
40 .big-box {
41 width: 100%;
42 padding: 25rpx 0;
43
44 .hr {
45 width: 100%;
46 border-bottom: 1rpx solid #e5e5e5;
47 padding-top: 25rpx;
48 }
49
50 .list-box {
51 width: 100%;
52 height: 180rpx;
53 display: flex;
54
55 .image {
56 width: 270rpx;
57 height: 180rpx;
58 padding-right: 25rpx;
59
60 .img {
61 width: 270rpx;
62 height: 180rpx;
63 border-radius: 15rpx;
64 }
65 }
66
67 .text {
68 margin-left: 20rpx;
69
70 .text-title {
71 text-align: left;
72 font-size: 30rpx;
73 font-family: PingFang SC;
74 font-weight: 400;
75 color: #000000;
76 }
77
78 .text-card {
79 font-size: 20rpx;
80 width: 110rpx;
81 height: 32rpx;
82 margin-top: 57rpx;
83 text-align: center;
84 font-family: PingFang SC;
85 font-weight: 400;
86 color: #ffffff;
87 border-radius: 16px 16px 16px 0px;
88 }
89
90 .color {
91 background: linear-gradient(270deg, #54e1b9, #00caa6);
92 }
93
94 .color1 {
95 background: linear-gradient(270deg, #be8efb, #a76df4);
96 }
97
98 .color2 {
99 background: linear-gradient(270deg, #fea449, #ffb95f);
100 }
101
102 .color3 {
103 background: linear-gradient(270deg, #d9d9d9, #bcbcbc);
104 }
105
106 .color4 {
107 background: linear-gradient(270deg, #40d8ee, #53a7f6);
108 }
109
110 .text-timer {
111 margin-top: 20rpx;
112 height: 23rpx;
113 font-size: 24rpx;
114 font-family: PingFang SC;
115 font-weight: 400;
116 color: #7b7f83;
117 }
118 }
119 }
120 }
121 </style>
...\ No newline at end of file ...\ No newline at end of file
1 <template>
2 <view class="big-box">
3 <view class="list-box">
4 <view class="image">
5 <image
6 class="img"
7 referrer="no-referrer|origin|unsafe-url"
8 :src="porps.item.cover"
9 mode="aspectFill"
10 ></image>
11 </view>
12 <view class="text">
13 <view class="text-title">{{ porps.item.trainName }}</view>
14 <view class="text-card color1" v-if="porps.item.statusStr == '审核通过'">
15 {{ porps.item.statusStr }}
16 </view>
17 <view class="text-card color2" v-if="porps.item.statusStr == '待审核'">
18 {{
19 porps.item.status == '0' && porps.item.payStatus == '0'
20 ? porps.item.payStatusStr
21 : porps.item.statusStr
22 }}
23 </view>
24 <view class="text-card color3" v-if="porps.item.statusStr == '报名失败'">
25 {{ porps.item.statusStr }}
26 </view>
27 <view class="text-card color3" v-if="porps.item.statusStr == '审核拒绝'">
28 {{ porps.item.statusStr }}
29 </view>
30 <view class="text-card color4" v-if="porps.item.statusStr == '待支付'">{{ porps.item.statusStr }}</view>
31 <view class="text-card color4" v-if="porps.item.statusStr == '待提交'">{{ porps.item.statusStr }}</view>
32 <view class="text-card color5" v-if="porps.item.statusStr == '已取消'">{{ porps.item.statusStr }}</view>
33 </view>
34 </view>
35 <view class="hr"></view>
36 </view>
37 </template>
38
39 <script setup>
40 const porps = defineProps({
41 pic: {
42 type: String
43 },
44 title: {
45 type: String
46 },
47 card: {
48 type: String
49 },
50 timer: {
51 type: String
52 },
53 item: {}
54 });
55 </script>
56
57 <style lang="scss">
58 .big-box {
59 width: 100%;
60 padding: 25rpx 0;
61
62 .hr {
63 width: 100%;
64 border-bottom: 1rpx solid #e5e5e5;
65 padding-top: 25rpx;
66 }
67
68 .list-box {
69 width: 100%;
70 height: 180rpx;
71 display: flex;
72
73 .image {
74 width: 270rpx;
75 height: 180rpx;
76 padding-right: 25rpx;
77
78 .img {
79 width: 270rpx;
80 height: 180rpx;
81 border-radius: 15rpx;
82 }
83 }
84
85 .text {
86 margin-left: 20rpx;
87
88 .text-title {
89 text-align: left;
90 font-size: 30rpx;
91 font-family: PingFang SC;
92 font-weight: 400;
93 color: #000000;
94 }
95
96 .text-card {
97 font-size: 20rpx;
98 width: 94rpx;
99 height: 32rpx;
100 margin-top: 57rpx;
101 text-align: center;
102 font-family: PingFang SC;
103 font-weight: 400;
104 color: #ffffff;
105 border-radius: 16px 16px 16px 0px;
106 }
107
108 .color1 {
109 background: linear-gradient(270deg, #54e1b9, #00caa6);
110 }
111
112 .color2 {
113 background: linear-gradient(270deg, #be8efb, #a76df4);
114 }
115
116 .color3 {
117 background: linear-gradient(90deg, #f83841, #f76d74);
118 }
119
120 .color4 {
121 background: linear-gradient(90deg, #fea449, #ffb95f);
122 }
123
124 .color5 {
125 background: linear-gradient(270deg, #d9d9d9, #bcbcbc);
126 }
127 }
128 }
129 }
130 </style>
1 <template>
2 <view class="box">
3 <view class="image"><img class="img" :src="form.activity.cover" mode="aspectFill" /></view>
4 <view class="nav">
5 <view class="nav-title">{{ form.activity.name }}</view>
6 <view class="nva-center">
7 <view class="nav-card color" v-if="state == '报名中'">{{ state }}</view>
8 <view class="nav-card color1" v-if="state == '进行中'">{{ state }}</view>
9 <view class="nav-card color2" v-if="state == '即将开始'">{{ state }}</view>
10 <view class="nav-card color3" v-if="form.activity.signStatus=='2'">报名已结束</view>
11 <view class="nav-card color4" v-if="form.activity.signStatus=='0'">报名未开始</view>
12 <view class="nav-card color4" v-if="state == '培训未开始'">{{ state }}</view>
13
14 </view>
15 <view class="date"> 培训时间:{{ form.activity.trainTimeRange }}</view>
16 <view class="date"> 联系人:{{ form.activity.personInCharge }}</view>
17 <view class="date"> 联系电话:{{ form.activity.contact }}</view>
18 <view class="date">培训相关条例<text class="text-primary" @click="downLoad(activity.signNoticeAttachmentUrl)">《报名须知》</text></view>
19 </view>
20 <view class="conter">
21 <!-- <uni-segmented-control
22 activeColor="#C5161E"
23 :current="current"
24 :values="items"
25 @clickItem="onClickItem"
26 styleType="text"
27 ></uni-segmented-control> -->
28 <view class="content">
29 <view v-show="current === 0">
30 <view class="conter-middle">
31 <view class="text">组委会</view>
32 <view class="text-group">
33 <view class="date" v-html="form.activity.orgInfo"></view>
34 </view>
35 </view>
36 <view class="conter-bottom">
37 <view class="text">培训考试内容</view>
38 <view class="nav-bar" @click="trainFN('bottom')">
39 <view class="nav-bar-text">培训</view>
40 <view class="nav-bar-icon"><uni-icons type="forward"></uni-icons></view>
41 </view>
42 <view class="nav-bar" @click="examinationFN('bottom')">
43 <view class="nav-bar-text">考试</view>
44 <view class="nav-bar-icon"><uni-icons type="forward"></uni-icons></view>
45 </view>
46 </view>
47 </view>
48 <view v-show="current === 1"><trainnSchedule :scheduleList="scheduleList" /></view>
49 </view>
50 </view>
51 <view class="buttonBox" v-if="current == 0">
52 <view class="conter-button">
53 <view class="button" v-if="false" @click="registered()">已报名</view>
54 <view
55 class="button"
56 v-if="
57 state != 0 &&
58 state != 1 &&
59 state != 5 &&
60 signStatusStr != '报名结束' &&
61 signStatusStr != '报名未开始'
62 "
63 @click="applyFN()"
64 >
65 培训报名
66 </view>
67 <view class="info" v-if="signStatusStr == '报名结束'">报名结束</view>
68 <view class="info" v-if="signStatusStr == '等待审核'">已报名</view>
69 <view class="blue" v-if="signStatusStr == '报名未开始'">报名未开始</view>
70 </view>
71 </view>
72 <uni-popup ref="popup" background-color="#fff" @change="change">
73 <view class="popup-content" :class="{ 'popup-height': type === 'left' || type === 'right' }">
74 <view class="title">
75 <view class="titel-left">{{ text }}</view>
76 <view class="title-right" @click="shut">
77 <uni-icons class="icons" type="closeempty"></uni-icons>
78 </view>
79 </view>
80 <view class="popup-check" v-for="item in trainList" :key="item.id">
81 {{ item.name }}
82 </view>
83 </view>
84 </uni-popup>
85 </view>
86 </template>
87
88 <script setup>
89 import trainnSchedule from '@/training/components/trainSchedule/trainSchedule.vue';
90 import { onLoad, onReady, onShareAppMessage, onShareTimeline, onPullDownRefresh } from '@dcloudio/uni-app';
91 import { ref, getCurrentInstance, reactive, toRefs } from 'vue';
92 import * as train from '@/training/train.js';
93
94 const items = ref(['详情', '日程']);
95 const current = ref(0);
96 const show = ref(true);
97 const showMore = ref(false);
98 const popup = ref();
99 const state = ref();
100 const signStatusStr = ref();
101 const id = ref();
102 const userList = ref();
103 const type = ref('center');
104 const trainList = ref();
105 const text = ref();
106 const scheduleList = ref();
107 const height = ref();
108 const flag = ref(true);
109 const status = ref();
110 const tiem = ref(new Date().getTime());
111 const newTime = ref();
112 const data = reactive({
113 form: {}
114 });
115 const { form } = toRefs(data);
116
117 onLoad(option => {
118 id.value = option.trainId;
119 initData();
120 });
121
122 function filterTime(num) {
123 if (num) return num.slice(0, 16);
124 }
125
126 // 获取详情数据
127 function initData() {
128 train.getTrainDetail(id.value).then(res=>{
129 form.value = res.data;
130 signStatusStr.value = res.data.signStatusStr;
131 state.value = res.data.signStatus;
132 newTime.value = new Date(res.data.enrollEndTime).getTime();
133 userList.value = res.data.userList[0];
134 scheduleList.value = res.data.scheduleList;
135 setTimeout(() => {
136 getbox();
137 }, 50);
138 })
139 }
140
141 function change(e) {
142 show.value = e.show;
143 }
144
145 // 培训
146 function trainFN(val) {
147 text.value = '培训';
148 popup.value.open(val);
149 trainList.value = form.value.subjectTrainList;
150 }
151
152 // 考试
153 function examinationFN(val) {
154 text.value = '考试';
155 popup.value.open(val);
156 trainList.value = form.value.examVoList;
157 }
158
159 // 分段器
160 function onClickItem(e) {
161 if (current.values != e.currentIndex) {
162 current.value = e.currentIndex;
163 }
164 }
165 // 已报名
166 function registered() {
167 uni.showToast({
168 title: '已报名,请不要重复报名!',
169 duration: 2000,
170 icon: 'error'
171 });
172 return false;
173 }
174
175 // 获取容器高度
176 function getbox() {
177 const query = wx.createSelectorQuery();
178 query
179 .select('.text-content')
180 .boundingClientRect(function(rect) {
181 height.value = rect.height;
182 if (rect.height > 60) {
183 showMore.value = true;
184 } else {
185 showMore.value = false;
186 }
187 })
188 .exec();
189 }
190
191 // 查看更多与收起
192 function getShow() {
193 if (height.value > 60) {
194 // 显示查看更多
195 showMore.value = true;
196 // 固定容器高度
197 } else {
198 // 隐藏查看更多
199 showMore.value = false;
200 }
201 }
202
203 // 点击查看更多
204 const move = () => {
205 // 1.文字 icon 转换
206 // 2.容器高度自适应
207 flag.value = !flag.value;
208 if (!flag.value) {
209 height.value = undefined;
210 } else {
211 height.value = 60;
212 }
213 };
214
215 function applyFN() {
216 let path = '/pages/train/apply/apply?data=' + [id.value, status.value];
217 wx.redirectTo({
218 url: path
219 });
220 }
221
222 // 关闭弹框
223 function shut() {
224 popup.value.close();
225 }
226 function downLoad(url){
227
228 }
229 </script>
230
231 <style lang="scss" scoped>
232 .date{font-size: 26rpx;color: #999;}
233 .box {
234 background-color: #f7f8fa;
235
236 .image {
237 padding: 25rpx;
238 height: 320rpx;
239 background: #fff;
240 border-radius: 15rpx;
241
242 .img {
243 width: 100%;
244 height: 320rpx;
245 border-radius: 15rpx;
246 }
247 }
248
249 .nav {
250 padding: 30rpx 25rpx;
251 background-color: #fff;
252
253 .nav-title {
254 font-size: 32rpx;
255 font-family: PingFang SC;
256 font-weight: 500;
257 color: #000000;
258 }
259
260 .nva-center {
261 display: flex;
262 margin-top: 25rpx;
263 margin-bottom: 25rpx;
264
265 .nav-card {
266 font-size: 20rpx;
267 font-family: PingFang SC;
268 font-weight: 400;
269 color: #ffffff;
270 text-align: center;
271 height: 32rpx;
272 width: 94rpx;
273 line-height: 32rpx;
274 border-radius: 16rpx 16rpx 16rpx 0rpx;
275 }
276
277 .color {
278 background: linear-gradient(270deg, #54e1b9, #00caa6);
279 }
280
281 .color1 {
282 background: linear-gradient(270deg, #be8efb, #a76df4);
283 }
284
285 .color2 {
286 background: linear-gradient(270deg, #fea449, #ffb95f);
287 }
288
289 .color3 {
290 background: linear-gradient(270deg, #d9d9d9, #bcbcbc);
291 }
292
293 .color4 {
294 background: linear-gradient(270deg, #40d8ee, #53a7f6);
295 }
296
297 .nav-timer {
298 margin-left: 13rpx;
299 height: 23rpx;
300 font-size: 24rpx;
301 font-family: PingFang SC;
302 font-weight: 400;
303 color: #7b7f83;
304 line-height: 56rpx;
305 }
306 }
307 }
308
309 .buttonBox {
310 background-color: #fff;
311 width: 100%;
312
313 .conter-button {
314 width: 100%;
315 background-color: #fff;
316 margin-top: 30rpx;
317 padding: 10rpx 0;
318
319 .button {
320 margin: 0 auto;
321 height: 80rpx;
322 width: 500rpx;
323 text-align: center;
324 font-size: 32rpx;
325 font-family: PingFang SC;
326 font-weight: 500;
327 color: #ffffff;
328 line-height: 80rpx;
329 background: linear-gradient(270deg, #54e1b9, #00caa6);
330 border-radius: 40rpx;
331 }
332
333 .info {
334 margin: 0 auto;
335 height: 80rpx;
336 width: 500rpx;
337 text-align: center;
338 font-size: 32rpx;
339 font-family: PingFang SC;
340 font-weight: 500;
341 color: #ffffff;
342 line-height: 80rpx;
343 background: linear-gradient(270deg, #d9d9d9, #bcbcbc);
344 border-radius: 40rpx;
345 }
346 .blue {
347 margin: 0 auto;
348 height: 80rpx;
349 width: 500rpx;
350 text-align: center;
351 font-size: 32rpx;
352 font-family: PingFang SC;
353 font-weight: 500;
354 color: #ffffff;
355 line-height: 80rpx;
356 background: linear-gradient(270deg, #40d8ee, #53a7f6);
357 border-radius: 40rpx;
358 }
359 }
360 }
361
362 // 分段器
363 .conter {
364 .conter-top {
365 margin-top: 14rpx;
366 min-height: 250rpx;
367 padding: 25rpx;
368 background-color: #fff;
369 border-radius: 15rpx;
370
371 .more {
372 height: 200rpx !important;
373 overflow: hidden;
374 }
375
376 .examine {
377 display: flex;
378 justify-content: center;
379 font-size: 24rpx;
380 font-family: PingFang SC;
381 font-weight: 400;
382 color: #1ec886;
383 }
384
385 // 点击加载更多
386 .text {
387 height: 29rpx;
388 font-size: 30rpx;
389 font-family: PingFang SC;
390 font-weight: 500;
391 color: #000000;
392 line-height: 36rpx;
393 text-align: left;
394 padding-bottom: 30rpx;
395 border-bottom: 1rpx solid #eee;
396 margin-bottom: 20rpx;
397 }
398
399 // 超出3行将隐藏
400 .hidden {
401 overflow: hidden;
402 text-overflow: ellipsis;
403 display: -webkit-box;
404 -webkit-line-clamp: 3;
405 -webkit-box-orient: vertical;
406 line-height: 40rpx; //行高方便计算
407 }
408
409 .text-content {
410 overflow: hidden;
411 font-size: 28rpx;
412 font-family: PingFang SC;
413 font-weight: 400;
414 color: #4c5359;
415 word-break: break-all;
416 line-height: 40rpx;
417 text-align: left;
418 }
419
420 .uni-list-item {
421 border-bottom-style: solid;
422 border-bottom-width: 1px;
423 border-bottom-color: #eee;
424 font-size: 14px;
425 }
426
427 .uni-list-item__container {
428 /* #ifndef APP-NVUE */
429 display: flex;
430 width: 100%;
431 box-sizing: border-box;
432 /* #endif */
433 padding: 12px 15px;
434 flex: 1;
435 position: relative;
436 flex-direction: row;
437 justify-content: space-between;
438 align-items: center;
439 }
440
441 .uni-list-item__content-title {
442 font-size: 14px;
443 color: #666;
444 }
445 }
446
447 .conter-middle {
448 padding: 25rpx;
449 background-color: #fff;
450 border-radius: 15rpx;
451 margin-top: 25rpx;
452
453 .text {
454 height: 29rpx;
455 font-size: 30rpx;
456 font-family: PingFang SC;
457 font-weight: 500;
458 color: #000000;
459 line-height: 36rpx;
460 text-align: left;
461 padding-bottom: 30rpx;
462 border-bottom: 1rpx solid #eee;
463 margin-bottom: 20rpx;
464 }
465
466 .text-group {
467 display: flex;
468
469 .text-g-left {
470 height: 48rpx;
471 font-size: 28rpx;
472 font-family: PingFang SC;
473 font-weight: 400;
474 color: #4c5359;
475 line-height: 48rpx;
476 }
477
478 .text-g-right {
479 height: 48rpx;
480 font-size: 28rpx;
481 font-family: PingFang SC;
482 font-weight: 400;
483 color: #2b3133;
484 line-height: 48rpx;
485 }
486 }
487 }
488
489 .conter-bottom {
490 height: 217rpx;
491 padding: 25rpx;
492 background-color: #fff;
493 border-radius: 15rpx;
494 margin-top: 25rpx;
495
496 .text {
497 height: 29rpx;
498 font-size: 30rpx;
499 font-family: PingFang SC;
500 font-weight: 500;
501 color: #000000;
502 line-height: 36rpx;
503 text-align: left;
504 padding-bottom: 30rpx;
505 border-bottom: 1rpx solid #eee;
506 }
507
508 .nav-bar {
509 display: flex;
510 justify-content: space-between;
511 padding-bottom: 30rpx;
512 padding-top: 20rpx;
513 border-bottom: 1rpx solid #eee;
514
515 .nav-bar-text {
516 font-size: 28rpx;
517 font-family: PingFang SC;
518 font-weight: 400;
519 color: #2b3133;
520 }
521
522 .nav-bar-icon {
523 font-size: 28rpx;
524 color: #95a1a6;
525 }
526 }
527 }
528
529 .segmented-control__text {
530 font-size: 26rpx !important;
531 font-family: PingFang SC !important;
532 font-weight: 400 !important;
533 color: #4c5359 !important;
534 }
535
536 .segmented-control__item--text {
537 border-bottom: 4rpx solid #54e1b9;
538 font-size: 30rpx !important;
539 font-family: PingFang SC !important;
540 font-weight: 500 !important;
541 color: #2b3133 !important;
542 }
543
544 width: 100%;
545
546 .example-body {
547 /* #ifndef APP-NVUE */
548 display: flex;
549 /* #endif */
550 flex-direction: row;
551 padding: 0;
552 }
553
554 .uni-common-mt {
555 margin-top: 30rpx;
556 }
557
558 .uni-padding-wrap {
559 padding: 0px 30rpx;
560 }
561
562 .content {
563 padding: 0 30rpx;
564 }
565
566 .content-text {
567 font-size: 14rpx;
568 color: #666;
569 }
570
571 .color-tag {
572 width: 25rpx;
573 height: 25rpx;
574 }
575
576 .uni-list {
577 flex: 1;
578 }
579
580 .uni-list-item {
581 /* #ifndef APP-NVUE */
582 display: flex;
583 /* #endif */
584 flex: 1;
585 flex-direction: row;
586 background-color: #ffffff;
587 }
588
589 .uni-list-item__container {
590 padding: 12px 15px;
591 width: 100%;
592 flex: 1;
593 position: relative;
594 /* #ifndef APP-NVUE */
595 display: flex;
596 box-sizing: border-box;
597 /* #endif */
598 flex-direction: row;
599 justify-content: space-between;
600 align-items: center;
601 border-bottom-style: solid;
602 border-bottom-width: 1px;
603 border-bottom-color: #eee;
604 }
605
606 .uni-list-item__content-title {
607 font-size: 14px;
608 }
609 }
610
611 .popup-content {
612 padding: 50rpx !important;
613 min-height: 500rpx;
614 border-top-left-radius: 30rpx;
615 border-top-right-radius: 30rpx;
616
617 .title {
618 display: flex;
619 justify-content: space-between;
620
621 .titel-left {
622 font-size: 30rpx;
623 font-family: PingFang SC;
624 font-weight: 500;
625 color: #000000;
626 }
627
628 .title-right {
629 .uni-icons {
630 font-size: 60rpx !important;
631 color: #5a5a5a !important;
632 }
633 }
634 }
635
636 .popup-check {
637 font-size: 30rpx;
638 font-family: PingFang SC;
639 font-weight: 400;
640 color: #4c5359;
641 border-top: 1rpx solid #e6e6e6;
642 padding-top: 35rpx;
643 padding-bottom: 35rpx;
644 }
645 }
646 }
647 </style>
1 import request from '@/common/request.js'
2 const accountInfo = uni.getAccountInfoSync()
3 const appId = accountInfo.miniProgram.appId;
4
5 // 获取培训列表
6 export function getTrainList(params) {
7 return request({
8 url: `/webPc/getTrains`,
9 method: 'get',
10 params: params
11 })
12 }
13
14 // 查看培训项目
15 export function getTrainDetail(id) {
16 return request({
17 url: '/webPc/getTrainDetails',
18 method: 'get',
19 params: {id}
20 })
21 }
22
23 // 查看培训项目
24 export function trainProjectList(params) {
25 return request({
26 url: '/systemj/information/projectList',
27 method: 'get',
28 params: params
29 })
30 }
31
32 // 查看报名费用(未支付前)
33 export function searchTrainCost(params) {
34 return request({
35 url: '/systemj/signer/getEnrollBill',
36 method: 'get',
37 params: params
38 })
39 }
40
41 // 提交 用户资料
42 export function trainNext(params) {
43 return request({
44 url: `/systemj/signer/signUp`,
45 method: 'post',
46 params,
47 })
48 }
49
50 // 生成订单
51 export function createOrder(params) {
52 return request({
53 url: `/systemj/order/saveOrder`,
54 method: 'post',
55 params,
56 })
57 }
58
59 //会员支付
60 export function pay(params) {
61 return request({
62 url: `/systemj/order/pay`,
63 method: 'post',
64 params,
65 })
66 }
67
68 // 线下支付银行信息
69 export function bankSlip(params) {
70 return request({
71 url: `/systemj/order/bankInfo`,
72 method: 'get',
73 params,
74 })
75 }
76
77 export function trainOrder(params) {
78 return request({
79 url: `/systemj/order/getMyOrders`,
80 method: 'get',
81 params,
82 })
83 }
84
85 // 修改报名
86 export function trainUpdata(params) {
87 return request({
88 url: `/systemj/signer/updateSign`,
89 method: 'put',
90 params,
91 })
92 }
93
94 // 取消订单
95 export function cancelOrder(params) {
96 return request({
97 url: `/systemj/order/cancelOrder`,
98 method: 'put',
99 params,
100 })
101 }
102
103 // 报项列表
104 export function signList(params) {
105 return request({
106 url: `/systemj/signer/applets/signList`,
107 method: 'get',
108 params,
109 })
110 }
111
112 // 报项详情
113 export function signDetail(params) {
114 return request({
115 url: `/systemj/signer/applets/signDetail`,
116 method: 'get',
117 params,
118 })
119 }
120
121 // 订单列表
122 export function orderList(params) {
123 return request({
124 url: `/systemj/order/applets/orderList`,
125 method: 'get',
126 params,
127 })
128 }
129
130
131 // 订单详情
132 export function getOrderDetail(params) {
133 return request({
134 url: `/systemj/order/getOrderDetail`,
135 method: 'get',
136 params,
137 })
138 }
139
140
1 <template>
2 <view class="box">
3 <view class="title">
4 <view class="navSerch">
5 <view class="serch">
6 <uni-search-bar class="uni-mt-10" radius="30" placeholder="搜索" clearButton="auto" Button="none"
7 cancelText="" v-model="name" bgColor="#F4F6FA" @confirm="search" @blur="blur" @clear="clear" />
8 </view>
9 </view>
10 <view class="searchLeft">
11 </view>
12 </view>
13 <view>
14
15 <view class="nav-box">
16 <view class="nav-ul">
17 <view class="nva-li" @click="nvaText(index)" :class="{nt:Nindex==index}"
18 v-for="(item,index) in items" :key="index">
19 {{item}}
20 </view>
21 </view>
22 </view>
23
24 <view class="content">
25 <view class="taber">
26 <view v-for="item in list" :key="item.trainId" @click="detail(item)">
27 <uniList :pic="config.baseUrl_api + item.cover" :title="item.name" :card="item.trainStatusStr"
28 :timer="filterTime(item.signTimeRange) "></uniList>
29 </view>
30 </view>
31 </view>
32 <view><uni-load-more :status="status" :content-text="contentText" /></view>
33 </view>
34 </view>
35 </template>
36
37 <script setup>
38 import config from '@/config.js'
39 import uniList from '@/training/components/ulist/ulist';
40 import * as train from '@/training/train.js';
41 import {
42 onLoad,
43 onReady,
44 onShareAppMessage,
45 onShareTimeline,
46 onPullDownRefresh,
47 onReachBottom
48 } from '@dcloudio/uni-app';
49 import {
50 ref,
51 getCurrentInstance,
52 reactive,
53 toRefs
54 } from 'vue';
55
56 const searchValue = ref();
57 const items = ref(['全部', '报名中', '培训进行中', '已结束']);
58 const current = ref(0);
59 const name = ref();
60 const Nindex = ref(0)
61 const range = ref([{
62 value: 1,
63 text: '全部'
64 },
65 {
66 value: 2,
67 text: '报名中'
68 },
69 {
70 value: 3,
71 text: '进行中'
72 },
73 {
74 value: 4,
75 text: '即将开始'
76 },
77 {
78 value: 5,
79 text: '报名未开始'
80 },
81 {
82 value: 6,
83 text: '培训未开始'
84 },
85 {
86 value: 7,
87 text: '已结束'
88 }
89 ]);
90 const list = ref();
91 const total = ref();
92 // noMore没有更多了
93 // loading加载中
94 // more下来加载
95 const status = ref('more');
96 const flag = ref();
97 const data = reactive({
98 query: {
99 flag: '',
100 pageSize: 10,
101 pageNum: 1
102 },
103 contentText: {
104 contentdown: '',
105 contentrefresh: '加载中',
106 contentnomore: '没有更多'
107 }
108 });
109 const {
110 query,
111 contentText
112 } = toRefs(data);
113
114 // 加载培训列表数据
115 onLoad(option => {
116 initData();
117
118 });
119
120 function initData() {
121 query.value.flag = current.value;
122 train.getTrainList(query.value).then(res=>{
123 list.value = res.rows;
124 total.value = res.rows;
125 })
126 }
127
128 // 详情页
129 function detail(item) {
130 let path = `/training/detailPage?trainId=${item.id}`;
131 uni.navigateTo({
132 url: path
133 });
134 }
135
136 function nvaText(index) {
137 Nindex.value = index
138 current.value = index
139 initData()
140 console.log(index);
141 }
142
143
144 function filterTime(num) {
145 if (num) return num.slice(0, 16)
146 }
147
148
149 // 下拉框
150 function change(e) {
151 if (e) {
152 addForm.value.flag = e - 1;
153 current.value = e - 1;
154 Nindex.value = e - 1
155 console.log(e);
156 initData();
157 }
158 }
159
160 // 搜索
161 function search(res) {
162 if (res.value != '') {
163 addForm.value.trainName = res.value;
164 initData();
165 }
166
167 }
168
169 // 搜索清空按钮
170 function clear(res) {
171 addForm.value.trainName = '';
172 initData();
173 }
174
175 // 下来刷新
176 onPullDownRefresh(() => {
177 addForm.value.flag = 0;
178 initData();
179 wx.stopPullDownRefresh();
180 });
181
182 // 上拉加载
183 onReachBottom(async () => {
184 if (list.value.length == total.value) {
185 status.value = 'noMore';
186 return false;
187 } else {
188 status.value = 'loading';
189 addForm.value.pageNum += 1;
190 let res = await train.getTrainList(addForm.value);
191 let arr = res.rows;
192 list.value = list.value.concat(arr);
193 total.value = res.total;
194 status.value = 'noMore';
195 }
196 });
197 </script>
198
199 <style lang="scss">
200 .uni-section-header {
201 display: none !important;
202 }
203
204 .box {
205 background-color: #fff;
206 }
207
208 .nav-box {
209 overflow-x: scroll;
210 }
211
212 .nav-ul {
213 display: flex;
214 justify-content: space-around;
215 width: 100%;
216
217 }
218
219 .nva-li {
220 font-size: 26rpx;
221 padding: 10rpx 0rpx;
222 margin: 0 15rpx;
223
224 }
225
226 .nt {
227 font-size: 30rpx;
228 font-weight: 400;
229 border-bottom: 4rpx solid #AD181F;
230 }
231
232
233 .taber {
234 width: 100%;
235 padding: 25rpx 30rpx;
236 padding-bottom: 0;
237 }
238
239 .segmented-control__text {
240 font-size: 26rpx !important;
241 font-family: PingFang SC !important;
242 font-weight: 400 !important;
243 color: #4c5359 !important;
244 }
245
246 .segmented-control__item--text {
247 border-bottom: 4rpx solid #54e1b9;
248 font-size: 30rpx !important;
249 font-family: PingFang SC !important;
250 font-weight: 500 !important;
251 color: #2b3133 !important;
252 }
253
254 .title {
255 display: flex;
256 justify-content: space-between;
257
258 .navSerch {
259 width:100%;height:100rpx;flex:1 1 auto;
260 position: relative;
261
262 .serch {
263 width:100%;
264 }
265 }
266
267 .searchLeft {
268 font-size: 26rpx;
269 font-family: PingFang SC;
270 font-weight: 400;
271 color: #000000;
272 margin-top: 25rpx;
273 display: flex;
274 }
275
276 .uni-searchbar__cancel {
277 display: none;
278 }
279
280 :deep(.uni-select) {
281 border: 0;
282 // padding-left: 20rpx;
283 }
284
285 :deep(.uni-select__input-text) {
286 font-size: 26rpx;
287 font-family: PingFang SC;
288 font-weight: 400;
289 color: #000000;
290 margin-right: 14rpx;
291 width: 110rpx;
292 text-align: right;
293 }
294
295 :deep(.uni-select__selector-item) {
296 // padding: 0 auto;
297 text-align: center;
298 font-size: 26rpx;
299 font-family: PingFang SC;
300 font-weight: 400;
301 color: #000000;
302 }
303 }
304
305 // 搜索框
306 .search-result {
307 padding-top: 10rpx;
308 padding-bottom: 20rpx;
309 text-align: center;
310 }
311
312 .search-result-text {
313 text-align: center;
314 font-size: 14rpx;
315 color: #666;
316 }
317
318 :deep(.uni-searchbar) {box-sizing: border-box;
319 }
320
321 .uni-searchbar__box {
322 padding-right: 0rpx !important;
323 }
324
325 .example-body {
326 /* #ifndef APP-NVUE */
327 display: block;
328 /* #endif */
329 padding: 0px;
330 }
331
332 .uni-mt-10 {
333 width: 600rpx;
334 }
335
336 // 分段器
337 .example-body {
338 /* #ifndef APP-NVUE */
339 display: flex;
340 /* #endif */
341 flex-direction: row;
342 padding: 0;
343 }
344
345 .uni-common-mt {
346 margin-top: 30rpx;
347 }
348
349 .uni-padding-wrap {
350 // width: 750rpx;
351 padding: 0rpx 30rpx;
352 }
353
354 .content {
355 /* #ifndef APP-NVUE */
356 display: flex;
357 /* #endif */
358 justify-content: center;
359 // height: 1235rpx;
360 text-align: center;
361 }
362
363 .content-text {
364 font-size: 14rpx;
365 color: #666;
366 }
367
368 .color-tag {
369 width: 25rpx;
370 height: 25rpx;
371 }
372
373 .uni-list {
374 flex: 1;
375 }
376
377 .uni-list-item {
378 /* #ifndef APP-NVUE */
379 display: flex;
380 /* #endif */
381 flex: 1;
382 flex-direction: row;
383 background-color: #ffffff;
384 }
385
386 .uni-list-item__container {
387 padding: 12rpx 15rpx;
388 width: 100%;
389 flex: 1;
390 position: relative;
391 /* #ifndef APP-NVUE */
392 display: flex;
393 box-sizing: border-box;
394 /* #endif */
395 flex-direction: row;
396 justify-content: space-between;
397 align-items: center;
398 border-bottom-style: solid;
399 border-bottom-width: 1rpx;
400 border-bottom-color: #eee;
401 }
402
403 .uni-list-item__content-title {
404 font-size: 14rpx;
405 }
406
407 .chat-custom-right {
408 flex: 1;
409 /* #ifndef APP-NVUE */
410 display: flex;
411 /* #endif */
412 flex-direction: column;
413 justify-content: space-between;
414 align-items: flex-end;
415 }
416
417 .chat-custom-text {
418 font-size: 12rpx;
419 color: #999;
420 }
421 </style>
...\ No newline at end of file ...\ No newline at end of file
...@@ -347,6 +347,7 @@ ...@@ -347,6 +347,7 @@
347 flex-direction: row; 347 flex-direction: row;
348 flex-wrap: nowrap; 348 flex-wrap: nowrap;
349 padding: 0 5px; 349 padding: 0 5px;
350 justify-content: flex-end;
350 } 351 }
351 352
352 .selected-item { 353 .selected-item {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!