提交 d72e8f1532b15f004cfbba135ffddeb1902fd69a

作者 wangws
1 个父辈 2345202c

1

@@ -208,4 +208,24 @@ export const scoreinternshipInfoUrl = (params) => http.get('/internship/v1/score @@ -208,4 +208,24 @@ export const scoreinternshipInfoUrl = (params) => http.get('/internship/v1/score
208 }) 208 })
209 209
210 // 鉴定成绩鉴定 210 // 鉴定成绩鉴定
211 -export const putscoreappraisalApi = (params) => http.put('/internship/v1/score/appraisal', params)  
  211 +export const putscoreappraisalApi = (params) => http.put('/internship/v1/score/appraisal', params)
  212 +
  213 +// 实习生详情-实习课程-实习信息
  214 +export const getforminternshipInfoApi = (params) => http.get('/internship/v1/form/internshipInfo', {
  215 + params: params
  216 +})
  217 +
  218 +// 实习申请-列表
  219 +export const getformApplyschoollistApi = (params) => http.get('/internship/v1/formApply/school/list', {
  220 + params: params
  221 +})
  222 +
  223 +// 实习申请-详情
  224 +export const getformApplyschooldetailApi = (id,params) => http.get('/internship/v1/formApply/'+id, {
  225 + params: params
  226 +})
  227 +
  228 +// 实习申请-审核
  229 +export const putformApplyApi = (id,params) => http.put('/internship/v1/formApply/audit/'+id, {
  230 + params: params
  231 +})
@@ -155,6 +155,18 @@ @@ -155,6 +155,18 @@
155 "enablePullDownRefresh": false 155 "enablePullDownRefresh": false
156 } 156 }
157 157
  158 + }, {
  159 + "path": "interapply/interapply",
  160 + "style": {
  161 + "navigationBarTitleText": "实习申请",
  162 + "enablePullDownRefresh": false
  163 + }
  164 + }, {
  165 + "path": "interapplydetail/interapplydetail",
  166 + "style": {
  167 + "navigationBarTitleText": "实习申请",
  168 + "enablePullDownRefresh": false
  169 + }
158 } 170 }
159 ] 171 ]
160 }, 172 },
@@ -227,7 +239,14 @@ @@ -227,7 +239,14 @@
227 "enablePullDownRefresh": false 239 "enablePullDownRefresh": false
228 } 240 }
229 241
230 - } 242 + },{
  243 + "path" : "traineeInterList/traineeInterList",
  244 + "style" :
  245 + {
  246 + "navigationBarTitleText": "实习信息",
  247 + "enablePullDownRefresh": false
  248 + }
  249 + }
