add react-app

main
hcj 3 months ago
parent 2d71c360e9
commit f10d809d14
  1. 3
      .env.development
  2. 4
      .env.production
  3. BIN
      pc_prod.zip
  4. BIN
      pc_test.zip
  5. 521
      public/index.html
  6. 194
      src/api/system/login.js
  7. 26
      src/api/tester/CompanyApply.js
  8. 28
      src/components/myUpload/index.vue
  9. 50
      src/const/dict/commondict.js
  10. 80
      src/page/common/myUpload.vue
  11. 77
      src/page/personalpage/commonheader/personalheader.vue
  12. 103
      src/page/personalpage/course/index.vue
  13. BIN
      src/page/personalpage/home/cloudEmployee.png
  14. BIN
      src/page/personalpage/home/resume.png
  15. 410
      src/page/personalpage/home/resume.vue
  16. 223
      src/page/personalpage/home/stationmessage.vue
  17. 386
      src/page/personalpage/testcrowd/currentcrowd.vue
  18. 770
      src/page/personalpage/testcrowd/myrelease.vue
  19. 26
      src/util/pdfDownLoad.js

@ -5,7 +5,8 @@ ENV = 'development'
VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = '/prod-api'
VUE_APP_BASE_TARGET = 'http://192.168.0.229:9999' # VUE_APP_BASE_TARGET = 'http://192.168.0.229:9999'
VUE_APP_BASE_TARGET = 'http://192.168.0.135:9999'
# VUE_APP_BASE_TARGET = 'http://192.168.0.129:9999' # VUE_APP_BASE_TARGET = 'http://192.168.0.129:9999'
# VUE_APP_BASE_TARGET = 'http://172.16.36.180:9999' # VUE_APP_BASE_TARGET = 'http://172.16.36.180:9999'

@ -9,6 +9,6 @@ VUE_APP_BASE_API = '/prod-api'
# VUE_APP_BASE_TARGET = 'https://www.keyitest.cn/prod-api' # VUE_APP_BASE_TARGET = 'https://www.keyitest.cn/prod-api'
# VUE_APP_BASE_TARGET = 'http://www.bjkeyware.com/test-api' # VUE_APP_BASE_TARGET = 'http://www.bjkeyware.com/test-api'
VUE_APP_BASE_TARGET = 'https://www.bjkeyware.com/prod-api' # VUE_APP_BASE_TARGET = 'https://www.bjkeyware.com/prod-api'
# VUE_APP_BASE_TARGET = 'http://192.168.0.229:9999/prod-api' VUE_APP_BASE_TARGET = 'http://192.168.0.229:9999/prod-api'

Binary file not shown.

Binary file not shown.

@ -1,12 +1,18 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0" />
<meta content="一站式软件测试云平台, 融合软件测试工具市场, 软件测试SaaS平台, 测试任务众包云平台, 软件测试培训学院, 软件测试人员外包平台,以及软件测试行业动态" name="description"> <meta
<meta content="关键测试, lovecode, lovecode.cc, 软件测试, 测试云平台, 测试工具市场, 软件测试SaaS, 测试任务众包, 测试培训, 测试人员外包" name="keywords"> content="一站式软件测试云平台, 融合软件测试工具市场, 软件测试SaaS平台, 测试任务众包云平台, 软件测试培训学院, 软件测试人员外包平台,以及软件测试行业动态"
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> name="description"
/>
<meta
content="关键测试, lovecode, lovecode.cc, 软件测试, 测试云平台, 测试工具市场, 软件测试SaaS, 测试任务众包, 测试培训, 测试人员外包"
name="keywords"
/>
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
<title>小关软测宝</title> <title>小关软测宝</title>
<!-- <script> <!-- <script>
var _hmt = _hmt || []; var _hmt = _hmt || [];
@ -17,234 +23,236 @@
s.parentNode.insertBefore(hm, s); s.parentNode.insertBefore(hm, s);
})(); })();
</script> --> </script> -->
<!-- <script
async
defer
src="http://192.168.0.229:8080/api/application/embed?protocol=http&host=192.168.0.229:8080&token=a8d8ba1001652d4c"
></script> -->
<style> <style>
.closeX { .closeX {
background: #6bc1fa; background: #6bc1fa;
position: fixed; position: fixed;
bottom: 372px; bottom: 372px;
right: 6px; right: 6px;
padding: 0 8px; padding: 0 8px;
box-sizing: border-box; box-sizing: border-box;
color: #ffffff; color: #ffffff;
z-index: 2147483641; z-index: 2147483641;
font-size: 20px; font-size: 20px;
cursor: pointer; cursor: pointer;
display: none; display: none;
}
body{
background-color: #FFFFFF!important;
margin:0;padding:0;
}
#loader-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999999;
}
#loader {
display: block;
position: relative;
left: 50%;
top: 50%;
width: 150px;
height: 150px;
margin: -75px 0 0 -75px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-webkit-animation: spin 2s linear infinite;
-ms-animation: spin 2s linear infinite;
-moz-animation: spin 2s linear infinite;
-o-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
z-index: 1001;
}
#loader:before {
content: "";
position: absolute;
top: 5px;
left: 5px;
right: 5px;
bottom: 5px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-webkit-animation: spin 3s linear infinite;
-moz-animation: spin 3s linear infinite;
-o-animation: spin 3s linear infinite;
-ms-animation: spin 3s linear infinite;
animation: spin 3s linear infinite;
}
#loader:after {
content: "";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-moz-animation: spin 1.5s linear infinite;
-o-animation: spin 1.5s linear infinite;
-ms-animation: spin 1.5s linear infinite;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
} }
100% { body {
-webkit-transform: rotate(360deg); background-color: #ffffff !important;
-ms-transform: rotate(360deg); margin: 0;
transform: rotate(360deg); padding: 0;
}
#loader-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 999999;
} }
}
@keyframes spin { #loader {
0% { display: block;
-webkit-transform: rotate(0deg); position: relative;
-ms-transform: rotate(0deg); left: 50%;
transform: rotate(0deg); top: 50%;
width: 150px;
height: 150px;
margin: -75px 0 0 -75px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #fff;
-webkit-animation: spin 2s linear infinite;
-ms-animation: spin 2s linear infinite;
-moz-animation: spin 2s linear infinite;
-o-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
z-index: 1001;
} }
100% {
-webkit-transform: rotate(360deg); #loader:before {
-ms-transform: rotate(360deg); content: '';
transform: rotate(360deg); position: absolute;
top: 5px;
left: 5px;
right: 5px;
bottom: 5px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #fff;
-webkit-animation: spin 3s linear infinite;
-moz-animation: spin 3s linear infinite;
-o-animation: spin 3s linear infinite;
-ms-animation: spin 3s linear infinite;
animation: spin 3s linear infinite;
} }
}
#loader:after {
content: '';
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #fff;
-moz-animation: spin 1.5s linear infinite;
-o-animation: spin 1.5s linear infinite;
-ms-animation: spin 1.5s linear infinite;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
}
#loader-wrapper .loader-section { @-webkit-keyframes spin {
position: fixed; 0% {
top: 0; -webkit-transform: rotate(0deg);
width: 51%; -ms-transform: rotate(0deg);
height: 100%; transform: rotate(0deg);
background: #7171C6; }
z-index: 1000; 100% {
-webkit-transform: translateX(0); -webkit-transform: rotate(360deg);
-ms-transform: translateX(0); -ms-transform: rotate(360deg);
transform: translateX(0); transform: rotate(360deg);
} }
}
#loader-wrapper .loader-section.section-left { @keyframes spin {
left: 0; 0% {
} -webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
}
#loader-wrapper .loader-section.section-right { #loader-wrapper .loader-section {
right: 0; position: fixed;
} top: 0;
width: 51%;
height: 100%;
background: #7171c6;
z-index: 1000;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
#loader-wrapper .loader-section.section-left {
left: 0;
}
.loaded #loader-wrapper .loader-section.section-left { #loader-wrapper .loader-section.section-right {
-webkit-transform: translateX(-100%); right: 0;
-ms-transform: translateX(-100%); }
transform: translateX(-100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.loaded #loader-wrapper .loader-section.section-right { .loaded #loader-wrapper .loader-section.section-left {
-webkit-transform: translateX(100%); -webkit-transform: translateX(-100%);
-ms-transform: translateX(100%); -ms-transform: translateX(-100%);
transform: translateX(100%); transform: translateX(-100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
} }
.loaded #loader { .loaded #loader-wrapper .loader-section.section-right {
opacity: 0; -webkit-transform: translateX(100%);
-webkit-transition: all 0.3s ease-out; -ms-transform: translateX(100%);
transition: all 0.3s ease-out; transform: translateX(100%);
} -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
}
.loaded #loader-wrapper { .loaded #loader {
visibility: hidden; opacity: 0;
-webkit-transform: translateY(-100%); -webkit-transition: all 0.3s ease-out;
-ms-transform: translateY(-100%); transition: all 0.3s ease-out;
transform: translateY(-100%); }
-webkit-transition: all 0.3s 1s ease-out;
transition: all 0.3s 1s ease-out;
}
.no-js #loader-wrapper { .loaded #loader-wrapper {
display: none; visibility: hidden;
} -webkit-transform: translateY(-100%);
-ms-transform: translateY(-100%);
transform: translateY(-100%);
-webkit-transition: all 0.3s 1s ease-out;
transition: all 0.3s 1s ease-out;
}
.no-js h1 { .no-js #loader-wrapper {
color: #222222; display: none;
} }
#loader-wrapper .load_title { .no-js h1 {
font-family: 'Open Sans'; color: #222222;
color: #FFF; }
font-size: 19px;
width: 100%;
text-align: center;
z-index: 9999999999999;
position: absolute;
top: 60%;
opacity: 1;
line-height: 30px;
}
#loader-wrapper .load_title span { #loader-wrapper .load_title {
font-weight: normal; font-family: 'Open Sans';
font-style: italic; color: #fff;
font-size: 13px; font-size: 19px;
color: #FFF; width: 100%;
opacity: 0.5; text-align: center;
} z-index: 9999999999999;
position: absolute;
top: 60%;
opacity: 1;
line-height: 30px;
}
::-webkit-scrollbar { #loader-wrapper .load_title span {
font-weight: normal;
font-style: italic;
font-size: 13px;
color: #fff;
opacity: 0.5;
}
::-webkit-scrollbar {
width: 10px; width: 10px;
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
--webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); --webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
border-radius: 10px; border-radius: 10px;
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
border-radius: 5px; border-radius: 5px;
background: #dddee0; background: #dddee0;
--webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5); --webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
} }
/* ::-webkit-scrollbar-thumb:window-inactive { /* ::-webkit-scrollbar-thumb:window-inactive {
background: rgba(255,0,0,0.4); background: rgba(255,0,0,0.4);
} */ } */
</style> </style>
<script> <script>
var _hmt = _hmt || []; var _hmt = _hmt || []
(function() { ;(function () {
var hm = document.createElement("script"); var hm = document.createElement('script')
hm.src = "https://hm.baidu.com/hm.js?30b6456829dfaf92770afef5b2f7feb2"; hm.src = 'https://hm.baidu.com/hm.js?30b6456829dfaf92770afef5b2f7feb2'
var s = document.getElementsByTagName("script")[0]; var s = document.getElementsByTagName('script')[0]
s.parentNode.insertBefore(hm, s); s.parentNode.insertBefore(hm, s)
})(); })()
</script> </script>
</head> </head>
<body> <body>
<noscript> <noscript>
<strong>We're sorry but art doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> <strong
>We're sorry but art doesn't work properly without JavaScript enabled. Please enable it to continue.</strong
>
</noscript> </noscript>
<div id="app"> <div id="app">
<!--循环引入 --> <!--循环引入 -->
<!-- <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %> <!-- <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>" crossorigin="anonymous"></script> <script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>" crossorigin="anonymous"></script>
<% } %> <% } %>
<div id="loader-wrapper"> <div id="loader-wrapper">
@ -255,87 +263,94 @@
</div> --> </div> -->
</div> </div>
<!-- <button type="button" class="btn btn-primary">返回首页</button> --> <!-- <button type="button" class="btn btn-primary">返回首页</button> -->
<div class="closeX"> <div class="closeX">x</div>
x
</div>
</body> </body>
<script> <script>
function browserVersion() { function browserVersion() {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var userAgent = navigator.userAgent //取得浏览器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器 var isIE = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1 //判断是否IE<11浏览器
var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1; var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf('rv:11.0') > -1
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //Edge浏览器 var isEdge = userAgent.indexOf('Edge') > -1 && !isIE //Edge浏览器
var isFirefox = userAgent.indexOf("Firefox") > -1; //Firefox浏览器 var isFirefox = userAgent.indexOf('Firefox') > -1 //Firefox浏览器
var isOpera = userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1; //Opera浏览器 var isOpera = userAgent.indexOf('Opera') > -1 || userAgent.indexOf('OPR') > -1 //Opera浏览器
var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Edge") == -1 && userAgent.indexOf("OPR") == -1; //Chrome浏览器 var isChrome =
var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1 && userAgent.indexOf("Edge") == -1 && userAgent.indexOf("OPR") == -1; //Safari浏览器 userAgent.indexOf('Chrome') > -1 &&
userAgent.indexOf('Safari') > -1 &&
userAgent.indexOf('Edge') == -1 &&
userAgent.indexOf('OPR') == -1 //Chrome浏览器
var isSafari =
userAgent.indexOf('Safari') > -1 &&
userAgent.indexOf('Chrome') == -1 &&
userAgent.indexOf('Edge') == -1 &&
userAgent.indexOf('OPR') == -1 //Safari浏览器
if (isIE) { if (isIE) {
var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); var reIE = new RegExp('MSIE (\\d+\\.\\d+);')
reIE.test(userAgent); reIE.test(userAgent)
var fIEVersion = parseFloat(RegExp["$1"]); var fIEVersion = parseFloat(RegExp['$1'])
if (fIEVersion == 7) { if (fIEVersion == 7) {
return 'IE:7'; return 'IE:7'
} else if (fIEVersion == 8) { } else if (fIEVersion == 8) {
return 'IE:8'; return 'IE:8'
} else if (fIEVersion == 9) { } else if (fIEVersion == 9) {
return 'IE:9'; return 'IE:9'
} else if (fIEVersion == 10) { } else if (fIEVersion == 10) {
return 'IE:10'; return 'IE:10'
} else { } else {
return 'IE:6'; //IE版本<7 return 'IE:6' //IE版本<7
} }
} else if (isIE11) { } else if (isIE11) {
return 'IE:11'; return 'IE:11'
} else if (isEdge) { } else if (isEdge) {
return 'Edge:' + userAgent.split('Edge/')[1].split('.')[0]; return 'Edge:' + userAgent.split('Edge/')[1].split('.')[0]
} else if (isFirefox) { } else if (isFirefox) {
return 'Firefox:' + userAgent.split('Firefox/')[1].split('.')[0]; return 'Firefox:' + userAgent.split('Firefox/')[1].split('.')[0]
} else if (isOpera) { } else if (isOpera) {
return 'Opera:' + userAgent.split('OPR/')[1].split('.')[0]; return 'Opera:' + userAgent.split('OPR/')[1].split('.')[0]
} else if (isChrome) { } else if (isChrome) {
return 'Chrome:' + userAgent.split('Chrome/')[1].split('.')[0]; return 'Chrome:' + userAgent.split('Chrome/')[1].split('.')[0]
} else if (isSafari) { } else if (isSafari) {
return 'Safari:' + userAgent.split('Version/')[1].split('.')[0]; return 'Safari:' + userAgent.split('Version/')[1].split('.')[0]
} else { } else {
return -1; //不是ie浏览器 return -1 //不是ie浏览器
} }
} }
(function () { ;(function () {
var limitObj = { var limitObj = {
'IE': 20, IE: 20,
'Edge': 12, Edge: 12,
'Firefox': 52, Firefox: 52,
'Opera': 42, Opera: 42,
'Chrome': 56, Chrome: 56,
'Safari': 11 Safari: 11
} }
var browserVersionStr = browserVersion().split(':'); var browserVersionStr = browserVersion().split(':')
var name = browserVersionStr[0]; var name = browserVersionStr[0]
var version = browserVersionStr[1]; var version = browserVersionStr[1]
if (!limitObj[name] || limitObj[name] && version < limitObj[name]) { if (!limitObj[name] || (limitObj[name] && version < limitObj[name])) {
// position: absolute; // position: absolute;
var div1 = "<div style=' z-index: 999; width: 100%;'>"; var div1 = "<div style=' z-index: 999; width: 100%;'>"
var div2 = "<div style='width: 100%; background-color: #021826;margin:10vh 0'/></div>" var div2 = "<div style='width: 100%; background-color: #021826;margin:10vh 0'/></div>"
var div3 = "<div style='background:#002B33;width:80vw;height:80vh; margin-left: auto; margin-right: auto; text-align: center;padding:0 30px;'>" var div3 =
"<div style='background:#002B33;width:80vw;height:80vh; margin-left: auto; margin-right: auto; text-align: center;padding:0 30px;'>"
var p0 = "<p style='padding:100px; opacity:1; filter:Alpha(opacity=100); *zoom:1;'><img src='/err.gif'/></p>" var p0 = "<p style='padding:100px; opacity:1; filter:Alpha(opacity=100); *zoom:1;'><img src='/err.gif'/></p>"
var p = "<p style='color: #fff; font-size: 26px;text-align:center; margin-left: auto; margin-right: auto; line-height: 36px;'>" var p =
var str1 = "您的IE浏览器已正式退役,微软官已不再维护。<br>"; "<p style='color: #fff; font-size: 26px;text-align:center; margin-left: auto; margin-right: auto; line-height: 36px;'>"
var str2 = "推荐使用:<a href='https://www.baidu.com/s?ie=UTF-8&wd=%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color: #FF9912; text-decoration: none;'>谷歌</a>," + var str1 = '您的IE浏览器已正式退役,微软官已不再维护。<br>'
var str2 =
"推荐使用:<a href='https://www.baidu.com/s?ie=UTF-8&wd=%E8%B0%B7%E6%AD%8C%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color: #FF9912; text-decoration: none;'>谷歌</a>," +
"<a href='https://www.baidu.com/s?ie=UTF-8&wd=%E7%81%AB%E7%8B%90%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color: #FF9912; text-decoration: none;'>火狐</a>," + "<a href='https://www.baidu.com/s?ie=UTF-8&wd=%E7%81%AB%E7%8B%90%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color: #FF9912; text-decoration: none;'>火狐</a>," +
"<a href='https://www.baidu.com/s?ie=UTF-8&wd=360%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color: #FF9912; text-decoration: none;'>360浏览器</a>," + "<a href='https://www.baidu.com/s?ie=UTF-8&wd=360%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color: #FF9912; text-decoration: none;'>360浏览器</a>," +
"<a href='https://www.baidu.com/s?ie=UTF-8&wd=Edge%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color: #FF9912; text-decoration: none;'>Edge浏览器</a>," + "<a href='https://www.baidu.com/s?ie=UTF-8&wd=Edge%E6%B5%8F%E8%A7%88%E5%99%A8' target='_blank' style='color: #FF9912; text-decoration: none;'>Edge浏览器</a>," +
"及其它双核浏览器极速模式"; '及其它双核浏览器极速模式'
var div5 = "<div style='position: absolute; z-index: 998; background: #021826; width: 100%;opacity:0.65; filter:Alpha(opacity=60); *zoom:1;'></div>" var div5 =
document.writeln(div1 + div2+ div3 + p0 + p + str1 + str2 +"</p></div></div>" + div5); "<div style='position: absolute; z-index: 998; background: #021826; width: 100%;opacity:0.65; filter:Alpha(opacity=60); *zoom:1;'></div>"
document.execCommand("Stop"); document.writeln(div1 + div2 + div3 + p0 + p + str1 + str2 + '</p></div></div>' + div5)
}; document.execCommand('Stop')
}()); }
})()
</script> </script>
<!-- 客服脚本 --> <!-- 客服脚本 -->
<script src='https://w102.ttkefu.com/k/?fid=6F5CCH6' charset=utf-8></script> <script src="https://w102.ttkefu.com/k/?fid=6F5CCH6" charset="utf-8"></script>
<script src="/assets/close.js"></script> <script src="/assets/close.js"></script>
</html> </html>

