change: 账户修改,liense工具下载

main
hcj 4 months ago
parent a6f3e31e71
commit c228536503
  1. 1
      .env.development
  2. 4
      package.json
  3. BIN
      pc_test.zip
  4. BIN
      public/assets/empty/noEvaluate.png
  5. BIN
      public/assets/empty/noTrainClass.png
  6. BIN
      public/assets/empty/noUsePerson.png
  7. 92
      src/App.vue
  8. 8
      src/api/my/testb.js
  9. 12
      src/api/train/index.js
  10. 51
      src/components/emptyPage/index.vue
  11. 29
      src/components/envMessageBox/index.vue
  12. 60
      src/components/myUpload/index.vue
  13. 7
      src/const/dict/commondict.js
  14. 3
      src/main.js
  15. 65
      src/page/common/mobileTip.vue
  16. 292
      src/page/community/index.vue
  17. 3
      src/page/homepage/crowdsourcing/publishtasks.vue
  18. 322
      src/page/homepage/tool/tooldetails.vue
  19. 2
      src/page/homepage/tool/toolmarker.vue
  20. 288
      src/page/homepage/traininstitute/train.vue
  21. 19
      src/page/personalpage/demand/index.vue
  22. 113
      src/page/personalpage/myBm/index.vue
  23. 5
      src/page/personalpage/myreview/index.vue
  24. 98
      src/page/personalpage/testmanagement/mytool.vue
  25. 5
      src/page/personalpage/testtool/myorder.vue
  26. 535
      src/page/personalpage/testtreasure/testKit.vue
  27. 18
      src/router/router.js
  28. 1
      src/style/index.scss
  29. 1
      src/style/variable.scss
  30. 39
      src/util/cpoyText.js
  31. 12
      src/util/runEnv.js
  32. 8
      vue.config.js

@ -6,6 +6,7 @@ VUE_APP_BASE_API = '/prod-api'
VUE_APP_BASE_TARGET = 'http://192.168.0.229: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.176:9998'

@ -38,7 +38,9 @@
"@vue/cli-plugin-babel": "^3.0.0-rc.5",
"@vue/cli-service": "^3.0.0-rc.5",
"vue-template-compiler": "^2.5.16",
"webpack-bundle-analyzer": "^4.10.2"
"webpack-bundle-analyzer": "^4.10.2",
"sass": "^1.77.8",
"sass-loader": "^7.1.0"
},
"postcss": {
"plugins": {

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@ -1,68 +1,90 @@
<template>
<div class="app-container">
<div class="app-container">
<router-view></router-view>
</div>
</div>
</template>
<script>
// /pc
import runEnv from './util/runEnv';
export default {
components: {
},
created() {
runEnv()
}
}
</script>
<style>
/* 在线客服样式 */
div[qzwz="0"] {
display: none;
}
#ttkefu_linkstate {
display: none;
display: none;
}
#ttkefu_minwindow_max {
display: none;
}
#ttkefu_minwindow_close {
display: none !important;
}
.foot_btn_out :first-child {
display: none !important;
}
.ShortcutOption {
display: none !important;
}
body{
margin:0px;
background-color:#EEEEEE;
min-width: 1200px;
}
.app-container{
padding:0px;
overflow-x:hidden;
}
.mui-bar-tab .mui-tab-item-tao.mui-active {
color: #007aff;
}
body {
margin: 0px;
background-color: #EEEEEE;
/* min-width: 1200px; */
}
.app-container {
padding: 0px;
overflow-x: hidden;
}
.mui-bar-tab .mui-tab-item-tao.mui-active {
color: #007aff;
}
.mui-bar-tab .mui-tab-item-tao {
display: table-cell;
overflow: hidden;
width: 1%;
height: 50px;
text-align: center;
vertical-align: middle;
white-space: nowrap;
text-overflow: ellipsis;
color: #929292;
display: table-cell;
overflow: hidden;
width: 1%;
height: 50px;
text-align: center;
vertical-align: middle;
white-space: nowrap;
text-overflow: ellipsis;
color: #929292;
}
.mui-bar-tab .mui-tab-item-tao .mui-icon {
top: 3px;
width: 24px;
height: 24px;
padding-top: 0;
padding-bottom: 0;
top: 3px;
width: 24px;
height: 24px;
padding-top: 0;
padding-bottom: 0;
}
.mui-bar-tab .mui-tab-item-tao .mui-icon~.mui-tab-label {
font-size:11px;
display:block;
overflow:hidden;
text-overflow:ellipsis;
font-size: 11px;
display: block;
overflow: hidden;
text-overflow: ellipsis;
}
</style>

@ -30,6 +30,14 @@ export function setaddaccount(data) {
data:data
})
}
//修改账户
export function updateAccount(data) {
return request({
url: '/mpay/update/account',
method: 'post',
data:data
})
}
//提现申请
export function withdrawapp(data) {
return request({

@ -103,4 +103,14 @@ export function getCourse(params,id) {
method: 'get',
params
})
}
}
// 上传结课资料
export function uploadEndClassReport(data) {
return request({
url: '/train/uploadReport',
method: 'post',
data
})
}

@ -0,0 +1,51 @@
<template>
<div class="emptyWrapper">
<img :src="imgSrc" alt="">
<p>
<slot></slot>
</p>
</div>
</template>
<script>
export default {
props: {
imgSrc: {
type: String
}
},
created() {
console.log(this.imgSrc);
},
data() {
return {
}
}
}
</script>
<style lang="scss" scoped>
.emptyWrapper {
width: 100%;
height: 100%;
height: calc(100vh - 100px);
text-align: center;
position: relative;
img {
position: absolute;
left: 50%;
transform: translate(-50%);
height: 273px;
top: 20%;
}
p {
position: absolute;
left: 50%;
transform: translate(-50%);
top: calc(20% + 193px);
}
}
</style>

@ -0,0 +1,29 @@
<template>
<div class="envMessage">
<label for="xx">请在电脑浏览器打开 http://bjkeyware.com</label>
<button style="" click="copyUrl">一键复制</button>
</div>
</template>
<script>
export default {
methods:{
copyUrl(){
console.log('1');
document.execCommand('xxxxx')
}
}
}
</script>
<style lang="scss" scoped>
.envMessage{
position: fixed;
z-index: 100;
width: 200px;
background-color: aqua;
left: 50vw;
transform: translateX(-50%);
top: 0;
}
</style>

@ -0,0 +1,60 @@
<template>
<el-upload class="upload-demo myupload" :action="action" :headers="headers" :on-preview="handlePreview"
:on-remove="handleRemove" :before-remove="beforeRemove" :on-success="successUpload" :limit="3"
:on-exceed="handleExceed" :before-upload="beforeAvatarUpload">
<slot></slot>
</el-upload>
</template>
<script>
import { mapGetters } from "vuex";
export default {
data() {
return {
action: process.env.VUE_APP_BASE_API + '/upload',
name: ''
};
},
computed: {
...mapGetters(['token']),
headers() {
return { Authorization: "Bearer " + this.token };
},
},
methods: {
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, fileList) {
},
beforeRemove(file, fileList) {
// return this.$confirm(` ${file.name}`);
},
successUpload(response) {
console.log(response);
this.$emit('upload', response, this.name)
},
beforeAvatarUpload(file, fileList) {
this.name = file.name
const filetype = file.name.slice(file.name.lastIndexOf('.', file.name.length))
console.log(filetype);
const isType = ['.doc', '.docx'].some(item => { return item == filetype })
console.log(isType);
if (!isType) {
this.$message.error('只能上传doc、docx格式文件!');
return false
}
}
}
}
</script>
<style lang="scss">
.myupload .el-upload-list {
display: none;
}
</style>

@ -26,3 +26,10 @@ export const processStatuslist =[
// {label: '未确认实施结果,过期下架', value:7},
{label: '实施结果不合格', value:8},
]
// 培训班ID
export const trainClassIdMap = {
'0':'校企合作班',
'1':'线下培训进阶班',
'2':'可靠性人才培训班',
'3':'师资培训班'
}