231 ] 250 ]
232 }, 251 },
233 { 252 {
@@ -383,7 +402,7 @@ @@ -383,7 +402,7 @@
383 "pagePath": "pages/tabBar/internship/internship", 402 "pagePath": "pages/tabBar/internship/internship",
384 "iconPath": "/static/img/icon/internship.png", 403 "iconPath": "/static/img/icon/internship.png",
385 "selectedIconPath": "/static/img/icon/internshipHL.png", 404 "selectedIconPath": "/static/img/icon/internshipHL.png",
386 - "text": "实习" 405 + "text": "实习"
387 }, 406 },
388 { 407 {
389 "pagePath": "pages/tabBar/my/my", 408 "pagePath": "pages/tabBar/my/my",
@@ -36,7 +36,7 @@ @@ -36,7 +36,7 @@
36 <view class="gv" style="background-color: #fff; padding: 20px 16px 0;"> 36 <view class="gv" style="background-color: #fff; padding: 20px 16px 0;">
37 <view class="green"></view> 37 <view class="green"></view>
38 <view class="title"> 38 <view class="title">
39 - 学校评价 39 + 教师评价
40 </view> 40 </view>
41 </view> 41 </view>
42 <view style="background-color: #fff; padding: 20px 16px 0;"> 42 <view style="background-color: #fff; padding: 20px 16px 0;">
@@ -623,7 +623,7 @@ @@ -623,7 +623,7 @@
623 display: flex; 623 display: flex;
624 flex-direction: column; 624 flex-direction: column;
625 margin-left: 2px; 625 margin-left: 2px;
626 - width: 85%; 626 + width: 80%;
627 627
628 .pdffj { 628 .pdffj {
629 margin-bottom: 5px; 629 margin-bottom: 5px;
@@ -72,7 +72,7 @@ @@ -72,7 +72,7 @@
72 </view> 72 </view>
73 <view class="list"> 73 <view class="list">
74 <text class="item1">评分:</text> 74 <text class="item1">评分:</text>
75 - <text class="item2">{{detailObj.reportAverageScore}}分</text> 75 + <text class="item2">{{detailObj.reportAverageScore?`${detailObj.reportAverageScore}分`:'-'}}</text>
76 </view> 76 </view>
77 </view> 77 </view>
78 78
@@ -90,6 +90,7 @@ @@ -90,6 +90,7 @@
90 <view class="list list_item_top"> 90 <view class="list list_item_top">
91 <text class="item1">评语:</text> 91 <text class="item1">评语:</text>
92 <text class="item2">{{detailObj.studentComment}}</text> 92 <text class="item2">{{detailObj.studentComment}}</text>
  93 + <!-- <text class="item2">12321312390128390218309809sda890asd809s0a9d8a90sd8a90asd809asd89asd890as8d9</text> -->
93 </view> 94 </view>
94 <view class="listflex list_item_top"> 95 <view class="listflex list_item_top">
95 <text class="item1">附件:</text> 96 <text class="item1">附件:</text>
@@ -140,7 +141,7 @@ @@ -140,7 +141,7 @@
140 <view class="t"> 141 <view class="t">
141 <view class="green"></view> 142 <view class="green"></view>
142 <view class="title"> 143 <view class="title">
143 - 学校评价 144 + 教师评价
144 </view> 145 </view>
145 </view> 146 </view>
146 <view class="list list_item_top"> 147 <view class="list list_item_top">
@@ -597,6 +598,10 @@ @@ -597,6 +598,10 @@
597 } 598 }
598 599
599 .item2 { 600 .item2 {
  601 + -webkit-box-orient: vertical;
  602 + overflow: hidden;
  603 + word-break: break-all;
  604 + word-wrap: break-word;
600 margin-left: 2px; 605 margin-left: 2px;
601 font-size: 12px; 606 font-size: 12px;
602 font-family: PingFangSC-Light, PingFang SC; 607 font-family: PingFangSC-Light, PingFang SC;
  1 +<template>
  2 + <view class="registration_review">
  3 + <view class="search_box">
  4 + <!-- <view class="check">
  5 + <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">
  6 + <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"
  7 + v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"
  8 + activeColor="#06B079" size="28rpx" labelSize="28rpx" labelColor="#202131">
  9 + </u-checkbox>
  10 + </u-checkbox-group>
  11 + </view> -->
  12 +
  13 + <!-- <view class="search">
  14 + <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  15 + bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">
  16 + </u-search>
  17 + </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 + <view class="t1">
  31 + {{item.studentName}}提交的实习申请
  32 + </view>
  33 + <view class="t3">
  34 + {{item.projectName}}
  35 + </view>
  36 + <view class="t2 t2top14">
  37 + 申请类型: {{getCategoryList(item.type)}}
  38 + </view>
  39 + <view class="t2">
  40 + 开始时间: {{timeFormat(item.formStartTime, 'yyyy-mm-dd hh:MM')}}
  41 + </view>
  42 + <view class="t2">
  43 + 结束时间: {{timeFormat(item.formEndTime, 'yyyy-mm-dd hh:MM')}}
  44 + </view>
  45 + <view v-if="item.status == 'wait'" class="status" style="color: #F49A23;">
  46 + 待处理
  47 + </view>
  48 + <view v-else-if="item.status == 'passed'" class="status" style="color: #0CB17A;">
  49 + 已通过
  50 + </view>
  51 + <view v-else-if="item.status == 'rejected'" class="status" style="color: red;">
  52 + 已驳回
  53 + </view>
  54 + <view class="time">
  55 + {{timeFormat(item.createdTime, 'mm-dd')}}
  56 + </view>
  57 + </view>
  58 + <c-loading :loading="loading"></c-loading>
  59 + </view>
  60 + <view v-else class="no_data">
  61 + <c-no-data></c-no-data>
  62 + </view>
  63 +
  64 + <u-popup :show="show" mode="bottom" @close="close" :round="22">
  65 + <view class="popup">
  66 + <view style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 28px;">
  67 + <view class="title">
  68 + 项目筛选
  69 + </view>
  70 + <image class="close" src="/static/img/home/closepop.png" @click="close" mode=""></image>
  71 + </view>
  72 + <view class="search">
  73 + <u-search placeholder="请输入项目关键词搜索" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  74 + bgColor="#F4F4F4" :showAction="true" shape="round" v-model="sxsearch" @custom="workSearch()" @search="workSearch()">
  75 + </u-search>
  76 + </view>
  77 + <scroll-view v-if="works.length>0" scroll-y="true" style="height: 80%; margin-top: 40rpx;"
  78 + @scrolltolower="lower()">
  79 + <view class="item_box" v-for="(item,index) in works" :key="index" @click="popupSelItem(item)">
  80 + <view style="display: flex; align-items: center; justify-content: space-between;">
  81 + <view class="item_title">
  82 + {{item.name}}
  83 + </view>
  84 + <image v-if="item.id == projectId" style="width: 20px; height: 20px;" src="/static/img/home/popselect.png" mode=""></image>
  85 + </view>
  86 + </view>
  87 + </scroll-view>
  88 + <view v-else class="no_data" @click="jumpVerified">
  89 + <view class="text_black_28">
  90 + 暂未搜索到该项目
  91 + </view>
  92 + </view>
  93 + </view>
  94 + </u-popup>
  95 +
  96 + <!-- <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false">
  97 + <view class="popup_search">
  98 + <view class="content">
  99 + <view class="title">按项目筛选</view>
  100 + <scroll-view class="scroll" scroll-y="true">
  101 + <view class="item" v-for="(item, i) in projectList" :key="i" @click="handelClick(item)">
  102 + <view class="selectItem" v-if="item.id == projectId">
  103 + <text>{{item.name}}</text>
  104 + </view>
  105 + <view v-else>
  106 + <text>{{item.name}}</text>
  107 + </view>
  108 + </view>
  109 + </scroll-view>
  110 + <view class="switch">
  111 + <text>待处理</text>
  112 + <u-switch v-model="switchValue" size="48" activeColor="#06B079" @change="handelChange">
  113 + </u-switch>
  114 + </view>
  115 + </view>
  116 +
  117 + <view class="footer">
  118 + <view class="left_btn">
  119 + <c-button type="cancel" text="重置" @click="handelCancel">
  120 + </c-button>
  121 + </view>
  122 + <view class="right_btn">
  123 + <c-button type="confirm" text="确定" @click="hancelSubmit">
  124 + </c-button>
  125 + </view>
  126 + </view>
  127 +
  128 + </view>
  129 + </u-popup> -->
  130 +
  131 + </view>
  132 +</template>
  133 +
  134 +<script>
  135 + import {
  136 + mapGetters,
  137 + mapState,
  138 + mapActions
  139 + } from 'vuex'
  140 + import listMixin from "@/common/mixins/list-mixin.js";
  141 +
  142 + import {
  143 + getformApplyschoollistApi,
  144 + getProjectListApi,
  145 + } from '@/config/api.js';
  146 +
  147 + export default {
  148 + mixins: [listMixin],
  149 + data() {
  150 + return {
  151 + checkboxValue: [],
  152 + // 基本案列数据
  153 + checkboxList: [{
  154 + name: '待处理',
  155 + disabled: false
  156 + }],
  157 + keyword: '',
  158 + show: false,
  159 + list: [], //列表必须为key list的数组
  160 + search: {
  161 + //搜索对象必须为key search的对象
  162 + keySearch: "",
  163 + status: '',
  164 +
  165 + },
  166 + projectId: '',
  167 + switchValue: false,
  168 + categoryList: [{
  169 + label: '开始实习申请',
  170 + value: 'start'
  171 + },
  172 + {
  173 + label: '结束实习申请',
  174 + value: "end",
  175 + }
  176 + ],
  177 + curNow: 1,
  178 + sxsearch: '',
  179 + works: [],
  180 + workspage: 1,
  181 + workstotal: 0,
  182 + }
  183 + },
  184 +
  185 + onLoad(option) {
  186 + console.log(option)
  187 + // this.$store.dispatch(`home/getProjectList`, {
  188 + // pageSize: -1,
  189 + // })
  190 +
  191 + this.worksloadData()
  192 +
  193 + // this.search.keySearch = '';
  194 +
  195 + if (option && option.status) {
  196 + // this.search.status = 'wait';
  197 + this.curNow = 0;
  198 + // this.checkboxValue = ['待处理'];
  199 + // this.switchValue = true;
  200 + }
  201 +
  202 + },
  203 +
  204 + onShow() {
  205 + this.finished = false;
  206 + this.loading = "loadmore";
  207 + this.page = 0;
  208 + this.list = [];
  209 + this._getList();
  210 + },
  211 +
  212 + computed: {
  213 + ...mapState('home', {
  214 + // 箭头函数可使代码更简练
  215 + projectList: 'projectList',
  216 +
  217 + }),
  218 +
  219 + },
  220 +
  221 + methods: {
  222 +
  223 + searchCli() {
  224 + this.$u.route('/pages/main/home/search/search?type=ask&searchkey=' + this.keyword);
  225 + },
  226 +
  227 + sectionChange(index) {
  228 + this.curNow = index;
  229 +
  230 + this.finished = false;
  231 + this.loading = "loadmore";
  232 + this.page = 0;
  233 + this.list = [];
  234 + this._getList();
  235 + },
  236 +
  237 + getCategoryList(e) {
  238 + for (var i = 0; i < this.categoryList.length; i++) {
  239 + let item = this.categoryList[i]
  240 + if (e == item.value) {
  241 + return item.label
  242 + }
  243 + }
  244 + },
  245 +
  246 + handelDetail(record) {
  247 + this.$u.route('/pages/main/home/interapplydetail/interapplydetail?id='+record.id);
  248 + },
  249 +
  250 + timeFormat(timestamp, format = 'yyyy-mm-dd') {
  251 + return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'
  252 + },
  253 +
  254 + checkboxChange(n) {
  255 + console.log('change', n);
  256 +
  257 + this.search.status = n.length > 0 ? 'wait' : '';
  258 +
  259 + this.switchValue = n.length > 0 ? true : false;
  260 +
  261 + this.finished = false;
  262 + this.loading = "loadmore";
  263 + this.page = 0;
  264 + this.list = [];
  265 + this._getList();
  266 + },
  267 +
  268 + handelSearch(value) {
  269 + this.finished = false;
  270 + this.loading = "loadmore";
  271 + this.page = 0;
  272 + this.list = [];
  273 + this._getList();
  274 + },
  275 +
  276 + open() {
  277 + // console.log('open');
  278 + },
  279 + close() {
  280 + this.show = false
  281 + // console.log('close');
  282 + },
  283 + // scroll-view到底部加载更多
  284 + onreachBottom() {},
  285 + // 搜索
  286 + searchSubmit() {
  287 + // 调用混合搜索
  288 + this._searchData();
  289 + },
  290 + // 模拟后端分页
  291 + async getData(requestParams) {
  292 + const {
  293 + search = {}
  294 + } = requestParams;
  295 +
  296 + let params = {};
  297 + params.pageNumber = requestParams.page + 1;
  298 + params.pageSize = 5;
  299 +
  300 + if (this.curNow == 0) {
  301 + params.status = 'wait';
  302 + }
  303 +
  304 + if (this.keyword) {
  305 + params.keySearch = this.keyword
  306 + }
  307 +
  308 + if (this.projectId) {
  309 + params.projectId = this.projectId
  310 + }
  311 +
  312 + return await getformApplyschoollistApi(params);
  313 + },
  314 + // 数据请求(没错就是这么少的代码)
  315 + async _getList() {
  316 + if (this.page == 0) {
  317 + this.list = [];
  318 + }
  319 +
  320 + // 根据实际情况修改自己修改key
  321 + let result = await this.getData({
  322 + page: this.page, // 传入页码
  323 + size: this.size, // 传入每页条数
  324 + search: this.search, // 传入搜索的对象
  325 + });
  326 +
  327 + this.total = result.total;
  328 +
  329 + if (this.list.length == 0 && result.records.length == 0) {
  330 + this.shownoData = false
  331 + } else {
  332 + this.shownoData = true
  333 + }
  334 +
  335 + this.list = this.list.concat(result.records)
  336 +
  337 + // 判断是否全部加载完成
  338 + if (this.total == this.list.length) {
  339 + this.finished = true;
  340 + this.loading = 'nomore';
  341 + } else {
  342 + this.loading = 'loadmore';
  343 + }
  344 + },
  345 +
  346 + handelClick(values) {
  347 + console.log(values);
  348 + this.projectId = values.id;
  349 + },
  350 +
  351 + handelChange(e) {
  352 + console.log(e)
  353 + this.checkboxValue = e ? ['待处理'] : [];
  354 + this.search.status = e ? 'wait' : '';
  355 +
  356 + },
  357 +
  358 + handelCancel() {
  359 + this.switchValue = false;
  360 + this.projectId = '';
  361 + },
  362 +
  363 + hancelSubmit() {
  364 + this.finished = false;
  365 + this.loading = "loadmore";
  366 + this.page = 0;
  367 + this.list = [];
  368 + this._getList();
  369 +
  370 + this.show = false;
  371 + },
  372 +
  373 + workSearch() {
  374 + uni.hideKeyboard();
  375 + this.works = []
  376 + this.worksloadData()
  377 + },
  378 +
  379 + lower() {
  380 + setTimeout(() => {
  381 + this.worksloadData(true);
  382 + }, 200)
  383 + },
  384 +
  385 + worksloadData(e) {
  386 + let params = {}
  387 + // this.loading = 'loading'
  388 +
  389 + if (e) {
  390 + if (this.total <= this.works.length) {
  391 + // this.loading = 'nomore'
  392 + return
  393 + }
  394 + this.workspage++
  395 + } else {
  396 + this.workspage = 1
  397 + }
  398 + params['pageNumber'] = this.workspage
  399 + if (this.sxsearch) {
  400 + params['keyWord'] = this.sxsearch
  401 + }
  402 + getProjectListApi(params).then(async res => {
  403 + if (res) {
  404 + this.total = res.total
  405 + // this.loading = 'loadmore'
  406 + this.works = this.works.concat(res.records)
  407 + }
  408 + })
  409 + },
  410 + popupSelItem(item) {
  411 + this.show = false
  412 + this.projectId = item.id;
  413 + this.finished = false;
  414 + this.loading = "loadmore";
  415 + this.page = 0;
  416 + this.list = [];
  417 + this._getList();
  418 + },
  419 +
  420 + }
  421 + }
  422 +</script>
  423 +
  424 +<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;
  434 + 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;
  444 + }
  445 + }
  446 +
  447 + .list_box {
  448 + padding: 0 0 50rpx 0;
  449 +
  450 + .item {
  451 + position: relative;
  452 + margin: 8px 13px 0;
  453 + padding: 20px 17px;
  454 + border-radius: 8rpx;
  455 + background-color: #FFFFFF;
  456 +
  457 + .t1 {
  458 + font-size: 14px;
  459 + font-family: PingFangSC-Medium, PingFang SC;
  460 + font-weight: 500;
  461 + color: #000000;
  462 + }
  463 +
  464 + .t2 {
  465 + margin-top: 6px;
  466 + font-size: 12px;
  467 + font-family: PingFangSC-Light, PingFang SC;
  468 + font-weight: 300;
  469 + color: rgba(38,41,47,0.85);
  470 + }
  471 +
  472 + .t3 {
  473 + margin-top: 2px;
  474 + font-size: 12px;
  475 + font-family: PingFangSC-Light, PingFang SC;
  476 + font-weight: 300;
  477 + color: #000000;
  478 + }
  479 +
  480 + .t2top14 {
  481 + margin-top: 14px;
  482 + }
  483 +
  484 + .time {
  485 + position: absolute;
  486 + top: 17px;
  487 + right: 17px;
  488 + font-size: 12px;
  489 + font-family: PingFangSC-Light, PingFang SC;
  490 + font-weight: 300;
  491 + color: rgba(0,0,0,0.85);
  492 + }
  493 +
  494 + .status {
  495 + position: absolute;
  496 + bottom: 20px;
  497 + right: 17px;
  498 + font-size: 12px;
  499 + font-family: PingFangSC-Regular, PingFang SC;
  500 + font-weight: 400;
  501 + }
  502 + }
  503 + }
  504 +
  505 + .popup_search {
  506 + width: 640rpx;
  507 + position: relative;
  508 +
  509 + .content {
  510 + padding: 0 40rpx;
  511 +
  512 + .title {
  513 + padding: 24rpx 0;
  514 + font-size: 28rpx;
  515 + line-height: 36rpx;
  516 + color: #202131;
  517 + }
  518 +
  519 + .scroll {
  520 + max-height: 60vh;
  521 +
  522 + .item {
  523 +
  524 + view {
  525 + display: flex;
  526 + flex-flow: row wrap;
  527 + align-items: center;
  528 + width: 500rpx;
  529 + height: 74rpx;
  530 + border-radius: 4rpx;
  531 + border: 2rpx solid #C1C1C9;
  532 + margin: 0 10rpx 20rpx;
  533 + font-size: 24rpx;
  534 + line-height: 32rpx;
  535 + color: #C0C0C9;
  536 + padding: 16rpx 20rpx;
  537 + }
  538 +
  539 + .selectItem {
  540 + background-color: #06B079;
  541 + color: #FFFFFF;
  542 + border: 2rpx solid #06B079;
  543 + }
  544 + }
  545 + }
  546 +
  547 + .switch {
  548 + display: flex;
  549 + flex-flow: row nowrap;
  550 + justify-content: space-between;
  551 + padding: 40rpx 0 0 0;
  552 +
  553 + text {
  554 + font-size: 28rpx;
  555 + line-height: 36rpx;
  556 + color: #202131;
  557 + }
  558 + }
  559 +
  560 +
  561 + }
  562 +
  563 + .footer {
  564 + width: 560rpx;
  565 + height: 96rpx;
  566 + padding: 28rpx 40rpx;
  567 + background: #FFFFFF;
  568 + position: fixed;
  569 + bottom: 0;
  570 + right: 0;
  571 + z-index: 99;
  572 + border-top: 2rpx solid #E2E2E8;
  573 +
  574 + view {
  575 + display: inline-block;
  576 + }
  577 +
  578 + .left_btn {
  579 + width: 194rpx;
  580 + margin: 0 20rpx 0 0;
  581 + }
  582 +
  583 + .right_btn {
  584 + width: 346rpx;
  585 + }
  586 + }
  587 + }
  588 +
  589 + .popup {
  590 + height: 500px;
  591 + padding: 19px 16px;
  592 +
  593 + .title {
  594 + font-size: 18px;
  595 + font-family: PingFangSC-Medium, PingFang SC;
  596 + font-weight: 500;
  597 + color: #000000;
  598 + }
  599 +
  600 + .close {
  601 + width: 22px;
  602 + height: 22px;
  603 + }
  604 +
  605 + .item_box {
  606 + border-radius: 4px;
  607 + margin: 0 0 48rpx;
  608 +
  609 + .item_title {
  610 + height: 20px;
  611 + font-size: 14px;
  612 + font-family: PingFangSC-Regular, PingFang SC;
  613 + font-weight: 400;
  614 + color: rgba(0, 0, 0, 0.65);
  615 + line-height: 20px;
  616 + }
  617 +
  618 + }
  619 +
  620 + .no_data {
  621 + width: 100%;
  622 + margin-top: 310rpx;
  623 +
  624 + .text_black_28 {
  625 + font-size: 14px;
  626 + font-family: PingFangSC-Light, PingFang SC;
  627 + font-weight: 300;
  628 + color: rgba(0,0,0,0.65);
  629 + text-align: center;
  630 + }
  631 +
  632 + }
  633 +
  634 + }
  635 + }
  636 +</style>
  1 +<template>
  2 + <view class="page">
  3 + <view class="top">
  4 + <view class="title">
  5 + {{detailObj.studentName}}提交的请假申请
  6 + </view>
  7 + <view class="t1">
  8 + {{detailObj.projectName}}
  9 + </view>
  10 + <!-- <view class="t2">
  11 + {{detailObj.courseName}}
  12 + </view> -->
  13 + <view v-if="detailObj.status == 'wait'" class="status" style="color: #FFC200;">
  14 + 待处理
  15 + </view>
  16 + <view v-else-if="detailObj.status == 'passed'" class="status" style="color: #0CB17A;">
  17 + 已通过
  18 + </view>
  19 + <view v-else-if="detailObj.status == 'rejected'" class="status" style="color: red;">
  20 + 已驳回
  21 + </view>
  22 + </view>
  23 + <view class="content">
  24 + <view class="c1">
  25 + 申请类型
  26 + </view>
  27 + <view class="c2">
  28 + {{getCategoryList(detailObj.type)}}
  29 + </view>
  30 + <view class="grayV">
  31 + <view class="g1">
  32 + 实习时间
  33 + </view>
  34 + <image class="timeline" src="/static/img/home/timeline.png"></image>
  35 + <view class="start">
  36 + {{timeFormat(detailObj.formStartTime,'yyyy-mm-dd hh:MM')}}
  37 + </view>
  38 + <view class="end">
  39 + {{timeFormat(detailObj.formEndTime,'yyyy-mm-dd hh:MM')}}
  40 + </view>
  41 + </view>
  42 + <!-- <view class="c1" style="margin-top: 16rpx;">
  43 + 请假原因
  44 + </view>
  45 + <view class="c2" style="margin-top: 16rpx;">
  46 + {{detailObj.reason}}
  47 + </view> -->
  48 + <!-- <view class="c1" style="margin-top: 32rpx;">
  49 + 附件
  50 + </view> -->
  51 + <!-- <view v-if="picList.length>0" class="fj_content">
  52 + <view class="item">
  53 + <view class="p_item" v-for="(item, index) in picList" :key="index" @click="openImage(item)">
  54 + <u-image :height="120" :width="120" :border-radius="16" :src="item"></u-image>
  55 + </view>
  56 + </view>
  57 + </view> -->
  58 + </view>
  59 + <view class="timeb">
  60 + <view class="title">
  61 + 审批信息
  62 + </view>
  63 + <view style="padding: 10rpx;">
  64 + <view>
  65 + <view v-for="(item,index) in questions" :key="index">
  66 + <view class="nodef">
  67 + <!-- <<!-- template v-slot:node> -->
  68 + <view class="node1">
  69 + <view class="u-node"></view>
  70 + </view>
  71 + <!-- </template> -->
  72 + <!-- <template v-slot:content> -->
  73 + <view class="node2">
  74 + <view style="display: flex; align-self: center; justify-content:space-between;">
  75 + <view class='u-order-title'>{{item.title}}</view>
  76 + <view class='u-order-time'>{{timeFormat(item.time,'mm-dd hh:MM')}}</view>
  77 + </view>
  78 + <view class='u-order-desc'>{{item.desc}}{{item.peo?item.peo:''}}</view>
  79 + <view v-if="item.reply" class='u-order-reply'>{{item.reply}}</view>
  80 + </view>
  81 + <!-- </template> -->
  82 + </view>
  83 + </view>
  84 + </view>
  85 + </view>
  86 + </view>
  87 + <view style="height: 100px;">
  88 +
  89 + </view>
  90 + <view class="footer" v-if="detailObj.status == 'wait'">
  91 + <view class="left_btn">
  92 + <c-button type="cancel" text="驳回" @click="handelCancel">
  93 + </c-button>
  94 + </view>
  95 + <view class="right_btn">
  96 + <c-button type="confirm" text="通过" @click="hancelSubmit">
  97 + </c-button>
  98 + </view>
  99 + </view>
  100 + </view>
  101 +</template>
  102 +
  103 +<script>
  104 + import {
  105 + getformApplyschooldetailApi,
  106 + putformApplyApi,
  107 + getImgUrlApi,
  108 + } from '@/config/api.js';
  109 +
  110 + export default {
  111 + data() {
  112 + return {
  113 + id: '',
  114 + picList: [],
  115 + detailObj: {},
  116 + attachments: [],
  117 + questions: [],
  118 + categoryList: [{
  119 + label: '开始实习申请',
  120 + value: 'start'
  121 + },
  122 + {
  123 + label: '结束实习申请',
  124 + value: "end",
  125 + }
  126 + ],
  127 + }
  128 + },
  129 +
  130 + onLoad(e) {
  131 + this.id = e.id
  132 + this.loadData()
  133 + },
  134 +
  135 + methods: {
  136 +
  137 + loadData() {
  138 + getformApplyschooldetailApi(this.id).then(res => {
  139 + if (res) {
  140 + this.detailObj = res;
  141 + this.handleDatas()
  142 +
  143 + let q1 = {
  144 + title: '发起申请',
  145 + desc: this.detailObj.studentName,
  146 + time: this.detailObj.createdTime
  147 + }
  148 +
  149 + let s = ''
  150 + if (this.detailObj.status == 'wait') {
  151 + s = '(待处理)'
  152 + }else if (this.detailObj.status == 'passed') {
  153 + s = '(已通过)'
  154 + }else if (this.detailObj.status == 'rejected') {
  155 + s = '(已驳回)'
  156 + }
  157 + let q2 = {
  158 + title: '学校审批',
  159 + desc: this.detailObj.auditTeacher ? this.detailObj.auditTeacher : '-',
  160 + time: this.detailObj.auditTime,
  161 + // reply: this.detailObj.reply,
  162 + peo: s,
  163 + }
  164 + this.questions.push(q1)
  165 + if (this.detailObj.status != 'wait') {
  166 + this.questions.push(q2)
  167 + }
  168 + }
  169 + })
  170 + },
  171 +
  172 + handelCancel() {
  173 + putformApplyApi(this.id,{status: 'reject'}).then(res => {
  174 + if (res) {
  175 + uni.navigateBack({
  176 + delta: 1
  177 + });
  178 + }
  179 + })
  180 + },
  181 +
  182 + hancelSubmit() {
  183 + putformApplyApi(this.id,{status: 'pass'}).then(res => {
  184 + if (res) {
  185 + uni.navigateBack({
  186 + delta: 1
  187 + });
  188 + }
  189 + })
  190 + },
  191 +
  192 + getCategoryList(e) {
  193 + for (var i = 0; i < this.categoryList.length; i++) {
  194 + let item = this.categoryList[i]
  195 + if (e == item.value) {
  196 + return item.label
  197 + }
  198 + }
  199 + },
  200 +
  201 + timeFormat(timestamp, format = 'yyyy-mm-dd') {
  202 + return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'
  203 + },
  204 +
  205 + handleDatas() { //处理获取的网络图片
  206 + if (this.detailObj.attachments) {
  207 + this.createdTime = this.$u.timeFormat(this.detailObj.createdTime / 1000, 'yyyy/mm/dd');
  208 + var originInfo = JSON.parse(this.detailObj.attachments);
  209 + this.attachments = this.attachments.concat(originInfo)
  210 + console.log("1---", originInfo, "2---", this.attachments)
  211 + if (originInfo && originInfo.length > 0) {
  212 + for (var i = 0; i < originInfo.length; i++) {
  213 + getImgUrlApi({
  214 + bucket: originInfo[i].bucket,
  215 + filePath: originInfo[i].object
  216 + }).then(res => {
  217 + this.picList.push(res.url)
  218 + console.log('picList...', this.picList)
  219 + })
  220 + }
  221 + }
  222 + }
  223 + },
  224 +
  225 + openLink(e) {
  226 + var _this = this
  227 +
  228 + uni.showLoading({
  229 + title: '努力加载中~',
  230 + mask: true
  231 + })
  232 +
  233 + getImgUrlApi({
  234 + bucket: e.bucket,
  235 + filePath: e.object
  236 + }).then(data => {
  237 + console.log("data...", data)
  238 + if (e.mime_type.indexOf("image") != -1) {
  239 + _this.openImage(data.url)
  240 + } else {
  241 + uni.downloadFile({
  242 + url: data.url,
  243 + success: function(res) {
  244 + var filePath = res.tempFilePath;
  245 + uni.openDocument({
  246 + filePath: filePath,
  247 + showMenu: true,
  248 + success: function(res) {
  249 + console.log('打开文档成功');
  250 + },
  251 + complete: function() {
  252 + uni.hideLoading();
  253 + }
  254 + });
  255 + }
  256 + });
  257 + }
  258 + })
  259 + },
  260 + openImage(imgPath) {
  261 + let array = new Array(1).fill(imgPath);
  262 + uni.previewImage({
  263 + urls: array,
  264 + success(res) {
  265 + uni.hideLoading();
  266 + console.log('openImage success');
  267 + },
  268 + fail(res) {
  269 + uni.hideLoading();
  270 + console.log('openImage fail:', res);
  271 + }
  272 + });
  273 + },
  274 + }
  275 + }
  276 +</script>
  277 +
  278 +<style>
  279 + page {
  280 + background-color: #F7F7F7;
  281 + }
  282 +</style>
  283 +
  284 +<style lang="scss" scoped>
  285 + .page {
  286 + padding: 16rpx 32rpx;
  287 +
  288 + .top {
  289 + padding: 40rpx 32rpx;
  290 + background-color: #fff;
  291 + border-radius: 10px;
  292 +
  293 + .title {
  294 + font-size: 20px;
  295 + font-family: PingFangSC-Semibold, PingFang SC;
  296 + font-weight: 600;
  297 + color: #000000;
  298 + }
  299 +
  300 + .t1 {
  301 + margin-top: 32rpx;
  302 + font-size: 13px;
  303 + font-family: PingFangSC-Regular, PingFang SC;
  304 + font-weight: 400;
  305 + color: rgba(0,0,0,0.6500);
  306 + }
  307 +
  308 + .t2 {
  309 + margin-top: 16rpx;
  310 + font-size: 13px;
  311 + font-family: PingFangSC-Regular, PingFang SC;
  312 + font-weight: 400;
  313 + color: rgba(0,0,0,0.6500);
  314 + }
  315 +
  316 + .status {
  317 + margin-top: 32rpx;
  318 + font-size: 13px;
  319 + font-family: PingFangSC-Regular, PingFang SC;
  320 + font-weight: 400;
  321 + color: #FFC200;
  322 + }
  323 + }
  324 +
  325 + .content {
  326 + padding: 40rpx 32rpx;
  327 + background-color: #fff;
  328 + border-radius: 10px;
  329 + margin-top: 16rpx;
  330 +
  331 + .c1 {
  332 + font-size: 16px;
  333 + font-family: PingFangSC-Semibold, PingFang SC;
  334 + font-weight: 600;
  335 + color: #000000;
  336 + }
  337 +
  338 + .c2 {
  339 + margin-top: 16rpx;
  340 + font-size: 14px;
  341 + font-family: PingFangSC-Regular, PingFang SC;
  342 + font-weight: 400;
  343 + color: rgba(0,0,0,0.6500);
  344 + }
  345 +
  346 + .grayV {
  347 + margin-top: 24rpx;
  348 + height: 98px;
  349 + background: #F7F7F7;
  350 + border-radius: 24px;
  351 + padding: 8rpx 16rpx;
  352 + position: relative;
  353 +
  354 + .g1 {
  355 + font-size: 16px;
  356 + font-family: PingFangSC-Semibold, PingFang SC;
  357 + font-weight: 600;
  358 + color: #000000;
  359 + }
  360 +
  361 + .timeline {
  362 + position: absolute;
  363 + left: 2rpx;
  364 + top: 72rpx;
  365 + width: 40rpx;
  366 + height: 100rpx;
  367 + }
  368 +
  369 + .start {
  370 + position: absolute;
  371 + left: 88rpx;
  372 + top: 68rpx;
  373 + font-size: 14px;
  374 + font-family: DINAlternate-Bold, DINAlternate;
  375 + font-weight: bold;
  376 + color: rgba(0,0,0,0.6500);
  377 + }
  378 +
  379 + .end {
  380 + position: absolute;
  381 + left: 88rpx;
  382 + top: 134rpx;
  383 + font-size: 14px;
  384 + font-family: DINAlternate-Bold, DINAlternate;
  385 + font-weight: bold;
  386 + color: rgba(0,0,0,0.6500);
  387 + }
  388 + }
  389 +
  390 + .fj_content {
  391 + margin-top: 8px;
  392 + background-color: #fff;
  393 +
  394 + .item {
  395 + width: 100%;
  396 + display: flex;
  397 + flex-direction: row;
  398 + flex-wrap: wrap;
  399 +
  400 + .p_item {
  401 + position: relative;
  402 + width: 120rpx;
  403 + height: 120rpx;
  404 + margin-right: 13px;
  405 + margin-bottom: 13px;
  406 +
  407 + .delete {
  408 + position: absolute;
  409 + width: 24rpx;
  410 + height: 24rpx;
  411 + top: -12rpx;
  412 + right: -12rpx;
  413 + z-index: 199;
  414 + }
  415 + }
  416 +
  417 + }
  418 +
  419 + }
  420 + }
  421 +
  422 + .timeb {
  423 + padding: 40rpx 36rpx;
  424 + background-color: #fff;
  425 + border-radius: 10px;
  426 + margin-top: 16rpx;
  427 + position: relative;
  428 +
  429 + .title {
  430 + font-size: 16px;
  431 + font-family: PingFangSC-Semibold, PingFang SC;
  432 + font-weight: 600;
  433 + color: #000000;
  434 + margin-bottom: 20rpx;
  435 + }
  436 +
  437 + .nodef {
  438 + display: flex;
  439 + justify-content: start;
  440 + margin-bottom: 30rpx;
  441 +
  442 + .node1 {
  443 + position: relative;
  444 + margin-top: 4px;
  445 +
  446 + .line {
  447 + position: absolute;
  448 + left: 5px;
  449 + width: 1px;
  450 + height: 100%;
  451 + background-color: #f7f7f7;
  452 + }
  453 + }
  454 +
  455 + .node2 {
  456 + margin-left: 10px;
  457 + }
  458 + }
  459 +
  460 + .u-node {
  461 + width: 8px;
  462 + height: 8px;
  463 + border-radius: 8rpx;
  464 + background: #E5E5E6;
  465 + }
  466 +
  467 + .u-order-title {
  468 + color: rgba(0,0,0,0.4500);
  469 + font-family: PingFangSC-Regular, PingFang SC;
  470 + font-weight: 400;
  471 + font-size: 24rpx;
  472 + }
  473 +
  474 + .u-order-desc {
  475 + font-size: 14px;
  476 + font-weight: bold;
  477 + color: rgba(0,0,0,1);
  478 + }
  479 +
  480 + .u-order-kf {
  481 + margin-top: 20px;
  482 + font-size: 14px;
  483 + font-weight: 400;
  484 + color: #8C8E91;
  485 + }
  486 +
  487 + .u-order-time {
  488 + font-size: 12px;
  489 + font-family: PingFangSC-Medium, PingFang SC;
  490 + font-weight: 500;
  491 + color: rgba(0,0,0,0.6500);
  492 + margin-left: 10px;
  493 + }
  494 +
  495 + .u-order-reply {
  496 + width: 245px;
  497 + padding: 10rpx 14rpx;
  498 + background: #F7F7F7;
  499 + border-radius: 24px;
  500 + margin-top: 14rpx;
  501 + }
  502 +
  503 + }
  504 +
  505 + .footer {
  506 + width: 100%;
  507 + height: 96rpx;
  508 + padding: 28rpx 30rpx;
  509 + background: #FFFFFF;
  510 + position: fixed;
  511 + bottom: 0;
  512 + left: 0;
  513 + z-index: 99;
  514 + border-top: 2rpx solid #E2E2E8;
  515 +
  516 + view {
  517 + display: inline-block;
  518 + }
  519 +
  520 + .left_btn {
  521 + width: 330rpx;
  522 + margin: 0 30rpx 0 0;
  523 + }
  524 +
  525 + .right_btn {
  526 + width: 330rpx;
  527 + }
  528 + }
  529 +
  530 + }
  531 +</style>
1 <template> 1 <template>
2 <view class="registration_review"> 2 <view class="registration_review">
3 - <view class="search_box">  
4 - <view class="check">  
5 - <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">  
6 - <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"  
7 - v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"  
8 - activeColor="#06B079" size="28rpx" labelSize="28rpx" labelColor="#202131">  
9 - </u-checkbox>  
10 - </u-checkbox-group>  
11 - </view>  
12 -  
13 - <view class="search">  
14 - <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"  
15 - bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">  
16 - </u-search>  
17 - </view>  
18 -  
19 - <u-icon slot="icon" size="40" :name="'/static/img/home/selectIcon.png'" @click="show = true"></u-icon> 3 + <view class="search_box">
  4 + <!-- <view class="check">
  5 + <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">
  6 + <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"
  7 + v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"
  8 + activeColor="#06B079" size="28rpx" labelSize="28rpx" labelColor="#202131">
  9 + </u-checkbox>
  10 + </u-checkbox-group>
  11 + </view> -->
  12 +
  13 + <!-- <view class="search">
  14 + <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  15 + bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">
  16 + </u-search>
  17 + </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>
20 </view> 26 </view>
21 27
22 <u-sticky bgColor="#fff"> 28 <u-sticky bgColor="#fff">
@@ -68,8 +74,40 @@ @@ -68,8 +74,40 @@
68 <view v-else class="no_data"> 74 <view v-else class="no_data">
69 <c-no-data></c-no-data> 75 <c-no-data></c-no-data>
70 </view> 76 </view>
71 -  
72 - <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false"> 77 +
  78 + <u-popup :show="show" mode="bottom" @close="close" :round="22">
  79 + <view class="popup">
  80 + <view style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 28px;">
  81 + <view class="title">
  82 + 项目筛选
  83 + </view>
  84 + <image class="close" src="/static/img/home/closepop.png" @click="close" mode=""></image>
  85 + </view>
  86 + <view class="search">
  87 + <u-search placeholder="请输入项目关键词搜索" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  88 + bgColor="#F4F4F4" :showAction="true" shape="round" v-model="sxsearch" @custom="workSearch()" @search="workSearch()">
  89 + </u-search>
  90 + </view>
  91 + <scroll-view v-if="works.length>0" scroll-y="true" style="height: 80%; margin-top: 40rpx;"
  92 + @scrolltolower="lower()">
  93 + <view class="item_box" v-for="(item,index) in works" :key="index" @click="popupSelItem(item)">
  94 + <view style="display: flex; align-items: center; justify-content: space-between;">
  95 + <view class="item_title">
  96 + {{item.name}}
  97 + </view>
  98 + <image v-if="item.id == projectId" style="width: 20px; height: 20px;" src="/static/img/home/popselect.png" mode=""></image>
  99 + </view>
  100 + </view>
  101 + </scroll-view>
  102 + <view v-else class="no_data" @click="jumpVerified">
  103 + <view class="text_black_28">
  104 + 暂未搜索到该项目
  105 + </view>
  106 + </view>
  107 + </view>
  108 + </u-popup>
  109 +
  110 + <!-- <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false">
73 <view class="popup_search"> 111 <view class="popup_search">
74 <view class="content"> 112 <view class="content">
75 <view class="title">按项目筛选</view> 113 <view class="title">按项目筛选</view>
@@ -101,7 +139,7 @@ @@ -101,7 +139,7 @@
101 </view> 139 </view>
102 </view> 140 </view>
103 </view> 141 </view>
104 - </u-popup> 142 + </u-popup> -->
105 </view> 143 </view>
106 </template> 144 </template>
107 145
@@ -151,8 +189,13 @@ @@ -151,8 +189,13 @@
151 projectId: '', 189 projectId: '',
152 showTime: false, 190 showTime: false,
153 timeValue: '', 191 timeValue: '',
154 - switchValue: false,  
155 - 192 + switchValue: false,
  193 +
  194 + curNow: 1,
  195 + sxsearch: '',
  196 + works: [],
  197 + workspage: 1,
  198 + workstotal: 0,
156 } 199 }
157 }, 200 },
158 201
@@ -161,11 +204,13 @@ @@ -161,11 +204,13 @@
161 this.studentId = option.studentId; 204 this.studentId = option.studentId;
162 this.projectId = option.projectId; 205 this.projectId = option.projectId;
163 206
164 - this.$store.dispatch(`home/getProjectList`, {  
165 - pageSize: -1,  
166 - }) 207 + // this.$store.dispatch(`home/getProjectList`, {
  208 + // pageSize: -1,
  209 + // })
