提交 3b478011e0e6666113eb9ad0f76e69da51257164

作者 guomingshu
1 个父辈 decbc290

feat: 签到列表页面优化

@@ -102,7 +102,7 @@ @@ -102,7 +102,7 @@
102 }, 102 },
103 "quickapp" : {}, 103 "quickapp" : {},
104 "mp-weixin" : { 104 "mp-weixin" : {
105 - "appid" : "wxac18386e35824192", 105 + "appid" : "wx6cd2152282abd34c",
106 "setting" : { 106 "setting" : {
107 "urlCheck" : false, 107 "urlCheck" : false,
108 "es6" : true, 108 "es6" : true,
@@ -45,7 +45,14 @@ @@ -45,7 +45,14 @@
45 "subPackages": [{ 45 "subPackages": [{
46 "root": "pages/main/home", 46 "root": "pages/main/home",
47 "pages": [ 47 "pages": [
  48 + {
  49 + "path": "registrationReview/studentList",
  50 + "style": {
  51 + "navigationBarTitleText": "待报名单",
  52 + "enablePullDownRefresh": false
  53 + }
48 54
  55 + },
49 { 56 {
50 "path": "registrationReview/registrationReview", 57 "path": "registrationReview/registrationReview",
51 "style": { 58 "style": {
1 <template> 1 <template>
2 - <view class="registration_review" :style="vuex_theme">  
3 - <view class="search_box">  
4 - <!-- <view class="check"> 2 + <view class="registration_review" :style="vuex_theme">
  3 + <view class="link_page" @click="handleLik">
  4 + <view class="left">
  5 + <u-image
  6 + src="/static/img/home/mess.png"
  7 + width="32rpx"
  8 + height="32rpx"
  9 + ></u-image>
  10 + <text>查看待报名单</text>
  11 + </view>
  12 + <u-image
  13 + src="/static/img/home/right.png"
  14 + width="20rpx"
  15 + height="20rpx"
  16 + ></u-image>
  17 + </view>
  18 + <view class="search_box">
  19 + <!-- <view class="check">
5 <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange"> 20 <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">
6 <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle" 21 <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"
7 v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name" 22 v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"
@@ -9,97 +24,180 @@ @@ -9,97 +24,180 @@
9 </u-checkbox> 24 </u-checkbox>
10 </u-checkbox-group> 25 </u-checkbox-group>
11 </view> --> 26 </view> -->
12 -  
13 - <!-- <view class="search"> 27 +
  28 + <!-- <view class="search">
14 <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx" 29 <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
15 bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch"> 30 bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">
16 </u-search> 31 </u-search>
17 </view> --> 32 </view> -->
18 - <view style="width: 148px;">  
19 - <u-subsection :list="['待审核','全部']" :current="curNow" :fontSize="26" :activeColor="'#000'" @change="sectionChange"></u-subsection>  
20 - </view>  
21 - <view style="display: flex; justify-content: space-between; align-items: center;">  
22 - <u-icon slot="icon" size="40" :name="'/static/img/home/search.png'" @click="searchCli"></u-icon>  
23 - <view style="width: 16px;"></view>  
24 - <u-icon slot="icon" size="40" :name="'/static/img/home/selectIcon.png'" @click="show = true"></u-icon>  
25 - </view>  
26 - </view>  
27 -  
28 - <view class="list_box" v-if="list.length > 0">  
29 - <view class="item" v-for="(item, i) in list" :key="i" @click="handelDetail(item)">  
30 -  
31 - <view class="bg_image" v-if="item.status == 'wait'">  
32 - <u-image :src="vuex_baseImgUrl && `${vuex_baseImgUrl}labelBgGreen.png`" width="142rpx" height="48rpx"></u-image>  
33 - <text>待审核</text>  
34 - </view>  
35 -  
36 - <view class="bg_image" v-if="item.status == 'pass'">  
37 - <u-image src="/static/img/home/labelBgGrey.png" width="142rpx" height="48rpx"></u-image>  
38 - <text>已通过</text>  
39 - </view>  
40 -  
41 - <view class="bg_image" v-if="item.status == 'reject'">  
42 - <u-image src="/static/img/home/labelBgGrey.png" width="142rpx" height="48rpx"></u-image>  
43 - <text>已拒绝</text>  
44 - </view>  
45 -  
46 - <view class="name">{{item.studentName}}</view>  
47 - <view class="company">  
48 - <u-icon size="32rpx" :name="vuex_baseImgUrl && `${vuex_baseImgUrl}internshipUnitIcon.png`"></u-icon>  
49 - <text>实习单位</text>  
50 - <text>{{item.companyName || '--'}}</text>  
51 - </view>  
52 - <view class="company position">  
53 - <u-icon size="32rpx" :name="vuex_baseImgUrl && `${vuex_baseImgUrl}internshipJobIcon.png`"></u-icon>  
54 - <text>实习岗位</text>  
55 - <text>{{item.jobName|| '--'}}</text>  
56 - </view>  
57 -  
58 - <view class="time">  
59 - <text>申请时间</text>  
60 - <text>{{timeFormat(item.applyTime, 'yyyy-mm-dd hh:MM')}}</text>  
61 - </view>  
62 -  
63 - </view>  
64 - <c-loading :loading="loading"></c-loading>  
65 - </view>  
66 - <view v-else class="no_data">  
67 - <c-no-data></c-no-data>  
68 - </view>  
69 -  
70 - <u-popup :show="show" mode="bottom" @close="close" :round="22">  
71 - <view class="popup">  
72 - <view style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 28px;">  
73 - <view class="title">  
74 - 计划筛选  
75 - </view>  
76 - <image class="close" src="/static/img/home/closepop.png" @click="close" mode=""></image>  
77 - </view>  
78 - <view class="search">  
79 - <u-search placeholder="请输入计划关键词搜索" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"  
80 - bgColor="#F4F4F4" :showAction="true" shape="round" v-model="sxsearch" @custom="workSearch()" @search="workSearch()">  
81 - </u-search>  
82 - </view>  
83 - <scroll-view v-if="works.length>0" scroll-y="true" style="height: 80%; margin-top: 40rpx;"  
84 - @scrolltolower="lower()">  
85 - <view class="item_box" v-for="(item,index) in works" :key="index" @click="popupSelItem(item)">  
86 - <view style="display: flex; align-items: center; justify-content: space-between;">  
87 - <view class="item_title">  
88 - {{item.name}}  
89 - </view>  
90 - <image v-if="item.id == planId" style="width: 20px; height: 20px;" :src="vuex_baseImgUrl && `${vuex_baseImgUrl}popselect.png`" mode=""></image>  
91 - </view>  
92 - </view>  
93 - </scroll-view>  
94 - <view v-else class="no_data" @click="jumpVerified">  
95 - <view class="text_black_28">  
96 - 暂未搜索到该计划  
97 - </view>  
98 - </view>  
99 - </view>  
100 - </u-popup>  
101 -  
102 - <!-- <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false"> 33 + <view style="width: 148px">
  34 + <u-subsection
  35 + :list="['待审核', '全部']"
  36 + :current="curNow"
  37 + :fontSize="26"
  38 + :activeColor="'#000'"
  39 + @change="sectionChange"
  40 + ></u-subsection>
  41 + </view>
  42 + <view
  43 + style="
  44 + display: flex;
  45 + justify-content: space-between;
  46 + align-items: center;
  47 + "
  48 + >
  49 + <u-icon
  50 + slot="icon"
  51 + size="40"
  52 + :name="'/static/img/home/search.png'"
  53 + @click="searchCli"
  54 + ></u-icon>
  55 + <view style="width: 16px"></view>
  56 + <u-icon
  57 + slot="icon"
  58 + size="40"
  59 + :name="'/static/img/home/selectIcon.png'"
  60 + @click="show = true"
  61 + ></u-icon>
  62 + </view>
  63 + </view>
  64 +
  65 + <view class="list_box" v-if="list.length > 0">
  66 + <view
  67 + class="item"
  68 + v-for="(item, i) in list"
  69 + :key="i"
  70 + @click="handelDetail(item)"
  71 + >
  72 + <view class="bg_image" v-if="item.status == 'wait'">
  73 + <u-image
  74 + :src="vuex_baseImgUrl && `${vuex_baseImgUrl}labelBgGreen.png`"
  75 + width="142rpx"
  76 + height="48rpx"
  77 + ></u-image>
  78 + <text>待审核</text>
  79 + </view>
  80 +
  81 + <view class="bg_image" v-if="item.status == 'pass'">
  82 + <u-image
  83 + src="/static/img/home/labelBgGrey.png"
  84 + width="142rpx"
  85 + height="48rpx"
  86 + ></u-image>
  87 + <text>已通过</text>
  88 + </view>
  89 +
  90 + <view class="bg_image" v-if="item.status == 'reject'">
  91 + <u-image
  92 + src="/static/img/home/labelBgGrey.png"
  93 + width="142rpx"
  94 + height="48rpx"
  95 + ></u-image>
  96 + <text>已拒绝</text>
  97 + </view>
  98 +
  99 + <view class="name">{{ item.studentName }}</view>
  100 + <view class="company">
  101 + <u-icon
  102 + size="32rpx"
  103 + :name="
  104 + vuex_baseImgUrl && `${vuex_baseImgUrl}internshipUnitIcon.png`
  105 + "
  106 + ></u-icon>
  107 + <text>实习单位</text>
  108 + <text>{{ item.companyName || "--" }}</text>
  109 + </view>
  110 + <view class="company position">
  111 + <u-icon
  112 + size="32rpx"
  113 + :name="vuex_baseImgUrl && `${vuex_baseImgUrl}internshipJobIcon.png`"
  114 + ></u-icon>
  115 + <text>实习岗位</text>
  116 + <text>{{ item.jobName || "--" }}</text>
  117 + </view>
  118 +
  119 + <view class="time">
  120 + <text>申请时间</text>
  121 + <text>{{ timeFormat(item.applyTime, "yyyy-mm-dd hh:MM") }}</text>
  122 + </view>
  123 + </view>
  124 + <c-loading :loading="loading"></c-loading>
  125 + </view>
  126 + <view v-else class="no_data">
  127 + <c-no-data></c-no-data>
  128 + </view>
  129 +
  130 + <u-popup :show="show" mode="bottom" @close="close" :round="22">
  131 + <view class="popup">
  132 + <view
  133 + style="
  134 + display: flex;
  135 + justify-content: space-between;
  136 + align-items: center;
  137 + margin-bottom: 28px;
  138 + "
  139 + >
  140 + <view class="title"> 计划筛选 </view>
  141 + <image
  142 + class="close"
  143 + src="/static/img/home/closepop.png"
  144 + @click="close"
  145 + mode=""
  146 + ></image>
  147 + </view>
  148 + <view class="search">
  149 + <u-search
  150 + placeholder="请输入计划关键词搜索"
  151 + placeholderColor="#C1C1C9"
  152 + searchIconSize="36"
  153 + height="64rpx"
  154 + bgColor="#F4F4F4"
  155 + :showAction="true"
  156 + shape="round"
  157 + v-model="sxsearch"
  158 + @custom="workSearch()"
  159 + @search="workSearch()"
  160 + >
  161 + </u-search>
  162 + </view>
  163 + <scroll-view
  164 + v-if="works.length > 0"
  165 + scroll-y="true"
  166 + style="height: 80%; margin-top: 40rpx"
  167 + @scrolltolower="lower()"
  168 + >
  169 + <view
  170 + class="item_box"
  171 + v-for="(item, index) in works"
  172 + :key="index"
  173 + @click="popupSelItem(item)"
  174 + >
  175 + <view
  176 + style="
  177 + display: flex;
  178 + align-items: center;
  179 + justify-content: space-between;
  180 + "
  181 + >
  182 + <view class="item_title">
  183 + {{ item.name }}
  184 + </view>
  185 + <image
  186 + v-if="item.id == planId"
  187 + style="width: 20px; height: 20px"
  188 + :src="vuex_baseImgUrl && `${vuex_baseImgUrl}popselect.png`"
  189 + mode=""
  190 + ></image>
  191 + </view>
  192 + </view>
  193 + </scroll-view>
  194 + <view v-else class="no_data" @click="jumpVerified">
  195 + <view class="text_black_28"> 暂未搜索到该计划 </view>
  196 + </view>
  197 + </view>
  198 + </u-popup>
  199 +
  200 + <!-- <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false">
103 <view class="popup_search"> 201 <view class="popup_search">
104 <view class="content"> 202 <view class="content">
105 <view class="title">按计划筛选</view> 203 <view class="title">按计划筛选</view>
@@ -133,516 +231,526 @@ @@ -133,516 +231,526 @@
133 231
134 </view> 232 </view>
135 </u-popup> --> 233 </u-popup> -->
136 -  
137 - </view> 234 + </view>
138 </template> 235 </template>
139 236
140 <script> 237 <script>
141 - import {  
142 - mapGetters,  
143 - mapState,  
144 - mapActions  
145 - } from 'vuex'  
146 - import listMixin from "@/common/mixins/list-mixin.js";  
147 -  
148 - import {  
149 - getRegistrationReviewApi,  
150 - getPlanListApi,  
151 - } from '@/config/api.js';  
152 -  
153 - export default {  
154 - mixins: [listMixin],  
155 - data() {  
156 - return {  
157 - checkboxValue: [],  
158 - // 基本案列数据  
159 - checkboxList: [{  
160 - name: '待审核',  
161 - disabled: false  
162 - }],  
163 - keyword: '',  
164 - show: false,  
165 - list: [], //列表必须为key list的数组  
166 - search: {  
167 - //搜索对象必须为key search的对象  
168 - keySearch: "",  
169 - status: 'wait,pass,reject',  
170 -  
171 - },  
172 - planId: '',  
173 - switchValue: false,  
174 - curNow: 1,  
175 - sxsearch: '',  
176 - works: [],  
177 - workspage: 1,  
178 - workstotal: 0,  
179 - } 238 +import { mapGetters, mapState, mapActions } from "vuex";
  239 +import listMixin from "@/common/mixins/list-mixin.js";
  240 +
  241 +import { getRegistrationReviewApi, getPlanListApi } from "@/config/api.js";
  242 +
  243 +export default {
  244 + mixins: [listMixin],
  245 + data() {
  246 + return {
  247 + checkboxValue: [],
  248 + // 基本案列数据
  249 + checkboxList: [
  250 + {
  251 + name: "待审核",
  252 + disabled: false,
  253 + },
  254 + ],
  255 + keyword: "",
  256 + show: false,
  257 + list: [], //列表必须为key list的数组
  258 + search: {
  259 + //搜索对象必须为key search的对象
  260 + keySearch: "",
  261 + status: "wait,pass,reject",
  262 + },
  263 + planId: "",
  264 + switchValue: false,
  265 + curNow: 1,
  266 + sxsearch: "",
  267 + works: [],
  268 + workspage: 1,
  269 + workstotal: 0,
  270 + };
  271 + },
  272 +
  273 + onLoad(option) {
  274 + console.log(option);
  275 + // this.$store.dispatch(`home/getProjectList`, {
  276 + // pageSize: -1,
  277 + // })
  278 +
  279 + // this.search.keySearch = '';
  280 +
  281 + this.worksloadData();
  282 +
  283 + if (option && option.status) {
  284 + // this.search.status = 'wait';
  285 + // this.checkboxValue = ['待审核'];
  286 + // this.switchValue = true;
  287 + this.curNow = 0;
  288 + }
  289 +
  290 + // this.finished = false;
  291 + // this.loading = "loadmore";
  292 + // this.page = 0;
  293 + // this.list = [];
  294 + },
  295 +
  296 + onShow() {
  297 + this.finished = false;
  298 + this.loading = "loadmore";
  299 + this.page = 0;
  300 + this.list = [];
  301 + this._getList();
  302 + },
  303 +
  304 + computed: {
  305 + ...mapState("home", {
  306 + // 箭头函数可使代码更简练
  307 + projectList: "projectList",
  308 + }),
  309 + },
  310 +
  311 + methods: {
  312 +
  313 + handleLik() {
  314 + this.$u.route("/pages/main/home/registrationReview/studentList");
180 }, 315 },
181 316
182 - onLoad(option) {  
183 - console.log(option)  
184 - // this.$store.dispatch(`home/getProjectList`, {  
185 - // pageSize: -1,  
186 - // })  
187 -  
188 - // this.search.keySearch = '';  
189 -  
190 - this.worksloadData()  
191 -  
192 - if (option && option.status) {  
193 - // this.search.status = 'wait';  
194 - // this.checkboxValue = ['待审核'];  
195 - // this.switchValue = true;  
196 - this.curNow = 0;  
197 - }  
198 -  
199 - // this.finished = false;  
200 - // this.loading = "loadmore";  
201 - // this.page = 0;  
202 - // this.list = [];  
203 -  
204 - },  
205 -  
206 - onShow() {  
207 - this.finished = false;  
208 - this.loading = "loadmore";  
209 - this.page = 0;  
210 - this.list = [];  
211 - this._getList();  
212 - },  
213 -  
214 - computed: {  
215 - ...mapState('home', {  
216 - // 箭头函数可使代码更简练  
217 - projectList: 'projectList',  
218 -  
219 - }),  
220 -  
221 - },  
222 -  
223 - methods: {  
224 -  
225 - searchCli() {  
226 - this.$u.route('/pages/main/home/search/search?type=reg&searchkey=' + this.keyword);  
227 - },  
228 -  
229 - sectionChange(index) {  
230 - this.curNow = index;  
231 -  
232 - this.finished = false;  
233 - this.loading = "loadmore";  
234 - this.page = 0;  
235 - this.list = [];  
236 - this._getList();  
237 - },  
238 -  
239 - handelDetail(record) {  
240 - this.$u.route({  
241 - url: `pages/main/home/registrationDetail/registrationDetail?&id=${record.id}`  
242 - })  
243 - },  
244 -  
245 - timeFormat(timestamp, format = 'yyyy-mm-dd') {  
246 - return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'  
247 - },  
248 -  
249 - checkboxChange(n) {  
250 - console.log('change', n);  
251 -  
252 - this.search.status = n.length > 0 ? 'wait' : 'wait,pass,reject';  
253 -  
254 - this.switchValue = n.length > 0 ? true : false;  
255 -  
256 - this.finished = false;  
257 - this.loading = "loadmore";  
258 - this.page = 0;  
259 - this.list = [];  
260 - this._getList();  
261 - },  
262 -  
263 - handelSearch(value) {  
264 - this.finished = false;  
265 - this.loading = "loadmore";  
266 - this.page = 0;  
267 - this.list = [];  
268 - this._getList();  
269 - },  
270 -  
271 - open() {  
272 - // console.log('open');  
273 - },  
274 - close() {  
275 - this.show = false  
276 - // console.log('close');  
277 - },  
278 - // scroll-view到底部加载更多  
279 - onreachBottom() {},  
280 - // 搜索  
281 - searchSubmit() {  
282 - // 调用混合搜索  
283 - this._searchData();  
284 - },  
285 - // 模拟后端分页  
286 - async getData(requestParams) {  
287 - const {  
288 - search = {}  
289 - } = requestParams;  
290 -  
291 - let params = {};  
292 - params.pageNumber = requestParams.page + 1;  
293 - params.pageSize = 5;  
294 -  
295 - // if (search.status) {  
296 - // params.status = search.status;  
297 - // }  
298 -  
299 - if (this.curNow == 0) {  
300 - params.status = 'wait';  
301 - }else {  
302 - params.status = 'wait,pass,reject';  
303 - }  
304 -  
305 - if (this.keyword) {  
306 - params.keySearch = this.keyword  
307 - }  
308 -  
309 - if (this.planId) {  
310 - params.planId = this.planId  
311 - }  
312 -  
313 - return await getRegistrationReviewApi(params);  
314 - },  
315 - // 数据请求(没错就是这么少的代码)  
316 - async _getList() {  
317 - if (this.page == 0) {  
318 - this.list = [];  
319 - }  
320 -  
321 - // 根据实际情况修改自己修改key  
322 - let result = await this.getData({  
323 - page: this.page, // 传入页码  
324 - size: this.size, // 传入每页条数  
325 - search: this.search, // 传入搜索的对象  
326 - });  
327 -  
328 - this.total = result.total;  
329 -  
330 - if (this.list.length == 0 && result.records.length == 0) {  
331 - this.shownoData = false  
332 - } else {  
333 - this.shownoData = true  
334 - }  
335 -  
336 - this.list = this.list.concat(result.records)  
337 -  
338 - // 判断是否全部加载完成  
339 - if (this.total == this.list.length) {  
340 - this.finished = true;  
341 - this.loading = 'nomore';  
342 - } else {  
343 - this.loading = 'loadmore';  
344 - }  
345 - },  
346 -  
347 - handelClick(values) {  
348 - console.log(values);  
349 - this.planId = values.id;  
350 - },  
351 -  
352 - handelChange(e) {  
353 - console.log(e)  
354 - this.checkboxValue = e ? ['待审核'] : [];  
355 - this.search.status = e ? 'wait' : 'wait,pass,reject';  
356 -  
357 - },  
358 -  
359 - handelCancel() {  
360 - this.switchValue = false;  
361 - this.planId = '';  
362 - },  
363 -  
364 - hancelSubmit() {  
365 - this.finished = false;  
366 - this.loading = "loadmore";  
367 - this.page = 0;  
368 - this.list = [];  
369 - this._getList();  
370 -  
371 - this.show = false;  
372 - },  
373 -  
374 - workSearch() {  
375 - uni.hideKeyboard();  
376 - this.works = []  
377 - this.worksloadData()  
378 - },  
379 -  
380 - lower() {  
381 - setTimeout(() => {  
382 - this.worksloadData(true);  
383 - }, 200)  
384 - },  
385 -  
386 - worksloadData(e) {  
387 - let params = {}  
388 - // this.loading = 'loading'  
389 -  
390 - if (e) {  
391 - if (this.total <= this.works.length) {  
392 - // this.loading = 'nomore'  
393 - return  
394 - }  
395 - this.workspage++  
396 - } else {  
397 - this.workspage = 1  
398 - }  
399 - params['pageNumber'] = this.workspage  
400 - if (this.sxsearch) {  
401 - params['keyWord'] = this.sxsearch  
402 - }  
403 - getPlanListApi(params).then(async res => {  
404 - if (res) {  
405 - this.total = res.total  
406 - // this.loading = 'loadmore'  
407 - this.works = this.works.concat(res.records)  
408 - }  
409 - })  
410 - },  
411 - popupSelItem(item) {  
412 - this.show = false  
413 - this.planId = item.id;  
414 - this.finished = false;  
415 - this.loading = "loadmore";  
416 - this.page = 0;  
417 - this.list = [];  
418 - this._getList();  
419 - },  
420 - }  
421 - } 317 + searchCli() {
  318 + this.$u.route(
  319 + "/pages/main/home/search/search?type=reg&searchkey=" + this.keyword
  320 + );
  321 + },
  322 +
  323 + sectionChange(index) {
  324 + this.curNow = index;
  325 +
  326 + this.finished = false;
  327 + this.loading = "loadmore";
  328 + this.page = 0;
  329 + this.list = [];
  330 + this._getList();
  331 + },
  332 +
  333 + handelDetail(record) {
  334 + this.$u.route({
  335 + url: `pages/main/home/registrationDetail/registrationDetail?&id=${record.id}`,
  336 + });
  337 + },
  338 +
  339 + timeFormat(timestamp, format = "yyyy-mm-dd") {
  340 + return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : "--";
  341 + },
  342 +
  343 + checkboxChange(n) {
  344 + console.log("change", n);
  345 +
  346 + this.search.status = n.length > 0 ? "wait" : "wait,pass,reject";
  347 +
  348 + this.switchValue = n.length > 0 ? true : false;
  349 +
  350 + this.finished = false;
  351 + this.loading = "loadmore";
  352 + this.page = 0;
  353 + this.list = [];
  354 + this._getList();
  355 + },
  356 +
  357 + handelSearch(value) {
  358 + this.finished = false;
  359 + this.loading = "loadmore";
  360 + this.page = 0;
  361 + this.list = [];
  362 + this._getList();
  363 + },
  364 +
  365 + open() {
  366 + // console.log('open');
  367 + },
  368 + close() {
  369 + this.show = false;
  370 + // console.log('close');
  371 + },
  372 + // scroll-view到底部加载更多
  373 + onreachBottom() {},
  374 + // 搜索
  375 + searchSubmit() {
  376 + // 调用混合搜索
  377 + this._searchData();
  378 + },
  379 + // 模拟后端分页
  380 + async getData(requestParams) {
  381 + const { search = {} } = requestParams;
  382 +
  383 + let params = {};
  384 + params.pageNumber = requestParams.page + 1;
  385 + params.pageSize = 5;
  386 +
  387 + // if (search.status) {
  388 + // params.status = search.status;
  389 + // }
  390 +
  391 + if (this.curNow == 0) {
  392 + params.status = "wait";
  393 + } else {
  394 + params.status = "wait,pass,reject";
  395 + }
  396 +
  397 + if (this.keyword) {
  398 + params.keySearch = this.keyword;
  399 + }
  400 +
  401 + if (this.planId) {
  402 + params.planId = this.planId;
  403 + }
  404 +
  405 + return await getRegistrationReviewApi(params);
  406 + },
  407 + // 数据请求(没错就是这么少的代码)
  408 + async _getList() {
  409 + if (this.page == 0) {
  410 + this.list = [];
  411 + }
  412 +
  413 + // 根据实际情况修改自己修改key
  414 + let result = await this.getData({
  415 + page: this.page, // 传入页码
  416 + size: this.size, // 传入每页条数
  417 + search: this.search, // 传入搜索的对象
  418 + });
  419 +
  420 + this.total = result.total;
  421 +
  422 + if (this.list.length == 0 && result.records.length == 0) {
  423 + this.shownoData = false;
  424 + } else {
  425 + this.shownoData = true;
  426 + }
  427 +
  428 + this.list = this.list.concat(result.records);
  429 +
  430 + // 判断是否全部加载完成
  431 + if (this.total == this.list.length) {
  432 + this.finished = true;
  433 + this.loading = "nomore";
  434 + } else {
  435 + this.loading = "loadmore";
  436 + }
  437 + },
  438 +
  439 + handelClick(values) {
  440 + console.log(values);
  441 + this.planId = values.id;
  442 + },
  443 +
  444 + handelChange(e) {
  445 + console.log(e);
  446 + this.checkboxValue = e ? ["待审核"] : [];
  447 + this.search.status = e ? "wait" : "wait,pass,reject";
  448 + },
  449 +
  450 + handelCancel() {
  451 + this.switchValue = false;
  452 + this.planId = "";
  453 + },
  454 +
  455 + hancelSubmit() {
  456 + this.finished = false;
  457 + this.loading = "loadmore";
  458 + this.page = 0;
  459 + this.list = [];
  460 + this._getList();
  461 +
  462 + this.show = false;
  463 + },
  464 +
  465 + workSearch() {
  466 + uni.hideKeyboard();
  467 + this.works = [];
  468 + this.worksloadData();
  469 + },
  470 +
  471 + lower() {
  472 + setTimeout(() => {
  473 + this.worksloadData(true);
  474 + }, 200);
  475 + },
  476 +
  477 + worksloadData(e) {
  478 + let params = {};
  479 + // this.loading = 'loading'
  480 +
  481 + if (e) {
  482 + if (this.total <= this.works.length) {
  483 + // this.loading = 'nomore'
  484 + return;
  485 + }
  486 + this.workspage++;
  487 + } else {
  488 + this.workspage = 1;
  489 + }
  490 + params["pageNumber"] = this.workspage;
  491 + if (this.sxsearch) {
  492 + params["keyWord"] = this.sxsearch;
  493 + }
  494 + getPlanListApi(params).then(async (res) => {
  495 + if (res) {
  496 + this.total = res.total;
  497 + // this.loading = 'loadmore'
  498 + this.works = this.works.concat(res.records);
  499 + }
  500 + });
  501 + },
  502 + popupSelItem(item) {
  503 + this.show = false;
  504 + this.planId = item.id;
  505 + this.finished = false;
  506 + this.loading = "loadmore";
  507 + this.page = 0;
  508 + this.list = [];
  509 + this._getList();
  510 + },
  511 + },
  512 +};
422 </script> 513 </script>
423 514
424 <style lang="scss" scoped> 515 <style lang="scss" scoped>
425 - .registration_review {  
426 - width: 100%;  
427 - min-height: 100%;  
428 - height: auto;  
429 - background-color: #F7F7F7;  
430 -  
431 - .search_box {  
432 - padding: 36rpx 30rpx 12rpx;  
433 - background-color: #FFFFFF; 516 +.registration_review {
  517 + width: 100%;
  518 + min-height: 100%;
  519 + height: auto;
  520 + background-color: #f7f7f7;
  521 +
  522 + .link_page {
  523 + background: rgba(244, 154, 35, 0.06);
  524 + display: flex;
  525 + align-items: center;
  526 + justify-content: space-between;
  527 + padding: 16rpx 26rpx;
  528 +
  529 + .left {
434 display: flex; 530 display: flex;
435 - flex-flow: row nowrap;  
436 - justify-content: space-between;  
437 -  
438 - .check {  
439 - padding: 20rpx 0 0 0;  
440 - }  
441 -  
442 - .search {  
443 - width: 468rpx; 531 + align-items: center;
  532 +
  533 + text {
  534 + font-size: 24rpx;
  535 + font-weight: 400;
  536 + color: #f49a23;
  537 + line-height: 32rpx;
  538 + margin-left: 16rpx;
444 } 539 }
445 } 540 }
446 541
447 - .list_box {  
448 - padding: 0 0 50rpx 0;  
449 -  
450 - .item {  
451 - position: relative;  
452 - width: 630rpx;  
453 - margin: 30rpx auto;  
454 - padding: 30rpx;  
455 - border-radius: 12rpx;  
456 - background-color: #FFFFFF;  
457 -  
458 - .bg_image {  
459 - position: absolute;  
460 - top: 0;  
461 - right: 0;  
462 -  
463 - text {  
464 - position: absolute;  
465 - top: 12rpx;  
466 - right: 30rpx;  
467 - font-size: 24rpx;  
468 - line-height: 24rpx;  
469 - color: #FFFFFF;  
470 - }  
471 - }  
472 -  
473 - .name {  
474 - font-size: 32rpx;  
475 - line-height: 44rpx;  
476 - color: #202131;  
477 - font-weight: 500;  
478 - margin: 0 0 30rpx 0;  
479 - }  
480 -  
481 - .company {  
482 - display: flex;  
483 - flex-flow: row nowrap;  
484 - margin: 0 0 30rpx 0;  
485 -  
486 - text {  
487 - font-size: 28rpx;  
488 - line-height: 32rpx;  
489 - color: #909097;  
490 - margin: 0 0 0 16rpx;  
491 - }  
492 -  
493 - text:last-child {  
494 - color: #202131;  
495 - margin: 0 0 0 30rpx;  
496 - }  
497 - }  
498 -  
499 - .time {  
500 - border-top: 2rpx solid #E2E2E8;  
501 - padding: 28rpx 0 0 0;  
502 -  
503 - text {  
504 - font-size: 28rpx;  
505 - line-height: 32rpx;  
506 - color: #909097;  
507 - }  
508 -  
509 - text:last-child {  
510 - color: #202131;  
511 - margin: 0 0 0 78rpx;  
512 - }  
513 - }  
514 - }  
515 - }  
516 -  
517 - .popup_search {  
518 - width: 640rpx;  
519 - position: relative;  
520 -  
521 - .content {  
522 - padding: 0 40rpx;  
523 -  
524 - .title {  
525 - padding: 24rpx 0;  
526 - font-size: 28rpx;  
527 - line-height: 36rpx;  
528 - color: #202131;  
529 - }  
530 -  
531 - .scroll {  
532 - max-height: 60vh;  
533 -  
534 - .item {  
535 -  
536 - view {  
537 - display: flex;  
538 - flex-flow: row wrap;  
539 - align-items: center;  
540 - width: 500rpx;  
541 - height: 74rpx;  
542 - border-radius: 4rpx;  
543 - border: 2rpx solid #C1C1C9;  
544 - margin: 0 10rpx 20rpx;  
545 - font-size: 24rpx;  
546 - line-height: 32rpx;  
547 - color: #C0C0C9;  
548 - padding: 16rpx 20rpx;  
549 - }  
550 -  
551 - .selectItem {  
552 - background-color: var(--primary-color);  
553 - color: #FFFFFF;  
554 - border: 2rpx solid var(--primary-color);  
555 - }  
556 - }  
557 - }  
558 -  
559 - .switch {  
560 - display: flex;  
561 - flex-flow: row nowrap;  
562 - justify-content: space-between;  
563 - padding: 40rpx 0 0 0;  
564 -  
565 - text {  
566 - font-size: 28rpx;  
567 - line-height: 36rpx;  
568 - color: #202131;  
569 - }  
570 - }  
571 -  
572 -  
573 - }  
574 -  
575 - .footer {  
576 - width: 560rpx;  
577 - height: 96rpx;  
578 - padding: 28rpx 40rpx;  
579 - background: #FFFFFF;  
580 - position: fixed;  
581 - bottom: 0;  
582 - right: 0;  
583 - z-index: 99;  
584 - border-top: 2rpx solid #E2E2E8;  
585 -  
586 - view {  
587 - display: inline-block;  
588 - }  
589 -  
590 - .left_btn {  
591 - width: 194rpx;  
592 - margin: 0 20rpx 0 0;  
593 - }  
594 -  
595 - .right_btn {  
596 - width: 346rpx;  
597 - }  
598 - }  
599 - }  
600 -  
601 - .popup {  
602 - height: 500px;  
603 - padding: 19px 16px;  
604 -  
605 - .title {  
606 - font-size: 18px;  
607 - font-family: PingFangSC-Medium, PingFang SC;  
608 - font-weight: 500;  
609 - color: #000000;  
610 - }  
611 -  
612 - .close {  
613 - width: 22px;  
614 - height: 22px;  
615 - }  
616 -  
617 - .item_box {  
618 - border-radius: 4px;  
619 - margin: 0 0 48rpx;  
620 -  
621 - .item_title {  
622 - height: 20px;  
623 - font-size: 14px;  
624 - font-family: PingFangSC-Regular, PingFang SC;  
625 - font-weight: 400;  
626 - color: rgba(0, 0, 0, 0.65);  
627 - line-height: 20px;  
628 - }  
629 -  
630 - }  
631 -  
632 - .no_data {  
633 - width: 100%;  
634 - margin-top: 310rpx;  
635 -  
636 - .text_black_28 {  
637 - font-size: 14px;  
638 - font-family: PingFangSC-Light, PingFang SC;  
639 - font-weight: 300;  
640 - color: rgba(0, 0, 0, 0.65);  
641 - text-align: center;  
642 - }  
643 -  
644 - }  
645 -  
646 - }  
647 - } 542 +
  543 + }
  544 +
  545 + .search_box {
  546 + padding: 36rpx 30rpx 12rpx;
  547 + background-color: #ffffff;
  548 + display: flex;
  549 + flex-flow: row nowrap;
  550 + justify-content: space-between;
  551 +
  552 + .check {
  553 + padding: 20rpx 0 0 0;
  554 + }
  555 +
  556 + .search {
  557 + width: 468rpx;
  558 + }
  559 + }
  560 +
  561 + .list_box {
  562 + padding: 0 0 50rpx 0;
  563 +
  564 + .item {
  565 + position: relative;
  566 + width: 630rpx;
  567 + margin: 30rpx auto;
  568 + padding: 30rpx;
  569 + border-radius: 12rpx;
  570 + background-color: #ffffff;
  571 +
  572 + .bg_image {
  573 + position: absolute;
  574 + top: 0;
  575 + right: 0;
  576 +
  577 + text {
  578 + position: absolute;
  579 + top: 12rpx;
  580 + right: 30rpx;
  581 + font-size: 24rpx;
  582 + line-height: 24rpx;
  583 + color: #ffffff;
  584 + }
  585 + }
  586 +
  587 + .name {
  588 + font-size: 32rpx;
  589 + line-height: 44rpx;
  590 + color: #202131;
  591 + font-weight: 500;
  592 + margin: 0 0 30rpx 0;
  593 + }
  594 +
  595 + .company {
  596 + display: flex;
  597 + flex-flow: row nowrap;
  598 + margin: 0 0 30rpx 0;
  599 +
  600 + text {
  601 + font-size: 28rpx;
  602 + line-height: 32rpx;
  603 + color: #909097;
  604 + margin: 0 0 0 16rpx;
  605 + }
  606 +
  607 + text:last-child {
  608 + color: #202131;
  609 + margin: 0 0 0 30rpx;
  610 + }
  611 + }
  612 +
  613 + .time {
  614 + border-top: 2rpx solid #e2e2e8;
  615 + padding: 28rpx 0 0 0;
  616 +
  617 + text {
  618 + font-size: 28rpx;
  619 + line-height: 32rpx;
  620 + color: #909097;
  621 + }
  622 +
  623 + text:last-child {
  624 + color: #202131;
  625 + margin: 0 0 0 78rpx;
  626 + }
  627 + }
  628 + }
  629 + }
  630 +
  631 + .popup_search {
  632 + width: 640rpx;
  633 + position: relative;
  634 +
  635 + .content {
  636 + padding: 0 40rpx;
  637 +
  638 + .title {
  639 + padding: 24rpx 0;
  640 + font-size: 28rpx;
  641 + line-height: 36rpx;
  642 + color: #202131;
  643 + }
  644 +
  645 + .scroll {
  646 + max-height: 60vh;
  647 +
  648 + .item {
  649 + view {
  650 + display: flex;
  651 + flex-flow: row wrap;
  652 + align-items: center;
  653 + width: 500rpx;
  654 + height: 74rpx;
  655 + border-radius: 4rpx;
  656 + border: 2rpx solid #c1c1c9;
  657 + margin: 0 10rpx 20rpx;
  658 + font-size: 24rpx;
  659 + line-height: 32rpx;
  660 + color: #c0c0c9;
  661 + padding: 16rpx 20rpx;
  662 + }
  663 +
  664 + .selectItem {
  665 + background-color: var(--primary-color);
  666 + color: #ffffff;
  667 + border: 2rpx solid var(--primary-color);
  668 + }
  669 + }
  670 + }
  671 +
  672 + .switch {
  673 + display: flex;
  674 + flex-flow: row nowrap;
  675 + justify-content: space-between;
  676 + padding: 40rpx 0 0 0;
  677 +
  678 + text {
  679 + font-size: 28rpx;
  680 + line-height: 36rpx;
  681 + color: #202131;
  682 + }
  683 + }
  684 + }
  685 +
  686 + .footer {
  687 + width: 560rpx;
  688 + height: 96rpx;
  689 + padding: 28rpx 40rpx;
  690 + background: #ffffff;
  691 + position: fixed;
  692 + bottom: 0;
  693 + right: 0;
  694 + z-index: 99;
  695 + border-top: 2rpx solid #e2e2e8;
  696 +
  697 + view {
  698 + display: inline-block;
  699 + }
  700 +
  701 + .left_btn {
  702 + width: 194rpx;
  703 + margin: 0 20rpx 0 0;
  704 + }
  705 +
  706 + .right_btn {
  707 + width: 346rpx;
  708 + }
  709 + }
  710 + }
  711 +
  712 + .popup {
  713 + height: 500px;
  714 + padding: 19px 16px;
  715 +
  716 + .title {
  717 + font-size: 18px;
  718 + font-family: PingFangSC-Medium, PingFang SC;
  719 + font-weight: 500;
  720 + color: #000000;
  721 + }
  722 +
  723 + .close {
  724 + width: 22px;
  725 + height: 22px;
  726 + }
  727 +
  728 + .item_box {
  729 + border-radius: 4px;
  730 + margin: 0 0 48rpx;
  731 +
  732 + .item_title {
  733 + height: 20px;
  734 + font-size: 14px;
  735 + font-family: PingFangSC-Regular, PingFang SC;
  736 + font-weight: 400;
  737 + color: rgba(0, 0, 0, 0.65);
  738 + line-height: 20px;
  739 + }
  740 + }
  741 +
  742 + .no_data {
  743 + width: 100%;
  744 + margin-top: 310rpx;
  745 +
  746 + .text_black_28 {
  747 + font-size: 14px;
  748 + font-family: PingFangSC-Light, PingFang SC;
  749 + font-weight: 300;
  750 + color: rgba(0, 0, 0, 0.65);
  751 + text-align: center;
  752 + }
  753 + }
  754 + }
  755 +}
648 </style> 756 </style>
  1 +<template>
  2 + <view class="registration_review" :style="vuex_theme">
  3 + <view class="list_box" v-if="list.length > 0">
  4 + <view class="item" v-for="(item, i) in list" :key="i">
  5 + <view class="info">
  6 + <view class="name">{{ item.studentName }}</view>
  7 + <view class="number">(学号:{{ item.studentNumber || "--" }})</view>
  8 + </view>
  9 + </view>
  10 + <c-loading :loading="loading"></c-loading>
  11 + </view>
  12 + <view v-else class="no_data">
  13 + <c-no-data></c-no-data>
  14 + </view>
  15 +
  16 + </view>
  17 +</template>
  18 +
  19 +<script>
  20 +import { mapGetters, mapState, mapActions } from "vuex";
  21 +import listMixin from "@/common/mixins/list-mixin.js";
  22 +
  23 +import { getRegistrationReviewApi, getPlanListApi } from "@/config/api.js";
  24 +
  25 +export default {
  26 + mixins: [listMixin],
  27 + data() {
  28 + return {
  29 + checkboxValue: [],
  30 + // 基本案列数据
  31 + checkboxList: [
  32 + {
  33 + name: "待审核",
  34 + disabled: false,
  35 + },
  36 + ],
  37 + keyword: "",
  38 + show: false,
  39 + list: [], //列表必须为key list的数组
  40 + search: {
  41 + //搜索对象必须为key search的对象
  42 + keySearch: "",
  43 + status: "wait,pass,reject",
  44 + },
  45 + planId: "",
  46 + switchValue: false,
  47 + curNow: 0,
  48 + sxsearch: "",
  49 + works: [],
  50 + workspage: 1,
  51 + workstotal: 0,
  52 + };
  53 + },
  54 +
  55 + // onLoad(option) {
  56 + // console.log(option);
  57 + // // this.$store.dispatch(`home/getProjectList`, {
  58 + // // pageSize: -1,
  59 + // // })
  60 +
  61 + // // this.search.keySearch = '';
  62 +
  63 + // this.worksloadData();
  64 +
  65 + // if (option && option.status) {
  66 + // // this.search.status = 'wait';
  67 + // // this.checkboxValue = ['待审核'];
  68 + // // this.switchValue = true;
  69 + // this.curNow = 0;
  70 + // }
  71 +
  72 + // // this.finished = false;
  73 + // // this.loading = "loadmore";
  74 + // // this.page = 0;
  75 + // // this.list = [];
  76 + // },
  77 +
  78 + onShow() {
  79 + this.finished = false;
  80 + this.loading = "loadmore";
  81 + this.page = 0;
  82 + this.list = [];
  83 + this._getList();
  84 + },
  85 +
  86 + computed: {
  87 + ...mapState("home", {
  88 + // 箭头函数可使代码更简练
  89 + projectList: "projectList",
  90 + }),
  91 + },
  92 +
  93 + methods: {
  94 + searchCli() {
  95 + this.$u.route(
  96 + "/pages/main/home/search/search?type=reg&searchkey=" + this.keyword
  97 + );
  98 + },
  99 +
  100 + sectionChange(index) {
  101 + this.curNow = index;
  102 +
  103 + this.finished = false;
  104 + this.loading = "loadmore";
  105 + this.page = 0;
  106 + this.list = [];
  107 + this._getList();
  108 + },
  109 +
  110 + handelDetail(record) {
  111 + this.$u.route({
  112 + url: `pages/main/home/registrationDetail/registrationDetail?&id=${record.id}`,
  113 + });
  114 + },
  115 +
  116 + timeFormat(timestamp, format = "yyyy-mm-dd") {
  117 + return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : "--";
  118 + },
  119 +
  120 + checkboxChange(n) {
  121 + console.log("change", n);
  122 +
  123 + this.search.status = n.length > 0 ? "wait" : "wait,pass,reject";
  124 +
  125 + this.switchValue = n.length > 0 ? true : false;
  126 +
  127 + this.finished = false;
  128 + this.loading = "loadmore";
  129 + this.page = 0;
  130 + this.list = [];
  131 + this._getList();
  132 + },
  133 +
  134 + handelSearch(value) {
  135 + this.finished = false;
  136 + this.loading = "loadmore";
  137 + this.page = 0;
  138 + this.list = [];
  139 + this._getList();
  140 + },
  141 +
  142 + open() {
  143 + // console.log('open');
  144 + },
  145 + close() {
  146 + this.show = false;
  147 + // console.log('close');
  148 + },
  149 + // scroll-view到底部加载更多
  150 + onreachBottom() {},
  151 + // 搜索
  152 + searchSubmit() {
  153 + // 调用混合搜索
  154 + this._searchData();
  155 + },
  156 + // 模拟后端分页
  157 + async getData(requestParams) {
  158 + const { search = {} } = requestParams;
  159 +
  160 + let params = {};
  161 + params.pageNumber = requestParams.page + 1;
  162 + params.pageSize = 5;
  163 +
  164 + // if (search.status) {
  165 + // params.status = search.status;
  166 + // }
  167 +
  168 + if (this.curNow == 0) {
  169 + params.status = "apply";
  170 + } else {
  171 + params.status = "wait,pass,reject";
  172 + }
  173 +
  174 + if (this.keyword) {
  175 + params.keySearch = this.keyword;
  176 + }
  177 +
  178 + if (this.planId) {
  179 + params.planId = this.planId;
  180 + }
  181 +
  182 + return await getRegistrationReviewApi(params);
  183 + },
  184 + // 数据请求(没错就是这么少的代码)
  185 + async _getList() {
  186 + if (this.page == 0) {
  187 + this.list = [];
  188 + }
  189 +
  190 + // 根据实际情况修改自己修改key
  191 + let result = await this.getData({
  192 + page: this.page, // 传入页码
  193 + size: this.size, // 传入每页条数
  194 + search: this.search, // 传入搜索的对象
  195 + });
  196 +
  197 + this.total = result.total;
  198 +
  199 + if (this.list.length == 0 && result.records.length == 0) {
  200 + this.shownoData = false;
  201 + } else {
  202 + this.shownoData = true;
  203 + }
  204 +
  205 + this.list = this.list.concat(result.records);
  206 +
  207 + // 判断是否全部加载完成
  208 + if (this.total == this.list.length) {
  209 + this.finished = true;
  210 + this.loading = "nomore";
  211 + } else {
  212 + this.loading = "loadmore";
  213 + }
  214 + },
  215 +
  216 + handelClick(values) {
  217 + console.log(values);
  218 + this.planId = values.id;
  219 + },
  220 +
  221 + handelChange(e) {
  222 + console.log(e);
  223 + this.checkboxValue = e ? ["待审核"] : [];
  224 + this.search.status = e ? "wait" : "wait,pass,reject";
  225 + },
  226 +
  227 + handelCancel() {
  228 + this.switchValue = false;
  229 + this.planId = "";
  230 + },
  231 +
  232 + hancelSubmit() {
  233 + this.finished = false;
  234 + this.loading = "loadmore";
  235 + this.page = 0;
  236 + this.list = [];
  237 + this._getList();
  238 +
  239 + this.show = false;
  240 + },
  241 +
  242 + workSearch() {
  243 + uni.hideKeyboard();
  244 + this.works = [];
  245 + this.worksloadData();
  246 + },
  247 +
  248 + lower() {
  249 + setTimeout(() => {
  250 + this.worksloadData(true);
  251 + }, 200);
  252 + },
  253 +
  254 + worksloadData(e) {
  255 + let params = {};
  256 + // this.loading = 'loading'
  257 +
  258 + if (e) {
  259 + if (this.total <= this.works.length) {
  260 + // this.loading = 'nomore'
  261 + return;
  262 + }
  263 + this.workspage++;
  264 + } else {
  265 + this.workspage = 1;
  266 + }
  267 + params["pageNumber"] = this.workspage;
  268 + if (this.sxsearch) {
  269 + params["keyWord"] = this.sxsearch;
  270 + }
  271 + getPlanListApi(params).then(async (res) => {
  272 + if (res) {
  273 + this.total = res.total;
  274 + // this.loading = 'loadmore'
  275 + this.works = this.works.concat(res.records);
  276 + }
  277 + });
  278 + },
  279 + popupSelItem(item) {
  280 + this.show = false;
  281 + this.planId = item.id;
  282 + this.finished = false;
  283 + this.loading = "loadmore";
  284 + this.page = 0;
  285 + this.list = [];
  286 + this._getList();
  287 + },
  288 + },
  289 +};
  290 +</script>
  291 +
  292 +<style lang="scss" scoped>
  293 +.registration_review {
  294 + width: 100%;
  295 + min-height: 100%;
  296 + height: auto;
  297 + background-color: #f7f7f7;
  298 +
  299 + .link_page {
  300 + background: rgba(244, 154, 35, 0.06);
  301 + display: flex;
  302 + align-items: center;
  303 + justify-content: space-between;
  304 + padding: 16rpx 26rpx;
  305 +
  306 + .left {
  307 + display: flex;
  308 + align-items: center;
  309 +
  310 + text {
  311 + font-size: 24rpx;
  312 + font-weight: 400;
  313 + color: #f49a23;
  314 + line-height: 32rpx;
  315 + margin-left: 16rpx;
  316 + }
  317 + }
  318 + }
  319 +
  320 + .search_box {
  321 + padding: 36rpx 30rpx 12rpx;
  322 + background-color: #ffffff;
  323 + display: flex;
  324 + flex-flow: row nowrap;
  325 + justify-content: space-between;
  326 +
  327 + .check {
  328 + padding: 20rpx 0 0 0;
  329 + }
  330 +
  331 + .search {
  332 + width: 468rpx;
  333 + }
  334 + }
  335 +
  336 + .list_box {
  337 + padding: 0 0 50rpx 0;
  338 + overflow: hidden;
  339 +
  340 + .item {
  341 + position: relative;
  342 + margin: 30rpx 30rpx 16rpx;
  343 + padding: 30rpx;
  344 + border-radius: 12rpx;
  345 + background-color: #ffffff;
  346 +
  347 + .bg_image {
  348 + position: absolute;
  349 + top: 0;
  350 + right: 0;
  351 +
  352 + text {
  353 + position: absolute;
  354 + top: 12rpx;
  355 + right: 30rpx;
  356 + font-size: 24rpx;
  357 + line-height: 24rpx;
  358 + color: #ffffff;
  359 + }
  360 + }
  361 +
  362 + .info {
  363 + display: flex;
  364 + flex-flow: row nowrap;
  365 + align-items: center;
  366 +
  367 + .avatar {
  368 + width: 78rpx;
  369 + height: 94rpx;
  370 + padding: 0 8rpx;
  371 + border-radius: 4rpx;
  372 + background-color: var(--primary-color);
  373 + font-size: 24rpx;
  374 + line-height: 94rpx;
  375 + color: #ffffff;
  376 + text-align: center;
  377 + }
  378 +
  379 + .name {
  380 + font-size: 32rpx;
  381 + line-height: 44rpx;
  382 + color: #202131;
  383 + font-weight: 500;
  384 + margin-right: 12rpx;
  385 + }
  386 +
  387 + .number {
  388 + font-size: 28rpx;
  389 + line-height: 32rpx;
  390 + color: #909097;
  391 + }
  392 + }
  393 +
  394 + .company {
  395 + display: flex;
  396 + flex-flow: row nowrap;
  397 + // margin: 0 0 30rpx 0;
  398 +
  399 + text {
  400 + font-size: 28rpx;
  401 + line-height: 32rpx;
  402 + color: #909097;
  403 + // margin: 0 0 0 16rpx;
  404 + }
  405 +
  406 + text:last-child {
  407 + color: #202131;
  408 + flex: 1;
  409 + }
  410 + }
  411 +
  412 + .time {
  413 + border-top: 2rpx solid #e2e2e8;
  414 + padding: 28rpx 0 0 0;
  415 +
  416 + text {
  417 + font-size: 28rpx;
  418 + line-height: 32rpx;
  419 + color: #909097;
  420 + }
  421 +
  422 + text:last-child {
  423 + color: #202131;
  424 + margin: 0 0 0 78rpx;
  425 + }
  426 + }
  427 + }
  428 + }
  429 +
  430 + .popup_search {
  431 + width: 640rpx;
  432 + position: relative;
  433 +
  434 + .content {
  435 + padding: 0 40rpx;
  436 +
  437 + .title {
  438 + padding: 24rpx 0;
  439 + font-size: 28rpx;
  440 + line-height: 36rpx;
  441 + color: #202131;
  442 + }
  443 +
  444 + .scroll {
  445 + max-height: 60vh;
  446 +
  447 + .item {
  448 + view {
  449 + display: flex;
  450 + flex-flow: row wrap;
  451 + align-items: center;
  452 + width: 500rpx;
  453 + height: 74rpx;
  454 + border-radius: 4rpx;
  455 + border: 2rpx solid #c1c1c9;
  456 + margin: 0 10rpx 20rpx;
  457 + font-size: 24rpx;
  458 + line-height: 32rpx;
  459 + color: #c0c0c9;
  460 + padding: 16rpx 20rpx;
  461 + }
  462 +
  463 + .selectItem {
  464 + background-color: var(--primary-color);
  465 + color: #ffffff;
  466 + border: 2rpx solid var(--primary-color);
  467 + }
  468 + }
  469 + }
  470 +
  471 + .switch {
  472 + display: flex;
  473 + flex-flow: row nowrap;
  474 + justify-content: space-between;
  475 + padding: 40rpx 0 0 0;
  476 +
  477 + text {
  478 + font-size: 28rpx;
  479 + line-height: 36rpx;
  480 + color: #202131;
  481 + }
  482 + }
  483 + }
  484 +
  485 + .footer {
  486 + width: 560rpx;
  487 + height: 96rpx;
  488 + padding: 28rpx 40rpx;
  489 + background: #ffffff;
  490 + position: fixed;
  491 + bottom: 0;
  492 + right: 0;
  493 + z-index: 99;
  494 + border-top: 2rpx solid #e2e2e8;
  495 +
  496 + view {
  497 + display: inline-block;
  498 + }
  499 +
  500 + .left_btn {
  501 + width: 194rpx;
  502 + margin: 0 20rpx 0 0;
  503 + }
  504 +
  505 + .right_btn {
  506 + width: 346rpx;
  507 + }
  508 + }
  509 + }
  510 +
  511 + .popup {
  512 + height: 500px;
  513 + padding: 19px 16px;
  514 +
  515 + .title {
  516 + font-size: 18px;
  517 + font-family: PingFangSC-Medium, PingFang SC;
  518 + font-weight: 500;
  519 + color: #000000;
  520 + }
  521 +
  522 + .close {
  523 + width: 22px;
  524 + height: 22px;
  525 + }
  526 +
  527 + .item_box {
  528 + border-radius: 4px;
  529 + margin: 0 0 48rpx;
  530 +
  531 + .item_title {
  532 + height: 20px;
  533 + font-size: 14px;
  534 + font-family: PingFangSC-Regular, PingFang SC;
  535 + font-weight: 400;
  536 + color: rgba(0, 0, 0, 0.65);
  537 + line-height: 20px;
  538 + }
  539 + }
  540 +
  541 + .no_data {
  542 + width: 100%;
  543 + margin-top: 310rpx;
  544 +
  545 + .text_black_28 {
  546 + font-size: 14px;
  547 + font-family: PingFangSC-Light, PingFang SC;
  548 + font-weight: 300;
  549 + color: rgba(0, 0, 0, 0.65);
  550 + text-align: center;
  551 + }
  552 + }
  553 + }
  554 +}
  555 +</style>
1 <template> 1 <template>
2 - <view class="registration_review" :style="vuex_theme">  
3 -  
4 - <view class="search_box">  
5 - <view style="width: 148px;">  
6 - <u-subsection :list="['未签到','全部']" :current="curNow" :fontSize="26" :activeColor="'#000'"  
7 - @change="sectionChange"></u-subsection>  
8 - </view>  
9 - <view style="display: flex; justify-content: space-between; align-items: center;">  
10 - <u-icon slot="icon" size="40" :name="'/static/img/home/dateIcon.png'" @click="showTime = true"></u-icon>  
11 - <view style="width: 16px;"></view>  
12 - <u-icon slot="icon" size="40" :name="'/static/img/home/search.png'" @click="searchCli"></u-icon>  
13 - <view style="width: 16px;"></view>  
14 - <u-icon slot="icon" size="40" :name="'/static/img/home/selectIcon.png'" @click="show = true"></u-icon>  
15 - </view>  
16 - </view>  
17 -  
18 - <u-calendar :minDate="minDate" :maxDate="maxDate" :monthNum="25" :show="showTime" :defaultDate="defaultDateMultiple"  
19 - @close="showTime = false" :showSubtitle="false" color="var(--primary-color)" @confirm="confirm">  
20 - </u-calendar>  
21 -  
22 - <view class="list_box" v-if="list.length > 0">  
23 - <view class="item" v-for="(item, i) in list" :key="i">  
24 -  
25 - <view class="bg_image" v-if="item.waitAttendance == 'not_attendance'">  
26 - <u-image :src="vuex_baseImgUrl && `${vuex_baseImgUrl}labelBgGreen.png`" width="142rpx" height="48rpx"></u-image>  
27 - <text>未签到</text>  
28 - </view>  
29 -  
30 - <view class="bg_image" v-else>  
31 - <u-image src="/static/img/home/labelBgGrey.png" width="142rpx" height="48rpx"></u-image>  
32 - <text>已签到</text>  
33 - </view>  
34 -  
35 - <view class="info">  
36 - <view class="avatar">{{getNameLastTwo(item.studentName)}}</view>  
37 - <view class="name">{{overflowHide(item.studentName)}}</view>  
38 - <view class="number">{{item.studentNumber}}</view>  
39 - </view>  
40 - <view class="company">  
41 - <text>实习计划</text>  
42 - <text>{{item.planName || '--'}}</text>  
43 - </view>  
44 - <view class="company">  
45 - <text>班级</text>  
46 - <text>{{item.className || '--'}}</text>  
47 - </view>  
48 - <view class="company position">  
49 - <text>手机号</text>  
50 - <text>{{item.studentPhone|| '--'}}</text>  
51 - </view>  
52 -  
53 - <view class="time">  
54 - <text>签到时间</text>  
55 - <text>{{timeFormat(item.signIn, 'yyyy-mm-dd hh:MM')}}</text>  
56 - </view>  
57 -  
58 - </view>  
59 - <c-loading :loading="loading"></c-loading>  
60 - </view>  
61 - <view v-else class="no_data">  
62 - <c-no-data></c-no-data>  
63 - </view>  
64 -  
65 - <u-popup :show="show" mode="bottom" @close="close" :round="22">  
66 - <view class="popup">  
67 - <view style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 28px;">  
68 - <view class="title">  
69 - 计划筛选  
70 - </view>  
71 - <image class="close" src="/static/img/home/closepop.png" @click="close" mode=""></image>  
72 - </view>  
73 - <view class="search">  
74 - <u-search placeholder="请输入计划关键词搜索" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"  
75 - bgColor="#F4F4F4" :showAction="true" shape="round" v-model="sxsearch" @custom="workSearch()" @search="workSearch()">  
76 - </u-search>  
77 - </view>  
78 - <scroll-view v-if="works.length>0" scroll-y="true" style="height: 80%; margin-top: 40rpx;"  
79 - @scrolltolower="lower()">  
80 - <view class="item_box" v-for="(item,index) in works" :key="index" @click="popupSelItem(item)">  
81 - <view style="display: flex; align-items: center; justify-content: space-between;">  
82 - <view class="item_title">  
83 - {{item.name}}  
84 - </view>  
85 - <image v-if="item.id == planId" style="width: 20px; height: 20px;"  
86 - :src="vuex_baseImgUrl && `${vuex_baseImgUrl}popselect.png`" mode=""></image>  
87 - </view>  
88 - </view>  
89 - </scroll-view>  
90 - <view v-else class="no_data" @click="jumpVerified">  
91 - <view class="text_black_28">  
92 - 暂未搜索到该计划  
93 - </view>  
94 - </view>  
95 - </view>  
96 - </u-popup>  
97 -  
98 - <!-- <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false"> 2 + <view class="registration_review" :style="vuex_theme">
  3 + <view class="search_box">
  4 + <view style="width: 148px">
  5 + <u-subsection
  6 + :list="['未签到', '全部']"
  7 + :current="curNow"
  8 + :fontSize="26"
  9 + :activeColor="'#000'"
  10 + @change="sectionChange"
  11 + ></u-subsection>
  12 + </view>
  13 + <view
  14 + style="
  15 + display: flex;
  16 + justify-content: space-between;
  17 + align-items: center;
  18 + "
  19 + >
  20 + <u-icon
  21 + slot="icon"
  22 + size="40"
  23 + :name="'/static/img/home/dateIcon.png'"
  24 + @click="showTime = true"
  25 + ></u-icon>
  26 + <view style="width: 16px"></view>
  27 + <u-icon
  28 + slot="icon"
  29 + size="40"
  30 + :name="'/static/img/home/search.png'"
  31 + @click="searchCli"
  32 + ></u-icon>
  33 + <view style="width: 16px"></view>
  34 + <u-icon
  35 + slot="icon"
  36 + size="40"
  37 + :name="'/static/img/home/selectIcon.png'"
  38 + @click="show = true"
  39 + ></u-icon>
  40 + </view>
  41 + </view>
  42 +
  43 + <u-calendar
  44 + :minDate="minDate"
  45 + :maxDate="maxDate"
  46 + :monthNum="25"
  47 + :show="showTime"
  48 + :defaultDate="defaultDateMultiple"
  49 + @close="showTime = false"
  50 + :showSubtitle="false"
  51 + color="var(--primary-color)"
  52 + @confirm="confirm"
  53 + >
  54 + </u-calendar>
  55 +
  56 + <view class="list_box" v-if="list.length > 0">
  57 + <view class="item" v-for="(item, i) in list" :key="i">
  58 + <view class="bg_image" v-if="item.waitAttendance == 'not_attendance'">
  59 + <u-image
  60 + src="/static/img/home/labelBgGrey.png"
  61 + width="142rpx"
  62 + height="48rpx"
  63 + ></u-image>
  64 + <text>未签到</text>
  65 + </view>
  66 +
  67 + <view class="bg_image" v-else>
  68 + <u-image
  69 + :src="vuex_baseImgUrl && `${vuex_baseImgUrl}labelBgGreen.png`"
  70 + width="142rpx"
  71 + height="48rpx"
  72 + ></u-image>
  73 + <text>已签到</text>
  74 + </view>
  75 +
  76 + <view class="info">
  77 + <!-- <view class="avatar">{{getNameLastTwo(item.studentName)}}</view> -->
  78 + <view class="name">{{ overflowHide(item.studentName) }}</view>
  79 + <view class="number">(学号:{{ item.studentNumber || "--" }})</view>
  80 + </view>
  81 + <view v-if="item.signIn" style="margin-top: 30rpx;">
  82 + <view class="company">
  83 + <text>签到时间:</text>
  84 + <text>{{
  85 + item.signIn ? timeFormat(item.signIn, "yyyy-mm-dd hh:MM") : "--"
  86 + }}</text>
  87 + </view>
  88 + <view class="company" style="margin-top: 12rpx;">
  89 + <text>签到地点:</text>
  90 + <text>{{ item.location || "--" }}</text>
  91 + </view>
  92 + </view>
  93 + </view>
  94 + <c-loading :loading="loading"></c-loading>
  95 + </view>
  96 + <view v-else class="no_data">
  97 + <c-no-data></c-no-data>
  98 + </view>
  99 +
  100 + <u-popup :show="show" mode="bottom" @close="close" :round="22">
  101 + <view class="popup">
  102 + <view
  103 + style="
  104 + display: flex;
  105 + justify-content: space-between;
  106 + align-items: center;
  107 + margin-bottom: 28px;
  108 + "
  109 + >
  110 + <view class="title"> 计划筛选 </view>
  111 + <image
  112 + class="close"
  113 + src="/static/img/home/closepop.png"
  114 + @click="close"
  115 + mode=""
  116 + ></image>
  117 + </view>
  118 + <view class="search">
  119 + <u-search
  120 + placeholder="请输入计划关键词搜索"
  121 + placeholderColor="#C1C1C9"
  122 + searchIconSize="36"
  123 + height="64rpx"
  124 + bgColor="#F4F4F4"
  125 + :showAction="true"
  126 + shape="round"
  127 + v-model="sxsearch"
  128 + @custom="workSearch()"
  129 + @search="workSearch()"
  130 + >
  131 + </u-search>
  132 + </view>
  133 + <scroll-view
  134 + v-if="works.length > 0"
  135 + scroll-y="true"
  136 + style="height: 80%; margin-top: 40rpx"
  137 + @scrolltolower="lower()"
  138 + >
  139 + <view
  140 + class="item_box"
  141 + v-for="(item, index) in works"
  142 + :key="index"
  143 + @click="popupSelItem(item)"
  144 + >
  145 + <view
  146 + style="
  147 + display: flex;
  148 + align-items: center;
  149 + justify-content: space-between;
  150 + "
  151 + >
  152 + <view class="item_title">
  153 + {{ item.name }}
  154 + </view>
  155 + <image
  156 + v-if="item.id == planId"
  157 + style="width: 20px; height: 20px"
  158 + :src="vuex_baseImgUrl && `${vuex_baseImgUrl}popselect.png`"
  159 + mode=""
  160 + ></image>
  161 + </view>
  162 + </view>
  163 + </scroll-view>
  164 + <view v-else class="no_data" @click="jumpVerified">
  165 + <view class="text_black_28"> 暂未搜索到该计划 </view>
  166 + </view>
  167 + </view>
  168 + </u-popup>
  169 +
  170 + <!-- <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false">
99 <view class="popup_search"> 171 <view class="popup_search">
100 <view class="content"> 172 <view class="content">
101 <view class="title">按计划筛选</view> 173 <view class="title">按计划筛选</view>
@@ -129,631 +201,600 @@ @@ -129,631 +201,600 @@
129 201
130 </view> 202 </view>
131 </u-popup> --> 203 </u-popup> -->
132 -  
133 - </view> 204 + </view>
134 </template> 205 </template>
135 206
136 <script> 207 <script>
137 - import {  
138 - mapGetters,  
139 - mapState,  
140 - mapActions  
141 - } from 'vuex'  
142 - import listMixin from "@/common/mixins/list-mixin.js";  
143 - import miment from 'miment'  
144 -  
145 - import {  
146 - getStudentSignInListApi,  
147 - getPlanListApi,  
148 - } from '@/config/api.js';  
149 -  
150 - export default {  
151 - mixins: [listMixin],  
152 - data() {  
153 -  
154 - const d = new Date();  
155 - const year = d.getFullYear();  
156 - let month = d.getMonth() + 1;  
157 - month = month < 10 ? `0${month}` : month;  
158 - const date = d.getDate();  
159 -  
160 - return {  
161 - checkboxValue: [],  
162 - // 基本案列数据  
163 - checkboxList: [{  
164 - name: '未签到',  
165 - disabled: false  
166 - }],  
167 - keyword: '',  
168 - show: false,  
169 - search: {  
170 - //搜索对象必须为key search的对象  
171 - keySearch: "",  
172 - waitAttendance: '',  
173 - time: '',  
174 -  
175 - },  
176 - showTime: false,  
177 - minDate: `${year-2}-${month}-${date+1}`,  
178 - maxDate: `${year}-${month}-${date+1}`,  
179 - timeValue: `${year}-${month}-${date}`,  
180 - defaultDateMultiple: [`${year}-${month}-${date}`],  
181 - list: [], //列表必须为key list的数组  
182 - planId: '',  
183 - switchValue: false,  
184 -  
185 - curNow: 1,  
186 - sxsearch: '',  
187 - works: [],  
188 - workspage: 1,  
189 - workstotal: 0,  
190 - }  
191 - },  
192 -  
193 - onLoad(option) {  
194 - // this.$store.dispatch(`home/getProjectList`, {  
195 - // pageSize: -1,  
196 - // })  
197 -  
198 - // this.search.keySearch = '';  
199 -  
200 - // this.finished = false;  
201 - // this.loading = "loadmore";  
202 - // this.page = 0;  
203 - // this.list = [];  
204 -  
205 - this.worksloadData()  
206 -  
207 - if (option && option.status) {  
208 - // this.search.status = 'wait';  
209 - this.curNow = 0;  
210 - // this.checkboxValue = ['待处理'];  
211 - // this.switchValue = true;  
212 - }  
213 -  
214 -  
215 - },  
216 -  
217 - onShow() {  
218 - this.finished = false;  
219 - this.loading = "loadmore";  
220 - this.page = 0;  
221 - this.list = [];  
222 - this._getList();  
223 - },  
224 -  
225 - computed: {  
226 - ...mapState('home', {  
227 - // 箭头函数可使代码更简练  
228 - projectList: 'projectList',  
229 -  
230 - }),  
231 -  
232 - },  
233 -  
234 - methods: {  
235 -  
236 - searchCli() {  
237 - this.$u.route('/pages/main/home/search/search?type=student&searchkey=' + this.keyword);  
238 - },  
239 -  
240 - sectionChange(index) {  
241 - this.curNow = index;  
242 -  
243 - this.finished = false;  
244 - this.loading = "loadmore";  
245 - this.page = 0;  
246 - this.list = [];  
247 - this._getList();  
248 - },  
249 -  
250 -  
251 - getNameLastTwo(value) {  
252 - if (value && value.length > 3) {  
253 - return value.substring(value.length - 3)  
254 - } else {  
255 - return value;  
256 - }  
257 - },  
258 -  
259 - overflowHide(value, num = 4) {  
260 - if (value && value.length > num) {  
261 - return `${value.slice(0, num)}...`  
262 - } else {  
263 - return value;  
264 - }  
265 - },  
266 -  
267 - confirm(e) {  
268 - this.timeValue = e[0];  
269 - this.time = miment(e[0]).valueOf();  
270 -  
271 - this.finished = false;  
272 - this.loading = "loadmore";  
273 - this.page = 0;  
274 - this.list = [];  
275 - this._getList();  
276 -  
277 - this.showTime = false;  
278 - },  
279 -  
280 - handelDetail(record) {  
281 - this.$u.route({  
282 - url: `pages/main/home/registrationDetail/registrationDetail?&id=${record.id}`  
283 - })  
284 - },  
285 -  
286 - timeFormat(timestamp, format = 'yyyy-mm-dd') {  
287 - return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'  
288 - },  
289 -  
290 - checkboxChange(n) {  
291 - console.log('change', n);  
292 -  
293 - this.search.waitAttendance = n.length > 0 ? 'not_attendance' : '';  
294 -  
295 - this.switchValue = n.length > 0 ? true : false;  
296 -  
297 - this.finished = false;  
298 - this.loading = "loadmore";  
299 - this.page = 0;  
300 - this.list = [];  
301 - this._getList();  
302 - },  
303 -  
304 - handelSearch(value) {  
305 - this.finished = false;  
306 - this.loading = "loadmore";  
307 - this.page = 0;  
308 - this.list = [];  
309 - this._getList();  
310 - },  
311 -  
312 - open() {  
313 - // console.log('open');  
314 - },  
315 - close() {  
316 - this.show = false  
317 - // console.log('close');  
318 - },  
319 - // scroll-view到底部加载更多  
320 - onreachBottom() {},  
321 - // 搜索  
322 - searchSubmit() {  
323 - // 调用混合搜索  
324 - this._searchData();  
325 - },  
326 - // 模拟后端分页  
327 - async getData(requestParams) {  
328 - const {  
329 - search = {}  
330 - } = requestParams;  
331 -  
332 - let params = {};  
333 - params.pageNumber = requestParams.page + 1;  
334 - params.pageSize = 5;  
335 -  
336 - // if (search.waitAttendance) {  
337 - // params.waitAttendance = search.waitAttendance;  
338 - // }  
339 -  
340 - if (this.curNow == 0) {  
341 - params.waitAttendance = 'not_attendance';  
342 - }  
343 -  
344 - if (this.keyword) {  
345 - params.keySearch = this.keyword  
346 - }  
347 -  
348 - if (this.planId) {  
349 - params.planId = this.planId  
350 - }  
351 -  
352 - if (this.time) {  
353 - params.time = this.time  
354 - }  
355 -  
356 - return await getStudentSignInListApi(params);  
357 - },  
358 - // 数据请求(没错就是这么少的代码)  
359 - async _getList() {  
360 - if (this.page == 0) {  
361 - this.list = [];  
362 - }  
363 -  
364 - // 根据实际情况修改自己修改key  
365 - let result = await this.getData({  
366 - page: this.page, // 传入页码  
367 - size: this.size, // 传入每页条数  
368 - search: this.search, // 传入搜索的对象  
369 - });  
370 -  
371 - this.total = result.total;  
372 -  
373 - if (this.list.length == 0 && result.records.length == 0) {  
374 - this.shownoData = false  
375 - } else {  
376 - this.shownoData = true  
377 - }  
378 -  
379 - this.list = this.list.concat(result.records)  
380 -  
381 - // 判断是否全部加载完成  
382 - if (this.total == this.list.length) {  
383 - this.finished = true;  
384 - this.loading = 'nomore';  
385 - } else {  
386 - this.loading = 'loadmore';  
387 - }  
388 - },  
389 -  
390 - handelClick(values) {  
391 - console.log(values);  
392 - this.planId = values.id;  
393 - },  
394 -  
395 - handelChange(e) {  
396 - console.log(e)  
397 - this.checkboxValue = e ? ['未签到'] : [];  
398 - this.search.waitAttendance = e ? 'not_attendance' : '';  
399 - },  
400 -  
401 - handelCancel() {  
402 - this.switchValue = false;  
403 - this.planId = '';  
404 - },  
405 -  
406 - hancelSubmit() {  
407 - this.finished = false;  
408 - this.loading = "loadmore";  
409 - this.page = 0;  
410 - this.list = [];  
411 - this._getList();  
412 -  
413 - this.show = false;  
414 - },  
415 -  
416 - workSearch() {  
417 - uni.hideKeyboard();  
418 - this.works = []  
419 - this.worksloadData()  
420 - },  
421 -  
422 - lower() {  
423 - setTimeout(() => {  
424 - this.worksloadData(true);  
425 - }, 200)  
426 - },  
427 -  
428 - worksloadData(e) {  
429 - let params = {}  
430 - // this.loading = 'loading'  
431 -  
432 - if (e) {  
433 - if (this.total <= this.works.length) {  
434 - // this.loading = 'nomore'  
435 - return  
436 - }  
437 - this.workspage++  
438 - } else {  
439 - this.workspage = 1  
440 - }  
441 - params['pageNumber'] = this.workspage  
442 - if (this.sxsearch) {  
443 - params['keyWord'] = this.sxsearch  
444 - }  
445 - getPlanListApi(params).then(async res => {  
446 - if (res) {  
447 - this.total = res.total  
448 - // this.loading = 'loadmore'  
449 - this.works = this.works.concat(res.records)  
450 - }  
451 - })  
452 - },  
453 - popupSelItem(item) {  
454 - this.show = false  
455 - this.planId = item.id;  
456 - this.finished = false;  
457 - this.loading = "loadmore";  
458 - this.page = 0;  
459 - this.list = [];  
460 - this._getList();  
461 - },  
462 -  
463 - }  
464 - } 208 +import { mapGetters, mapState, mapActions } from "vuex";
  209 +import listMixin from "@/common/mixins/list-mixin.js";
  210 +import miment from "miment";
  211 +
  212 +import { getStudentSignInListApi, getPlanListApi } from "@/config/api.js";
  213 +
  214 +export default {
  215 + mixins: [listMixin],
  216 + data() {
  217 + const d = new Date();
  218 + const year = d.getFullYear();
  219 + let month = d.getMonth() + 1;
  220 + month = month < 10 ? `0${month}` : month;
  221 + const date = d.getDate();
  222 +
  223 + return {
  224 + checkboxValue: [],
  225 + // 基本案列数据
  226 + checkboxList: [
  227 + {
  228 + name: "未签到",
  229 + disabled: false,
  230 + },
  231 + ],
  232 + keyword: "",
  233 + show: false,
  234 + search: {
  235 + //搜索对象必须为key search的对象
  236 + keySearch: "",
  237 + waitAttendance: "",
  238 + time: "",
  239 + },
  240 + showTime: false,
  241 + minDate: `${year - 2}-${month}-${date + 1}`,
  242 + maxDate: `${year}-${month}-${date + 1}`,
  243 + timeValue: `${year}-${month}-${date}`,
  244 + defaultDateMultiple: [`${year}-${month}-${date}`],
  245 + list: [], //列表必须为key list的数组
  246 + planId: "",
  247 + switchValue: false,
  248 +
  249 + curNow: 1,
  250 + sxsearch: "",
  251 + works: [],
  252 + workspage: 1,
  253 + workstotal: 0,
  254 + };
  255 + },
  256 +
  257 + onLoad(option) {
  258 + // this.$store.dispatch(`home/getProjectList`, {
  259 + // pageSize: -1,
  260 + // })
  261 +
  262 + // this.search.keySearch = '';
  263 +
  264 + // this.finished = false;
  265 + // this.loading = "loadmore";
  266 + // this.page = 0;
  267 + // this.list = [];
  268 +
  269 + this.worksloadData();
  270 +
  271 + if (option && option.status) {
  272 + // this.search.status = 'wait';
  273 + this.curNow = 0;
  274 + // this.checkboxValue = ['待处理'];
  275 + // this.switchValue = true;
  276 + }
  277 + },
  278 +
  279 + onShow() {
  280 + this.finished = false;
  281 + this.loading = "loadmore";
  282 + this.page = 0;
  283 + this.list = [];
  284 + this._getList();
  285 + },
  286 +
  287 + computed: {
  288 + ...mapState("home", {
  289 + // 箭头函数可使代码更简练
  290 + projectList: "projectList",
  291 + }),
  292 + },
  293 +
  294 + methods: {
  295 + searchCli() {
  296 + this.$u.route(
  297 + "/pages/main/home/search/search?type=student&searchkey=" + this.keyword
  298 + );
  299 + },
  300 +
  301 + sectionChange(index) {
  302 + this.curNow = index;
  303 +
  304 + this.finished = false;
  305 + this.loading = "loadmore";
  306 + this.page = 0;
  307 + this.list = [];
  308 + this._getList();
  309 + },
  310 +
  311 + getNameLastTwo(value) {
  312 + if (value && value.length > 3) {
  313 + return value.substring(value.length - 3);
  314 + } else {
  315 + return value;
  316 + }
  317 + },
  318 +
  319 + overflowHide(value, num = 4) {
  320 + if (value && value.length > num) {
  321 + return `${value.slice(0, num)}...`;
  322 + } else {
  323 + return value;
  324 + }
  325 + },
  326 +
  327 + confirm(e) {
  328 + this.timeValue = e[0];
  329 + this.time = miment(e[0]).valueOf();
  330 +
  331 + this.finished = false;
  332 + this.loading = "loadmore";
  333 + this.page = 0;
  334 + this.list = [];
  335 + this._getList();
  336 +
  337 + this.showTime = false;
  338 + },
  339 +
  340 + handelDetail(record) {
  341 + this.$u.route({
  342 + url: `pages/main/home/registrationDetail/registrationDetail?&id=${record.id}`,
  343 + });
  344 + },
  345 +
  346 + timeFormat(timestamp, format = "yyyy-mm-dd") {
  347 + return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : "--";
  348 + },
  349 +
  350 + checkboxChange(n) {
  351 + console.log("change", n);
  352 +
  353 + this.search.waitAttendance = n.length > 0 ? "not_attendance" : "";
  354 +
  355 + this.switchValue = n.length > 0 ? true : false;
  356 +
  357 + this.finished = false;
  358 + this.loading = "loadmore";
  359 + this.page = 0;
  360 + this.list = [];
  361 + this._getList();
  362 + },
  363 +
  364 + handelSearch(value) {
  365 + this.finished = false;
  366 + this.loading = "loadmore";
  367 + this.page = 0;
  368 + this.list = [];
  369 + this._getList();
  370 + },
  371 +
  372 + open() {
  373 + // console.log('open');
  374 + },
  375 + close() {
  376 + this.show = false;
  377 + // console.log('close');
  378 + },
  379 + // scroll-view到底部加载更多
  380 + onreachBottom() {},
  381 + // 搜索
  382 + searchSubmit() {
  383 + // 调用混合搜索
  384 + this._searchData();
  385 + },
  386 + // 模拟后端分页
  387 + async getData(requestParams) {
  388 + const { search = {} } = requestParams;
  389 +
  390 + let params = {};
  391 + params.pageNumber = requestParams.page + 1;
  392 + params.pageSize = 5;
  393 +
  394 + // if (search.waitAttendance) {
  395 + // params.waitAttendance = search.waitAttendance;
  396 + // }
  397 +
  398 + if (this.curNow == 0) {
  399 + params.waitAttendance = "not_attendance";
  400 + }
  401 +
  402 + if (this.keyword) {
  403 + params.keySearch = this.keyword;
  404 + }
  405 +
  406 + if (this.planId) {
  407 + params.planId = this.planId;
  408 + }
  409 +
  410 + if (this.time) {
  411 + params.time = this.time;
  412 + }
  413 +
  414 + return await getStudentSignInListApi(params);
  415 + },
  416 + // 数据请求(没错就是这么少的代码)
  417 + async _getList() {
  418 + if (this.page == 0) {
  419 + this.list = [];
  420 + }
  421 +
  422 + // 根据实际情况修改自己修改key
  423 + let result = await this.getData({
  424 + page: this.page, // 传入页码
  425 + size: this.size, // 传入每页条数
  426 + search: this.search, // 传入搜索的对象
  427 + });
  428 +
  429 + this.total = result.total;
  430 +
  431 + if (this.list.length == 0 && result.records.length == 0) {
  432 + this.shownoData = false;
  433 + } else {
  434 + this.shownoData = true;
  435 + }
  436 +
  437 + this.list = this.list.concat(result.records);
  438 +
  439 + // 判断是否全部加载完成
  440 + if (this.total == this.list.length) {
  441 + this.finished = true;
  442 + this.loading = "nomore";
  443 + } else {
  444 + this.loading = "loadmore";
  445 + }
  446 + },
  447 +
  448 + handelClick(values) {
  449 + console.log(values);
  450 + this.planId = values.id;
  451 + },
  452 +
  453 + handelChange(e) {
  454 + console.log(e);
  455 + this.checkboxValue = e ? ["未签到"] : [];
  456 + this.search.waitAttendance = e ? "not_attendance" : "";
  457 + },
  458 +
  459 + handelCancel() {
  460 + this.switchValue = false;
  461 + this.planId = "";
  462 + },
  463 +
  464 + hancelSubmit() {
  465 + this.finished = false;
  466 + this.loading = "loadmore";
  467 + this.page = 0;
  468 + this.list = [];
  469 + this._getList();
  470 +
  471 + this.show = false;
  472 + },
  473 +
  474 + workSearch() {
  475 + uni.hideKeyboard();
  476 + this.works = [];
  477 + this.worksloadData();
  478 + },
  479 +
  480 + lower() {
  481 + setTimeout(() => {
  482 + this.worksloadData(true);
  483 + }, 200);
  484 + },
  485 +
  486 + worksloadData(e) {
  487 + let params = {};
  488 + // this.loading = 'loading'
  489 +
  490 + if (e) {
  491 + if (this.total <= this.works.length) {
  492 + // this.loading = 'nomore'
  493 + return;
  494 + }
  495 + this.workspage++;
  496 + } else {
  497 + this.workspage = 1;
  498 + }
  499 + params["pageNumber"] = this.workspage;
  500 + if (this.sxsearch) {
  501 + params["keyWord"] = this.sxsearch;
  502 + }
  503 + getPlanListApi(params).then(async (res) => {
  504 + if (res) {
  505 + this.total = res.total;
  506 + // this.loading = 'loadmore'
  507 + this.works = this.works.concat(res.records);
  508 + }
  509 + });
  510 + },
  511 + popupSelItem(item) {
  512 + this.show = false;
  513 + this.planId = item.id;
  514 + this.finished = false;
  515 + this.loading = "loadmore";
  516 + this.page = 0;
  517 + this.list = [];
  518 + this._getList();
  519 + },
  520 + },
  521 +};
465 </script> 522 </script>
466 523
467 <style lang="scss" scoped> 524 <style lang="scss" scoped>
468 - .registration_review {  
469 - width: 100%;  
470 - min-height: 100%;  
471 - height: auto;  
472 - background-color: #F7F7F7;  
473 -  
474 - // .search_box {  
475 - // padding: 36rpx 30rpx 0;  
476 - // background-color: #FFFFFF;  
477 -  
478 - // .top {  
479 - // display: flex;  
480 - // flex-flow: row nowrap;  
481 - // justify-content: space-between;  
482 -  
483 - // .check {  
484 - // padding: 20rpx 0 0 0;  
485 - // }  
486 -  
487 - // .search {  
488 - // width: 410rpx;  
489 - // }  
490 -  
491 - // .icon {  
492 - // display: flex;  
493 - // flex-flow: row nowrap;  
494 - // }  
495 - // }  
496 -  
497 - // .bottom {  
498 - // .time {  
499 - // padding: 30rpx 0 30rpx 40rpx;  
500 - // }  
501 - // }  
502 -  
503 -  
504 - // }  
505 -  
506 - .search_box {  
507 - padding: 36rpx 30rpx 12rpx;  
508 - background-color: #FFFFFF;  
509 - display: flex;  
510 - flex-flow: row nowrap;  
511 - justify-content: space-between;  
512 -  
513 - .check {  
514 - padding: 20rpx 0 0 0;  
515 - }  
516 -  
517 - .search {  
518 - width: 468rpx;  
519 - }  
520 - }  
521 -  
522 - .list_box {  
523 - padding: 0 0 50rpx 0;  
524 -  
525 - .item {  
526 - position: relative;  
527 - width: 630rpx;  
528 - margin: 30rpx auto;  
529 - padding: 30rpx;  
530 - border-radius: 12rpx;  
531 - background-color: #FFFFFF;  
532 -  
533 - .bg_image {  
534 - position: absolute;  
535 - top: 0;  
536 - right: 0;  
537 -  
538 - text {  
539 - position: absolute;  
540 - top: 12rpx;  
541 - right: 30rpx;  
542 - font-size: 24rpx;  
543 - line-height: 24rpx;  
544 - color: #FFFFFF;  
545 - }  
546 - }  
547 -  
548 - .info {  
549 - display: flex;  
550 - flex-flow: row nowrap;  
551 - align-items: center;  
552 - margin: 0 0 30rpx 0;  
553 -  
554 - .avatar {  
555 - width: 78rpx;  
556 - height: 94rpx;  
557 - padding: 0 8rpx;  
558 - border-radius: 4rpx;  
559 - background-color: var(--primary-color);  
560 - font-size: 24rpx;  
561 - line-height: 94rpx;  
562 - color: #FFFFFF;  
563 - text-align: center;  
564 - }  
565 -  
566 - .name {  
567 - font-size: 32rpx;  
568 - line-height: 44rpx;  
569 - color: #202131;  
570 - font-weight: 500;  
571 - margin: 0 20rpx;  
572 - }  
573 -  
574 - .number {  
575 - font-size: 28rpx;  
576 - line-height: 32rpx;  
577 - color: #909097;  
578 - }  
579 - }  
580 -  
581 - .company {  
582 - display: flex;  
583 - flex-flow: row nowrap;  
584 - margin: 0 0 30rpx 0;  
585 -  
586 - text {  
587 - width: 130rpx;  
588 - font-size: 28rpx;  
589 - line-height: 32rpx;  
590 - color: #909097;  
591 - margin: 0 0 0 16rpx;  
592 - }  
593 -  
594 - text:first-child {  
595 - text-align: justify;  
596 - text-align-last: justify;  
597 - }  
598 -  
599 - text:last-child {  
600 - width: 400rpx;  
601 - color: #202131;  
602 - margin: 0 0 0 30rpx;  
603 - }  
604 - }  
605 -  
606 - .time {  
607 - border-top: 2rpx solid #E2E2E8;  
608 - padding: 28rpx 0 0 0;  
609 -  
610 - text {  
611 - font-size: 28rpx;  
612 - line-height: 32rpx;  
613 - color: #909097;  
614 - }  
615 -  
616 - text:last-child {  
617 - color: #202131;  
618 - margin: 0 0 0 78rpx;  
619 - }  
620 - }  
621 - }  
622 - }  
623 -  
624 - .popup_search {  
625 - width: 640rpx;  
626 - position: relative;  
627 -  
628 - .content {  
629 - padding: 0 40rpx;  
630 -  
631 - .title {  
632 - padding: 24rpx 0;  
633 - font-size: 28rpx;  
634 - line-height: 36rpx;  
635 - color: #202131;  
636 - }  
637 -  
638 - .scroll {  
639 - max-height: 60vh;  
640 -  
641 - .item {  
642 -  
643 - view {  
644 - display: flex;  
645 - flex-flow: row wrap;  
646 - align-items: center;  
647 - width: 500rpx;  
648 - height: 74rpx;  
649 - border-radius: 4rpx;  
650 - border: 2rpx solid #C1C1C9;  
651 - margin: 0 10rpx 20rpx;  
652 - font-size: 24rpx;  
653 - line-height: 32rpx;  
654 - color: #C0C0C9;  
655 - padding: 16rpx 20rpx;  
656 - }  
657 -  
658 - .selectItem {  
659 - background-color: var(--primary-color);  
660 - color: #FFFFFF;  
661 - border: 2rpx solid var(--primary-color);  
662 - }  
663 - }  
664 - }  
665 -  
666 - .time {  
667 - padding: 40rpx 0 0 0;  
668 - }  
669 -  
670 - .switch {  
671 - display: flex;  
672 - flex-flow: row nowrap;  
673 - justify-content: space-between;  
674 - padding: 40rpx 0 0 0;  
675 -  
676 - text {  
677 - font-size: 28rpx;  
678 - line-height: 36rpx;  
679 - color: #202131;  
680 - }  
681 - }  
682 -  
683 -  
684 - }  
685 -  
686 - .footer {  
687 - width: 560rpx;  
688 - height: 96rpx;  
689 - padding: 28rpx 40rpx;  
690 - background: #FFFFFF;  
691 - position: fixed;  
692 - bottom: 0;  
693 - right: 0;  
694 - z-index: 99;  
695 - border-top: 2rpx solid #E2E2E8;  
696 -  
697 - view {  
698 - display: inline-block;  
699 - }  
700 -  
701 - .left_btn {  
702 - width: 194rpx;  
703 - margin: 0 20rpx 0 0;  
704 - }  
705 -  
706 - .right_btn {  
707 - width: 346rpx;  
708 - }  
709 - }  
710 - }  
711 -  
712 - .popup {  
713 - height: 500px;  
714 - padding: 19px 16px;  
715 -  
716 - .title {  
717 - font-size: 18px;  
718 - font-family: PingFangSC-Medium, PingFang SC;  
719 - font-weight: 500;  
720 - color: #000000;  
721 - }  
722 -  
723 - .close {  
724 - width: 22px;  
725 - height: 22px;  
726 - }  
727 -  
728 - .item_box {  
729 - border-radius: 4px;  
730 - margin: 0 0 48rpx;  
731 -  
732 - .item_title {  
733 - height: 20px;  
734 - font-size: 14px;  
735 - font-family: PingFangSC-Regular, PingFang SC;  
736 - font-weight: 400;  
737 - color: rgba(0, 0, 0, 0.65);  
738 - line-height: 20px;  
739 - }  
740 -  
741 - }  
742 -  
743 - .no_data {  
744 - width: 100%;  
745 - margin-top: 310rpx;  
746 -  
747 - .text_black_28 {  
748 - font-size: 14px;  
749 - font-family: PingFangSC-Light, PingFang SC;  
750 - font-weight: 300;  
751 - color: rgba(0, 0, 0, 0.65);  
752 - text-align: center;  
753 - }  
754 -  
755 - }  
756 -  
757 - }  
758 - } 525 +.registration_review {
  526 + width: 100%;
  527 + min-height: 100%;
  528 + height: auto;
  529 + background-color: #f7f7f7;
  530 +
  531 + // .search_box {
  532 + // padding: 36rpx 30rpx 0;
  533 + // background-color: #FFFFFF;
  534 +
  535 + // .top {
  536 + // display: flex;
  537 + // flex-flow: row nowrap;
  538 + // justify-content: space-between;
  539 +
  540 + // .check {
  541 + // padding: 20rpx 0 0 0;
  542 + // }
  543 +
  544 + // .search {
  545 + // width: 410rpx;
  546 + // }
  547 +
  548 + // .icon {
  549 + // display: flex;
  550 + // flex-flow: row nowrap;
  551 + // }
  552 + // }
  553 +
  554 + // .bottom {
  555 + // .time {
  556 + // padding: 30rpx 0 30rpx 40rpx;
  557 + // }
  558 + // }
  559 +
  560 + // }
  561 +
  562 + .search_box {
  563 + padding: 36rpx 30rpx 12rpx;
  564 + background-color: #ffffff;
  565 + display: flex;
  566 + flex-flow: row nowrap;
  567 + justify-content: space-between;
  568 +
  569 + .check {
  570 + padding: 20rpx 0 0 0;
  571 + }
  572 +
  573 + .search {
  574 + width: 468rpx;
  575 + }
  576 + }
  577 +
  578 + .list_box {
  579 + padding: 0 0 50rpx 0;
  580 +
  581 + .item {
  582 + position: relative;
  583 + margin: 30rpx 30rpx 16rpx;
  584 + padding: 30rpx;
  585 + border-radius: 12rpx;
  586 + background-color: #ffffff;
  587 +
  588 + .bg_image {
  589 + position: absolute;
  590 + top: 0;
  591 + right: 0;
  592 +
  593 + text {
  594 + position: absolute;
  595 + top: 12rpx;
  596 + right: 30rpx;
  597 + font-size: 24rpx;
  598 + line-height: 24rpx;
  599 + color: #ffffff;
  600 + }
  601 + }
  602 +
  603 + .info {
  604 + display: flex;
  605 + flex-flow: row nowrap;
  606 + align-items: center;
  607 +
  608 + .avatar {
  609 + width: 78rpx;
  610 + height: 94rpx;
  611 + padding: 0 8rpx;
  612 + border-radius: 4rpx;
  613 + background-color: var(--primary-color);
  614 + font-size: 24rpx;
  615 + line-height: 94rpx;
  616 + color: #ffffff;
  617 + text-align: center;
  618 + }
  619 +
  620 + .name {
  621 + font-size: 32rpx;
  622 + line-height: 44rpx;
  623 + color: #202131;
  624 + font-weight: 500;
  625 + margin-right: 12rpx;
  626 + }
  627 +
  628 + .number {
  629 + font-size: 28rpx;
  630 + line-height: 32rpx;
  631 + color: #909097;
  632 + }
  633 + }
  634 +
  635 + .company {
  636 + display: flex;
  637 + flex-flow: row nowrap;
  638 + // margin: 0 0 30rpx 0;
  639 +
  640 + text {
  641 + font-size: 28rpx;
  642 + line-height: 32rpx;
  643 + color: #909097;
  644 + // margin: 0 0 0 16rpx;
  645 + }
  646 +
  647 + text:last-child {
  648 + color: #202131;
  649 + flex: 1;
  650 + }
  651 + }
  652 +
  653 + .time {
  654 + border-top: 2rpx solid #e2e2e8;
  655 + padding: 28rpx 0 0 0;
  656 +
  657 + text {
  658 + font-size: 28rpx;
  659 + line-height: 32rpx;
  660 + color: #909097;
  661 + }
  662 +
  663 + text:last-child {
  664 + color: #202131;
  665 + margin: 0 0 0 78rpx;
  666 + }
  667 + }
  668 + }
  669 + }
  670 +
  671 + .popup_search {
  672 + width: 640rpx;
  673 + position: relative;
  674 +
  675 + .content {
  676 + padding: 0 40rpx;
  677 +
  678 + .title {
  679 + padding: 24rpx 0;
  680 + font-size: 28rpx;
  681 + line-height: 36rpx;
  682 + color: #202131;
  683 + }
  684 +
  685 + .scroll {
  686 + max-height: 60vh;
  687 +
  688 + .item {
  689 + view {
  690 + display: flex;
  691 + flex-flow: row wrap;
  692 + align-items: center;
  693 + width: 500rpx;
  694 + height: 74rpx;
  695 + border-radius: 4rpx;
  696 + border: 2rpx solid #c1c1c9;
  697 + margin: 0 10rpx 20rpx;
  698 + font-size: 24rpx;
  699 + line-height: 32rpx;
  700 + color: #c0c0c9;
  701 + padding: 16rpx 20rpx;
  702 + }
  703 +
  704 + .selectItem {
  705 + background-color: var(--primary-color);
  706 + color: #ffffff;
  707 + border: 2rpx solid var(--primary-color);
  708 + }
  709 + }
  710 + }
  711 +
  712 + .time {
  713 + padding: 40rpx 0 0 0;
  714 + }
  715 +
  716 + .switch {
  717 + display: flex;
  718 + flex-flow: row nowrap;
  719 + justify-content: space-between;
  720 + padding: 40rpx 0 0 0;
  721 +
  722 + text {
  723 + font-size: 28rpx;
  724 + line-height: 36rpx;
  725 + color: #202131;
  726 + }
  727 + }
  728 + }
  729 +
  730 + .footer {
  731 + width: 560rpx;
  732 + height: 96rpx;
  733 + padding: 28rpx 40rpx;
  734 + background: #ffffff;
  735 + position: fixed;
  736 + bottom: 0;
  737 + right: 0;
  738 + z-index: 99;
  739 + border-top: 2rpx solid #e2e2e8;
  740 +
  741 + view {
  742 + display: inline-block;
  743 + }
  744 +
  745 + .left_btn {
  746 + width: 194rpx;
  747 + margin: 0 20rpx 0 0;
  748 + }
  749 +
  750 + .right_btn {
  751 + width: 346rpx;
  752 + }
  753 + }
  754 + }
  755 +
  756 + .popup {
  757 + height: 500px;
  758 + padding: 19px 16px;
  759 +
  760 + .title {
  761 + font-size: 18px;
  762 + font-family: PingFangSC-Medium, PingFang SC;
  763 + font-weight: 500;
  764 + color: #000000;
  765 + }
  766 +
  767 + .close {
  768 + width: 22px;
  769 + height: 22px;
  770 + }
  771 +
  772 + .item_box {
  773 + border-radius: 4px;
  774 + margin: 0 0 48rpx;
  775 +
  776 + .item_title {
  777 + height: 20px;
  778 + font-size: 14px;
  779 + font-family: PingFangSC-Regular, PingFang SC;
  780 + font-weight: 400;
  781 + color: rgba(0, 0, 0, 0.65);
  782 + line-height: 20px;
  783 + }
  784 + }
  785 +
  786 + .no_data {
  787 + width: 100%;
  788 + margin-top: 310rpx;
  789 +
  790 + .text_black_28 {
  791 + font-size: 14px;
  792 + font-family: PingFangSC-Light, PingFang SC;
  793 + font-weight: 300;
  794 + color: rgba(0, 0, 0, 0.65);
  795 + text-align: center;
  796 + }
  797 + }
  798 + }
  799 +}
759 </style> 800 </style>

984 Bytes | 宽: | 高:

993 Bytes | 宽: | 高:

  • 两方对比
  • 交换覆盖
  • 透明覆盖
@@ -10,9 +10,9 @@ const appNameData = { @@ -10,9 +10,9 @@ const appNameData = {
10 } 10 }
11 11
12 let lifeData = {}; 12 let lifeData = {};
13 -// let appId = 'wx6cd2152282abd34c'; 13 +let appId = 'wx6cd2152282abd34c';
14 // 新华网 14 // 新华网
15 -let appId = 'wxac18386e35824192'; 15 +// let appId = 'wxac18386e35824192';
16 16
17 17
18 try { 18 try {
注册登录 后发表评论