@ -1,103 +1,105 @@
import request from "../request"; import request from '../request'
// 账户登录方法 // 账户登录方法
export function login(username, password, code, uuid) { export function login(username, password, code, uuid) {
const data = { const data = {
username, username,
password, password,
code, code,
uuid uuid
}
return request({
url: '/login',
method: 'post',
data: data
})
} }
return request({
// 账户不需要验证码登录方法 url: '/login',
export function nameLogin(username, password) { method: 'post',
const data = { data: data
username, })
password, }
}
return request({ // 账户不需要验证码登录方法
url: '/nameLogin', export function nameLogin(username, password) {
method: 'post', const data = {
data: data username,
}) password
} }
return request({
// 手机登录方法 url: '/nameLogin',
export function phoneLogin(mobile, code, uuid) { method: 'post',
const data = { data: data,
mobile, headers: {
code, isToken: false
uuid
} }
return request({ })
url: '/phoneLogin', }
method: 'post',
data: data // 手机登录方法
}) export function phoneLogin(mobile, code, uuid) {
} const data = {
mobile,
// 获取用户详细信息 code,
export function getInfo() { uuid
return request({
url: '/getInfo',
method: 'get'
})
}
// 退出方法
export function logout() {
return request({
url: '/logout',
method: 'post'
})
}
// 获取验证码
export function getCodeImg() {
return request({
url: '/captchaImage',
method: 'get'
})
}
// 获取前台用户注册短信验证码
export function getCodeUserRegister(phoneNumber) {
return request({
url: '/captchaUserRegister?phoneNumber=' + phoneNumber,
method: 'get'
})
}
// 获取前台用户注册登录验证码
export function getCodeUserLogin(phoneNumber) {
return request({
headers: {
isToken: false
},
url: '/captchaUserLogin?phoneNumber=' + phoneNumber,
method: 'get'
})
}
// 获取前台用户修改密码短信验证码
export function getCodeChangePasswd(phoneNumber) {
return request({
url: '/captchaChangePasswd?phoneNumber=' + phoneNumber,
method: 'get'
})
} }
//设置交易密码 return request({
export function scatpasswd(userId,data) { url: '/phoneLogin',
return request({ method: 'post',
url: `/mpay/setpasswd/${userId}`, data: data
method: 'post', })
data: data }
})
} // 获取用户详细信息
export function getInfo() {
return request({
url: '/getInfo',
method: 'get'
})
}
// 退出方法
export function logout() {
return request({
url: '/logout',
method: 'post'
})
}
// 获取验证码
export function getCodeImg() {
return request({
url: '/captchaImage',
method: 'get'
})
}
// 获取前台用户注册短信验证码
export function getCodeUserRegister(phoneNumber) {
return request({
url: '/captchaUserRegister?phoneNumber=' + phoneNumber,
method: 'get'
})
}
// 获取前台用户注册登录验证码
export function getCodeUserLogin(phoneNumber) {
return request({
headers: {
isToken: false
},
url: '/captchaUserLogin?phoneNumber=' + phoneNumber,
method: 'get'
})
}
// 获取前台用户修改密码短信验证码
export function getCodeChangePasswd(phoneNumber) {
return request({
url: '/captchaChangePasswd?phoneNumber=' + phoneNumber,
method: 'get'
})
}
//设置交易密码
export function scatpasswd(userId, data) {
return request({
url: `/mpay/setpasswd/${userId}`,
method: 'post',
data: data
})
}

@ -86,9 +86,9 @@ export function gettesterId(userID) {
}) })
} }
// 查询竞争者信息 // 查询竞争者信息
export function getdetesterId(userID,taskId) { export function getdetesterId(userID, taskId) {
return request({ return request({
url: '/crowdsource/tester/detail/' + userID +'/'+taskId, url: '/crowdsource/tester/detail/' + userID + '/' + taskId,
method: 'get' method: 'get'
}) })
} }
@ -153,3 +153,25 @@ export function skilldis() {
} }
}) })
} }
// 简历附件上传
export function attachmentResume(data) {
return request({
url: '/tester/cert/admin/uploadResume/upload',
method: 'post',
data
})
}
export function getResume(id) {
return request({
url: '/tester/cert/admin/getResume/' + id,
method: 'get'
})
}
// 简历删除
export function deleteResume(id) {
return request({
url: '/tester/cert/admin/deleteResume/' + id,
method: 'delete'
})
}