167 210
168 - this.search.keySearch = ''; 211 + // this.search.keySearch = '';
  212 +
  213 + this.worksloadData()
169 214
170 if (option && option.category) { 215 if (option && option.category) {
171 this.search.category = option.category; 216 this.search.category = option.category;
@@ -176,10 +221,17 @@ @@ -176,10 +221,17 @@
176 ''; 221 '';
177 } 222 }
178 223
  224 + // if (option && option.status) {
  225 + // this.search.status = 'unread';
  226 + // this.checkboxValue = ['未阅'];
  227 + // this.switchValue = true;
  228 + // }
  229 +
179 if (option && option.status) { 230 if (option && option.status) {
180 - this.search.status = 'unread';  
181 - this.checkboxValue = ['未阅'];  
182 - this.switchValue = true; 231 + // this.search.status = 'wait';
  232 + this.curNow = 0;
  233 + // this.checkboxValue = ['待处理'];
  234 + // this.switchValue = true;
183 } 235 }
184 236
185 this.finished = false; 237 this.finished = false;
@@ -189,6 +241,10 @@ @@ -189,6 +241,10 @@
189 }, 241 },
190 242
191 onShow() { 243 onShow() {
  244 + this.finished = false;
  245 + this.loading = "loadmore";
  246 + this.page = 0;
  247 + this.list = [];
192 this._getList(); 248 this._getList();
193 }, 249 },
194 250
@@ -201,6 +257,20 @@ @@ -201,6 +257,20 @@
201 257
202 methods: { 258 methods: {
203 259
  260 + searchCli() {
  261 + this.$u.route('/pages/main/home/search/search?type=log&searchkey=' + this.keyword);
  262 + },
  263 +
  264 + sectionChange(index) {
  265 + this.curNow = index;
  266 +
  267 + this.finished = false;
  268 + this.loading = "loadmore";
  269 + this.page = 0;
  270 + this.list = [];
  271 + this._getList();
  272 + },
  273 +
204 getCreatedTime(e) { 274 getCreatedTime(e) {
205 let time = this.$u.timeFormat(e.logTime / 1000, 'yyyy/mm/dd'); 275 let time = this.$u.timeFormat(e.logTime / 1000, 'yyyy/mm/dd');
206 if (e.category == "weekly") { 276 if (e.category == "weekly") {
@@ -313,8 +383,12 @@ @@ -313,8 +383,12 @@
313 params.pageNumber = requestParams.page + 1; 383 params.pageNumber = requestParams.page + 1;
314 params.pageSize = 5; 384 params.pageSize = 5;
315 385
316 - if (search.status) {  
317 - params.status = search.status; 386 + // if (search.status) {
  387 + // params.status = search.status;
  388 + // }
  389 +
  390 + if (this.curNow == 0) {
  391 + params.status = 'unread';
318 } 392 }
319 393
320 if (search.category) { 394 if (search.category) {
@@ -391,7 +465,53 @@ @@ -391,7 +465,53 @@
391 465
392 this.show = false; 466 this.show = false;
393 }, 467 },
394 - 468 +
  469 + workSearch() {
  470 + uni.hideKeyboard();
  471 + this.works = []
  472 + this.worksloadData()
  473 + },
  474 +
  475 + lower() {
  476 + setTimeout(() => {
  477 + this.worksloadData(true);
  478 + }, 200)
  479 + },
  480 +
  481 + worksloadData(e) {
  482 + let params = {}
  483 + // this.loading = 'loading'
  484 +
  485 + if (e) {
  486 + if (this.total <= this.works.length) {
  487 + // this.loading = 'nomore'
  488 + return
  489 + }
  490 + this.workspage++
  491 + } else {
  492 + this.workspage = 1
  493 + }
  494 + params['pageNumber'] = this.workspage
  495 + if (this.sxsearch) {
  496 + params['keyWord'] = this.sxsearch
  497 + }
  498 + getProjectListApi(params).then(async res => {
  499 + if (res) {
  500 + this.total = res.total
  501 + // this.loading = 'loadmore'
  502 + this.works = this.works.concat(res.records)
  503 + }
  504 + })
  505 + },
  506 + popupSelItem(item) {
  507 + this.show = false
  508 + this.projectId = item.id;
  509 + this.finished = false;
  510 + this.loading = "loadmore";
  511 + this.page = 0;
  512 + this.list = [];
  513 + this._getList();
  514 + },
395 } 515 }
396 } 516 }
397 </script> 517 </script>
@@ -610,6 +730,53 @@ @@ -610,6 +730,53 @@
610 width: 346rpx; 730 width: 346rpx;
611 } 731 }
612 } 732 }
  733 + }
  734 +
  735 + .popup {
  736 + height: 500px;
  737 + padding: 19px 16px;
  738 +
  739 + .title {
  740 + font-size: 18px;
  741 + font-family: PingFangSC-Medium, PingFang SC;
  742 + font-weight: 500;
  743 + color: #000000;
  744 + }
  745 +
  746 + .close {
  747 + width: 22px;
  748 + height: 22px;
  749 + }
  750 +
  751 + .item_box {
  752 + border-radius: 4px;
  753 + margin: 0 0 48rpx;
  754 +
  755 + .item_title {
  756 + height: 20px;
  757 + font-size: 14px;
  758 + font-family: PingFangSC-Regular, PingFang SC;
  759 + font-weight: 400;
  760 + color: rgba(0, 0, 0, 0.65);
  761 + line-height: 20px;
  762 + }
  763 +
  764 + }
  765 +
  766 + .no_data {
  767 + width: 100%;
  768 + margin-top: 310rpx;
  769 +
  770 + .text_black_28 {
  771 + font-size: 14px;
  772 + font-family: PingFangSC-Light, PingFang SC;
  773 + font-weight: 300;
  774 + color: rgba(0,0,0,0.65);
  775 + text-align: center;
  776 + }
  777 +
  778 + }
  779 +
613 } 780 }
614 } 781 }
615 </style> 782 </style>
1 <template> 1 <template>
2 <view class="registration_review"> 2 <view class="registration_review">
3 - <view class="search_box">  
4 - <view class="check">  
5 - <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">  
6 - <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"  
7 - v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"  
8 - activeColor="#06B079" size="28rpx" labelSize="28rpx" labelColor="#202131">  
9 - </u-checkbox>  
10 - </u-checkbox-group>  
11 - </view>  
12 -  
13 - <view class="search">  
14 - <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"  
15 - bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">  
16 - </u-search>  
17 - </view>  
18 -  
19 - <u-icon slot="icon" size="40" :name="'/static/img/home/selectIcon.png'" @click="show = true"></u-icon> 3 + <view class="search_box">
  4 + <!-- <view class="check">
  5 + <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">
  6 + <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"
  7 + v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"
  8 + activeColor="#06B079" size="28rpx" labelSize="28rpx" labelColor="#202131">
  9 + </u-checkbox>
  10 + </u-checkbox-group>
  11 + </view> -->
  12 +
  13 + <!-- <view class="search">
  14 + <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  15 + bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">
  16 + </u-search>
  17 + </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>
