提交 1d6e141231ba292abaeb5513681e674d51878ca7

作者 wangws
1 个父辈 63b9e0f9

修改

1 1 <template>
2 2 <view class="u-button">
3 3 <u-button :text="text" :color="reversedColor" :plain="false" :hairline="false" :disabled="disabled"
4   - :throttleTime="1500" type="default" :open-type="openType" @getphonenumber="getPhoneNumber"
  4 + :throttleTime="1500" type="default" shape="circle" :open-type="openType" @getphonenumber="getPhoneNumber"
5 5 :custom-style="getCustomStyle" @click="click">
6 6 </u-button>
7 7 </view>
... ...
... ... @@ -173,5 +173,29 @@ export const getInternshipDetailApi = (id, params) => http.get(`/internship/v1/f
173 173 params: params
174 174 })
175 175
  176 +// 请假申请列表
  177 +export const getleaveRecordlistListApi = (params) => http.get('/internship/v1/leaveRecord/list', {
  178 + params: params
  179 +})
  180 +
  181 +// 请假详情
  182 +export const getleaveRecorddetailApi = (id,params) => http.get('/internship/v1/leaveRecord/detail/'+id, {
  183 + params: params
  184 +})
  185 +
  186 +// 请假审批
  187 +export const putleaveRecorddetailApi = (id,params) => http.put(`/internship/v1/leaveRecord/${id}/approve`, params)
  188 +
  189 +// 变更列表
  190 +export const getformChangeApplyListApi = (params) => http.get('/internship/v1/formChangeApply/list', {
  191 + params: params
  192 +})
  193 +
  194 +// 变更详情
  195 +export const formChangeApplydetailUrl = (id,params) => http.get('/internship/v1/formChangeApply/detail/'+id, {
  196 + params: params
  197 +})
176 198
  199 +// 变更审批
  200 +export const putformChangeApplyapprovalUrl = (id,params) => http.put('/internship/v1/formChangeApply/approval/'+id,params)
177 201
... ...
... ... @@ -5,13 +5,13 @@ module.exports = (vm) => {
5 5 /* config 为默认全局配置*/
6 6
7 7 // 测试环境
8   - // config.baseURL = "http://47.110.250.177:8000";
  8 + config.baseURL = "http://47.110.250.177:8000";
9 9
10 10 // 预生产环境
11 11 // config.baseURL = "https://api-isxpre.workai.com.cn";
12 12
13 13 // 线上环境
14   - config.baseURL = "https://api-isx.workai.com.cn";
  14 + // config.baseURL = "https://api-isx.workai.com.cn";
15 15
16 16 config.header = {
17 17 // 'content-type': 'xxx'
... ...
... ... @@ -109,6 +109,41 @@
109 109 "enablePullDownRefresh": false
110 110 }
111 111
  112 + },{
  113 + "path": "asklist/asklist",
  114 + "style": {
  115 + "navigationBarTitleText": "请假审批",
  116 + "enablePullDownRefresh": false
  117 + }
  118 +
  119 + },{
  120 + "path": "askdetail/askdetail",
  121 + "style": {
  122 + "navigationBarTitleText": "详情",
  123 + "enablePullDownRefresh": false
  124 + }
  125 +
  126 + }, {
  127 + "path": "changelist/changelist",
  128 + "style": {
  129 + "navigationBarTitleText": "实习变更",
  130 + "enablePullDownRefresh": false
  131 + }
  132 +
  133 + }, {
  134 + "path": "changedetail/changedetail",
  135 + "style": {
  136 + "navigationBarTitleText": "详情",
  137 + "enablePullDownRefresh": false
  138 + }
  139 +
  140 + }, {
  141 + "path": "search/search",
  142 + "style": {
  143 + "navigationBarTitleText": "搜索",
  144 + "enablePullDownRefresh": false
  145 + }
  146 +
112 147 }
113 148 ]
114 149 },
... ...
... ... @@ -324,8 +324,8 @@
324 324 padding: 20rpx 0 0 0;
325 325
326 326 .box {
327   - width: 630rpx;
328   - margin: 20rpx auto;
  327 + // width: 630rpx;
  328 + margin: 20rpx 10px;
329 329 padding: 30rpx 30rpx 12rpx 30rpx;
330 330 border-radius: 12rpx;
331 331 background-color: #FFFFFF;
... ... @@ -376,29 +376,30 @@
376 376 .item_icon {
377 377 margin: 0 0 24rpx 0;
378 378 display: flex;
379   - flex-flow: row nowrap;
380   - justify-content: space-between;
  379 + // flex-flow: row nowrap;
  380 + justify-content: space-between;
  381 + align-items: center;
381 382
382 383 text {
383   - display: inline-block;
384   - width: 112rpx;
385   - text-align: justify;
386   - text-align-last: justify;
  384 + // display: inline-block;
  385 + // width: 112rpx;
  386 + // text-align: justify;
  387 + // text-align-last: justify;
387 388 font-size: 28rpx;
388   - line-height: 48rpx;
  389 + // line-height: 48rpx;
389 390 color: #909097;
390   - vertical-align: top;
  391 + // vertical-align: top;
391 392 }
392 393
393 394 view {
394 395 display: flex;
395   - flex-flow: row nowrap;
  396 + // flex-flow: row nowrap;
396 397
397 398 text {
398   - display: inline-block;
399   - width: auto;
  399 + // display: inline-block;
  400 + // width: auto;
400 401 font-size: 28rpx;
401   - line-height: 48rpx;
  402 + // line-height: 48rpx;
402 403 color: #202131;
403 404 margin: 0 0 0 78rpx;
404 405 }
... ...
  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 == 'pass'" class="status" style="color: #0CB17A;">
  17 + 已通过
  18 + </view>
  19 + <view v-else-if="detailObj.status == 'reject'" 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.category)}}
  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 + {{$u.timeFormat(detailObj.startTime,'yyyy-mm-dd hh:MM')}}
  37 + </view>
  38 + <view class="end">
  39 + {{$u.timeFormat(detailObj.endTime,'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'>{{$u.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 + getleaveRecorddetailApi,
  106 + putleaveRecorddetailApi,
  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: 'personal'
  121 + },
  122 + {
  123 + label: '病假',
  124 + value: "sick",
  125 + },
  126 + {
  127 + label: '调休',
  128 + value: "exchange",
  129 + },
  130 + {
  131 + label: '其他',
  132 + value: "other",
  133 + }
  134 + ]
  135 + }
  136 + },
  137 +
  138 + onLoad(e) {
  139 + this.id = e.id
  140 + this.loadData()
  141 + },
  142 +
  143 + methods: {
  144 +
  145 + loadData() {
  146 + getleaveRecorddetailApi(this.id).then(res => {
  147 + if (res) {
  148 + this.detailObj = res;
  149 + this.handleDatas()
  150 +
  151 + let q1 = {
  152 + title: '发起申请',
  153 + desc: this.detailObj.studentName,
  154 + time: this.detailObj.createdTime
  155 + }
  156 +
  157 + let s = ''
  158 + if (this.detailObj.status == 'wait') {
  159 + s = '(待处理)'
  160 + }else if (this.detailObj.status == 'pass') {
  161 + s = '(已通过)'
  162 + }else if (this.detailObj.status == 'reject') {
  163 + s = '(已驳回)'
  164 + }
  165 + let q2 = {
  166 + title: '学校审批',
  167 + desc: this.detailObj.approver,
  168 + time: this.detailObj.approvalTime,
  169 + reply: this.detailObj.reply,
  170 + peo: s,
  171 + }
  172 + this.questions.push(q1)
  173 + if (this.detailObj.approver) {
  174 + this.questions.push(q2)
  175 + }
  176 + }
  177 + })
  178 + },
  179 +
  180 + handelCancel() {
  181 + putleaveRecorddetailApi(this.id,{status: 'reject'}).then(res => {
  182 + if (res) {
  183 + uni.navigateBack({
  184 + delta: 1
  185 + });
  186 + }
  187 + })
  188 + },
  189 +
  190 + hancelSubmit() {
  191 + putleaveRecorddetailApi(this.id,{status: 'pass'}).then(res => {
  192 + if (res) {
  193 + uni.navigateBack({
  194 + delta: 1
  195 + });
  196 + }
  197 + })
  198 + },
  199 +
  200 + getCategoryList(e) {
  201 + for (var i = 0; i < this.categoryList.length; i++) {
  202 + let item = this.categoryList[i]
  203 + if (e == item.value) {
  204 + return item.label
  205 + }
  206 + }
  207 + },
  208 +
  209 + handleDatas() { //处理获取的网络图片
  210 + if (this.detailObj.attachments) {
  211 + this.createdTime = this.$u.timeFormat(this.detailObj.createdTime / 1000, 'yyyy/mm/dd');
  212 + var originInfo = JSON.parse(this.detailObj.attachments);
  213 + this.attachments = this.attachments.concat(originInfo)
  214 + console.log("1---", originInfo, "2---", this.attachments)
  215 + if (originInfo && originInfo.length > 0) {
  216 + for (var i = 0; i < originInfo.length; i++) {
  217 + getImgUrlApi({
  218 + bucket: originInfo[i].bucket,
  219 + filePath: originInfo[i].object
  220 + }).then(res => {
  221 + this.picList.push(res.url)
  222 + console.log('picList...', this.picList)
  223 + })
  224 + }
  225 + }
  226 + }
  227 + },
  228 +
  229 + openLink(e) {
  230 + var _this = this
  231 +
  232 + uni.showLoading({
  233 + title: '努力加载中~',
  234 + mask: true
  235 + })
  236 +
  237 + getImgUrlApi({
  238 + bucket: e.bucket,
  239 + filePath: e.object
  240 + }).then(data => {
  241 + console.log("data...", data)
  242 + if (e.mime_type.indexOf("image") != -1) {
  243 + _this.openImage(data.url)
  244 + } else {
  245 + uni.downloadFile({
  246 + url: data.url,
  247 + success: function(res) {
  248 + var filePath = res.tempFilePath;
  249 + uni.openDocument({
  250 + filePath: filePath,
  251 + showMenu: true,
  252 + success: function(res) {
  253 + console.log('打开文档成功');
  254 + },
  255 + complete: function() {
  256 + uni.hideLoading();
  257 + }
  258 + });
  259 + }
  260 + });
  261 + }
  262 + })
  263 + },
  264 + openImage(imgPath) {
  265 + let array = new Array(1).fill(imgPath);
  266 + uni.previewImage({
  267 + urls: array,
  268 + success(res) {
  269 + uni.hideLoading();
  270 + console.log('openImage success');
  271 + },
  272 + fail(res) {
  273 + uni.hideLoading();
  274 + console.log('openImage fail:', res);
  275 + }
  276 + });
  277 + },
  278 + }
  279 + }
  280 +</script>
  281 +
  282 +<style>
  283 + page {
  284 + background-color: #F7F7F7;
  285 + }
  286 +</style>
  287 +
  288 +<style lang="scss" scoped>
  289 + .page {
  290 + padding: 16rpx 32rpx;
  291 +
  292 + .top {
  293 + padding: 40rpx 32rpx;
  294 + background-color: #fff;
  295 + border-radius: 10px;
  296 +
  297 + .title {
  298 + font-size: 20px;
  299 + font-family: PingFangSC-Semibold, PingFang SC;
  300 + font-weight: 600;
  301 + color: #000000;
  302 + }
  303 +
  304 + .t1 {
  305 + margin-top: 32rpx;
  306 + font-size: 13px;
  307 + font-family: PingFangSC-Regular, PingFang SC;
  308 + font-weight: 400;
  309 + color: rgba(0,0,0,0.6500);
  310 + }
  311 +
  312 + .t2 {
  313 + margin-top: 16rpx;
  314 + font-size: 13px;
  315 + font-family: PingFangSC-Regular, PingFang SC;
  316 + font-weight: 400;
  317 + color: rgba(0,0,0,0.6500);
  318 + }
  319 +
  320 + .status {
  321 + margin-top: 32rpx;
  322 + font-size: 13px;
  323 + font-family: PingFangSC-Regular, PingFang SC;
  324 + font-weight: 400;
  325 + color: #FFC200;
  326 + }
  327 + }
  328 +
  329 + .content {
  330 + padding: 40rpx 32rpx;
  331 + background-color: #fff;
  332 + border-radius: 10px;
  333 + margin-top: 16rpx;
  334 +
  335 + .c1 {
  336 + font-size: 16px;
  337 + font-family: PingFangSC-Semibold, PingFang SC;
  338 + font-weight: 600;
  339 + color: #000000;
  340 + }
  341 +
  342 + .c2 {
  343 + margin-top: 16rpx;
  344 + font-size: 14px;
  345 + font-family: PingFangSC-Regular, PingFang SC;
  346 + font-weight: 400;
  347 + color: rgba(0,0,0,0.6500);
  348 + }
  349 +
  350 + .grayV {
  351 + margin-top: 24rpx;
  352 + height: 98px;
  353 + background: #F7F7F7;
  354 + border-radius: 24px;
  355 + padding: 8rpx 16rpx;
  356 + position: relative;
  357 +
  358 + .g1 {
  359 + font-size: 16px;
  360 + font-family: PingFangSC-Semibold, PingFang SC;
  361 + font-weight: 600;
  362 + color: #000000;
  363 + }
  364 +
  365 + .timeline {
  366 + position: absolute;
  367 + left: 2rpx;
  368 + top: 72rpx;
  369 + width: 40rpx;
  370 + height: 100rpx;
  371 + }
  372 +
  373 + .start {
  374 + position: absolute;
  375 + left: 88rpx;
  376 + top: 68rpx;
  377 + font-size: 14px;
  378 + font-family: DINAlternate-Bold, DINAlternate;
  379 + font-weight: bold;
  380 + color: rgba(0,0,0,0.6500);
  381 + }
  382 +
  383 + .end {
  384 + position: absolute;
  385 + left: 88rpx;
  386 + top: 134rpx;
  387 + font-size: 14px;
  388 + font-family: DINAlternate-Bold, DINAlternate;
  389 + font-weight: bold;
  390 + color: rgba(0,0,0,0.6500);
  391 + }
  392 + }
  393 +
  394 + .fj_content {
  395 + margin-top: 8px;
  396 + background-color: #fff;
  397 +
  398 + .item {
  399 + width: 100%;
  400 + display: flex;
  401 + flex-direction: row;
  402 + flex-wrap: wrap;
  403 +
  404 + .p_item {
  405 + position: relative;
  406 + width: 120rpx;
  407 + height: 120rpx;
  408 + margin-right: 13px;
  409 + margin-bottom: 13px;
  410 +
  411 + .delete {
  412 + position: absolute;
  413 + width: 24rpx;
  414 + height: 24rpx;
  415 + top: -12rpx;
  416 + right: -12rpx;
  417 + z-index: 199;
  418 + }
  419 + }
  420 +
  421 + }
  422 +
  423 + }
  424 + }
  425 +
  426 + .timeb {
  427 + padding: 40rpx 36rpx;
  428 + background-color: #fff;
  429 + border-radius: 10px;
  430 + margin-top: 16rpx;
  431 + position: relative;
  432 +
  433 + .title {
  434 + font-size: 16px;
  435 + font-family: PingFangSC-Semibold, PingFang SC;
  436 + font-weight: 600;
  437 + color: #000000;
  438 + margin-bottom: 20rpx;
  439 + }
  440 +
  441 + .nodef {
  442 + display: flex;
  443 + justify-content: start;
  444 + margin-bottom: 30rpx;
  445 +
  446 + .node1 {
  447 + position: relative;
  448 + margin-top: 4px;
  449 +
  450 + .line {
  451 + position: absolute;
  452 + left: 5px;
  453 + width: 1px;
  454 + height: 100%;
  455 + background-color: #f7f7f7;
  456 + }
  457 + }
  458 +
  459 + .node2 {
  460 + margin-left: 10px;
  461 + }
  462 + }
  463 +
  464 + .u-node {
  465 + width: 8px;
  466 + height: 8px;
  467 + border-radius: 8rpx;
  468 + background: #E5E5E6;
  469 + }
  470 +
  471 + .u-order-title {
  472 + color: rgba(0,0,0,0.4500);
  473 + font-family: PingFangSC-Regular, PingFang SC;
  474 + font-weight: 400;
  475 + font-size: 24rpx;
  476 + }
  477 +
  478 + .u-order-desc {
  479 + font-size: 14px;
  480 + font-weight: bold;
  481 + color: rgba(0,0,0,1);
  482 + }
  483 +
  484 + .u-order-kf {
  485 + margin-top: 20px;
  486 + font-size: 14px;
  487 + font-weight: 400;
  488 + color: #8C8E91;
  489 + }
  490 +
  491 + .u-order-time {
  492 + font-size: 12px;
  493 + font-family: PingFangSC-Medium, PingFang SC;
  494 + font-weight: 500;
  495 + color: rgba(0,0,0,0.6500);
  496 + margin-left: 10px;
  497 + }
  498 +
  499 + .u-order-reply {
  500 + width: 245px;
  501 + padding: 10rpx 14rpx;
  502 + background: #F7F7F7;
  503 + border-radius: 24px;
  504 + margin-top: 14rpx;
  505 + }
  506 +
  507 + }
  508 +
  509 + .footer {
  510 + width: 100%;
  511 + height: 96rpx;
  512 + padding: 28rpx 30rpx;
  513 + background: #FFFFFF;
  514 + position: fixed;
  515 + bottom: 0;
  516 + left: 0;
  517 + z-index: 99;
  518 + border-top: 2rpx solid #E2E2E8;
  519 +
  520 + view {
  521 + display: inline-block;
  522 + }
  523 +
  524 + .left_btn {
  525 + width: 330rpx;
  526 + margin: 0 30rpx 0 0;
  527 + }
  528 +
  529 + .right_btn {
  530 + width: 330rpx;
  531 + }
  532 + }
  533 +
  534 + }
  535 +</style>
\ No newline at end of file
... ...
  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.category)}}
  38 + </view>
  39 + <view class="t2">
  40 + 开始时间: {{timeFormat(item.startTime, 'yyyy-mm-dd hh:MM')}}
  41 + </view>
  42 + <view class="t2">
  43 + 结束时间: {{timeFormat(item.endTime, '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 == 'pass'" class="status" style="color: #0CB17A;">
  49 + 已通过
  50 + </view>
  51 + <view v-else-if="item.status == 'reject'" 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 + getleaveRecordlistListApi,
  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: 'personal'
  171 + },
  172 + {
  173 + label: '病假',
  174 + value: "sick",
  175 + },
  176 + {
  177 + label: '调休',
  178 + value: "exchange",
  179 + },
  180 + {
  181 + label: '其他',
  182 + value: "other",
  183 + }
  184 + ],
  185 + curNow: 1,
  186 + sxsearch: '',
  187 + works: [],
  188 + workspage: 1,
  189 + workstotal: 0,
  190 + }
  191 + },
  192 +
  193 + onLoad(option) {
  194 + console.log(option)
  195 + // this.$store.dispatch(`home/getProjectList`, {
  196 + // pageSize: -1,
  197 + // })
  198 +
  199 + this.worksloadData()
  200 +
  201 + // this.search.keySearch = '';
  202 +
  203 + if (option && option.status) {
  204 + // this.search.status = 'wait';
  205 + this.curNow = 0;
  206 + // this.checkboxValue = ['待处理'];
  207 + // this.switchValue = true;
  208 + }
  209 +
  210 + },
  211 +
  212 + onShow() {
  213 + this.finished = false;
  214 + this.loading = "loadmore";
  215 + this.page = 0;
  216 + this.list = [];
  217 + this._getList();
  218 + },
  219 +
  220 + computed: {
  221 + ...mapState('home', {
  222 + // 箭头函数可使代码更简练
  223 + projectList: 'projectList',
  224 +
  225 + }),
  226 +
  227 + },
  228 +
  229 + methods: {
  230 +
  231 + searchCli() {
  232 + this.$u.route('/pages/main/home/search/search?type=ask&searchkey=' + this.keyword);
  233 + },
  234 +
  235 + sectionChange(index) {
  236 + this.curNow = index;
  237 +
  238 + this.finished = false;
  239 + this.loading = "loadmore";
  240 + this.page = 0;
  241 + this.list = [];
  242 + this._getList();
  243 + },
  244 +
  245 + getCategoryList(e) {
  246 + for (var i = 0; i < this.categoryList.length; i++) {
  247 + let item = this.categoryList[i]
  248 + if (e == item.value) {
  249 + return item.label
  250 + }
  251 + }
  252 + },
  253 +
  254 + handelDetail(record) {
  255 + this.$u.route('/pages/main/home/askdetail/askdetail?id='+record.id);
  256 + },
  257 +
  258 + timeFormat(timestamp, format = 'yyyy-mm-dd') {
  259 + return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'
  260 + },
  261 +
  262 + checkboxChange(n) {
  263 + console.log('change', n);
  264 +
  265 + this.search.status = n.length > 0 ? 'wait' : '';
  266 +
  267 + this.switchValue = n.length > 0 ? true : false;
  268 +
  269 + this.finished = false;
  270 + this.loading = "loadmore";
  271 + this.page = 0;
  272 + this.list = [];
  273 + this._getList();
  274 + },
  275 +
  276 + handelSearch(value) {
  277 + this.finished = false;
  278 + this.loading = "loadmore";
  279 + this.page = 0;
  280 + this.list = [];
  281 + this._getList();
  282 + },
  283 +
  284 + open() {
  285 + // console.log('open');
  286 + },
  287 + close() {
  288 + this.show = false
  289 + // console.log('close');
  290 + },
  291 + // scroll-view到底部加载更多
  292 + onreachBottom() {},
  293 + // 搜索
  294 + searchSubmit() {
  295 + // 调用混合搜索
  296 + this._searchData();
  297 + },
  298 + // 模拟后端分页
  299 + async getData(requestParams) {
  300 + const {
  301 + search = {}
  302 + } = requestParams;
  303 +
  304 + let params = {};
  305 + params.pageNumber = requestParams.page + 1;
  306 + params.pageSize = 5;
  307 +
  308 + if (this.curNow == 0) {
  309 + params.status = 'wait';
  310 + }
  311 +
  312 + if (this.keyword) {
  313 + params.keySearch = this.keyword
  314 + }
  315 +
  316 + if (this.projectId) {
  317 + params.projectId = this.projectId
  318 + }
  319 +
  320 + return await getleaveRecordlistListApi(params);
  321 + },
  322 + // 数据请求(没错就是这么少的代码)
  323 + async _getList() {
  324 + if (this.page == 0) {
  325 + this.list = [];
  326 + }
  327 +
  328 + // 根据实际情况修改自己修改key
  329 + let result = await this.getData({
  330 + page: this.page, // 传入页码
  331 + size: this.size, // 传入每页条数
  332 + search: this.search, // 传入搜索的对象
  333 + });
  334 +
  335 + this.total = result.total;
  336 +
  337 + if (this.list.length == 0 && result.records.length == 0) {
  338 + this.shownoData = false
  339 + } else {
  340 + this.shownoData = true
  341 + }
  342 +
  343 + this.list = this.list.concat(result.records)
  344 +
  345 + // 判断是否全部加载完成
  346 + if (this.total == this.list.length) {
  347 + this.finished = true;
  348 + this.loading = 'nomore';
  349 + } else {
  350 + this.loading = 'loadmore';
  351 + }
  352 + },
  353 +
  354 + handelClick(values) {
  355 + console.log(values);
  356 + this.projectId = values.id;
  357 + },
  358 +
  359 + handelChange(e) {
  360 + console.log(e)
  361 + this.checkboxValue = e ? ['待处理'] : [];
  362 + this.search.status = e ? 'wait' : '';
  363 +
  364 + },
  365 +
  366 + handelCancel() {
  367 + this.switchValue = false;
  368 + this.projectId = '';
  369 + },
  370 +
  371 + hancelSubmit() {
  372 + this.finished = false;
  373 + this.loading = "loadmore";
  374 + this.page = 0;
  375 + this.list = [];
  376 + this._getList();
  377 +
  378 + this.show = false;
  379 + },
  380 +
  381 + workSearch() {
  382 + uni.hideKeyboard();
  383 + this.works = []
  384 + this.worksloadData()
  385 + },
  386 +
  387 + lower() {
  388 + setTimeout(() => {
  389 + this.worksloadData(true);
  390 + }, 200)
  391 + },
  392 +
  393 + worksloadData(e) {
  394 + let params = {}
  395 + // this.loading = 'loading'
  396 +
  397 + if (e) {
  398 + if (this.total <= this.works.length) {
  399 + // this.loading = 'nomore'
  400 + return
  401 + }
  402 + this.workspage++
  403 + } else {
  404 + this.workspage = 1
  405 + }
  406 + params['pageNumber'] = this.workspage
  407 + if (this.sxsearch) {
  408 + params['keyWord'] = this.sxsearch
  409 + }
  410 + getProjectListApi(params).then(async res => {
  411 + if (res) {
  412 + this.total = res.total
  413 + // this.loading = 'loadmore'
  414 + this.works = this.works.concat(res.records)
  415 + }
  416 + })
  417 + },
  418 + popupSelItem(item) {
  419 + this.show = false
  420 + this.projectId = item.id;
  421 + this.finished = false;
  422 + this.loading = "loadmore";
  423 + this.page = 0;
  424 + this.list = [];
  425 + this._getList();
  426 + },
  427 +
  428 + }
  429 + }
  430 +</script>
  431 +
  432 +<style lang="scss" scoped>
  433 + .registration_review {
  434 + width: 100%;
  435 + min-height: 100%;
  436 + height: auto;
  437 + background-color: #F7F7F7;
  438 +
  439 + .search_box {
  440 + padding: 36rpx 30rpx 12rpx;
  441 + background-color: #FFFFFF;
  442 + display: flex;
  443 + flex-flow: row nowrap;
  444 + justify-content: space-between;
  445 +
  446 + .check {
  447 + padding: 20rpx 0 0 0;
  448 + }
  449 +
  450 + .search {
  451 + width: 468rpx;
  452 + }
  453 + }
  454 +
  455 + .list_box {
  456 + padding: 0 0 50rpx 0;
  457 +
  458 + .item {
  459 + position: relative;
  460 + margin: 8px 13px 0;
  461 + padding: 20px 17px;
  462 + border-radius: 8rpx;
  463 + background-color: #FFFFFF;
  464 +
  465 + .t1 {
  466 + font-size: 14px;
  467 + font-family: PingFangSC-Medium, PingFang SC;
  468 + font-weight: 500;
  469 + color: #000000;
  470 + }
  471 +
  472 + .t2 {
  473 + margin-top: 6px;
  474 + font-size: 12px;
  475 + font-family: PingFangSC-Light, PingFang SC;
  476 + font-weight: 300;
  477 + color: rgba(38,41,47,0.85);
  478 + }
  479 +
  480 + .t3 {
  481 + font-size: 12px;
  482 + font-family: PingFangSC-Light, PingFang SC;
  483 + font-weight: 300;
  484 + color: #000000;
  485 + }
  486 +
  487 + .t2top14 {
  488 + margin-top: 14px;
  489 + }
  490 +
  491 + .time {
  492 + position: absolute;
  493 + top: 17px;
  494 + right: 17px;
  495 + font-size: 12px;
  496 + font-family: PingFangSC-Light, PingFang SC;
  497 + font-weight: 300;
  498 + color: rgba(0,0,0,0.85);
  499 + }
  500 +
  501 + .status {
  502 + position: absolute;
  503 + bottom: 20px;
  504 + right: 17px;
  505 + font-size: 12px;
  506 + font-family: PingFangSC-Regular, PingFang SC;
  507 + font-weight: 400;
  508 + }
  509 + }
  510 + }
  511 +
  512 + .popup_search {
  513 + width: 640rpx;
  514 + position: relative;
  515 +
  516 + .content {
  517 + padding: 0 40rpx;
  518 +
  519 + .title {
  520 + padding: 24rpx 0;
  521 + font-size: 28rpx;
  522 + line-height: 36rpx;
  523 + color: #202131;
  524 + }
  525 +
  526 + .scroll {
  527 + max-height: 60vh;
  528 +
  529 + .item {
  530 +
  531 + view {
  532 + display: flex;
  533 + flex-flow: row wrap;
  534 + align-items: center;
  535 + width: 500rpx;
  536 + height: 74rpx;
  537 + border-radius: 4rpx;
  538 + border: 2rpx solid #C1C1C9;
  539 + margin: 0 10rpx 20rpx;
  540 + font-size: 24rpx;
  541 + line-height: 32rpx;
  542 + color: #C0C0C9;
  543 + padding: 16rpx 20rpx;
  544 + }
  545 +
  546 + .selectItem {
  547 + background-color: #06B079;
  548 + color: #FFFFFF;
  549 + border: 2rpx solid #06B079;
  550 + }
  551 + }
  552 + }
  553 +
  554 + .switch {
  555 + display: flex;
  556 + flex-flow: row nowrap;
  557 + justify-content: space-between;
  558 + padding: 40rpx 0 0 0;
  559 +
  560 + text {
  561 + font-size: 28rpx;
  562 + line-height: 36rpx;
  563 + color: #202131;
  564 + }
  565 + }
  566 +
  567 +
  568 + }
  569 +
  570 + .footer {
  571 + width: 560rpx;
  572 + height: 96rpx;
  573 + padding: 28rpx 40rpx;
  574 + background: #FFFFFF;
  575 + position: fixed;
  576 + bottom: 0;
  577 + right: 0;
  578 + z-index: 99;
  579 + border-top: 2rpx solid #E2E2E8;
  580 +
  581 + view {
  582 + display: inline-block;
  583 + }
  584 +
  585 + .left_btn {
  586 + width: 194rpx;
  587 + margin: 0 20rpx 0 0;
  588 + }
  589 +
  590 + .right_btn {
  591 + width: 346rpx;
  592 + }
  593 + }
  594 + }
  595 +
  596 + .popup {
  597 + height: 500px;
  598 + padding: 19px 16px;
  599 +
  600 + .title {
  601 + font-size: 18px;
  602 + font-family: PingFangSC-Medium, PingFang SC;
  603 + font-weight: 500;
  604 + color: #000000;
  605 + }
  606 +
  607 + .close {
  608 + width: 22px;
  609 + height: 22px;
  610 + }
  611 +
  612 + .item_box {
  613 + border-radius: 4px;
  614 + margin: 0 0 48rpx;
  615 +
  616 + .item_title {
  617 + height: 20px;
  618 + font-size: 14px;
  619 + font-family: PingFangSC-Regular, PingFang SC;
  620 + font-weight: 400;
  621 + color: rgba(0, 0, 0, 0.65);
  622 + line-height: 20px;
  623 + }
  624 +
  625 + }
  626 +
  627 + .no_data {
  628 + width: 100%;
  629 + margin-top: 310rpx;
  630 +
  631 + .text_black_28 {
  632 + font-size: 14px;
  633 + font-family: PingFangSC-Light, PingFang SC;
  634 + font-weight: 300;
  635 + color: rgba(0,0,0,0.65);
  636 + text-align: center;
  637 + }
  638 +
  639 + }
  640 +
  641 + }
  642 + }
  643 +</style>
... ...
  1 +<template>
  2 + <view class="page">
  3 + <view class="top">
  4 + <view class="title">
  5 + {{title}}
  6 + </view>
  7 + <view class="t1">
  8 + {{desc}}
  9 + </view>
  10 + </view>
  11 + <view style="background-color: #fff; margin-top: 20rpx;">
  12 + <view class="nav_bar_topV65">
  13 + <!-- <u-tabs :height="104" :list="menu_list" :active-color="'#26B961'" :is-scroll="false"
  14 + :current="current" @click="change" :active-item-style="{'color':'#000'}">
  15 + </u-tabs> -->
  16 + <u-tabs :list="menu_list" @click="click" :lineColor="'#26B961'"></u-tabs>
  17 + </view>
  18 + </view>
  19 + <view v-if="current==0">
  20 + <view class="timeb">
  21 + <view v-if="detailObj.status == 'wait'" class="status" style="color: #F49A23;">
  22 + 待处理
  23 + </view>
  24 + <view v-else-if="detailObj.status == 'adopt'" class="status" style="color: #0CB17A;">
  25 + 已通过
  26 + </view>
  27 + <view v-else-if="detailObj.status == 'reject'" class="status" style="color: red;">
  28 + 已驳回
  29 + </view>
  30 + <!-- <image class="sxdw_icon116" :src="statusImg" mode=""></image> -->
  31 + <view style="margin-top: 20px;">
  32 + <view>
  33 + <view v-for="(item,index) in questions" :key="index">
  34 + <view class="nodef">
  35 + <!-- <template v-slot:node> -->
  36 + <view class="node1">
  37 + <view :class="item.title == '新单位信息'?'u-green-node':'u-node'"></view>
  38 + <view class="line"></view>
  39 + </view>
  40 + <!-- </template> -->
  41 + <!-- <template v-slot:content> -->
  42 + <view class="node2">
  43 + <view class='u-order-title'>{{item.title}}</view>
  44 + <view class='u-order-reply'>
  45 + <view v-for="(item1,index1) in item.desc" :key="index1">
  46 + <view style="margin-bottom: 20rpx; overflow: hidden;">
  47 + <text style="font-size: 13px;color: rgba(0,0,0,0.65);">{{item1.title}}</text>
  48 + <text style="font-size: 13px;color: rgba(0,0,0,1);margin-left: 4px;">{{item1.desc}}</text>
  49 + </view>
  50 + </view>
  51 + </view>
  52 + </view>
  53 + <!-- </template> -->
  54 + </view>
  55 + </view>
  56 + </view>
  57 + </view>
  58 + </view>
  59 + <view style="height: 94px;"></view>
  60 + <!-- <view class="btv">
  61 + <view class="btn" @click="onenter">
  62 + 撤销申请
  63 + </view>
  64 + </view> -->
  65 + <view class="footer" v-if="detailObj.status == 'wait'">
  66 + <view class="left_btn">
  67 + <c-button type="cancel" text="驳回" @click="handelCancel">
  68 + </c-button>
  69 + </view>
  70 + <view class="right_btn">
  71 + <c-button type="confirm" text="通过" @click="hancelSubmit">
  72 + </c-button>
  73 + </view>
  74 + </view>
  75 + </view>
  76 + <view v-else>
  77 + <view v-if="JSON.stringify(clObj) != '{}' && clObj" class="bczl">
  78 + <view class="t">
  79 + <view class="green"></view>
  80 + <view class="title">
  81 + 上传时间
  82 + </view>
  83 + </view>
  84 + <view class="desc">
  85 + <!-- 2022年10月26日 17:22:10 -->
  86 + {{$u.timeFrom(clObj.createdTime)}}
  87 + </view>
  88 + <view class="t" style="margin-top: 72rpx;">
  89 + <view class="green"></view>
  90 + <view class="title">
  91 + 备注
  92 + </view>
  93 + </view>
  94 + <view class="desc">
  95 + {{clObj.remarks}}
  96 + </view>
  97 + <view class="t" style="margin-top: 72rpx;">
  98 + <view class="green"></view>
  99 + <view class="title">
  100 + 照片
  101 + </view>
  102 + </view>
  103 + <view style="margin-top: 32rpx;">
  104 + <u-grid :col="3" :border="false">
  105 + <u-grid-item v-for="(item, index) in picList" :key="index">
  106 + <u-image :height="196" :width="196" :src="item"></u-image>
  107 + </u-grid-item>
  108 + </u-grid>
  109 + </view>
  110 + <view class="t" style="margin-top: 72rpx;">
  111 + <view class="green"></view>
  112 + <view class="title">
  113 + 附件
  114 + </view>
  115 + </view>
  116 + <view class="pdffj" v-for="(item,index) in fileList " @click="openLink(item)">
  117 + <image class="img" src="/static/img/common/link.png"></image>
  118 + <text class="look">{{item.filename}}</text>
  119 + <!-- <text class="look">{{item.filename}}</text> -->
  120 + </view>
  121 + </view>
  122 + <view v-else class="bczl">
  123 + <view class="no_data">
  124 + <image class="img" src="/static/img/home/nodata.png"></image>
  125 + <view style="
  126 + font-size: 16px;
  127 + color: #333333;
  128 + margin-top: 60rpx;
  129 + text-align: center;
  130 + ">暂无数据</view>
  131 + </view>
  132 + </view>
  133 + <view style="height: 94px;"></view>
  134 + <!-- <view v-if="cjtype" class="btv">
  135 + <view class="btn" @click="editClick">
  136 + {{(JSON.stringify(clObj) != '{}' && clObj)?'编辑':'上传报名材料'}}
  137 + </view>
  138 + </view> -->
  139 + </view>
  140 + </view>
  141 +</template>
  142 +
  143 +<script>
  144 + import {
  145 + formChangeApplydetailUrl,
  146 + getImgUrlApi,
  147 + putformChangeApplyapprovalUrl
  148 + } from '@/config/api.js';
  149 +
  150 + export default {
  151 + data() {
  152 + return {
  153 + title: '',
  154 + desc: '',
  155 + changeid: '',
  156 + detailObj: {},
  157 + questions: [],
  158 + statusImg: '',
  159 + wageTypes: {
  160 + "monthly": "月",
  161 + "daily": "日",
  162 + "hourly": "时",
  163 + "annual": "年"
  164 + },
  165 + menu_list: [{
  166 + name: '变更详情'
  167 + }, {
  168 + name: '变更材料'
  169 + }],
  170 + current: 0,
  171 + cjtype: false,
  172 + clObj: {},
  173 + picList: [],
  174 + fileList: [],
  175 + }
  176 + },
  177 +
  178 + onLoad(e) {
  179 + console.log(e)
  180 + this.changeid = e.id
  181 + },
  182 +
  183 + onShow() {
  184 + this.loadData()
  185 + },
  186 +
  187 + methods: {
  188 +
  189 + // change(index) {
  190 + // this.current = index;
  191 + // },
  192 +
  193 + handelCancel() {
  194 + putformChangeApplyapprovalUrl(this.changeid,{status: 'reject'}).then(res => {
  195 + if (res) {
  196 + uni.navigateBack({
  197 + delta: 1
  198 + });
  199 + }
  200 + })
  201 + },
  202 +
  203 + hancelSubmit() {
  204 + putformChangeApplyapprovalUrl(this.changeid,{status: 'adopt'}).then(res => {
  205 + if (res) {
  206 + uni.navigateBack({
  207 + delta: 1
  208 + });
  209 + }
  210 + })
  211 + },
  212 +
  213 + click(item) {
  214 + console.log('item', item);
  215 + this.current = item.index;
  216 + },
  217 +
  218 + loadData() {
  219 + formChangeApplydetailUrl(this.changeid).then(res => {
  220 + if (res) {
  221 + this.detailObj = res;
  222 +
  223 + this.title = res.form.projectName
  224 + this.desc = res.form.courseName
  225 +
  226 + if (res.auditStatus == "wait") {
  227 + this.statusImg = '/static/img/home/status_need_qiye.png'
  228 + this.cjtype = true
  229 + }else if (res.auditStatus == "company_wait") {
  230 + this.statusImg = '/static/img/home/status_need_qiye.png'
  231 + this.cjtype = false
  232 + }
  233 +
  234 + this.clObj = res.entryAttachments
  235 + if (res.entryAttachments) {
  236 + this.handleDataspdf()
  237 + this.handlePicks()
  238 + }
  239 +
  240 + let q1_nb = {
  241 + title: '变更申请',
  242 + desc: [{
  243 + title: "变更类型:",
  244 + desc: "内部转岗"
  245 + },
  246 + {
  247 + title: "转岗日期:",
  248 + desc: this.$u.timeFormat(res.quitTime,'yyyy-mm-dd')
  249 + },
  250 + {
  251 + title: "变更原因:",
  252 + desc: res.applyReason
  253 + }
  254 + ]
  255 + }
  256 +
  257 + let sorce = ''
  258 + if (res.afterJobSource == "school") {
  259 + sorce = "学校推荐"
  260 + }else if (res.afterJobSource == "hro_platform") {
  261 + sorce = "平台选岗"
  262 + }else if (res.afterJobSource == "student") {
  263 + sorce = "自主添加"
  264 + }
  265 + let q1_qt = {
  266 + title: '变更申请',
  267 + desc: [{
  268 + title: "变更类型:",
  269 + desc: "其他企业岗位"
  270 + },
  271 + {
  272 + title: "离职日期:",
  273 + desc: this.$u.timeFormat(res.quitTime,'yyyy-mm-dd')
  274 + },
  275 + {
  276 + title: "入职日期:",
  277 + desc: this.$u.timeFormat(res.entryTime,'yyyy-mm-dd')
  278 + },
  279 + {
  280 + title: "岗位来源:",
  281 + desc: sorce
  282 + },
  283 + {
  284 + title: "变更原因:",
  285 + desc: res.applyReason
  286 + }
  287 + ]
  288 + }
  289 +
  290 + let oldmoney = ''
  291 + let newmoney = ''
  292 + if ("negotiable" == res.oldJob.wageType) {
  293 + oldmoney = "薪资面议"
  294 + } else if (res.oldJob.wageLower == res.oldJob.wageUpper) {
  295 + oldmoney = res.oldJob.wageLower + '元' + "/" + this.wageTypes[res.oldJob.wageType]
  296 + } else {
  297 + oldmoney = res.oldJob.wageLower + '元' + "-" + res.oldJob.wageUpper + '元' + "/" + this
  298 + .wageTypes[res.oldJob.wageType]
  299 + }
  300 + if ("negotiable" == res.newJob.wageType) {
  301 + newmoney = "薪资面议"
  302 + } else if (res.newJob.wageLower == res.newJob.wageUpper) {
  303 + newmoney = res.newJob.wageLower + '元' + "/" + this.wageTypes[res.newJob.wageType]
  304 + } else {
  305 + newmoney = res.newJob.wageLower + '元' + "-" + res.newJob.wageUpper + '元' + "/" + this
  306 + .wageTypes[res.newJob.wageType]
  307 + }
  308 + let q2 = {
  309 + title: '原单位信息',
  310 + desc: [{
  311 + title: "实习企业:",
  312 + desc: res.oldJob.company
  313 + },
  314 + {
  315 + title: "实习岗位:",
  316 + desc: res.oldJob.name
  317 + },
  318 + {
  319 + title: "薪资:",
  320 + desc: oldmoney
  321 + },
  322 + {
  323 + title: "所在地区:",
  324 + desc: res.oldJob.province + '/' + res.oldJob.city + '/' + res.oldJob
  325 + .district
  326 + },
  327 + {
  328 + title: "详细地址:",
  329 + desc: res.oldJob.workSite
  330 + }
  331 + ]
  332 + }
  333 + let q3 = {
  334 + title: '新单位信息',
  335 + desc: [{
  336 + title: "实习企业:",
  337 + desc: res.newJob.company
  338 + },
  339 + {
  340 + title: "实习岗位:",
  341 + desc: res.newJob.name
  342 + },
  343 + {
  344 + title: "薪资:",
  345 + desc: oldmoney
  346 + },
  347 + {
  348 + title: "所在地区:",
  349 + desc: res.newJob.province + '/' + res.newJob.city + '/' + res.newJob
  350 + .district
  351 + },
  352 + {
  353 + title: "详细地址:",
  354 + desc: res.newJob.workSite
  355 + }
  356 + ]
  357 + }
  358 + if (res.changeType == "internal_transfer") {
  359 + this.questions.push(q1_nb)
  360 + } else {
  361 + this.questions.push(q1_qt)
  362 + }
  363 + this.questions.push(q2)
  364 + this.questions.push(q3)
  365 + }
  366 + })
  367 + },
  368 +
  369 + editClick() {
  370 + if (JSON.stringify(this.clObj) != '{}' && this.clObj) {
  371 + this.$u.route({
  372 + url: '/pages/student/internship/intership-msg/intership-msg',
  373 + params: {
  374 + type: '2',
  375 + id: this.id,
  376 + obj: JSON.stringify(this.clObj)
  377 + }
  378 + })
  379 + }else {
  380 + this.$u.route({
  381 + url: '/pages/student/internship/intership-msg/intership-msg',
  382 + params: {
  383 + type: '1',
  384 + id: this.id
  385 + }
  386 + })
  387 + }
  388 + },
  389 +
  390 + handlePicks() { //处理获取的网络图片
  391 + this.picList = []
  392 + if (this.clObj.attachments) {
  393 + // this.createdTime = this.$u.timeFormat(this.datas.createdTime / 1000, 'yyyy/mm/dd');
  394 + var originInfo = JSON.parse(this.clObj.attachments);
  395 + // this.attachments = this.attachments.concat(originInfo)
  396 + // console.log("1---", originInfo, "2---", this.attachments)
  397 + if (originInfo && originInfo.length > 0) {
  398 + for (var i = 0; i < originInfo.length; i++) {
  399 + getImgUrlApi({
  400 + bucket: originInfo[i].bucket,
  401 + filePath: originInfo[i].object
  402 + }).then(res => {
  403 + this.picList.push(res.url)
  404 + console.log('picList...', this.picList)
  405 + })
  406 + }
  407 + }
  408 + }
  409 + },
  410 +
  411 + handleDataspdf() { //处理获取的pdf
  412 + if (this.clObj.attachmentsFile) {
  413 + this.fileList = JSON.parse(this.clObj.attachmentsFile)
  414 + // this.attachmentsFile = this.attachmentsFile.concat(this.fileList)
  415 + }
  416 + },
  417 +
  418 + openLink(e) {
  419 + var _this = this
  420 +
  421 + uni.showLoading({
  422 + title: '努力加载中~',
  423 + mask: true
  424 + })
  425 +
  426 + getImgUrlApi({
  427 + bucket: e.bucket,
  428 + filePath: e.object
  429 + }).then(data => {
  430 + console.log("data...", data)
  431 + if (e.mime_type.indexOf("image") != -1) {
  432 + _this.openImage(data.url)
  433 + } else {
  434 + uni.downloadFile({
  435 + url: data.url,
  436 + success: function(res) {
  437 + var filePath = res.tempFilePath;
  438 + uni.openDocument({
  439 + filePath: filePath,
  440 + showMenu: true,
  441 + success: function(res) {
  442 + console.log('打开文档成功');
  443 + },
  444 + complete: function() {
  445 + uni.hideLoading();
  446 + }
  447 + });
  448 + }
  449 + });
  450 + }
  451 + })
  452 + },
  453 +
  454 + openImage(imgPath) {
  455 + let array = new Array(1).fill(imgPath);
  456 + uni.previewImage({
  457 + urls: array,
  458 + success(res) {
  459 + uni.hideLoading();
  460 + console.log('openImage success');
  461 + },
  462 + fail(res) {
  463 + uni.hideLoading();
  464 + console.log('openImage fail:', res);
  465 + }
  466 + });
  467 + },
  468 + }
  469 + }
  470 +</script>
  471 +
  472 +<style>
  473 + page {
  474 + background-color: #F7F7F7;
  475 + }
  476 +</style>
  477 +
  478 +<style lang="scss" scoped>
  479 + .page {
  480 +
  481 + .top {
  482 + padding: 50rpx 32rpx;
  483 + background-color: #fff;
  484 +
  485 + .title {
  486 + font-size: 20px;
  487 + font-family: PingFangSC-Medium, PingFang SC;
  488 + font-weight: 500;
  489 + color: #000000;
  490 + line-height: 30px;
  491 + }
  492 +
  493 + .t1 {
  494 + margin-top: 18rpx;
  495 + font-size: 14px;
  496 + font-family: PingFangSC-Regular, PingFang SC;
  497 + font-weight: 400;
  498 + color: rgba(0, 0, 0, 0.6500);
  499 + }
  500 +
  501 + }
  502 +
  503 + .sxdw_icon116 {
  504 + position: absolute;
  505 + right: 0;
  506 + top: 0;
  507 + width: 224rpx;
  508 + height: 30px;
  509 + }
  510 +
  511 + .status {
  512 + position: absolute;
  513 + right: 10px;
  514 + top: 10px;
  515 + font-size: 16px;
  516 + font-family: PingFangSC-Regular, PingFang SC;
  517 + font-weight: 400;
  518 + }
  519 +
  520 + .content {
  521 + padding: 40rpx 32rpx;
  522 + background-color: #fff;
  523 + border-radius: 10px;
  524 + margin-top: 16rpx;
  525 +
  526 + .c1 {
  527 + font-size: 16px;
  528 + font-family: PingFangSC-Semibold, PingFang SC;
  529 + font-weight: 600;
  530 + color: #000000;
  531 + }
  532 +
  533 + .c2 {
  534 + margin-top: 16rpx;
  535 + font-size: 14px;
  536 + font-family: PingFangSC-Regular, PingFang SC;
  537 + font-weight: 400;
  538 + color: rgba(0, 0, 0, 0.6500);
  539 + }
  540 +
  541 + .grayV {
  542 + margin-top: 24rpx;
  543 + height: 98px;
  544 + background: #F7F7F7;
  545 + border-radius: 4px;
  546 + padding: 8rpx 16rpx;
  547 + position: relative;
  548 +
  549 + .g1 {
  550 + font-size: 16px;
  551 + font-family: PingFangSC-Semibold, PingFang SC;
  552 + font-weight: 600;
  553 + color: #000000;
  554 + }
  555 +
  556 + .timeline {
  557 + position: absolute;
  558 + left: 2rpx;
  559 + top: 72rpx;
  560 + width: 40rpx;
  561 + height: 100rpx;
  562 + }
  563 +
  564 + .start {
  565 + position: absolute;
  566 + left: 88rpx;
  567 + top: 68rpx;
  568 + font-size: 14px;
  569 + font-family: DINAlternate-Bold, DINAlternate;
  570 + font-weight: bold;
  571 + color: rgba(0, 0, 0, 0.6500);
  572 + }
  573 +
  574 + .end {
  575 + position: absolute;
  576 + left: 88rpx;
  577 + top: 134rpx;
  578 + font-size: 14px;
  579 + font-family: DINAlternate-Bold, DINAlternate;
  580 + font-weight: bold;
  581 + color: rgba(0, 0, 0, 0.6500);
  582 + }
  583 + }
  584 +
  585 + .fj_content {
  586 + margin-top: 8px;
  587 + background-color: #fff;
  588 +
  589 + .item {
  590 + width: 100%;
  591 + display: flex;
  592 + flex-direction: row;
  593 + flex-wrap: wrap;
  594 +
  595 + .p_item {
  596 + position: relative;
  597 + width: 120rpx;
  598 + height: 120rpx;
  599 + margin-right: 13px;
  600 + margin-bottom: 13px;
  601 +
  602 + .delete {
  603 + position: absolute;
  604 + width: 24rpx;
  605 + height: 24rpx;
  606 + top: -12rpx;
  607 + right: -12rpx;
  608 + z-index: 199;
  609 + }
  610 + }
  611 +
  612 + }
  613 +
  614 + }
  615 + }
  616 +
  617 + .nav_bar_topV65 {
  618 + background-color: #FFFFFF;
  619 + width: 50%;
  620 + }
  621 +
  622 + .timeb {
  623 + padding: 40rpx 36rpx;
  624 + background-color: #fff;
  625 + border-radius: 10px;
  626 + margin-top: 16rpx;
  627 + position: relative;
  628 +
  629 + .title {
  630 + font-size: 16px;
  631 + font-family: PingFangSC-Semibold, PingFang SC;
  632 + font-weight: 600;
  633 + color: #000000;
  634 + margin-bottom: 20rpx;
  635 + }
  636 +
  637 + .nodef {
  638 + display: flex;
  639 + justify-content: start;
  640 + margin-bottom: 30rpx;
  641 +
  642 + .node1 {
  643 + position: relative;
  644 + margin-top: 4px;
  645 +
  646 + .line {
  647 + position: absolute;
  648 + left: 5px;
  649 + width: 1px;
  650 + height: 100%;
  651 + background-color: #f7f7f7;
  652 + }
  653 + }
  654 +
  655 + .node2 {
  656 + margin-left: 10px;
  657 + }
  658 + }
  659 +
  660 + .u-node {
  661 + width: 12px;
  662 + height: 12px;
  663 + border-radius: 12rpx;
  664 + background: #E5E5E6;
  665 + }
  666 +
  667 + .u-green-node {
  668 + width: 12px;
  669 + height: 12px;
  670 + border-radius: 12rpx;
  671 + background: #0CB17A;
  672 + }
  673 +
  674 + .u-order-title {
  675 + font-size: 15px;
  676 + font-family: PingFangSC-Medium, PingFang SC;
  677 + font-weight: 500;
  678 + color: #000000;
  679 + }
  680 +
  681 + .u-order-reply {
  682 + width: 100%;
  683 + padding: 20rpx 20rpx 1rpx;
  684 + background: #F7F7F7;
  685 + border-radius: 4px;
  686 + margin-top: 22rpx;
  687 + }
  688 +
  689 + }
  690 +
  691 + .bczl {
  692 + margin: 20rpx 10rpx 0rpx;
  693 + padding: 52rpx 38rpx;
  694 + background-color: #fff;
  695 +
  696 + .t {
  697 + display: flex;
  698 + align-items: center;
  699 +
  700 + .green {
  701 + width: 3px;
  702 + height: 15px;
  703 + background: #0CB17A;
  704 + }
  705 +
  706 + .title {
  707 + margin-left: 16rpx;
  708 + font-size: 16px;
  709 + font-family: PingFangSC-Medium, PingFang SC;
  710 + font-weight: 500;
  711 + color: #000000;
  712 + }
  713 +
  714 + }
  715 +
  716 + .desc {
  717 + margin-top: 32rpx;
  718 + margin-left: 16rpx;
  719 + font-size: 14px;
  720 + font-family: PingFangSC-Regular, PingFang SC;
  721 + font-weight: 400;
  722 + color: rgba(0,0,0,0.65);
  723 + }
  724 +
  725 + .pdffj {
  726 + padding: 28rpx 16rpx;
  727 +
  728 + .img {
  729 + width: 24rpx;
  730 + height: 24rpx;
  731 + margin-right: 12rpx;
  732 + }
  733 +
  734 + .look {
  735 + font-size: 28rpx;
  736 + font-family: PingFangSC-Regular, PingFang SC;
  737 + font-weight: 400;
  738 + color: #0CB17A;
  739 + margin-left: 8rpx;
  740 + }
  741 + }
  742 + }
  743 +
  744 + .no_data {
  745 + width: 100%;
  746 +
  747 + .img {
  748 + display: block;
  749 + margin: 0 auto;
  750 + margin-top: 100rpx;
  751 + width: 260rpx;
  752 + height: 200rpx;
  753 + }
  754 +
  755 + .text_black_28 {
  756 + font-family: PingFangSC-Regular, PingFang SC;
  757 + font-weight: 400;
  758 + color: #000000;
  759 + margin-top: 48rpx;
  760 + text-align: center;
  761 + }
  762 + }
  763 +
  764 + .footer {
  765 + width: 100%;
  766 + height: 96rpx;
  767 + padding: 28rpx 30rpx;
  768 + background: #FFFFFF;
  769 + position: fixed;
  770 + bottom: 0;
  771 + left: 0;
  772 + z-index: 99;
  773 + border-top: 2rpx solid #E2E2E8;
  774 +
  775 + view {
  776 + display: inline-block;
  777 + }
  778 +
  779 + .left_btn {
  780 + width: 330rpx;
  781 + margin: 0 30rpx 0 0;
  782 + }
  783 +
  784 + .right_btn {
  785 + width: 330rpx;
  786 + }
  787 + }
  788 +
  789 + .btv {
  790 + position: fixed;
  791 + bottom: 0;
  792 + left: 0;
  793 + width: 100%;
  794 + height: 72px;
  795 + background-color: #fff;
  796 + padding: 12px 16px;
  797 +
  798 + .btn {
  799 + width: 100%;
  800 + height: 48px;
  801 + background: #0CB17A;
  802 + border-radius: 24px;
  803 + font-size: 17px;
  804 + font-family: PingFangSC-Regular, PingFang SC;
  805 + font-weight: 400;
  806 + color: #fff;
  807 + line-height: 48px;
  808 + text-align: center;
  809 + }
  810 + }
  811 +
  812 + }
  813 +</style>
... ...
  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'"
  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>
  27 + </view>
  28 +
  29 + <view class="list_box" v-if="list.length > 0">
  30 + <view class="item" v-for="(item, i) in list" :key="i" @click="handelDetail(item)">
  31 + <view class="t1">
  32 + {{item.studentName}}提交的实习变更申请
  33 + </view>
  34 + <view class="t3">
  35 + {{item.projectName}}
  36 + </view>
  37 + <view class="t2 t2top14">
  38 + 变更类型: {{item.changeType=="internal_transfer"?'内部转岗':'其他企业岗位'}}
  39 + </view>
  40 + <view v-if="item.changeType=='internal_transfer'">
  41 + <view class="t2">
  42 + 转岗日期: {{timeFormat(item.quitTime, 'yyyy-mm-dd hh:MM')}}
  43 + </view>
  44 + </view>
  45 + <view v-else>
  46 + <view class="t2">
  47 + 离职日期: {{timeFormat(item.quitTime, 'yyyy-mm-dd hh:MM')}}
  48 + </view>
  49 + <view class="t2">
  50 + 入职日期: {{timeFormat(item.entryTime, 'yyyy-mm-dd hh:MM')}}
  51 + </view>
  52 + <view class="t2">
  53 + 岗位来源: {{getCategoryList(item.afterJobSource)}}
  54 + </view>
  55 + </view>
  56 + <view v-if="item.status == 'wait'" class="status" style="color: #F49A23;">
  57 + 待处理
  58 + </view>
  59 + <view v-else-if="item.status == 'adopt'" class="status" style="color: #0CB17A;">
  60 + 已通过
  61 + </view>
  62 + <view v-else-if="item.status == 'reject'" class="status" style="color: red;">
  63 + 已驳回
  64 + </view>
  65 + <view class="time">
  66 + {{timeFormat(item.createdTime, 'mm-dd')}}
  67 + </view>
  68 + </view>
  69 + <c-loading :loading="loading"></c-loading>
  70 + </view>
  71 + <view v-else class="no_data">
  72 + <c-no-data></c-no-data>
  73 + </view>
  74 +
  75 + <u-popup :show="show" mode="bottom" @close="close" :round="22">
  76 + <view class="popup">
  77 + <view style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 28px;">
  78 + <view class="title">
  79 + 项目筛选
  80 + </view>
  81 + <image class="close" src="/static/img/home/closepop.png" @click="close" mode=""></image>
  82 + </view>
  83 + <view class="search">
  84 + <u-search placeholder="请输入项目关键词搜索" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  85 + bgColor="#F4F4F4" :showAction="true" shape="round" v-model="sxsearch" @custom="workSearch()" @search="workSearch()">
  86 + </u-search>
  87 + </view>
  88 + <scroll-view v-if="works.length>0" scroll-y="true" style="height: 80%; margin-top: 40rpx;"
  89 + @scrolltolower="lower()">
  90 + <view class="item_box" v-for="(item,index) in works" :key="index" @click="popupSelItem(item)">
  91 + <view style="display: flex; align-items: center; justify-content: space-between;">
  92 + <view class="item_title">
  93 + {{item.name}}
  94 + </view>
  95 + <image v-if="item.id == projectId" style="width: 20px; height: 20px;"
  96 + src="/static/img/home/popselect.png" mode=""></image>
  97 + </view>
  98 + </view>
  99 + </scroll-view>
  100 + <view v-else class="no_data" @click="jumpVerified">
  101 + <view class="text_black_28">
  102 + 暂未搜索到该项目
  103 + </view>
  104 + </view>
  105 + </view>
  106 + </u-popup>
  107 +
  108 + <!-- <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false">
  109 + <view class="popup_search">
  110 + <view class="content">
  111 + <view class="title">按项目筛选</view>
  112 + <scroll-view class="scroll" scroll-y="true">
  113 + <view class="item" v-for="(item, i) in projectList" :key="i" @click="handelClick(item)">
  114 + <view class="selectItem" v-if="item.id == projectId">
  115 + <text>{{item.name}}</text>
  116 + </view>
  117 + <view v-else>
  118 + <text>{{item.name}}</text>
  119 + </view>
  120 + </view>
  121 + </scroll-view>
  122 + <view class="switch">
  123 + <text>待处理</text>
  124 + <u-switch v-model="switchValue" size="48" activeColor="#06B079" @change="handelChange">
  125 + </u-switch>
  126 + </view>
  127 + </view>
  128 +
  129 + <view class="footer">
  130 + <view class="left_btn">
  131 + <c-button type="cancel" text="重置" @click="handelCancel">
  132 + </c-button>
  133 + </view>
  134 + <view class="right_btn">
  135 + <c-button type="confirm" text="确定" @click="hancelSubmit">
  136 + </c-button>
  137 + </view>
  138 + </view>
  139 +
  140 + </view>
  141 + </u-popup> -->
  142 +
  143 + </view>
  144 +</template>
  145 +
  146 +<script>
  147 + import {
  148 + mapGetters,
  149 + mapState,
  150 + mapActions
  151 + } from 'vuex'
  152 + import listMixin from "@/common/mixins/list-mixin.js";
  153 +
  154 + import {
  155 + getformChangeApplyListApi,
  156 + getProjectListApi,
  157 + } from '@/config/api.js';
  158 +
  159 + export default {
  160 + mixins: [listMixin],
  161 + data() {
  162 + return {
  163 + checkboxValue: [],
  164 + // 基本案列数据
  165 + checkboxList: [{
  166 + name: '待处理',
  167 + disabled: false
  168 + }],
  169 + keyword: '',
  170 + show: false,
  171 + list: [], //列表必须为key list的数组
  172 + search: {
  173 + //搜索对象必须为key search的对象
  174 + keySearch: "",
  175 + status: '',
  176 +
  177 + },
  178 + projectId: '',
  179 + switchValue: false,
  180 + categoryList: [{
  181 + label: '事假',
  182 + value: 'personal'
  183 + },
  184 + {
  185 + label: '病假',
  186 + value: "sick",
  187 + },
  188 + {
  189 + label: '调休',
  190 + value: "exchange",
  191 + },
  192 + {
  193 + label: '其他',
  194 + value: "other",
  195 + }
  196 + ],
  197 + curNow: 1,
  198 + sxsearch: '',
  199 + works: [],
  200 + workspage: 1,
  201 + workstotal: 0,
  202 + }
  203 + },
  204 +
  205 + onLoad(option) {
  206 + console.log(option)
  207 + // this.$store.dispatch(`home/getProjectList`, {
  208 + // pageSize: -1,
  209 + // })
  210 +
  211 + this.worksloadData()
  212 +
  213 + // this.search.keySearch = '';
  214 +
  215 + if (option && option.status) {
  216 + // this.search.status = 'wait';
  217 + this.curNow = 0;
  218 + // this.checkboxValue = ['待处理'];
  219 + // this.switchValue = true;
  220 + }
  221 +
  222 + },
  223 +
  224 + onShow() {
  225 + this.finished = false;
  226 + this.loading = "loadmore";
  227 + this.page = 0;
  228 + this.list = [];
  229 + this._getList();
  230 + },
  231 +
  232 + computed: {
  233 + ...mapState('home', {
  234 + // 箭头函数可使代码更简练
  235 + projectList: 'projectList',
  236 +
  237 + }),
  238 +
  239 + },
  240 +
  241 + methods: {
  242 +
  243 + searchCli() {
  244 + this.$u.route('/pages/main/home/search/search?type=change&searchkey=' + this.keyword);
  245 + },
  246 +
  247 + sectionChange(index) {
  248 + this.curNow = index;
  249 +
  250 + this.finished = false;
  251 + this.loading = "loadmore";
  252 + this.page = 0;
  253 + this.list = [];
  254 + this._getList();
  255 + },
  256 +
  257 + handelDetail(record) {
  258 + this.$u.route({
  259 + url: '/pages/main/home/changedetail/changedetail',
  260 + params: {
  261 + id: record.id,
  262 + }
  263 + })
  264 + },
  265 +
  266 + getCategoryList(e) {
  267 + if (e == 'hro_platform') {
  268 + return 'HRO平台'
  269 + }else if (e == 'hr_platform') {
  270 + return 'HR平台'
  271 + }else if (e == 'school') {
  272 + return '学校创建'
  273 + }else if (e == 'student') {
  274 + return '学生端自主添加'
  275 + }else if (e == 'platform') {
  276 + return '平台推荐'
  277 + }
  278 + return ''
  279 + },
  280 +
  281 + timeFormat(timestamp, format = 'yyyy-mm-dd') {
  282 + return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'
  283 + },
  284 +
  285 + checkboxChange(n) {
  286 + console.log('change', n);
  287 +
  288 + this.search.status = n.length > 0 ? 'wait' : '';
  289 +
  290 + this.switchValue = n.length > 0 ? true : false;
  291 +
  292 + this.finished = false;
  293 + this.loading = "loadmore";
  294 + this.page = 0;
  295 + this.list = [];
  296 + this._getList();
  297 + },
  298 +
  299 + handelSearch(value) {
  300 + this.finished = false;
  301 + this.loading = "loadmore";
  302 + this.page = 0;
  303 + this.list = [];
  304 + this._getList();
  305 + },
  306 +
  307 + open() {
  308 + // console.log('open');
  309 + },
  310 + close() {
  311 + this.show = false
  312 + // console.log('close');
  313 + },
  314 + // scroll-view到底部加载更多
  315 + onreachBottom() {},
  316 + // 搜索
  317 + searchSubmit() {
  318 + // 调用混合搜索
  319 + this._searchData();
  320 + },
  321 + // 模拟后端分页
  322 + async getData(requestParams) {
  323 + const {
  324 + search = {}
  325 + } = requestParams;
  326 +
  327 + let params = {};
  328 + params.pageNumber = requestParams.page + 1;
  329 + params.pageSize = 5;
  330 +
  331 + if (this.curNow == 0) {
  332 + params.status = 'wait';
  333 + }
  334 +
  335 + if (this.keyword) {
  336 + params.keySearch = this.keyword
  337 + }
  338 +
  339 + if (this.projectId) {
  340 + params.projectId = this.projectId
  341 + }
  342 +
  343 + return await getformChangeApplyListApi(params);
  344 + },
  345 + // 数据请求(没错就是这么少的代码)
  346 + async _getList() {
  347 + if (this.page == 0) {
  348 + this.list = [];
  349 + }
  350 +
  351 + // 根据实际情况修改自己修改key
  352 + let result = await this.getData({
  353 + page: this.page, // 传入页码
  354 + size: this.size, // 传入每页条数
  355 + search: this.search, // 传入搜索的对象
  356 + });
  357 +
  358 + this.total = result.total;
  359 +
  360 + if (this.list.length == 0 && result.records.length == 0) {
  361 + this.shownoData = false
  362 + } else {
  363 + this.shownoData = true
  364 + }
  365 +
  366 + this.list = this.list.concat(result.records)
  367 +
  368 + // 判断是否全部加载完成
  369 + if (this.total == this.list.length) {
  370 + this.finished = true;
  371 + this.loading = 'nomore';
  372 + } else {
  373 + this.loading = 'loadmore';
  374 + }
  375 + },
  376 +
  377 + handelClick(values) {
  378 + console.log(values);
  379 + this.projectId = values.id;
  380 + },
  381 +
  382 + handelChange(e) {
  383 + console.log(e)
  384 + this.checkboxValue = e ? ['待处理'] : [];
  385 + this.search.status = e ? 'wait' : '';
  386 +
  387 + },
  388 +
  389 + handelCancel() {
  390 + this.switchValue = false;
  391 + this.projectId = '';
  392 + },
  393 +
  394 + hancelSubmit() {
  395 + this.finished = false;
  396 + this.loading = "loadmore";
  397 + this.page = 0;
  398 + this.list = [];
  399 + this._getList();
  400 +
  401 + this.show = false;
  402 + },
  403 +
  404 + workSearch() {
  405 + uni.hideKeyboard();
  406 + this.works = []
  407 + this.worksloadData()
  408 + },
  409 +
  410 + lower() {
  411 + setTimeout(() => {
  412 + this.worksloadData(true);
  413 + }, 200)
  414 + },
  415 +
  416 + worksloadData(e) {
  417 + let params = {}
  418 + // this.loading = 'loading'
  419 +
  420 + if (e) {
  421 + if (this.total <= this.works.length) {
  422 + // this.loading = 'nomore'
  423 + return
  424 + }
  425 + this.workspage++
  426 + } else {
  427 + this.workspage = 1
  428 + }
  429 + params['pageNumber'] = this.workspage
  430 + if (this.sxsearch) {
  431 + params['keyWord'] = this.sxsearch
  432 + }
  433 + getProjectListApi(params).then(async res => {
  434 + if (res) {
  435 + this.total = res.total
  436 + // this.loading = 'loadmore'
  437 + this.works = this.works.concat(res.records)
  438 + }
  439 + })
  440 + },
  441 + popupSelItem(item) {
  442 + this.show = false
  443 + this.projectId = item.id;
  444 + this.finished = false;
  445 + this.loading = "loadmore";
  446 + this.page = 0;
  447 + this.list = [];
  448 + this._getList();
  449 + },
  450 +
  451 + }
  452 + }
  453 +</script>
  454 +
  455 +<style lang="scss" scoped>
  456 + .registration_review {
  457 + width: 100%;
  458 + min-height: 100%;
  459 + height: auto;
  460 + background-color: #F7F7F7;
  461 +
  462 + .search_box {
  463 + padding: 36rpx 30rpx 12rpx;
  464 + background-color: #FFFFFF;
  465 + display: flex;
  466 + flex-flow: row nowrap;
  467 + justify-content: space-between;
  468 +
  469 + .check {
  470 + padding: 20rpx 0 0 0;
  471 + }
  472 +
  473 + .search {
  474 + width: 468rpx;
  475 + }
  476 + }
  477 +
  478 + .list_box {
  479 + padding: 0 0 50rpx 0;
  480 +
  481 + .item {
  482 + position: relative;
  483 + margin: 8px 13px 0;
  484 + padding: 20px 17px;
  485 + border-radius: 8rpx;
  486 + background-color: #FFFFFF;
  487 +
  488 + .t1 {
  489 + font-size: 14px;
  490 + font-family: PingFangSC-Medium, PingFang SC;
  491 + font-weight: 500;
  492 + color: #000000;
  493 + }
  494 +
  495 + .t2 {
  496 + margin-top: 6px;
  497 + font-size: 12px;
  498 + font-family: PingFangSC-Light, PingFang SC;
  499 + font-weight: 300;
  500 + color: rgba(38, 41, 47, 0.85);
  501 + }
  502 +
  503 + .t3 {
  504 + font-size: 12px;
  505 + font-family: PingFangSC-Light, PingFang SC;
  506 + font-weight: 300;
  507 + color: #000000;
  508 + }
  509 +
  510 + .t2top14 {
  511 + margin-top: 14px;
  512 + }
  513 +
  514 + .time {
  515 + position: absolute;
  516 + top: 17px;
  517 + right: 17px;
  518 + font-size: 12px;
  519 + font-family: PingFangSC-Light, PingFang SC;
  520 + font-weight: 300;
  521 + color: rgba(0, 0, 0, 0.85);
  522 + }
  523 +
  524 + .status {
  525 + position: absolute;
  526 + bottom: 20px;
  527 + right: 17px;
  528 + font-size: 12px;
  529 + font-family: PingFangSC-Regular, PingFang SC;
  530 + font-weight: 400;
  531 + }
  532 + }
  533 + }
  534 +
  535 + .popup_search {
  536 + width: 640rpx;
  537 + position: relative;
  538 +
  539 + .content {
  540 + padding: 0 40rpx;
  541 +
  542 + .title {
  543 + padding: 24rpx 0;
  544 + font-size: 28rpx;
  545 + line-height: 36rpx;
  546 + color: #202131;
  547 + }
  548 +
  549 + .scroll {
  550 + max-height: 60vh;
  551 +
  552 + .item {
  553 +
  554 + view {
  555 + display: flex;
  556 + flex-flow: row wrap;
  557 + align-items: center;
  558 + width: 500rpx;
  559 + height: 74rpx;
  560 + border-radius: 4rpx;
  561 + border: 2rpx solid #C1C1C9;
  562 + margin: 0 10rpx 20rpx;
  563 + font-size: 24rpx;
  564 + line-height: 32rpx;
  565 + color: #C0C0C9;
  566 + padding: 16rpx 20rpx;
  567 + }
  568 +
  569 + .selectItem {
  570 + background-color: #06B079;
  571 + color: #FFFFFF;
  572 + border: 2rpx solid #06B079;
  573 + }
  574 + }
  575 + }
  576 +
  577 + .switch {
  578 + display: flex;
  579 + flex-flow: row nowrap;
  580 + justify-content: space-between;
  581 + padding: 40rpx 0 0 0;
  582 +
  583 + text {
  584 + font-size: 28rpx;
  585 + line-height: 36rpx;
  586 + color: #202131;
  587 + }
  588 + }
  589 +
  590 +
  591 + }
  592 +
  593 + .footer {
  594 + width: 560rpx;
  595 + height: 96rpx;
  596 + padding: 28rpx 40rpx;
  597 + background: #FFFFFF;
  598 + position: fixed;
  599 + bottom: 0;
  600 + right: 0;
  601 + z-index: 99;
  602 + border-top: 2rpx solid #E2E2E8;
  603 +
  604 + view {
  605 + display: inline-block;
  606 + }
  607 +
  608 + .left_btn {
  609 + width: 194rpx;
  610 + margin: 0 20rpx 0 0;
  611 + }
  612 +
  613 + .right_btn {
  614 + width: 346rpx;
  615 + }
  616 + }
  617 + }
  618 +
  619 + .popup {
  620 + height: 500px;
  621 + padding: 19px 16px;
  622 +
  623 + .title {
  624 + font-size: 18px;
  625 + font-family: PingFangSC-Medium, PingFang SC;
  626 + font-weight: 500;
  627 + color: #000000;
  628 + }
  629 +
  630 + .close {
  631 + width: 22px;
  632 + height: 22px;
  633 + }
  634 +
  635 + .item_box {
  636 + border-radius: 4px;
  637 + margin: 0 0 48rpx;
  638 +
  639 + .item_title {
  640 + height: 20px;
  641 + font-size: 14px;
  642 + font-family: PingFangSC-Regular, PingFang SC;
  643 + font-weight: 400;
  644 + color: rgba(0, 0, 0, 0.65);
  645 + line-height: 20px;
  646 + }
  647 +
  648 + }
  649 +
  650 + .no_data {
  651 + width: 100%;
  652 + margin-top: 310rpx;
  653 +
  654 + .text_black_28 {
  655 + font-size: 14px;
  656 + font-family: PingFangSC-Light, PingFang SC;
  657 + font-weight: 300;
  658 + color: rgba(0, 0, 0, 0.65);
  659 + text-align: center;
  660 + }
  661 +
  662 + }
  663 +
  664 + }
  665 + }
  666 +</style>
... ...
1 1 <template>
2 2 <view class="log_detail">
3 3
4   - <scroll-view scroll-y="true" style="height: 100vh;" :scroll-with-animation="true">
  4 + <scroll-view scroll-y="true" style="height: 90%;" :scroll-with-animation="true">
5 5 <view class="header_box">
6 6 <view class="header">
7 7 <view class="avatar">{{getNameLastTwo(detail.studentName)}}</view>
... ... @@ -34,6 +34,15 @@
34 34 <u-parse :content="detail.content"></u-parse>
35 35 </view>
36 36
  37 + <view v-if="attachments&&attachments.length>0" class="fj">
  38 + <view v-for="(item,index) in attachments " @click="openLink(item)">
  39 + <view class="fj_item">
  40 + <image class="img" src="/static/img/internship/link.png"></image>
  41 + <text class="look">{{item.filename}}</text>
  42 + </view>
  43 + </view>
  44 + </view>
  45 +
37 46 <view v-if="commentList.length>0" class="reply">
38 47 <view class="title">评论</view>
39 48 <view v-for="(item,index) in commentList" :key="index">
... ... @@ -80,7 +89,8 @@
80 89 getLogDetailApi,
81 90 putLogReviewApi,
82 91 getLogReplyListApi,
83   - postLogReplyApi,
  92 + postLogReplyApi,
  93 + getImgUrlApi,
84 94 } from '@/config/api.js';
85 95 export default {
86 96 data() {
... ... @@ -102,6 +112,8 @@
102 112 "company": "企业"
103 113 },
104 114 commentList: [],
  115 + attachments: [],
  116 + attachmentsFile: [],
105 117 }
106 118 },
107 119
... ... @@ -111,6 +123,7 @@
111 123 getLogDetailApi(option.id).then(data => {
112 124 if (data) {
113 125 this.detail = data
  126 + this.handleAttachments()
114 127 }
115 128 })
116 129
... ... @@ -119,6 +132,17 @@
119 132 },
120 133
121 134 methods: {
  135 + handleAttachments() {
  136 + if (this.detail.attachments) {
  137 + this.attachments = JSON.parse(this.detail.attachments)
  138 + }
  139 + // if (this.detail.attachmentsFile) {
  140 + // this.attachmentsFile = JSON.parse(this.detail.attachmentsFile)
  141 + // }
  142 + // this.attachments = this.attachments.concat(this.attachmentsFile)
  143 + console.log(this.attachments)
  144 + },
  145 +
122 146 getCreatedTime(e) {
123 147 console.log(e)
124 148 let time = this.$u.timeFormat(e.logTime / 1000, 'yyyy/mm/dd');
... ... @@ -200,7 +224,57 @@
200 224 this.reply = ''
201 225 this.getCommentList()
202 226 })
203   - }
  227 + },
  228 +
  229 + openLink(e) {
  230 + var _this = this
  231 +
  232 + uni.showLoading({
  233 + title: '努力加载中~',
  234 + mask: true
  235 + })
  236 +
  237 + getImgUrlApi({
  238 + bucket: e.bucket,
  239 + filePath: e.object
  240 + }).then(data => {
  241 + console.log("data...", data)
  242 + if (e.mime_type.indexOf("image") != -1) {
  243 + _this.openImage(data.url)
  244 + } else {
  245 + uni.downloadFile({
  246 + url: data.url,
  247 + success: function(res) {
  248 + var filePath = res.tempFilePath;
  249 + uni.openDocument({
  250 + filePath: filePath,
  251 + showMenu: true,
  252 + success: function(res) {
  253 + console.log('打开文档成功');
  254 + },
  255 + complete: function() {
  256 + uni.hideLoading();
  257 + }
  258 + });
  259 + }
  260 + });
  261 + }
  262 + })
  263 + },
  264 + openImage(imgPath) {
  265 + let array = new Array(1).fill(imgPath);
  266 + uni.previewImage({
  267 + urls: array,
  268 + success(res) {
  269 + uni.hideLoading();
  270 + console.log('openImage success');
  271 + },
  272 + fail(res) {
  273 + uni.hideLoading();
  274 + console.log('openImage fail:', res);
  275 + }
  276 + });
  277 + },
204 278 }
205 279 }
206 280 </script>
... ... @@ -208,8 +282,8 @@
208 282 <style lang="scss" scoped>
209 283 .log_detail {
210 284 width: 100%;
211   - min-height: 100%;
212   - height: auto;
  285 + // min-height: 100%;
  286 + height: 100%;
213 287 background-color: #F7F7F7;
214 288
215 289 .nextPage {
... ... @@ -314,6 +388,39 @@
314 388 color: #4A4A53;
315 389 }
316 390
  391 + .fj {
  392 + margin-top: 16rpx;
  393 + padding: 24rpx 32rpx 20rpx;
  394 + background-color: #fff;
  395 +
  396 + .fj_item {
  397 + display: flex;
  398 + align-items: center;
  399 + margin-bottom: 20rpx;
  400 + }
  401 +
  402 + .img {
  403 + width: 24rpx;
  404 + height: 24rpx;
  405 + }
  406 +
  407 + .look {
  408 + width: 90%;
  409 + display: -webkit-box;
  410 + -webkit-box-orient: vertical;
  411 + -webkit-line-clamp: 2;
  412 + overflow: hidden;
  413 + white-space: normal;
  414 + word-break: break-all;
  415 + word-wrap: break-word;
  416 + font-size: 28rpx;
  417 + font-family: PingFangSC-Regular, PingFang SC;
  418 + font-weight: 400;
  419 + color: #0CB17A;
  420 + padding-left: 15rpx;
  421 + }
  422 + }
  423 +
317 424 .reply {
318 425 background-color: #fff;
319 426 padding: 50rpx 30rpx 150rpx;
... ... @@ -356,19 +463,20 @@
356 463 }
357 464
358 465 .footer {
359   - width: 100%;
360   - height: 130rpx;
361   - background: #fff;
362   - position: fixed;
363   - bottom: 0;
364   - left: 0;
365   - z-index: 99;
  466 + // width: 100%;
  467 + height: 10%;
  468 + background: #fff;
  469 + padding: 20rpx;
  470 + // position: fixed;
  471 + // bottom: 0;
  472 + // left: 0;
  473 + // z-index: 99;
366 474
367 475 .uni-input {
368   - height: 96rpx;
  476 + min-height: 96rpx;
369 477 background: rgba(0, 0, 0, 0.04);
370 478 border-radius: 8rpx;
371   - margin: 10rpx 32rpx 32rpx 32rpx;
  479 + // margin: 10rpx 32rpx 32rpx 32rpx;
372 480 padding: 0 20rpx;
373 481 }
374 482 }
... ...
... ... @@ -61,6 +61,26 @@
61 61 <text>{{jobDetail.workSite}}</text>
62 62 </view>
63 63 </view>
  64 +
  65 + <view v-if="registrationDetail.entryAttachments" class="box">
  66 + <view class="title">报名材料</view>
  67 + <view class="time">
  68 + {{timeFormat(registrationDetail.entryAttachments.createdTime, 'yyyy-mm-dd hh:MM')}} 上传
  69 + </view>
  70 + <view class="marks">
  71 + {{registrationDetail.entryAttachments.remarks}}
  72 + </view>
  73 + <view class="cl">
  74 + <view v-if="attachments&&attachments.length>0" class="fj">
  75 + <view v-for="(item,index) in attachments " @click="openLink(item)">
  76 + <view class="fj_item">
  77 + <image class="img" src="/static/img/internship/link.png"></image>
  78 + <text class="look">{{item.filename}}</text>
  79 + </view>
  80 + </view>
  81 + </view>
  82 + </view>
  83 + </view>
64 84
65 85 <view class="box status">
66 86 <view class="title">状态</view>
... ... @@ -94,13 +114,16 @@
94 114 <script>
95 115 import {
96 116 getRegistrationDetailApi,
97   - putRegistrationReviewApi,
  117 + putRegistrationReviewApi,
  118 + getImgUrlApi,
98 119 } from '@/config/api.js';
99 120
100 121 export default {
101 122 data() {
102 123 return {
103   - registrationDetail: {},
  124 + registrationDetail: {},
  125 + attachments: [],
  126 + attachmentsFile: [],
104 127 }
105 128 },
106 129
... ... @@ -108,7 +131,9 @@
108 131 getRegistrationDetailApi(option.id).then(data => {
109 132 if (data) {
110 133 console.log(data)
111   - this.registrationDetail = data
  134 + this.registrationDetail = data
  135 +
  136 + this.handleAttachments()
112 137 }
113 138 })
114 139
... ... @@ -147,7 +172,20 @@
147 172 },
148 173 },
149 174
150   - methods: {
  175 + methods: {
  176 + handleAttachments() {
  177 + if (this.registrationDetail.entryAttachments) {
  178 + if (this.registrationDetail.entryAttachments.attachments) {
  179 + this.attachments = JSON.parse(this.registrationDetail.entryAttachments.attachments)
  180 + }
  181 + if (this.registrationDetail.entryAttachments.attachmentsFile) {
  182 + this.attachmentsFile = JSON.parse(this.registrationDetail.entryAttachments.attachmentsFile)
  183 + }
  184 + this.attachments = this.attachments.concat(this.attachmentsFile)
  185 + console.log(this.attachments)
  186 + }
  187 + },
  188 +
151 189 timeFormat(timestamp, format = 'yyyy-mm-dd') {
152 190 return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'
153 191 },
... ... @@ -176,6 +214,56 @@
176 214 });
177 215 }
178 216 })
  217 + },
  218 +
  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 + });
179 267 },
180 268 }
181 269 }
... ... @@ -257,6 +345,49 @@
257 345 .border_top {
258 346 border-top: 2rpx solid #E2E2E8;
259 347 padding: 28rpx 0 0 0;
  348 + }
  349 +
  350 + .time {
  351 + margin-top: 10rpx;
  352 + font-size: 26rpx;
  353 + }
  354 +
  355 + .marks {
  356 + margin-top: 16rpx;
  357 + font-size: 30rpx;
  358 + }
  359 +
  360 + .fj {
  361 + margin-top: 16rpx;
  362 + // padding: 24rpx 32rpx 20rpx;
  363 + background-color: #fff;
  364 +
  365 + .fj_item {
  366 + display: flex;
  367 + align-items: center;
  368 + margin-bottom: 20rpx;
  369 + }
  370 +
  371 + .img {
  372 + width: 24rpx;
  373 + height: 24rpx;
  374 + }
  375 +
  376 + .look {
  377 + width: 90%;
  378 + display: -webkit-box;
  379 + -webkit-box-orient: vertical;
  380 + -webkit-line-clamp: 2;
  381 + overflow: hidden;
  382 + white-space: normal;
  383 + word-break: break-all;
  384 + word-wrap: break-word;
  385 + font-size: 28rpx;
  386 + font-family: PingFangSC-Regular, PingFang SC;
  387 + font-weight: 400;
  388 + color: #0CB17A;
  389 + padding-left: 15rpx;
  390 + }
260 391 }
261 392 }
262 393
... ...
  1 +<template>
  2 + <view class="page">
  3 + <!-- <u-search :style="{width:'100%',height: '32px',fontSize: '14px'}" bg-color="#F7F7F7" placeholder="请输入学生姓名/学号/手机号"
  4 + search-icon-color="#D9D9D9" placeholder-color="#8C8C8C" input-align="left" :clearabled="true"
  5 + :show-action="false" v-model="search" focus=true @search="handelLink()">
  6 + </u-search> -->
  7 + <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  8 + bgColor="#F4F4F4" :showAction="false" shape="round" v-model="search" @search="handelLink()">
  9 + </u-search>
  10 + <view style="display: flex; justify-content: space-between; align-items: center; margin-top: 40rpx;">
  11 + <view class="title">
  12 + 历史搜索
  13 + </view>
  14 + <u-image width="16px" height="16px" src='/static/img/home/delete.png' @click="clear"></u-image>
  15 + </view>
  16 + <view class="his">
  17 + <view class="historyItem" v-for="(item,index) in history" :key="index" @click="clickItem(item)">
  18 + {{item}}
  19 + </view>
  20 + </view>
  21 + </view>
  22 +</template>
  23 +
  24 +<script>
  25 + export default {
  26 + data() {
  27 + return {
  28 + type: '',
  29 + search: '',
  30 + history: [],
  31 + }
  32 + },
  33 +
  34 + onLoad(option) {
  35 + console.log('onshow', option)
  36 + if (option && option.type) {
  37 + this.type = option.type
  38 + this.search = option.searchkey
  39 + }
  40 + },
  41 +
  42 + onShow() {
  43 + let that = this
  44 + uni.getStorage({
  45 + key: 'search_history',
  46 + success: function(res) {
  47 + console.log('123', res)
  48 + that.history = res.data;
  49 + }
  50 + });
  51 + },
  52 +
  53 + methods: {
  54 + handelLink(e) {
  55 + let that = this
  56 +
  57 + // if (e == '' || !e) {
  58 + // this.$u.toast('请输入搜索条件')
  59 + // return
  60 + // }
  61 +
  62 + if (e != '') {
  63 + if (this.history.indexOf(e) == -1) {
  64 + this.history.push(e)
  65 + uni.setStorage({
  66 + key: 'search_history',
  67 + data: that.history,
  68 + success: function() {
  69 + console.log('success');
  70 + }
  71 + });
  72 + }
  73 + }
  74 +
  75 + let pages = getCurrentPages();
  76 + let prevPage = pages[pages.length - 2];
  77 + prevPage.$vm.keyword = e;
  78 + uni.navigateBack({
  79 + delta: 1
  80 + });
  81 + },
  82 +
  83 + clear() {
  84 + let that = this
  85 + uni.removeStorage({
  86 + key: 'search_history',
  87 + success: function(res) {
  88 + that.history = [];
  89 + }
  90 + });
  91 + },
  92 +
  93 + clickItem(e) {
  94 + let pages = getCurrentPages();
  95 + let prevPage = pages[pages.length - 2];
  96 + prevPage.$vm.keyword = e;
  97 + uni.navigateBack({
  98 + delta: 1
  99 + });
  100 + },
  101 + }
  102 + }
  103 +</script>
  104 +
  105 +<style lang="scss" scoped>
  106 + .page {
  107 + padding: 20rpx 40rpx;
  108 +
  109 + .title {
  110 + font-size: 16px;
  111 + font-family: PingFangSC-Medium, PingFang SC;
  112 + font-weight: 500;
  113 + color: #000000;
  114 + }
  115 +
  116 + .his {
  117 + margin-top: 20rpx;
  118 + display: flex;
  119 + flex-wrap: wrap;
  120 + }
  121 +
  122 + .historyItem {
  123 + // height: 32px;
  124 + background: rgba(0, 0, 0, 0.03);
  125 + border-radius: 16px;
  126 + padding: 12rpx 32rpx;
  127 + font-size: 14px;
  128 + font-family: PingFangSC-Light, PingFang SC;
  129 + font-weight: 300;
  130 + color: rgba(0, 0, 0, 0.65);
  131 + text-align: center;
  132 + margin-right: 20rpx;
  133 + margin-bottom: 10px;
  134 + }
  135 + }
  136 +</style>
... ...
... ... @@ -144,7 +144,7 @@
144 144
145 145 let params = {};
146 146 params.pageNumber = requestParams.page + 1;
147   - params.pageSize = 5;
  147 + params.pageSize = 10;
148 148
149 149 if (this.classInfoId) {
150 150 params.classInfoId = this.classInfoId
... ...
... ... @@ -5,7 +5,7 @@
5 5 <view class="box">
6 6
7 7 <view class="logo">
8   - <u-image width="260rpx" height="140rpx" :src="vuex_baseImgUrl+'/logo.png'" />
  8 + <u-image width="200rpx" height="96rpx" :src="vuex_baseImgUrl+'/logo.png'" />
9 9 </view>
10 10
11 11 <view class="btn button_warp">
... ... @@ -157,7 +157,7 @@
157 157
158 158 .logo {
159 159 padding: 156rpx 0 0 0;
160   - width: 260rpx;
  160 + width: 200rpx;
161 161 margin: 0 auto;
162 162 }
163 163
... ...
1 1 <template>
2   - <view class="home_box">
  2 + <view class="home_box">
  3 + <view v-if="isNav" class="hiddenNav" :style="{'height':menuTop+menuHeight+12+ 'px'}">
  4 + <view class="school" :style="{'margin-top':top}" @click="show = true">
  5 + <text>{{hasLogin?doneSchoolName:'校职通'}}</text>
  6 + <u-icon v-if="hasLogin" size="12rpx" name="/static/img/home/homesan.png" @click="show = true"></u-icon>
  7 + </view>
  8 + </view>
3 9 <view class="home">
4   -
5 10 <view class="school_box" v-if="hasLogin">
6 11 <u-image :src="vuex_baseImgUrl+'/schoolBg.png'" width="750rpx" height="496rpx" />
7   - <view class="school" :style="{top:top}">
8   - <u-icon size="32rpx" name="/static/img/home/changeSchool.png" @click="show = true"></u-icon>
  12 + <view class="school" :style="{top:top}" @click="show = true">
9 13 <text>{{doneSchoolName}}</text>
  14 + <u-icon size="12rpx" name="/static/img/home/homesan.png" @click="show = true"></u-icon>
10 15 </view>
11 16 </view>
12 17
13 18 <view class="school_box" v-else>
14 19 <u-image :src="vuex_baseImgUrl+'/schoolBg.png'" width="750rpx" height="496rpx" />
15 20 <view class="school" :style="{top:top}">
16   - <u-icon size="32rpx" name="/static/img/home/changeSchool.png"></u-icon>
17 21 <text>校职通</text>
  22 + <!-- <u-icon size="12rpx" name="/static/img/home/homesan.png"></u-icon> -->
18 23 </view>
19 24 </view>
20 25
21   - <view class="info" v-if="hasLogin">
22   - <u-row justify="space-between" customStyle="margin-bottom: 24rpx">
  26 + <view class="infoNew">
  27 + <!-- <u-row justify="space-between" customStyle="margin-bottom: 24rpx">
23 28 <u-col span="5">
24 29 <view class="name">
25 30 <text>{{teacher.name}}</text>
... ... @@ -32,10 +37,89 @@
32 37 labelColor="#202131" name="/static/img/home/changeAuth.png"></u-icon>
33 38 </view>
34 39 </u-col>
35   - </u-row>
  40 + </u-row> -->
  41 + <view class="top">
  42 + <view v-if="hasLogin">
  43 + <view class="name">
  44 + Hi, {{teacher.name}}
  45 + </view>
  46 + </view>
  47 + <view v-else>
  48 + <view class="name">
  49 + 未登录
  50 + </view>
  51 + </view>
  52 + <view v-if="doneRolesLength > 1">
  53 + <view class="identity" @click="handelChange">
  54 + <u-icon size="32rpx" :label="doneRolesName" labelPos="right" labelSize="24rpx"
  55 + labelColor="#202131" name="/static/img/home/changeAuth.png"></u-icon>
  56 + </view>
  57 + </view>
  58 + </view>
  59 + <view class="line" style="margin-top: 24px;"></view>
  60 + <view class="twoCell">
  61 + <view class="item" @click="handelGate(1)">
  62 + <view>
  63 + <image src="/static/img/home/newhome1.png"></image>
  64 + </view>
  65 + <view style="display: flex; flex-direction: column;">
  66 + <view class="t1">
  67 + 报名审核
  68 + </view>
  69 + <view class="t2">
  70 + 审核学生实习报名
  71 + </view>
  72 + </view>
  73 + </view>
  74 + <view class="item" @click="handelGate(2)">
  75 + <view>
  76 + <image src="/static/img/home/newhome2.png"></image>
  77 + </view>
  78 + <view style="display: flex; flex-direction: column;">
  79 + <view class="t1">
  80 + 请假审批
  81 + </view>
  82 + <view class="t2">
  83 + 实习中的请假申请
  84 + </view>
  85 + </view>
  86 + </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>
  119 + </view>
36 120 </view>
37 121
38   - <view class="info" v-else>
  122 + <!-- <view class="info" v-else>
39 123 <u-row justify="space-between" customStyle="margin-bottom: 24rpx">
40 124 <u-col span="5">
41 125 <view class="name" @click="handelLOgin">
... ... @@ -44,9 +128,9 @@
44 128 </view>
45 129 </u-col>
46 130 </u-row>
47   - </view>
  131 + </view> -->
48 132
49   - <view class="gate">
  133 + <!-- <view class="gate">
50 134 <u-row justify="space-between" gutter="16rpx" customStyle="margin-bottom: 10px">
51 135 <u-col span="4">
52 136 <view class="box">
... ... @@ -106,16 +190,45 @@
106 190 </u-col>
107 191 </u-row>
108 192
109   - </view>
  193 + </view> -->
110 194
111 195 <view class="todoList">
112   - <view class="title">待办事项</view>
  196 + <view class="top">
  197 + <image src="/static/img/home/homedbsx.png"></image>
  198 + <view class="title">待办事项</view>
  199 + </view>
113 200 <view v-if="hasLogin">
114 201 <view
115   - v-if="statistics && (statistics.internshipApply > 0 || statistics.formLogWaitReview > 0 || statistics.reportWaitReview > 0 || statistics.achievementWaitAppraisal > 0 )">
  202 + v-if="statistics && (statistics.formChangeApplyReview > 0 || statistics.leaveRecordReview > 0 || statistics.internshipApply > 0 || statistics.formLogWaitReview > 0 || statistics.reportWaitReview > 0 || statistics.achievementWaitAppraisal > 0 )">
116 203 <view class="cell">
117 204 <u-cell-group :border="false">
118 205 <u-cell
  206 + v-if="statistics && statistics.leaveRecordReview && statistics.leaveRecordReview > 0"
  207 + :isLink="true" url="/pages/main/home/asklist/asklist?status=wait"
  208 + arrow-direction="right" :rightIconStyle="{fontSize:'24rpx'}" :border="false">
  209 + <view slot="title" class="u-slot-title">
  210 + <view class="u-cell-title">请假审批</view>
  211 + <view class="u-cell-text">
  212 + 您有<text>{{statistics.leaveRecordReview}}</text>个<text>请假审批</text>待审批!</view>
  213 + </view>
  214 + <text slot="value" class="u-slot-value">立即审批</text>
  215 +
  216 + </u-cell>
  217 + <view class="line"></view>
  218 + <u-cell
  219 + v-if="statistics && statistics.formChangeApplyReview && statistics.formChangeApplyReview > 0"
  220 + :isLink="true" url="/pages/main/home/changelist/changelist?status=wait"
  221 + arrow-direction="right" :rightIconStyle="{fontSize:'24rpx'}" :border="false">
  222 + <view slot="title" class="u-slot-title">
  223 + <view class="u-cell-title">实习变更</view>
  224 + <view class="u-cell-text">
  225 + 您有<text>{{statistics.formChangeApplyReview}}</text>个<text>实习变更申请</text>待审批!
  226 + </view>
  227 + </view>
  228 + <text slot="value" class="u-slot-value">立即审批</text>
  229 + </u-cell>
  230 + <view class="line"></view>
  231 + <u-cell
119 232 v-if="statistics && statistics.internshipApply && statistics.internshipApply > 0"
120 233 :isLink="true"
121 234 url="/pages/main/home/registrationReview/registrationReview?status=wait"
... ... @@ -127,7 +240,7 @@
127 240 </view>
128 241 <text slot="value" class="u-slot-value">立即处理</text>
129 242 </u-cell>
130   -
  243 + <view class="line"></view>
131 244 <u-cell
132 245 v-if="statistics && statistics.formLogWaitReview && statistics.formLogWaitReview > 0"
133 246 :isLink="true" url="/pages/main/home/logReview/logReview?status=unread"
... ... @@ -139,7 +252,7 @@
139 252 </view>
140 253 <text slot="value" class="u-slot-value">立即批阅</text>
141 254 </u-cell>
142   -
  255 + <view class="line"></view>
143 256 <u-cell
144 257 v-if="statistics && statistics.reportWaitReview && statistics.reportWaitReview > 0"
145 258 :isLink="true" url="/pages/main/home/reportReview/reportReview?status=stay_examine"
... ... @@ -151,7 +264,7 @@
151 264 </view>
152 265 <text slot="value" class="u-slot-value">立即批阅</text>
153 266 </u-cell>
154   -
  267 + <view class="line"></view>
155 268 <u-cell
156 269 v-if="statistics && statistics.achievementWaitAppraisal && statistics.achievementWaitAppraisal > 0"
157 270 :isLink="true"
... ... @@ -165,7 +278,7 @@
165 278 </view>
166 279 <text slot="value" class="u-slot-value">立即评定</text>
167 280 </u-cell>
168   -
  281 + <view class="line"></view>
169 282 </u-cell-group>
170 283 </view>
171 284 </view>
... ... @@ -180,10 +293,35 @@
180 293 </view>
181 294 </view>
182 295 </view>
  296 + <view style="height: 50px;"></view>
  297 + <u-popup :show="show" mode="bottom" @close="close" @open="open" :round="22">
  298 + <view class="new_popup_search">
  299 + <view style="display: flex; justify-content: space-between; align-items: center;">
  300 + <view class="title">
  301 + 切换学校
  302 + </view>
  303 + <image class="close" src="/static/img/home/closepop.png" @click="close" mode=""></image>
  304 + </view>
  305 + <view class="desc">
  306 + 请选择需要登陆管理的学校
  307 + </view>
  308 + <scroll-view class="scroll" scroll-y="true">
  309 + <view class="item" v-for="(item, i) in schoolList" :key="i" @click="handelClick(item)">
  310 + <!-- <view v-if="item.id == schoolId"> -->
  311 + <view style="display: flex; align-items: center;">
  312 + <image class="pop1" src="/static/img/home/schoolAvatar.png" mode=""></image>
  313 + <text class="fullName">{{item.fullName}}</text>
  314 + </view>
  315 + <image v-if="item.fullName == doneSchoolName" class="pop2" src="/static/img/home/popselect.png" mode=""></image>
  316 + <!-- </view> -->
  317 + <!-- <view v-else>
  318 + <u-image src="/static/img/home/schoolAvatar.png" width="104rpx" height="104rpx" />
  319 + <text class="fullName">{{item.fullName}}</text>
  320 + </view> -->
  321 + </view>
  322 + </scroll-view>
183 323
184   - <u-popup :show="show" mode="left" @close="close" @open="open">
185   - <view class="popup_search">
186   - <view class="content">
  324 + <!-- <view class="content">
187 325 <view class="title">
188 326 <text>选择学校</text>
189 327 <text>请选择您想登录管理的学校</text>
... ... @@ -201,7 +339,7 @@
201 339 </view>
202 340 </scroll-view>
203 341
204   - </view>
  342 + </view> -->
205 343
206 344 </view>
207 345 </u-popup>
... ... @@ -228,12 +366,17 @@
228 366 top: '0rpx',
229 367 show: false,
230 368 schoolId: '',
231   - statistics: {}
  369 + statistics: {},
  370 + statusBarHeight: 44,
  371 + menuHeight: 32,
  372 + menuTop: 32,
  373 + margin: 92,
  374 + isNav: false
232 375 }
233 376 },
234 377
235 378 onLoad() {
236   -
  379 + this.getSystemInfo()
237 380 },
238 381
239 382 onShow() {
... ... @@ -262,6 +405,15 @@
262 405 }
263 406 })
264 407 }
  408 + },
  409 +
  410 + onPageScroll(res) {
  411 + // console.log(res.scrollTop)
  412 + if (res.scrollTop > 100) {
  413 + this.isNav = true
  414 + }else {
  415 + this.isNav = false
  416 + }
265 417 },
266 418
267 419 computed: {
... ... @@ -293,7 +445,36 @@
293 445
294 446 },
295 447
296   - methods: {
  448 + methods: {
  449 +
  450 + getSystemInfo() {
  451 + uni.getSystemInfo({
  452 + success: (res) => {
  453 +
  454 + let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
  455 + this.menuHeight = menuButtonInfo.height
  456 + this.menuTop = menuButtonInfo.top
  457 + // 状态栏高度
  458 + let statusBarHeight = res.statusBarHeight;
  459 + let platform = res.platform;
  460 + let winWidth = res.windowWidth;
  461 +
  462 + let excludeStatusBarHeight = 44;
  463 + if (platform == "android") {
  464 + excludeStatusBarHeight = 48;
  465 + }
  466 +
  467 + let navigationBarHeight = statusBarHeight + excludeStatusBarHeight;
  468 + // let proportion = 750 / winWidth;
  469 + // this.navigationBarHeight = navigationBarHeight * proportion;
  470 + this.margin = navigationBarHeight;
  471 +
  472 + console.log(this.navigationBarHeight, this.menuHeight, this.menuTop,
  473 + navigationBarHeight)
  474 + },
  475 + complete: function(res) {},
  476 + });
  477 + },
297 478
298 479 handelClick(values) {
299 480 this.schoolId = values.id;
... ... @@ -304,14 +485,14 @@
304 485 schoolId: values.id,
305 486 }).then(data => {
306 487 console.log(data)
307   - if (data) {
308   -
309   - getTodoListStatisticsApi().then(data => {
310   - if (data) {
311   - this.statistics = data;
312   - }
313   - })
314   -
  488 + if (data) {
  489 +
  490 + getTodoListStatisticsApi().then(data => {
  491 + if (data) {
  492 + this.statistics = data;
  493 + }
  494 + })
  495 +
315 496 this.show = false;
316 497 }
317 498 })
... ... @@ -365,32 +546,38 @@
365 546 return;
366 547 }
367 548
368   - let {
369   - type = ''
370   - } = even.currentTarget.dataset;
  549 + // let {
  550 + // type = ''
  551 + // } = even.currentTarget.dataset;
371 552
372   - switch (type) {
373   - case 'review':
  553 + switch (even) {
  554 + case 1:
374 555 this.$u.route('/pages/main/home/registrationReview/registrationReview');
375 556 break;
376 557
377   - case 'signin':
378   - this.$u.route('/pages/main/home/studentSignIn/studentSignIn');
  558 + case 2:
  559 + this.$u.route('/pages/main/home/asklist/asklist');
  560 + break;
  561 +
  562 + case 3:
  563 + this.$u.route('/pages/main/home/changelist/changelist');
379 564 break;
380 565
381   - case 'log':
  566 + case 4:
382 567 this.$u.route('/pages/main/home/logReview/logReview');
383 568 break;
384 569
385   - case 'report':
  570 + case 5:
386 571 this.$u.route('/pages/main/home/reportReview/reportReview');
387 572 break;
388 573
389   - case 'achievement':
390   - this.$u.route('/pages/main/home/achievementAppraisal/achievementAppraisal');
  574 + case 6:
  575 + this.$u.route('/pages/main/home/studentSignIn/studentSignIn');
391 576 break;
392 577
393   -
  578 + case 7:
  579 + this.$u.route('/pages/main/home/achievementAppraisal/achievementAppraisal');
  580 + break;
394 581
395 582
396 583
... ... @@ -406,8 +593,38 @@
406 593 <style lang="scss" scoped>
407 594 .cell /deep/ .u-cell {
408 595 background-color: #FFFFFF;
409   - border-radius: 12rpx;
410   - margin: 0 0 20rpx 0;
  596 + // border-radius: 12rpx;
  597 + // margin: 0 0 20rpx 0;
  598 + }
  599 +
  600 + .cell /deep/ .u-cell-group {
  601 + border-radius: 4px;
  602 + overflow: hidden;
  603 + }
  604 +
  605 + .hiddenNav {
  606 + position: fixed;
  607 + top: 0;
  608 + left: 0;
  609 + width: 100%;
  610 + background-color: #fff;
  611 + z-index: 999;
  612 + padding-left: 40rpx;
  613 +
  614 + .school {
  615 + display: flex;
  616 + flex-flow: row nowrap;
  617 +
  618 + text {
  619 + font-size: 32rpx;
  620 + line-height: 32rpx;
  621 + color: #202131;
  622 + font-weight: 500;
  623 + margin-right: 7px;
  624 + // width: 600rpx;
  625 + // text-align: center;
  626 + }
  627 + }
411 628 }
412 629
413 630 .home_box {
... ... @@ -421,7 +638,7 @@
421 638 .school_box {
422 639 width: 100%;
423 640 height: 496rpx;
424   - margin: 0 0 34rpx 0;
  641 + // margin: 0 0 34rpx 0;
425 642 position: relative;
426 643
427 644 .school {
... ... @@ -436,8 +653,9 @@
436 653 line-height: 32rpx;
437 654 color: #202131;
438 655 font-weight: 500;
439   - width: 600rpx;
440   - text-align: center;
  656 + margin-right: 7px;
  657 + // width: 600rpx;
  658 + // text-align: center;
441 659 }
442 660 }
443 661
... ... @@ -478,6 +696,98 @@
478 696 }
479 697 }
480 698
  699 + .infoNew {
  700 + position: relative;
  701 + top: -26px;
  702 + left: 0px;
  703 + margin: 0 10px;
  704 + // height: 245px;
  705 + background: #FFFFFF;
  706 + box-shadow: 0px 2px 20px 0px rgba(0, 0, 0, 0.03);
  707 + border-radius: 4px;
  708 + padding: 26px 16px;
  709 +
  710 + .top {
  711 + display: flex;
  712 + align-items: center;
  713 +
  714 + .name {
  715 + font-size: 18px;
  716 + font-family: PingFangSC-Semibold, PingFang SC;
  717 + font-weight: 600;
  718 + color: #202131;
  719 + }
  720 +
  721 + .identity {
  722 + padding: 4px 10px;
  723 + background: #F4F4F4;
  724 + border-radius: 12px;
  725 + margin: 0 0 0 10rpx;
  726 + }
  727 + }
  728 +
  729 + .line {
  730 + height: 1px;
  731 + background-color: #F7F7F7;
  732 + }
  733 +
  734 + .twoCell {
  735 + margin-top: 23px;
  736 + display: flex;
  737 +
  738 + .item {
  739 + flex: 1;
  740 + display: flex;
  741 +
  742 + image {
  743 + width: 40px;
  744 + height: 40px;
  745 + }
  746 +
  747 + .t1 {
  748 + margin-left: 6px;
  749 + font-size: 16px;
  750 + font-family: PingFangSC-Medium, PingFang SC;
  751 + font-weight: 500;
  752 + color: #000000;
  753 + }
  754 +
  755 + .t2 {
  756 + margin-left: 6px;
  757 + font-size: 12px;
  758 + font-family: PingFangSC-Light, PingFang SC;
  759 + font-weight: 300;
  760 + color: rgba(0, 0, 0, 0.65);
  761 + }
  762 + }
  763 + }
  764 +
  765 + .fiveCell {
  766 + margin-top: 30px;
  767 + display: flex;
  768 +
  769 + .item {
  770 + flex: 1;
  771 + display: flex;
  772 + flex-direction: column;
  773 + align-items: center;
  774 +
  775 + image {
  776 + width: 24px;
  777 + height: 24px;
  778 + }
  779 +
  780 + .t1 {
  781 + margin-top: 8px;
  782 + font-size: 12px;
  783 + font-family: PingFangSC-Regular, PingFang SC;
  784 + font-weight: 400;
  785 + color: #000000;
  786 + }
  787 + }
  788 + }
  789 + }
  790 +
481 791 .gate {
482 792 width: 690rpx;
483 793 margin: 0 auto 50rpx;
... ... @@ -534,8 +844,8 @@
534 844 }
535 845
536 846 .todoList {
537   - width: 690rpx;
538   - margin: 0 auto;
  847 + // width: 690rpx;
  848 + margin: 0 10px;
539 849
540 850 .no_login {
541 851 padding: 150rpx 0 0 0;
... ... @@ -548,26 +858,42 @@
548 858 }
549 859 }
550 860
551   - .title {
552   - font-size: 32rpx;
553   - line-height: 32rpx;
554   - color: #202131;
  861 + .top {
  862 + display: flex;
  863 + margin-bottom: 16px;
  864 +
  865 + image {
  866 + width: 16px;
  867 + height: 16px;
  868 + }
  869 +
  870 + .title {
  871 + margin-left: 4px;
  872 + font-size: 32rpx;
  873 + line-height: 32rpx;
  874 + color: #202131;
  875 + }
555 876 }
556 877
557   - .title::before {
558   - content: "";
559   - display: inline-block;
560   - width: 6rpx;
561   - height: 32rpx;
562   - background-color: #06B079;
563   - margin: 0 12rpx 0 0;
564   - position: relative;
565   - top: 4rpx;
566   - border-radius: 8rpx;
  878 + .line {
  879 + height: 1px;
  880 + background-color: #F7F7F7;
567 881 }
568 882
  883 + // .title::before {
  884 + // content: "";
  885 + // display: inline-block;
  886 + // width: 6rpx;
  887 + // height: 32rpx;
  888 + // background-color: #06B079;
  889 + // margin: 0 12rpx 0 0;
  890 + // position: relative;
  891 + // top: 4rpx;
  892 + // border-radius: 8rpx;
  893 + // }
  894 +
569 895 .cell {
570   - margin: 20rpx 0 0 0;
  896 + margin: 0rpx 0 0 0;
571 897
572 898 .u-slot-title {
573 899 .u-cell-title {
... ... @@ -593,7 +919,6 @@
593 919 color: #909097;
594 920 }
595 921 }
596   -
597 922 }
598 923 }
599 924
... ... @@ -638,7 +963,7 @@
638 963 flex-flow: row wrap;
639 964 align-items: center;
640 965
641   - text {
  966 + text {
642 967 width: 240rpx;
643 968 font-size: 40rpx;
644 969 line-height: 48rpx;
... ... @@ -652,5 +977,82 @@
652 977 }
653 978
654 979 }
  980 +
  981 + .new_popup_search {
  982 + padding: 23px 16px;
  983 + height: 209px;
  984 + background-image: url('https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/yxly-teacher/pop_bg.png');
  985 + background-size: 100% 90px;
  986 + background-repeat: no-repeat;
  987 +
  988 + .title {
  989 + font-size: 18px;
  990 + font-family: PingFangSC-Medium, PingFang SC;
  991 + font-weight: 500;
  992 + color: #000000;
  993 + }
  994 +
  995 + .close {
  996 + width: 22px;
  997 + height: 22px;
  998 + }
  999 +
  1000 + .desc {
  1001 + margin-top: 10px;
  1002 + font-size: 14px;
  1003 + font-family: PingFangSC-Light, PingFang SC;
  1004 + font-weight: 300;
  1005 + color: #202131;
  1006 + }
  1007 +
  1008 + .scroll {
  1009 + margin-top: 25px;
  1010 + height: 159px;
  1011 + // background-color: #06B079;
  1012 +
  1013 + .item {
  1014 + width: 100%;
  1015 + // height: 64rpx;
  1016 + // padding: 20px 16px;
  1017 + display: flex;
  1018 + justify-content: space-between;
  1019 + align-items: center;
  1020 + margin-bottom: 15px;
  1021 +
  1022 + .pop1 {
  1023 + width: 30px;
  1024 + height: 30px;
  1025 + }
  1026 +
  1027 + .pop2 {
  1028 + width: 20px;
  1029 + height: 20px;
  1030 + }
  1031 +
  1032 + .fullName {
  1033 + font-size: 16px;
  1034 + font-family: PingFangSC-Medium, PingFang SC;
  1035 + font-weight: 500;
  1036 + color: #000000;
  1037 + margin-left: 8px;
  1038 + }
  1039 +
  1040 + // view {
  1041 + // display: flex;
  1042 + // flex-flow: row wrap;
  1043 + // align-items: center;
  1044 +
  1045 + // text {
  1046 + // width: 240rpx;
  1047 + // font-size: 40rpx;
  1048 + // line-height: 48rpx;
  1049 + // color: #202131;
  1050 + // margin: 0 0 0 34rpx;
  1051 + // }
  1052 + // }
  1053 +
  1054 + }
  1055 + }
  1056 + }
655 1057 }
656 1058 </style>
... ...

747 Bytes | 宽: | 高:

677 Bytes | 宽: | 高:

  • 两方对比
  • 交换覆盖
  • 透明覆盖

3.1 KB | 宽: | 高:

2.1 KB | 宽: | 高:

  • 两方对比
  • 交换覆盖
  • 透明覆盖
注册登录 后发表评论