@ -54,6 +54,7 @@ window.downloadHttp = downloadHttp;
Vue.prototype.downloadFast = downloadFast;
Vue.prototype.downloadHttp = downloadHttp;
//过滤器全局名称,对应过滤函数方法名
Vue.filter("currency",currency)
@ -61,7 +62,7 @@ Vue.filter("currency",currency)
Vue.use(MintUI);
Vue.use(ElementUI);
Vue.config.productionTip = false
new Vue({
const app = new Vue({
router,store,axios,
render: h => h(App)
}).$mount('#app')

@ -0,0 +1,65 @@
<template>
<div class="mobileWrap">
<div class="tipText">
<p>关键测试宝pc端</p>
<p>请使用电脑浏览器访问</p>
</div>
<div class="urlCopy">
<div>https://www.bjkeyware.com/</div>
<div class="copyBtn" @click="copyUrl">复制</div>
</div>
</div>
</template>
<script>
import copyText from '../../util/cpoyText';
export default {
methods: {
copyUrl() {
const url = 'https://www.bjkeyware.com'
const result = copyText(url)
this.$message.success(result)
}
}
}
</script>
<style lang="scss" scoped>
.mobileWrap {
width: 100vw;
height: 100vh;
text-align: center;
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: linear-gradient(0deg, #88B6FB, #FFFFFF);
.tipText {
width: 296px;
height: 85px;
font-family: PingFang SC;
font-weight: 500;
font-size: 18px;
color: #1A1A1A;
line-height: 14px;
}
.urlCopy {
width: 75vw;
line-height: 35px;
background: #C6D9F7;
text-align: center;
border-radius: 4px;
padding: 0 25px;
display: flex;
justify-content: center;
.copyBtn {
margin-left: 25px;
color: #227BF4;
}
}
}
</style>

@ -0,0 +1,292 @@
<template>
<div>
<div v-clickoutside="hideReplyBtn" @click="inputFocus" class="my-reply">
<el-avatar class="header-img" :size="40" :src="myHeader"></el-avatar>
<div class="reply-info" >
<div
tabindex="0"
contenteditable="true"
id="replyInput"
spellcheck="false"
placeholder="输入评论..."
class="reply-input"
@focus="showReplyBtn"
@input="onDivInput($event)"
>
</div>
</div>
<div class="reply-btn-box" v-show="btnShow">
<el-button class="reply-btn" size="medium" @click="sendComment" type="primary">发表评论</el-button>
</div>
</div>
<div v-for="(item,i) in comments" :key="i" class="author-title reply-father">
<el-avatar class="header-img" :size="40" :src="item.headImg"></el-avatar>
<div class="author-info">
<span class="author-name">{{item.name}}</span>
<span class="author-time">{{item.time}}</span>
</div>
<div class="icon-btn">
<span @click="showReplyInput(i,item.name,item.id)"><i class="iconfont el-icon-s-comment"></i>{{item.commentNum}}</span>
<i class="iconfont el-icon-caret-top"></i>{{item.like}}
</div>
<div class="talk-box">
<p>
<span class="reply">{{item.comment}}</span>
</p>
</div>
<div class="reply-box">
<div v-for="(reply,j) in item.reply" :key="j" class="author-title">
<el-avatar class="header-img" :size="40" :src="reply.fromHeadImg"></el-avatar>
<div class="author-info">
<span class="author-name">{{reply.from}}</span>
<span class="author-time">{{reply.time}}</span>
</div>
<div class="icon-btn">
<span @click="showReplyInput(i,reply.from,reply.id)"><i class="iconfont el-icon-s-comment"></i>{{reply.commentNum}}</span>
<i class="iconfont el-icon-caret-top"></i>{{reply.like}}
</div>
<div class="talk-box">
<p>
<span>回复 {{reply.to}}:</span>
<span class="reply">{{reply.comment}}</span>
</p>
</div>
<div class="reply-box">
</div>
</div>
</div>
<div v-show="_inputShow(i)" class="my-reply my-comment-reply">
<el-avatar class="header-img" :size="40" :src="myHeader"></el-avatar>
<div class="reply-info" >
<div tabindex="0" contenteditable="true" spellcheck="false" placeholder="输入评论..." @input="onDivInput($event)" class="reply-input reply-comment-input"></div>
</div>
<div class=" reply-btn-box">
<el-button class="reply-btn" size="medium" @click="sendCommentReply(i,j)" type="primary">发表评论</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
const clickoutside = {
//
bind(el, binding, vnode) {
function documentHandler(e) {
//
if (el.contains(e.target)) {
return false;
}
//
if (binding.expression) {
// binding.valuehandleClose
binding.value(e);
}
}
// 便unbind
el.vueClickOutside = documentHandler;
document.addEventListener('click', documentHandler);
},
update() {},
unbind(el, binding) {
//
document.removeEventListener('click', el.vueClickOutside);
delete el.vueClickOutside;
},
};
export default {
name:'ArticleComment',
data(){
return{
btnShow: false,
index:'0',
replyComment:'',
myName:'Lana Del Rey',
myHeader:'https://ae01.alicdn.com/kf/Hd60a3f7c06fd47ae85624badd32ce54dv.jpg',
myId:19870621,
to:'',
toId:-1,
comments:[
{
name:'Lana Del Rey',
id:19870621,
headImg:'https://ae01.alicdn.com/kf/Hd60a3f7c06fd47ae85624badd32ce54dv.jpg',
comment:'我发布一张新专辑Norman Fucking Rockwell,大家快来听啊',
time:'2019年9月16日 18:43',
commentNum:2,
like:15,
inputShow:false,
reply:[
{
from:'Taylor Swift',
fromId:19891221,
fromHeadImg:'https://ae01.alicdn.com/kf/H94c78935ffa64e7e977544d19ecebf06L.jpg',
to:'Lana Del Rey',
toId:19870621,
comment:'我很喜欢你的新专辑!!',
time:'2019年9月16日 18:43',
commentNum:1,
like:15,
inputShow:false
},
{
from:'Ariana Grande',
fromId:1123,
fromHeadImg:'https://ae01.alicdn.com/kf/Hf6c0b4a7428b4edf866a9fbab75568e6U.jpg',
to:'Lana Del Rey',
toId:19870621,
comment:'别忘记宣传我们的合作单曲啊',
time:'2019年9月16日 18:43',
commentNum:0,
like:5,
inputShow:false
}
]
},
{
name:'Taylor Swift',
id:19891221,
headImg:'https://ae01.alicdn.com/kf/H94c78935ffa64e7e977544d19ecebf06L.jpg',
comment:'我发行了我的新专辑Lover',
time:'2019年9月16日 18:43',
commentNum:1,
like:5,
inputShow:false,
reply:[
{
from:'Lana Del Rey',
fromId:19870621,
fromHeadImg:'https://ae01.alicdn.com/kf/Hd60a3f7c06fd47ae85624badd32ce54dv.jpg',
to:'Taylor Swift',
toId:19891221,
comment:'新专辑和speak now 一样棒!',
time:'2019年9月16日 18:43',
commentNum:25,
like:5,
inputShow:false
}
]
},
{
name:'Norman Fucking Rockwell',
id:20190830,
headImg:'https://ae01.alicdn.com/kf/Hdd856ae4c81545d2b51fa0c209f7aa28Z.jpg',
comment:'Plz buy Norman Fucking Rockwell on everywhere',
time:'2019年9月16日 18:43',
commentNum:0,
like:5,
inputShow:false,
reply:[]
},
]
}
},
directives: {clickoutside},
methods: {
inputFocus(){
var replyInput = document.getElementById('replyInput');
replyInput.style.padding= "8px 8px"
replyInput.style.border ="2px solid blue"
replyInput.focus()
},
showReplyBtn(){
this.btnShow = true
},
hideReplyBtn(){
this.btnShow = false
replyInput.style.padding= "10px"
replyInput.style.border ="none"
},
showReplyInput(i,name,id){
this.comments[this.index].inputShow = false
this.index =i
this.comments[i].inputShow = true
this.to = name
this.toId = id
},
_inputShow(i){
return this.comments[i].inputShow
},
sendComment(){
if(!this.replyComment){
this.$message({
showClose: true,
type:'warning',
message:'评论不能为空'
})
}else{
let a ={}
let input = document.getElementById('replyInput')
let timeNow = new Date().getTime();
let time= this.dateStr(timeNow);
a.name= this.myName
a.comment =this.replyComment
a.headImg = this.myHeader
a.time = time
a.commentNum = 0
a.like = 0
this.comments.push(a)
this.replyComment = ''
input.innerHTML = '';
}
},
sendCommentReply(i,j){
if(!this.replyComment){
this.$message({
showClose: true,
type:'warning',
message:'评论不能为空'
})
}else{
let a ={}
let timeNow = new Date().getTime();
let time= this.dateStr(timeNow);
a.from= this.myName
a.to = this.to
a.fromHeadImg = this.myHeader
a.comment =this.replyComment
a.time = time
a.commentNum = 0
a.like = 0
this.comments[i].reply.push(a)
this.replyComment = ''
document.getElementsByClassName("reply-comment-input")[i].innerHTML = ""
}
},
onDivInput: function(e) {
this.replyComment = e.target.innerHTML;
},
dateStr(date){
//js
var time=new Date().getTime();
// js php
time=parseInt((time-date)/1000);
//
var s;
if(time<60*10){//十分钟内
return '刚刚';
}else if((time<60*60)&&(time>=60*10)){
//1
s = Math.floor(time/60);
return s+"分钟前";
}else if((time<60*60*24)&&(time>=60*60)){
//124
s = Math.floor(time/60/60);
return s+"小时前";
}else if((time<60*60*24*30)&&(time>=60*60*24)){
//130
s = Math.floor(time/60/60/24);
return s+"天前";
}else{
//30ddd
var date= new Date(parseInt(date));
return date.getFullYear()+"/"+(date.getMonth()+1)+"/"+date.getDate();
}
}
},
}
</script>

@ -154,6 +154,7 @@
<el-input v-model="taskform.contactName" placeholder="请输入姓名"></el-input>
</div>
</el-form-item>
<el-form-item label="联系电话" prop="contactTel" style="width: 48%">
<div style="display: flex; justify-content: space-between">
<el-input v-model="taskform.contactTel" placeholder="请输入手机号"></el-input>
@ -337,7 +338,7 @@ export default {
// },
},
},
title: '发布众包任务',
province: '北京市',
city: '北京市',

@ -36,58 +36,32 @@
</div>
<div class="tabbarBox container">
<div class="tabbarBoxTab">
<div
:class="{ tabbarBoxitemact: activetab == 'cpjjBox' }"
class="tabbarBoxTabitem"
@click="scrollFn('cpjjBox')"
>
<div :class="{ tabbarBoxitemact: activetab == 'cpjjBox' }" class="tabbarBoxTabitem"
@click="scrollFn('cpjjBox')">
产品简介
</div>
<div
v-show="functions.length"
:class="{ tabbarBoxitemact: activetab == 'cpgnBox' }"
class="tabbarBoxTabitem"
@click="scrollFn('cpgnBox')"
>
<div v-show="functions.length" :class="{ tabbarBoxitemact: activetab == 'cpgnBox' }"
class="tabbarBoxTabitem" @click="scrollFn('cpgnBox')">
产品功能
</div>
<div
v-show="highlights.length"
:class="{ tabbarBoxitemact: activetab == 'cpldBox' }"
class="tabbarBoxTabitem"
@click="scrollFn('cpldBox')"
>
<div v-show="highlights.length" :class="{ tabbarBoxitemact: activetab == 'cpldBox' }"
class="tabbarBoxTabitem" @click="scrollFn('cpldBox')">
产品亮点
</div>
<div
:class="{ tabbarBoxitemact: activetab == 'cpjgBox' }"
class="tabbarBoxTabitem"
@click="scrollFn('cpjgBox')"
>
<div :class="{ tabbarBoxitemact: activetab == 'cpjgBox' }" class="tabbarBoxTabitem"
@click="scrollFn('cpjgBox')">
产品价格
</div>
<div
:class="{ tabbarBoxitemact: activetab == 'fwzcBox' }"
class="tabbarBoxTabitem"
@click="scrollFn('fwzcBox')"
v-show="tool.package || tool.instructionManual || tool.userGuide"
>
<div :class="{ tabbarBoxitemact: activetab == 'fwzcBox' }" class="tabbarBoxTabitem"
@click="scrollFn('fwzcBox')" v-show="tool.package || tool.instructionManual || tool.userGuide">
服务与支持
</div>
<div
:class="{ tabbarBoxitemact: activetab == 'cpspBox' }"
class="tabbarBoxTabitem"
@click="scrollFn('cpspBox')"
v-show="tool.vedio"
>
<div :class="{ tabbarBoxitemact: activetab == 'cpspBox' }" class="tabbarBoxTabitem"
@click="scrollFn('cpspBox')" v-show="tool.vedio">
产品视频
</div>
<div
:class="{ tabbarBoxitemact: activetab == 'cjwtBox' }"
class="tabbarBoxTabitem"
@click="scrollFn('cjwtBox')"
v-show="tool.productQA"
>
<div :class="{ tabbarBoxitemact: activetab == 'cjwtBox' }" class="tabbarBoxTabitem"
@click="scrollFn('cjwtBox')" v-show="tool.productQA">
常见问题
</div>
</div>
@ -127,28 +101,24 @@
服务与支持
</div>
<div class="fwyzcbox" v-show="tool.package || tool.instructionManual || tool.userGuide">
<div
style="
<div style="
display: flex;
justify-content: space-between;
align-items: center;
margin: 20px 0 0px 0;
height: 50px;
background: #f4f5fa;
"
v-if="tool.package"
>
" v-if="tool.package">
<p class="download" style="font-size: 14px; margin: 0 25px">
<img
style="margin-right: 10px; vertical-align: bottom"
src="/assets/tool/pdf.png"
alt=""
/>
<img style="margin-right: 10px; vertical-align: bottom" src="/assets/tool/pdf.png"
alt="" />下载软件包
</p>
<el-button class="downBtn" @click="warnBuy">下载 <i class="el-icon-download"></i></el-button>
<el-button class="downBtn" @click="warnBuy">{{ (tool.package.indexOf('http') == '-1') ? '下载' :'复制下载链接' }}
<i class="el-icon-copy-document" v-if="tool.package.indexOf('http') != '-1'"></i>
<i class="el-icon-download" v-else></i>
</el-button>
</div>
<div
style="
<div style="
display: flex;
justify-content: space-between;
align-items: center;
@ -156,20 +126,14 @@
height: 50px;
background: #f4f5fa;
margin-top: 20px;
"
v-if="tool.instructionManual"
>
" v-if="tool.instructionManual">
<p class="download" style="font-size: 14px; margin: 0 25px">
<img
style="margin-right: 10px; vertical-align: bottom"
src="/assets/tool/pdf.png"
alt=""
/>
<img style="margin-right: 10px; vertical-align: bottom" src="/assets/tool/pdf.png"
alt="" />下载安装手册
</p>
<el-button class="downBtn" @click="downloadReadme">下载 <i class="el-icon-download"></i></el-button>
</div>
<div
style="
<div style="
display: flex;
justify-content: space-between;
align-items: center;
@ -177,19 +141,13 @@
height: 50px;
background: #f4f5fa;
margin-top: 20px;
"
v-if="tool.userGuide"
>
" v-if="tool.userGuide">
<p class="download" style="font-size: 14px; margin: 0 25px">
<img
style="margin-right: 10px; vertical-align: bottom"
src="/assets/tool/pdf.png"
alt=""
/>
<img style="margin-right: 10px; vertical-align: bottom" src="/assets/tool/pdf.png"
alt="" />下载用户手册
</p>
<el-button class="downBtn" @click="downloadInstruction"
>下载 <i class="el-icon-download"></i
></el-button>
<el-button class="downBtn" @click="downloadInstruction">下载 <i
class="el-icon-download"></i></el-button>
</div>
</div>
<div class="cpldBoxTitle" id="cpspBox" v-show="tool.vedio">产品视频</div>
@ -197,23 +155,14 @@
<video width="385px" controls="controls" class="avatar" :src="tool.vedio"></video>
</div>
<div class="cpldBoxTitle" id="cjwtBox" v-show="tool.productQA">常见问题</div>
<div
style="background: #ffffff; font-size: 14px; font-weight: 400; color: #000000; line-height: 35px"
v-show="tool.productQA"
>
<div style="background: #ffffff; font-size: 14px; font-weight: 400; color: #000000; line-height: 35px"
v-show="tool.productQA">
<p style="white-space: pre-line">{{ tool.productQA }}</p>
</div>
</div>
<el-dialog
:title="title"
:visible.sync="paydiaopen"
width="574px"
:close-on-click-modal="false"
append-to-body
@close="closeBuyDialog()"
class="paydialog"
>
<el-dialog :title="title" :visible.sync="paydiaopen" width="574px" :close-on-click-modal="false" append-to-body
@close="closeBuyDialog()" class="paydialog">
<el-divider></el-divider>
<el-form :model="buyTool" label-width="100px" class="demo-ruleForm" style="margin-top: 20px">
<el-form-item label="商品名称:">
@ -221,11 +170,7 @@
</el-form-item>
<el-form-item label="服务类型:">
<el-select v-model="serviceType" size="small" placeholder="请选择">
<el-option
v-if="buyTool.deliverType == 'SaaS'"
label="测试服务(按次计)"
value="测试服务(按次计)"
>
<el-option v-if="buyTool.deliverType == 'SaaS'" label="测试服务(按次计)" value="测试服务(按次计)">
</el-option>
<el-option label="使用时长(按月计)" value="使用时长(按月计)"> </el-option>
</el-select>
@ -238,21 +183,12 @@
<span v-else>{{ serviceType == '测试服务(按次计)' ? buyTool.priceTime : buyTool.price }}</span>
</el-form-item>
<el-form-item label="购买数量:">
<span
v-if="
(serviceType == '测试服务(按次计)' && buyTool.priceTime == 0) ||
(serviceType == '使用时长(按月计)' && buyTool.price == 0)
"
>1</span
>
<el-input-number
v-else
size="mini"
v-model="buyAmount"
:min="1"
:max="999"
label="购买数量"
></el-input-number>
<span v-if="
(serviceType == '测试服务(按次计)' && buyTool.priceTime == 0) ||
(serviceType == '使用时长(按月计)' && buyTool.price == 0)
">1</span>
<el-input-number v-else size="mini" v-model="buyAmount" :min="1" :max="999"
label="购买数量"></el-input-number>
</el-form-item>
<el-form-item label="交付方式:">
{{ buyTool.deliverType }}
@ -267,16 +203,13 @@
<el-row>
<el-col class="paytypebtn">
<el-radio size="small" v-model="paymentType" label="A01" border>
<img class="btnpayimg" src="/assets/home/zfb.png" alt="" />支付宝</el-radio
>
<img class="btnpayimg" src="/assets/home/zfb.png" alt="" />支付宝</el-radio>
<el-radio size="small" v-model="paymentType" label="W01" border>
<img class="btnpayimg" src="/assets/home/wx.png" alt="" />微信</el-radio
>
<img class="btnpayimg" src="/assets/home/wx.png" alt="" />微信</el-radio>
<el-radio size="small" v-model="paymentType" label="WALLET" border :disabled="myLQDDisable">
<img class="btnpayimg" src="/assets/home/lingqian.png" alt="" />{{
myLQDDisable ? '零钱不足' : '零钱'
}}</el-radio
>
}}</el-radio>
</el-col>
</el-row>
</el-form-item>
@ -285,15 +218,8 @@
<el-button @click="immediatelypay">立即支付</el-button>
</div>
</el-dialog>
<el-dialog
title="待支付"
:visible.sync="boxShow"
width="600px"
:before-close="handleClose"
class="qcode"
:close-on-click-modal="false"
@close="closeCode"
>
<el-dialog title="待支付" :visible.sync="boxShow" width="600px" :before-close="handleClose" class="qcode"
:close-on-click-modal="false" @close="closeCode">
<div style="width: 500px; margin: 0 auto; text-align: center">
<!-- <canvas width="150px" height="150px"></canvas>
<div id="qrcode" ref="qrcode"></div> -->
@ -306,13 +232,7 @@
</div>
</div>
</el-dialog>
<el-dialog
title="钱包支付"
:visible.sync="qianbaoShow"
width="600px"
class="qcode"
:close-on-click-modal="false"
>
<el-dialog title="钱包支付" :visible.sync="qianbaoShow" width="600px" class="qcode" :close-on-click-modal="false">
<div style="display: flex">
<div style="width: 100px; line-height: 40px">交易密码:</div>
<el-input v-model="jypassword" type="password" show-password></el-input>
@ -321,13 +241,8 @@
<el-button @click="qianbaozhifu">立即支付</el-button>
</div>
</el-dialog>
<el-dialog
title="设置密码"
:visible.sync="nopasswordDialog"
width="600px"
class="qcode"
:close-on-click-modal="false"
>
<el-dialog title="设置密码" :visible.sync="nopasswordDialog" width="600px" class="qcode"
:close-on-click-modal="false">
<div style="font-weight: 500; font-size: 16px; color: #333333; text-align: center">
您还未设置过交易密码
</div>
@ -339,6 +254,7 @@
</template>
<script>
import store from '@/store'
import cpoyText from '@/util/cpoyText.js'
import { mapGetters } from 'vuex'
import { findByvalue, findLabelValueByProp } from '@/util/util'
import { getTool, getFunction, queryOrderState, buyTool, noPayBuy } from '@/api/toolInfo/market'
@ -386,7 +302,7 @@ export default {
toolslist: [],
mp4InfoActive: {},
serviceType: '使用时长(按月计)',
baseUrl: process.env.VUE_APP_BASE_TARGET,
baseUrl: process.env.VUE_APP_BASE_API,
}
},
components: {
@ -485,9 +401,9 @@ export default {
this.$router.back()
},
//
handleChange(value) {},
handleChange(value) { },
//tab
handleClick(tab, event) {},
handleClick(tab, event) { },
/** 查询列表 */
getList() {
this.loading = true
@ -509,7 +425,7 @@ export default {
this.total = response.total
this.loading = false
})
.catch((err) => {})
.catch((err) => { })
},
@ -524,9 +440,19 @@ export default {
.then(() => {
this.$router.push('/login?type=log')
})
.catch(() => {})
.catch(() => { })
} else {
this.tool.package && window.open(this.tool.package,'_self')
if (!this.tool.package) {
return
}
// this.tool.package && window.open(this.tool.package,'_self')
if (this.tool.package.indexOf('http') == -1) {
window.open(this.baseUrl + this.tool.package, '_self')
} else {
const result = cpoyText(this.tool.package)
result && this.$message.success('复制成功')
}
}
// this.$alert("")
},
@ -541,9 +467,9 @@ export default {
.then(() => {
this.$router.push('/login?type=log')
})
.catch(() => {})
.catch(() => { })
} else {
this.tool.instructionManual && window.open(this.tool.instructionManual,'_self')
this.tool.instructionManual && window.open(this.tool.instructionManual, '_self')
}
},
//
@ -557,9 +483,9 @@ export default {
.then(() => {
this.$router.push('/login?type=log')
})
.catch(() => {})
.catch(() => { })
} else {
this.tool.userGuide && window.open(this.tool.userGuide,'_self')
this.tool.userGuide && window.open(this.tool.userGuide, '_self')
}
},
//
@ -573,7 +499,7 @@ export default {
.then(() => {
this.$router.push('/login?type=log')
})
.catch(() => {})
.catch(() => { })
} else {
addShoppingCart(this.id, this.amount).then((response) => {
if (response.code == 200) {
@ -607,7 +533,7 @@ export default {
.then(() => {
this.$router.push('/login?type=log')
})
.catch(() => {})
.catch(() => { })
} else {
this.paydiaopen = true
this.buyTool = this.tool
@ -849,42 +775,51 @@ export default {
height: 400px;
background: url('/assets/tool/topbg.png') no-repeat 100%;
}
.container {
width: 1200px;
margin: auto;
}
.topBgBox {
display: flex;
padding-top: 60px;
box-sizing: border-box;
}
.topBgimg {
width: 82px;
height: 86px;
margin-right: 40px;
}
.topBgimg img {
width: 82px;
height: 86px;
}
.topBgContent {
width: 580px;
}
.topBgContentT {
display: flex;
align-items: center;
justify-content: space-between;
}
.topBgContentTL {
font-weight: bold;
font-size: 32px;
color: #000000;
}
.nopay {
font-weight: 800;
font-size: 20px;
color: #de3834;
}
.topBgContentP {
font-weight: 500;
font-size: 14px;
@ -896,6 +831,7 @@ export default {
-webkit-box-orient: vertical;
margin: 40px 0;
}
.topBgContentB {
width: 100%;
height: 40px;
@ -911,9 +847,11 @@ export default {
box-sizing: border-box;
margin-bottom: 20px;
}
.tabbarBox {
padding-bottom: 50px;
}
.tabbarBoxTab {
height: 89px;
display: flex;
@ -922,6 +860,7 @@ export default {
border-bottom: 1px solid #f5f5f5;
margin-bottom: 60px;
}
.tabbarBoxTabitem {
height: 100%;
font-weight: 500;
@ -932,11 +871,13 @@ export default {
display: flex;
align-items: center;
}
.tabbarBoxitemact {
font-weight: bold;
color: #0066eb;
border-bottom: 4px solid #0066eb;
}
.cpjjBox {
display: flex;
align-items: center;
@ -944,30 +885,36 @@ export default {
padding-right: 35px;
box-sizing: border-box;
}
.cpjjBoximg {
width: 468px;
height: 360px;
}
.cpjjBoxCon {
width: 630px;
}
.cpjjBoxConT {
font-weight: bold;
font-size: 24px;
color: #000000;
margin-bottom: 30px;
}
.cpjjBoxConC {
font-weight: 500;
font-size: 14px;
color: #333333;
line-height: 32px;
}
.cpgnBox {
width: 100%;
background: #f7f8fc;
overflow: hidden;
}
.cpgnBoxTitle {
margin: 35px 0 45px 0;
font-weight: bold;
@ -975,11 +922,13 @@ export default {
color: #000000;
text-align: center;
}
.cpgnCon {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.cpgnConitem {
width: 590px;
background: url('/assets/tool/bg2.png') no-repeat;
@ -989,6 +938,7 @@ export default {
overflow: hidden;
padding: 34px 0;
}
.cpgnConitemTitle {
font-weight: bold;
font-size: 16px;
@ -997,6 +947,7 @@ export default {
padding: 0 34px;
box-sizing: border-box;
}
.cpgnConitemDesc {
font-weight: 500;
font-size: 14px;
@ -1005,9 +956,11 @@ export default {
padding: 0 34px;
box-sizing: border-box;
}
.cpldBox {
overflow: hidden;
}
.cpldBoxTitle {
font-weight: bold;
font-size: 24px;
@ -1015,12 +968,14 @@ export default {
margin: 45px 0;
text-align: center;
}
.cpldBoxCon {
display: grid;
grid-template-columns: 280px 280px 280px 280px;
justify-content: space-between;
/* flex-wrap: wrap; */
}
.cpldBoxConitem {
width: 280px;
/* height: 220px; */
@ -1037,11 +992,13 @@ export default {
margin-bottom: 20px;
padding-top: 24px;
}
.cpldBoxConitemimg {
width: 70px;
height: 70px;
margin-bottom: 32px;
}
.cpldBoxConitemtext {
font-weight: 500;
font-size: 14px;
@ -1053,12 +1010,14 @@ export default {
-webkit-line-clamp: 2;
-webkit-box-orient: vertical; */
}
.cpldBoxConjg {
display: flex;
height: 93px;
background: #f7f8fc;
border-radius: 6px;
}
.cpldBoxConimgbox {
width: 93px;
height: 93px;
@ -1068,10 +1027,12 @@ export default {
align-items: center;
justify-content: center;
}
.cpldBoxConimg {
width: 41px;
height: 41px;
}
.cpldBoxConimgboxtext {
flex: 1;
font-weight: 500;
@ -1088,27 +1049,32 @@ export default {
.person {
background: #ffffff;
}
.bgnk {
width: 920px;
margin: 30px auto;
display: flex;
justify-content: space-between;
}
.nobgnk {
width: 920px;
margin: 20px auto;
display: flex;
justify-content: space-between;
}
.keydap {
font-size: 18px;
font-weight: bold;
color: #1a1a1a;
line-height: 35px;
}
.el-divider--horizontal {
margin: 0;
}
/* .keyda :nth-child(2){
font-weight: bold;
color: #666666;
@ -1123,6 +1089,7 @@ export default {
color: #333333;
line-height: 35px;
}
/* .toolprice :nth-child(1){
color: #666666;
font-size:14px;
@ -1132,7 +1099,7 @@ export default {
color: #333333;
font-size:14px;
} */
.joinpurch >>> .el-button {
.joinpurch>>>.el-button {
margin-top: 15px;
font-size: 15px !important;
border: none;
@ -1142,41 +1109,49 @@ export default {
background: #f7a130;
border-radius: 4px;
}
.joinpurch123 {
display: flex;
align-items: center;
justify-content: center;
margin-top: 20px;
}
.joinpurch123 >>> .el-button {
.joinpurch123>>>.el-button {
width: 496px;
height: 50px;
background: #2084f9;
border-radius: 6px;
color: #ffffff;
}
.goodsde >>> .el-tabs__item {
.goodsde>>>.el-tabs__item {
font-size: 18px;
color: #333333;
}
.goodsde >>> .el-tabs__item.is-active {
.goodsde>>>.el-tabs__item.is-active {
font-size: 18px;
font-weight: bold;
color: #0066eb;
}
.goodsde >>> .el-tabs__item:hover {
.goodsde>>>.el-tabs__item:hover {
font-size: 18px;
font-weight: bold;
color: #0066eb;
}
.goodsde >>> .el-tabs__active-bar {
.goodsde>>>.el-tabs__active-bar {
background-color: #0066eb;
}
.dvied {
width: 4px;
height: 18px;
background: #0066eb;
}
.sourcecode {
width: 530px;
height: 93px;
@ -1188,6 +1163,7 @@ export default {
/* margin-left:30px; */
/* padding:10px 0 */
}
.sourcecode :nth-child(1) {
/* width: 93px; */
/* height: 93px; */
@ -1196,17 +1172,20 @@ export default {
color: #1a1a1a;
/* margin:10px 0 */
}
.sourcecode :nth-child(2) {
font-size: 14px;
font-weight: 400;
color: #333333;
}
.paydialog >>> .el-form-item__content {
.paydialog>>>.el-form-item__content {
font-weight: 500;
font-size: 16px;
color: #333333;
}
.paydialog >>> .el-form-item__label {
.paydialog>>>.el-form-item__label {
font-weight: 500;
font-size: 16px;
color: #808080;
@ -1217,32 +1196,38 @@ export default {
font-weight: bold;
margin-right: 20px;
} */
.paydialog >>> .el-divider--horizontal {
.paydialog>>>.el-divider--horizontal {
margin: -30px 0 10px 0;
}
.paydialog >>> .el-dialog__title {
.paydialog>>>.el-dialog__title {
font-weight: bold;
color: #0969bd;
}
.paydialog >>> .el-form-item {
.paydialog>>>.el-form-item {
margin-bottom: 10px;
}
.goodsde {
width: 920px;
background: #fff;
margin: 0px auto;
padding: 30px 0;
}
.menuListBtn {
float: left;
margin-right: 50px;
font-size: 18px;
}
.menuListBtn:hover {
cursor: pointer;
color: #0066eb;
font-weight: bold;
}
.activeBtn {
color: #0066eb;
font-weight: bold;
@ -1254,12 +1239,14 @@ export default {
color: #1a1a1a;
margin-top: 40px;
}
.product {
font-size: 14px;
font-weight: 400;
color: #333333;
line-height: 37px;
}
.product::before {
content: '';
display: inline-block;
@ -1270,6 +1257,7 @@ export default {
margin-right: 6px;
margin-bottom: 2px;
}
.downBtn {
background: #0066eb;
border: none;
@ -1279,6 +1267,7 @@ export default {
padding: 8px 20px;
line-height: 0;
}
.downBtn:hover {
background: #0066eb;
border: none;
@ -1288,6 +1277,7 @@ export default {
padding: 8px 20px;
line-height: 0;
}
.downBtn:focus {
background: #0066eb;
border: none;
@ -1304,6 +1294,7 @@ export default {
background: #ffffff;
margin: 30px 0 15px 15px;
}
.rightBottomBox {
width: 264px;
height: 500px;
@ -1320,6 +1311,7 @@ export default {
z-index: 3;
box-shadow: 0px 5px 15px rgb(0 0 0 / 10%);
}
@media screen and (max-width: 1500px) {
.bgnk {
width: 920px;
@ -1327,30 +1319,36 @@ export default {
display: flex;
justify-content: space-between;
}
.nobgnk {
width: 920px;
margin: 20px auto;
display: flex;
justify-content: space-between;
}
.goodsde {
width: 920px;
margin: 0px auto;
padding: 30px 0;
}
}
.btnpayimg {
width: 17px;
height: 17px;
margin-right: 5px;
}
.paytypebtn >>> .el-radio__input {
.paytypebtn>>>.el-radio__input {
display: none;
}
.paytypebtn >>> .el-radio {
.paytypebtn>>>.el-radio {
margin-right: 0;
}
.paytypebtn >>> .el-radio__label {
.paytypebtn>>>.el-radio__label {
display: flex;
align-items: center;
padding: 0;

@ -131,6 +131,7 @@ export default {
deliverType: '', //
toolslist: [], //
currentPage: 1,
typeName:null,
total: '',
pageNum: 1,
pageSize: 20,
@ -178,6 +179,7 @@ export default {
pageNum: this.pageNum,
pageSize: this.pageSize,
status: 1,
typeName:this.typeName
}
Object.keys(data).forEach((keyd) => {
if (!data[keyd] || data[keyd] == '' || data[keyd] == '0' || data[keyd] == "''") {

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
<template>
<div class="crowdnum">
<el-table :data="sactionData">
<el-table v-if="sactionData.length" :data="sactionData">
<el-table-column label="用户名" align="center" key="name" prop="name" />
<el-table-column label="手机号" align="center" key="phone" prop="phone"></el-table-column>
<el-table-column label="技能服务" align="center" key="service" prop="service"></el-table-column>
@ -31,12 +31,18 @@
:total="total">
</el-pagination>
</div> -->
<emptyPage imgSrc="/assets/empty/noUsePerson.png" v-else>暂无用人记录</emptyPage>
</div>
</template>
<script>
import emptyPage from '@/components/emptyPage/index.vue'
import { mapGetters } from 'vuex'
import { querydemand } from '@/api/my/testb'
export default {
components: {
emptyPage
},
data() {
return {
sactionData: [],
@ -58,21 +64,24 @@ export default {
}
</script>
<style scoped>
.crowdnum >>> .el-table th {
.crowdnum>>>.el-table th {
background-color: #f7f7f7;
color: #666666;
text-align: center;
}
.crowdnum >>> .el-table td {
.crowdnum>>>.el-table td {
/* text-align:center; */
background-color: #ffffff;
height: 60px;
color: #333333;
}
.crowdnum >>> .el-table--border th {
.crowdnum>>>.el-table--border th {
border-right: #f7f7f7;
}
.crowdnum >>> .el-tooltip__popper {
.crowdnum>>>.el-tooltip__popper {
width: 33vw;
}
</style>

@ -12,35 +12,46 @@
<div v-if="item.status == 5" class="sign_sataus" style="background: #fc5c1d">已结束</div>
</div>
<div style="width: 100%; height: 1px; background-color: #ebebeb; margin: 15px 0"></div>
<div
style="
<div style="
display: flex;
justify-content: space-between;
font-size: 14px;
margin: 0 35px 0 28px;
align-items: center;
"
>
">
<p style="color: #666666">报名时间{{ dateFormat(new Date(item.registrationTime)) }}</p>
<p style="color: #333333">开课日期{{ dateFormat(new Date(item.trainStartTime), 'yyyy-MM-dd') }}</p>
<p style="color: #333333">结课时间{{ dateFormat(new Date(item.trainEndTime), 'yyyy-MM-dd') }}</p>
</div>
<div>
<div class="unloadFire" v-if="item.attachment" @click="downLoad(item)">资料下载</div>
<!-- <div class="catCourse" @click="">查看课程</div> -->
<div class="downloadAbount" @click="curCourse(item)">
<div class="catCourse" v-if="item.attachment" @click="downLoad(item)">资料下载</div>
<div class="catCourse" v-if="item.reportAttachment" @click="endReportDownload(item)">{{ item.reportName
}}
</div>
<myUpload v-if="reportShow(item)" class="unloadFire" @upload="uploadReport">{{ item.reportName ?
'覆盖上传报告'
: '上传结课报告' }}</myUpload>
</div>
</div>
<emptyPage v-if="signlist.length == 0" imgSrc="/assets/empty/noTrainClass.png">暂无培训班</emptyPage>
</div>
</template>
<script>
const endDay = 2 //
import emptyPage from '@/components/emptyPage/index.vue'
import { mapGetters } from 'vuex'
import { getmySignUpList } from '@/api/train/index.js'
import { getmySignUpList, uploadEndClassReport } from '@/api/train/index.js'
import { dateFormat } from '@/util/util'
import myUpload from '@/components/myUpload/index.vue'
export default {
components: {
myUpload, emptyPage
},
data() {
return {
signlist: [],
base: process.env.VUE_APP_BASE_TARGET,
base: process.env.VUE_APP_BASE_API,
currentCourse: {}
}
},
mounted() {
@ -52,6 +63,21 @@ export default {
})
},
computed: {
reportShow() {
return function (val) {
const nowTime = new Date().getTime()
const endTime = new Date(val.trainEndTime).getTime()
console.log('endtIME'+new Date(val.trainEndTime));
const sub = (endTime - nowTime) / (1000 * 60 * 60 * 24)
console.log(sub);
if (sub < 0) {
return false
} else if (sub < endDay) {
return true
}
return false
}
},
...mapGetters(['userinform']),
},
@ -62,22 +88,42 @@ export default {
window.open(this.base + row.attachment, '_self')
}
},
catCourse(param){
curCourse(item) {
this.currentCourse = item
},
async uploadReport(item, name) {
const data = {
trainingStudentId: this.currentCourse.studentId,
reportName: name,
reportAttachment: item.filePath
}
const res = await uploadEndClassReport(data)
if (res.code == 200) {
this.$message.success('上传成功')
}
},
endReportDownload(row) {
if (row.reportAttachment) {
window.open(this.base + row.reportAttachment, '_self')
}
},
catCourse(param) {
// console.log(param.trainClassId);
this.$router.push({path:'/console/course',query:{id:param.trainClassId}})
this.$router.push({ path: '/console/course', query: { id: param.trainClassId } })
}
},
}
</script>
<style scoped>
<style scoped lang="scss">
.crowdnum {
width: 49%;
background: #ffffff;
box-shadow: 0px 1px 12px 0px rgba(17, 19, 21, 0.06);
padding: 25px 0 30px 0;
padding: 25px 0 25px 0;
margin-bottom: 20px;
position: relative;
}
.sign_sataus {
width: 75px;
height: 28px;
@ -88,18 +134,39 @@ export default {
line-height: 28px;
text-align: center;
}
.unloadFire {
position: absolute;
bottom: 12px;
right: 130px;
cursor: pointer;
font-weight: 500;
font-size: 14px;
.catCourse {
color: #0066eb;
}
.catCourse{
cursor: pointer;
font-weight: 500;
}
.downloadAbount {
display: flex;
color: #0066eb;
font-weight: 500;
justify-content: flex-end;
padding: 0 36px;
text-align: center;
align-items: center;
.catCourse {
color: #0066eb;
margin-left: 15px;
cursor: pointer;
}
.unloadFire {
margin-left: 15px;
width: 116px;
line-height: 28px;
background: #F0F4FA;
border-radius: 14px;
border: 1px solid #92C0FC;
font-size: 14px;
color: #0066EB;
cursor: pointer;
}
}
</style>

@ -18,7 +18,7 @@
</div>
</div>
<!-- 分页 -->
<div style="width: 100%; margin-top: 30px; text-align: center">
<div v-if="viewList.length" style="width: 100%; margin-top: 30px; text-align: center">
<el-pagination
background
@current-change="handleCurrentChange"
@ -28,13 +28,16 @@
>
</el-pagination>
</div>
<emptyPage v-else imgSrc="/assets/empty/noEvaluate.png">暂无评价</emptyPage>
</div>
</template>
<script>
import emptyPage from '@/components/emptyPage/index.vue'
import { mapGetters } from 'vuex'
import { getMyreviewList } from '@/api/review/myreview.js'
export default {
components:{emptyPage},
data() {
return {
value1: 3,

@ -17,10 +17,8 @@
<p style="font-weight: bold; color: #1a1a1a; font-size: 18px">{{ tool.name }}</p>
<!-- <p style="font-size: 14px">规格{{ tool.deliverType == 'License' ? '按月' : '按次' }}</p> -->
<p style="font-size: 14px">交付方式{{ tool.deliver_type }}</p>
<p
v-if="tool.deliver_type == 'SaaS' && (tool.remark == 'times' || tool.remark == 'time')"
style="font-size: 14px"
>
<p v-if="tool.deliver_type == 'SaaS' && (tool.remark == 'times' || tool.remark == 'time')"
style="font-size: 14px">
剩余次数{{ tool.remains }}
</p>
<p v-if="tool.deliver_type == 'SaaS' && tool.remark == 'month'" style="font-size: 14px">
@ -33,39 +31,20 @@
<el-button >查看工具详情</el-button>
</router-link> -->
<!-- License只有按月 按钮下载安装+注册码 -->
<el-button
v-if="tool.deliver_type == 'License'"
style="background: #0165e9"
@click="downLoad(tool.packagePath)"
>下载安装</el-button
>
<el-button
v-if="tool.deliver_type == 'License'"
style="background: #f2a51a"
@click="zhuceCodeFn(tool.tool_id)"
>注册码</el-button
>
<el-button v-if="tool.deliver_type == 'License'" style="background: #0165e9"
@click="downLoad(tool.packagePath)">{{ (tool.packagePath.indexOf('http' == -1) ? '下载' : '复制下载链接') }}</el-button>
<el-button v-if="tool.deliver_type == 'License'" style="background: #f2a51a"
@click="zhuceCodeFn(tool.tool_id)">注册码</el-button>
<!-- SaaS按月 按钮在线试用+专属账密 -->
<el-button
v-if="tool.deliver_type == 'SaaS' && tool.remark == 'month'"
style="background: #0165e9"
@click="useOnline(tool.toolUrl)"
>在线使用</el-button
>
<el-button
v-if="tool.deliver_type == 'SaaS' && tool.remark == 'month'"
style="background: #f2a51a"
@click="myPass(tool.upasswd)"
>专属账密</el-button
>
<el-button v-if="tool.deliver_type == 'SaaS' && tool.remark == 'month'"
style="background: #0165e9" @click="useOnline(tool.toolUrl)">在线使用</el-button>
<el-button v-if="tool.deliver_type == 'SaaS' && tool.remark == 'month'"
style="background: #f2a51a" @click="myPass(tool.upasswd)">专属账密</el-button>
<!-- SaaS按次 按钮立即使用 -->
<el-button
v-if="tool.deliver_type == 'SaaS' && (tool.remark == 'times' || tool.remark == 'time')"
style="background: #0165e9"
@click="useTool(tool)"
>立即使用</el-button
>
style="background: #0165e9" @click="useTool(tool)">立即使用</el-button>
</div>
</div>
<div v-if="onTools.length == 0" style="width: 170px; margin: 30px auto">
@ -75,20 +54,14 @@
<div v-loading="loading" v-if="currentool == '失效工具'" style="display: flex; flex-wrap: wrap">
<div v-for="(tool, key) of offTools" :key="key" class="contrl">
<div class="yishixiao">已失效</div>
<img
style="width: 120px; object-fit: contain; margin: -10px 25px"
v-if="tool.icon != null"
:src="tool.icon"
alt=""
/>
<img style="width: 120px; object-fit: contain; margin: -10px 25px" v-if="tool.icon != null"
:src="tool.icon" alt="" />
<div style="text-align: left">
<p style="font-weight: bold; color: #1a1a1a; font-size: 18px">{{ tool.name }}</p>
<!-- <p style="font-size: 14px">规格{{ tool.deliverType == 'License' ? '按月' : '按次' }}</p> -->
<p style="font-size: 14px">交付方式{{ tool.deliver_type }}</p>
<p
v-if="tool.deliver_type == 'SaaS' && (tool.remark == 'times' || tool.remark == 'time')"
style="font-size: 14px"
>
<p v-if="tool.deliver_type == 'SaaS' && (tool.remark == 'times' || tool.remark == 'time')"
style="font-size: 14px">
剩余次数{{ tool.remains }}
</p>
<p v-if="tool.deliver_type == 'SaaS' && tool.remark == 'month'" style="font-size: 14px">
@ -114,27 +87,18 @@
</div>
<task-upload ref="taskUpload" @handleSuccess="MyToolslist"></task-upload>
<!-- 弹层 -->
<el-dialog
title="请输入机器码获取注册码"
:visible.sync="jiqimaOpen"
width="550px"
:close-on-click-modal="false"
@close="jiqimaOpenClose"
>
<el-dialog title="请输入机器码获取注册码" :visible.sync="jiqimaOpen" width="550px" :close-on-click-modal="false"
@close="jiqimaOpenClose">
<el-input v-model="jiqicode" placeholder="请输入机器码"></el-input>
<div style="display: flex; justify-content: center; align-items: center; margin-top: 20px">
<el-button
style="
<el-button style="
width: 250px;
height: 44px;
background: linear-gradient(90deg, #5ea6fd, #1a81f9);
border-radius: 22px;
font-size: 16px;
color: #ffffff;
"
@click="getZCCode"
>确定</el-button
>
" @click="getZCCode">确定</el-button>
</div>
</el-dialog>
<el-dialog title="注册码" :visible.sync="zhucemaOpen" width="550px" :close-on-click-modal="false">
@ -159,6 +123,7 @@ import { uploadTask } from '@/api/task/task'
import TaskUpload from './TaskUpload'
import { mapGetters } from 'vuex'
import { dateFormat } from '@/util/util'
import Axios from 'axios'
export default {
components: { TaskUpload },
data() {
@ -197,9 +162,13 @@ export default {
downLoad(url) {
if (url) {
if (url.indexOf('http') == -1) {
window.open(this.base + url,'_self')
// navigator.clipboard.writeText(this.base + url);
// this.$message.success('')
window.open(this.base + url, '_self')
} else {
window.open(url,'_self')
// window.open(url, '_self')
navigator.clipboard.writeText(url);
this.$message.success('复制成功')
}
} else {
this.$message.warning('下载失败,请联系管理员')
@ -262,7 +231,7 @@ export default {
return item.status == 1
})
this.loading = false
console.log(this.onTools);
console.log(this.onTools);
})
},
@ -298,19 +267,23 @@ export default {
line-height: 35px;
text-align: center;
}
.dvied {
width: 4px;
height: 18px;
background: #0066eb;
}
.toolclass >>> .el-radio-button__inner {
.toolclass>>>.el-radio-button__inner {
width: 200px;
height: 40px;
}
.toolclass >>> .el-radio-button__orig-radio:checked + .el-radio-button__inner {
.toolclass>>>.el-radio-button__orig-radio:checked+.el-radio-button__inner {
background-color: #0066eb;
border-color: #0066eb;
}
.contrl {
position: relative;
background: #ffffff;
@ -322,7 +295,8 @@ export default {
margin-top: 30px;
margin-right: 30px;
}
.contrl >>> .el-button {
.contrl>>>.el-button {
/* width: 120px; */
height: 34px;
background: #0066eb;
@ -331,11 +305,13 @@ export default {
margin-right: 15px;
line-height: 10px;
}
.copybtn {
color: #0066eb;
margin-left: 20px;
cursor: pointer;
}
.dialogtext {
font-weight: 500;
font-size: 16px;

@ -4,7 +4,7 @@
<div class="dvied"></div>
<div style="font-weight: bold;color: #333333;font-size: 18px;margin-left:10px">我的订单</div>
</div> -->
<div style="background: #FFFFFF;border-radius: 4px;">
<div v-if="orderslist.length" style="background: #FFFFFF;border-radius: 4px;">
<div class="ordenum">
<el-form :model="queryParam" :rules="queryParam" label-position="left" label-width="70px" class="baseinfo">
<div style="display:flex;padding-top: 10px;padding-left: 20px;background: #edecec;flex-wrap:wrap;">
@ -87,13 +87,16 @@
</div>
</div>
</div>
<emptyPage imgSrc="/assets/empty/noUsePerson.png" v-else>暂无订单</emptyPage>
</div>
</template>
<script>
import {mapGetters} from "vuex";
import emptyPage from '@/components/emptyPage/index.vue'
import {getMyOrder} from "@/api/my/my";
import {findByvalue, findLabelValueByProp} from "@/util/util";
export default{
components:{emptyPage},
data(){
return{
// orderObj:{

@ -15,53 +15,34 @@
余额提现
</div>
</div>
<div
style="width: 100%; height: 1px; background-color: #ebebeb; margin: 14px 0 19px 0"
></div>
<div style="width: 100%; height: 1px; background-color: #ebebeb; margin: 14px 0 19px 0">
</div>
<div style="padding: 0px 30px" class="applydraw">
<p>
<span style="font-size: 16px; color: #000000ff">转出到</span>
<span style="font-size: 13px; color: #808080ff; margin-left: 10px"
>请选择余额转出到哪里</span
>
<span style="font-size: 13px; color: #808080ff; margin-left: 10px">请选择余额转出到哪里</span>
</p>
<el-select
v-model="Withdrawalform.withdraw"
style="width: 500px"
@change="settype"
placeholder="请选择添加类型"
>
<el-select v-model="Withdrawalform.withdraw" style="width: 500px" @change="settype"
placeholder="请选择添加类型">
<el-option label="支付宝" value="alipay" />
<el-option label="银行卡" value="bank" />
</el-select>
<br />
<el-input
v-if="Withdrawalform.withdraw == 'alipay' && accountdata.alipay"
:value="`${accountdata.alipay}(${accountdata.name})`"
style="margin-top: 20px"
disabled
></el-input>
<el-input
v-if="Withdrawalform.withdraw == 'bank' && accountdata.bankAccount"
:value="`${accountdata.bankAccount}(${accountdata.name})`"
style="margin-top: 20px"
disabled
></el-input>
<el-input v-if="Withdrawalform.withdraw == 'alipay' && accountdata.alipay"
:value="`${accountdata.alipay}(${accountdata.name})`" style="margin-top: 20px"
disabled></el-input>
<el-input v-if="Withdrawalform.withdraw == 'bank' && accountdata.bankAccount"
:value="`${accountdata.bankAccount}(${accountdata.name})`" style="margin-top: 20px"
disabled></el-input>
<br />
<el-input
v-if="Withdrawalform.withdraw == 'bank' && accountdata.bankAccount"
:value="accountdata.bankDeposit"
style="margin-top: 20px"
disabled
></el-input>
<el-input v-if="Withdrawalform.withdraw == 'bank' && accountdata.bankAccount"
:value="accountdata.bankDeposit" style="margin-top: 20px" disabled></el-input>
<div style="border: 1px dashed #ebebeb; margin: 20px 0; width: 500px"></div>
<div style="display: flex; align-items: center">
<p style="font-size: 16px; color: #000000ff">提现金额</p>
<i style="color: #fd5d5dff; margin: 0 5px" class="el-icon-warning"></i>
<span style="font-size: 13px; color: #808080ff"
>提现金额将在7个工作日到账请耐心等待</span
>
<span style="font-size: 13px; color: #808080ff">提现金额将在7个工作日到账请耐心等待</span>
</div>
<el-input v-model="Withdrawalform.recordAmount" style="width: 500px"></el-input>
<p style="font-size: 14px; color: #4d4d4dff">
@ -72,98 +53,66 @@
<div style="border: 1px dashed #ebebeb; margin: 20px 0; width: 500px"></div>
<p>
<span style="font-size: 16px; color: #000000ff">交易密码</span>
<span v-if="accountdata.password" style="font-size: 13px; color: #808080ff; margin-left: 10px"
>保证交易密码的安全</span
>
<span v-else style="font-size: 13px; color: #808080ff; margin-left: 10px"
>您还未设置过交易密码 <span style="color: #2587f9;margin-left:5px" @click="activeName='3'">去设置</span></span
>
<span v-if="accountdata.password"
style="font-size: 13px; color: #808080ff; margin-left: 10px">保证交易密码的安全</span>
<span v-else style="font-size: 13px; color: #808080ff; margin-left: 10px">您还未设置过交易密码
<span style="color: #2587f9;margin-left:5px"
@click="activeName = '3'">去设置</span></span>
</p>
<el-input
show-password
auto-complete="new-password"
v-model="Withdrawalform.password"
></el-input>
<el-input show-password auto-complete="new-password"
v-model="Withdrawalform.password"></el-input>
<div style="border: 1px dashed #ebebeb; margin: 20px 0; width: 500px"></div>
<p>
<span style="font-size: 16px; color: #000000ff">备注</span>
<span style="font-size: 13px; color: #808080ff; margin-left: 10px"
>备注信息非必需</span
>
<span style="font-size: 13px; color: #808080ff; margin-left: 10px">备注信息非必需</span>
</p>
<el-input type="textarea" v-model="Withdrawalform.remark"></el-input>
<div style="margin-top: 25px">
<el-button
v-if="Withdrawalform.withdraw == 'alipay'"
:disabled="!accountdata.alipay"
@click="Withdapply('applyfor')"
type="primary"
class="butwidthdraw"
>提现申请</el-button
>
<el-button
v-if="Withdrawalform.withdraw == 'bank'"
:disabled="!accountdata.bankAccount"
@click="Withdapply('applyfor')"
type="primary"
class="butwidthdraw"
>提现申请</el-button
>
<el-button
@click="Withdapply('cancel')"
type="primary"
style="
<el-button v-if="Withdrawalform.withdraw == 'alipay'"
:disabled="!accountdata.alipay" @click="Withdapply('applyfor')" type="primary"
class="butwidthdraw">提现申请</el-button>
<el-button v-if="Withdrawalform.withdraw == 'bank'"
:disabled="!accountdata.bankAccount" @click="Withdapply('applyfor')"
type="primary" class="butwidthdraw">提现申请</el-button>
<el-button @click="Withdapply('cancel')" type="primary" style="
background: transparent;
border: 1px solid #e0e0e0;
margin-left: 15px;
color: #666666ff;
"
class="butwidthdraw"
>取消</el-button
>
" class="butwidthdraw">取消</el-button>
</div>
</div>
</div>
<div v-else class="kitborder">
<div
style="
<div style="
display: flex;
align-items: center;
margin-left: 30px;
margin-top: -10px;
justify-content: space-between;
"
>
">
<div style="display: flex; align-items: center">
<div class="dvied"></div>
<div style="font-weight: bold; color: #333333; font-size: 19px; margin-left: 10px">
测试宝余额
</div>
</div>
<div
style="display: flex; align-items: center; font-size: 15px; cursor: pointer"
@click="accountdatadia"
>
<p
v-if="accountdata.alipay && accountdata.bankAccount"
style="color: #2286fa; margin: 0 5px"
>
<div style="display: flex; align-items: center; font-size: 15px; cursor: pointer"
@click="accountdatadia">
<p v-if="accountdata.alipay && accountdata.bankAccount"
style="color: #2286fa; margin: 0 5px">
查看账户
</p>
<p v-else style="color: #2286fa; margin: 0 5px">
<i style="color: #2286fa" class="el-icon-circle-plus-outline"></i>
添加账户
<span
v-if="!accountdata.alipay && !accountdata.bankAccount"
style="color: #333333; font-size: 14px"
>(还未添加账户,无法提现)</span
>
<span v-if="!accountdata.alipay && !accountdata.bankAccount"
style="color: #333333; font-size: 14px">(还未添加账户,无法提现)</span>
</p>
</div>
</div>
<div
style="width: 100%; height: 1px; background-color: #ebebeb; margin: 14px 0 19px 0"
></div>
<div style="width: 100%; height: 1px; background-color: #ebebeb; margin: 14px 0 19px 0">
</div>
<div style="padding: 0px 30px; font-size: 17px">
<div style="display: flex; color: #333333; align-items: center; margin: -10px 0 10px 0">
<p style="font-size: 28px; color: #fd461aff">¥{{ accountdata.balance }}</p>
@ -172,12 +121,10 @@
</div>
<div>
<!-- <el-button type="info" disabled>充值</el-button> -->
<el-button
@click="openwitd"
type="primary"
:disabled="accountdata.availableBalance == 0"
>提现</el-button
>
<el-button @click="openwitd" type="primary"
:disabled="accountdata.availableBalance == 0">提现</el-button>
<!-- <el-button @click="accountReset" type="primary"
:disabled="!accountdata.alipay && !accountdata.balance">重置</el-button> -->
</div>
</div>
</div>
@ -190,9 +137,8 @@
交易记录
</div>
</div>
<div
style="width: 100%; height: 1px; background-color: #ebebeb; margin: 14px 0 19px 0"
></div>
<div style="width: 100%; height: 1px; background-color: #ebebeb; margin: 14px 0 19px 0">
</div>
<div style="margin: 30px">
<el-table :data="sactionData">
<el-table-column label="序号" width="100px" align="center">
@ -200,12 +146,7 @@
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column
label="交易名称"
align="center"
key="recordName"
prop="recordName"
/>
<el-table-column label="交易名称" align="center" key="recordName" prop="recordName" />
<el-table-column label="交易类型" align="center" key="recordType" prop="recordType">
<template slot-scope="scope">
<!-- <span v-if="scope.row.recordType==0" style="color:#e6a23c">充值</span>
@ -218,36 +159,22 @@
<span v-if="scope.row.recordType == 3">收入</span>
</template>
</el-table-column>
<el-table-column
label="交易金额(元)"
align="center"
key="recordAmount"
prop="recordAmount"
>
<el-table-column label="交易金额(元)" align="center" key="recordAmount"
prop="recordAmount">
<template slot-scope="scope">
<span>{{ hasDot(scope.row.recordAmount) }}</span>
</template>
</el-table-column>
<el-table-column
label="交易状态"
align="center"
key="recordStatus"
prop="recordStatus"
>
<el-table-column label="交易状态" align="center" key="recordStatus" prop="recordStatus">
<template slot-scope="scope">
<el-tag
:type="
scope.row.recordStatus == 0
? 'primary'
: scope.row.recordStatus == 1
? 'success'
: scope.row.recordStatus == 2
<el-tag :type="scope.row.recordStatus == 0
? 'primary'
: scope.row.recordStatus == 1
? 'success'
: scope.row.recordStatus == 2
? 'warning'
: 'danger'
"
effect="dark"
style="cursor: pointer"
>
" effect="dark" style="cursor: pointer">
<span v-if="scope.row.recordStatus == 0">处理中</span>
<span v-if="scope.row.recordStatus == 1">已完成</span>
<span v-if="scope.row.recordStatus == 2">已取消</span>
@ -266,14 +193,9 @@
</el-table>
</div>
<div v-if="total > 10" style="width: 100%; margin-top: 30px; text-align: center">
<el-pagination
background
@current-change="getSactionDataFn"
:current-page="queryParams.pageNum"
:page-size="queryParams.pageSize"
layout="total, prev, pager, next, jumper"
:total="total"
>
<el-pagination background @current-change="getSactionDataFn"
:current-page="queryParams.pageNum" :page-size="queryParams.pageSize"
layout="total, prev, pager, next, jumper" :total="total">
</el-pagination>
<!-- <el-pagination
background
@ -295,9 +217,8 @@
交易密码
</div>
</div>
<div
style="width: 100%; height: 1px; background-color: #ebebeb; margin: 14px 0 19px 0"
></div>
<div style="width: 100%; height: 1px; background-color: #ebebeb; margin: 14px 0 19px 0">
</div>
<div style="margin: 30px">
<p style="color: #a6a6a6; font-size: 13px">*请确保交易密码与登录密码不同!</p>
<p style="color: #a6a6a6; font-size: 13px">
@ -308,12 +229,8 @@
<span style="color: #1989fa">个人信息</span>
<span>页面验证工作手机</span>
</p>
<el-form
ref="sactionform"
:model="sactionform"
:rules="sactionFormRules"
label-width="120px"
>
<el-form ref="sactionform" :model="sactionform" :rules="sactionFormRules"
label-width="120px">
<el-form-item label="手机号码">
<span v-if="userinform.phonenumber">+86 {{ userinform.phonenumber }}</span>
</el-form-item>
@ -327,9 +244,8 @@
<el-input v-model="sactionform.code" maxlength="6" auto-complete="off">
<el-button slot="suffix" @click="getVerify" :disabled="tranVerify.disabled">
<span v-show="tranVerify.show" style="color: #0066eb">获取验证码</span>
<span v-show="!tranVerify.show" class="count"
>{{ tranVerify.count }} s</span
>
<span v-show="!tranVerify.show" class="count">{{ tranVerify.count }}
</span>
</el-button>
</el-input>
</el-form-item>
@ -341,99 +257,98 @@
</div>
</el-tab-pane>
</el-tabs>
<el-dialog
class="dialogacount"
:title="accountdata.alipay && accountdata.bankAccount ? '查看账户' : '添加账户'"
:visible.sync="addacount"
width="550px"
:close-on-click-modal="false"
append-to-body
@close="addacount = false"
>
<el-dialog class="dialogacount"
:title="motify ? '重置账户' : (accountdata.alipay && accountdata.bankAccount) ? '查看账户' : '添加账户'"
:visible.sync="addacount" width="550px" :close-on-click-modal="false" append-to-body
@close="dialogClose">
<el-divider></el-divider>
<p class="selectadd">选择添加类型</p>
<el-select
v-model="accountform.paytype"
style="width: 100%"
@change="settypedialog"
placeholder="请选择添加类型"
>
<el-option label="支付宝" value="1" />
<el-option label="银行卡" value="2" />
<p class="selectadd">{{ motify ? '' : '请选择添加类型' }}</p>
<el-select v-model="accountform.paytype" style="width: 100%" @change="settypedialog"
v-show="!motify" placeholder="请选择添加类型">
<el-option v-show="motify ? accountdata.alipay : true" label="支付宝" value="1" />
<el-option v-show="motify ? accountdata.bankAccount : true" label="银行卡" value="2" />
</el-select>
<div style="border: 1px dashed #ebebeb; margin: 20px 0"></div>
<div v-if="accountform.paytype == 1" style="display: flex; align-items: center">
<img style="width: 19px; height: 19px; margin-right: 5px" src="/assets/crowd/payb.png" alt="" />
<p class="selectadd">支付宝账号</p>
<div style="border: 1px dashed #ebebeb; margin: 20px 0" v-show="!motify"></div>
<div v-if="accountform.paytype == 1 && !motify"
style="display: flex; align-items: center;justify-content: space-between">
<div style="display: flex;align-items: center;">
<img style="width: 19px; height: 19px; margin-right: 5px" src="/assets/crowd/payb.png"
alt="" />
<p class="selectadd">支付宝账号</p>
</div>
<div class="resetBtn" @click="accountReset('1')" v-show="!motify && accountdata.alipay">重置账户
</div>
</div>
<div v-if="accountform.paytype == 2" style="display: flex; align-items: center">
<img
style="width: 18px; height: 15px; margin-right: 5px"
src="/assets/crowd/bankcad.png"
alt=""
/>
<p class="selectadd">银行卡账号</p>
<div v-if="accountform.paytype == 2"
style="display: flex; align-items: center;justify-content: space-between;">
<div style="display: flex;align-items: center;">
<img style="width: 18px; height: 15px; margin-right: 5px" src="/assets/crowd/bankcad.png"
alt="" />
<p class="selectadd">银行卡账号</p>
</div>
<div class="resetBtn" @click="accountReset('2')" v-show="!motify && accountdata.alipay">重置账户
</div>
</div>
<el-form ref="accountform" :model="accountform" :rules="accountformRules" label-width="80px">
<el-form-item v-if="accountform.paytype == 1" label="姓 名:" prop="name">
<el-input v-model="accountform.name" :disabled="Boolean(accountdata.alipay)"></el-input>
<el-input v-model="accountform.name"
:disabled="Boolean(accountdata.alipay) && !motify"></el-input>
</el-form-item>
<el-form-item v-if="accountform.paytype == 2" label="姓 名:" prop="name">
<el-input
v-model="accountform.name"
:disabled="Boolean(accountdata.bankAccount)"
></el-input>
<el-input v-model="accountform.name"
:disabled="Boolean(accountdata.bankAccount) && !motify"></el-input>
</el-form-item>
<div v-if="accountform.paytype == 1">
<el-form-item label="账 号:" prop="alipay">
<el-input
:disabled="Boolean(accountdata.alipay)"
v-model="accountform.alipay"
></el-input>
<el-input :disabled="Boolean(accountdata.alipay) && !motify"
v-model="accountform.alipay"></el-input>
</el-form-item>
</div>
<div v-if="accountform.paytype == 2">
<el-form-item label="开户行:" prop="bankDeposit">
<el-input
v-model="accountform.bankDeposit"
:disabled="Boolean(accountdata.bankAccount)"
></el-input>
<el-input v-model="accountform.bankDeposit"
:disabled="Boolean(accountdata.bankAccount) && !motify"></el-input>
</el-form-item>
<el-form-item label="账 号:" prop="bankAccount">
<el-input
v-model="accountform.bankAccount"
:disabled="Boolean(accountdata.bankAccount)"
></el-input>
<el-input v-model="accountform.bankAccount"
:disabled="Boolean(accountdata.bankAccount) && !motify"></el-input>
</el-form-item>
</div>
<div v-if="motify">
<el-form-item label="手机号:" prop="mobile">
<el-input v-model="accountform.mobile" disabled></el-input>
</el-form-item>
<el-form-item label="验证码:" prop="code">
<div style="display: flex;">
<el-input v-model="accountform.code"
:disabled="Boolean(accountdata.code) && !motify"></el-input>
<el-button type="primary" @click="getCode" :disabled="verifyCodeText.disabled"
style="width: 150px;">{{
verifyCodeText.text
}}</el-button>
</div>
</el-form-item>
</div>
<!-- <el-form-item label="账 号:" prop="bankAccount">
<el-input v-model="accountform.bankAccount" ></el-input>
</el-form-item> -->
<div style="display: flex; margin-top: 30px">
<el-button
v-if="accountform.paytype == 1"
:disabled="Boolean(accountdata.alipay)"
type="primary"
@click="acsumbit('determine')"
class="acountbtn"
>确定</el-button
>
<el-button
v-else
type="primary"
:disabled="Boolean(accountdata.bankAccount)"
@click="acsumbit('determine')"
class="acountbtn"
>确定</el-button
>
<el-button
type="primary"
@click="acsumbit('cancel')"
class="acountbtn"
style="border: 1px solid #e0e0e0; background: #ffffff; color: #666666"
>取消</el-button
>
<div v-if="motify" style="text-align: center;">
<el-button type="primary" style="border-radius: 5px;" @click="acsumbit"
class="acountbtn">确定</el-button>
</div>
<div v-else style="display: flex; margin-top: 30px">
<el-button v-if="accountform.paytype == 1"
:disabled="Boolean(accountdata.alipay) && !motify" type="primary"
@click="acsumbit('determine')" class="acountbtn">确定</el-button>
<el-button v-else type="primary" :disabled="Boolean(accountdata.bankAccount) && !motify"
@click="acsumbit('determine')" class="acountbtn">确定</el-button>
<!-- 修改账户 -->
<el-button type="primary" @click="acsumbit('cancel')" class="acountbtn"
style="border: 1px solid #e0e0e0; background: #ffffff; color: #666666">取消</el-button>
</div>
</el-form>
</el-dialog>
</div>
@ -442,7 +357,7 @@
</template>
<script>
import { mapGetters } from 'vuex'
import { queryAccount, queryRecord, setaddaccount, withdrawapp } from '@/api/my/testb'
import { queryAccount, queryRecord, setaddaccount, withdrawapp, updateAccount } from '@/api/my/testb'
import { isMobile } from '@/util/validate'
import { getCodeUserLogin, scatpasswd } from '@/api/system/login'
import { encrypt, decrypt } from '@/util/encrypt'
@ -473,6 +388,7 @@ export default {
return {
isWithdrawal: false, //
addacount: false,
motify: false,
activeName: '1',
accountdata: {},
sactionData: [],
@ -496,6 +412,11 @@ export default {
bankDeposit: '',
bankAccount: '',
},
verifyCodeText: {
text: '获取验证码',
timer: '',
disable: false
},
accountformRules: {
name: [
{ required: true, message: '姓名不能为空', trigger: 'blur' },
@ -542,6 +463,13 @@ export default {
},
},
],
mobile: [
{ required: true, message: '', trigger: 'blur' },
],
code: [
{ required: true, message: '请输入验证码', trigger: 'blur' },
// { min: 6, message: '6', trigger: 'blur' },
],
},
Withdrawalform: { withdraw: 'alipay', recordAmount: '', password: '' },
queryParams: {
@ -594,6 +522,15 @@ export default {
}
}
},
dialogClose() {
this.addacount = false
this.motify = false
clearInterval(this.verifyCodeText.timer) //
this.verifyCodeText.timer = null
this.verifyCodeText.disabled = false
this.verifyCodeText.text = '获取验证码'
this.$refs.accountform.clearValidate()
},
//
getVerify() {
if (!this.sactionform.newpassword) {
@ -605,6 +542,7 @@ export default {
this.$message.warning('手机格式不对')
return
}
this.tranVerify.disabled = true
//
getCodeUserLogin(phone)
@ -629,7 +567,34 @@ export default {
}
}
})
.catch((err) => {})
.catch((err) => { })
},
getCode() {
const phone = this.userinform.phonenumber
this.verifyCodeText.disabled = true
getCodeUserLogin(phone)
.then((res) => {
if (res.code == 200) {
this.accountform.uuid = res.uuid
this.$message.success('短信发送成功,请注意查收')
const TIME_COUNT = 60 //
if (!this.verifyCodeText.timer) {
this.verifyCodeText.text = TIME_COUNT
this.verifyCodeText.disabled = true
this.verifyCodeText.timer = setInterval(() => {
if (this.verifyCodeText.text > 0 && this.verifyCodeText.text <= TIME_COUNT) {
this.verifyCodeText.text--
} else {
this.verifyCodeText.disabled = false
// this.verifyCodeText.show = true
clearInterval(this.verifyCodeText.timer) //
this.verifyCodeText.timer = null
this.verifyCodeText.text = '获取验证码'
}
}, 1000)
}
}
})
},
//
onSubmit() {
@ -657,6 +622,23 @@ export default {
}
})
},
//
async accountReset(val) {
this.addacount = true
this.motify = true
this.accountform = {
paytype: '',
name: '',
bankDeposit: '',
bankAccount: '',
alipay: '',
mobile: ''
}
this.accountform.paytype = val
this.accountform.mobile = this.userinform.phonenumber
await this.$nextTick()
this.$refs.accountform.clearValidate()
},
//
accountdatadia() {
this.addacount = true
@ -684,6 +666,14 @@ export default {
settypedialog(e) {
this.$refs.accountform.clearValidate()
},
//
ResetAccount() {
this.$refs.accountform.validate((valid) => {
if (valid) {
}
})
},
//
acsumbit(type) {
if (type == 'cancel') {
@ -710,16 +700,34 @@ export default {
}
}
// return;
setaddaccount(data).then((res) => {
if (res.data.code == 200) {
this.$message.success('添加成功')
this.addacount = false
this.getAccount()
}
if (res.data.code == 400) {
this.$message.error(res.data.msg)
}
})
if (this.motify) {
data.code = this.accountform.code
data.uuid = this.accountform.uuid
updateAccount(data).then(res => {
if (res.data.code == 200) {
this.$message.success('重置成功')
this.addacount = false
this.getAccount()
}
if (res.code == 400) {
this.$message.error(res.data.msg)
}
}).catch(err => {
console.log(err);
this.$message.error(err)
})
} else {
setaddaccount(data).then((res) => {
if (res.data.code == 200) {
this.$message.success('添加成功')
this.addacount = false
this.getAccount()
}
if (res.data.code == 400) {
this.$message.error(res.data.msg)
}
})
}
} else {
}
})
@ -791,32 +799,46 @@ export default {
}
</script>
<style scoped>
.crowdnum >>> .el-tabs--border-card {
.resetBtn {
font-weight: bold;
font-size: 6rpx;
color: #1578ED;
line-height: 27rpx;
cursor: pointer;
}
.crowdnum>>>.el-tabs--border-card {
background: transparent;
border: none;
box-shadow: none;
}
.crowdnum >>> .el-tabs--border-card > .el-tabs__header .el-tabs__item {
.crowdnum>>>.el-tabs--border-card>.el-tabs__header .el-tabs__item {
border: none;
color: #1a1a1a;
}
.crowdnum >>> .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
.crowdnum>>>.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active {
color: #0066eb;
/* font-size: 16px; */
}
.crowdnum >>> .el-tabs--border-card > .el-tabs__content {
.crowdnum>>>.el-tabs--border-card>.el-tabs__content {
padding: 30px 0;
overflow: unset;
}
.crowdnum >>> .el-tabs--border-card > .el-tabs__header {
.crowdnum>>>.el-tabs--border-card>.el-tabs__header {
border: none;
background-color: #f7f7f7;
/* color:#1A1A1A */
}
.crowdnum >>> .el-tabs__item {
.crowdnum>>>.el-tabs__item {
height: 45px;
line-height: 45px;
}
.kitborder {
/* width: 1627px; */
/* height: 229px; */
@ -824,12 +846,14 @@ export default {
box-shadow: 0px 1px 12px 0px rgba(17, 19, 21, 0.06);
padding: 25px 0 30px 0;
}
.dvied {
width: 5px;
height: 18px;
background: #1578ed;
border-radius: 3px;
}
.tagWithdrawal {
/* width: 174px; */
/* height: 36px; */
@ -839,6 +863,7 @@ export default {
text-align: center;
/* line-height: 36px; */
}
.butRecharge {
width: 90px;
height: 36px;
@ -848,20 +873,24 @@ export default {
background: #2286fa;
line-height: 11px;
}
.crowdnum >>> .el-table th {
.crowdnum>>>.el-table th {
background-color: #f7f7f7;
color: #666666;
text-align: center;
}
.crowdnum >>> .el-table td {
.crowdnum>>>.el-table td {
/* text-align:center; */
background-color: #ffffff;
height: 60px;
color: #333333;
}
.crowdnum >>> .el-table--border th {
.crowdnum>>>.el-table--border th {
border-right: #f7f7f7;
}
/* .kitborder{
width:800px;
height: 500px;
@ -878,13 +907,14 @@ export default {
font-size: 16px;
background-color: #0066eb;
}
/* .kitborder >>> .el-input {
width: 300px;
}
.verifybtn >>> .el-input {
width: 300px;
} */
.verifybtn >>> .el-button {
.verifybtn>>>.el-button {
margin-top: -3px;
margin-left: -28px;
width: 100%;
@ -897,22 +927,27 @@ export default {
z-index: -1;
/* 18798569999 */
}
.verifybtn >>> .el-button.is-disabled:hover {
.verifybtn>>>.el-button.is-disabled:hover {
background: transparent;
}
.dialogacount >>> .el-dialog__title {
.dialogacount>>>.el-dialog__title {
color: #000000;
font-size: 20px;
font-weight: bold;
}
.dialogacount >>> .el-divider--horizontal {
.dialogacount>>>.el-divider--horizontal {
margin-top: -20px;
}
.selectadd {
color: #000000;
font-size: 16px;
font-weight: bold;
}
.acountbtn {
width: 250px;
/* height: 44px; */
@ -922,15 +957,19 @@ export default {
font-size: 16px;
/* line-height: 44px; */
}
.applydraw >>> .el-input__inner {
.applydraw>>>.el-input__inner {
width: 500px !important;
}
.applydraw >>> .el-input {
.applydraw>>>.el-input {
width: 500px;
}
.applydraw >>> .el-textarea__inner {
.applydraw>>>.el-textarea__inner {
width: 500px;
}
.butwidthdraw {
width: 200px;
/* height: 44px; */
@ -940,4 +979,4 @@ export default {
/* line-height: 44px; */
text-align: center;
}
</style>
</style>

@ -4,8 +4,11 @@ import store from "@/store";
// import { Message,MessageBox } from 'element-ui'
//自定义组件
import login from "@/page/logpage/log/login.vue"
import runEnv from '../util/runEnv';
// import index from "@/page/homepage/index.vue"
const community = () => import("@/page/community/index.vue")
const index = () => import("@/page/homepage/index.vue")
const mobileTip = ()=>import("@/page/common/mobileTip.vue")
const home = () => import("@/page/homepage/home/home.vue")
const toolmarker = () => import("@/page/homepage/tool/toolmarker.vue")
const tooldetails = () => import("@/page/homepage/tool/tooldetails.vue")
@ -50,7 +53,14 @@ const router = new Router({
mode: 'history', // 去掉url中的#
// linkActiveClass:'is-active',
routes: [
{
path: '/community', component: community, name: 'community' ,
},
{
path:'/mobileTip',component:mobileTip,name:'mobileTip'
},
//首页
{
path: '', component: index,
redirect: '/',
@ -140,6 +150,14 @@ router.beforeEach((to, from, next) => {
}
}
if(to.path == '/') {
if(runEnv()){
next('/mobileTip')
}else{
next()
}
}
// console.log(store.getters.companyStatus);
let token = store.getters.token;
// if(token){

@ -0,0 +1 @@
@import './variable.scss'

@ -0,0 +1 @@
$bg-color: #0066eb

@ -0,0 +1,39 @@
function copyText(text) {
const textString = text.toString() // 数字没有 .length 不能执行selectText 需要转化成字符串
let input = document.querySelector('#copy-input')
if (!input) {
input = document.createElement('input')
input.id = 'copy-input'
input.readOnly = 'readOnly' // 防止ios聚焦触发键盘事件
input.style.position = 'absolute'
input.style.left = '-2000px'
input.style.zIndex = '-2000'
document.body.appendChild(input)
}
input.value = textString
// ios必须先选中文字且不支持 input.select();
selectText(input, 0, textString.length)
if (document.execCommand('copy')) {
document.execCommand('copy')
return '复制成功!'
} else {
return '复制失败!'
}
}
function selectText(textbox, startIndex, stopIndex) {
if (textbox.createTextRange) {
// ie
const range = textbox.createTextRange()
range.collapse(true)
range.moveStart('character', startIndex) // 起始光标
range.moveEnd('character', stopIndex - startIndex) // 结束光标
range.select() // 不兼容苹果
} else {
// firefox/chrome
textbox.setSelectionRange(startIndex, stopIndex)
textbox.focus()
}
}
export default copyText

@ -0,0 +1,12 @@
function runEnv() {
const info = navigator.userAgent.toLowerCase();
var isPhone = /mobile/i.test(info);
if (isPhone) {
return true
}
return false
}
export default runEnv

@ -16,6 +16,7 @@ module.exports = {
// const port = process.env.port || process.env.npm_config_port || 80 // 端口
devServer: {
// https:true,
host: '0.0.0.0',
// port: port,
open: true,
@ -56,6 +57,13 @@ module.exports = {
],
},
css: {
loaderOptions: {
scss: {
data: `@import "@/style/index.scss";`
}
}
},
lintOnSave: true,
productionSourceMap: false,
chainWebpack: config => {

Loading…
Cancel
Save