20 </view> 26 </view>
21 27
22 <view class="list_box" v-if="list.length > 0"> 28 <view class="list_box" v-if="list.length > 0">
@@ -59,9 +65,41 @@ @@ -59,9 +65,41 @@
59 </view> 65 </view>
60 <view v-else class="no_data"> 66 <view v-else class="no_data">
61 <c-no-data></c-no-data> 67 <c-no-data></c-no-data>
62 - </view> 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 == projectId" style="width: 20px; height: 20px;" src="/static/img/home/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>
63 101
64 - <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false"> 102 + <!-- <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false">
65 <view class="popup_search"> 103 <view class="popup_search">
66 <view class="content"> 104 <view class="content">
67 <view class="title">按项目筛选</view> 105 <view class="title">按项目筛选</view>
@@ -94,7 +132,7 @@ @@ -94,7 +132,7 @@
94 </view> 132 </view>
95 133
96 </view> 134 </view>
97 - </u-popup> 135 + </u-popup> -->
98 136
99 </view> 137 </view>
100 </template> 138 </template>
@@ -132,32 +170,44 @@ @@ -132,32 +170,44 @@
132 170
133 }, 171 },
134 projectId: '', 172 projectId: '',
135 - switchValue: false, 173 + switchValue: false,
  174 + curNow: 1,
  175 + sxsearch: '',
  176 + works: [],
  177 + workspage: 1,
  178 + workstotal: 0,