@ -15,6 +15,13 @@ export default {
name: '' name: ''
}; };
}, },
props: {
fileType: Array,
reciveFile: {
default: false,
type: Boolean
}
},
computed: { computed: {
...mapGetters(['token']), ...mapGetters(['token']),
headers() { headers() {
@ -35,17 +42,28 @@ export default {
// return this.$confirm(` ${file.name}`); // return this.$confirm(` ${file.name}`);
}, },
successUpload(response) { successUpload(response) {
console.log(response); if (this.reciveFile) {
return
}
this.$emit('upload', response, this.name) this.$emit('upload', response, this.name)
}, },
beforeAvatarUpload(file, fileList) { beforeAvatarUpload(file, fileList) {
this.name = file.name this.name = file.name
const filetype = file.name.slice(file.name.lastIndexOf('.', file.name.length)) const filetype = file.name.slice(file.name.lastIndexOf('.', file.name.length))
console.log(filetype); let typeArr
const isType = ['.doc', '.docx','.pdf'].some(item => { return item == filetype }) if (this.fileType) {
console.log(isType); typeArr = this.fileType
} else {
typeArr = ['.doc', '.docx', '.pdf']
}
const isType = typeArr.some(item => { return item == filetype })
if (!isType) { if (!isType) {
this.$message.error('只能上传doc、docx、pdf格式文件!'); this.$message.error(`只能上传${typeArr.toString()}格式文件!`);
return false
}
if (this.reciveFile) {
this.$emit('upload', file, this.name)
return false return false
} }
} }

@ -1,35 +1,35 @@
//竞标者要求 //竞标者要求
export const applicantlist = [ export const applicantlist = [
{label: '个人测试者', value: '0'}, { label: '个人测试者', value: '0' },
{label: '认证测试公司', value: '1'}, { label: '认证测试公司', value: '1' },
{label: '个人测试者/认证测试公司', value: '2'}, { label: '个人测试者/认证测试公司', value: '2' }
]; ]
//驻场要求 //驻场要求
export const onsiteTypelist = [ export const onsiteTypelist = [
{label: '无需驻场', value: '0'}, { label: '无需驻场', value: '0' },
{label: '偶尔驻场', value: '1'}, { label: '偶尔驻场', value: '1' },
{label: '定期驻场', value: '2'}, { label: '定期驻场', value: '2' }
]; ]
//任务状态 //任务状态
export const processStatuslist =[ export const processStatuslist = [
{label: '竞标中', value:0}, { label: '竞标中', value: 0 },
{label: '实施中', value: 1}, { label: '实施中', value: 1 },
{label: '验收中', value: 2}, { label: '验收中', value: 2 },
// 发布者 已验收代付款 3 4 都是确认完成的3变为4 3变成了一个待付款 待付款任务列表后的操作加一个确认付款的功能 // 发布者 已验收代付款 3 4 都是确认完成的3变为4 3变成了一个待付款 待付款任务列表后的操作加一个确认付款的功能
// 竞标者 待付款 3 确认完成4 // 竞标者 待付款 3 确认完成4
// {label: '确认完成', value:3}, // {label: '确认完成', value:3},
{label: '待付款', value:3}, { label: '待付款', value: 3 },
{label: '已完成', value:4}, { label: '已完成', value: 4 },
// {label: '没有应竞标者,过期下架', value:4}, { label: '没有应竞标者,过期下架', value: 4 },
// {label: '未指定竞标人,过期下架', value:5}, { label: '未指定竞标人,过期下架', value: 5 },
// {label: '未上传结果,过期下架', value:6}, { label: '未上传结果,过期下架', value: 6 },
// {label: '未确认实施结果,过期下架', value:7}, { label: '未确认实施结果,过期下架', value: 7 },
{label: '实施结果不合格', value:8}, { label: '实施结果不合格', value: 8 }
] ]
// 培训班ID // 培训班ID
export const trainClassIdMap = { export const trainClassIdMap = {
'0':'校企合作班', 0: '校企合作班',
'1':'线下培训进阶班', 1: '线下培训进阶班',
'2':'可靠性人才培训班', 2: '可靠性人才培训班',
'3':'师资培训班' 3: '师资培训班'
} }

@ -1,30 +1,12 @@
<template> <template>
<div class="uploadpic"> <div class="uploadpic">
<el-upload <el-upload ref="upload" :action="imgAction" :headers="headers" :file-list="fileList"
ref="upload" :before-upload="imgBeforeUpload" :list-type="listtype" :on-preview="handlePreview" :limit="limit"
:action="imgAction" :class="objClass" :auto-upload="true" :on-remove="handelDelete" :on-error="handleError"
:headers="headers" :on-success="handleSuccess" :on-exceed="handleExceed" multiple>
:file-list="fileList" <template v-if="fileName == '步骤照片' || fileName == '文档' || fileName == '附件上传' || fileName == '附件简历'">
:before-upload="imgBeforeUpload" <el-button size="small" type="primary">{{ fileName == '附件简历' ? '上传附件简历' : '点击上传' }}</el-button>
:list-type="listtype" <span slot="tip" class="el-upload__tip" style="margin-left:10px">最多上传{{ limit }}个文件</span>
:on-preview="handlePreview"
:limit="limit"
:class="objClass"
:auto-upload="true"
:on-remove="handelDelete"
:on-error="handleError"
:on-success="handleSuccess"
:on-exceed="handleExceed"
multiple
>
<template v-if="fileName == '步骤照片' || fileName == '文档' || fileName == '附件上传'">
<el-button
size="small"
type="primary"
>点击上传</el-button
>
<span slot="tip" class="el-upload__tip" style="margin-left:10px">最多上传{{limit}}个文件</span>
</template> </template>
<!-- <el-button v-if="fileName=='步骤照片' || fileName=='文档'" size="small" type="primary">导入模板</el-button> --> <!-- <el-button v-if="fileName=='步骤照片' || fileName=='文档'" size="small" type="primary">导入模板</el-button> -->
@ -39,11 +21,7 @@
<div v-if="imageVisible && fileName != '文档'"> <div v-if="imageVisible && fileName != '文档'">
<div v-if="fileName != '附件上传'"> <div v-if="fileName != '附件上传'">
<el-image-viewer <el-image-viewer :on-close="closeViewer" :url-list="[dialogImageUrl]" z-index="5000" />
:on-close="closeViewer"
:url-list="[dialogImageUrl]"
z-index="5000"
/>
</div> </div>
</div> </div>
</div> </div>
@ -102,9 +80,9 @@ export default {
return { Authorization: 'Bearer ' + this.token } return { Authorization: 'Bearer ' + this.token }
}, },
}, },
created() {}, created() { },
mounted() {}, mounted() { },
methods: { methods: {
// //
@ -150,7 +128,7 @@ export default {
// //
const fileExtension = file.name.slice(lastIndex + 1).toLowerCase(); const fileExtension = file.name.slice(lastIndex + 1).toLowerCase();
// //
const flag = this.fileType.includes(fileExtension); const flag = this.fileType.includes(fileExtension);
if (!flag) { if (!flag) {
this.$message.warning(`请上传${this.fileType.join('/')}格式文件!`) this.$message.warning(`请上传${this.fileType.join('/')}格式文件!`)
return false return false
@ -170,6 +148,7 @@ export default {
}, },
// //
handlePreview(file) { handlePreview(file) {
if (this.fileName == '附件简历') { return }
this.imageVisible = true this.imageVisible = true
this.dialogImageUrl = file.url this.dialogImageUrl = file.url
}, },
@ -240,27 +219,33 @@ export default {
</script> </script>
<style scoped> <style scoped>
.uploadpic >>> .el-upload--picture-card { .uploadpic>>>.el-upload--picture-card {
background-color: transparent; background-color: transparent;
border: 1px dashed #34b2ed; border: 1px dashed #34b2ed;
} }
.uploadpic >>> .el-upload--picture-card i {
.uploadpic>>>.el-upload--picture-card i {
color: #34b2ed; color: #34b2ed;
} }
.el-upload__tip { .el-upload__tip {
/* color: #34b2ed; */ /* color: #34b2ed; */
} }
.uploadpic >>> .el-upload-list__item-name {
.uploadpic>>>.el-upload-list__item-name {
color: #34b2ed; color: #34b2ed;
/* width:135px; */ /* width:135px; */
/* width: 80px; */ /* width: 80px; */
} }
.uploadpic >>> .el-upload-list {
.uploadpic>>>.el-upload-list {
/* width: 200px; */ /* width: 200px; */
width: 300px; width: 300px;
margin: 0 auto;
/* margin-left:20px; */ /* margin-left:20px; */
} }
.uploadpic >>> .el-button {
.uploadpic>>>.el-button {
background: #0066eb; background: #0066eb;
color: #ffffff; color: #ffffff;
/* width:40px; */ /* width:40px; */
@ -271,6 +256,7 @@ export default {
border-radius: 3px; border-radius: 3px;
border: 1px solid transparent; border: 1px solid transparent;
} }
.picetucard { .picetucard {
border: 1px dashed #34b2ed; border: 1px dashed #34b2ed;
width: 148px; width: 148px;
@ -279,40 +265,46 @@ export default {
text-align: center; text-align: center;
border-radius: 6px; border-radius: 6px;
} }
.picetucard i { .picetucard i {
color: #34b2ed; color: #34b2ed;
width: 28px; width: 28px;
height: 28px; height: 28px;
} }
.uploadpic >>> .el-upload-list__item-name [class^='el-icon'] {
.uploadpic>>>.el-upload-list__item-name [class^='el-icon'] {
color: #34b2ed; color: #34b2ed;
} }
/*当upLoadShow为true时,启用如下样式,即上传框的样式,若为false则不启用该样式*/ /*当upLoadShow为true时,启用如下样式,即上传框的样式,若为false则不启用该样式*/
.uploadpic >>> .upLoadShow .el-upload { .uploadpic>>>.upLoadShow .el-upload {
/* width: 148px; /* width: 148px;
height: 148px; height: 148px;
line-height: 146px; */ line-height: 146px; */
} }
/*当upLoadHide为true时,启用如下样式,即缩略图的样式,若为false则不启用该样式*/ /*当upLoadHide为true时,启用如下样式,即缩略图的样式,若为false则不启用该样式*/
.uploadpic >>> .upLoadHide .el-upload-list--picture-card .el-upload-list__item { .uploadpic>>>.upLoadHide .el-upload-list--picture-card .el-upload-list__item {
width: 148px; width: 148px;
height: 148px; height: 148px;
line-height: 146px; line-height: 146px;
} }
/*当upLoadHide为true时,启用如下样式,即上传框的样式,若为false则不启用该样式*/ /*当upLoadHide为true时,启用如下样式,即上传框的样式,若为false则不启用该样式*/
.uploadpic >>> .upLoadHide .el-upload { .uploadpic>>>.upLoadHide .el-upload {
display: none; display: none;
} }
.uploadpic >>> .wendangHide .el-upload { .uploadpic>>>.wendangHide .el-upload {
width: 148px; width: 148px;
height: 33px; height: 33px;
line-height: 33px; line-height: 33px;
} }
.uploadpic >>> .el-progress__text {
.uploadpic>>>.el-progress__text {
color: #67c23a; color: #67c23a;
} }
/* .uploadpic>>>.el-upload .el-upload--text{ /* .uploadpic>>>.el-upload .el-upload--text{
height: 50px; height: 50px;
line-height: 1px; line-height: 1px;

@ -1,15 +1,13 @@
<template> <template>
<div class="bgback"> <div class="bgback">
<div class="headbg"> <div class="headbg">
<div <div style="
style="
margin: 10px 50px 10px 10px; margin: 10px 50px 10px 10px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
height: 50px; height: 50px;
align-items: center; align-items: center;
" ">
>
<div style="width: 430px; display: flex; justify-content: space-between; align-items: center"> <div style="width: 430px; display: flex; justify-content: space-between; align-items: center">
<!-- <img @click="tishou" style="cursor:pointer;height:45px;object-fit:contain" src="/assets/loginreg/logo.png" alt=""> --> <!-- <img @click="tishou" style="cursor:pointer;height:45px;object-fit:contain" src="/assets/loginreg/logo.png" alt=""> -->
<p @click="tishou" style="font-weight: bold; color: #262626; cursor: pointer; font-size: 20px"> <p @click="tishou" style="font-weight: bold; color: #262626; cursor: pointer; font-size: 20px">
@ -21,18 +19,10 @@
<el-radio-button :label="true">收起</el-radio-button> <el-radio-button :label="true">收起</el-radio-button>
</el-radio-group> --> </el-radio-group> -->
<!-- <p @click='opencollapse' style="cursor:pointer" >展开收齐</p> --> <!-- <p @click='opencollapse' style="cursor:pointer" >展开收齐</p> -->
<svg <svg @click="opencollapse" :class="{ 'is-active': isCollapse }" class="hamburger"
@click="opencollapse" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="64" height="64">
:class="{ 'is-active': isCollapse }"
class="hamburger"
viewBox="0 0 1024 1024"
xmlns="http://www.w3.org/2000/svg"
width="64"
height="64"
>
<path <path
d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z" d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z" />
/>
</svg> </svg>
<el-breadcrumb separator="/" style="width: 180px"> <el-breadcrumb separator="/" style="width: 180px">
<el-breadcrumb-item v-for="(item, key) of breadcrumblist" :key="key">{{ <el-breadcrumb-item v-for="(item, key) of breadcrumblist" :key="key">{{
@ -44,35 +34,24 @@
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div style="display: flex; justify-content: space-between; align-items: center; font-size: 14px"> <div style="display: flex; justify-content: space-between; align-items: center; font-size: 14px">
<div class="permissions" @click="mypermissions('message')"> <div class="permissions" @click="mypermissions('message')">
<el-badge <el-badge :value="messageCount" :max="100" :hidden="messageCount == 0"
:value="messageCount" :class="messageCount > 0 ? 'baggeitem' : 'baggeitemda'">
:max="100"
:hidden="messageCount == 0"
:class="messageCount > 0 ? 'baggeitem' : 'baggeitemda'"
>
<img style="margin-right: 5px" src="/assets/home/xiaoxi.png" alt="" /> <img style="margin-right: 5px" src="/assets/home/xiaoxi.png" alt="" />
</el-badge> </el-badge>
<p style="margin-left: 5px">站内消息</p> <p style="margin-left: 5px">站内消息</p>
</div> </div>
<el-dropdown <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"
class="avatar-container right-menu-item hover-effect" placement="bottom">
trigger="click"
placement="bottom"
>
<div class="avatar-wrapper"> <div class="avatar-wrapper">
<img <img style="
style="
width: 54px; width: 54px;
height: 54px; height: 54px;
margin: 13px 0 5px 0px; margin: 13px 0 5px 0px;
cursor: pointer; cursor: pointer;
border-radius: 50%; border-radius: 50%;
" " :src="userinform.avatar" alt="" />
:src="userinform.avatar"
alt=""
/>
<!-- <i style="margin-bottom:10px" class="el-icon-caret-bottom"/> --> <!-- <i style="margin-bottom:10px" class="el-icon-caret-bottom"/> -->
</div> </div>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
@ -87,15 +66,8 @@
</div> </div>
<div style="display: flex; justify-content: space-between"> <div style="display: flex; justify-content: space-between">
<div style="width: 225px; position: fixed; margin-top: 70px"> <div style="width: 225px; position: fixed; margin-top: 70px">
<el-menu <el-menu :default-active="currentactive" class="el-menu-vertical-demo" :collapse="isCollapse" router
:default-active="currentactive" unique-opened text-color="#000000" active-text-color="#0066EB">
class="el-menu-vertical-demo"
:collapse="isCollapse"
router
unique-opened
text-color="#000000"
active-text-color="#0066EB"
>
<!-- 企业用户--新菜单 --> <!-- 企业用户--新菜单 -->
<template v-if="userinform.companyStatus == 2"> <template v-if="userinform.companyStatus == 2">
<el-submenu index="7"> <el-submenu index="7">
@ -160,7 +132,7 @@
<i class="el-icon-tickets"></i> <i class="el-icon-tickets"></i>
<span slot="title">我收到的评价</span> <span slot="title">我收到的评价</span>
</el-menu-item> </el-menu-item>
</template> </template>
<template v-else> <template v-else>
<el-submenu index="7"> <el-submenu index="7">
@ -169,7 +141,8 @@
<span slot="title">个人中心</span> <span slot="title">个人中心</span>
</template> </template>
<el-menu-item-group> <el-menu-item-group>
<el-menu-item index="/console/resume" v-if="userinform.testerStatus == 2"> <!-- // v-if="userinform.testerStatus == 2" -->
<el-menu-item index="/console/resume">
<span>个人简历</span> <span>个人简历</span>
</el-menu-item> </el-menu-item>
<el-menu-item index="/console/profile"> <el-menu-item index="/console/profile">
@ -222,7 +195,7 @@
<i class="el-icon-s-order"></i> <i class="el-icon-s-order"></i>
<span>我的订单</span> <span>我的订单</span>
</el-menu-item> </el-menu-item>
</template> </template>
</el-menu> </el-menu>
</div> </div>
@ -343,7 +316,7 @@ export default {
.then(() => { .then(() => {
this.$router.push('/login?type=log') this.$router.push('/login?type=log')
}) })
.catch(() => {}) .catch(() => { })
} else { } else {
if (type == 'message') { if (type == 'message') {
this.$router.push('/console/message') this.$router.push('/console/message')
@ -387,6 +360,7 @@ export default {
width: 100vw; width: 100vw;
height: 100vh; height: 100vh;
} }
.headbg { .headbg {
/* width:1200px; /* width:1200px;
margin:0 auto; */ margin:0 auto; */
@ -401,6 +375,7 @@ export default {
background-color: #ffffff; background-color: #ffffff;
box-shadow: 0px 1px 8px 0px rgba(0, 0, 0, 0.11); box-shadow: 0px 1px 8px 0px rgba(0, 0, 0, 0.11);
} }
.permissions { .permissions {
display: flex; display: flex;
align-items: center; align-items: center;
@ -408,44 +383,54 @@ export default {
margin-right: 20px; margin-right: 20px;
cursor: pointer; cursor: pointer;
} }
.avatar-wrapper img:hover { .avatar-wrapper img:hover {
opacity: 0.5; opacity: 0.5;
/* transition: 0.3s; */ /* transition: 0.3s; */
} }
.el-menu-vertical-demo:not(.el-menu--collapse) { .el-menu-vertical-demo:not(.el-menu--collapse) {
width: 100%; width: 100%;
min-height: 400px; min-height: 400px;
height: 95vh; height: 95vh;
} }
.hamburger { .hamburger {
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
width: 20px; width: 20px;
height: 20px; height: 20px;
} }
.hamburger.is-active { .hamburger.is-active {
transform: rotate(180deg); transform: rotate(180deg);
} }
.el-menu--collapse { .el-menu--collapse {
height: 92vh; height: 92vh;
} }
.content-wrapper { .content-wrapper {
padding: 100px 20px 0 249px; padding: 100px 20px 0 249px;
box-sizing: border-box; box-sizing: border-box;
width: 100vw; width: 100vw;
/* background:#666666!important */ /* background:#666666!important */
} }
.baggeitem { .baggeitem {
margin-top: 5px; margin-top: 5px;
margin-right: 15px; margin-right: 15px;
} }
.baggeitemda { .baggeitemda {
margin-top: 5px; margin-top: 5px;
/* margin-right:10px; */ /* margin-right:10px; */
} }
.el-dropdown-menu__item { .el-dropdown-menu__item {
padding: 0 20px !important; padding: 0 20px !important;
} }
.el-dropdown-menu { .el-dropdown-menu {
top: 56px !important; top: 56px !important;
} }

@ -15,10 +15,14 @@
</div> </div>
<div class="courseTime"> <div class="courseTime">
<div>上课时间: {{ course.courseTime }}</div> <div>上课时间: {{ course.courseTime }}</div>
<div class="sourceWrap" v-if="course.attachments.length">
<div v-for="(item, index) in course.attachments" :key="index"> <div class="sourceWrap" v-show="course.content">
<div @click="download(item)">{{ item.fileName }}</div> <div class="sourceWrap" v-if="course.attachments.length">
<div v-for="(item, index) in course.attachments" :key="index">
<div @click="download(item)">{{ item.fileName }}</div>
</div>
</div> </div>
<div @click="homeWork(course)">查看课后作业</div>
</div> </div>
</div> </div>
</div> </div>
@ -37,6 +41,14 @@
type="primary" @click="copy(currentCourse.url)">复制</el-button> type="primary" @click="copy(currentCourse.url)">复制</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog title="课后作业" :visible.sync="homeWorkVisible" class="freeDialog" width="910px">
<el-divider></el-divider>
<div class="homeWork">
<quill-editor v-model="editContent" ref="myQuillEditor" :options="editorOption"
@blur="onEditorBlur($event)" @focus="onEditorFocus($event)" @change="onEditorChange($event)">
</quill-editor>
</div>
</el-dialog>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" @pagination="init" /> :limit.sync="queryParams.pageSize" @pagination="init" />
</div> </div>
@ -46,15 +58,40 @@
import { getCourse } from '@/api/train/index.js' import { getCourse } from '@/api/train/index.js'
import Pagination from "@/components/Pagination"; import Pagination from "@/components/Pagination";
import copyText from '../../../util/cpoyText'; import copyText from '../../../util/cpoyText';
import { quillEditor } from 'vue-quill-editor' //
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
//
import Quill from 'quill'
// import { ImageExtend } from 'quill-image-extend-module'
// import {ImageResize} from 'quill-image-resize-module';
// import { ImageDrop } from 'quill-image-drop-module'
// Quill.register('modules/imageDrop', ImageDrop)
// Quill.register('modules/imageResize', ImageResize);
//
const fontSizeStyle = Quill.import('attributors/style/size') // style
fontSizeStyle.whitelist = ['12px', '14px', '16px', '18px', '20px', '24px', '28px', '32px', '36px']
Quill.register(fontSizeStyle, true)
// //
const Font = Quill.import('attributors/style/font') // style
const fonts = ['SimSun', 'SimHei', 'Microsoft-YaHei', 'KaiTi', 'FangSong']
Font.whitelist = fonts //
Quill.register(Font, true)
const AlignStyle = Quill.import('attributors/style/align')
AlignStyle.whitelist = ['right', 'center', 'justify']
Quill.register(AlignStyle, true)
// Quill.register('modules/ImageExtend', ImageExtend)
// //
const toolbarOptions = []
export default { export default {
created() { created() {
this.classType = this.$route.query.classType this.classType = this.$route.query.classType
this.init() this.init()
}, },
components: {
Pagination
},
computed: { computed: {
toLearnShow() { toLearnShow() {
return (course) => { return (course) => {
@ -84,9 +121,37 @@ export default {
classType: '', classType: '',
currentCourse: {}, currentCourse: {},
dialogVisible: false, dialogVisible: false,
homeWorkVisible: false,
base: process.env.VUE_APP_BASE_API, base: process.env.VUE_APP_BASE_API,
editorOption: {
placeholder: '请在这里输入',
modules: {
toolbar: {
container: toolbarOptions,
},
//
// imageDrop: true,
// imageResize: {
// displayStyles: {
// backgroundColor: 'black',
// border: 'none',
// color: 'white'
// },
// modules: ['Resize', 'DisplaySize', 'Toolbar']
// },
},
},
editContent: ''
} }
}, },
components: {
quillEditor, Pagination
},
mounted() {
// this.$refs.myQuillEditor.quill.enable(true);
},
methods: { methods: {
async init() { async init() {
const id = this.$route.query.id const id = this.$route.query.id
@ -96,6 +161,21 @@ export default {
this.courseList = res.rows this.courseList = res.rows
} }
}, },
onEditorBlur() { }, //
onEditorFocus(v) {
}, //
//
onEditorChange() {
// this.taskform.projectDesc = this.escapeStringHTML(this.editContent)
// console.log('',this.taskform.projectDesc)
},
homeWork(course) {
this.homeWorkVisible = true
this.$nextTick(() => {
this.$refs.myQuillEditor.quill.enable(false)
this.editContent = course.content
})
},
download(params) { download(params) {
const url = params.filePath const url = params.filePath
if (url) { if (url) {
@ -116,7 +196,6 @@ export default {
} }
}, },
toLearn(course, toggle) { toLearn(course, toggle) {
return
if (this.classType != 4) { if (this.classType != 4) {
return return
} }
@ -252,4 +331,14 @@ export default {
font-size: 14px; font-size: 14px;
color: #0066eb; color: #0066eb;
} }
.ql-editor {
min-height: 250px;
max-height: 500px;
border-top: 1px solid #ccc;
}
.homeWork .ql-toolbar {
display: none;
}
</style> </style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -3,9 +3,22 @@
<div class="userAbility"> <div class="userAbility">
<div class="toptttt"> <div class="toptttt">
<img src="/assets/ability/metop.png" style="width: 24px; height: 28px; margin-right: 15px" alt="" /> <img src="/assets/ability/metop.png" style="width: 24px; height: 28px; margin-right: 15px" alt="" />
云员工个人简历 个人简历
</div> </div>
<div class="contentBig"> <div class="resumeToggle">
<el-radio-group v-model="tabPosition" style="margin: 30px 0px 0px 30px;">
<el-radio-button label="online">在线简历</el-radio-button>
<el-radio-button label="att">附件</el-radio-button>
</el-radio-group>
<div style="width: 135px;height: 135px;position: absolute;right: 400px;top: 50px;"
v-if="userinform.testerStatus == '2'">
<img src="./cloudEmployee.png" alt="">
</div>
</div>
<div v-if="userinform.testerStatus != '2'"
style="margin-left: 30px;margin-top: 10px;color: #666666;font-size: 14px;" @click="toRegCloud">
友情提示入驻成为云员工简历才能被企业主浏览到哦<span style="color: #0066EB;cursor: pointer;">点此去入驻</span></div>
<div class="contentBig" v-if="tabPosition == 'online'">
<div class="contentBox"> <div class="contentBox">
<div class="active4"> <div class="active4">
<!-- 个人简介 --> <!-- 个人简介 -->
@ -25,45 +38,29 @@
</div> </div>
<el-form-item label="所在城市" prop="city"> <el-form-item label="所在城市" prop="city">
<el-input v-model="userForm.city" v-show="false"></el-input> <el-input v-model="userForm.city" v-show="false"></el-input>
<v-distpicker <v-distpicker @province="onChangeProvince" @city="onChangeCity"
@province="onChangeProvince" :placeholders="placeholders" :province="province" :city="city"
@city="onChangeCity" hide-area></v-distpicker>
:placeholders="placeholders"
:province="province"
:city="city"
hide-area
></v-distpicker>
</el-form-item> </el-form-item>
<el-form-item label="技能方向" prop="testSkills"> <el-form-item label="技能方向" prop="testSkills">
<!-- <el-input <!-- <el-input
v-model="userForm.testSkills" v-model="userForm.testSkills"
placeholder="请输入技能,如:测试工程师" placeholder="请输入技能,如:测试工程师"
></el-input> --> ></el-input> -->
<el-select <el-select v-model="userForm.testSkills" placeholder="请选择技能方向"
v-model="userForm.testSkills" :disabled="active == 6 ? true : false" @change="testSkillChange">
placeholder="请选择技能方向" <el-option v-for="it in testskillList" :key="it.dictCode" :label="it.dictLabel"
:disabled="active == 6 ? true : false" :value="it.dictLabel"> </el-option>
@change="testSkillChange"
>
<el-option v-for="it in testskillList" :key="it.dictCode" :label="it.dictLabel" :value="it.dictLabel"> </el-option>
<el-option label="其他" value="其他"> </el-option> <el-option label="其他" value="其他"> </el-option>
</el-select> </el-select>
<br /> <br />
<el-input <el-input style="margin-top: 10px" v-show="userForm.testSkills == '其他'"
style="margin-top: 10px" v-model="testSkillValue" placeholder="请输入技能方向,如:测试工程师"
v-show="userForm.testSkills == '其他'" :disabled="active == 6 ? true : false"></el-input>
v-model="testSkillValue"
placeholder="请输入技能方向,如:测试工程师"
:disabled="active == 6 ? true : false"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="个人优势" prop="personalAdvantage"> <el-form-item label="个人优势" prop="personalAdvantage">
<el-input <el-input type="textarea" :rows="5" v-model="userForm.personalAdvantage"
type="textarea" placeholder="请输入个人优势"></el-input>
:rows="5"
v-model="userForm.personalAdvantage"
placeholder="请输入个人优势"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="delWork"> <div class="delWork">
@ -84,22 +81,14 @@
</el-form-item> </el-form-item>
<div class="flexbox"> <div class="flexbox">
<el-form-item label="在职时间: " prop="startTime"> <el-form-item label="在职时间: " prop="startTime">
<el-date-picker <el-date-picker value-format="yyyy-MM" v-model="it.startTime" type="month"
value-format="yyyy-MM" placeholder="开始时间">
v-model="it.startTime"
type="month"
placeholder="开始时间"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<span style="color: #bfbfbf; margin: -27px 15px 0 15px">-</span> <span style="color: #bfbfbf; margin: -27px 15px 0 15px">-</span>
<el-form-item prop="endTime" class="endtime"> <el-form-item prop="endTime" class="endtime">
<el-date-picker <el-date-picker value-format="yyyy-MM" v-model="it.endTime" type="month"
value-format="yyyy-MM" placeholder="结束时间">
v-model="it.endTime"
type="month"
placeholder="结束时间"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</div> </div>
@ -107,23 +96,16 @@
<el-input v-model="it.title" placeholder="请输入职位名称"></el-input> <el-input v-model="it.title" placeholder="请输入职位名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="工作内容: " prop="intro"> <el-form-item label="工作内容: " prop="intro">
<el-input <el-input type="textarea" v-model="it.intro" :rows="5"
type="textarea" placeholder="请输入工作内容"></el-input>
v-model="it.intro"
:rows="5"
placeholder="请输入工作内容"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="delWork"> <div class="delWork">
<div v-if="!it.caseId" class="saveWork" @click="saveWork(index)">保存</div> <div v-if="!it.caseId" class="saveWork" @click="saveWork(index)">保存</div>
<div v-else class="saveWork" @click="updateWork(index)">修改</div> <div v-else class="saveWork" @click="updateWork(index)">修改</div>
<img <img src="/assets/ability/delicon.png"
src="/assets/ability/delicon.png" style="width: 14px; height: 16px; margin-right: 5px" alt=""
style="width: 14px; height: 16px; margin-right: 5px" @click="delWork(index)" />
alt=""
@click="delWork(index)"
/>
<span @click="delWork(index)">删除</span> <span @click="delWork(index)">删除</span>
</div> </div>
</div> </div>
@ -142,22 +124,14 @@
</el-form-item> </el-form-item>
<div class="flexbox"> <div class="flexbox">
<el-form-item label="项目时间: " prop="startTime"> <el-form-item label="项目时间: " prop="startTime">
<el-date-picker <el-date-picker value-format="yyyy-MM" v-model="it.startTime" type="month"
value-format="yyyy-MM" placeholder="开始时间">
v-model="it.startTime"
type="month"
placeholder="开始时间"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<span style="color: #bfbfbf; margin: -27px 15px 0 15px">-</span> <span style="color: #bfbfbf; margin: -27px 15px 0 15px">-</span>
<el-form-item prop="endTime" class="endtime"> <el-form-item prop="endTime" class="endtime">
<el-date-picker <el-date-picker value-format="yyyy-MM" v-model="it.endTime" type="month"
value-format="yyyy-MM" placeholder="结束时间">
v-model="it.endTime"
type="month"
placeholder="结束时间"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</div> </div>
@ -168,23 +142,16 @@
<el-input v-model="it.applyTech" placeholder="请输入应用技术"></el-input> <el-input v-model="it.applyTech" placeholder="请输入应用技术"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="工作内容" prop="intro"> <el-form-item label="工作内容" prop="intro">
<el-input <el-input :rows="5" type="textarea" v-model="it.intro"
:rows="5" placeholder="请输入工作内容"></el-input>
type="textarea"
v-model="it.intro"
placeholder="请输入工作内容"
></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="delWork"> <div class="delWork">
<div v-if="!it.caseId" class="saveWork" @click="saveProject(index)">保存</div> <div v-if="!it.caseId" class="saveWork" @click="saveProject(index)">保存</div>
<div v-else class="saveWork" @click="updateProject(index)">修改</div> <div v-else class="saveWork" @click="updateProject(index)">修改</div>
<img <img src="/assets/ability/delicon.png"
src="/assets/ability/delicon.png" style="width: 14px; height: 16px; margin-right: 5px" alt=""
style="width: 14px; height: 16px; margin-right: 5px" @click="delProject(index)" />
alt=""
@click="delProject(index)"
/>
<span @click="delProject(index)">删除</span> <span @click="delProject(index)">删除</span>
</div> </div>
</div> </div>
@ -198,32 +165,22 @@
资格证书 资格证书
</div> </div>
<div class="workIt" v-for="(it, index) in certificateList" :key="index"> <div class="workIt" v-for="(it, index) in certificateList" :key="index">
<el-form <el-form :rules="certificateRules" :model="it" label-width="80px"
:rules="certificateRules" :ref="'certificateRef' + index">
:model="it"
label-width="80px"
:ref="'certificateRef' + index"
>
<el-form-item label="证书名称" prop="credentialsName"> <el-form-item label="证书名称" prop="credentialsName">
<el-input v-model="it.credentialsName" placeholder="请输入证书名称"></el-input> <el-input v-model="it.credentialsName" placeholder="请输入证书名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="url"> <el-form-item prop="url">
<imageUpload <imageUpload v-model="it.url" fileName="publicize" :limit="1"
v-model="it.url" :ref="'myupload' + index" />
fileName="publicize"
:limit="1"
:ref="'myupload' + index"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="delWork"> <div class="delWork">
<div v-if="!it.fileId" class="saveWork" @click="saveCertificate(index)">保存</div> <div v-if="!it.fileId" class="saveWork" @click="saveCertificate(index)">保存</div>
<div v-else class="saveWork" @click="updateCertificate(index)">修改</div> <div v-else class="saveWork" @click="updateCertificate(index)">修改</div>
<img <img src="/assets/ability/delicon.png"
src="/assets/ability/delicon.png"
style="width: 14px; height: 16px; margin-right: 5px" style="width: 14px; height: 16px; margin-right: 5px"
@click="delCertificate(index)" @click="delCertificate(index)" />
/>
<span @click="delCertificate(index)">删除</span> <span @click="delCertificate(index)">删除</span>
</div> </div>
</div> </div>
@ -236,33 +193,21 @@
教育经历 教育经历
</div> </div>
<div class="workIt" v-for="(it, index) in educationList" :key="index"> <div class="workIt" v-for="(it, index) in educationList" :key="index">
<el-form <el-form :rules="educationRules" :model="it" label-width="90px"
:rules="educationRules" :ref="'educationRef' + index">
:model="it"
label-width="90px"
:ref="'educationRef' + index"
>
<el-form-item label="学校名称" prop="name"> <el-form-item label="学校名称" prop="name">
<el-input v-model="it.name" placeholder="请输入学校名称"></el-input> <el-input v-model="it.name" placeholder="请输入学校名称"></el-input>
</el-form-item> </el-form-item>
<div class="flexbox"> <div class="flexbox">
<el-form-item label="在校时间: " prop="startTime"> <el-form-item label="在校时间: " prop="startTime">
<el-date-picker <el-date-picker value-format="yyyy-MM" v-model="it.startTime" type="month"
value-format="yyyy-MM" placeholder="开始时间">
v-model="it.startTime"
type="month"
placeholder="开始时间"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<span style="color: #bfbfbf; margin: -27px 15px 0 15px">-</span> <span style="color: #bfbfbf; margin: -27px 15px 0 15px">-</span>
<el-form-item prop="endTime" class="endtime"> <el-form-item prop="endTime" class="endtime">
<el-date-picker <el-date-picker value-format="yyyy-MM" v-model="it.endTime" type="month"
value-format="yyyy-MM" placeholder="结束时间">
v-model="it.endTime"
type="month"
placeholder="结束时间"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</div> </div>
@ -281,12 +226,9 @@
<div class="delWork"> <div class="delWork">
<div v-if="!it.caseId" class="saveWork" @click="saveEducation(index)">保存</div> <div v-if="!it.caseId" class="saveWork" @click="saveEducation(index)">保存</div>
<div v-else class="saveWork" @click="updateEducation(index)">修改</div> <div v-else class="saveWork" @click="updateEducation(index)">修改</div>
<img <img src="/assets/ability/delicon.png"
src="/assets/ability/delicon.png" style="width: 14px; height: 16px; margin-right: 5px" alt=""
style="width: 14px; height: 16px; margin-right: 5px" @click="delEducation(index)" />
alt=""
@click="delEducation(index)"
/>
<span @click="delEducation(index)">删除</span> <span @click="delEducation(index)">删除</span>
</div> </div>
</div> </div>
@ -294,6 +236,24 @@
</div> </div>
</div> </div>
</div> </div>
<div class="attResume" v-if="tabPosition == 'att'">
<div v-if="Object.keys(myResume).length" class="personResume">
<div style="cursor: pointer;" @click="previewResume">{{ myResume.fileName }}</div>
<div style="color: #F69102;margin-left: 100px;cursor: pointer;" @click="downLoadResume">下载</div>
<div style="color: #FC3333;cursor: pointer;" @click="toDeleteResume">删除</div>
</div>
<div v-else>
<div>
<img src="./resume.png" alt="">
</div>
<div style="margin: 10px 0;">暂无附件简历请上传<span style="color: #F6482B;">pdf格式</span></div>
</div>
<myUpload :fileType="['.pdf']" @upload="attachmentUpload">
<el-button v-if="!Object.keys(myResume).length" icon="el-icon-upload2"
type="primary">上传附件简历</el-button>
<el-button v-else icon="el-icon-refresh-right" type="primary">更新附件简历</el-button>
</myUpload>
</div>
</div> </div>
<!-- <div class="bottomBtn">保存并发布</div> --> <!-- <div class="bottomBtn">保存并发布</div> -->
</div> </div>
@ -302,7 +262,8 @@
<script> <script>
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import imageUpload from '@/page/common/imageUpload' import imageUpload from '@/page/common/imageUpload'
import { gettesterId, addtesterApply, updatetesterApply, skilldis } from '@/api/tester/CompanyApply' import myUpload from '@/components/myUpload'
import { gettesterId, addtesterApply, updatetesterApply, skilldis, attachmentResume, getResume, deleteResume } from '@/api/tester/CompanyApply'
import { import {
getCloudAll, getCloudAll,
couldInfoAdd, couldInfoAdd,
@ -313,17 +274,22 @@ import {
couldBookUpdate, couldBookUpdate,
couldApply, couldApply,
delBook, delBook,
} from '@/api/tester/TesterApply' } from '@/api/tester/TesterApply'
import downPdf from '../../../util/pdfDownLoad'
export default { export default {
components: { imageUpload }, components: { imageUpload, myUpload },
data() { data() {
return { return {
baseUrl: process.env.VUE_APP_BASE_API,
myResume: {},
testskillList: [], testskillList: [],
testSkillValue: '', testSkillValue: '',
active: 0, active: 0,
// //
certifform: {}, certifform: {},
tabPosition: 'online',
certifRules: { certifRules: {
name: [ name: [
{ required: true, message: '真实姓名不能为空', trigger: 'blur' }, { required: true, message: '真实姓名不能为空', trigger: 'blur' },
@ -415,8 +381,19 @@ export default {
skilldis().then(res => { skilldis().then(res => {
this.testskillList = res.data this.testskillList = res.data
}) })
this.getMyResume()
}, },
methods: { methods: {
//
getMyResume() {
getResume(this.userId).then(res => {
if (res.code == 200 && res.data) {
this.myResume = res.data
} else {
this.myResume = {}
}
})
},
testSkillChange(e) { testSkillChange(e) {
this.testSkillValue = '' this.testSkillValue = ''
}, },
@ -475,6 +452,9 @@ export default {
} }
}) })
}, },
toRegCloud() {
this.$router.push('/ability/apply')
},
applyBegin() { applyBegin() {
this.$refs['certifform'].validate((valid) => { this.$refs['certifform'].validate((valid) => {
if (valid) { if (valid) {
@ -494,7 +474,7 @@ export default {
} else { } else {
} }
}) })
.catch((error) => {}) .catch((error) => { })
} else { } else {
addtesterApply(data) addtesterApply(data)
.then((res) => { .then((res) => {
@ -504,7 +484,7 @@ export default {
} else { } else {
} }
}) })
.catch((error) => {}) .catch((error) => { })
} }
} }
}) })
@ -704,6 +684,27 @@ export default {
} }
}) })
}, },
previewResume() {
window.open(this.baseUrl + this.myResume.filePath)
},
downLoadResume() {
downPdf(this.baseUrl + this.myResume.filePath, this.myResume.fileName)
},
toDeleteResume() {
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteResume(this.userId).then(res => {
if (res.code == 200) {
this.$message.success(res.msg)
this.getMyResume()
}
})
})
},
// //
addEducation() { addEducation() {
this.educationList.push({}) this.educationList.push({})
@ -777,6 +778,22 @@ export default {
this.city = '' this.city = ''
} }
}, },
async attachmentUpload(item, name) {
console.log(item);
console.log(name);
const data = {
filePath: item.filePath,
fileName: name,
userId: this.userId
}
const res = await attachmentResume(data)
if (res.code == 200) {
this.getMyResume()
}
// console.log(res);
}
}, },
} }
</script> </script>
@ -787,10 +804,12 @@ export default {
padding-bottom: 40px; padding-bottom: 40px;
overflow: hidden; overflow: hidden;
} }
.container { .container {
width: 1200px; width: 1200px;
margin: auto; margin: auto;
} }
.topTitle { .topTitle {
font-weight: bold; font-weight: bold;
font-size: 32px; font-size: 32px;
@ -799,17 +818,20 @@ export default {
align-items: center; align-items: center;
margin: 40px auto; margin: 40px auto;
} }
.colra { .colra {
background: linear-gradient(-90deg, #fa2c3f 0%, #792bf9 100%); background: linear-gradient(-90deg, #fa2c3f 0%, #792bf9 100%);
-webkit-background-clip: text; -webkit-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
} }
.stepBoxBtn { .stepBoxBtn {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
margin: 30px 0; margin: 30px 0;
} }
.backBtn { .backBtn {
width: 130px; width: 130px;
height: 40px; height: 40px;
@ -823,6 +845,7 @@ export default {
color: #0066eb; color: #0066eb;
cursor: pointer; cursor: pointer;
} }
.nextBtn { .nextBtn {
width: 130px; width: 130px;
height: 40px; height: 40px;
@ -835,57 +858,97 @@ export default {
color: #ffffff; color: #ffffff;
cursor: pointer; cursor: pointer;
} }
.contentBig {
.contentBig,
.attResume {
background: #ffffff; background: #ffffff;
padding: 40px; padding: 40px;
box-sizing: border-box; box-sizing: border-box;
} }
.personResume {
display: flex;
align-items: center;
margin-bottom: 10px;
padding: 0 5px;
/* width: 308px; */
height: 35px;
background: #F0F4FA;
border-radius: 4px;
font-family: PingFang SC;
font-weight: 500;
font-size: 16px;
color: #0066EB;
}
.personResume>* {
margin: 10px 5px;
}
.attResume {
height: 600px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
}
.stepBox { .stepBox {
margin: 30px auto; margin: 30px auto;
border-bottom: 2px dashed #ebebeb; border-bottom: 2px dashed #ebebeb;
} }
.stepBox >>> .el-steps {
.stepBox>>>.el-steps {
flex: 1; flex: 1;
} }
.stepBox >>> .el-step__icon {
.stepBox>>>.el-step__icon {
width: 60px; width: 60px;
height: 60px; height: 60px;
background: #f2f3f7; background: #f2f3f7;
border: unset; border: unset;
} }
.stepBox >>> .el-step__line { .stepBox>>>.el-step__line {
top: 30px !important; top: 30px !important;
background: #f2f3f7; background: #f2f3f7;
height: 3px; height: 3px;
} }
/* 已完成 */ /* 已完成 */
.stepBox >>> .el-step__head.is-finish { .stepBox>>>.el-step__head.is-finish {
color: #f2f3f7; color: #f2f3f7;
border-color: unset; border-color: unset;
} }
.stepBox >>> .el-step__title.is-finish {
.stepBox>>>.el-step__title.is-finish {
font-weight: 500; font-weight: 500;
font-size: 15px; font-size: 15px;
color: #666666; color: #666666;
} }
.stepBox >>> .el-step__title.is-wait {
.stepBox>>>.el-step__title.is-wait {
font-weight: 500; font-weight: 500;
font-size: 15px; font-size: 15px;
color: #666666; color: #666666;
} }
.stepBox >>> .el-step__title.is-process {
.stepBox>>>.el-step__title.is-process {
font-weight: 500; font-weight: 500;
font-size: 15px; font-size: 15px;
color: #0066eb; color: #0066eb;
} }
/* 当前 */ /* 当前 */
.stepBox >>> .el-step__head.is-process .el-step__icon { .stepBox>>>.el-step__head.is-process .el-step__icon {
background: #0066eb !important; background: #0066eb !important;
} }
.workIt >>> .distpicker-address-wrapper label select {
.workIt>>>.distpicker-address-wrapper label select {
width: 247px !important; width: 247px !important;
} }
.addWork { .addWork {
width: 150px; width: 150px;
height: 40px; height: 40px;
@ -898,6 +961,7 @@ export default {
text-align: center; text-align: center;
margin-bottom: 30px; margin-bottom: 30px;
} }
.delWork { .delWork {
position: absolute; position: absolute;
top: 20px; top: 20px;
@ -910,6 +974,7 @@ export default {
font-size: 14px; font-size: 14px;
color: #fd4747; color: #fd4747;
} }
.saveWork { .saveWork {
margin-right: 30px; margin-right: 30px;
cursor: pointer; cursor: pointer;
@ -917,6 +982,7 @@ export default {
font-size: 14px; font-size: 14px;
color: #23ca7d; color: #23ca7d;
} }
.workIt { .workIt {
border-radius: 4px; border-radius: 4px;
border: 1px solid #f2f2f2; border: 1px solid #f2f2f2;
@ -925,15 +991,19 @@ export default {
box-sizing: border-box; box-sizing: border-box;
position: relative; position: relative;
} }
.workIt >>> .el-input {
.workIt>>>.el-input {
width: 500px; width: 500px;
} }
.workIt >>> .el-date-editor {
.workIt>>>.el-date-editor {
width: 231px; width: 231px;
} }
.workIt >>> .el-textarea__inner {
.workIt>>>.el-textarea__inner {
width: 500px; width: 500px;
} }
.activeTitle { .activeTitle {
display: flex; display: flex;
align-items: center; align-items: center;
@ -942,12 +1012,14 @@ export default {
color: #000000; color: #000000;
margin-bottom: 30px; margin-bottom: 30px;
} }
.activeTitLine { .activeTitLine {
width: 5px; width: 5px;
height: 17px; height: 17px;
background: #0066eb; background: #0066eb;
margin-right: 10px; margin-right: 10px;
} }
.applytip { .applytip {
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
@ -955,6 +1027,7 @@ export default {
margin-bottom: 30px; margin-bottom: 30px;
margin-top: -10px; margin-top: -10px;
} }
.applySuccess { .applySuccess {
display: flex; display: flex;
align-items: center; align-items: center;
@ -962,11 +1035,13 @@ export default {
font-size: 18px; font-size: 18px;
color: #23ca7d; color: #23ca7d;
} }
.applySuccess img { .applySuccess img {
width: 27px; width: 27px;
height: 27px; height: 27px;
margin-right: 10px; margin-right: 10px;
} }
.applyIng { .applyIng {
width: 275px; width: 275px;
height: 50px; height: 50px;
@ -980,6 +1055,7 @@ export default {
justify-content: center; justify-content: center;
margin: 40px auto; margin: 40px auto;
} }
.applySuccessAll { .applySuccessAll {
width: 275px; width: 275px;
height: 50px; height: 50px;
@ -993,6 +1069,7 @@ export default {
justify-content: center; justify-content: center;
margin: 40px auto; margin: 40px auto;
} }
.applyFail { .applyFail {
width: 275px; width: 275px;
height: 50px; height: 50px;
@ -1006,23 +1083,28 @@ export default {
justify-content: center; justify-content: center;
margin: 40px auto; margin: 40px auto;
} }
.flexbox { .flexbox {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.endtime >>> .el-form-item__content {
.endtime>>>.el-form-item__content {
margin-left: 0px !important; margin-left: 0px !important;
} }
.userAbility { .userAbility {
overflow: hidden; overflow: hidden;
background: #ffffff; background: #ffffff;
box-shadow: 0px 1px 12px 0px rgba(17, 19, 21, 0.06); box-shadow: 0px 1px 12px 0px rgba(17, 19, 21, 0.06);
} }
.contentBig { .contentBig {
background: #ffffff; background: #ffffff;
padding: 40px 123px; padding: 40px 123px;
box-sizing: border-box; box-sizing: border-box;
} }
.toptttt { .toptttt {
height: 78px; height: 78px;
background: #f0f4fa; background: #f0f4fa;
@ -1034,10 +1116,11 @@ export default {
color: #000000; color: #000000;
} }
.workIt >>> .distpicker-address-wrapper label select { .workIt>>>.distpicker-address-wrapper label select {
width: 347px !important; width: 347px !important;
font-size: 14px; font-size: 14px;
} }
.addWork { .addWork {
width: 150px; width: 150px;
height: 40px; height: 40px;
@ -1050,6 +1133,7 @@ export default {
text-align: center; text-align: center;
margin-bottom: 30px; margin-bottom: 30px;
} }
.delWork { .delWork {
position: absolute; position: absolute;
top: 20px; top: 20px;
@ -1062,6 +1146,7 @@ export default {
font-size: 14px; font-size: 14px;
color: #fd4747; color: #fd4747;
} }
.workIt { .workIt {
border-radius: 4px; border-radius: 4px;
border: 1px solid #f2f2f2; border: 1px solid #f2f2f2;
@ -1070,15 +1155,19 @@ export default {
box-sizing: border-box; box-sizing: border-box;
position: relative; position: relative;
} }
.workIt >>> .el-input {
.workIt>>>.el-input {
width: 700px; width: 700px;
} }
.workIt >>> .el-date-editor {
.workIt>>>.el-date-editor {
width: 330px; width: 330px;
} }
.workIt >>> .el-textarea__inner {
.workIt>>>.el-textarea__inner {
width: 700px; width: 700px;
} }
.activeTitle { .activeTitle {
display: flex; display: flex;
align-items: center; align-items: center;
@ -1087,12 +1176,14 @@ export default {
color: #000000; color: #000000;
margin-bottom: 30px; margin-bottom: 30px;
} }
.activeTitLine { .activeTitLine {
width: 5px; width: 5px;
height: 17px; height: 17px;
background: #0066eb; background: #0066eb;
margin-right: 10px; margin-right: 10px;
} }
.applytip { .applytip {
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
@ -1100,6 +1191,7 @@ export default {
margin-bottom: 30px; margin-bottom: 30px;
margin-top: -10px; margin-top: -10px;
} }
.applySuccess { .applySuccess {
display: flex; display: flex;
align-items: center; align-items: center;
@ -1107,30 +1199,62 @@ export default {
font-size: 18px; font-size: 18px;
color: #23ca7d; color: #23ca7d;
} }
.applySuccess img { .applySuccess img {
width: 27px; width: 27px;
height: 27px; height: 27px;
margin-right: 10px; margin-right: 10px;
} }
.userAbility >>> .el-upload--picture-card {
.userAbility>>>.el-upload--picture-card {
width: 700px; width: 700px;
height: 190px; height: 190px;
line-height: 190px; line-height: 190px;
} }
.userAbility >>> .el-upload-list__item {
.userAbility>>>.el-upload-list__item {
width: 700px !important; width: 700px !important;
height: 190px !important; height: 190px !important;
line-height: 190px !important; line-height: 190px !important;
} }
.userAbility >>> .el-upload-list__item-status-label {
.userAbility>>>.el-upload-list__item-status-label {
display: flex !important;
align-items: center !important;
justify-content: center !important;
}
.attResume>>>.el-upload--picture-card {
width: 300px;
height: 90px;
line-height: 90px;
}
.attResume>>>.el-upload-list__item {
width: 300px !important;
height: 90px !important;
line-height: 90px !important;
}
.attResume>>>.el-upload-list__item-status-label {
display: flex !important; display: flex !important;
align-items: center !important; align-items: center !important;
justify-content: center !important; justify-content: center !important;
} }
.flexbox { .flexbox {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.resumeToggle {
display: flex;
justify-content: space-between;
align-items: center;
padding-right: 490px;
position: relative;
}
.bottomBtn { .bottomBtn {
overflow: hidden; overflow: hidden;
width: 250px; width: 250px;

@ -1,12 +1,13 @@
<template> <template>
<div style="padding-bottom:50px"> <div style="padding-bottom:50px">
<div style="display:flex;align-items:center"> <div style="display:flex;align-items:center">
<div class="dvied"></div> <div class="dvied"></div>
<div style="font-weight: bold;color: #333333;font-size: 18px;margin-left:10px">站内消息</div> <div style="font-weight: bold;color: #333333;font-size: 18px;margin-left:10px">站内消息</div>
</div> </div>
<div style="background: #FFFFFF;border-radius: 4px;">
<div style="background: #FFFFFF;border-radius: 4px;">
<div style="" class="messsagenum"> <div style="" class="messsagenum">
<el-radio-group v-model="mesage" @change="showDataTypeChage" fill='#0066EB'> <el-radio-group v-model="mesage" @change="showDataTypeChage" fill='#0066EB'>
<!-- <el-radio-button label="1"> <!-- <el-radio-button label="1">
<span>全部消息</span> <span>全部消息</span>
</el-radio-button> --> </el-radio-button> -->
@ -20,20 +21,18 @@
<span>消息列表</span> <span>消息列表</span>
</el-radio-button> --> </el-radio-button> -->
</el-radio-group> </el-radio-group>
<el-table v-loading='loading' :data="messagelist" > <el-table v-loading='loading' :data="messagelist">
<el-table-column label="序号" align="center" type="index"/> <el-table-column label="序号" align="center" type="index" />
<el-table-column label="标题内容" header-align="center" key="message" prop="message" :show-overflow-tooltip="true"/> <el-table-column label="标题内容" header-align="center" key="message" prop="message"
<el-table-column label="消息类型" key="title" prop="title" width="200" :show-overflow-tooltip="true"/> :show-overflow-tooltip="true" />
<el-table-column label="发送时间" key="sendTime" prop="sendTime" width="200" :show-overflow-tooltip="true"/> <el-table-column label="消息类型" key="title" prop="title" width="200" :show-overflow-tooltip="true" />
<el-table-column label="发送时间" key="sendTime" prop="sendTime" width="200"
:show-overflow-tooltip="true" />
</el-table> </el-table>
<!-- @size-change="handleSizeChange" --> <!-- @size-change="handleSizeChange" -->
<div v-if="total>10" style='width:100%;margin-top:30px;text-align: center;'> <div v-if="total > 10" style='width:100%;margin-top:30px;text-align: center;'>
<el-pagination background <el-pagination background @current-change="handleCurrentChange" :current-page="currentPage"
@current-change="handleCurrentChange" :page-size="queryParams.pageSize" layout="total, prev, pager, next, jumper" :total="total">
:current-page="currentPage"
:page-size="queryParams.pageSize"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
@ -41,103 +40,109 @@
</div> </div>
</template> </template>
<script> <script>
import {listMyMessage,sendMessage,listMyMessageCount} from "@/api/system/message"; import { listMyMessage, sendMessage, listMyMessageCount } from "@/api/system/message";
import store from "@/store"; import store from "@/store";
export default{ export default {
data(){ data() {
return{ return {
loading:false, loading: false,
currentPage:1, currentPage: 1,
mesage:'1', mesage: '1',
unreadmessage:'', unreadmessage: '',
messageData:[], messageData: [],
messagelist:[], messagelist: [],
total:0, total: 0,
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
userId:'' userId: ''
},
}
},
mounted(){
// this.showDataTypeChage('1');
this.getlist();
// this.messagelist=this.messageData
},
methods:{
showDataTypeChage(val){
this.loading = true;
this.getlist();
// if(val==1){
// this.getlist();
// this.messagelist=this.messageData
// }else if(val==2){
// this.getlist();
// // this.messagelist=this.messageData.slice(0,this.unreadmessage)
// this.messagelist=this.messageData.filter(item=>item.status==1)
// this.unreadmessage=this.messagelist.length
// listMyMessageCount().then(res => {
// // this.unreadmessage=res.data
// store.commit('SET_MESSAGECOUNT',res.data);
// })
// }else if(val==3){
// this.getlist();
// // this.messagelist=this.messageData.slice(this.unreadmessage)
// this.messagelist=this.messageData.filter(item=>item.status==2)
// }else if(val==4){
// this.$router.push('./messagelist')
// }
},
getlist(){
listMyMessage(this.queryParams).then(response => {
this.messagelist = response.rows;
this.total = response.total;
this.loading = false;
// this.messagelist=this.messageData
})
}, },
// }
handleCurrentChange(val) { },
this.queryParams.pageNum=val; mounted() {
this.showDataTypeChage(this.mesage); // this.showDataTypeChage('1');
} this.getlist();
// this.messagelist=this.messageData
},
methods: {
showDataTypeChage(val) {
this.loading = true;
this.getlist();
// if(val==1){
// this.getlist();
// this.messagelist=this.messageData
// }else if(val==2){
// this.getlist();
// // this.messagelist=this.messageData.slice(0,this.unreadmessage)
// this.messagelist=this.messageData.filter(item=>item.status==1)
// this.unreadmessage=this.messagelist.length
// listMyMessageCount().then(res => {
// // this.unreadmessage=res.data
// store.commit('SET_MESSAGECOUNT',res.data);
// })
// }else if(val==3){
// this.getlist();
// // this.messagelist=this.messageData.slice(this.unreadmessage)
// this.messagelist=this.messageData.filter(item=>item.status==2)
// }else if(val==4){
// this.$router.push('./messagelist')
// }
},
getlist() {
listMyMessage(this.queryParams).then(response => {
this.messagelist = response.rows;
this.total = response.total;
this.loading = false;
// this.messagelist=this.messageData
})
}, },
//
handleCurrentChange(val) {
this.queryParams.pageNum = val;
this.showDataTypeChage(this.mesage);
}
},
} }
</script> </script>
<style scoped> <style scoped>
.dvied{ .dvied {
width: 4px; width: 4px;
height: 18px; height: 18px;
background: #0066EB; background: #0066EB;
} }
.messsagenum>>>.el-radio-button__inner{
background:#ebebed; .messsagenum>>>.el-radio-button__inner {
border:none; background: #ebebed;
margin-right:20px; border: none;
/* font-weight:bold; */ margin-right: 20px;
} /* font-weight:bold; */
.messsagenum>>>.el-radio-button:first-child .el-radio-button__inner{ }
border-radius:0;
} .messsagenum>>>.el-radio-button:first-child .el-radio-button__inner {
.messsagenum>>>.el-radio-button:last-child .el-radio-button__inner{ border-radius: 0;
border-radius:0; }
}
.messsagenum>>>.el-table th{ .messsagenum>>>.el-radio-button:last-child .el-radio-button__inner {
background-color:#F7F7F7; border-radius: 0;
color:#666666; }
/* text-align:left; */
} .messsagenum>>>.el-table th {
.messsagenum>>>.el-table td{ background-color: #F7F7F7;
/* text-align:center; */ color: #666666;
background-color:#FFFFFF; /* text-align:left; */
height:60px; }
color:#333333;
} .messsagenum>>>.el-table td {
.messsagenum>>>.el-table--border th{ /* text-align:center; */
border-right:#F7F7F7 background-color: #FFFFFF;
} height: 60px;
color: #333333;
}
.messsagenum>>>.el-table--border th {
border-right: #F7F7F7
}
</style> </style>

@ -27,35 +27,27 @@
<span v-if="task.task_status == 1">竞标成功</span> <span v-if="task.task_status == 1">竞标成功</span>
<span v-if="task.task_status == 2">竞标失败</span> <span v-if="task.task_status == 2">竞标失败</span>
</div> </div>
<template v-if="crowdtype == 'myApply'"> <template v-if="crowdtype == 'myApply'">
<div <div v-for="it in findLabelValueByProp(
v-for="it in findLabelValueByProp( tasktypelist,
tasktypelist, task.testType,
task.testType, 'dictValue',
'dictValue', 'dictLabel',
'dictLabel', ).split(',')" :key="it" class="tabone"
).split(',')" style="width: 75px; background: #e8eef5; color: #525b65">
:key="it"
class="tabone"
style="width: 75px; background: #e8eef5; color: #525b65"
>
<span>{{ it }}</span> <span>{{ it }}</span>
</div> </div>
</template> </template>
<template v-else> <template v-else>
<div <div v-for="it in findLabelValueByProp(
v-for="it in findLabelValueByProp( tasktypelist,
tasktypelist, task.test_type,
task.test_type, 'dictValue',
'dictValue', 'dictLabel',
'dictLabel', ).split(',')" :key="it" class="tabone"
).split(',')" style="width: 75px; background: #e8eef5; color: #525b65">
:key="it"
class="tabone"
style="width: 75px; background: #e8eef5; color: #525b65"
>
<span>{{ it }}</span> <span>{{ it }}</span>
</div> </div>
</template> </template>
@ -117,41 +109,30 @@
</div> </div>
</div> </div>
<div v-if="crowdtype == 'myApply'"> <div v-if="crowdtype == 'myApply'">
<p <p v-if="task.projectDesc" v-html="task.projectDesc"
v-if="task.projectDesc" style="color: #808080; line-height: 23px; font-size: 24rpx; white-space: pre-line"></p>
v-html="task.projectDesc"
style="color: #808080; line-height: 23px; font-size: 24rpx; white-space: pre-line"
></p>
<p v-else style="margin-left: 10px"></p> <p v-else style="margin-left: 10px"></p>
</div> </div>
<div v-else> <div v-else>
<p <p v-if="task.project_desc" v-html="task.project_desc"
v-if="task.project_desc" style="color: #808080; line-height: 23px; font-size: 24rpx; white-space: pre-line"></p>
v-html="task.project_desc"
style="color: #808080; line-height: 23px; font-size: 24rpx; white-space: pre-line"
></p>
<p v-else style="margin-left: 10px"></p> <p v-else style="margin-left: 10px"></p>
</div> </div>
<div <div v-if="crowdtype != 'competitive'"
v-if="crowdtype != 'competitive'" style="display: flex; align-items: center; width: 150px; margin-top: 30px">
style="display: flex; align-items: center; width: 150px; margin-top: 30px"
>
<div class="dvied"></div> <div class="dvied"></div>
<div style="font-weight: bold; color: #333333; font-size: 17px; margin-left: 10px"> <div style="font-weight: bold; color: #333333; font-size: 17px; margin-left: 10px">
联系方式 联系方式
</div> </div>
</div> </div>
<div <div v-if="crowdtype != 'competitive'" style="
v-if="crowdtype != 'competitive'"
style="
display: flex; display: flex;
align-items: center; align-items: center;
color: #808080; color: #808080;
font-size: 24rpx; font-size: 24rpx;
margin: 36rpx 25rpx 0 25rpx; margin: 36rpx 25rpx 0 25rpx;
" ">
>
<p v-if="crowdtype == 'myApply'" style="margin-bottom: 10px"> <p v-if="crowdtype == 'myApply'" style="margin-bottom: 10px">
<span v-if="task && task.contactName">联系人{{ task.contactName }}</span> <span v-if="task && task.contactName">联系人{{ task.contactName }}</span>
</p> </p>
@ -173,74 +154,52 @@
</div> </div>
<template v-if="task.attachment"> <template v-if="task.attachment">
<div <div style="display: flex; align-items: center; margin: 12px 0"
style="display: flex; align-items: center; margin: 12px 0" v-for="(it, index) in task.attachmentArr" :key="it">
v-for="(it, index) in task.attachmentArr" <img style="width: 17px; height: 20px; margin-right: 5px" src="/assets/crowd/upload.png"
:key="it" alt="" />
>
<img
style="width: 17px; height: 20px; margin-right: 5px"
src="/assets/crowd/upload.png"
alt=""
/>
<p @click="openurl(it)" style="color: #1578ed; font-size: 12px; cursor: pointer"> <p @click="openurl(it)" style="color: #1578ed; font-size: 12px; cursor: pointer">
项目附件{{ index + 1 }} 项目附件{{ index + 1 }}
</p> </p>
</div> </div>
</template> </template>
<div v-else style="display: flex; align-items: center; margin: 12px 0"> <div v-else style="display: flex; align-items: center; margin: 12px 0">
<img <img style="width: 17px; height: 20px; margin-right: 5px" src="/assets/crowd/upload.png"
style="width: 17px; height: 20px; margin-right: 5px" alt="" />
src="/assets/crowd/upload.png"
alt=""
/>
<p style="color: #1578ed; font-size: 12px"></p> <p style="color: #1578ed; font-size: 12px"></p>
</div> </div>
</div> </div>
</div> </div>
<div <div v-if="crowdtype == 'competitive'" style="
v-if="crowdtype == 'competitive'"
style="
background: #ffffff; background: #ffffff;
box-shadow: 0px 2px 8px 0px rgba(54, 61, 67, 0.1); box-shadow: 0px 2px 8px 0px rgba(54, 61, 67, 0.1);
padding: 15px 30px; padding: 15px 30px;
margin: 20px 0; margin: 20px 0;
" ">
>
<!-- <div class="dvied"></div> --> <!-- <div class="dvied"></div> -->
<div style="font-weight: bold; color: #333333; font-size: 18px; margin: 0px">竞标方案</div> <div style="font-weight: bold; color: #333333; font-size: 18px; margin: 0px">竞标方案</div>
<div <div v-if="userprogramme && userprogramme.period"
v-if="userprogramme && userprogramme.period" style="font-size: 14px; text-align: left; color: #333333; margin: 20px 0px; line-height: 25px">
style="font-size: 14px; text-align: left; color: #333333; margin: 20px 0px; line-height: 25px"
>
<p>竞标日期{{ userprogramme.apply_time.slice(0, 10) }}</p> <p>竞标日期{{ userprogramme.apply_time.slice(0, 10) }}</p>
<p>竞标工期{{ userprogramme.period ? userprogramme.period + '天' : '无' }}</p> <p>竞标工期{{ userprogramme.period ? userprogramme.period + '天' : '无' }}</p>
<p>竞标优势{{ userprogramme.competition_edge ? userprogramme.competition_edge : '无' }}</p> <p>竞标优势{{ userprogramme.competition_edge ? userprogramme.competition_edge : '无' }}</p>
<p> <p>
竞标附件 竞标附件
<span <span @click="openurl(userprogramme.attachment)" v-if="userprogramme.attachment"
@click="openurl(userprogramme.attachment)" style="color: #1578ed; cursor: pointer">项目附件</span>
v-if="userprogramme.attachment"
style="color: #1578ed; cursor: pointer"
>项目附件</span
>
<span v-else style="margin-left: -3px"></span> <span v-else style="margin-left: -3px"></span>
</p> </p>
</div> </div>
</div> </div>
<div <div v-if="crowdtype == 'myPublish' || crowdtype == 'competitive'" class="crowdnum" style="
v-if="crowdtype == 'myPublish' || crowdtype == 'competitive'"
class="crowdnum"
style="
background: #ffffff; background: #ffffff;
box-shadow: 0px 2px 8px 0px rgba(54, 61, 67, 0.1); box-shadow: 0px 2px 8px 0px rgba(54, 61, 67, 0.1);
padding: 15px 30px; padding: 15px 30px;
margin-top: 25px; margin-top: 25px;
" ">
> <el-divider v-if="task.processStatus == 0 || task.processStatus == 1" content-position="left">
<el-divider v-if="task.processStatus == 0 || task.processStatus == 1" content-position="left" <h3>任务提醒</h3>
><h3>任务提醒</h3></el-divider </el-divider>
>
<el-form label-width="150px" class="demo-ruleForm" label-position="left" style="margin-top: 10px"> <el-form label-width="150px" class="demo-ruleForm" label-position="left" style="margin-top: 10px">
<el-row v-if="task.processStatus == 0"> <el-row v-if="task.processStatus == 0">
<el-col :span="24"> <el-col :span="24">
@ -260,13 +219,14 @@
<div style="display: flex; align-items: center; margin: -10px 0; position: relative"> <div style="display: flex; align-items: center; margin: -10px 0; position: relative">
<!-- <div class="dvied"></div> --> <!-- <div class="dvied"></div> -->
<div style="font-weight: bold; color: #333333; font-size: 18px">竞标者名单</div> <div style="font-weight: bold; color: #333333; font-size: 18px">竞标者名单</div>
<div <div class="choseUserBtn" @click="choseUser"
class="choseUserBtn" v-if="task.process_status == 0 && userinform.companyStatus == 2">
@click="choseUser"
v-if="task.process_status == 0 && userinform.companyStatus == 2"
>
选中竞标用户 选中竞标用户
</div> </div>
<div class="downAttResume" @click="downLoadAtt"
v-if="task.process_status == 0 && userinform.companyStatus == 2">
批量下载附件简历
</div>
</div> </div>
<el-table v-loading="loading" :data="applicantdataList" border style="width: 100%; margin-top: 30px"> <el-table v-loading="loading" :data="applicantdataList" border style="width: 100%; margin-top: 30px">
<el-table-column label="序号" align="center" type="index" width="60"></el-table-column> <el-table-column label="序号" align="center" type="index" width="60"></el-table-column>
@ -298,70 +258,30 @@
scope.row.status == 0 ? '竞标中' : scope.row.status == 1 ? '竞标成功' : '竞标失败' scope.row.status == 0 ? '竞标中' : scope.row.status == 1 ? '竞标成功' : '竞标失败'
}}</el-tag }}</el-tag
> --> > -->
<el-tag <el-tag v-if="scope.row.status == 0" type="warning" effect="dark" size="small"
v-if="scope.row.status == 0" style="padding: 0 12px">竞标中</el-tag>
type="warning" <el-tag v-else-if="scope.row.status == 1" effect="dark" size="small"
effect="dark" style="padding: 0 12px">实施中</el-tag>
size="small" <el-tag v-else-if="scope.row.status == 3" effect="dark" size="small"
style="padding: 0 12px" style="padding: 0 12px; background: #11b7ed; border-color: #11b7ed">待验收</el-tag>
>竞标中</el-tag <el-tag v-else-if="scope.row.status == 4" effect="dark" size="small" style="padding: 0 12px"
> type="warning">待付款</el-tag>
<el-tag v-else-if="scope.row.status == 1" effect="dark" size="small" style="padding: 0 12px" <el-tag v-else-if="scope.row.status == 5" type="success" effect="dark" size="small"
>实施中</el-tag style="padding: 0 12px">已完成</el-tag>
> <el-tag v-else-if="scope.row.status == 6" type="danger" effect="dark" size="small"
<el-tag style="padding: 0 12px">验收不通过</el-tag>
v-else-if="scope.row.status == 3" <el-tag v-else type="danger" effect="dark" size="small"
effect="dark" style="padding: 0 12px">竞标失败</el-tag>
size="small"
style="padding: 0 12px; background: #11b7ed; border-color: #11b7ed"
>待验收</el-tag
>
<el-tag
v-else-if="scope.row.status == 4"
effect="dark"
size="small"
style="padding: 0 12px"
type="warning"
>待付款</el-tag
>
<el-tag
v-else-if="scope.row.status == 5"
type="success"
effect="dark"
size="small"
style="padding: 0 12px"
>已完成</el-tag
>
<el-tag
v-else-if="scope.row.status == 6"
type="danger"
effect="dark"
size="small"
style="padding: 0 12px"
>验收不通过</el-tag
>
<el-tag v-else type="danger" effect="dark" size="small" style="padding: 0 12px"
>竞标失败</el-tag
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="工作成果" v-if="userinform.companyStatus == 2" align="center" prop=""> <el-table-column label="工作成果" v-if="userinform.companyStatus == 2" align="center" prop="">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button v-if="scope.row.result_attach" type="text"
v-if="scope.row.result_attach" @click="download(scope.row.result_attach)">点击下载</el-button>
type="text"
@click="download(scope.row.result_attach)"
>点击下载</el-button
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="260"
label="操作" v-if="userinform.companyStatus == 2">
align="center"
class-name="small-padding fixed-width"
width="260"
v-if="userinform.companyStatus == 2"
>
<template slot-scope="scope"> <template slot-scope="scope">
<!-- <el-button <!-- <el-button
v-if="scope.row.user_id == userId || userinform.companyStatus == 2" v-if="scope.row.user_id == userId || userinform.companyStatus == 2"
@ -383,66 +303,37 @@
选中 选中
</el-button> --> </el-button> -->
<el-checkbox v-if="scope.row.status == 0" v-model="scope.row.isFlag">选中</el-checkbox> <el-checkbox v-if="scope.row.status == 0" v-model="scope.row.isFlag">选中</el-checkbox>
<el-button <el-button v-else-if="scope.row.status == 3 || scope.row.status == 1" type="text"
v-else-if="scope.row.status == 3 || scope.row.status == 1" @click="goFinnal(scope.row)">任务结项</el-button>
type="text" <el-button v-else-if="scope.row.status == 4" type="text"
@click="goFinnal(scope.row)" @click="goPay(scope.row)">支付佣金</el-button>
>任务结项</el-button <span v-else-if="scope.row.status == 5 && scope.row.reward">交易完成({{ scope.row.reward
> }})</span>
<el-button v-else-if="scope.row.status == 4" type="text" @click="goPay(scope.row)" <el-button v-else-if="scope.row.status == 6" style="color: #fe5555" type="text"
>支付佣金</el-button @click="goNoPass(scope.row)">验收不通过</el-button>
>
<span v-else-if="scope.row.status == 5 && scope.row.reward"
>交易完成({{ scope.row.reward }})</span
>
<el-button
v-else-if="scope.row.status == 6"
style="color: #fe5555"
type="text"
@click="goNoPass(scope.row)"
>验收不通过</el-button
>
<!-- is_comment 0未评价 1已评价 --> <!-- is_comment 0未评价 1已评价 -->
<el-button <el-button v-if="scope.row.status == 5 && scope.row.p_comment == 0"
v-if="scope.row.status == 5 && scope.row.p_comment == 0" @click="goreview(scope.row)" type="text" style="margin-left: 10px">去评价</el-button>
@click="goreview(scope.row)"
type="text"
style="margin-left: 10px"
>去评价</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div v-if="total > 10" style="width: 100%; margin-top: 30px; text-align: right"> <div v-if="total > 10" style="width: 100%; margin-top: 30px; text-align: right">
<el-pagination <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
background :current-page="currentPage" :page-size="pageSize" layout="total, prev, pager, next, jumper"
@size-change="handleSizeChange" :total="total">
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-size="pageSize"
layout="total, prev, pager, next, jumper"
:total="total"
>
</el-pagination> </el-pagination>
</div> </div>
<tester-detail <tester-detail ref="testerDetail" :crowdtype="crowdtype" :status="task.processStatus"
ref="testerDetail" :taskId="task.taskId" @closeDialog="closeDialog"></tester-detail>
:crowdtype="crowdtype"
:status="task.processStatus"
:taskId="task.taskId"
@closeDialog="closeDialog"
></tester-detail>
</div> </div>
<!-- 审核不通过信息 --> <!-- 审核不通过信息 -->
<div v-if="crowdtype == 'myApply' && task.status != 0"> <div v-if="crowdtype == 'myApply' && task.status != 0">
<div <div style="
style="
background: #ffffff; background: #ffffff;
box-shadow: 0px 2px 8px 0px rgba(54, 61, 67, 0.1); box-shadow: 0px 2px 8px 0px rgba(54, 61, 67, 0.1);
padding: 15px 30px; padding: 15px 30px;
margin-top: 25px; margin-top: 25px;
" ">
>
<div style="display: flex; align-items: center; width: 150px; margin-top: 20px"> <div style="display: flex; align-items: center; width: 150px; margin-top: 20px">
<div class="dvied"></div> <div class="dvied"></div>
<div style="font-weight: bold; color: #333333; font-size: 18px; margin-left: 10px"> <div style="font-weight: bold; color: #333333; font-size: 18px; margin-left: 10px">
@ -454,25 +345,12 @@
<div class="taskd"> <div class="taskd">
<p>审核状态</p> <p>审核状态</p>
<p> <p>
<el-tag <el-tag v-if="task.status == 0" type="primary" effect="dark" size="small"
v-if="task.status == 0" style="width: 68px; padding-left: 12px; padding-right: 12px; cursor: pointer">待审核</el-tag>
type="primary" <el-tag v-else-if="task.status == 1" type="success" effect="dark" size="small"
effect="dark" style="cursor: pointer">审核通过</el-tag>
size="small" <el-tag v-else type="danger" effect="dark" size="small"
style="width: 68px; padding-left: 12px; padding-right: 12px; cursor: pointer" style="cursor: pointer">审核不通过</el-tag>
>待审核</el-tag
>
<el-tag
v-else-if="task.status == 1"
type="success"
effect="dark"
size="small"
style="cursor: pointer"
>审核通过</el-tag
>
<el-tag v-else type="danger" effect="dark" size="small" style="cursor: pointer"
>审核不通过</el-tag
>
</p> </p>
</div> </div>
<div class="taskd"> <div class="taskd">
@ -489,9 +367,9 @@
</div> </div>
</div> </div>
<div v-if="crowdtype == 'myClaim'"> <div v-if="crowdtype == 'myClaim'">
<el-divider v-if="task.processStatus == 0 || task.processStatus == 1" content-position="left" <el-divider v-if="task.processStatus == 0 || task.processStatus == 1" content-position="left">
><h3>任务提醒</h3></el-divider <h3>任务提醒</h3>
> </el-divider>
<el-form label-width="150px" class="demo-ruleForm" label-position="left"> <el-form label-width="150px" class="demo-ruleForm" label-position="left">
<el-row v-if="task.processStatus == 0"> <el-row v-if="task.processStatus == 0">
<el-col :span="24"> <el-col :span="24">
@ -508,7 +386,9 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<el-divider content-position="left"><h3>发布者信息</h3></el-divider> <el-divider content-position="left">
<h3>发布者信息</h3>
</el-divider>
<el-form> <el-form>
<el-form-item label="公司名称" v-if="company.name != null"> <el-form-item label="公司名称" v-if="company.name != null">
{{ company.name }} {{ company.name }}
@ -525,13 +405,8 @@
</el-form> </el-form>
</div> </div>
<div style="width: 90%; display: inline-block; text-align: center; margin-top: 30px"> <div style="width: 90%; display: inline-block; text-align: center; margin-top: 30px">
<el-button <el-button type="primary" v-if="crowdtype == 'myApply' && task.status == 2" @click="publishTask"
type="primary" class="btn-yellow">修改并重新发布</el-button>
v-if="crowdtype == 'myApply' && task.status == 2"
@click="publishTask"
class="btn-yellow"
>修改并重新发布</el-button
>
</div> </div>
</div> </div>
<!-- v-show="task.status ==1" --> <!-- v-show="task.status ==1" -->
@ -562,10 +437,12 @@ import reviewDialogVue from '@/page/common/reviewDialog.vue'
import acceptanceVue from '@/page/common/acceptance.vue' import acceptanceVue from '@/page/common/acceptance.vue'
import payDialog from '@/page/common/payDialog.vue' import payDialog from '@/page/common/payDialog.vue'
import noPassDialog from '@/page/common/noPassDialog.vue' import noPassDialog from '@/page/common/noPassDialog.vue'
import downPdf from '../../../util/pdfDownLoad'
export default { export default {
mixins: [mixin], mixins: [mixin],
data() { data() {
return { return {
baseUrl: process.env.VUE_APP_BASE_API,
resultOpen: false, resultOpen: false,
loading: false, loading: false,
crowdtype: '', // crowdtype: '', //
@ -632,7 +509,7 @@ export default {
}) })
} }
}) })
.catch((err) => {}) .catch((err) => { })
} }
}, },
// //
@ -678,6 +555,16 @@ export default {
}) })
} }
}, },
downLoadAtt() {
const choseList = this.applicantdataList.filter((it) => it.isFlag)
if (choseList.length > 0) {
choseList.forEach(item => {
if (item.file_path) {
downPdf(this.baseUrl + item.file_path, item.nick_name + '附件简历.pdf')
}
})
}
},
// //
download(url) { download(url) {
window.location.href = url window.location.href = url
@ -715,7 +602,7 @@ export default {
this.applicantdataList = response.entrants this.applicantdataList = response.entrants
} }
}) })
.catch((err) => {}) .catch((err) => { })
}) })
}) })
}, },
@ -724,9 +611,9 @@ export default {
// this.userId = userId; // this.userId = userId;
// this.$refs.testerDetail.viewDetail(row, this.task.task_id) // this.$refs.testerDetail.viewDetail(row, this.task.task_id)
this.$router.push({ this.$router.push({
path: '/crowdsourcing/userhome', path: '/crowdsourcing/userhome',
query: { id: row.user_id, id2: this.task.task_id }, query: { id: row.user_id, id2: this.task.task_id },
}) })
}, },
// //
publishTask() { publishTask() {
@ -779,6 +666,24 @@ export default {
top: 0; top: 0;
right: 0; right: 0;
width: 105px; width: 105px;
height: 30px;
/* background: #2286fa; */
border: 1px solid #2286FA;
color: #2286FA;
border-radius: 4px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
font-weight: 500;
font-size: 14px;
}
.downAttResume {
position: absolute;
top: 0;
right: 120px;
width: 140px;
height: 32px; height: 32px;
background: #2286fa; background: #2286fa;
border-radius: 4px; border-radius: 4px;
@ -790,15 +695,18 @@ export default {
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
} }
.crowdnum >>> .el-checkbox__label {
.crowdnum>>>.el-checkbox__label {
padding-left: 3px; padding-left: 3px;
} }
.dvied { .dvied {
width: 4px; width: 4px;
height: 18px; height: 18px;
background: #0066eb; background: #0066eb;
} }
.backbtn >>> .el-button {
.backbtn>>>.el-button {
width: 80px; width: 80px;
height: 36px; height: 36px;
background: #0066eb; background: #0066eb;
@ -806,49 +714,60 @@ export default {
line-height: 35px; line-height: 35px;
padding: 0 15px; padding: 0 15px;
} }
.crowdnum >>> .el-divider--horizontal {
.crowdnum>>>.el-divider--horizontal {
margin: 13px 0; margin: 13px 0;
} }
.taskd { .taskd {
color: #4d4d4d; color: #4d4d4d;
display: flex; display: flex;
align-items: center; align-items: center;
} }
.taskd p { .taskd p {
margin: 0; margin: 0;
text-align: left; text-align: left;
font-size: 14px; font-size: 14px;
} }
.taskd p:nth-child(1) { .taskd p:nth-child(1) {
font-weight: bold; font-weight: bold;
width: 100px; width: 100px;
} }
.taskd p:nth-child(2) { .taskd p:nth-child(2) {
width: 220px; width: 220px;
} }
.crowdnum >>> .el-table th {
.crowdnum>>>.el-table th {
background-color: #f7f7f7; background-color: #f7f7f7;
color: #0e0c0c; color: #0e0c0c;
text-align: center; text-align: center;
border: none; border: none;
} }
.crowdnum >>> .el-table td {
.crowdnum>>>.el-table td {
/* text-align:center; */ /* text-align:center; */
background-color: #ffffff; background-color: #ffffff;
height: 60px; height: 60px;
color: #666666; color: #666666;
border: none; border: none;
} }
.crowdnum >>> .el-table--border th {
.crowdnum>>>.el-table--border th {
border-right: #f7f7f7; border-right: #f7f7f7;
} }
.crowdnum >>> .el-table--border,
.crowdnum>>>.el-table--border,
.el-table--group { .el-table--group {
border: none; border: none;
} }
.crowdnum >>> .el-table th.el-table__cell.is-leaf {
.crowdnum>>>.el-table th.el-table__cell.is-leaf {
border-bottom: none; border-bottom: none;
} }
.tabone { .tabone {
/* padding:3px; */ /* padding:3px; */
padding: 0px 10px; padding: 0px 10px;
@ -862,6 +781,7 @@ export default {
height: 28px; height: 28px;
font-size: 14px; font-size: 14px;
} }
.tabone1 { .tabone1 {
background: #fcf0e6; background: #fcf0e6;
border-radius: 4px; border-radius: 4px;

@ -4,7 +4,7 @@
<div class="dvied"></div> <div class="dvied"></div>
<div style="font-weight: bold;color: #333333;font-size: 18px;margin-left:10px">我的众包</div> <div style="font-weight: bold;color: #333333;font-size: 18px;margin-left:10px">我的众包</div>
</div> --> </div> -->
<div style="background:#FFFFFF;border-radius:4px;"> <div style="background:#FFFFFF;border-radius:4px;">
<div class="crowdnum"> <div class="crowdnum">
<el-tabs v-model="activeName" type="border-card" @tab-click="handleClick"> <el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
@ -55,7 +55,8 @@
</el-radio-button> </el-radio-button>
审核页 <crowdsource-audit ref="crowdsourceAudit" @closeDialog="closeDialog" ></crowdsource-audit> 审核页 <crowdsource-audit ref="crowdsourceAudit" @closeDialog="closeDialog" ></crowdsource-audit>
</el-radio-group> --> </el-radio-group> -->
<el-form v-if="crowdmol=='allTask'" :model="queryParams" ref="queryForm" :inline="true" label-width="68px" class="baseinfo" style="margin-top:30px"> <el-form v-if="crowdmol == 'allTask'" :model="queryParams" ref="queryForm" :inline="true"
label-width="68px" class="baseinfo" style="margin-top:30px">
<el-form-item label="任务状态" prop="processStatus"> <el-form-item label="任务状态" prop="processStatus">
<el-select v-model="queryParams.processStatus"> <el-select v-model="queryParams.processStatus">
<el-option label="请选择" value="">请选择</el-option> <el-option label="请选择" value="">请选择</el-option>
@ -66,37 +67,44 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="small" @click="showDataTypeChage('allTask')">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="small"
@click="showDataTypeChage('allTask')">搜索</el-button>
<el-button style="background: #F2A51A;" @click="resetQuery">重置</el-button> <el-button style="background: #F2A51A;" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading='loading' :data="crowdData" style="margin-top:30px" > <el-table v-loading='loading' :data="crowdData" style="margin-top:30px">
<el-table-column label="序号" width="100px" align="center"> <el-table-column label="序号" width="100px" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.$index + 1 }} {{ scope.$index + 1 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="任务ID" v-if="crowdmol=='allTask'" width="90" align="center" key="taskId" prop="taskId"/> <el-table-column label="任务ID" v-if="crowdmol == 'allTask'" width="90" align="center" key="taskId"
<el-table-column label="发布时间" align="center" key="createTime" prop="createTime" > prop="taskId" />
<el-table-column label="发布时间" align="center" key="createTime" prop="createTime">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.createTime">{{ parseTime(scope.row.createTime).toString().split(" ")[0]}}</span> <span v-if="scope.row.createTime">{{ parseTime(scope.row.createTime).toString().
split(" ")[0] }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目名称" align="center" key="projectName" prop="projectName" :show-overflow-tooltip="true" width="260px"/> <el-table-column label="项目名称" align="center" key="projectName" prop="projectName"
<el-table-column label="金额" align="center" key="price" prop="price" :show-overflow-tooltip="true"> :show-overflow-tooltip="true" width="260px" />
<el-table-column label="金额" align="center" key="price" prop="price" :show-overflow-tooltip="true">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.price == 0">面议</span> <span v-if="scope.row.price == 0">面议</span>
<span v-else>{{scope.row.price}}</span> <span v-else>{{ scope.row.price }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="任务类型" align="center" key="testType" prop="testType" :show-overflow-tooltip="true"> <el-table-column label="任务类型" align="center" key="testType" prop="testType"
:show-overflow-tooltip="true">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{findLabelValueByProp(tasktypelist,scope.row.testType,'dictValue', 'dictLabel')}}</span> <span>{{ findLabelValueByProp(tasktypelist, scope.row.testType, 'dictValue',
'dictLabel') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目工期" align="center" key="period" prop="period" :show-overflow-tooltip="true"> <el-table-column label="项目工期" align="center" key="period" prop="period"
:show-overflow-tooltip="true">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.period}}</span> <span>{{ scope.row.period }}</span>
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column v-if="crowdmol=='myClaim' || crowdmol=='myPublish'|| crowdmol=='tobeExpired'" <!-- <el-table-column v-if="crowdmol=='myClaim' || crowdmol=='myPublish'|| crowdmol=='tobeExpired'"
@ -105,74 +113,92 @@
<span v-if="scope.row.expireTime">{{ parseTime(scope.row.expireTime).toString().split(" ")[0]}}</span> <span v-if="scope.row.expireTime">{{ parseTime(scope.row.expireTime).toString().split(" ")[0]}}</span>
</template> </template>
</el-table-column> --> </el-table-column> -->
<el-table-column v-if="crowdmol =='myPublish'" label="任务状态" align="center" key="3" prop="processStatus" :show-overflow-tooltip="true" width="180px"> <el-table-column v-if="crowdmol == 'myPublish'" label="任务状态" align="center" key="3"
<template slot-scope="scope" > prop="processStatus" :show-overflow-tooltip="true" width="180px">
<p v-if="scope.row.processStatus" style="margin:0" class="tagcls"> <template slot-scope="scope">
<el-tag :color="scope.row.processStatus==2?'#fc5c1d':''" :type="scope.row.processStatus==0?'warning':scope.row.processStatus==1?'primary':scope.row.processStatus==3?'danger':'success'" effect="dark" <p v-if="scope.row.processStatus" style="margin:0" class="tagcls">
:style="scope.row.processStatus==2?'border:1px solid #fc5c1d;cursor:pointer':'cursor:pointer'">{{findByvalue(processStatuslist,parseInt(scope.row.processStatus))}}</el-tag> <el-tag :color="scope.row.processStatus == 2 ? '#fc5c1d' : ''"
:type="scope.row.processStatus == 0 ? 'warning' : scope.row.processStatus == 1 ? 'primary' : scope.row.processStatus == 3 ? 'danger' : 'success'"
effect="dark"
:style="scope.row.processStatus == 2 ? 'border:1px solid #fc5c1d;cursor:pointer' : 'cursor:pointer'">
{{ findByvalue(processStatuslist, parseInt(scope.row.processStatus)) }}</el-tag>
</p> </p>
<p v-else> <p v-else>
暂无 暂无
</p> </p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="crowdmol!='myPublish'" label="状态" align="center" key="1" prop="status" :show-overflow-tooltip="true"> <el-table-column v-if="crowdmol != 'myPublish'" label="状态" align="center" key="1" prop="status"
:show-overflow-tooltip="true">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.status == 0" type="primary" effect="dark" style="width:68px;padding-left: 12px;padding-right: 12px;cursor:pointer">待审核</el-tag> <el-tag v-if="scope.row.status == 0" type="primary" effect="dark"
<el-tag v-else-if="scope.row.status == 1" type="success" effect="dark" style="cursor:pointer">审核通过</el-tag> style="width:68px;padding-left: 12px;padding-right: 12px;cursor:pointer">待审核</el-tag>
<el-tag v-else-if="scope.row.status == 2" type="danger" effect="dark" style="cursor:pointer">审核不通过</el-tag> <el-tag v-else-if="scope.row.status == 1" type="success" effect="dark"
<el-tag v-else-if="scope.row.status == 3" type="info" effect="dark" style="cursor:pointer">草稿</el-tag> style="cursor:pointer">审核通过</el-tag>
<el-tag v-else-if="scope.row.status == 2" type="danger" effect="dark"
style="cursor:pointer">审核不通过</el-tag>
<el-tag v-else-if="scope.row.status == 3" type="info" effect="dark"
style="cursor:pointer">草稿</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="crowdmol !='myApply'" label="竞标者总数" align="center" key="appCount" :show-overflow-tooltip="true"> <el-table-column v-if="crowdmol != 'myApply'" label="竞标者总数" align="center" key="appCount"
:show-overflow-tooltip="true">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.row.personalAppCount + scope.row.companyAppCount}}</span> <span>{{ scope.row.personalAppCount + scope.row.companyAppCount }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="260"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="260">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" <el-button size="mini" type="text" icon="el-icon-edit"
v-if="(crowdmol=='myApply' && scope.row.status==2) ||((crowdmol=='myPublish') && (scope.row.processStatus==5 || scope.row.processStatus==6 ||scope.row.processStatus == 7))" v-if="(crowdmol == 'myApply' && scope.row.status == 2) || ((crowdmol == 'myPublish') && (scope.row.processStatus == 5 || scope.row.processStatus == 6 || scope.row.processStatus == 7))"
@click="publishTask(scope.row)" >重新发布 @click="publishTask(scope.row)">重新发布
</el-button> </el-button>
<el-button size="mini" type="text" icon="el-icon-edit" <el-button size="mini" type="text" icon="el-icon-edit"
v-if="(crowdmol=='myApply' && scope.row.status==3) ||((crowdmol=='myPublish') && (scope.row.processStatus==5 || scope.row.processStatus==6 ||scope.row.processStatus == 7))" v-if="(crowdmol == 'myApply' && scope.row.status == 3) || ((crowdmol == 'myPublish') && (scope.row.processStatus == 5 || scope.row.processStatus == 6 || scope.row.processStatus == 7))"
@click="publishTask(scope.row)" >去编辑 @click="publishTask(scope.row)">去编辑
</el-button> </el-button>
<router-link v-if="crowdmol=='myApply' && scope.row.status!=3" :to="{path:'/console/currentcrowd',query:{id:scope.row.applyId,type:crowdmol}}" class="link-type"> <router-link v-if="crowdmol == 'myApply' && scope.row.status != 3"
<el-button size="mini" type="text" icon="el-icon-key" >查看详情 :to="{ path: '/console/currentcrowd', query: { id: scope.row.applyId, type: crowdmol } }"
class="link-type">
<el-button size="mini" type="text" icon="el-icon-key">查看详情
</el-button> </el-button>
</router-link> </router-link>
<router-link v-if="crowdmol=='myPublish' || crowdmol=='myClaim'" :to="{path:'/console/currentcrowd',query:{id:scope.row.taskId,type:crowdmol}}" class="link-type"> <router-link v-if="crowdmol == 'myPublish' || crowdmol == 'myClaim'"
<el-button size="mini" type="text" icon="el-icon-key" >查看详情 :to="{ path: '/console/currentcrowd', query: { id: scope.row.taskId, type: crowdmol } }"
class="link-type">
<el-button size="mini" type="text" icon="el-icon-key">查看详情
</el-button> </el-button>
</router-link> </router-link>
<router-link v-if="crowdmol=='tobeExpired' || crowdmol=='allTask'" :to="{path:'/console/currentcrowd',query:{id:scope.row.applyId,type:crowdmol}}" class="link-type"> <router-link v-if="crowdmol == 'tobeExpired' || crowdmol == 'allTask'"
<el-button size="mini" type="text" icon="el-icon-key" >查看详情 :to="{ path: '/console/currentcrowd', query: { id: scope.row.applyId, type: crowdmol } }"
class="link-type">
<el-button size="mini" type="text" icon="el-icon-key">查看详情
</el-button> </el-button>
</router-link> </router-link>
<!-- <el-button style="margin-left: 10px;" v-if="crowdmol=='myPublish'&&scope.row.processStatus==2" @click="openresult(scope.row)" size="mini" type="text" icon="el-icon-download"> <!-- <el-button style="margin-left: 10px;" v-if="crowdmol=='myPublish'&&scope.row.processStatus==2" @click="openresult(scope.row)" size="mini" type="text" icon="el-icon-download">
验收实施结果 验收实施结果
</el-button> --> </el-button> -->
<!-- 多人 --> <!-- 多人 -->
<el-button @click="goDetail(scope.row.taskId)" v-if="crowdmol=='myPublish' && scope.row.processStatus == 4 && scope.row.needPerson > 1&& scope.row.needPerson != scope.row.commentCount" size="mini" type="text" style="margin-left:10px">去评价 <el-button @click="goDetail(scope.row.taskId)"
v-if="crowdmol == 'myPublish' && scope.row.processStatus == 4 && scope.row.needPerson > 1 && scope.row.needPerson != scope.row.commentCount"
size="mini" type="text" style="margin-left:10px">去评价
</el-button> </el-button>
<!-- 单人 --> <!-- 单人 -->
<el-button @click="oneReview(scope.row.taskId)" v-if="crowdmol=='myPublish' && scope.row.processStatus == 4 && scope.row.needPerson == 1 && scope.row.needPerson != scope.row.commentCount" size="mini" type="text" style="margin-left:10px">去评价 <el-button @click="oneReview(scope.row.taskId)"
v-if="crowdmol == 'myPublish' && scope.row.processStatus == 4 && scope.row.needPerson == 1 && scope.row.needPerson != scope.row.commentCount"
size="mini" type="text" style="margin-left:10px">去评价
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- :current-page="currentPage" --> <!-- :current-page="currentPage" -->
<div v-if="total>10" style='width:100%;margin-top:30px;text-align: center;'> <div v-if="total > 10" style='width:100%;margin-top:30px;text-align: center;'>
<el-pagination background <el-pagination background @current-change="handleCurrentChange" :page-size="queryParams.pageSize"
@current-change="handleCurrentChange" layout="total, prev, pager, next, jumper" :total="total">
:page-size="queryParams.pageSize"
layout="total, prev, pager, next, jumper"
:total="total">
</el-pagination> </el-pagination>
</div> </div>
<el-dialog title="验收实施结果" :visible.sync="resultOpen" width="600px" :close-on-click-modal="false" append-to-body class="tooldialog" @close="resultOpen = false"> <el-dialog title="验收实施结果" :visible.sync="resultOpen" width="600px" :close-on-click-modal="false"
append-to-body class="tooldialog" @close="resultOpen = false">
<el-divider style="margin-bottom:10px"></el-divider> <el-divider style="margin-bottom:10px"></el-divider>
<!--<div style="display:flex;margin-left:30px;"> <!--<div style="display:flex;margin-left:30px;">
<p style="font-weight:bold;margin-right:20px;color:#333333;">工具名称</p> <p style="font-weight:bold;margin-right:20px;color:#333333;">工具名称</p>
@ -182,9 +208,11 @@
<p style="font-weight:bold;margin-right:20px;color:#333333;">任务名称</p> <p style="font-weight:bold;margin-right:20px;color:#333333;">任务名称</p>
<p>{{currentTaskName}}</p> <p>{{currentTaskName}}</p>
</div> --> </div> -->
<div v-if="currenttsk&&currenttsk.resultAttach" style="text-align:left;margin-top:20px" @click="downloadFile()"> <div v-if="currenttsk && currenttsk.resultAttach" style="text-align:left;margin-top:20px"
<el-button icon='el-icon-download' style="background: #0066EB;color:#FFFFFF">下载实施结果查看</el-button> @click="downloadFile()">
<el-button icon='el-icon-download'
style="background: #0066EB;color:#FFFFFF">下载实施结果查看</el-button>
</div> </div>
<div style="display: flex;margin-top: 20px;align-items: center;"> <div style="display: flex;margin-top: 20px;align-items: center;">
<p style="margin-right:10px">验收是否通过</p> <p style="margin-right:10px">验收是否通过</p>
@ -194,248 +222,249 @@
</el-select> </el-select>
</div> </div>
<div style="display:flex;margin-top:30px;justify-content: center;"> <div style="display:flex;margin-top:30px;justify-content: center;">
<el-button style="background: #0066EB;color:#FFFFFF" @click="querepeo">确定</el-button> <el-button style="background: #0066EB;color:#FFFFFF" @click="querepeo">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</div> </div>
<crowdsource-task v-show="(crowdmol=='myApply' || crowdmol=='myPublish') && task != null" ref="crowdsourceTask"></crowdsource-task> <crowdsource-task v-show="(crowdmol == 'myApply' || crowdmol == 'myPublish') && task != null"
ref="crowdsourceTask"></crowdsource-task>
<!-- <crowdsource-task v-show="crowdmol=='myApply' && task != null" ref="crowdsourceTask"></crowdsource-task> --> <!-- <crowdsource-task v-show="crowdmol=='myApply' && task != null" ref="crowdsourceTask"></crowdsource-task> -->
<reviewDialogVue ref="reviewDialogVuer" @refresh="refreshFn"/> <reviewDialogVue ref="reviewDialogVuer" @refresh="refreshFn" />
</div> </div>
</template> </template>
<script> <script>
import {mapGetters} from "vuex"; import { mapGetters } from "vuex";
import {findByvalue, findLabelValueByProp} from "@/util/util"; import { findByvalue, findLabelValueByProp } from "@/util/util";
import {applicantlist,onsiteTypelist,processStatuslist} from "@/const/dict/commondict"; import { applicantlist, onsiteTypelist, processStatuslist } from "@/const/dict/commondict";
import {crowdlist,homecrowdlist,myClaim, myApply, myPublish,checkupTester} from "@/api/crowdsource/crowdsource"; import { crowdlist, homecrowdlist, myClaim, myApply, myPublish, checkupTester } from "@/api/crowdsource/crowdsource";
import CrowdsourceTask from "../../common/CrowdsourceTask"; import CrowdsourceTask from "../../common/CrowdsourceTask";
import mixin from '@/mixin/index.js' import mixin from '@/mixin/index.js'
import reviewDialogVue from '@/page/common/reviewDialog.vue' import reviewDialogVue from '@/page/common/reviewDialog.vue'
export default{ export default {
mixins: [mixin], mixins: [mixin],
data(){ data() {
return{ return {
activeName: 'myPublish', activeName: 'myPublish',
resultOpen:false, resultOpen: false,
crowdmol:'myPublish', crowdmol: 'myPublish',
crowdData:[], crowdData: [],
task:null, task: null,
// currentPage:'1', // currentPage:'1',
loading: false, loading: false,
myClaimShow: true, myClaimShow: true,
// companyStatus: 0, // companyStatus: 0,
// testerStatus: 0, // testerStatus: 0,
processStatuslist,// processStatuslist,//
// //
total: 0, total: 0,
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
taskStatus:undefined, taskStatus: undefined,
processStatus:undefined processStatus: undefined
}, },
ispass:'', ispass: '',
currenttsk:null, currenttsk: null,
isdown:false isdown: false
} }
},
computed: {
...mapGetters(['testtypelist', 'feescopelist', 'companyStatus', 'testerStatus', 'userinform'])
},
components: { CrowdsourceTask, reviewDialogVue },
watch: {
// $route: {
// handler(oldval,newval) {
// let tabtype=oldval.query.tabtype
// if(tabtype&&tabtype==1){
// this.crowdmol='myApply'
// this.listMyApply();
// }
// },
// immediate: true,
// }
},
mounted() {
// this.companyStatus = store.getters.companyStatus;
// this.testerStatus = store.getters.testerStatus;
// let tabtype=this.$route.query.tabtype;
// if(tabtype&&tabtype==1){
// this.crowdmol='myApply'
// this.listMyApply();
// }
// if (this.companyStatus == 2 && this.testerStatus !=2) {
// this.myClaimShow = false;
// // if (store.getters.activeName == 'myPublish' || store.getters.activeName == 'myClaim' || store.getters.activeName == 'myApply')
// // this.activeName = store.getters.activeName;
// // else
// // this.activeName = 'myPublish';
// } else {
// // if (store.getters.activeName == 'myPublish' || store.getters.activeName == 'myClaim' || store.getters.activeName == 'myApply')
// // this.activeName = store.getters.activeName;
// }
this.showDataTypeChage('myPublish')
},
methods: {
goDetail(id) {
this.$router.push({
path: '/console/currentcrowd',
query: {
id: id,
type: 'myPublish',
}
})
}, },
computed: { refreshFn() {
...mapGetters(['testtypelist','feescopelist','companyStatus','testerStatus','userinform']) this.listMyPublish()
}, },
components:{CrowdsourceTask, reviewDialogVue}, oneReview(id) {
watch:{ this.$refs.reviewDialogVuer.dialogVisible = true
// $route: { this.$refs.reviewDialogVuer.taskId = id
// handler(oldval,newval) { this.$refs.reviewDialogVuer.appraisee = 'one'
// let tabtype=oldval.query.tabtype
// if(tabtype&&tabtype==1){
// this.crowdmol='myApply'
// this.listMyApply();
// }
// },
// immediate: true,
// }
}, },
mounted(){ findByvalue,
// this.companyStatus = store.getters.companyStatus; findLabelValueByProp,
// this.testerStatus = store.getters.testerStatus; handleClick(tab) {
// let tabtype=this.$route.query.tabtype; this.crowdmol = tab.name
// if(tabtype&&tabtype==1){ this.showDataTypeChage(tab.name)
// this.crowdmol='myApply'
// this.listMyApply();
// }
// if (this.companyStatus == 2 && this.testerStatus !=2) {
// this.myClaimShow = false;
// // if (store.getters.activeName == 'myPublish' || store.getters.activeName == 'myClaim' || store.getters.activeName == 'myApply')
// // this.activeName = store.getters.activeName;
// // else
// // this.activeName = 'myPublish';
// } else {
// // if (store.getters.activeName == 'myPublish' || store.getters.activeName == 'myClaim' || store.getters.activeName == 'myApply')
// // this.activeName = store.getters.activeName;
// }
this.showDataTypeChage('myPublish')
}, },
methods:{ showDataTypeChage(val) {
goDetail(id) { if (val == 'myApply') {
this.$router.push({
path: '/console/currentcrowd', this.listMyApply();
query: { }
id: id, else if (val == 'myPublish') {
type: 'myPublish', this.listMyPublish();
} }
}) else if (val == 'myClaim') {
}, this.listMyClaim();
refreshFn() { }
this.listMyPublish() else if (val == 'tobeExpired') {
}, this.listTobeExpired();
oneReview(id) { }
this.$refs.reviewDialogVuer.dialogVisible = true else if (val == 'allTask') {
this.$refs.reviewDialogVuer.taskId = id this.listAllTask();
this.$refs.reviewDialogVuer.appraisee = 'one' }
}, },
findByvalue, //
findLabelValueByProp, listMyApply() {
handleClick(tab) { this.loading = true;
this.crowdmol = tab.name myApply(this.queryParams).then(response => {
this.showDataTypeChage(tab.name) this.crowdData = response.rows;
this.total = response.total;
}, this.loading = false;
showDataTypeChage(val){ })
if (val == 'myApply'){ },
//
this.listMyApply(); listMyPublish() {
} this.loading = true;
else if (val == 'myPublish'){ myPublish(this.queryParams).then(response => {
this.listMyPublish(); this.crowdData = response.rows;
} this.crowdData.forEach(item => {
else if (val == 'myClaim'){ item.processStatus = item.processStatus + ''
this.listMyClaim();
}
else if (val == 'tobeExpired'){
this.listTobeExpired();
}
else if (val == 'allTask'){
this.listAllTask();
}
},
//
listMyApply() {
this.loading = true;
myApply(this.queryParams).then(response => {
this.crowdData = response.rows;
this.total = response.total;
this.loading = false;
})
},
//
listMyPublish() {
this.loading = true;
myPublish(this.queryParams).then(response => {
this.crowdData = response.rows;
this.crowdData.forEach(item=>{
item.processStatus=item.processStatus+''
})
this.total = response.total;
this.loading = false;
})
},
//
listMyClaim() {
this.loading = true;
//
myClaim(this.queryParams,this.userinform.userId).then(response => {
this.crowdData = response.rows;
this.total = response.total;
this.loading = false;
})
},
//
listTobeExpired(){
this.loading = true;
this.queryParams.queryType = 1;
homecrowdlist(this.queryParams).then(response => {
this.crowdData = response.rows;
this.total = response.total;
this.loading = false;
})
},
//
listAllTask(){
this.loading = true;
this.queryParams.queryType = 2;
homecrowdlist(this.queryParams).then(response => {
this.crowdData = response.rows;
this.total = response.total;
this.loading = false;
})
},
//
handleCurrentChange(val) {
this.queryParams.pageNum=val;
this.showDataTypeChage(this.crowdmol)
},
//
publishTask(task) {
this.task = task;
this.$router.push(`/console/edittasks?applyId=${task.applyId}`)
// this.$refs.crowdsourceTask.openDialog(task);
},
//
downloadFile() {
if(this.currenttsk.resultAttach&&this.currenttsk.resultAttach.indexOf('https://www.keyitest.cn')==0){
window.location.href=this.currenttsk.resultAttach
this.isdown=true
}
// const loading = this.$loading({
// lock: true,
// text: '...',
// spinner: 'el-icon-loading',
// background: 'rgba(0, 0, 0, 0.7)'
// });
// downloadHttp(fileid)
// let fileUrl=`http://test.console.lovecode.cc/prod-api/common/download/fast?filePath=${fileid}&delete=false`
//
// downloadFast(fileid,loading);
},
openresult(row){
this.currenttsk=row
this.resultOpen=true
},
//
querepeo(){
// if(!this.isdown){
// this.$message.warning('')
// return;
// }
let data={
taskId:this.currenttsk.taskId,
testerId:this.userinform.userId,
processStatus:parseInt(this.ispass)
}
// return;
checkupTester(data).then(res=>{
this.resultOpen=false
this.isdown=false
this.listMyPublish();
this.$message.success('验收完成')
}) })
}, this.total = response.total;
// this.loading = false;
resetQuery() { })
// this.dateRange = []; },
this.resetForm("queryForm"); //
this.queryParams.pageNum=1 listMyClaim() {
this.showDataTypeChage(this.crowdmol) this.loading = true;
// this.listAllTask(); //
}, myClaim(this.queryParams, this.userinform.userId).then(response => {
fabuFn() { this.crowdData = response.rows;
this.$router.push('/console/edittasksFB') this.total = response.total;
this.loading = false;
})
},
//
listTobeExpired() {
this.loading = true;
this.queryParams.queryType = 1;
homecrowdlist(this.queryParams).then(response => {
this.crowdData = response.rows;
this.total = response.total;
this.loading = false;
})
},
//
listAllTask() {
this.loading = true;
this.queryParams.queryType = 2;
homecrowdlist(this.queryParams).then(response => {
this.crowdData = response.rows;
this.total = response.total;
this.loading = false;
})
},
//
handleCurrentChange(val) {
this.queryParams.pageNum = val;
this.showDataTypeChage(this.crowdmol)
},
//
publishTask(task) {
this.task = task;
this.$router.push(`/console/edittasks?applyId=${task.applyId}`)
// this.$refs.crowdsourceTask.openDialog(task);
},
//
downloadFile() {
if (this.currenttsk.resultAttach && this.currenttsk.resultAttach.indexOf('https://www.keyitest.cn') == 0) {
window.location.href = this.currenttsk.resultAttach
this.isdown = true
} }
// const loading = this.$loading({
// lock: true,
// text: '...',
// spinner: 'el-icon-loading',
// background: 'rgba(0, 0, 0, 0.7)'
// });
// downloadHttp(fileid)
// let fileUrl=`http://test.console.lovecode.cc/prod-api/common/download/fast?filePath=${fileid}&delete=false`
//
// downloadFast(fileid,loading);
},
openresult(row) {
this.currenttsk = row
this.resultOpen = true
},
//
querepeo() {
// if(!this.isdown){
// this.$message.warning('')
// return;
// }
let data = {
taskId: this.currenttsk.taskId,
testerId: this.userinform.userId,
processStatus: parseInt(this.ispass)
}
// return;
checkupTester(data).then(res => {
this.resultOpen = false
this.isdown = false
this.listMyPublish();
this.$message.success('验收完成')
})
},
//
resetQuery() {
// this.dateRange = [];
this.resetForm("queryForm");
this.queryParams.pageNum = 1
this.showDataTypeChage(this.crowdmol)
// this.listAllTask();
}, },
fabuFn() {
this.$router.push('/console/edittasksFB')
}
},
} }
</script> </script>
<style scoped> <style scoped>
.fabubtn { .fabubtn {
@ -456,90 +485,109 @@
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
} }
.dvied{
width: 4px; .dvied {
height: 18px; width: 4px;
background: #0066EB; height: 18px;
} background: #0066EB;
.crowdnum>>>.el-radio-button__inner{ }
background:#ebebed;
border:none; .crowdnum>>>.el-radio-button__inner {
margin-right:20px; background: #ebebed;
color: #4D4D4D; border: none;
display:flex; margin-right: 20px;
align-items: center; color: #4D4D4D;
/* font-weight:bold; */ display: flex;
} align-items: center;
.crowdnum>>>.el-radio-button:first-child .el-radio-button__inner{ /* font-weight:bold; */
border-radius:0; }
}
.crowdnum>>>.el-radio-button:last-child .el-radio-button__inner{ .crowdnum>>>.el-radio-button:first-child .el-radio-button__inner {
border-radius:0; border-radius: 0;
} }
.crowdnum>>>.el-table th{
background-color:#F7F7F7; .crowdnum>>>.el-radio-button:last-child .el-radio-button__inner {
color:#666666; border-radius: 0;
text-align:center; }
}
.crowdnum>>>.el-table td{ .crowdnum>>>.el-table th {
/* text-align:center; */ background-color: #F7F7F7;
background-color:#FFFFFF; color: #666666;
height:60px; text-align: center;
color:#333333; }
}
.crowdnum>>>.el-table--border th{ .crowdnum>>>.el-table td {
border-right:#F7F7F7 /* text-align:center; */
} background-color: #FFFFFF;
.baseinfo>>>.el-button{ height: 60px;
width:90px; color: #333333;
height:30px; }
background: #0066EB;
border-radius: 4px; .crowdnum>>>.el-table--border th {
margin-left:20px; border-right: #F7F7F7
color:#FFFFFF; }
margin-top:5px;
line-height:9px; .baseinfo>>>.el-button {
} width: 90px;
.tooldialog>>>.el-divider--horizontal{ height: 30px;
margin:-20px 0 10px 0; background: #0066EB;
} border-radius: 4px;
.tooldialog>>>.el-dialog__title{ margin-left: 20px;
font-weight:bold; color: #FFFFFF;
color: #0969bd margin-top: 5px;
} line-height: 9px;
.tagcls>>>.el-tag--small{ }
width:65px;
} .tooldialog>>>.el-divider--horizontal {
.el-tag{ margin: -20px 0 10px 0;
width:80px!important; }
}
.crowdnum>>>.el-tabs--border-card{ .tooldialog>>>.el-dialog__title {
background:transparent; font-weight: bold;
border:none; color: #0969bd
box-shadow:none; }
}
.crowdnum>>>.el-tabs--border-card>.el-tabs__header .el-tabs__item{ .tagcls>>>.el-tag--small {
border:none; width: 65px;
color:#1A1A1A; }
}
.crowdnum>>>.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{ .el-tag {
color: #0066EB; /* width: 80px !important; */
/* font-size: 16px; */ }
}
.crowdnum>>>.el-tabs--border-card>.el-tabs__content{ .crowdnum>>>.el-tabs--border-card {
padding: 0 0; background: transparent;
overflow: unset; border: none;
} box-shadow: none;
.crowdnum>>>.el-tabs--border-card>.el-tabs__header{ }
border:none;
background-color:#F7F7F7; .crowdnum>>>.el-tabs--border-card>.el-tabs__header .el-tabs__item {
/* color:#1A1A1A */ border: none;
} color: #1A1A1A;
.crowdnum>>>.el-tabs__item { }
height: 45px;
line-height: 45px; .crowdnum>>>.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active {
} color: #0066EB;
.crowdnum { /* font-size: 16px; */
position: relative; }
}
.crowdnum>>>.el-tabs--border-card>.el-tabs__content {
padding: 0 0;
overflow: unset;
}
.crowdnum>>>.el-tabs--border-card>.el-tabs__header {
border: none;
background-color: #F7F7F7;
/* color:#1A1A1A */
}
.crowdnum>>>.el-tabs__item {
height: 45px;
line-height: 45px;
}
.crowdnum {
position: relative;
}
</style> </style>

@ -1,15 +1,17 @@
function downPdf(val) { function downPdf(val, fileName) {
fetch(val).then(respose => { fetch(val)
return respose.blob() .then(respose => {
}).then(blob => { return respose.blob()
console.log(val); })
const url = URL.createObjectURL(blob) .then(blob => {
const a = document.createElement("a") console.log(val)
const name = val.substr(val.lastIndexOf('/') + 1, val.length) const url = URL.createObjectURL(blob)
a.href = url const a = document.createElement('a')
a.download = name const name = fileName ? fileName : val.substr(val.lastIndexOf('/') + 1, val.length)
a.click() a.href = url
a.download = name
a.click()
}) })
} }
export default downPdf export default downPdf

Loading…
Cancel
Save