提交 2345202c1e47717f2c5a18c11cf98123798fe6a3

作者 wangws
1 个父辈 9e3813bf

迭代

... ... @@ -115,7 +115,7 @@ export const getReportApprovalListApi = (formId, params) => http.get(`/internshi
115 115 })
116 116
117 117 // 成绩鉴定列表
118   -export const getAchievementAppraisalListApi = (params) => http.get('/internship/v1/form/achievementAppraisalList', {
  118 +export const getAchievementAppraisalListApi = (params) => http.get('/internship/v1/score/list', {
119 119 params: params
120 120 })
121 121
... ... @@ -199,3 +199,13 @@ export const formChangeApplydetailUrl = (id,params) => http.get('/internship/v1/
199 199 // 变更审批
200 200 export const putformChangeApplyapprovalUrl = (id,params) => http.put('/internship/v1/formChangeApply/approval/'+id,params)
201 201
  202 +// 鉴定详情1
  203 +export const scoredetailUrl = (id,params) => http.get('/internship/v1/score/detail/'+id,params)
  204 +
  205 +// 成绩鉴定---实习信息
  206 +export const scoreinternshipInfoUrl = (params) => http.get('/internship/v1/score/internshipInfo',{
  207 + params: params
  208 +})
  209 +
  210 +// 鉴定成绩鉴定
  211 +export const putscoreappraisalApi = (params) => http.put('/internship/v1/score/appraisal', params)
\ No newline at end of file
... ...
... ... @@ -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'
... ...
... ... @@ -108,7 +108,18 @@
108 108 "navigationBarTitleText": "鉴定详情",
109 109 "enablePullDownRefresh": false
110 110 }
111   -
  111 + }, {
  112 + "path": "achievementMid/achievementMid",
  113 + "style": {
  114 + "navigationBarTitleText": "成绩鉴定",
  115 + "enablePullDownRefresh": false
  116 + }
  117 + },{
  118 + "path": "achievementApply/achievementApply",
  119 + "style": {
  120 + "navigationBarTitleText": "成绩鉴定",
  121 + "enablePullDownRefresh": false
  122 + }
112 123 },{
113 124 "path": "asklist/asklist",
114 125 "style": {
... ...
  1 +<template>
  2 + <view class="page">
  3 + <view class="qy">
  4 + <view class="gv" style="background-color: #fff; padding: 20px 16px 0;">
  5 + <view class="green"></view>
  6 + <view class="title">
  7 + 企业评价
  8 + </view>
  9 + </view>
  10 + <view style="background-color: #fff; padding: 20px 16px 0;">
  11 + <view class="t">
  12 + 评分
  13 + </view>
  14 + <view class="box">
  15 + <u-input v-model="qypf" border="none" :maxlength="'3'" type="number" input-align="left" :placeholder="'请输入0~100的数值'"
  16 + :clearable="false"
  17 + :custom-style="{height:'50px',fontSize:'32rpx', color:'#6666666', backgroundColor: '#FFF', paddingLeft: '0px'}" />
  18 + </view>
  19 + </view>
  20 + <view style="background-color: #fff; padding: 20px 16px 20px;">
  21 + <view class="list list_item_top" style="margin-top: 0;">
  22 + <text class="item1">评语:</text>
  23 + <text class="item2">{{detailObj.companyComment?`${detailObj.companyComment}`:'-'}}</text>
  24 + </view>
  25 + <view class="listflex list_item_top">
  26 + <text class="item1">附件:</text>
  27 + <view class="list_flex_right">
  28 + <view class="pdffj" v-for="(item,index) in comattachmentsFile " @click="openLink1(item)">
  29 + <text class="look">{{item.filename}}</text>
  30 + </view>
  31 + </view>
  32 + </view>
  33 + </view>
  34 + </view>
  35 + <view class="bczl" style="margin-top: 15px;">
  36 + <view class="gv" style="background-color: #fff; padding: 20px 16px 0;">
  37 + <view class="green"></view>
  38 + <view class="title">
  39 + 学校评价
  40 + </view>
  41 + </view>
  42 + <view style="background-color: #fff; padding: 20px 16px 0;">
  43 + <view class="t">
  44 + 评分
  45 + </view>
  46 + <view class="box">
  47 + <u-input v-model="pf" border="none" :maxlength="'3'" type="number" input-align="left" :placeholder="'请输入0~100的数值'"
  48 + :clearable="false"
  49 + :custom-style="{height:'50px',fontSize:'32rpx', color:'#6666666', backgroundColor: '#FFF', paddingLeft: '0px'}" />
  50 + </view>
  51 + </view>
  52 + <view style="background-color: #fff; padding: 20px 16px; margin-top: 0px;">
  53 + <view class="t">
  54 + 评语
  55 + </view>
  56 + <view style="margin-top: 15px;">
  57 + <u--textarea v-model="py" border="none" :maxlength="'100'" input-align="left" :placeholder="'请输入评语…'"
  58 + :type="'textarea'" :height="240"
  59 + :custom-style="{fontSize:'28rpx', color:'#6666666', backgroundColor: 'rgba(0,0,0,0.03)', padding: '15px 18px'}" />
  60 + </view>
  61 + </view>
  62 + <view v-if="picList.length>0" style="background-color: #fff; padding: 20px 16px; margin-top: 15px;">
  63 + <view class="text_gray_28" style="margin-bottom: 20rpx;">照片附件(最多可上传9张)</view>
  64 + <u-grid :col="3" :border="false">
  65 + <u-grid-item v-for="(item, index) in picList" :key="index">
  66 + <image v-if="type != 3" class="delete" src="/static/img/common/delete.png"
  67 + @click="deleteImg(index)"></image>
  68 + <u-image :height="216" :width="216" :src="item"></u-image>
  69 + </u-grid-item>
  70 + </u-grid>
  71 + </view>
  72 + <view v-if="fileList.length>0" style="background-color: #fff; padding: 20px 16px; margin-top: 15px;">
  73 + <view class="text_gray_28" style="margin-bottom: 20rpx;">PDF附件(最多可上传3个)</view>
  74 + <view class="pdffj" v-for="(item,index) in fileList "
  75 + @click="!item.filename?openFile(index):openLink(item)" :key="index">
  76 + <image class="img" src="/static/img/home/link.png"></image>
  77 + <text class="look">{{item.name?item.name:item.filename}}</text>
  78 + <image v-if="type != 3" style="margin-left: 7px; width: 14px;height: 14px;"
  79 + @click.stop="deleteModal(index)"
  80 + src="https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/excellet-working/treadTree.png">
  81 + <!-- <text class="look">{{item.filename}}</text> -->
  82 + </view>
  83 + </view>
  84 + <view class="add_info" @click="addPhotos">+ 添加附件</view>
  85 + </view>
  86 + <view style="height: 144rpx;"></view>
  87 + <view class="botBtnV_centralize">
  88 + <view class="botBtn" @click="submit()">确认提交</view>
  89 + </view>
  90 + <!-- <u-action-sheet :list="list" @click="chooseImg" v-model="show"></u-action-sheet> -->
  91 + <u-action-sheet :actions="list" cancelText="取消" round="24" :show="show" @select="chooseImg" @close="close" :closeOnClickOverlay="true" ></u-action-sheet>
  92 + </view>
  93 +</template>
  94 +
  95 +<script>
  96 + import {
  97 + getOssInitApi,
  98 + getImgUrlApi,
  99 + scoredetailUrl,
  100 + putscoreappraisalApi
  101 + } from '@/config/api.js';
  102 +
  103 + export default {
  104 + data() {
  105 + return {
  106 + id: '',
  107 + qypf: '',
  108 + pf: '',
  109 + py: '',
  110 + list: [{
  111 + name: '拍照'
  112 + }, {
  113 + name: '从手机相册选择'
  114 + }, {
  115 + name: '从微信文件选择'
  116 + }],
  117 + picList: [],
  118 + fileList: [],
  119 + attachments: [],
  120 + attachmentsFile: [],
  121 + ossInit: {},
  122 + maxCount: 9,
  123 + filemaxCount: 3,
  124 + show: false,
  125 + detailObj:{},
  126 + comattachmentsFile: [],
  127 + }
  128 + },
  129 +
  130 + onLoad(e) {
  131 + this.id = e.id
  132 +
  133 + getOssInitApi({
  134 + "uploadFileType": "report"
  135 + }).then(res => {
  136 + this.ossInit = res
  137 + })
  138 +
  139 + this.loadData()
  140 + },
  141 +
  142 + methods: {
  143 +
  144 + loadData() {
  145 + scoredetailUrl(this.id).then(res => {
  146 + if (res) {
  147 + this.detailObj = res;
  148 + this.comhandleDataspdf()
  149 + }
  150 + })
  151 + },
  152 +
  153 + comhandleDataspdf() {
  154 + let a1 = []
  155 + let a2 = []
  156 + if (this.detailObj.companyAttachment) {
  157 + a1 = JSON.parse(this.detailObj.companyAttachment)
  158 + }
  159 + if (this.detailObj.companyAttachmentFile) {
  160 + a2 = JSON.parse(this.detailObj.companyAttachmentFile)
  161 + }
  162 + a1 = a1.concat(a2)
  163 + this.comattachmentsFile = a1
  164 + },
  165 +
  166 + addPhotos() {
  167 + this.show = true
  168 + },
  169 +
  170 + close() {
  171 + this.show = false
  172 + },
  173 +
  174 + chooseImg(index) {
  175 + var _this = this
  176 + console.log(index)
  177 + if (index.name == '拍照') { //拍照
  178 + if (this.picList.length >= this.maxCount) {
  179 + uni.showToast({
  180 + title: "已达到上传文件上限",
  181 + icon: "none"
  182 + })
  183 + return
  184 + }
  185 + uni.chooseImage({
  186 + count: this.maxCount - this.picList.length,
  187 + sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  188 + sourceType: ['camera'], //从相机选择
  189 + success: function(res) {
  190 + console.log("chooseImage...", JSON.stringify(res.tempFilePaths));
  191 + _this.picList = _this.picList.concat(res.tempFilePaths)
  192 + }
  193 + });
  194 + } else if (index.name == '从手机相册选择') { //相册
  195 + if (this.picList.length >= this.maxCount) {
  196 + uni.showToast({
  197 + title: "已达到上传文件上限",
  198 + icon: "none"
  199 + })
  200 + return
  201 + }
  202 + uni.chooseImage({
  203 + count: this.maxCount - this.picList.length,
  204 + sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  205 + sourceType: ['album'], //从相册选择
  206 + success: function(res) {
  207 + console.log(res)
  208 + console.log("chooseImage...", JSON.stringify(res.tempFilePaths));
  209 + if (!_this.picList || _this.picList.length == 0) {
  210 + _this.picList = res.tempFilePaths
  211 + } else {
  212 + _this.picList = _this.picList.concat(res.tempFilePaths)
  213 + }
  214 + }
  215 + });
  216 + } else if (index.name == '从微信文件选择') {
  217 + if (this.fileList.length >= this.filemaxCount) {
  218 + uni.showToast({
  219 + title: "已达到上传文件上限",
  220 + icon: "none"
  221 + })
  222 + return
  223 + }
  224 + wx.chooseMessageFile({
  225 + count: this.filemaxCount - this.fileList.length,
  226 + extension: ['pdf', 'PDF'],
  227 + type: 'file',
  228 + success(res) {
  229 + console.log(res.tempFiles)
  230 + // tempFilePath可以作为img标签的src属性显示图片
  231 + for (let i = 0; i < res.tempFiles.length; i++) {
  232 + let item = res.tempFiles[i]
  233 + if (item.size > 10485760) {
  234 + uni.showToast({
  235 + title: "单个文件不允许超过10M",
  236 + icon: "none"
  237 + })
  238 + return
  239 + }
  240 + }
  241 + _this.fileList.push(...res.tempFiles)
  242 + }
  243 + });
  244 + }
  245 + },
  246 +
  247 + submit() {
  248 + var _this = this
  249 + if (!this.qypf) {
  250 + this.showToast("请输入企业评分")
  251 + return;
  252 + }
  253 + if (!this.pf) {
  254 + this.showToast("请输入学校评分")
  255 + return;
  256 + }
  257 + if (!this.py) {
  258 + this.showToast("请输入学校评语")
  259 + return;
  260 + }
  261 + if (Number(this.pf) < 0 || Number(this.pf) > 100) {
  262 + uni.showToast({
  263 + title: '评分范围1~100分',
  264 + icon: 'none',
  265 + duration: 1500
  266 + });
  267 + return
  268 + }
  269 + if (Number(this.qypf) < 0 || Number(this.qypf) > 100) {
  270 + uni.showToast({
  271 + title: '评分范围1~100分',
  272 + icon: 'none',
  273 + duration: 1500
  274 + });
  275 + return
  276 + }
  277 + // if (this.picList.length == 0 && this.fileList.length == 0) {
  278 + // this.showToast("请添加至少一个附件")
  279 + // return;
  280 + // }
  281 + uni.showLoading({
  282 + title: '文件上传中~',
  283 + mask: true
  284 + })
  285 + if ((this.picList.length == this.attachments.length) && (this.fileList.length == this.attachmentsFile
  286 + .length)) {
  287 + _this.uploadInfos();
  288 + } else {
  289 + if ((this.picList.length != this.attachments.length) && (this.fileList.length != this.attachmentsFile
  290 + .length)) {
  291 + let p1 = this.uploadImages();
  292 + let p2 = this.uploadFiles();
  293 + Promise.all([p1, p2]).then((res) => {
  294 + console.log('end11', p1)
  295 + console.log('end22', p2)
  296 + _this.uploadInfos();
  297 + })
  298 + } else if (this.picList.length != this.attachments.length) {
  299 + let p1 = this.uploadImages();
  300 + Promise.all([p1]).then((res) => {
  301 + console.log('end11', p1)
  302 + _this.uploadInfos();
  303 + })
  304 + } else if (this.fileList.length != this.attachmentsFile.length) {
  305 + let p2 = this.uploadFiles();
  306 + Promise.all([p2]).then((res) => {
  307 + console.log('end22', p2)
  308 + _this.uploadInfos();
  309 + })
  310 + }
  311 + }
  312 + },
  313 +
  314 + uploadInfos() {
  315 + console.log("uploadInfos111...", JSON.stringify(this.attachments))
  316 + console.log("uploadInfos222...", JSON.stringify(this.attachmentsFile))
  317 + let _this = this
  318 + putscoreappraisalApi({
  319 + id: _this.id,
  320 + companyScore: _this.qypf,
  321 + schoolScore: _this.pf,
  322 + schoolComment: _this.py,
  323 + schoolAttachment: JSON.stringify(_this.attachments),
  324 + schoolAttachmentFile: JSON.stringify(_this.attachmentsFile),
  325 + }).then(res => {
  326 + uni.hideLoading();
  327 + let pages = getCurrentPages();
  328 + let prevPage = pages[pages.length - 2];
  329 + uni.navigateBack({
  330 + delta: 1
  331 + });
  332 + })
  333 + },
  334 +
  335 + //pdf
  336 + openFile(e) { //打开文件
  337 + uni.showLoading({
  338 + title: '努力加载中~',
  339 + mask: true
  340 + })
  341 + var type = this.fileList[e].type
  342 + var path = this.fileList[e].path
  343 + console.log("openFile", type, path)
  344 + if (type == 'image') {
  345 + let array = new Array(1).fill(path);
  346 + uni.previewImage({
  347 + urls: array,
  348 + success(res) {
  349 + uni.hideLoading();
  350 + console.log('openImage success');
  351 + }
  352 + });
  353 + } else {
  354 + uni.openDocument({
  355 + filePath: path,
  356 + showMenu: true,
  357 + success: function(res) {
  358 + uni.hideLoading();
  359 + console.log('openDoc succ');
  360 + }
  361 + });
  362 + }
  363 + },
  364 +
  365 + deleteImg(e) { //e==index
  366 + console.log(e, this.picList)
  367 + this.picList.splice(e, 1)
  368 + this.attachments.splice(e, 1)
  369 + },
  370 +
  371 + deleteModal(e) {
  372 + var _this = this
  373 + uni.showModal({
  374 + content: '确定要删除该文件吗?',
  375 + success: function(res) {
  376 + if (res.confirm) {
  377 + console.log('confirm', _this.fileList);
  378 + _this.fileList.splice(e, 1)
  379 + _this.attachmentsFile.splice(e, 1)
  380 + } else if (res.cancel) {
  381 + console.log('cancel');
  382 + }
  383 + }
  384 + });
  385 + },
  386 +
  387 + uploadImages() { //上传图片
  388 + // console.log("uploadImages...", this.picList, this.attachments)
  389 + var _this = this
  390 + // if (this.picList.length == this.attachments.length) { //是否有新增图片
  391 + // _this.uploadInfos();
  392 + // } else {}
  393 + // console.log('_this.ossInit...', _this.ossInit)
  394 + return new Promise((resolve, reject) => {
  395 + var gapLength = this.picList.length - this.attachments.length
  396 + for (var i = 0; i < gapLength; i++) {
  397 + uni.uploadFile({
  398 + url: _this.vuex_ossUrl,
  399 + filePath: _this.picList[_this.picList.length - gapLength + i],
  400 + name: 'file',
  401 + formData: {
  402 + 'key': `${_this.ossInit.dir}${new Date().getTime()}/` + '${filename}',
  403 + 'action': `${_this.ossInit.host}`,
  404 + 'OSSAccessKeyId': _this.ossInit.accessId,
  405 + 'policy': _this.ossInit.policy,
  406 + 'signature': _this.ossInit.signature,
  407 + 'callback': _this.ossInit.callback,
  408 + },
  409 + success: (uploadFileRes) => {
  410 + // console.log("--", _this.attachments, uploadFileRes)
  411 + // console.log("...",JSON.parse(uploadFileRes.data))
  412 + _this.attachments.push(JSON.parse(uploadFileRes.data))
  413 + if (_this.attachments.length == _this.picList.length) {
  414 + // _this.uploadInfos();
  415 + resolve()
  416 + }
  417 + },
  418 +
  419 + complete: (res) => {
  420 +
  421 + // console.log('res...', res)
  422 + }
  423 + });
  424 + }
  425 + })
  426 +
  427 + },
  428 +
  429 + uploadFiles() { //上传文件
  430 + var _this = this
  431 + // if (this.fileList.length == this.attachmentsFile.length) { //是否有新增图片
  432 + // _this.uploadInfos();
  433 + // } else {
  434 +
  435 + // }
  436 + // console.log("uploadFiles...", this.fileList, this.attachmentsFile)
  437 + return new Promise((resolve, reject) => {
  438 + var gapLength = this.fileList.length - this.attachmentsFile.length
  439 + for (var i = 0; i < gapLength; i++) {
  440 + uni.uploadFile({
  441 + url: _this.vuex_ossUrl,
  442 + filePath: _this.fileList[_this.fileList.length - gapLength + i].path,
  443 + // name: _this.fileList[_this.fileList.length - gapLength + i].name,
  444 + name: "file",
  445 + formData: {
  446 + 'key': `${_this.ossInit.dir}${new Date().getTime()}/` + _this.fileList[
  447 + _this.fileList.length - gapLength + i].name,
  448 + 'action': `${_this.ossInit.host}`,
  449 + 'OSSAccessKeyId': _this.ossInit.accessId,
  450 + 'policy': _this.ossInit.policy,
  451 + 'signature': _this.ossInit.signature,
  452 + 'callback': _this.ossInit.callback,
  453 + },
  454 + success: (uploadFileRes) => {
  455 + // console.log("--", _this.attachmentsFile, uploadFileRes)
  456 + _this.attachmentsFile.push(JSON.parse(uploadFileRes.data))
  457 + if (_this.attachmentsFile.length == _this.fileList.length) {
  458 + // _this.uploadInfos();
  459 + resolve()
  460 + }
  461 + },
  462 + complete: (res) => {
  463 +
  464 + // console.log('res...123', res)
  465 + }
  466 + });
  467 + }
  468 + })
  469 +
  470 + },
  471 +
  472 + openLink(e) {
  473 + this.$u.api.getImgUrl({
  474 + bucket: e.bucket,
  475 + filePath: e.object
  476 + }).then(data => {
  477 + uni.showLoading({
  478 + title: '努力加载中~',
  479 + mask: true
  480 + })
  481 + uni.downloadFile({
  482 + url: data.url,
  483 + success: function(res) {
  484 + var filePath = res.tempFilePath;
  485 + uni.openDocument({
  486 + filePath: filePath,
  487 + showMenu: true,
  488 + success: function(res) {
  489 + console.log('打开文档成功');
  490 + uni.hideLoading();
  491 + }
  492 + });
  493 + }
  494 + });
  495 + })
  496 + },
  497 +
  498 + showToast(res) {
  499 + uni.showToast({
  500 + title: res,
  501 + icon: "none"
  502 + })
  503 + },
  504 +
  505 + openLink1(e) {
  506 + var _this = this
  507 +
  508 + uni.showLoading({
  509 + title: '努力加载中~',
  510 + mask: true
  511 + })
  512 +
  513 + getImgUrlApi({
  514 + bucket: e.bucket,
  515 + filePath: e.object
  516 + }).then(data => {
  517 + console.log("data...", data)
  518 + if (e.mime_type.indexOf("image") != -1) {
  519 + _this.openImage(data.url)
  520 + } else {
  521 + uni.downloadFile({
  522 + url: data.url,
  523 + success: function(res) {
  524 + var filePath = res.tempFilePath;
  525 + uni.openDocument({
  526 + filePath: filePath,
  527 + showMenu: true,
  528 + success: function(res) {
  529 + console.log('打开文档成功');
  530 + },
  531 + complete: function() {
  532 + uni.hideLoading();
  533 + }
  534 + });
  535 + }
  536 + });
  537 + }
  538 + })
  539 + },
  540 + openImage(imgPath) {
  541 + let array = new Array(1).fill(imgPath);
  542 + uni.previewImage({
  543 + urls: array,
  544 + success(res) {
  545 + uni.hideLoading();
  546 + console.log('openImage success');
  547 + },
  548 + fail(res) {
  549 + uni.hideLoading();
  550 + console.log('openImage fail:', res);
  551 + }
  552 + });
  553 + },
  554 +
  555 + clickCentralize() {
  556 +
  557 + }
  558 + }
  559 + }
  560 +</script>
  561 +
  562 +<style>
  563 + page {
  564 + background-color: #FAFAFB;
  565 + }
  566 +</style>
  567 +
  568 +<style lang="scss" scoped>
  569 + .page {
  570 +
  571 + .qy {
  572 + .gv {
  573 + display: flex;
  574 + align-items: center;
  575 +
  576 + .green {
  577 + width: 3px;
  578 + height: 10px;
  579 + background: #0CB17A;
  580 + }
  581 +
  582 + .title {
  583 + margin-left: 10rpx;
  584 + font-size: 16px;
  585 + font-family: PingFangSC-Medium, PingFang SC;
  586 + font-weight: 500;
  587 + color: #000000;
  588 + }
  589 +
  590 + }
  591 +
  592 + .list {
  593 + margin-top: 9px;
  594 +
  595 + .item1 {
  596 + font-size: 16px;
  597 + font-family: PingFangSC-Light, PingFang SC;
  598 + font-weight: 300;
  599 + color: #646464;
  600 + }
  601 +
  602 + .item2 {
  603 + margin-left: 2px;
  604 + font-size: 16px;
  605 + font-family: PingFangSC-Light, PingFang SC;
  606 + font-weight: 300;
  607 + color: #121212;
  608 + }
  609 + }
  610 +
  611 + .listflex {
  612 + margin-top: 9px;
  613 + display: flex;
  614 +
  615 + .item1 {
  616 + font-size: 16px;
  617 + font-family: PingFangSC-Light, PingFang SC;
  618 + font-weight: 300;
  619 + color: #646464;
  620 + }
  621 +
  622 + .list_flex_right {
  623 + display: flex;
  624 + flex-direction: column;
  625 + margin-left: 2px;
  626 + width: 85%;
  627 +
  628 + .pdffj {
  629 + margin-bottom: 5px;
  630 +
  631 + .img {
  632 + width: 24rpx;
  633 + height: 24rpx;
  634 + margin-right: 12rpx;
  635 + }
  636 +
  637 + .look {
  638 + width: 100%;
  639 + display: -webkit-box;
  640 + -webkit-box-orient: vertical;
  641 + -webkit-line-clamp: 2;
  642 + overflow: hidden;
  643 + white-space: normal;
  644 + word-break: break-all;
  645 + word-wrap: break-word;
  646 + font-size: 28rpx;
  647 + font-family: PingFangSC-Regular, PingFang SC;
  648 + font-weight: 400;
  649 + color: #0CB17A;
  650 + }
  651 + }
  652 +
  653 + }
  654 + }
  655 +
  656 + .list_item_top {
  657 + margin-top: 10px;
  658 + }
  659 +
  660 + .t {
  661 + font-size: 16px;
  662 + font-family: PingFangSC-Regular, PingFang SC;
  663 + font-weight: 400;
  664 + color: #121212;
  665 + }
  666 +
  667 + .box {
  668 + border-bottom: 1rpx solid #E5E5E6;
  669 + }
  670 + }
  671 +
  672 + .bczl {
  673 +
  674 + .gv {
  675 + display: flex;
  676 + align-items: center;
  677 +
  678 + .green {
  679 + width: 3px;
  680 + height: 10px;
  681 + background: #0CB17A;
  682 + }
  683 +
  684 + .title {
  685 + margin-left: 10rpx;
  686 + font-size: 16px;
  687 + font-family: PingFangSC-Medium, PingFang SC;
  688 + font-weight: 500;
  689 + color: #000000;
  690 + }
  691 +
  692 + }
  693 +
  694 + .t {
  695 + font-size: 16px;
  696 + font-family: PingFangSC-Regular, PingFang SC;
  697 + font-weight: 400;
  698 + color: #121212;
  699 + }
  700 +
  701 + .t1 {
  702 + font-size: 12px;
  703 + font-family: PingFangSC-Light, PingFang SC;
  704 + font-weight: 300;
  705 + color: rgba(0, 0, 0, 0.45);
  706 + }
  707 +
  708 + .box {
  709 + border-bottom: 1rpx solid #E5E5E6;
  710 + }
  711 +
  712 + .add_info {
  713 + margin-top: 15px;
  714 + width: 100%;
  715 + height: 88px;
  716 + background-color: #fff;
  717 + font-size: 34rpx;
  718 + font-family: PingFangSC-Regular, PingFang SC;
  719 + font-weight: 400;
  720 + color: rgba(0, 0, 0, 0.9);
  721 + line-height: 88px;
  722 + text-align: -webkit-center;
  723 + }
  724 +
  725 + }
  726 +
  727 + .delete {
  728 + width: 40rpx;
  729 + height: 40rpx;
  730 + padding: 16rpx;
  731 + position: absolute;
  732 + top: -10rpx;
  733 + right: -16rpx;
  734 + z-index: 99;
  735 + }
  736 +
  737 + .pdffj {
  738 + display: flex;
  739 + align-items: baseline;
  740 +
  741 + .img {
  742 + width: 24rpx;
  743 + height: 24rpx;
  744 + margin-right: 10rpx;
  745 + }
  746 +
  747 + .look {
  748 + font-size: 28rpx;
  749 + font-family: PingFangSC-Regular, PingFang SC;
  750 + font-weight: 400;
  751 + color: #0CB17A;
  752 + margin-left: 8rpx;
  753 + }
  754 + }
  755 +
  756 + .botBtnV_centralize {
  757 + position: fixed;
  758 + bottom: 0;
  759 + left: 0;
  760 + right: 0;
  761 + padding: 24rpx 32rpx;
  762 + // height: 144rpx;
  763 + background-color: #FFFFFF;
  764 + z-index: 999;
  765 +
  766 + .botBtn {
  767 + height: 48px;
  768 + background: linear-gradient(180deg, #1CD9B2 0%, #0CB17A 100%);
  769 + border-radius: 24px;
  770 + font-size: 17px;
  771 + font-family: PingFangSC-Regular, PingFang SC;
  772 + font-weight: 400;
  773 + color: #FFFFFF;
  774 + line-height: 48px;
  775 + text-align: center;
  776 + margin-left: 0px;
  777 + }
  778 + }
  779 + }
  780 +</style>
... ...
1 1 <template>
2 2 <view class="registration_review">
3 3 <view class="search_box">
4   - <view class="top">
5   - <view class="check">
6   - <u-checkbox-group v-model="checkboxValue" placement="column" @change="checkboxChange">
7   - <u-checkbox :customStyle="{marginBottom: '8px'}" shape="circle"
8   - v-for="(item, index) in checkboxList" :key="index" :label="item.name" :name="item.name"
9   - activeColor="#06B079" size="28rpx" labelSize="28rpx" labelColor="#202131">
10   - </u-checkbox>
11   - </u-checkbox-group>
12   - </view>
13   -
14   - <view class="search">
15   - <u-search placeholder="请输入学生姓名/学号/手机号" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
16   - bgColor="#F4F4F4" :showAction="false" shape="square" v-model="keyword" @search="handelSearch">
17   - </u-search>
18   - </view>
19   -
  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>
20 25 <u-icon slot="icon" size="40" :name="'/static/img/home/selectIcon.png'" @click="show = true"></u-icon>
21 26 </view>
22 27 </view>
23 28
24 29 <view class="list_box" v-if="list.length > 0">
25 30 <view class="item" v-for="(item, i) in list" :key="i" @click="handelDetail(item)">
26   -
27   - <view class="bg_image" v-if="item.appraisalStatus == 'no_appraisal'">
28   - <u-image src="/static/img/home/labelBgGreen.png" width="142rpx" height="48rpx"></u-image>
29   - <text>待鉴定</text>
  31 + <view class="t1">
  32 + {{item.form.studentName}}
30 33 </view>
31   -
32   - <view class="bg_image" v-else>
33   - <u-image src="/static/img/home/labelBgGrey.png" width="142rpx" height="48rpx"></u-image>
34   - <text>已鉴定</text>
  34 + <view class="t3">
  35 + NO.{{item.form.studentIDNumber}}
35 36 </view>
36   -
37   - <view class="info">
38   - <view class="avatar">{{getNameLastTwo(item.studentName)}}</view>
39   - <view class="name">{{overflowHide(item.studentName, 6)}}</view>
40   - <view class="number">NO.{{item.studentNumber}}</view>
  37 + <view class="t2 t2top14">
  38 + 实习项目: {{item.form.projectName?item.form.projectName:'--'}}
41 39 </view>
42   - <view class="company">
43   - <text>实习单号</text>
44   - <text>{{item.number || '--'}}</text>
  40 + <view class="t2">
  41 + 指导老师: {{item.form.teacherName?item.form.teacherName:'--'}}
  42 + </view>
  43 + <view class="t2">
  44 + 变更次数: {{item.formChangeApplyCount}}
45 45 </view>
46   - <view class="company position">
47   - <text>实习项目</text>
48   - <text>{{item.projectName|| '--'}}</text>
  46 + <view v-if="item.status == 'wait'" class="status" style="color: #F49A23;">
  47 + 待鉴定
49 48 </view>
50   -
51   - <view class="statistics">
52   - <view>
53   - <text>{{item.uploadCount|| 0}}</text>
54   - <text>三方协议</text>
55   - </view>
56   - <view class="line"></view>
57   - <view>
58   - <text>{{item.weekLogCount|| 0}}</text>
59   - <text>周日志</text>
60   - </view>
61   - <view class="line"></view>
62   - <view>
63   - <text>{{item.internshipReportCount|| 0}}</text>
64   - <text>实习报告</text>
65   - </view>
66   - <view class="line"></view>
67   - <view>
68   - <text>{{item.attendanceCount|| 0}}</text>
69   - <text>签到</text>
70   - </view>
  49 + <view v-else class="status" style="color: #0CB17A;">
  50 + 已鉴定
  51 + </view>
  52 + <view class="time">
  53 + {{timeFormat(item.createdTime, 'mm-dd')}}
71 54 </view>
72   -
73 55 </view>
74 56 <c-loading :loading="loading"></c-loading>
75 57 </view>
... ... @@ -77,38 +59,37 @@
77 59 <c-no-data></c-no-data>
78 60 </view>
79 61
80   - <u-popup :show="show" mode="right" @close="close" @open="open" :closeOnClickOverlay="false">
81   - <view class="popup_search">
82   - <view class="content">
83   - <view class="title">按项目筛选</view>
84   - <scroll-view class="scroll" scroll-y="true">
85   - <view class="item" v-for="(item, i) in projectList" :key="i" @click="handelClick(item)">
86   - <view class="selectItem" v-if="item.id == projectId">
87   - <text>{{item.name}}</text>
88   - </view>
89   - <view v-else>
90   - <text>{{item.name}}</text>
91   - </view>
92   - </view>
93   - </scroll-view>
94   - <view class="switch">
95   - <text>待鉴定</text>
96   - <u-switch v-model="switchValue" size="48" activeColor="#06B079" @change="handelChange">
97   - </u-switch>
  62 + <u-popup :show="show" mode="bottom" @close="close" :round="22">
  63 + <view class="popup">
  64 + <view style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 28px;">
  65 + <view class="title">
  66 + 项目筛选
98 67 </view>
  68 + <image class="close" src="/static/img/home/closepop.png" @click="close" mode=""></image>
99 69 </view>
100   -
101   - <view class="footer">
102   - <view class="left_btn">
103   - <c-button type="cancel" text="重置" @click="handelCancel">
104   - </c-button>
  70 + <view class="search">
  71 + <u-search placeholder="请输入项目关键词搜索" placeholderColor="#C1C1C9" searchIconSize="36" height="64rpx"
  72 + bgColor="#F4F4F4" :showAction="true" shape="round" v-model="sxsearch" @custom="workSearch()"
  73 + @search="workSearch()">
  74 + </u-search>
  75 + </view>
  76 + <scroll-view v-if="works.length>0" scroll-y="true" style="height: 80%; margin-top: 40rpx;"
  77 + @scrolltolower="lower()">
  78 + <view class="item_box" v-for="(item,index) in works" :key="index" @click="popupSelItem(item)">
  79 + <view style="display: flex; align-items: center; justify-content: space-between;">
  80 + <view class="item_title">
  81 + {{item.name}}
  82 + </view>
  83 + <image v-if="item.id == projectId" style="width: 20px; height: 20px;"
  84 + src="/static/img/home/popselect.png" mode=""></image>
  85 + </view>
105 86 </view>
106   - <view class="right_btn">
107   - <c-button type="confirm" text="确定" @click="hancelSubmit">
108   - </c-button>
  87 + </scroll-view>
  88 + <view v-else class="no_data" @click="jumpVerified">
  89 + <view class="text_black_28">
  90 + 暂未搜索到该项目
109 91 </view>
110 92 </view>
111   -
112 93 </view>
113 94 </u-popup>
114 95
... ... @@ -131,58 +112,56 @@
131 112 export default {
132 113 mixins: [listMixin],
133 114 data() {
134   -
135   - const d = new Date();
136   - const year = d.getFullYear();
137   - let month = d.getMonth() + 1;
138   - month = month < 10 ? `0${month}` : month;
139   - const date = d.getDate();
140   -
141 115 return {
142 116 checkboxValue: [],
143 117 // 基本案列数据
144 118 checkboxList: [{
145   - name: '待鉴定',
  119 + name: '待处理',
146 120 disabled: false
147 121 }],
148 122 keyword: '',
149 123 show: false,
  124 + list: [], //列表必须为key list的数组
150 125 search: {
151 126 //搜索对象必须为key search的对象
152 127 keySearch: "",
153   - appraisalStatus: '',
  128 + status: '',
154 129
155 130 },
156   - showTime: false,
157   - timeValue: `${year}-${month}-${date}`,
158   - defaultDateMultiple: [`${year}-${month}-${date}`],
159   - list: [], //列表必须为key list的数组
160 131 projectId: '',
161 132 switchValue: false,
162   -
  133 + curNow: 1,
  134 + sxsearch: '',
  135 + works: [],
  136 + workspage: 1,
  137 + workstotal: 0,
163 138 }
164 139 },
165 140
166 141 onLoad(option) {
167   - this.$store.dispatch(`home/getProjectList`, {
168   - pageSize: -1,
169   - })
  142 + console.log(option)
  143 + // this.$store.dispatch(`home/getProjectList`, {
  144 + // pageSize: -1,
  145 + // })
  146 +
  147 + this.worksloadData()
170 148
171   - this.search.keySearch = '';
  149 + // this.search.keySearch = '';
172 150
173   - if (option && option.appraisalStatus) {
174   - this.search.appraisalStatus = 'no_appraisal';
175   - this.checkboxValue = ['待鉴定'];
176   - this.switchValue = true;
  151 + if (option && option.status) {
  152 + // this.search.status = 'wait';
  153 + this.curNow = 0;
  154 + // this.checkboxValue = ['待处理'];
  155 + // this.switchValue = true;
177 156 }
178 157
  158 + },
  159 +
  160 + onShow() {
179 161 this.finished = false;
180 162 this.loading = "loadmore";
181 163 this.page = 0;
182 164 this.list = [];
183   - },
184   -
185   - onShow() {
186 165 this._getList();
187 166 },
188 167
... ... @@ -197,30 +176,24 @@
197 176
198 177 methods: {
199 178
200   - getNameLastTwo(value) {
201   - if (value && value.length > 3) {
202   - return value.substring(value.length - 3)
203   - } else {
204   - return value;
205   - }
  179 + searchCli() {
  180 + this.$u.route('/pages/main/home/search/search?type=achi&searchkey=' + this.keyword);
206 181 },
207 182
208   - overflowHide(value, num = 4) {
209   - if (value && value.length > num) {
210   - return `${value.slice(0, num)}...`
211   - } else {
212   - return value;
213   - }
214   - },
  183 + sectionChange(index) {
  184 + this.curNow = index;
215 185
216   - confirm(e) {
217   - this.timeValue = e[0];
218   - this.showTime = false;
  186 + this.finished = false;
  187 + this.loading = "loadmore";
  188 + this.page = 0;
  189 + this.list = [];
  190 + this._getList();
219 191 },
220 192
221 193 handelDetail(record) {
222 194 this.$u.route({
223   - url: `pages/main/home/achievementDetail/achievementDetail?&id=${record.id}`
  195 + // url: `pages/main/home/achievementDetail/achievementDetail?&id=${record.id}`
  196 + url: `pages/main/home/achievementMid/achievementMid?&id=${record.id}`
224 197 })
225 198 },
226 199
... ... @@ -228,20 +201,6 @@
228 201 return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'
229 202 },
230 203
231   - checkboxChange(n) {
232   - console.log('change', n);
233   -
234   - this.search.appraisalStatus = n.length > 0 ? 'no_appraisal' : '';
235   -
236   - this.switchValue = n.length > 0 ? true : false;
237   -
238   - this.finished = false;
239   - this.loading = "loadmore";
240   - this.page = 0;
241   - this.list = [];
242   - this._getList();
243   - },
244   -
245 204 handelSearch(value) {
246 205 this.finished = false;
247 206 this.loading = "loadmore";
... ... @@ -274,8 +233,8 @@
274 233 params.pageNumber = requestParams.page + 1;
275 234 params.pageSize = 5;
276 235
277   - if (search.appraisalStatus) {
278   - params.appraisalStatus = search.appraisalStatus;
  236 + if (this.curNow == 0) {
  237 + params.status = 'wait';
279 238 }
280 239
281 240 if (this.keyword) {
... ... @@ -320,31 +279,51 @@
320 279 }
321 280 },
322 281
323   - handelClick(values) {
324   - console.log(values);
325   - this.projectId = values.id;
  282 + workSearch() {
  283 + uni.hideKeyboard();
  284 + this.works = []
  285 + this.worksloadData()
326 286 },
327 287
328   - handelChange(e) {
329   - console.log(e)
330   - this.checkboxValue = e ? ['待鉴定'] : [];
331   - this.search.appraisalStatus = e ? 'no_appraisal' : '';
332   -
  288 + lower() {
  289 + setTimeout(() => {
  290 + this.worksloadData(true);
  291 + }, 200)
333 292 },
334 293
335   - handelCancel() {
336   - this.switchValue = false;
337   - this.projectId = '';
338   - },
  294 + worksloadData(e) {
  295 + let params = {}
  296 + // this.loading = 'loading'
339 297
340   - hancelSubmit() {
  298 + if (e) {
  299 + if (this.total <= this.works.length) {
  300 + // this.loading = 'nomore'
  301 + return
  302 + }
  303 + this.workspage++
  304 + } else {
  305 + this.workspage = 1
  306 + }
  307 + params['pageNumber'] = this.workspage
  308 + if (this.sxsearch) {
  309 + params['keyWord'] = this.sxsearch
  310 + }
  311 + getProjectListApi(params).then(async res => {
  312 + if (res) {
  313 + this.total = res.total
  314 + // this.loading = 'loadmore'
  315 + this.works = this.works.concat(res.records)
  316 + }
  317 + })
  318 + },
  319 + popupSelItem(item) {
  320 + this.show = false
  321 + this.projectId = item.id;
341 322 this.finished = false;
342 323 this.loading = "loadmore";
343 324 this.page = 0;
344 325 this.list = [];
345 326 this._getList();
346   -
347   - this.show = false;
348 327 },
349 328
350 329 }
... ... @@ -359,31 +338,19 @@
359 338 background-color: #F7F7F7;
360 339
361 340 .search_box {
362   - padding: 36rpx 30rpx 0;
  341 + padding: 36rpx 30rpx 12rpx;
363 342 background-color: #FFFFFF;
  343 + display: flex;
  344 + flex-flow: row nowrap;
  345 + justify-content: space-between;
364 346
365   - .top {
366   - display: flex;
367   - flex-flow: row nowrap;
368   - justify-content: space-between;
369   - padding: 0 0 30rpx 0;
370   -
371   - .check {
372   - padding: 20rpx 0 0 0;
373   - }
374   -
375   - .search {
376   - width: 468rpx;
377   - }
  347 + .check {
  348 + padding: 20rpx 0 0 0;
378 349 }
379 350
380   - .bottom {
381   - .time {
382   - padding: 30rpx 0 30rpx 40rpx;
383   - }
  351 + .search {
  352 + width: 468rpx;
384 353 }
385   -
386   -
387 354 }
388 355
389 356 .list_box {
... ... @@ -391,110 +358,55 @@
391 358
392 359 .item {
393 360 position: relative;
394   - width: 630rpx;
395   - margin: 30rpx auto;
396   - padding: 30rpx;
397   - border-radius: 12rpx;
  361 + margin: 8px 13px 0;
  362 + padding: 20px 17px;
  363 + border-radius: 8rpx;
398 364 background-color: #FFFFFF;
399 365
400   - .bg_image {
401   - position: absolute;
402   - top: 0;
403   - right: 0;
404   -
405   - text {
406   - position: absolute;
407   - top: 12rpx;
408   - right: 30rpx;
409   - font-size: 24rpx;
410   - line-height: 24rpx;
411   - color: #FFFFFF;
412   - }
  366 + .t1 {
  367 + font-size: 14px;
  368 + font-family: PingFangSC-Medium, PingFang SC;
  369 + font-weight: 500;
  370 + color: #000000;
413 371 }
414 372
415   - .info {
416   - display: flex;
417   - flex-flow: row nowrap;
418   - align-items: center;
419   - margin: 0 0 30rpx 0;
420   -
421   - .avatar {
422   - width: 94rpx;
423   - height: 94rpx;
424   - padding: 0 8rpx;
425   - border-radius: 4rpx;
426   - background-color: #06B079;
427   - font-size: 24rpx;
428   - line-height: 94rpx;
429   - color: #FFFFFF;
430   - text-align: center;
431   - }
432   -
433   - .name {
434   - font-size: 32rpx;
435   - line-height: 44rpx;
436   - color: #202131;
437   - font-weight: 500;
438   - margin: 0 20rpx;
439   - }
440   -
441   - .number {
442   - font-size: 28rpx;
443   - line-height: 32rpx;
444   - color: #909097;
445   - }
  373 + .t2 {
  374 + margin-top: 6px;
  375 + font-size: 12px;
  376 + font-family: PingFangSC-Light, PingFang SC;
  377 + font-weight: 300;
  378 + color: rgba(38, 41, 47, 0.85);
446 379 }
447 380
448   - .company {
449   - display: flex;
450   - flex-flow: row nowrap;
451   - margin: 0 0 30rpx 0;
452   -
453   - text {
454   - font-size: 28rpx;
455   - line-height: 32rpx;
456   - color: #909097;
457   - margin: 0 0 0 16rpx;
458   - }
459   -
460   - text:last-child {
461   - color: #202131;
462   - margin: 0 0 0 30rpx;
463   - }
  381 + .t3 {
  382 + margin-top: 2px;
  383 + font-size: 12px;
  384 + font-family: PingFangSC-Light, PingFang SC;
  385 + font-weight: 300;
  386 + color: #000000;
464 387 }
465 388
466   - .statistics {
467   - border-top: 2rpx solid #E2E2E8;
468   - padding: 28rpx 0 0 0;
469   - display: flex;
470   - flex-flow: row nowrap;
471   - justify-content: space-around;
472   -
473   - view {
474   - text-align: center;
475   -
476   - text {
477   - font-size: 32rpx;
478   - line-height: 32rpx;
479   - color: #06B079;
480   - }
481   -
482   - text:last-child {
483   - display: block;
484   - font-size: 24rpx;
485   - color: #909097;
486   - margin: 16rpx 0 0 0;
487   - }
488   - }
489   -
490   - .line {
491   - height: 32rpx;
492   - border-right: 2rpx solid #E2E2E8;
493   - position: relative;
494   - top: 30rpx;
495   - }
  389 + .t2top14 {
  390 + margin-top: 14px;
  391 + }
496 392
  393 + .time {
  394 + position: absolute;
  395 + top: 17px;
  396 + right: 17px;
  397 + font-size: 12px;
  398 + font-family: PingFangSC-Light, PingFang SC;
  399 + font-weight: 300;
  400 + color: rgba(0, 0, 0, 0.85);
  401 + }
497 402
  403 + .status {
  404 + position: absolute;
  405 + bottom: 20px;
  406 + right: 17px;
  407 + font-size: 12px;
  408 + font-family: PingFangSC-Regular, PingFang SC;
  409 + font-weight: 400;
498 410 }
499 411 }
500 412 }
... ... @@ -541,10 +453,6 @@
541 453 }
542 454 }
543 455
544   - .time {
545   - padding: 40rpx 0 0 0;
546   - }
547   -
548 456 .switch {
549 457 display: flex;
550 458 flex-flow: row nowrap;
... ... @@ -586,5 +494,52 @@
586 494 }
587 495 }
588 496 }
  497 +
  498 + .popup {
  499 + height: 500px;
  500 + padding: 19px 16px;
  501 +
  502 + .title {
  503 + font-size: 18px;
  504 + font-family: PingFangSC-Medium, PingFang SC;
  505 + font-weight: 500;
  506 + color: #000000;
  507 + }
  508 +
  509 + .close {
  510 + width: 22px;
  511 + height: 22px;
  512 + }
  513 +
  514 + .item_box {
  515 + border-radius: 4px;
  516 + margin: 0 0 48rpx;
  517 +
  518 + .item_title {
  519 + height: 20px;
  520 + font-size: 14px;
  521 + font-family: PingFangSC-Regular, PingFang SC;
  522 + font-weight: 400;
  523 + color: rgba(0, 0, 0, 0.65);
  524 + line-height: 20px;
  525 + }
  526 +
  527 + }
  528 +
  529 + .no_data {
  530 + width: 100%;
  531 + margin-top: 310rpx;
  532 +
  533 + .text_black_28 {
  534 + font-size: 14px;
  535 + font-family: PingFangSC-Light, PingFang SC;
  536 + font-weight: 300;
  537 + color: rgba(0, 0, 0, 0.65);
  538 + text-align: center;
  539 + }
  540 +
  541 + }
  542 +
  543 + }
589 544 }
590 545 </style>
... ...
... ... @@ -66,12 +66,12 @@
66 66 </view>
67 67 </view>
68 68
69   - <view class="footer" v-if="detail.appraisalStatus == 'no_appraisal'">
  69 + <!-- <view class="footer" v-if="detail.appraisalStatus == 'no_appraisal'">
70 70 <view class="right_btn">
71 71 <c-button type="confirm" text="成绩鉴定" @click="showModal = true">
72 72 </c-button>
73 73 </view>
74   - </view>
  74 + </view> -->
75 75
76 76 <u-overlay :show="showModal">
77 77 <view class="modal" v-show="showModal">
... ...
  1 +<template>
  2 + <view class="page">
  3 + <view class="item">
  4 + <view style="display: flex; align-items: baseline;">
  5 + <view class="t1">
  6 + {{detailObj.form.studentName}}
  7 + </view>
  8 + <view class="t3">
  9 + 学号:{{detailObj.form.studentIDNumber}}
  10 + </view>
  11 + </view>
  12 + <view class="t2 t2top14">
  13 + 实习项目: {{detailObj.form.projectName?detailObj.form.projectName:'--'}}
  14 + </view>
  15 + <view class="t2">
  16 + 指导老师: {{detailObj.form.teacherName?detailObj.form.teacherName:'--'}}
  17 + </view>
  18 + <view class="t2">
  19 + 申请时间: {{timeFormat(detailObj.createdTime)}}
  20 + </view>
  21 + <view v-if="detailObj.status == 'wait'" class="status" style="color: #F49A23;">
  22 + 待鉴定
  23 + </view>
  24 + <view v-else class="status" style="color: #0CB17A;">
  25 + 已鉴定
  26 + </view>
  27 + </view>
  28 + <view style="background-color: #fff; margin-top: 20rpx; padding-left: 10px;">
  29 + <u-tabs :list="menu_list" lineWidth="30rpx" lineHeight="4rpx" lineColor="#06B079"
  30 + :inactiveStyle="{fontSize:'32rpx', color:'#4A4A53'}"
  31 + :activeStyle="{fontSize:'32rpx', color:'#06B079'}" @click="click">
  32 + </u-tabs>
  33 + </view>
  34 + <view v-if="current==0">
  35 + <view class="current1">
  36 + <view class="content">
  37 + <view class="cj_left">
  38 + <view class="cj">
  39 + <view class="cj_t">
  40 + {{detailObj.totalScore}}
  41 + </view>
  42 + <view class="cj_d">
  43 +
  44 + </view>
  45 + </view>
  46 + <view class="all">
  47 + 总成绩
  48 + </view>
  49 + </view>
  50 + <view class="line"></view>
  51 + <view class="list_right">
  52 + <view class="list_right_item">
  53 + 实践课程:{{detailObj.form.courseName}}
  54 + </view>
  55 + <view class="list_right_item" style="margin: 10px 0;">
  56 + 实习计划:{{detailObj.form.planName}}
  57 + </view>
  58 + <view class="list_right_item">
  59 + 实习项目:{{detailObj.form.projectName}}
  60 + </view>
  61 + </view>
  62 + </view>
  63 + <view class="inter-end">
  64 + 实习结束日期:{{detailObj.form.endTime}}
  65 + </view>
  66 + <view class="box">
  67 + <view class="t">
  68 + <view class="green"></view>
  69 + <view class="title">
  70 + 实习报告
  71 + </view>
  72 + </view>
  73 + <view class="list">
  74 + <text class="item1">评分:</text>
  75 + <text class="item2">{{detailObj.reportAverageScore}}分</text>
  76 + </view>
  77 + </view>
  78 +
  79 + <view class="box">
  80 + <view class="t">
  81 + <view class="green"></view>
  82 + <view class="title">
  83 + 自我评价
  84 + </view>
  85 + </view>
  86 + <view class="list">
  87 + <text class="item1">评分:</text>
  88 + <text class="item2">{{detailObj.studentScore}}分</text>
  89 + </view>
  90 + <view class="list list_item_top">
  91 + <text class="item1">评语:</text>
  92 + <text class="item2">{{detailObj.studentComment}}</text>
  93 + </view>
  94 + <view class="listflex list_item_top">
  95 + <text class="item1">附件:</text>
  96 + <view class="list_flex_right">
  97 + <view class="pdffj" v-for="(item,index) in stuattachmentsFile " @click="openLink(item)">
  98 + <!-- <image class="img" src="/static/img/common/link.png"></image> -->
  99 + <text class="look">{{item.filename}}</text>
  100 + </view>
  101 + </view>
  102 + </view>
  103 + </view>
  104 +
  105 + <view class="box">
  106 + <view class="t">
  107 + <view class="green"></view>
  108 + <view class="title">
  109 + 企业评价
  110 + </view>
  111 + </view>
  112 + <view class="list">
  113 + <text class="item1">企业联系人:</text>
  114 + <text class="item2">{{detailObj.companyContactName?`${detailObj.companyContactName}`:'-'}}</text>
  115 + </view>
  116 + <view class="list list_item_top">
  117 + <text class="item1">联系方式:</text>
  118 + <text class="item2">{{detailObj.companyContactPhone?`${detailObj.companyContactPhone}`:'-'}}</text>
  119 + </view>
  120 + <view class="list list_item_top">
  121 + <text class="item1">评分:</text>
  122 + <text class="item2">{{detailObj.companyScore?`${detailObj.companyScore}分`:'-'}}</text>
  123 + </view>
  124 + <view class="list list_item_top">
  125 + <text class="item1">评语:</text>
  126 + <text class="item2">{{detailObj.companyComment?`${detailObj.companyComment}`:'-'}}</text>
  127 + </view>
  128 + <view class="listflex list_item_top">
  129 + <text class="item1">附件:</text>
  130 + <view class="list_flex_right">
  131 + <view class="pdffj" v-for="(item,index) in comattachmentsFile " @click="openLink(item)">
  132 + <!-- <image class="img" src="/static/img/common/link.png"></image> -->
  133 + <text class="look">{{item.filename}}</text>
  134 + </view>
  135 + </view>
  136 + </view>
  137 + </view>
  138 +
  139 + <view class="box">
  140 + <view class="t">
  141 + <view class="green"></view>
  142 + <view class="title">
  143 + 学校评价
  144 + </view>
  145 + </view>
  146 + <view class="list list_item_top">
  147 + <text class="item1">评分:</text>
  148 + <text class="item2">{{detailObj.schoolScore?`${detailObj.schoolScore}分`:'-'}}</text>
  149 + </view>
  150 + <view class="list list_item_top">
  151 + <text class="item1">评语:</text>
  152 + <text class="item2">{{detailObj.schoolComment?detailObj.schoolComment:'-'}}</text>
  153 + </view>
  154 + <view class="listflex list_item_top">
  155 + <text class="item1">附件:</text>
  156 + <view class="list_flex_right">
  157 + <view class="pdffj" v-for="(item,index) in schattachmentsFile " @click="openLink(item)">
  158 + <!-- <image class="img" src="/static/img/common/link.png"></image> -->
  159 + <text class="look">{{item.filename}}</text>
  160 + </view>
  161 + </view>
  162 + </view>
  163 + </view>
  164 +
  165 + <view style="height: 184rpx;"></view>
  166 +
  167 + <view v-if="detailObj.status == 'wait'" class="botBtnV_centralize">
  168 + <view class="botBtn" @click="submit()">成绩鉴定</view>
  169 + </view>
  170 + </view>
  171 + </view>
  172 + <view v-else>
  173 + <view class="current2">
  174 + <view v-if="list.length > 0" >
  175 + <view class="list">
  176 + <view v-for="(item,index) in list" :key="index" @click="handelClick(item)">
  177 + <view class="list-item">
  178 + <view style="display: flex; align-items: center;">
  179 + <text>实习单号:</text>
  180 + <text class="green">{{item.number}}</text>
  181 + </view>
  182 + <view style="display: flex; align-items: center; margin-top: 15rpx;">
  183 + <text>实习时间: {{`${timeFormat(item.startTime,'yyyy/mm/dd')} - ${timeFormat(item.endTime,'yyyy/mm/dd')}`}}</text>
  184 + </view>
  185 + <view style="display: flex; align-items: center; margin-top: 15rpx;">
  186 + <text>实习企业: {{item.companyName}}</text>
  187 + </view>
  188 + <view style="display: flex; align-items: center; margin-top: 15rpx;">
  189 + <text>实习岗位: {{item.jobName}}</text>
  190 + </view>
  191 + </view>
  192 + </view>
  193 + </view>
  194 + <view style="height: 40rpx;"></view>
  195 + <c-loading :loading="loading"></c-loading>
  196 + <view style="height: 40rpx;"></view>
  197 + </view>
  198 + <view v-else style="width: 100%; height: 100%;">
  199 + <view style="margin: 150px auto 0; width: 187px;height: 110px;">
  200 + <image style="width: 187px;height: 110px;" :src="'/static/img/home/nodata.png'"></image>
  201 + </view>
  202 + <view style="width: 100%; margin-top: 10px; text-align: center; font-size: 13px; color: #121212;">暂无数据</view>
  203 + </view>
  204 + </view>
  205 + </view>
  206 + </view>
  207 +</template>
  208 +
  209 +<script>
  210 + import {
  211 + scoredetailUrl,
  212 + getImgUrlApi,
  213 + scoreinternshipInfoUrl
  214 + } from '@/config/api.js';
  215 + import listMixin from "@/common/mixins/list-mixin.js";
  216 +
  217 + export default {
  218 + mixins: [listMixin],
  219 + data() {
  220 + return {
  221 + id: '',
  222 + detailObj: {},
  223 + menu_list: [{
  224 + name: '实习成绩'
  225 + }, {
  226 + name: '实习信息'
  227 + }],
  228 + current: 0,
  229 + stuattachmentsFile: [],
  230 + comattachmentsFile: [],
  231 + schattachmentsFile: [],
  232 + list: []
  233 + }
  234 + },
  235 +
  236 + onLoad(e) {
  237 + console.log(e)
  238 + this.id = e.id
  239 +
  240 + this.finished = false;
  241 + this.loading = "loadmore";
  242 + this.page = 0;
  243 + this.list = [];
  244 + this._getList();
  245 + },
  246 +
  247 + onShow() {
  248 + this.loadData()
  249 + },
  250 +
  251 + methods: {
  252 + loadData() {
  253 + scoredetailUrl(this.id).then(res => {
  254 + if (res) {
  255 + this.detailObj = res;
  256 + this.detailObj.form.endTime = this.timeFormat(this.detailObj.form.endTime,'yyyy-mm-dd')
  257 + this.stuhandleDataspdf()
  258 + this.comhandleDataspdf()
  259 + this.schhandleDataspdf()
  260 + }
  261 + })
  262 + },
  263 +
  264 + timeFormat(timestamp, format = 'yyyy-mm-dd hh:MM') {
  265 + return timestamp > 0 ? uni.$u.timeFormat(timestamp, format) : '--'
  266 + },
  267 +
  268 + handelClick(e) {
  269 + this.$u.route({
  270 + url: `pages/main/home/achievementDetail/achievementDetail?&id=${e.id}`
  271 + })
  272 + },
  273 +
  274 + click(item) {
  275 + console.log('item', item);
  276 + this.current = item.index;
  277 +
  278 + if (this.current == 0) {
  279 + this.loadData()
  280 + }else {
  281 + this.finished = false;
  282 + this.loading = "loadmore";
  283 + this.page = 0;
  284 + this.list = [];
  285 + this._getList();
  286 + }
  287 + },
  288 +
  289 + submit() {
  290 + this.$u.route({
  291 + url: `pages/main/home/achievementApply/achievementApply?&id=${this.id}`
  292 + })
  293 + },
  294 +
  295 + stuhandleDataspdf() {
  296 + let a1 = []
  297 + let a2 = []
  298 + if (this.detailObj.studentAttachment) {
  299 + a1 = JSON.parse(this.detailObj.studentAttachment)
  300 + }
  301 + if (this.detailObj.studentAttachmentFile) {
  302 + a2 = JSON.parse(this.detailObj.studentAttachmentFile)
  303 + }
  304 + a1 = a1.concat(a2)
  305 + this.stuattachmentsFile = a1
  306 + },
  307 +
  308 + comhandleDataspdf() {
  309 + let a1 = []
  310 + let a2 = []
  311 + if (this.detailObj.companyAttachment) {
  312 + a1 = JSON.parse(this.detailObj.companyAttachment)
  313 + }
  314 + if (this.detailObj.companyAttachmentFile) {
  315 + a2 = JSON.parse(this.detailObj.companyAttachmentFile)
  316 + }
  317 + a1 = a1.concat(a2)
  318 + this.comattachmentsFile = a1
  319 + },
  320 +
  321 + schhandleDataspdf() {
  322 + let a1 = []
  323 + let a2 = []
  324 + if (this.detailObj.schoolAttachment) {
  325 + a1 = JSON.parse(this.detailObj.schoolAttachment)
  326 + }
  327 + if (this.detailObj.schoolAttachmentFile) {
  328 + a2 = JSON.parse(this.detailObj.schoolAttachmentFile)
  329 + }
  330 + a1 = a1.concat(a2)
  331 + this.schattachmentsFile = a1
  332 + },
  333 +
  334 + openLink(e) {
  335 + var _this = this
  336 +
  337 + uni.showLoading({
  338 + title: '努力加载中~',
  339 + mask: true
  340 + })
  341 +
  342 + getImgUrlApi({
  343 + bucket: e.bucket,
  344 + filePath: e.object
  345 + }).then(data => {
  346 + console.log("data...", data)
  347 + if (e.mime_type.indexOf("image") != -1) {
  348 + _this.openImage(data.url)
  349 + } else {
  350 + uni.downloadFile({
  351 + url: data.url,
  352 + success: function(res) {
  353 + var filePath = res.tempFilePath;
  354 + uni.openDocument({
  355 + filePath: filePath,
  356 + showMenu: true,
  357 + success: function(res) {
  358 + console.log('打开文档成功');
  359 + },
  360 + complete: function() {
  361 + uni.hideLoading();
  362 + }
  363 + });
  364 + }
  365 + });
  366 + }
  367 + })
  368 + },
  369 + openImage(imgPath) {
  370 + let array = new Array(1).fill(imgPath);
  371 + uni.previewImage({
  372 + urls: array,
  373 + success(res) {
  374 + uni.hideLoading();
  375 + console.log('openImage success');
  376 + },
  377 + fail(res) {
  378 + uni.hideLoading();
  379 + console.log('openImage fail:', res);
  380 + }
  381 + });
  382 + },
  383 +
  384 + // 模拟后端分页
  385 + async getData(requestParams) {
  386 + const {
  387 + search = {}
  388 + } = requestParams;
  389 +
  390 + let params = {};
  391 + params.pageNumber = requestParams.page + 1;
  392 + params.pageSize = 10;
  393 + params.id = this.id;
  394 +
  395 + console.log(12312312,params)
  396 + return await scoreinternshipInfoUrl(params);
  397 + },
  398 +
  399 + // 数据请求(没错就是这么少的代码)
  400 + async _getList() {
  401 + if (this.page == 0) {
  402 + this.list = [];
  403 + }
  404 +
  405 + uni.showLoading({
  406 + title: '数据加载中~',
  407 + mask: true
  408 + })
  409 +
  410 + // 根据实际情况修改自己修改key
  411 + let result = await this.getData({
  412 + page: this.page, // 传入页码
  413 + size: this.size, // 传入每页条数
  414 + search: this.search, // 传入搜索的对象
  415 + });
  416 +
  417 + // console.log(result.records)
  418 +
  419 + this.total = result.total;
  420 +
  421 + result.records.map((item) => {
  422 + this.list.push(item);
  423 + });
  424 +
  425 + if (this.list.length == this.total) {
  426 + this.finished = true;
  427 + this.loading = 'nomore';
  428 + }
  429 +
  430 + uni.hideLoading();
  431 + },
  432 + }
  433 + }
  434 +</script>
  435 +
  436 +<style>
  437 + page {
  438 + background-color: #F7F7F7;
  439 + }
  440 +</style>
  441 +
  442 +<style lang="scss" scoped>
  443 + .page {
  444 + width: 100%;
  445 +
  446 + .item {
  447 + position: relative;
  448 + padding: 20px;
  449 + background-color: #FFFFFF;
  450 +
  451 + .t1 {
  452 + font-size: 17px;
  453 + font-family: PingFangSC-Medium, PingFang SC;
  454 + font-weight: 500;
  455 + color: #000000;
  456 + }
  457 +
  458 + .t2 {
  459 + margin-top: 6px;
  460 + font-size: 12px;
  461 + font-family: PingFangSC-Light, PingFang SC;
  462 + font-weight: 300;
  463 + color: #000000;
  464 + }
  465 +
  466 + .t3 {
  467 + margin-left: 8px;
  468 + font-size: 13px;
  469 + font-family: PingFangSC-Light, PingFang SC;
  470 + font-weight: 300;
  471 + color: rgba(0,0,0,0.45);
  472 + }
  473 +
  474 + .t2top14 {
  475 + margin-top: 12px;
  476 + }
  477 +
  478 + .status {
  479 + position: absolute;
  480 + bottom: 20px;
  481 + right: 17px;
  482 + font-size: 14px;
  483 + font-family: PingFangSC-Regular, PingFang SC;
  484 + font-weight: 400;
  485 + }
  486 + }
  487 +
  488 + .current1 {
  489 + padding: 10px;
  490 + background-color: #FFFFFF;
  491 +
  492 + .content {
  493 + padding: 14px 19px;
  494 + height: 100px;
  495 + background: #F7F7F7;
  496 + border-radius: 8px;
  497 + display: flex;
  498 + align-items: center;
  499 +
  500 + .cj_left {
  501 + display: flex;
  502 + flex-direction: column;
  503 +
  504 + .cj {
  505 + display: flex;
  506 + align-items: baseline;
  507 +
  508 + .cj_t {
  509 + height: 40px;
  510 + font-size: 40px;
  511 + font-family: DIN-Black, DIN;
  512 + font-weight: 900;
  513 + color: #121212;
  514 + }
  515 +
  516 + .cj_d {
  517 + margin-left: 4px;
  518 + font-size: 12px;
  519 + font-family: PingFangSC-Light, PingFang SC;
  520 + font-weight: 300;
  521 + color: #646464;
  522 + }
  523 + }
  524 +
  525 + .all {
  526 + margin-top: 8px;
  527 + font-size: 12px;
  528 + font-family: PingFangSC-Regular, PingFang SC;
  529 + font-weight: 400;
  530 + color: #121212;
  531 + }
  532 + }
  533 +
  534 + .line {
  535 + margin-left: 15px;
  536 + width: 1px;
  537 + height: 39px;
  538 + background-color: #EEEEEE;
  539 + }
  540 +
  541 + .list_right {
  542 + display: flex;
  543 + flex-direction: column;
  544 + margin-left: 15px;
  545 +
  546 + .list_right_item {
  547 + font-size: 12px;
  548 + font-family: PingFangSC-Light, PingFang SC;
  549 + font-weight: 300;
  550 + color: #121212;
  551 + }
  552 + }
  553 + }
  554 +
  555 + .inter-end {
  556 + padding-left: 10px;
  557 + margin-top: 10px;
  558 + font-size: 12px;
  559 + font-family: PingFangSC-Light, PingFang SC;
  560 + font-weight: 300;
  561 + color: #121212;
  562 + }
  563 +
  564 + .box {
  565 + padding-left: 10px;
  566 + margin-top: 20px;
  567 +
  568 + .t {
  569 + display: flex;
  570 + align-items: center;
  571 +
  572 + .green {
  573 + width: 3px;
  574 + height: 10px;
  575 + background: #0CB17A;
  576 + }
  577 +
  578 + .title {
  579 + margin-left: 10rpx;
  580 + font-size: 14px;
  581 + font-family: PingFangSC-Medium, PingFang SC;
  582 + font-weight: 500;
  583 + color: #000000;
  584 + }
  585 +
  586 + }
  587 + }
  588 +
  589 + .list {
  590 + margin-top: 9px;
  591 +
  592 + .item1 {
  593 + font-size: 12px;
  594 + font-family: PingFangSC-Light, PingFang SC;
  595 + font-weight: 300;
  596 + color: #646464;
  597 + }
  598 +
  599 + .item2 {
  600 + margin-left: 2px;
  601 + font-size: 12px;
  602 + font-family: PingFangSC-Light, PingFang SC;
  603 + font-weight: 300;
  604 + color: #121212;
  605 + }
  606 + }
  607 +
  608 + .listflex {
  609 + margin-top: 9px;
  610 + display: flex;
  611 +
  612 + .item1 {
  613 + font-size: 12px;
  614 + font-family: PingFangSC-Light, PingFang SC;
  615 + font-weight: 300;
  616 + color: #646464;
  617 + }
  618 +
  619 + .list_flex_right {
  620 + display: flex;
  621 + flex-direction: column;
  622 + margin-left: 2px;
  623 + width: 85%;
  624 +
  625 + .pdffj {
  626 + margin-bottom: 5px;
  627 +
  628 + .img {
  629 + width: 24rpx;
  630 + height: 24rpx;
  631 + margin-right: 12rpx;
  632 + }
  633 +
  634 + .look {
  635 + width: 100%;
  636 + display: -webkit-box;
  637 + -webkit-box-orient: vertical;
  638 + -webkit-line-clamp: 2;
  639 + overflow: hidden;
  640 + white-space: normal;
  641 + word-break: break-all;
  642 + word-wrap: break-word;
  643 + font-size: 28rpx;
  644 + font-family: PingFangSC-Regular, PingFang SC;
  645 + font-weight: 400;
  646 + color: #0CB17A;
  647 + }
  648 + }
  649 +
  650 + }
  651 + }
  652 +
  653 + .list_item_top {
  654 + margin-top: 0px;
  655 + }
  656 +
  657 + .botBtnV_centralize {
  658 + position: fixed;
  659 + bottom: 0;
  660 + left: 0;
  661 + right: 0;
  662 + padding: 24rpx 32rpx;
  663 + // height: 144rpx;
  664 + background-color: #FFFFFF;
  665 +
  666 + .botBtn {
  667 + height: 48px;
  668 + background: linear-gradient(180deg, #1CD9B2 0%, #0CB17A 100%);
  669 + border-radius: 24px;
  670 + font-size: 17px;
  671 + font-family: PingFangSC-Regular, PingFang SC;
  672 + font-weight: 400;
  673 + color: #FFFFFF;
  674 + line-height: 48px;
  675 + text-align: center;
  676 + margin-left: 0px;
  677 + }
  678 +
  679 + .openChat {
  680 + top: 0;
  681 + left: 0;
  682 + position: absolute;
  683 + width: 100%;
  684 + height: 100%;
  685 + opacity: 0;
  686 + z-index: 999;
  687 + }
  688 + }
  689 + }
  690 +
  691 + .current2 {
  692 + padding: 20rpx 20rpx 0;
  693 +
  694 + .list-item {
  695 + // width: 100%;
  696 + // height: 150px;
  697 + padding: 36rpx 40rpx;
  698 + background: #FFFFFF;
  699 + margin-bottom: 10px;
  700 +
  701 + text {
  702 + font-size: 14px;
  703 + font-family: PingFangSC-Light, PingFang SC;
  704 + font-weight: 300;
  705 + color: rgba(0,0,0,0.65);
  706 + max-width: 90%;
  707 + overflow: hidden;
  708 + text-overflow: ellipsis;
  709 + display: -webkit-box;
  710 + -webkit-line-clamp: 2;
  711 + -webkit-box-orient: vertical;
  712 + }
  713 +
  714 + .green {
  715 + margin-left: 5px;
  716 + color: #0CB17A;
  717 + }
  718 + }
  719 + }
  720 + }
  721 +</style>
... ...
... ... @@ -478,6 +478,7 @@
478 478 }
479 479
480 480 .t3 {
  481 + margin-top: 2px;
481 482 font-size: 12px;
482 483 font-family: PingFangSC-Light, PingFang SC;
483 484 font-weight: 300;
... ...
... ... @@ -498,7 +498,8 @@
498 498 color: rgba(38, 41, 47, 0.85);
499 499 }
500 500
501   - .t3 {
  501 + .t3 {
  502 + margin-top: 2px;
502 503 font-size: 12px;
503 504 font-family: PingFangSC-Light, PingFang SC;
504 505 font-weight: 300;
... ...
1 1 <template>
2 2 <view class="report_detail">
3   - <view v-if="id">
4   - <view class="report_info">
5   -
6   - <view class="bg_image" v-if="detail.status == 'stay_examine'">
7   - <u-image src="/static/img/home/labelBgGreen.png" width="142rpx" height="48rpx"></u-image>
8   - <text>待审核</text>
9   - </view>
10   -
11   - <view class="bg_image" v-else-if="detail.status == 'adopt'">
12   - <u-image src="/static/img/home/labelBgGrey.png" width="142rpx" height="48rpx"></u-image>
13   - <text>已通过</text>
14   - </view>
15   -
16   - <view class="bg_image" v-else>
17   - <u-image src="/static/img/home/labelBgGrey.png" width="142rpx" height="48rpx"></u-image>
18   - <text>已退回</text>
19   - </view>
20   -
21   - <view class="info">
22   - <view class="avatar">{{getNameLastTwo(detail.studentName)}}</view>
23   - <view class="title_name">
24   - <view class="title">{{detail.title}}</view>
25   - <view class="name">
26   - <text>学生姓名</text>
27   - <text>{{detail.studentName}}</text>
28   - </view>
29   - </view>
30   - </view>
31   -
32   - <view class="time_record">
33   - <text>
34   - {{timeFormat(detail.createdTime, 'yyyy-mm-dd hh:MM')}}
35   - </text>
36   - <view class="record" @click="handelRecord">
37   - <text>审批记录</text>
38   - <u-icon :style="{margin:'0 0 0 8rpx'}" name="arrow-right" color="#06B079" size="28"></u-icon>
39   - </view>
40   - </view>
41   - </view>
42   -
43   - <view class="box">
44   - <view class="title">附件</view>
45   - <view class="item" v-for="(item,index) in reportAttachments">
46   - <text>报告附件</text>
47   - <text :style="{color:'#06B079'}" @click="openLink(item)">{{item.filename}}</text>
48   - </view>
49   - </view>
50   -
51   - <view>
52   - <view class="box file" v-if="detail.status == 'stay_examine'">
53   - <view class="title">反馈附件</view>
54   - <view class="icon_item" v-for="(item,index) in attachments">
55   - <text @click="openLink(item)">{{item.filename}}</text>
56   - <u-icon name="close" @click="deletePic(index)" width="28rpx" color="red" size="28"></u-icon>
57   - </view>
58   - <view class="icon_box" @click="handelFile">
59   - <u-icon name="plus" width="28rpx" label="添加" labelPos="bottom" labelColor="#06B079" color="#06B079"
60   - size="28"></u-icon>
61   - </view>
62   - </view>
63   -
64   - <view class="box file" v-else>
65   - <view class="title">反馈附件</view>
66   - <view class="icon_item" v-for="(item,index) in reviewAttachments">
67   - <text @click="openLink(item)">{{item.filename}}</text>
68   - </view>
69   - </view>
70   - </view>
71   -
72   - <view>
73   - <view class="box" :style="{padding:'30rpx'}" v-if="detail.status == 'stay_examine'">
74   - <view class="title">反馈信息</view>
75   - <u-textarea v-model="textarea" placeholder="请输入内容" count></u-textarea>
76   - </view>
77   - <view class="box" :style="{padding:'30rpx'}" v-else>
78   - <view class="title">反馈信息</view>
79   - <u-textarea v-model="textarea" :disabled="true" placeholder="请输入内容" count></u-textarea>
80   - </view>
81   - </view>
82   -
83   - <view class="footer" v-if="detail.status == 'stay_examine'">
84   - <view class="left_btn">
85   - <c-button type="cancel" text="退回" @click="handelCancel">
86   - </c-button>
87   - </view>
88   - <view class="right_btn">
89   - <c-button type="confirm" text="通过" @click="hancelSubmit">
90   - </c-button>
91   - </view>
92   - </view>
93   - </view>
94   -
95   - <view v-else class="no_data">
96   - <c-no-data></c-no-data>
  3 + <view v-if="id">
  4 + <view class="report_info">
  5 +
  6 + <view class="bg_image" v-if="detail.status == 'stay_examine'">
  7 + <u-image src="/static/img/home/labelBgGreen.png" width="142rpx" height="48rpx"></u-image>
  8 + <text>待审核</text>
  9 + </view>
  10 +
  11 + <view class="bg_image" v-else-if="detail.status == 'adopt'">
  12 + <u-image src="/static/img/home/labelBgGrey.png" width="142rpx" height="48rpx"></u-image>
  13 + <text>已通过</text>
  14 + </view>
  15 +
  16 + <view class="bg_image" v-else>
  17 + <u-image src="/static/img/home/labelBgGrey.png" width="142rpx" height="48rpx"></u-image>
  18 + <text>已退回</text>
  19 + </view>
  20 +
  21 + <view class="info">
  22 + <view class="avatar">{{getNameLastTwo(detail.studentName)}}</view>
  23 + <view class="title_name">
  24 + <view class="title">{{detail.title}}</view>
  25 + <view class="name">
  26 + <text>学生姓名</text>
  27 + <text>{{detail.studentName}}</text>
  28 + </view>
  29 + </view>
  30 + </view>
  31 +
  32 + <view class="time_record">
  33 + <text>
  34 + {{timeFormat(detail.createdTime, 'yyyy-mm-dd hh:MM')}}
  35 + </text>
  36 + <view class="record" @click="handelRecord">
  37 + <text>审批记录</text>
  38 + <u-icon :style="{margin:'0 0 0 8rpx'}" name="arrow-right" color="#06B079" size="28"></u-icon>
  39 + </view>
  40 + </view>
  41 + </view>
  42 +
  43 + <view class="box">
  44 + <view class="title">附件</view>
  45 + <view class="item" v-for="(item,index) in reportAttachments">
  46 + <text>报告附件</text>
  47 + <text :style="{color:'#06B079'}" @click="openLink(item)">{{item.filename}}</text>
  48 + </view>
  49 + </view>
  50 +
  51 + <view>
  52 + <view class="box file" v-if="detail.status == 'stay_examine'">
  53 + <view class="title">反馈附件</view>
  54 + <view class="icon_item" v-for="(item,index) in attachments">
  55 + <text @click="openLink(item)">{{item.filename}}</text>
  56 + <u-icon name="close" @click="deletePic(index)" width="28rpx" color="red" size="28"></u-icon>
  57 + </view>
  58 + <view class="icon_box" @click="handelFile">
  59 + <u-icon name="plus" width="28rpx" label="添加" labelPos="bottom" labelColor="#06B079"
  60 + color="#06B079" size="28"></u-icon>
  61 + </view>
  62 + </view>
  63 +
  64 + <view class="box file" v-else>
  65 + <view class="title">反馈附件</view>
  66 + <view class="icon_item" v-for="(item,index) in reviewAttachments">
  67 + <text @click="openLink(item)">{{item.filename}}</text>
  68 + </view>
  69 + </view>
  70 + </view>
  71 +
  72 + <view>
  73 + <view class="box" :style="{padding:'30rpx'}" v-if="detail.status == 'stay_examine'">
  74 + <view class="title">反馈信息</view>
  75 + <u-textarea v-model="textarea" placeholder="请输入内容" count></u-textarea>
  76 + </view>
  77 + <view class="box" :style="{padding:'30rpx'}" v-else>
  78 + <view class="title">反馈信息</view>
  79 + <u-textarea v-model="textarea" :disabled="true" placeholder="请输入内容" count></u-textarea>
  80 + </view>
  81 + </view>
  82 +
  83 + <view class="footer" v-if="detail.status == 'stay_examine'">
  84 + <view class="left_btn">
  85 + <c-button type="cancel" text="退回" @click="handelCancel">
  86 + </c-button>
  87 + </view>
  88 + <view class="right_btn">
  89 + <c-button type="confirm" text="通过" @click="hancelSubmit">
  90 + </c-button>
  91 + </view>
  92 + </view>
  93 + </view>
  94 +
  95 + <view v-else class="no_data">
  96 + <c-no-data></c-no-data>
97 97 </view>
98 98
  99 + <u-popup :show="beginshow" @close="close" mode="bottom" :round="12">
  100 + <view class="begin">
  101 + <view class="name">
  102 + 报告批阅
  103 + </view>
  104 + <view class="desc">
  105 + 批阅完成后无法修改,请谨慎操作!
  106 + </view>
  107 + <view class="input">
  108 + <view class="input_t">
  109 + 报告评分
  110 + </view>
  111 + <view>
  112 + <u--input placeholder="请输入评分" border="none" :type="'number'" :inputAlign="'right'" v-model="pf"></u--input>
  113 + </view>
  114 + </view>
  115 + <view class="btm">
  116 + <view class="cancel" @click="close">
  117 + 取消
  118 + </view>
  119 + <view class="confirm" @click="bconfirm">
  120 + 确认
  121 + </view>
  122 + </view>
  123 + </view>
  124 + </u-popup>
  125 +
99 126 </view>
100 127 </template>
101 128
... ... @@ -131,15 +158,17 @@
131 158 selector: ["上传微信文件", "上传电脑文件"],
132 159 maxCount: 9,
133 160 textarea: '',
  161 + beginshow: false,
  162 + pf: ''
134 163 }
135 164 },
136 165
137 166 onLoad(option) {
138 167 this.id = option.id;
139   - this.formId = option.formId;
140   -
141   - if(!option.id) {
142   - return;
  168 + this.formId = option.formId;
  169 +
  170 + if (!option.id) {
  171 + return;
143 172 }
144 173
145 174 getOssInitApi({
... ... @@ -340,26 +369,53 @@
340 369 review: this.textarea,
341 370 }).then(data => {
342 371 if (data) {
343   - uni.navigateBack({
344   - delta: 1
  372 + uni.navigateBack({
  373 + delta: 1
345 374 });
346 375 }
347 376 })
348 377 },
349 378
350 379 hancelSubmit() {
351   - putReportReviewApi(this.id, {
352   - status: 'adopt',
353   - reviewAttachments: JSON.stringify(this.attachments),
354   - review: this.textarea,
355   - }).then(data => {
356   - if (data) {
  380 + this.beginshow = true
  381 + },
  382 +
  383 + bconfirm() {
  384 + if (!this.pf) {
  385 + uni.showToast({
  386 + title: '请输入评分',
  387 + icon: 'none',
  388 + duration: 1500
  389 + });
  390 + return
  391 + }
  392 + if (Number(this.pf) < 0 || Number(this.pf) > 100) {
  393 + uni.showToast({
  394 + title: '评分范围1~100分',
  395 + icon: 'none',
  396 + duration: 1500
  397 + });
  398 + return
  399 + }
  400 + this.beginshow = false
  401 + putReportReviewApi(this.id, {
  402 + status: 'adopt',
  403 + reviewAttachments: JSON.stringify(this.attachments),
  404 + review: this.textarea,
  405 + score: this.pf
  406 + }).then(data => {
  407 + if (data) {
357 408 uni.navigateBack({
358 409 delta: 1
359   - });
360   - }
361   - })
  410 + });
  411 + }
  412 + })
362 413 },
  414 +
  415 + close() {
  416 + this.beginshow = false
  417 + // console.log('close');
  418 + }
363 419 }
364 420 }
365 421 </script>
... ... @@ -553,6 +609,66 @@
553 609 }
554 610 }
555 611
  612 + .begin {
  613 + padding: 23px 16px;
  614 + // height: 300px;
  615 +
  616 + .name {
  617 + font-size: 17px;
  618 + font-family: PingFangSC-Medium, PingFang SC;
  619 + font-weight: 500;
  620 + color: #121212;
  621 + }
  622 +
  623 + .desc {
  624 + margin-top: 10px;
  625 + font-size: 12px;
  626 + font-family: PingFangSC-Light, PingFang SC;
  627 + font-weight: 300;
  628 + color: #FF8200;
  629 + }
  630 +
  631 + .input {
  632 + width: 100%;
  633 + height: 73px;
  634 + margin: 30px 0;
  635 + display: flex;
  636 + justify-content: space-between;
  637 + align-items: center;
  638 + }
  639 +
  640 + .btm {
  641 + margin-top: 33px;
  642 + display: flex;
  643 + justify-content: center;
  644 +
  645 + .cancel {
  646 + width: 120px;
  647 + height: 40px;
  648 + background: #F7F7F7;
  649 + border-radius: 20px;
  650 + font-weight: 500;
  651 + color: #646464;
  652 + line-height: 40px;
  653 + text-align: center;
  654 + font-size: 17px;
  655 + }
  656 +
  657 + .confirm {
  658 + width: 120px;
  659 + height: 40px;
  660 + background: #0CB17A;
  661 + border-radius: 20px;
  662 + font-size: 17px;
  663 + font-weight: 600;
  664 + color: #FFFFFF;
  665 + line-height: 40px;
  666 + text-align: center;
  667 + margin-left: 32rpx;
  668 + }
  669 + }
  670 + }
  671 +
556 672 .footer {
557 673 width: 100%;
558 674 height: 96rpx;
... ...
... ... @@ -268,7 +268,7 @@
268 268 <u-cell
269 269 v-if="statistics && statistics.achievementWaitAppraisal && statistics.achievementWaitAppraisal > 0"
270 270 :isLink="true"
271   - url="/pages/main/home/achievementAppraisal/achievementAppraisal?appraisalStatus=no_appraisal"
  271 + url="/pages/main/home/achievementAppraisal/achievementAppraisal?status=wait"
272 272 arrow-direction="right" :rightIconStyle="{fontSize:'24rpx'}" :border="false">
273 273 <view slot="title" class="u-slot-title">
274 274 <view class="u-cell-title">成绩评定</view>
... ...
注册登录 后发表评论