136 } 179 }
137 }, 180 },
138 181
139 onLoad(option) { 182 onLoad(option) {
140 console.log(option) 183 console.log(option)
141 - this.$store.dispatch(`home/getProjectList`, {  
142 - pageSize: -1,  
143 - })  
144 -  
145 - this.search.keySearch = '';  
146 - 184 + // this.$store.dispatch(`home/getProjectList`, {
  185 + // pageSize: -1,
  186 + // })
  187 +
  188 + // this.search.keySearch = '';
  189 +
  190 + this.worksloadData()
  191 +
147 if (option && option.status) { 192 if (option && option.status) {
148 - this.search.status = 'wait';  
149 - this.checkboxValue = ['待审核'];  
150 - this.switchValue = true; 193 + // this.search.status = 'wait';
  194 + // this.checkboxValue = ['待审核'];
  195 + // this.switchValue = true;
  196 + this.curNow = 0;
151 } 197 }
152 198
153 - this.finished = false;  
154 - this.loading = "loadmore";  
155 - this.page = 0;  
156 - this.list = []; 199 + // this.finished = false;
  200 + // this.loading = "loadmore";
  201 + // this.page = 0;
  202 + // this.list = [];
157 203
158 }, 204 },
159 205
160 onShow() { 206 onShow() {
  207 + this.finished = false;
  208 + this.loading = "loadmore";
  209 + this.page = 0;
  210 + this.list = [];
161 this._getList(); 211 this._getList();
162 }, 212 },
163 213
@@ -170,7 +220,21 @@ @@ -170,7 +220,21 @@
170 220
171 }, 221 },
172 222
173 - methods: { 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 + },
174 238
175 handelDetail(record) { 239 handelDetail(record) {
176 this.$u.route({ 240 this.$u.route({
@@ -228,8 +292,14 @@ @@ -228,8 +292,14 @@
228 params.pageNumber = requestParams.page + 1; 292 params.pageNumber = requestParams.page + 1;
229 params.pageSize = 5; 293 params.pageSize = 5;
230 294
231 - if (search.status) {  
232 - params.status = search.status; 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';
233 } 303 }
234 304
235 if (this.keyword) { 305 if (this.keyword) {
@@ -300,7 +370,53 @@ @@ -300,7 +370,53 @@
300 370
301 this.show = false; 371 this.show = false;
302 }, 372 },
303 - 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 + getProjectListApi(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.projectId = item.id;
  414 + this.finished = false;
  415 + this.loading = "loadmore";
  416 + this.page = 0;
  417 + this.list = [];
  418 + this._getList();
  419 + },
304 } 420 }
305 } 421 }
306 </script> 422 </script>
@@ -480,6 +596,53 @@ @@ -480,6 +596,53 @@
480 width: 346rpx; 596 width: 346rpx;
481 } 597 }
482 } 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 +
483 } 646 }
484 } 647 }
485 </style> 648 </style>
@@ -216,106 +216,54 @@ @@ -216,106 +216,54 @@
216 }) 216 })
217 }, 217 },
218 218
219 - openLink(e) {  
220 - var _this = this  
221 - this.mFileDir = e.filename.substring(0, e.filename.lastIndexOf('.'))  
222 - this.mFileType = e.filename.substring(e.filename.lastIndexOf('.'), e.filename.length)  
223 - getImgUrlApi({  
224 - bucket: e.bucket,  
225 - filePath: e.object  
226 - }).then(data => {  
227 - console.log("data...", data)  
228 - if (e.mime_type.indexOf("image") != -1) {  
229 - _this.openImage(data.url)  
230 - } else {  
231 - uni.downloadFile({  
232 - url: data.url,  
233 - filePath: wx.env.USER_DATA_PATH + '/' + _this.mFileDir + this.mFileType,  
234 - success: (res) => {  
235 - if (res.statusCode === 200) {  
236 - uni.showLoading();  
237 - console.log('download succ', res)  
238 - let fileMgr = wx.getFileSystemManager();  
239 - let filePath = res.filePath  
240 - uni.saveFile({  
241 - tempFilePath: filePath,  
242 - success: function(res) {  
243 - var savedFilePath = res.savedFilePath;  
244 - /* 删除缓存 */  
245 - fileMgr.unlink({  
246 - filePath: wx.env.USER_DATA_PATH +  
247 - '/' +  
248 - _this.mFileDir + _this  
249 - .mFileType,  
250 - success: function(res) {  
251 - console.log(  
252 - 'unlink success:',  
253 - res);  
254 - }  
255 - })  
256 - _this.openDoc()  
257 - },  
258 - fail: function(res) {  
259 - console.log('save fail', res);  
260 - _this.createFile()  
261 - }  
262 - })  
263 - }  
264 - }  
265 - });  
266 - }  
267 - })  
268 - },  
269 -  
270 - createFile() {  
271 - let fileMgr = wx.getFileSystemManager();  
272 - var _this = this  
273 - //利用access方法判断文件是否可用  
274 - fileMgr.access({  
275 - path: wx.env.USER_DATA_PATH + '/' + _this.mFileDir,  
276 - success: (res) => {  
277 - console.log('check success:', res);  
278 - _this.openDoc()  
279 - },  
280 - fail: (res) => {  
281 - console.log('check fail.', res);  
282 - fileMgr.mkdir({  
283 - dirPath: wx.env.USER_DATA_PATH + '/' + _this.mFileDir,  
284 - success: (res) => {  
285 - console.log('mk dir success:', res);  
286 - _this.openDoc()  
287 - },  
288 - fail: (res) => {  
289 - console.log('mk dir fail:', res);  
290 - uni.hideLoading();  
291 - }  
292 - });  
293 - }  
294 - });  
295 - },  
296 -  
297 - openDoc() {  
298 - uni.openDocument({  
299 - filePath: wx.env.USER_DATA_PATH + '/' + this.mFileDir + this.mFileType,  
300 - showMenu: true,  
301 - success: function(res) {  
302 - uni.hideLoading();  
303 - console.log('openDoc succ');  
304 - }  
305 - });  
306 - },  
307 -  
308 - openImage(imgPath) {  
309 - let array = new Array(1).fill(imgPath);  
310 - uni.previewImage({  
311 - urls: array,  
312 - success(res) {  
313 - console.log('openImage success');  
314 - },  
315 - fail(res) {  
316 - console.log('openImage fail:', res);  
317 - }  
318 - }); 219 + openLink(e) {
  220 + var _this = this
  221 +
  222 + uni.showLoading({
  223 + title: '努力加载中~',
  224 + mask: true
  225 + })
  226 +
  227 + getImgUrlApi({
  228 + bucket: e.bucket,
  229 + filePath: e.object
  230 + }).then(data => {
  231 + console.log("data...", data)
  232 + if (e.mime_type.indexOf("image") != -1) {
  233 + _this.openImage(data.url)
  234 + } else {
  235 + uni.downloadFile({
  236 + url: data.url,
  237 + success: function(res) {
  238 + var filePath = res.tempFilePath;
  239 + uni.openDocument({
  240 + filePath: filePath,
  241 + showMenu: true,
  242 + success: function(res) {
  243 + console.log('打开文档成功');
  244 + },
  245 + complete: function() {
  246 + uni.hideLoading();
  247 + }
  248 + });
  249 + }
  250 + });
  251 + }
  252 + })
  253 + },
  254 + openImage(imgPath) {
  255 + let array = new Array(1).fill(imgPath);
  256 + uni.previewImage({
  257 + urls: array,
  258 + success(res) {
  259 + uni.hideLoading();
  260 + console.log('openImage success');
  261 + },
  262 + fail(res) {
  263 + uni.hideLoading();
  264 + console.log('openImage fail:', res);
  265 + }
  266 + });
319 }, 267 },
320 268
321 deletePic(index) { 269 deletePic(index) {
1 <template> 1 <template>
2 <view class="registration_review"> 2 <view class="registration_review">
3 - <view class="search_box" v-if="!studentId">  
4 - <view class="top">  
5 - <view class="check">  
6 - <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">  
7 - <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"  
8 - v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"  
9 - activeColor="#06B079" size="28rpx" labelSize="28rpx" labelColor="#202131">  
10 - </u-checkbox>  
11 - </u-checkbox-group>  
12 - </view>  
13 -  
14 - <view class="search">  
15 - <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"  
16 - bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">  
17 - </u-search>  
18 - </view>  
19 -  
20 - <u-icon slot="icon" size="40" :name="'/static/img/home/selectIcon.png'" @click="show = true"></u-icon>  
21 - </view> 3 + <view class="search_box">
  4 + <!-- <view class="check">
  5 + <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">
  6 + <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"
  7 + v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"
  8 + activeColor="#06B079" size="28rpx" labelSize="28rpx" labelColor="#202131">
  9 + </u-checkbox>
  10 + </u-checkbox-group>
  11 + </view> -->
  12 +
  13 + <!-- <view class="search">
  14 + <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  15 + bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">
  16 + </u-search>
  17 + </view> -->
  18 + <view style="width: 148px;">
  19 + <u-subsection :list="['待审核','全部']" :current="curNow" :fontSize="26" :activeColor="'#000'"
  20 + @change="sectionChange"></u-subsection>
  21 + </view>
  22 + <view style="display: flex; justify-content: space-between; align-items: center;">
  23 + <u-icon slot="icon" size="40" :name="'/static/img/home/search.png'" @click="searchCli"></u-icon>
  24 + <view style="width: 16px;"></view>
  25 + <u-icon slot="icon" size="40" :name="'/static/img/home/selectIcon.png'" @click="show = true"></u-icon>
  26 + </view>
22 </view> 27 </view>
23 28
24 <view class="list_box" v-if="list.length > 0"> 29 <view class="list_box" v-if="list.length > 0">
@@ -60,8 +65,41 @@ @@ -60,8 +65,41 @@
60 <view v-else class="no_data"> 65 <view v-else class="no_data">
61 <c-no-data></c-no-data> 66 <c-no-data></c-no-data>
62 </view> 67 </view>
63 -  
64 - <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false"> 68 +
  69 + <u-popup :show="show" mode="bottom" @close="close" :round="22">
  70 + <view class="popup">
  71 + <view style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 28px;">
  72 + <view class="title">
  73 + 项目筛选
  74 + </view>
  75 + <image class="close" src="/static/img/home/closepop.png" @click="close" mode=""></image>
  76 + </view>
  77 + <view class="search">
  78 + <u-search placeholder="请输入项目关键词搜索" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  79 + bgColor="#F4F4F4" :showAction="true" shape="round" v-model="sxsearch" @custom="workSearch()" @search="workSearch()">
  80 + </u-search>
  81 + </view>
  82 + <scroll-view v-if="works.length>0" scroll-y="true" style="height: 80%; margin-top: 40rpx;"
  83 + @scrolltolower="lower()">
  84 + <view class="item_box" v-for="(item,index) in works" :key="index" @click="popupSelItem(item)">
  85 + <view style="display: flex; align-items: center; justify-content: space-between;">
  86 + <view class="item_title">
  87 + {{item.name}}
  88 + </view>
  89 + <image v-if="item.id == projectId" style="width: 20px; height: 20px;"
  90 + src="/static/img/home/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">
65 <view class="popup_search"> 103 <view class="popup_search">
66 <view class="content"> 104 <view class="content">
67 <view class="title">按项目筛选</view> 105 <view class="title">按项目筛选</view>
@@ -94,7 +132,7 @@ @@ -94,7 +132,7 @@
94 </view> 132 </view>
95 133
96 </view> 134 </view>
97 - </u-popup> 135 + </u-popup> -->
98 136
99 </view> 137 </view>
100 </template> 138 </template>
@@ -144,7 +182,11 @@ @@ -144,7 +182,11 @@
144 list: [], //列表必须为key list的数组 182 list: [], //列表必须为key list的数组
145 projectId: '', 183 projectId: '',
146 switchValue: false, 184 switchValue: false,
147 - 185 + curNow: 1,
  186 + sxsearch: '',
  187 + works: [],
  188 + workspage: 1,
  189 + workstotal: 0,
148 } 190 }
149 }, 191 },
150 192
@@ -153,16 +195,19 @@ @@ -153,16 +195,19 @@
153 this.studentId = option.studentId; 195 this.studentId = option.studentId;
154 this.projectId = option.projectId; 196 this.projectId = option.projectId;
155 197
156 - this.$store.dispatch(`home/getProjectList`, {  
157 - pageSize: -1,  
158 - }) 198 + // this.$store.dispatch(`home/getProjectList`, {
  199 + // pageSize: -1,
  200 + // })
  201 +
  202 + this.worksloadData()
159 203
160 - this.search.keySearch = ''; 204 + // this.search.keySearch = '';
161 205
162 if (option && option.status) { 206 if (option && option.status) {
163 - this.search.status = 'stay_examine';  
164 - this.checkboxValue = ['待批阅'];  
165 - this.switchValue = true; 207 + // this.search.status = 'stay_examine';
  208 + // this.checkboxValue = ['待批阅'];
  209 + // this.switchValue = true;
  210 + this.curNow = 0;
166 } 211 }
167 212
168 this.finished = false; 213 this.finished = false;
@@ -172,6 +217,10 @@ @@ -172,6 +217,10 @@
172 }, 217 },
173 218
174 onShow() { 219 onShow() {
  220 + this.finished = false;
  221 + this.loading = "loadmore";
  222 + this.page = 0;
  223 + this.list = [];
175 this._getList(); 224 this._getList();
176 }, 225 },
177 226
@@ -184,7 +233,22 @@ @@ -184,7 +233,22 @@
184 233
185 }, 234 },
186 235
187 - methods: { 236 + methods: {
  237 +
  238 + searchCli() {
  239 + this.$u.route('/pages/main/home/search/search?type=report&searchkey=' + this.keyword);
  240 + },
  241 +
  242 + sectionChange(index) {
  243 + this.curNow = index;
  244 +
  245 + this.finished = false;
  246 + this.loading = "loadmore";
  247 + this.page = 0;
  248 + this.list = [];
  249 + this._getList();
  250 + },
  251 +
188 getNameLastTwo(value) { 252 getNameLastTwo(value) {
189 if (value && value.length > 3) { 253 if (value && value.length > 3) {
190 return value.substring(value.length - 3) 254 return value.substring(value.length - 3)
@@ -262,8 +326,12 @@ @@ -262,8 +326,12 @@
262 params.pageNumber = requestParams.page + 1; 326 params.pageNumber = requestParams.page + 1;
263 params.pageSize = 5; 327 params.pageSize = 5;
264 328
265 - if (search.status) {  
266 - params.status = search.status; 329 + // if (search.status) {
  330 + // params.status = search.status;
  331 + // }
  332 +
  333 + if (this.curNow == 0) {
  334 + params.status = 'stay_examine';
267 } 335 }
268 336
269 if (this.keyword) { 337 if (this.keyword) {
@@ -338,7 +406,53 @@ @@ -338,7 +406,53 @@
338 406
339 this.show = false; 407 this.show = false;
340 }, 408 },
341 - 409 +
  410 + workSearch() {
  411 + uni.hideKeyboard();
  412 + this.works = []
  413 + this.worksloadData()
  414 + },
  415 +
  416 + lower() {
  417 + setTimeout(() => {
  418 + this.worksloadData(true);
  419 + }, 200)
  420 + },
  421 +
  422 + worksloadData(e) {
  423 + let params = {}
  424 + // this.loading = 'loading'
  425 +
  426 + if (e) {
  427 + if (this.total <= this.works.length) {
  428 + // this.loading = 'nomore'
  429 + return
  430 + }
  431 + this.workspage++
  432 + } else {
  433 + this.workspage = 1
  434 + }
  435 + params['pageNumber'] = this.workspage
  436 + if (this.sxsearch) {
  437 + params['keyWord'] = this.sxsearch
  438 + }
  439 + getProjectListApi(params).then(async res => {
  440 + if (res) {
  441 + this.total = res.total
  442 + // this.loading = 'loadmore'
  443 + this.works = this.works.concat(res.records)
  444 + }
  445 + })
  446 + },
  447 + popupSelItem(item) {
  448 + this.show = false
  449 + this.projectId = item.id;
  450 + this.finished = false;
  451 + this.loading = "loadmore";
  452 + this.page = 0;
  453 + this.list = [];
  454 + this._getList();
  455 + },
342 } 456 }
343 } 457 }
344 </script> 458 </script>
@@ -350,32 +464,20 @@ @@ -350,32 +464,20 @@
350 height: auto; 464 height: auto;
351 background-color: #F7F7F7; 465 background-color: #F7F7F7;
352 466
353 - .search_box {  
354 - padding: 36rpx 30rpx 0;  
355 - background-color: #FFFFFF;  
356 -  
357 - .top {  
358 - display: flex;  
359 - flex-flow: row nowrap;  
360 - justify-content: space-between;  
361 - padding: 0 0 30rpx 0;  
362 -  
363 - .check {  
364 - padding: 20rpx 0 0 0;  
365 - }  
366 -  
367 - .search {  
368 - width: 468rpx;  
369 - }  
370 - }  
371 -  
372 - .bottom {  
373 - .time {  
374 - padding: 30rpx 0 30rpx 40rpx;  
375 - }  
376 - }  
377 -  
378 - 467 + .search_box {
  468 + padding: 36rpx 30rpx 12rpx;
  469 + background-color: #FFFFFF;
  470 + display: flex;
  471 + flex-flow: row nowrap;
  472 + justify-content: space-between;
  473 +
  474 + .check {
  475 + padding: 20rpx 0 0 0;
  476 + }
  477 +
  478 + .search {
  479 + width: 468rpx;
  480 + }
379 } 481 }
380 482
381 .list_box { 483 .list_box {
@@ -545,6 +647,53 @@ @@ -545,6 +647,53 @@
545 width: 346rpx; 647 width: 346rpx;
546 } 648 }
547 } 649 }
  650 + }
  651 +
  652 + .popup {
  653 + height: 500px;
  654 + padding: 19px 16px;
  655 +
  656 + .title {
  657 + font-size: 18px;
  658 + font-family: PingFangSC-Medium, PingFang SC;
  659 + font-weight: 500;
  660 + color: #000000;
  661 + }
  662 +
  663 + .close {
  664 + width: 22px;
  665 + height: 22px;
  666 + }
  667 +
  668 + .item_box {
  669 + border-radius: 4px;
  670 + margin: 0 0 48rpx;
  671 +
  672 + .item_title {
  673 + height: 20px;
  674 + font-size: 14px;
  675 + font-family: PingFangSC-Regular, PingFang SC;
  676 + font-weight: 400;
  677 + color: rgba(0, 0, 0, 0.65);
  678 + line-height: 20px;
  679 + }
  680 +
  681 + }
  682 +
  683 + .no_data {
  684 + width: 100%;
  685 + margin-top: 310rpx;
  686 +
  687 + .text_black_28 {
  688 + font-size: 14px;
  689 + font-family: PingFangSC-Light, PingFang SC;
  690 + font-weight: 300;
  691 + color: rgba(0, 0, 0, 0.65);
  692 + text-align: center;
  693 + }
  694 +
  695 + }
  696 +
548 } 697 }
549 } 698 }
550 </style> 699 </style>
1 <template> 1 <template>
2 <view class="registration_review"> 2 <view class="registration_review">
3 - <view class="search_box">  
4 - <view class="top">  
5 - <view class="check">  
6 - <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">  
7 - <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"  
8 - v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"  
9 - activeColor="#06B079" size="28rpx" labelSize="28rpx" labelColor="#202131">  
10 - </u-checkbox>  
11 - </u-checkbox-group>  
12 - </view>  
13 -  
14 - <view class="search">  
15 - <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"  
16 - bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">  
17 - </u-search>  
18 - </view>  
19 -  
20 - <view class="icon">  
21 - <view :style="{position:'relative', top:'14rpx', right:'18rpx'}">  
22 - <u-icon slot="icon" size="40" :name="'/static/img/home/dateIcon.png'" @click="showTime = true">  
23 - </u-icon>  
24 - </view>  
25 - <u-icon slot="icon" size="40" :name="'/static/img/home/selectIcon.png'" @click="show = true">  
26 - </u-icon>  
27 - </view>  
28 -  
29 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>
30 </view> 8 </view>
31 - <view class="bottom" :style="{padding:'0 0 20rpx 0'}">  
32 - <u-calendar :minDate="minDate" :maxDate="maxDate" :monthNum="25" :show="showTime"  
33 - :defaultDate="defaultDateMultiple" @close="showTime = false" :showSubtitle="false" color="#06B079"  
34 - @confirm="confirm">  
35 - </u-calendar>  
36 - <!-- <view class="time">{{timeValue}}</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>
37 </view> 15 </view>
38 </view> 16 </view>
39 17
  18 + <u-calendar :minDate="minDate" :maxDate="maxDate" :monthNum="25" :show="showTime" :defaultDate="defaultDateMultiple"
  19 + @close="showTime = false" :showSubtitle="false" color="#06B079" @confirm="confirm">
  20 + </u-calendar>
  21 +
40 <view class="list_box" v-if="list.length > 0"> 22 <view class="list_box" v-if="list.length > 0">
41 <view class="item" v-for="(item, i) in list" :key="i"> 23 <view class="item" v-for="(item, i) in list" :key="i">
42 24
@@ -54,10 +36,10 @@ @@ -54,10 +36,10 @@
54 <view class="avatar">{{getNameLastTwo(item.studentName)}}</view> 36 <view class="avatar">{{getNameLastTwo(item.studentName)}}</view>
55 <view class="name">{{overflowHide(item.studentName)}}</view> 37 <view class="name">{{overflowHide(item.studentName)}}</view>
56 <view class="number">{{item.studentNumber}}</view> 38 <view class="number">{{item.studentNumber}}</view>
57 - </view>  
58 - <view class="company">  
59 - <text>实习项目</text>  
60 - <text>{{item.projectName || '--'}}</text> 39 + </view>
  40 + <view class="company">
  41 + <text>实习项目</text>
  42 + <text>{{item.projectName || '--'}}</text>
61 </view> 43 </view>
62 <view class="company"> 44 <view class="company">
63 <text>班级</text> 45 <text>班级</text>
@@ -79,8 +61,41 @@ @@ -79,8 +61,41 @@
79 <view v-else class="no_data"> 61 <view v-else class="no_data">
80 <c-no-data></c-no-data> 62 <c-no-data></c-no-data>
81 </view> 63 </view>
82 -  
83 - <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false"> 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 == projectId" style="width: 20px; height: 20px;"
  86 + src="/static/img/home/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">
84 <view class="popup_search"> 99 <view class="popup_search">
85 <view class="content"> 100 <view class="content">
86 <view class="title">按项目筛选</view> 101 <view class="title">按项目筛选</view>
@@ -113,7 +128,7 @@ @@ -113,7 +128,7 @@
113 </view> 128 </view>
114 129
115 </view> 130 </view>
116 - </u-popup> 131 + </u-popup> -->
117 132
118 </view> 133 </view>
119 </template> 134 </template>
@@ -165,29 +180,46 @@ @@ -165,29 +180,46 @@
165 defaultDateMultiple: [`${year}-${month}-${date}`], 180 defaultDateMultiple: [`${year}-${month}-${date}`],
166 list: [], //列表必须为key list的数组 181 list: [], //列表必须为key list的数组
167 projectId: '', 182 projectId: '',
168 - switchValue: false,  
169 - 183 + switchValue: false,
  184 +
  185 + curNow: 1,
  186 + sxsearch: '',
  187 + works: [],
  188 + workspage: 1,
  189 + workstotal: 0,
170 } 190 }
171 }, 191 },
172 192
173 onLoad(option) { 193 onLoad(option) {
174 - this.$store.dispatch(`home/getProjectList`, {  
175 - pageSize: -1,  
176 - })  
177 -  
178 - this.search.keySearch = '';  
179 -  
180 - this.finished = false;  
181 - this.loading = "loadmore";  
182 - this.page = 0;  
183 - this.list = [];  
184 -  
185 - 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 +
186 214
187 }, 215 },
188 216
189 - onShow() {  
190 - this._getList(); 217 + onShow() {
  218 + this.finished = false;
  219 + this.loading = "loadmore";
  220 + this.page = 0;
  221 + this.list = [];
  222 + this._getList();
191 }, 223 },
192 224
193 computed: { 225 computed: {
@@ -199,7 +231,22 @@ @@ -199,7 +231,22 @@
199 231
200 }, 232 },
201 233
202 - methods: { 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 +
203 250
204 getNameLastTwo(value) { 251 getNameLastTwo(value) {
205 if (value && value.length > 3) { 252 if (value && value.length > 3) {
@@ -286,8 +333,12 @@ @@ -286,8 +333,12 @@
286 params.pageNumber = requestParams.page + 1; 333 params.pageNumber = requestParams.page + 1;
287 params.pageSize = 5; 334 params.pageSize = 5;
288 335
289 - if (search.waitAttendance) {  
290 - params.waitAttendance = search.waitAttendance; 336 + // if (search.waitAttendance) {
  337 + // params.waitAttendance = search.waitAttendance;
  338 + // }
  339 +
  340 + if (this.curNow == 0) {
  341 + params.waitAttendance = 'not_attendance';
291 } 342 }
292 343
293 if (this.keyword) { 344 if (this.keyword) {
@@ -361,7 +412,54 @@ @@ -361,7 +412,54 @@
361 412
362 this.show = false; 413 this.show = false;
363 }, 414 },
364 - 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 + getProjectListApi(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.projectId = item.id;
  456 + this.finished = false;
  457 + this.loading = "loadmore";
  458 + this.page = 0;
  459 + this.list = [];
  460 + this._getList();
  461 + },
  462 +
365 } 463 }
366 } 464 }
367 </script> 465 </script>
@@ -373,36 +471,52 @@ @@ -373,36 +471,52 @@
373 height: auto; 471 height: auto;
374 background-color: #F7F7F7; 472 background-color: #F7F7F7;
375 473
376 - .search_box {  
377 - padding: 36rpx 30rpx 0;  
378 - background-color: #FFFFFF;  
379 -  
380 - .top {  
381 - display: flex;  
382 - flex-flow: row nowrap;  
383 - justify-content: space-between;  
384 -  
385 - .check {  
386 - padding: 20rpx 0 0 0;  
387 - }  
388 -  
389 - .search {  
390 - width: 410rpx;  
391 - }  
392 -  
393 - .icon {  
394 - display: flex;  
395 - flex-flow: row nowrap;  
396 - }  
397 - }  
398 -  
399 - .bottom {  
400 - .time {  
401 - padding: 30rpx 0 30rpx 40rpx;  
402 - }  
403 - }  
404 -  
405 - 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 + }
406 } 520 }
407 521
408 .list_box { 522 .list_box {
@@ -469,20 +583,20 @@ @@ -469,20 +583,20 @@
469 flex-flow: row nowrap; 583 flex-flow: row nowrap;
470 margin: 0 0 30rpx 0; 584 margin: 0 0 30rpx 0;
471 585
472 - text { 586 + text {
473 width: 130rpx; 587 width: 130rpx;
474 font-size: 28rpx; 588 font-size: 28rpx;
475 line-height: 32rpx; 589 line-height: 32rpx;
476 color: #909097; 590 color: #909097;
477 margin: 0 0 0 16rpx; 591 margin: 0 0 0 16rpx;
478 - }  
479 -  
480 - text:first-child {  
481 - text-align: justify;  
482 - text-align-last: justify;  
483 } 592 }
484 593
485 - text:last-child { 594 + text:first-child {
  595 + text-align: justify;
  596 + text-align-last: justify;
  597 + }
  598 +
  599 + text:last-child {
486 width: 400rpx; 600 width: 400rpx;
487 color: #202131; 601 color: #202131;
488 margin: 0 0 0 30rpx; 602 margin: 0 0 0 30rpx;
@@ -521,32 +635,32 @@ @@ -521,32 +635,32 @@
521 color: #202131; 635 color: #202131;
522 } 636 }
523 637
524 - .scroll {  
525 - max-height: 60vh;  
526 -  
527 - .item {  
528 -  
529 - view {  
530 - display: flex;  
531 - flex-flow: row wrap;  
532 - align-items: center;  
533 - width: 500rpx;  
534 - height: 74rpx;  
535 - border-radius: 4rpx;  
536 - border: 2rpx solid #C1C1C9;  
537 - margin: 0 10rpx 20rpx;  
538 - font-size: 24rpx;  
539 - line-height: 32rpx;  
540 - color: #C0C0C9;  
541 - padding: 16rpx 20rpx;  
542 - }  
543 -  
544 - .selectItem {  
545 - background-color: #06B079;  
546 - color: #FFFFFF;  
547 - border: 2rpx solid #06B079;  
548 - }  
549 - } 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: #06B079;
  660 + color: #FFFFFF;
  661 + border: 2rpx solid #06B079;
  662 + }
  663 + }
550 } 664 }
551 665
552 .time { 666 .time {
@@ -593,6 +707,53 @@ @@ -593,6 +707,53 @@
593 width: 346rpx; 707 width: 346rpx;
594 } 708 }
595 } 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 +
596 } 757 }
597 } 758 }
598 </style> 759 </style>
@@ -99,8 +99,12 @@ @@ -99,8 +99,12 @@
99 99
100 openLink(e) { 100 openLink(e) {
101 var _this = this 101 var _this = this
102 - this.mFileDir = e.filename.substring(0, e.filename.lastIndexOf('.'))  
103 - this.mFileType = e.filename.substring(e.filename.lastIndexOf('.'), e.filename.length) 102 +
  103 + uni.showLoading({
  104 + title: '努力加载中~',
  105 + mask: true
  106 + })
  107 +
104 getImgUrlApi({ 108 getImgUrlApi({
105 bucket: e.bucket, 109 bucket: e.bucket,
106 filePath: e.object 110 filePath: e.object
@@ -111,89 +115,34 @@ @@ -111,89 +115,34 @@
111 } else { 115 } else {
112 uni.downloadFile({ 116 uni.downloadFile({
113 url: data.url, 117 url: data.url,
114 - filePath: wx.env.USER_DATA_PATH + '/' + _this.mFileDir + this.mFileType,  
115 - success: (res) => {  
116 - if (res.statusCode === 200) {  
117 - uni.showLoading();  
118 - console.log('download succ', res)  
119 - let fileMgr = wx.getFileSystemManager();  
120 - let filePath = res.filePath  
121 - uni.saveFile({  
122 - tempFilePath: filePath,  
123 - success: function(res) {  
124 - var savedFilePath = res.savedFilePath;  
125 - /* 删除缓存 */  
126 - fileMgr.unlink({  
127 - filePath: wx.env.USER_DATA_PATH +  
128 - '/' +  
129 - _this.mFileDir + _this  
130 - .mFileType,  
131 - success: function(res) {  
132 - console.log(  
133 - 'unlink success:',  
134 - res);  
135 - }  
136 - })  
137 - _this.openDoc()  
138 - },  
139 - fail: function(res) {  
140 - console.log('save fail', res);  
141 - _this.createFile()  
142 - }  
143 - })  
144 - } 118 + success: function(res) {
  119 + var filePath = res.tempFilePath;
  120 + uni.openDocument({
  121 + filePath: filePath,
  122 + showMenu: true,
  123 + success: function(res) {
  124 + console.log('打开文档成功');
  125 + },
  126 + complete: function() {
  127 + uni.hideLoading();
  128 + }
  129 + });
145 } 130 }
146 }); 131 });
147 } 132 }
148 }) 133 })
149 }, 134 },
150 135
151 - createFile() {  
152 - let fileMgr = wx.getFileSystemManager();  
153 - var _this = this  
154 - //利用access方法判断文件是否可用  
155 - fileMgr.access({  
156 - path: wx.env.USER_DATA_PATH + '/' + _this.mFileDir,  
157 - success: (res) => {  
158 - console.log('check success:', res);  
159 - _this.openDoc()  
160 - },  
161 - fail: (res) => {  
162 - console.log('check fail.', res);  
163 - fileMgr.mkdir({  
164 - dirPath: wx.env.USER_DATA_PATH + '/' + _this.mFileDir,  
165 - success: (res) => {  
166 - console.log('mk dir success:', res);  
167 - _this.openDoc()  
168 - },  
169 - fail: (res) => {  
170 - console.log('mk dir fail:', res);  
171 - uni.hideLoading();  
172 - }  
173 - });  
174 - }  
175 - });  
176 - },  
177 -  
178 - openDoc() {  
179 - uni.openDocument({  
180 - filePath: wx.env.USER_DATA_PATH + '/' + this.mFileDir + this.mFileType,  
181 - showMenu: true,  
182 - success: function(res) {  
183 - uni.hideLoading();  
184 - console.log('openDoc succ');  
185 - }  
186 - });  
187 - },  
188 -  
189 openImage(imgPath) { 136 openImage(imgPath) {
190 let array = new Array(1).fill(imgPath); 137 let array = new Array(1).fill(imgPath);
191 uni.previewImage({ 138 uni.previewImage({
192 urls: array, 139 urls: array,
193 success(res) { 140 success(res) {
  141 + uni.hideLoading();
194 console.log('openImage success'); 142 console.log('openImage success');
195 }, 143 },
196 fail(res) { 144 fail(res) {
  145 + uni.hideLoading();
197 console.log('openImage fail:', res); 146 console.log('openImage fail:', res);
198 } 147 }
199 }); 148 });
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 <text>实践课程</text> 48 <text>实践课程</text>
49 <text class="value_type">{{interDetail.courseName}}</text> 49 <text class="value_type">{{interDetail.courseName}}</text>
50 </view> 50 </view>
51 - <view style="margin-top: 32rpx;"> 51 + <!-- <view style="margin-top: 32rpx;">
52 <text>实习成绩</text> 52 <text>实习成绩</text>
53 <text v-if="grades" class="value_type">{{grades}}</text> 53 <text v-if="grades" class="value_type">{{grades}}</text>
54 <text v-else class="value_type">--</text> 54 <text v-else class="value_type">--</text>
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 <text>实习评价</text> 57 <text>实习评价</text>
58 <text v-if="interDetail.teacherView" class="value_type">{{interDetail.teacherView}}</text> 58 <text v-if="interDetail.teacherView" class="value_type">{{interDetail.teacherView}}</text>
59 <text v-else class="value_type">--</text> 59 <text v-else class="value_type">--</text>
60 - </view> 60 + </view> -->
61 </view> 61 </view>
62 <!-- 项目信息 --> 62 <!-- 项目信息 -->
63 <text class="text_title">项目信息</text> 63 <text class="text_title">项目信息</text>
@@ -129,7 +129,7 @@ @@ -129,7 +129,7 @@
129 <text class="credit">学分:{{item.credit}}分</text> 129 <text class="credit">学分:{{item.credit}}分</text>
130 </view> 130 </view>
131 131
132 - <view class="projiect_item" v-for="(ele, index) in item.achievementDataList" :key="index"> 132 + <view class="projiect_item" v-for="(ele, index) in item.entryDataList" :key="index" @click="projiectSel(ele)">
133 133
134 <view class="projiect"> 134 <view class="projiect">
135 <text>项目名称</text> 135 <text>项目名称</text>
@@ -140,33 +140,67 @@ @@ -140,33 +140,67 @@
140 <text>{{ ele.internshipStartTime>0 ? `${timeFormat(ele.internshipStartTime)}至${timeFormat(ele.internshipEndTime)}` : '--'}}</text> 140 <text>{{ ele.internshipStartTime>0 ? `${timeFormat(ele.internshipStartTime)}至${timeFormat(ele.internshipEndTime)}` : '--'}}</text>
141 </view> 141 </view>
142 <view class="projiect"> 142 <view class="projiect">
143 - <text>实习单号</text>  
144 - <text @click="handelDetail(ele, 'internship')"  
145 - :style="{color:'#06B079',textDecoration:'underline'}">{{ele.formNumber|| '--'}}</text> 143 + <text>实习形式</text>
  144 + <!-- <text @click="handelDetail(ele, 'internship')"
  145 + :style="{color:'#06B079',textDecoration:'underline'}">{{ele.formNumber|| '--'}}</text> -->
  146 + <text>{{ele.practiceForm=='oneself'?'自主实习':'集中实习'}}</text>
146 </view> 147 </view>
147 <view class="projiect"> 148 <view class="projiect">
148 - <text>成绩</text>  
149 - <text>{{ele.level|| '--'}}</text> 149 + <text>总成绩</text>
  150 + <text>{{ele.totalScore|| '--'}}</text>
150 </view> 151 </view>
151 152
152 - <view class="projiect" v-if="ele.credit"> 153 + <!-- <view class="projiect" v-if="ele.credit">
153 <text>学分</text> 154 <text>学分</text>
154 <text @click="handelDetail(ele, 'credit')" 155 <text @click="handelDetail(ele, 'credit')"
155 :style="{color:'#06B079'}">{{ele.credit}}</text> 156 :style="{color:'#06B079'}">{{ele.credit}}</text>
156 - </view> 157 + </view> -->
157 158
158 - <view class="projiect" v-else> 159 + <!-- <view class="projiect" v-else>
159 <text>学分</text> 160 <text>学分</text>
160 <text>{{'--'}}</text> 161 <text>{{'--'}}</text>
161 - </view> 162 + </view> -->
162 </view> 163 </view>
163 </view> 164 </view>
164 <c-loading :loading="loading"></c-loading> 165 <c-loading :loading="loading"></c-loading>
165 </view> 166 </view>
166 167
167 - </view> 168 + </view>
  169 +
  170 + <u-popup :show="show" mode="bottom" @close="close" :round="22">
  171 + <view class="popup">
  172 + <view style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 28px;">
  173 + <view class="title">
  174 + 项目筛选
  175 + </view>
  176 + <image class="close" src="/static/img/home/closepop.png" @click="close" mode=""></image>
  177 + </view>
  178 + <view class="search">
  179 + <u-search placeholder="请输入项目关键词搜索" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  180 + bgColor="#F4F4F4" :showAction="true" shape="round" v-model="sxsearch" @custom="workSearch()" @search="workSearch()">
  181 + </u-search>
  182 + </view>
  183 + <scroll-view v-if="works.length>0" scroll-y="true" style="height: 80%; margin-top: 40rpx;"
  184 + @scrolltolower="lower()">
  185 + <view class="item_box" v-for="(item,index) in works" :key="index" @click="popupSelItem(item)">
  186 + <view style="display: flex; align-items: center; justify-content: space-between;">
  187 + <view class="item_title">
  188 + {{item.name}}
  189 + </view>
  190 + <image v-if="item.id == projectId" style="width: 20px; height: 20px;"
  191 + src="/static/img/home/popselect.png" mode=""></image>
  192 + </view>
  193 + </view>
  194 + </scroll-view>
  195 + <view v-else class="no_data" @click="jumpVerified">
  196 + <view class="text_black_28">
  197 + 暂未搜索到该项目
  198 + </view>
  199 + </view>
  200 + </view>
  201 + </u-popup>
168 202
169 - <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false"> 203 + <!-- <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false">
170 <view class="popup_search"> 204 <view class="popup_search">
171 <view class="content"> 205 <view class="content">
172 <view class="title">按项目筛选</view> 206 <view class="title">按项目筛选</view>
@@ -193,7 +227,7 @@ @@ -193,7 +227,7 @@
193 </view> 227 </view>
194 </view> 228 </view>
195 </view> 229 </view>
196 - </u-popup> 230 + </u-popup> -->
197 </view> 231 </view>
198 </template> 232 </template>
199 233
@@ -208,7 +242,8 @@ @@ -208,7 +242,8 @@
208 import { 242 import {
209 getInternshipProcessDetailApi, 243 getInternshipProcessDetailApi,
210 getInternshipJobListApi, 244 getInternshipJobListApi,
211 - getPracticalCoursesListApi, 245 + getPracticalCoursesListApi,
  246 + getProjectListApi,
212 } from '@/config/api.js'; 247 } from '@/config/api.js';
213 248
214 export default { 249 export default {
@@ -231,14 +266,18 @@ @@ -231,14 +266,18 @@
231 //搜索对象必须为key search的对象 266 //搜索对象必须为key search的对象
232 status: 'wait,pass,reject', 267 status: 'wait,pass,reject',
233 268
234 - }, 269 + },
  270 + works: [],
  271 + workspage: 1,
  272 + workstotal: 0,
235 } 273 }
236 }, 274 },
237 275
238 onLoad(option) { 276 onLoad(option) {
239 - this.$store.dispatch(`home/getProjectList`, {  
240 - pageSize: -1,  
241 - }) 277 + // this.$store.dispatch(`home/getProjectList`, {
  278 + // pageSize: -1,
  279 + // })
  280 + this.worksloadData()
242 281
243 this.studentId = option.studentId; 282 this.studentId = option.studentId;
244 getInternshipProcessDetailApi({ 283 getInternshipProcessDetailApi({
@@ -257,7 +296,13 @@ @@ -257,7 +296,13 @@
257 }), 296 }),
258 }, 297 },
259 298
260 - methods: { 299 + methods: {
  300 +
  301 + projiectSel(e) {
  302 + this.$u.route({
  303 + url: `pages/main/internship/traineeInterList/traineeInterList?&id=${e.entryId}`
  304 + })
  305 + },
261 306
262 getNameLastTwo(value) { 307 getNameLastTwo(value) {
263 if (value && value.length > 3) { 308 if (value && value.length > 3) {
@@ -457,7 +502,59 @@ @@ -457,7 +502,59 @@
457 }) 502 })
458 break; 503 break;
459 } 504 }
460 - } 505 + },
  506 +
  507 + workSearch() {
  508 + uni.hideKeyboard();
  509 + this.works = []
  510 + this.worksloadData()
  511 + },
  512 +
  513 + lower() {
  514 + setTimeout(() => {
  515 + this.worksloadData(true);
  516 + }, 200)
  517 + },
  518 +
  519 + worksloadData(e) {
  520 + let params = {}
  521 + // this.loading = 'loading'
  522 +
  523 + if (e) {
  524 + if (this.total <= this.works.length) {
  525 + // this.loading = 'nomore'
  526 + return
  527 + }
  528 + this.workspage++
  529 + } else {
  530 + this.workspage = 1
  531 + }
  532 + params['pageNumber'] = this.workspage
  533 + if (this.sxsearch) {
  534 + params['keyWord'] = this.sxsearch
  535 + }
  536 + getProjectListApi(params).then(async res => {
  537 + if (res) {
  538 + this.total = res.total
  539 + // this.loading = 'loadmore'
  540 + this.works = this.works.concat(res.records)
  541 + }
  542 + })
  543 + },
  544 + popupSelItem(item) {
  545 + this.projectId = item.id;
  546 + this.finished = false;
  547 +
  548 + getInternshipProcessDetailApi({
  549 + studentId: this.studentId,
  550 + projectId: this.projectId,
  551 + }).then(data => {
  552 + if (data) {
  553 + this.detail = data;
  554 + this.show = false
  555 + }
  556 + })
  557 + },
461 558
462 } 559 }
463 } 560 }
@@ -645,7 +742,7 @@ @@ -645,7 +742,7 @@
645 font-size: 32rpx; 742 font-size: 32rpx;
646 line-height: 44rpx; 743 line-height: 44rpx;
647 color: #202131; 744 color: #202131;
648 - margin: 0 0 30rpx 0; 745 + margin: 0 0 20rpx 0;
649 font-weight: 500; 746 font-weight: 500;
650 } 747 }
651 748
@@ -821,6 +918,53 @@ @@ -821,6 +918,53 @@
821 width: 346rpx; 918 width: 346rpx;
822 } 919 }
823 } 920 }
  921 + }
  922 +
  923 + .popup {
  924 + height: 500px;
  925 + padding: 19px 16px;
  926 +
  927 + .title {
  928 + font-size: 18px;
  929 + font-family: PingFangSC-Medium, PingFang SC;
  930 + font-weight: 500;
  931 + color: #000000;
  932 + }
  933 +
  934 + .close {
  935 + width: 22px;
  936 + height: 22px;
  937 + }
  938 +
  939 + .item_box {
  940 + border-radius: 4px;
  941 + margin: 0 0 48rpx;
  942 +
  943 + .item_title {
  944 + height: 20px;
  945 + font-size: 14px;
  946 + font-family: PingFangSC-Regular, PingFang SC;
  947 + font-weight: 400;
  948 + color: rgba(0, 0, 0, 0.65);
  949 + line-height: 20px;
  950 + }
  951 +
  952 + }
  953 +
  954 + .no_data {
  955 + width: 100%;
  956 + margin-top: 310rpx;
  957 +
  958 + .text_black_28 {
  959 + font-size: 14px;
  960 + font-family: PingFangSC-Light, PingFang SC;
  961 + font-weight: 300;
  962 + color: rgba(0, 0, 0, 0.65);
  963 + text-align: center;
  964 + }
  965 +
  966 + }
  967 +
824 } 968 }
825 } 969 }
826 </style> 970 </style>
  1 +<template>
  2 + <view class="current2">
  3 + <view v-if="list.length > 0" >
  4 + <view class="list">
  5 + <view v-for="(item,index) in list" :key="index" @click="handelClick(item)">
  6 + <view class="list-item">
  7 + <view style="display: flex; align-items: center;">
  8 + <text>实习单号:</text>
  9 + <text class="green">{{item.number}}</text>
  10 + </view>
  11 + <view style="display: flex; align-items: center; margin-top: 15rpx;">
  12 + <text>实习时间: {{`${timeFormat(item.startTime,'yyyy/mm/dd')} - ${timeFormat(item.endTime,'yyyy/mm/dd')}`}}</text>
  13 + </view>
  14 + <view style="display: flex; align-items: center; margin-top: 15rpx;">
  15 + <text>实习企业: {{item.companyName}}</text>
  16 + </view>
  17 + <view style="display: flex; align-items: center; margin-top: 15rpx;">
  18 + <text>实习岗位: {{item.jobName}}</text>
  19 + </view>
  20 + </view>
  21 + </view>
  22 + </view>
  23 + <view style="height: 40rpx;"></view>
  24 + <c-loading :loading="loading"></c-loading>
  25 + <view style="height: 40rpx;"></view>
  26 + </view>
  27 + <view v-else style="width: 100%; height: 100%;">
  28 + <view style="margin: 150px auto 0; width: 187px;height: 110px;">
  29 + <image style="width: 187px;height: 110px;" :src="'/static/img/home/nodata.png'"></image>
  30 + </view>
  31 + <view style="width: 100%; margin-top: 10px; text-align: center; font-size: 13px; color: #121212;">暂无数据</view>
  32 + </view>
  33 + </view>
  34 +</template>
  35 +
  36 +<script>
  37 + import {
  38 + getforminternshipInfoApi
  39 + } from '@/config/api.js';
  40 + import listMixin from "@/common/mixins/list-mixin.js";
  41 +
  42 + export default {
  43 + mixins: [listMixin],
  44 + data() {
  45 + return {
  46 + id: '',
  47 + list: []
  48 + }
  49 + },
  50 +
  51 + onLoad(e) {
  52 + console.log(e)
  53 + this.id = e.id
  54 +
  55 + this.finished = false;
  56 + this.loading = "loadmore";
  57 + this.page = 0;
  58 + this.list = [];
  59 + this._getList();
  60 + },
  61 +
  62 + methods: {
  63 + loadData() {
  64 + scoredetailUrl(this.id).then(res => {
  65 + if (res) {
  66 + this.detailObj = res;
  67 + this.detailObj.form.endTime = this.timeFormat(this.detailObj.form.endTime,'yyyy-mm-dd')
  68 + this.stuhandleDataspdf()
  69 + this.comhandleDataspdf()
  70 + this.schhandleDataspdf()
  71 + }
  72 + })
  73 + },
  74 +
  75 + timeFormat(timestamp, format = 'yyyy-mm-dd hh:MM') {
  76 + return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'
  77 + },
  78 +
  79 + handelClick(e) {
  80 + // this.$u.route({
  81 + // url: `pages/main/home/achievementDetail/achievementDetail?&id=${e.id}`
  82 + // })
  83 + this.$u.route({
  84 + url: `pages/main/internship/intershipInfo/intershipInfo?id=${e.id}`
  85 + })
  86 + },
  87 +
  88 + // 模拟后端分页
  89 + async getData(requestParams) {
  90 + const {
  91 + search = {}
  92 + } = requestParams;
  93 +
  94 + let params = {};
  95 + params.pageNumber = requestParams.page + 1;
  96 + params.pageSize = 10;
  97 + params.entryId = this.id;
  98 +
  99 + console.log(12312312,params)
  100 + return await getforminternshipInfoApi(params);
  101 + },
  102 +
  103 + // 数据请求(没错就是这么少的代码)
  104 + async _getList() {
  105 + if (this.page == 0) {
  106 + this.list = [];
  107 + }
  108 +
  109 + uni.showLoading({
  110 + title: '数据加载中~',
  111 + mask: true
  112 + })
  113 +
  114 + // 根据实际情况修改自己修改key
  115 + let result = await this.getData({
  116 + page: this.page, // 传入页码
  117 + size: this.size, // 传入每页条数
  118 + search: this.search, // 传入搜索的对象
  119 + });
  120 +
  121 + // console.log(result.records)
  122 +
  123 + this.total = result.total;
  124 +
  125 + result.records.map((item) => {
  126 + this.list.push(item);
  127 + });
  128 +
  129 + if (this.list.length == this.total) {
  130 + this.finished = true;
  131 + this.loading = 'nomore';
  132 + }
  133 +
  134 + uni.hideLoading();
  135 + },
  136 + }
  137 + }
  138 +</script>
  139 +
  140 +<style>
  141 + page {
  142 + background-color: #F7F7F7;
  143 + }
  144 +</style>
  145 +
  146 +<style lang="scss" scoped>
  147 + .current2 {
  148 + padding: 20rpx 20rpx 0;
  149 +
  150 + .list-item {
  151 + // width: 100%;
  152 + // height: 150px;
  153 + padding: 36rpx 40rpx;
  154 + background: #FFFFFF;
  155 + margin-bottom: 10px;
  156 +
  157 + text {
  158 + font-size: 14px;
  159 + font-family: PingFangSC-Light, PingFang SC;
  160 + font-weight: 300;
  161 + color: rgba(0,0,0,0.65);
  162 + max-width: 90%;
  163 + overflow: hidden;
  164 + text-overflow: ellipsis;
  165 + display: -webkit-box;
  166 + -webkit-line-clamp: 2;
  167 + -webkit-box-orient: vertical;
  168 + }
  169 +
  170 + .green {
  171 + margin-left: 5px;
  172 + color: #0CB17A;
  173 + }
  174 + }
  175 + }
  176 +</style>
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 <view class="twoCell"> 60 <view class="twoCell">
61 <view class="item" @click="handelGate(1)"> 61 <view class="item" @click="handelGate(1)">
62 <view> 62 <view>
63 - <image src="/static/img/home/newhome1.png"></image> 63 + <image src="/static/img/home/bmsh_sel.png"></image>
64 </view> 64 </view>
65 <view style="display: flex; flex-direction: column;"> 65 <view style="display: flex; flex-direction: column;">
66 <view class="t1"> 66 <view class="t1">
@@ -71,51 +71,76 @@ @@ -71,51 +71,76 @@
71 </view> 71 </view>
72 </view> 72 </view>
73 </view> 73 </view>
74 - <view class="item" @click="handelGate(2)"> 74 + <view class="item" @click="handelGate(8)">
75 <view> 75 <view>
76 - <image src="/static/img/home/newhome2.png"></image> 76 + <image src="/static/img/home/newhome1.png"></image>
77 </view> 77 </view>
78 <view style="display: flex; flex-direction: column;"> 78 <view style="display: flex; flex-direction: column;">
79 <view class="t1"> 79 <view class="t1">
80 - 请假审批 80 + 实习申请
81 </view> 81 </view>
82 <view class="t2"> 82 <view class="t2">
83 - 实习中的请假申请 83 + 实习开始&结束审批
84 </view> 84 </view>
85 </view> 85 </view>
86 </view> 86 </view>
87 </view> 87 </view>
88 - <view class="fiveCell">  
89 - <view class="item" @click="handelGate(3)">  
90 - <image src="/static/img/home/newhome3.png"></image>  
91 - <view class="t1">  
92 - 实习变更  
93 - </view>  
94 - </view>  
95 - <view class="item" @click="handelGate(4)">  
96 - <image src="/static/img/home/newhome4.png"></image>  
97 - <view class="t1">  
98 - 日志批阅  
99 - </view>  
100 - </view>  
101 - <view class="item" @click="handelGate(5)">  
102 - <image src="/static/img/home/newhome5.png"></image>  
103 - <view class="t1">  
104 - 报告批阅  
105 - </view>  
106 - </view>  
107 - <view class="item" @click="handelGate(6)">  
108 - <image src="/static/img/home/newhome6.png"></image>  
109 - <view class="t1">  
110 - 学生签到  
111 - </view>  
112 - </view>  
113 - <view class="item" @click="handelGate(7)">  
114 - <image src="/static/img/home/newhome7.png"></image>  
115 - <view class="t1">  
116 - 成绩鉴定  
117 - </view>  
118 - </view> 88 + <!-- <view class="fiveCell"> -->
  89 + <scroll-view class="fiveCell" scroll-x="true" @scroll="scrollx">
  90 + <view class="item" @click="handelGate(2)">
  91 + <view class="item-flex">
  92 + <image src="/static/img/home/newhome2.png"></image>
  93 + <view class="t1">
  94 + 请假审批
  95 + </view>
  96 + </view>
  97 + </view>
  98 + <view class="item" @click="handelGate(3)">
  99 + <view class="item-flex">
  100 + <image src="/static/img/home/newhome3.png"></image>
  101 + <view class="t1">
  102 + 实习变更
  103 + </view>
  104 + </view>
  105 + </view>
  106 + <view class="item" @click="handelGate(4)">
  107 + <view class="item-flex">
  108 + <image src="/static/img/home/newhome4.png"></image>
  109 + <view class="t1">
  110 + 日志批阅
  111 + </view>
  112 + </view>
  113 + </view>
  114 + <view class="item" @click="handelGate(5)">
  115 + <view class="item-flex">
  116 + <image src="/static/img/home/newhome5.png"></image>
  117 + <view class="t1">
  118 + 报告批阅
  119 + </view>
  120 + </view>
  121 + </view>
  122 + <view class="item" @click="handelGate(6)">
  123 + <view class="item-flex">
  124 + <image src="/static/img/home/newhome6.png"></image>
  125 + <view class="t1">
  126 + 学生签到
  127 + </view>
  128 + </view>
  129 + </view>
  130 + <view class="item" @click="handelGate(7)">
  131 + <view class="item-flex">
  132 + <image src="/static/img/home/newhome7.png"></image>
  133 + <view class="t1">
  134 + 成绩鉴定
  135 + </view>
  136 + </view>
  137 + </view>
  138 + </scroll-view>
  139 + <!-- </view> -->
  140 + <view class="pro">
  141 + <view class="pro_top" :style="{left: processNum+'px'}">
  142 +
  143 + </view>
119 </view> 144 </view>
120 </view> 145 </view>
121 146
@@ -199,9 +224,22 @@ @@ -199,9 +224,22 @@
199 </view> 224 </view>
200 <view v-if="hasLogin"> 225 <view v-if="hasLogin">
201 <view 226 <view
202 - v-if="statistics && (statistics.formChangeApplyReview > 0 || statistics.leaveRecordReview > 0 || statistics.internshipApply > 0 || statistics.formLogWaitReview > 0 || statistics.reportWaitReview > 0 || statistics.achievementWaitAppraisal > 0 )"> 227 + v-if="statistics && (statistics.formApplyReview > 0 || statistics.formChangeApplyReview > 0 || statistics.leaveRecordReview > 0 || statistics.internshipApply > 0 || statistics.formLogWaitReview > 0 || statistics.reportWaitReview > 0 || statistics.achievementWaitAppraisal > 0 )">
203 <view class="cell"> 228 <view class="cell">
204 - <u-cell-group :border="false"> 229 + <u-cell-group :border="false">
  230 + <u-cell
  231 + v-if="statistics && statistics.formApplyReview && statistics.formApplyReview > 0"
  232 + :isLink="true" url="/pages/main/home/interapply/interapply?status=wait"
  233 + arrow-direction="right" :rightIconStyle="{fontSize:'24rpx'}" :border="false">
  234 + <view slot="title" class="u-slot-title">
  235 + <view class="u-cell-title">实习申请</view>
  236 + <view class="u-cell-text">
  237 + 您有<text>{{statistics.formApplyReview}}</text>个<text>实习申请</text>待审批!</view>
  238 + </view>
  239 + <text slot="value" class="u-slot-value">立即审批</text>
  240 +
  241 + </u-cell>
  242 + <view class="line"></view>
205 <u-cell 243 <u-cell
206 v-if="statistics && statistics.leaveRecordReview && statistics.leaveRecordReview > 0" 244 v-if="statistics && statistics.leaveRecordReview && statistics.leaveRecordReview > 0"
207 :isLink="true" url="/pages/main/home/asklist/asklist?status=wait" 245 :isLink="true" url="/pages/main/home/asklist/asklist?status=wait"
@@ -320,7 +358,6 @@ @@ -320,7 +358,6 @@
320 </view> --> 358 </view> -->
321 </view> 359 </view>
322 </scroll-view> 360 </scroll-view>
323 -  
324 <!-- <view class="content"> 361 <!-- <view class="content">
325 <view class="title"> 362 <view class="title">
326 <text>选择学校</text> 363 <text>选择学校</text>
@@ -371,7 +408,8 @@ @@ -371,7 +408,8 @@
371 menuHeight: 32, 408 menuHeight: 32,
372 menuTop: 32, 409 menuTop: 32,
373 margin: 92, 410 margin: 92,
374 - isNav: false 411 + isNav: false,
  412 + processNum: 0,
375 } 413 }
376 }, 414 },
377 415
@@ -447,6 +485,15 @@ @@ -447,6 +485,15 @@
447 485
448 methods: { 486 methods: {
449 487
  488 + scrollx(e) {
  489 + // console.log(e)
  490 + if (e.detail.scrollLeft < 20) {
  491 + this.processNum = 0
  492 + }else {
  493 + this.processNum = 30
  494 + }
  495 + },
  496 +
450 getSystemInfo() { 497 getSystemInfo() {
451 uni.getSystemInfo({ 498 uni.getSystemInfo({
452 success: (res) => { 499 success: (res) => {
@@ -585,9 +632,10 @@ @@ -585,9 +632,10 @@
585 case 7: 632 case 7:
586 this.$u.route('/pages/main/home/achievementAppraisal/achievementAppraisal'); 633 this.$u.route('/pages/main/home/achievementAppraisal/achievementAppraisal');
587 break; 634 break;
588 -  
589 -  
590 - 635 +
  636 + case 8:
  637 + this.$u.route('/pages/main/home/interapply/interapply');
  638 + break;
591 639
592 } 640 }
593 641
@@ -767,17 +815,50 @@ @@ -767,17 +815,50 @@
767 color: rgba(0, 0, 0, 0.65); 815 color: rgba(0, 0, 0, 0.65);
768 } 816 }
769 } 817 }
  818 + }
  819 +
  820 + .pro {
  821 + width: 60px;
  822 + height: 5px;
  823 + border-radius: 2.5px;
  824 + background-color: #F4F4F4;
  825 + margin: 0 auto;
  826 + margin-top: 10px;
  827 + position: relative;
  828 +
  829 + .pro_top {
  830 + width: 30px;
  831 + height: 5px;
  832 + border-radius: 2.5px;
  833 + background-color: #06B079;
  834 + position: absolute;
  835 + top: 0px;
  836 + left: 0px;
  837 + }
770 } 838 }
771 839
772 .fiveCell { 840 .fiveCell {
773 - margin-top: 30px;  
774 - display: flex;  
775 -  
776 - .item {  
777 - flex: 1;  
778 - display: flex;  
779 - flex-direction: column;  
780 - align-items: center; 841 + margin-top: 30px;
  842 + width: 100%;
  843 + height: 60px;
  844 + white-space: nowrap;
  845 + // display: flex;
  846 + // display: inline-block;
  847 +
  848 + .item {
  849 + // width: 100px;
  850 + // flex: 1;
  851 + display: inline-block;
  852 + margin-right: 16px;
  853 + // display: flex;
  854 + // flex-direction: column;
  855 + // align-items: center;
  856 +
  857 + .item-flex {
  858 + display: flex;
  859 + flex-direction: column;
  860 + align-items: center;
  861 + }
781 862
782 image { 863 image {
783 width: 24px; 864 width: 24px;
注册登录 后发表评论