Sfoglia il codice sorgente

前端优化

wulanhaote
庞东旭 3 anni fa
parent
commit
a15b4116fd
31 ha cambiato i file con 875 aggiunte e 218 eliminazioni
  1. +1
    -1
      config/index.js
  2. +23
    -2
      package-lock.json
  3. +1
    -0
      package.json
  4. +2
    -0
      src/api/login/index.js
  5. +2
    -1
      src/api/project/index.js
  6. +8
    -0
      src/api/register/index.js
  7. +42
    -0
      src/api/user/index.js
  8. +3
    -0
      src/main.js
  9. +23
    -2
      src/permission.js
  10. +12
    -6
      src/router/index.js
  11. +8
    -0
      src/utils/global.js
  12. +7
    -2
      src/utils/utils.js
  13. +7
    -0
      src/views/biddingHall/index.vue
  14. +20
    -5
      src/views/index.vue
  15. +4
    -1
      src/views/interaction/index.vue
  16. +47
    -16
      src/views/login.vue
  17. +2
    -1
      src/views/news/index.vue
  18. +15
    -8
      src/views/project/index.vue
  19. +11
    -11
      src/views/project/projectDetail.vue
  20. +87
    -19
      src/views/register/companyRegister.vue
  21. +41
    -14
      src/views/register/index.vue
  22. +8
    -1
      src/views/register/registerType.vue
  23. +62
    -16
      src/views/register/userRegister.vue
  24. +19
    -3
      src/views/user/accountSetting/index.vue
  25. +188
    -19
      src/views/user/accountSetting/userInformation/companyInformation.vue
  26. +15
    -7
      src/views/user/accountSetting/userInformation/userInformation.vue
  27. +69
    -28
      src/views/user/bidding/index.vue
  28. +18
    -8
      src/views/user/index.vue
  29. +35
    -11
      src/views/user/supply/index.vue
  30. +95
    -36
      src/views/user/supply/supplyAdd.vue
  31. BIN
      static/images/zwtpxw.jpg

+ 1
- 1
config/index.js Vedi File

@@ -13,7 +13,7 @@ module.exports = {
"/dev-api": {
// 请求的目标主机
//target: 'http://116.255.135.38:8081/nsgk_test/',
target: 'http://192.168.31.47:8080/',
target: 'http://192.168.31.107:8080/',
changeOrigin: true,
pathRewrite: {
'^/dev-api': ''


+ 23
- 2
package-lock.json Vedi File

@@ -3472,6 +3472,11 @@
}
}
},
"dom-walk": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
},
"domain-browser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
@@ -4612,6 +4617,15 @@
"is-glob": "^4.0.1"
}
},
"global": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
"requires": {
"min-document": "^2.19.0",
"process": "^0.11.10"
}
},
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
@@ -6301,6 +6315,14 @@
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"dev": true
},
"min-document": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
"integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
"requires": {
"dom-walk": "^0.1.0"
}
},
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
@@ -9759,8 +9781,7 @@
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
"dev": true
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
},
"process-nextick-args": {
"version": "2.0.1",


+ 1
- 0
package.json Vedi File

@@ -11,6 +11,7 @@
},
"dependencies": {
"axios": "^0.21.1",
"global": "^4.4.0",
"js-cookie": "^2.2.1",
"lib-flexible": "^0.3.2",
"node-sass": "^5.0.0",


+ 2
- 0
src/api/login/index.js Vedi File

@@ -52,6 +52,7 @@ export function getCodeImg() {
method: 'get'
})
}

// 发送短信验证码
export function getSmsCode(mobile) {

@@ -65,3 +66,4 @@ export function getSmsCode(mobile) {
data:data
})
}


+ 2
- 1
src/api/project/index.js Vedi File

@@ -11,8 +11,9 @@ export function getDeptList(id) {
//挂牌项目列表
export function getOutProjectList(data){
return request({
url:'/transaction/website/outproject/list?deptId=&projectNumber=&',
url:'/transaction/website/outproject/list',
method:'get',
params:data
})
}
//挂牌项目详情


+ 8
- 0
src/api/register/index.js Vedi File

@@ -29,4 +29,12 @@ export function registerOn(memberName, idcard, mobile, smsCode,uuid) {
data: data
})
}
//注册
export function userRegister(data) {
return request({
url: '/transaction/website/addMember',
method: 'post',
data: data
})
}


+ 42
- 0
src/api/user/index.js Vedi File

@@ -102,3 +102,45 @@ export function userDemand(query){
data: query
})
}

//发布供求
export function updateDemand(query){
return request({
url: '/transaction/demand',
method: 'put',
data: query
})
}

//供求查询
export function selectDemand(id){
return request({
url: '/transaction/demand/'+id,
method: 'get',
})
}

//删除供求
export function deleteSupply(id){
return request({
url: '/transaction/demand/'+id,
method: 'delete'
})
}

// 展示图片
export function showImg(id){
return request({
url: '/transaction/website/supplyDemand/showImg/id/'+id,
method: 'get',
})
}

//我的竞价
export function biddinglist(query){
return request({
url: '/transaction/outproject/biddinglist/member',
method: 'get',
params: query
})
}

+ 3
- 0
src/main.js Vedi File

@@ -11,6 +11,8 @@ import './config/flexible'
import store from './store/'
import './permission' // permission control

import global from '@/utils/global';

import { getDicts } from "@/utils/data";
import { selectDictLabel , onClickLeft , getNowFormatDate } from "@/utils/utils";

@@ -19,6 +21,7 @@ Vue.prototype.getDicts = getDicts
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.onClickLeft = onClickLeft
Vue.prototype.getNowFormatDate = getNowFormatDate
Vue.prototype.global = global

// Vant 引用
import Vant from 'vant';


+ 23
- 2
src/permission.js Vedi File

@@ -6,8 +6,29 @@ import { getToken } from '@/utils/auth'

NProgress.configure({ showSpinner: false })

const whiteList = ['/index','/login', '/auth-redirect', '/bind', '/register','/news/index','/notice/index','/supply/index'
,'/interaction/index','/register/index','/register/registerType','/register/userRegister','/register/companyRegister']
const whiteList = [
'/index',
'/login',
'/auth-redirect',
'/bind',
'/register',
'/news/index',
'/news/newDetail',
'/notice/index',
'/supply/index',
'/interaction/index',
'/register/index',
'/register/registerType',
'/register/userRegister',
'/register/companyRegister',
'/biddingHall',
'/project',
'/policy',
'/policyDetail',
'/attestationDetail',
'/noticeDetail',

]

router.beforeEach((to, from, next) => {
NProgress.start()


+ 12
- 6
src/router/index.js Vedi File

@@ -81,7 +81,8 @@ export const constantRoutes = [
path: '/biddingHall',
name: 'biddingHall',
meta: {
title: '竞价大厅'
title: '竞价大厅',
hidden: true,
},
component: (resolve) => require(['@/views/biddingHall'], resolve)
},
@@ -106,7 +107,8 @@ export const constantRoutes = [
path: '/news/index',
name: 'news',
meta: {
title: '新闻资讯'
title: '新闻资讯',
hidden: true,
},
component: (resolve) => require(['@/views/news/index'], resolve)
},
@@ -114,7 +116,8 @@ export const constantRoutes = [
path: '/news/newDetail',
name: 'newDetail',
meta: {
title: '新闻详情'
title: '新闻详情',
hidden: true,
},
component: (resolve) => require(['@/views/news/newDetail'], resolve)
},
@@ -122,7 +125,8 @@ export const constantRoutes = [
path: '/notice/index',
name: 'notice',
meta: {
title: '项目公告'
title: '项目公告',
hidden: true,
},
component: (resolve) => require(['@/views/notice/index'], resolve)
},
@@ -130,7 +134,8 @@ export const constantRoutes = [
path: '/supply/index',
name: 'supply',
meta: {
title: '个人供求'
title: '个人供求',
hidden: true,
},
component: (resolve) => require(['@/views/supply/index'], resolve)
},
@@ -138,7 +143,8 @@ export const constantRoutes = [
path: '/interaction/index',
name: 'interaction',
meta: {
title: '互动交流'
title: '互动交流',
hidden: true,
},
component: (resolve) => require(['@/views/interaction/index'], resolve)
},


+ 8
- 0
src/utils/global.js Vedi File

@@ -0,0 +1,8 @@
const deptId = 100 ;
const severApi = 'http://192.168.31.107:8080';

export default
{
deptId,//区县ID
severApi,//全局API
}

+ 7
- 2
src/utils/utils.js Vedi File

@@ -15,8 +15,13 @@ export function onClickLeft(){
history.back(-1);
}

export function getNowFormatDate() {
var date = new Date();
export function getNowFormatDate(time) {
var date;
if (!time){
date = new Date();
}else{
date = time;
}
var seperator1 = "-";
var seperator2 = ":";
var month = date.getMonth() + 1;


+ 7
- 0
src/views/biddingHall/index.vue Vedi File

@@ -1,5 +1,12 @@
<template>
<div>
<van-nav-bar
title="竞价大厅"
left-arrow
fixed
placeholder
@click-left="onClickLeft"
/>
<van-search
v-model="value"
shape="round"


+ 20
- 5
src/views/index.vue Vedi File

@@ -8,7 +8,7 @@
</van-row>
<van-swipe class="my-swipe" :autoplay="3000" height="180" indicator-color="white">
<van-swipe-item v-for="(item,index) in bannerList" :key="index">
<van-image :src="item.img" height="180" />
<van-image :src="item.img" height="180" @click="goDetail(item.id)" />
<p class="bannerTit">{{item.title}}</p>
</van-swipe-item>
</van-swipe>
@@ -18,7 +18,7 @@
<van-image src="../../static/images/icon/icon_new.png" width="40" height="40" />
<p>新闻资讯</p>
</van-grid-item>
<van-grid-item>
<van-grid-item to="/biddingHall">
<van-image src="../../static/images/icon/icon_bidding.png" width="40" height="40" />
<p>竞价大厅</p>
</van-grid-item>
@@ -49,17 +49,20 @@
@load="getList()"
>
<!-- @load="newList"-->
<van-cell v-for="item in newList" :key="item.id" :title="item.title" :label="item.newsTime">
<van-cell v-for="item in newList" :key="item.id" :label="item.newsTime" :to="{name:'newDetail', query: {id:item.id}}">
<!-- 使用 right-icon 插槽来自定义右侧图标 -->
<template #title>
<p class="newContent">{{item.title}}</p>
</template>
<template #right-icon>
<van-image :src="item.img" class="search-icon" width="30%" />
<van-image :src="item.img" class="search-icon" width="30%" v-if="item.img" />
<van-image src="../../static/images/zwtpxw.jpg" class="search-icon" width="30%" v-else/>
</template>
</van-cell>
</van-list>
</div>
</div>
</template>

<script>
import { newList } from "@/api/index";
export default {
@@ -100,6 +103,7 @@ export default {
this.newList[i].img = imgStrs[0].substr(10,(imgStrs[0].length-12));
}
}
console.log(this.newList)
if(this.newList.length >= response.total){
this.finished = true;
return;
@@ -122,6 +126,10 @@ export default {
}
this.loading = false;
});
},
goDetail(id){
console.log(id)
window.location = 'news/newDetail?id='+id;
}
},
};
@@ -166,6 +174,13 @@ export default {
text-align: left;
color: #333333;
}
.newContent{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
word-break: break-all;
overflow: hidden;
}
.search-icon {
line-height: inherit;
margin-left: 10px;


+ 4
- 1
src/views/interaction/index.vue Vedi File

@@ -5,6 +5,7 @@
left-arrow
fixed
placeholder
@click-left="onClickLeft"
/>
<van-list
v-model="loading"
@@ -54,7 +55,9 @@ export default {
this.loading = true;
interactionList(this.queryParams).then(response => {
console.log(response)
this.interactionList = response.rows;
for (var i = 0; i < response.rows.length; i++) {
this.interactionList.push(response.rows[i]);
}
if(this.interactionList.length >= response.total){
this.finished = true;
return;


+ 47
- 16
src/views/login.vue Vedi File

@@ -1,10 +1,17 @@
<template>
<div class="app-container">
<div class="focus-logo">
<img src="@/assets/images/login-logo.png" />
<p class="describe">登录页</p>
<div class="app-container" :style="{height:height+'px'}">
<van-nav-bar
title="登录"
left-arrow
fixed
placeholder
@click-left="onClickLeft"
/>
<div class="title">
<p class="title_one">PROPERTY RIGHT</p>
<p class="title_two">TRANSACTION</p>
<p class="title_three">农村产权交易平台</p>
</div>

<div class="login-main">
<ul class="head_nav clear">
<li @click="isSmsLogin = false" :class="{ active: !isSmsLogin }">
@@ -37,7 +44,7 @@
clearable
label="验证码"
placeholder="图形验证码"
>
<template #button>
<img class="code-img" :src="codeUrl" @click="getCode" />
@@ -85,15 +92,15 @@

<div class="reveal-modal-con">
<div class="dd_txt">
<router-link to="/register">注册账户</router-link>
</div>
<div class="other-login">
<p class="desc">—— 更多登录方式 ——</p>
<p class="icon-other-logins">
<router-link class="wx" to="/"></router-link>
<router-link class="rlsb" to="/"></router-link>
</p>
<router-link to="register/index">注册账户</router-link>
</div>
<!-- <div class="other-login">-->
<!-- <p class="desc">—— 更多登录方式 ——</p>-->
<!-- <p class="icon-other-logins">-->
<!-- <router-link class="wx" to="/"></router-link>-->
<!-- <router-link class="rlsb" to="/"></router-link>-->
<!-- </p>-->
<!-- </div>-->
</div>
</div>
</template>
@@ -121,10 +128,12 @@ export default {
codeUrl: "", //验证码
isSmsLogin: false, //是否手机验证码
computeTime: 0,
height:0
};
},
created() {
this.getCode();
this.height = document.body.clientHeight
//调用微信公众号方法
// wx.config({
// debug: true, // 开启调试模式,
@@ -228,7 +237,28 @@ export default {

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
.title{
padding-top: 20%;
width: 88%;
margin: 0 auto;
}
.title_one{
color: #666666;
font-size: 0.4rem;
}
.title_two{
color: #007e72;
font-size: 0.6rem;
}
.title_three{
color: #FFF;
font-size: 0.8rem;
}
.app-container {
background: url("../../static/images/index/registerBg.png") no-repeat;
background-size: 100% 100%;
width: 100%;
height: 100%;
.focus-logo {
width: 310px;
margin: 0 auto 40px;
@@ -252,6 +282,7 @@ export default {
overflow: hidden;
border: 1px solid #ddd;
padding-bottom:40px;
margin-top: 0.4rem;
}
.head_nav {
li {
@@ -288,7 +319,7 @@ export default {
text-align: center;
font-size: 28px;
a {
color: #666;
color: #FFF;
}
}
.other-login {
@@ -327,4 +358,4 @@ export default {
}
}
}
</style>
</style>

+ 2
- 1
src/views/news/index.vue Vedi File

@@ -17,7 +17,8 @@
<van-cell v-for="item in newList" :key="item.id" :title="item.title" :label="item.newsTime" :to="{name:'newDetail', query: {id:item.id}}">
<!-- 使用 right-icon 插槽来自定义右侧图标 -->
<template #right-icon>
<van-image :src="item.img" class="search-icon" width="30%" style="margin-left: 10px;" />
<van-image :src="item.img" class="search-icon" width="30%" style="margin-left: 10px;" v-if="item.img" />
<van-image src="../../static/images/zwtpxw.jpg" class="search-icon" width="30%" v-else/>
</template>
</van-cell>
</van-list>


+ 15
- 8
src/views/project/index.vue Vedi File

@@ -1,6 +1,7 @@
<template>
<div class="app-container">
<van-search v-model="value" placeholder="请输入搜索关键词" @search="onSearch"/>

<van-dropdown-menu>
<van-dropdown-item v-model="value1" :options="projectTypeOption" @change="getList"/>
<van-dropdown-item :value="value2" :title="value2" ref="item">
@@ -15,9 +16,10 @@
</van-dropdown-item>
<van-dropdown-item v-model="value3" :options="option3" @change="getList"/>
</van-dropdown-menu>

<van-list v-model="loading" :finished="finished" finished-text="没有更多了">
<router-link :to="{path:'project/projectDetail',query:{id:item.id}}" v-for="(item,index) in infoList" :key="index">
<van-card :thumb="item.fileUrl?''+item.fileUrl:'../../static/images/index/projectImg.png'" >
<van-card :thumb="item.fileUrl?global.severApi+item.fileUrl:'../../static/images/zwtpxw.jpg'" >
<template #tags>
<p class="title">【{{item.rollout}}】{{item.projectName}}</p>
<p class="type">{{ item.projectShowStatus }}</p>
@@ -35,7 +37,7 @@
</template>

<script>
import {getOutProjectList,getDeptList} from "../../api/project";
import {getOutProjectList,getDeptList} from "@/api/project/index";

export default {
name: "project",
@@ -43,7 +45,7 @@ export default {
return {
value1: '',
value2: '标的物位置',
activeId: 1,
activeId: this.global.deptId,
activeIndex: 0,
value3: '',
value:"",
@@ -57,9 +59,11 @@ export default {
],
option3: [
{ text: '竞价状态', value: '' },
{ text: '全部', value: '全部' },
{ text: '竞价中', value: '竞价中' },
{ text: '竞价结束', value: '竞价结束' },
{ text: '正在报名', value: '正在报名' },
{ text: '等待竞价', value: '等待竞价' },
{ text: '正在竞价', value: '正在竞价' },
{ text: '等待成交', value: '等待成交' },
{ text: '已经成交', value: '已经成交' },
],
//标的物类型
projectTypeOption:[{text:'标的物类型',value:''}],
@@ -72,6 +76,7 @@ export default {
},
created() {
this.getDicts("project_type").then(response => {
console.log(response)
response.data.map(item => {
this.projectTypeOption.push({ value:item.dictCode, text: item.dictLabel});
});
@@ -113,11 +118,13 @@ export default {
},
getList(){
let queryDatas = {
deptId: this.value1,
projectNumber:this.activeId,
deptId: this.activeId,
projectNumber:this.value1,
projectShowStatus:this.value3
}
console.log(queryDatas)
getOutProjectList(queryDatas).then(response =>{
console.log(response)
this.infoList = response.rows
if(this.infoList.length>0){
let newList = []


+ 11
- 11
src/views/project/projectDetail.vue Vedi File

@@ -11,10 +11,10 @@
<van-tab title="竞拍信息" title-style="font-size:12px;">
<van-swipe class="my-swipe" height="235" indicator-color="white" @change="onChange">
<template v-if="detail.fileUrlList !== undefined &&detail.fileUrlList.length>0">
<van-swipe-item v-for="(item,index) in detail.fileUrlList" :key="index"><van-image :src="item.fileUrl?''+item.fileUrl:'../../static/images/index/banner.png'" height="235" /></van-swipe-item>
<van-swipe-item v-for="(item,index) in detail.fileUrlList" :key="index"><van-image :src="item.fileUrl?global.severApi+item.fileUrl:'../../static/images/zwtp.jpg'" height="235" /></van-swipe-item>
</template>
<template v-else>
<van-swipe-item><van-image src="../../static/images/index/banner.png" height="235" /></van-swipe-item>
<van-swipe-item><van-image src="../../static/images/zwtp.jpg" height="235" /></van-swipe-item>
</template>
<template #indicator>
<div class="custom-indicator">{{ current + 1 }}/{{ detail.fileUrlList !== undefined &&detail.fileUrlList.length>0 ? detail.fileUrlList.length:1 }}</div>
@@ -28,26 +28,26 @@
<van-col span="24" class="title">【{{ detail.rollout }}】{{ detail.projectName }}</van-col>
</van-row>
<van-row>
<van-col span="4">{{ process }}</van-col>
<van-col span="20"><van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒" /></van-col>
<van-col span="5">{{ process }}</van-col>
<van-col span="19"><van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒" /></van-col>
</van-row>
<van-row>
<van-col span="4">挂牌价</van-col>
<van-col span="20" class="price"><span>{{detail.price}}</span> 元/亩/年</van-col>
<van-col span="5">挂牌价</van-col>
<van-col span="19" class="price"><span>{{detail.price}}</span> 元/亩/年</van-col>
</van-row>
<van-row>
<van-col span="4">保证金</van-col>
<van-col span="20" class="money"><span>{{ detail.deposit }}</span> 元</van-col>
<van-col span="5">保证金</van-col>
<van-col span="19" class="money"><span>{{ detail.deposit }}</span> 元</van-col>
</van-row>
</div>
<div class="lead">
<van-row >
<van-col span="3"><van-image src="../../static/images/icon/phone.png" style="vertical-align: text-top;" /></van-col>
<van-col span="2"><van-image src="../../static/images/icon/phone.png" style="vertical-align: text-top;" /></van-col>
<template v-if="biddinglistInformation!=undefined&&biddinglistInformation.length>0">
<van-col span="4">{{biddinglistInformation[0].userName}}</van-col>
<van-col span="5">{{biddinglistInformation[0].userName}}</van-col>
<van-col span="4">{{biddinglistInformation[0].money}}元</van-col>
<van-col span="4">领先</van-col>
<van-col span="8">{{biddinglistInformation[0].createTime}}</van-col>
<van-col span="9">{{biddinglistInformation[0].createTime}}</van-col>
</template>
</van-row>
</div>


+ 87
- 19
src/views/register/companyRegister.vue Vedi File

@@ -1,34 +1,54 @@
<template>
<div class="app-container" :style="{height:height+'px'}">
<van-nav-bar
title="个人注册"
title="单位用户注册"
left-arrow
fixed
placeholder
@click-left="onClickLeft"
/>
<van-form>
<van-field v-model="tel" type="tel" label="手机号" placeholder="请输入手机号" required :rules="[{ required:true }]" />
<van-form @submit="getSubmit">
<van-field
center
clearable
label="短信验证码"
placeholder="请输入短信验证码"
readonly
clickable
name="picker"
:value="value"
label="供求类型"
placeholder="点击选择供求类型"
@click="showPicker = true"
required
:rules="[{ required:true }]"
/>
<van-popup v-model="showPicker" position="bottom">
<van-picker
show-toolbar
:columns="columns"
@confirm="onConfirm"
@cancel="showPicker = false"
/>
</van-popup>
<van-field v-model="form.phone" type="tel" label="手机号" placeholder="请输入手机号" required :rules="[{ required:true }]" />
<van-field
v-model="form.code"
center
clearable
label="验证码"
placeholder="图形验证码"
required :rules="[{ required:true }]"
>
<template #button>
<van-button size="small" type="primary" native-type="button" :rules="[{ required:true }]">发送验证码</van-button>
<img class="code-img" :src="codeUrl" @click="getCode" />
</template>
</van-field>
<van-field type="password" label="密码" placeholder="请输入密码" required :rules="[{ required:true }]"/>
<van-field type="password" label="确认密码" placeholder="请再次输入密码" required :rules="[{ required:true }]"/>
<van-field v-model="form.password" type="password" label="密码" placeholder="请输入密码" required :rules="[{ required:true }]"/>
<van-field v-model="confirmPassWord" type="password" label="确认密码" placeholder="请再次输入密码" required :rules="[{ required:true }]"/>

<van-field label="公司名称" placeholder="请输入公司名称" required :rules="[{ required:true }]"/>
<van-field label="负责人姓名" placeholder="请输入负责人姓名" required :rules="[{ required:true }]"/>
<van-field label="身份证号" placeholder="请输入法人身份证号" required :rules="[{ required:true }]"/>
<van-field label="社会信用代码" placeholder="请输入公司的社会信用代码" required :rules="[{ required:true }]"/>
<van-field label="营业执照号" placeholder="请输入公司的营业执照号" required :rules="[{ required:true }]"/>
<van-field label="联系地址" placeholder="请输入联系地址" />
<van-field v-model="form.companyName" label="公司名称" placeholder="请输入公司名称" required :rules="[{ required:true }]"/>
<van-field v-model="form.realname" label="负责人姓名" placeholder="请输入负责人姓名" required :rules="[{ required:true }]"/>
<van-field v-model="form.idCardNum" label="身份证号" placeholder="请输入法人身份证号" required :rules="[{ required:true }]"/>
<van-field v-model="form.companyCode" label="社会信用代码" placeholder="请输入公司的社会信用代码" required :rules="[{ required:true }]"/>
<van-field v-model="form.companyLicense" label="营业执照号" placeholder="请输入公司的营业执照号" required :rules="[{ required:true }]"/>
<van-field v-model="form.address" label="联系地址" placeholder="请输入联系地址" />
<div class="submit">
<p>我已阅读并同意<span>《农村产权交易信息服务平台会员注册协议》</span></p>
<van-button round block type="info" color="#007E72" native-type="submit">立即注册</van-button>
@@ -38,24 +58,72 @@
</template>

<script>
import { getCodeImg } from "@/api/login";
import { userRegister } from "@/api/register/index";
export default {
name: "notice",
name: "companyRegister",
data() {
return {
height:0,
tel:''
tel:'',
value:'',
confirmPassWord:'',
showPicker: false,
columns:[],
form: {
phone: "", //账号
code: "", //验证码
password: "", //密码
realname: "", //姓名
idCardNum: "", //身份证号
address: "", //地址
uuid:'',//图形验证码ID
memberType:2,
economicType:1,
companyName:'',
companyLicense:'',
companyCode:''
},
codeUrl:''
};
},
created() {
this.getCode();
this.getDicts("economic_type").then(res => {
res.data.map(item => {
this.columns.push(item.dictLabel);
});
});
this.height = document.body.clientHeight
},
methods: {},
methods: {
getCode() {
getCodeImg().then((res) => {
this.form.uuid = res.uuid;
this.codeUrl = "data:image/gif;base64," + res.img;
});
},
onConfirm(value, index) {
this.value = value;
this.showPicker = false;
this.form.supplyDemandType = index + 1 ;
},
getSubmit(){
console.log(this.form)
userRegister(this.form).then((res) => {
console.log(res)
});
}
},
};
</script>

<style scoped lang="scss">
.app-container {
background-color: #FFF;
.code-img {
width: 220px;
}
}
.submit{
position: absolute;


+ 41
- 14
src/views/register/index.vue Vedi File

@@ -1,5 +1,12 @@
<template>
<div class="app-container" :style="{height:height+'px'}">
<van-nav-bar
title="注册"
left-arrow
fixed
placeholder
@click-left="onClickLeft"
/>
<div class="title">
<p class="title_one">PROPERTY RIGHT</p>
<p class="title_two">TRANSACTION</p>
@@ -106,25 +113,48 @@
<p>农村产权交易网</p>
</div>
</div>
<van-form @submit="onSubmit">
<div class="agree_box">
<label class="agree"><input type="checkbox">我已仔细阅读该须知,并同意该须知相关规定。</label>
<van-button round color="#007e72" block to="registerType">注册</van-button>
<van-field name="checkbox">
<template #input>
<van-checkbox v-model="checkbox" checked-color="#007e72" shape="square"/><p style="color: #FFF;margin-left: 5px;">我已仔细阅读该须知,并同意该须知相关规定。</p>
</template>
</van-field>
</div>
<van-button native-type="submit" type="info" round color="#007e72" block style="width: 90%;margin:0 auto;">注册</van-button>
</van-form>
</div>
</template>

<script>
import {Dialog} from "vant";

export default {
name: "notice",
data() {
return {
height:0
height:0,
checkbox:false
};
},
created() {
this.height = document.body.clientHeight
},
methods: {},
methods: {
onSubmit(){
console.log(this.checkbox);
if(this.checkbox == true){
window.location='registerType';
}else{
Dialog.confirm({
title: '系统提示',
message: '请选择同意协议',
confirmButtonText: '确定',
showCancelButton:false
})
}
}
},
};
</script>

@@ -136,7 +166,7 @@ export default {
height: 100%;
}
.title{
padding-top: 30%;
padding-top: 20%;
width: 88%;
margin: 0 auto;
}
@@ -176,15 +206,12 @@ export default {
width: 90%;
margin: 0 auto;
margin-top: 0.4rem;
margin-bottom: 15px;
}
.agree{
color: #FFF;
margin-bottom:0.4rem;
display: block;

.van-cell{
padding: 0;
background-color: transparent;
margin: 0 auto;
}
.agree_box input[type='checkbox']{
margin-right: 5px;
position: relative;
top: 5px;
}
</style>

+ 8
- 1
src/views/register/registerType.vue Vedi File

@@ -1,5 +1,12 @@
<template>
<div class="app-container" :style="{height:height+'px'}">
<van-nav-bar
title="注册"
left-arrow
fixed
placeholder
@click-left="onClickLeft"
/>
<div class="title">
<p class="title_one">PROPERTY RIGHT</p>
<p class="title_two">TRANSACTION</p>
@@ -56,7 +63,7 @@ export default {
overflow: hidden;
}
.title{
padding-top: 30%;
padding-top: 20%;
width: 88%;
margin: 0 auto;
}


+ 62
- 16
src/views/register/userRegister.vue Vedi File

@@ -1,30 +1,44 @@
<template>
<div class="app-container" :style="{height:height+'px'}">
<van-nav-bar
title="个人注册"
title="个人用户注册"
left-arrow
fixed
placeholder
@click-left="onClickLeft"
/>
<van-form>
<van-field v-model="tel" type="tel" label="手机号" placeholder="请输入手机号" required :rules="[{ required:true }]" />
<van-form @submit="getSubmit">
<van-field v-model="form.phone" type="tel" label="手机号" placeholder="请输入手机号" required :rules="[{ required:true }]" />
<!-- <van-field-->
<!-- center-->
<!-- clearable-->
<!-- label="短信验证码"-->
<!-- placeholder="请输入短信验证码"-->
<!-- required-->
<!-- v-model="form.sms"-->
<!-- :rules="[{ required:true }]"-->
<!-- >-->
<!-- <template #button>-->
<!-- <van-button size="small" type="primary" native-type="button" :rules="[{ required:true }]">发送验证码</van-button>-->
<!-- </template>-->
<!-- </van-field>-->
<van-field
v-model="form.code"
center
clearable
label="短信验证码"
placeholder="请输入短信验证码"
required
:rules="[{ required:true }]"
label="验证码"
placeholder="图形验证码"
required :rules="[{ required:true }]"
>
<template #button>
<van-button size="small" type="primary" native-type="button" :rules="[{ required:true }]">发送验证码</van-button>
<img class="code-img" :src="codeUrl" @click="getCode" />
</template>
</van-field>
<van-field type="password" label="密码" placeholder="请输入密码" required :rules="[{ required:true }]"/>
<van-field type="password" label="确认密码" placeholder="请再次输入密码" required :rules="[{ required:true }]"/>
<van-field label="姓名" placeholder="请输入姓名" required :rules="[{ required:true }]"/>
<van-field label="身份证号" placeholder="请输入身份证号" required :rules="[{ required:true }]"/>
<van-field label="联系地址" placeholder="请输入联系地址" />
<van-field v-model="form.password" type="password" label="密码" placeholder="请输入密码" required :rules="[{ required:true }]"/>
<van-field v-model="confirmPassWord" type="password" label="确认密码" placeholder="请再次输入密码" required :rules="[{ required:true }]"/>
<van-field v-model="form.realname" label="姓名" placeholder="请输入姓名" required :rules="[{ required:true }]"/>
<van-field v-model="form.idCardNum" label="身份证号" placeholder="请输入身份证号" required :rules="[{ required:true }]"/>
<van-field v-model="form.address" label="联系地址" placeholder="请输入联系地址" />
<div class="submit">
<p>我已阅读并同意<span>《农村产权交易信息服务平台会员注册协议》</span></p>
<van-button round block type="info" color="#007E72" native-type="submit">立即注册</van-button>
@@ -34,24 +48,56 @@
</template>

<script>
import { getCodeImg } from "@/api/login";
import { userRegister } from "@/api/register/index";
export default {
name: "notice",
name: "userRegister",
data() {
return {
height:0,
tel:''
tel:'',
confirmPassWord:'',
form: {
phone: "", //账号
code: "", //验证码
password: "", //密码
realname: "", //姓名
idCardNum: "", //身份证号
address: "", //地址
uuid:'',//图形验证码ID
memberType:1,
economicType:1
},
codeUrl:''
};
},
created() {
this.getCode()
this.height = document.body.clientHeight
},
methods: {},
methods: {
getCode() {
getCodeImg().then((res) => {
this.form.uuid = res.uuid;
this.codeUrl = "data:image/gif;base64," + res.img;
});
},
getSubmit(){
console.log(this.form)
userRegister(this.form).then((res) => {
console.log(res)
});
}
},
};
</script>

<style scoped lang="scss">
.app-container {
background-color: #FFF;
.code-img {
width: 220px;
}
}
.submit{
position: absolute;


+ 19
- 3
src/views/user/accountSetting/index.vue Vedi File

@@ -7,21 +7,37 @@
placeholder
@click-left="onClickLeft"
/>
<van-cell title="用户资料修改" to="userInformation" is-link icon="points" />
<van-cell title="用户资料修改" @click="goInformation" to="userInformation" is-link icon="points" />
<van-cell title="银行账户信息修改" to="bankInformation" is-link icon="credit-pay" />
</div>
</template>

<script>
import { getInfo } from "@/api/login/index";
import { getMember , showUserImg } from "@/api/user/index";
export default {
name: "notice",
name: "Setting",
data() {
return {
};
},
created() {
getInfo().then(response => {
getMember(response.user.userId).then(response => {
this.memberType = response.data.memberType;
console.log(this.memberType)
});
});
},
methods: {
goInformation(){
if(this.memberType == 1){
window.location = 'userInformation';
}else{
window.location = 'companyInformation';
}
}
},
methods: {},
};
</script>



+ 188
- 19
src/views/user/accountSetting/userInformation/companyInformation.vue Vedi File

@@ -5,57 +5,226 @@
left-arrow
fixed
placeholder
@click-left="onClickLeft"
/>
<van-form>
<van-field value="15314031621" type="tel" label="手机号" placeholder="请输入手机号" required :rules="[{ required:true }]" >
<van-form @submit="submitForm">
<van-field v-model="tel" readonly type="tel" label="手机号" placeholder="请输入手机号" required :rules="[{ required:true }]" >
<template #extra >
<p style="color: #007e72">修改手机号</p>
</template>
</van-field>
<van-field value="15314031621" label="密码" placeholder="请输入密码" required :rules="[{ required:true }]"/>
<van-field value="北京农燊高科" label="公司名称" placeholder="请输入公司名称" required :rules="[{ required:true }]"/>
<van-field value="庞东旭" label="负责人姓名" placeholder="请输入负责人姓名" required :rules="[{ required:true }]"/>
<van-field value="230381199705255156" label="身份证号" placeholder="请输入法人身份证号" required :rules="[{ required:true }]"/>
<van-field value="1122334" label="社会信用代码" placeholder="请输入公司的社会信用代码" required :rules="[{ required:true }]"/>
<van-field value="私企" label="企业性质" placeholder="请输入企业性质" />
<van-field value="软件程序开发" label="经营范围" placeholder="请输入经营范围" />
<van-field value="2010.9-2020.5" label="经营期限" placeholder="请输入经营期限" />
<van-field value="2010年9月10日" label="成立时间" placeholder="请输入成立时间" />
<van-field value="2100万" label="注册资金" placeholder="请输入注册资金" />
<van-field value="124578963" label="营业执照号" placeholder="请输入公司的营业执照号" required :rules="[{ required:true }]"/>
<van-field value="山东威海" label="联系地址" placeholder="请输入联系地址" />
<!-- <van-field value="15314031621" label="密码" placeholder="请输入密码" required :rules="[{ required:true }]"/>-->
<van-field v-model="userForm.companyName" label="公司名称" placeholder="请输入公司名称" required :rules="[{ required:true }]"/>
<van-field v-model="userForm.realname" label="负责人姓名" placeholder="请输入负责人姓名" required :rules="[{ required:true }]"/>
<van-field v-model="userForm.idCardNum" label="身份证号" placeholder="请输入法人身份证号" required :rules="[{ required:true }]"/>
<van-field v-model="userForm.companyCode" label="社会信用代码" placeholder="请输入公司的社会信用代码" required :rules="[{ required:true }]"/>

<van-field
readonly
clickable
label="企业性质"
:value="companyNameValue"
placeholder="选择企业性质"
@click="showPickerPiker = true"
required :rules="[{ required:true }]"
/>
<van-popup v-model="showPickerPiker" round position="bottom">
<van-picker
show-toolbar
:columns="companyNameList"
@cancel="showPickerPiker = false"
@confirm="onConfirmCompany"
/>
</van-popup>
<!-- <van-field v-model="userForm.companyNature" label="企业性质" placeholder="请输入企业性质" required :rules="[{ required:true }]" />-->


<van-field v-model="userForm.companyScope" label="经营范围" placeholder="请输入经营范围" required :rules="[{ required:true }]" />
<van-field v-model="userForm.companyTimeLimit" label="经营期限" placeholder="请输入经营期限" required :rules="[{ required:true }]" />
<van-field
readonly
clickable
label="成立时间"
:value="userForm.companySetupTime"
placeholder="选择成立时间"
@click="showPicker = true"
required :rules="[{ required:true }]"
/>
<van-popup v-model="showPicker" round position="bottom">
<van-datetime-picker
v-model="currentDate"
type="date"
title="选择年月日"
:min-date="minDate"
:max-date="maxDate"
@cancel="showPicker = false"
@confirm="onConfirm"
/>
</van-popup>
<!-- <van-field v-model="userForm.companySetupTime" label="成立时间" placeholder="请输入成立时间" required :rules="[{ required:true }]" />-->
<van-field v-model="userForm.companyCapital" label="注册资金" placeholder="请输入注册资金" required :rules="[{ required:true }]" />
<van-field v-model="userForm.companyLicense" label="营业执照号" placeholder="请输入公司的营业执照号" required :rules="[{ required:true }]"/>
<van-field v-model="userForm.address" label="联系地址" placeholder="请输入联系地址" required :rules="[{ required:true }]" />
<van-field name="uploader" label="上传相关附件">
<template #input>
<van-uploader :after-read="afterRead" v-model="fileList" multiple />
<van-uploader :after-read="afterRead" :before-delete="deleteFile" v-model="fileList" multiple :max-count="5" />
</template>
</van-field>
<p style="color: red; text-align: center;">*身份证照片、本人和身份证的合影</p>
<div class="submit">
<van-button round block type="info" color="#007E72" native-type="submit" style="width: 90%;margin: 0 auto;">立即注册</van-button>
<van-button round block type="info" color="#007E72" native-type="submit" style="width: 90%;margin: 0 auto;">保存</van-button>
</div>
</van-form>
</div>
</template>

<script>
import { getInfo } from "@/api/login/index";
import { getMember , base64Attach , userUpdate , showUserImg , deleteUserImg} from "@/api/user/index";
import {Dialog} from "vant";
export default {
name: "notice",
name: "companyInformation",
data() {
return {
height:0,
tel:'',
fileList:[]
showPicker: false,
showPickerPiker: false,
minDate: new Date(1900, 0, 1),
maxDate: new Date(),
currentDate: new Date(),
value:'',
companyNameValue:'',
fileList:[],
companyNameList:[],
form: {
files:[],
fileType:'',
bizPath:'transaction',
tableName:'t_transaction_member',
tableId:''
},
userForm:{
companyName:'',
idCardNum:'',
realname:'',
companyCode:'',
companyName:'',
companyNature:'',
companyScope:'',
companyTimeLimit:'',
companySetupTime:'',
companyCapital:'',
companyLicense:'',
address:'',
},
userInfo:[],
upLoadList:[]
};
},
created() {
this.height = document.body.clientHeight
this.getInfo()
this.getDicts("company_nature").then(res => {
console.log(res);
for (var i = 0 ; i < res.data.length ; i++ ){
this.companyNameList.push(res.data[i].dictLabel)
}
//this.value = this.selectDictLabel(res.data,response.data.supplyDemandType);
});
},
methods: {
onConfirmCompany(value,index){
console.log(value)
this.companyNameValue = value;
this.showPickerPiker = false;
this.userForm.companyNature = index+1
console.log(this.userForm.companyName)
},
onConfirm(value) {
this.userForm.companySetupTime = this.getNowFormatDate(value).substr(0,10);
console.log(new Date())
this.showPicker = false;
},
getInfo(){
getInfo().then(response => {
getMember(response.user.userId).then(response => {
console.log(response)

this.userForm.companyName = response.data.companyName;
this.userForm.idCardNum = response.data.idCardNum;
this.userForm.realname = response.data.realname;
this.userForm.companyCode = response.data.companyCode;
this.userForm.companyName = response.data.companyName;
this.userForm.companyNature = response.data.companyNature;
this.userForm.companyScope = response.data.companyScope;
this.userForm.companyTimeLimit = response.data.companyTimeLimit;
this.userForm.companySetupTime = response.data.companySetupTime;
this.userForm.companyCapital = response.data.companyCapital;
this.userForm.companyLicense = response.data.companyLicense;
this.userForm.address = response.data.address;

this.tel = response.data.phone

this.getDicts("company_nature").then(res => {
console.log(res);
this.companyNameValue = this.selectDictLabel(res.data,response.data.companyNature);
});

this.userForm.id = response.data.id;
this.form.tableId = response.data.id;
showUserImg(response.data.id).then(responseSecond => {
console.log(responseSecond)
this.form.files = responseSecond.data
for (var i = 0 ; i < responseSecond.data.length ; i++){
this.fileList.push({url:this.global.severApi+responseSecond.data[i].fileUrl,id:responseSecond.data[i].id})
}
});
});
});
},
afterRead(file) {
// 此时可以自行将文件上传至服务器
console.log(this.fileList)
console.log(file);
for ( var i = 0 ; i < this.fileList.length ; i++){
console.log(this.fileList[i].url)
if(this.fileList[i].url == undefined&&this.fileList!='') {
this.fileList[i] = {url:this.fileList[i].content, id: '', isImage: true};
}
}
},
deleteFile(elIndex){
if(elIndex.id != ''){
deleteUserImg(elIndex.id).then(response => {});
}
return (file, name) => {
let fileIndex = name.index
this.fileList[elIndex].splice(fileIndex, 1)
this.upLoadList[elIndex].splice(fileIndex, 1)
}
},
submitForm(){
this.form.files = [];
userUpdate(this.userForm).then(response => {
var imgList = [];
console.log(this.fileList)
for (var i = 0 ; i < this.fileList.length ; i++){
if(this.fileList[i].url.indexOf('http') == -1&&this.fileList!=''){
this.form.files.push(this.fileList[i].url);
}
}
console.log(this.form.files)
base64Attach(this.form).then(responseSecond => {
if(response.code == 200 && responseSecond.code == 200){
Dialog.confirm({
title: '系统提示',
message: '修改成功',
confirmButtonText: '确定',
})
}
});
});
}
},
};
</script>


+ 15
- 7
src/views/user/accountSetting/userInformation/userInformation.vue Vedi File

@@ -8,7 +8,7 @@
@click-left="onClickLeft"
/>
<van-form @submit="submitForm">
<van-field v-model="userForm.phone" type="tel" label="手机号" placeholder="请输入手机号" readonly required :rules="[{ required:true }]" >
<van-field v-model="tel" readonly type="tel" label="手机号" placeholder="请输入手机号" readonly required :rules="[{ required:true }]" >
<template #extra >
<p style="color: #007e72" onclick="window.location='phoneInformation'">修改手机号</p>
</template>
@@ -47,7 +47,6 @@ export default {
tableId:''
},
userForm:{
phone:'',
idCardNum:'',
realname:'',
address:'',
@@ -64,16 +63,17 @@ export default {
getInfo(){
getInfo().then(response => {
getMember(response.user.userId).then(response => {
console.log(response)
this.userForm.idCardNum = response.data.idCardNum;
this.userForm.realname = response.data.realname;
this.userForm.address = response.data.address;
this.userForm.phone = response.data.phone;
this.userForm.id = response.data.id;
this.form.tableId = response.data.id;
this.tel = response.data.phone
showUserImg(response.data.id).then(responseSecond => {
console.log(responseSecond)
for (var i = 0 ; i < responseSecond.data.length ; i++){
this.fileList.push({url:'http://116.255.135.38:8081/nsgk_test'+responseSecond.data[i].fileUrl,id:responseSecond.data[i].id})
this.fileList.push({url:this.global.severApi+responseSecond.data[i].fileUrl,id:responseSecond.data[i].id})
}
});
});
@@ -81,10 +81,17 @@ export default {
},
afterRead(file) {
// 此时可以自行将文件上传至服务器
this.fileList[this.fileList.length-1] = {url:file.content,id:'',isImage: true};
for ( var i = 0 ; i < this.fileList.length ; i++){
console.log(this.fileList[i].url)
if(this.fileList[i].url == undefined&&this.fileList!='') {
this.fileList[i] = {url:this.fileList[i].content, id: '', isImage: true};
}
}
},
deleteFile(elIndex){
deleteUserImg(elIndex.id).then(response => {});
if(elIndex.id != ''){
deleteUserImg(elIndex.id).then(response => {});
}
return (file, name) => {
let fileIndex = name.index
this.fileList[elIndex].splice(fileIndex, 1)
@@ -122,10 +129,11 @@ export default {
background-color: #FFF;
}
.submit{
position: absolute;
position: fixed;
bottom: 5%;
width: 90%;
left: 5%;
background-color: #FFFFFF;
p{
text-align: center;
margin-bottom: 0.2rem;


+ 69
- 28
src/views/user/bidding/index.vue Vedi File

@@ -11,57 +11,98 @@
v-model="loading"
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
@load="getList"
class="biddingList"
>
<van-row>
<van-col span="11" style="font-size: 0.4rem;line-height: 0.65rem">管家堡乡张村张三丰500亩水田出租出</van-col>
<van-col span="13">
<van-row class="row">
<van-col span="9">距竞价结束</van-col>
<van-col span="15" class="col"><van-count-down :time="time" format="DD天HH时mm分ss秒" style="font-size: 0.2rem;color: #C21F3A" /></van-col>
</van-row>
<van-row class="row">
<van-col span="9">当前价格</van-col>
<van-col span="15" class="col"><span>500</span>元/亩/年</van-col>
</van-row>
<van-row class="row" style="margin: 0;">
<van-col span="9">我的出价</van-col>
<van-col span="15" class="col"><span>500</span>元/亩/年</van-col>
</van-row>
</van-col>
</van-row>
<van-divider :style="{borderColor:'#B4B4B4'}"/>
<van-cell v-for="(item , index) in biddinglist" :key="index">

<van-row>
<van-col span="24" style="font-size: 0.4rem;margin-bottom: 0.1rem;">{{item.projectName}}</van-col>
</van-row>

<van-row>
<van-col span="24">
<van-row class="row">
<van-col span="4" style="font-size: 0.2rem;">当前价格</van-col>
<van-col span="8" class="col"><span>{{item.money}}</span>{{item.unit}}</van-col>
<van-col span="4" style="font-size: 0.2rem;">我的出价</van-col>
<van-col span="8" class="col"><span>{{item.memberMoney}}</span>{{item.unit}}</van-col>
</van-row>
<van-row class="row">
<van-col span="5" style="font-size: 0.2rem;">距竞价结束</van-col>
<van-col span="19" class="col">
<van-count-down :time="item.biddingStopTime" format="DD天HH时mm分ss秒" style="font-size: 0.2rem;color: #C21F3A;margin-top: 3px;" />
</van-col>
</van-row>
</van-col>
</van-row>

</van-cell>
</van-list>
</div>
</template>

<script>
import { getMember , biddinglist } from "@/api/user/index";
import { getInfo } from "@/api/login/index";
export default {
name: "notice",
name: "userBidding",
data() {
return {
loading: false,
finished: true,
time: 30 * 60 * 60 * 1000,
finished: false,
biddinglist:[],
queryParams:{
memberId:'',
pageNum:1,
pageSize:10
}
};
},
created() {
this.getInfo();
},
methods: {
getInfo(){
getInfo().then(response => {
getMember(response.user.userId).then(response => {
this.queryParams.memberId = response.data.id;
this.getList();
});
});
},
getList(){
this.loading = true;
biddinglist(this.queryParams).then(response => {
console.log(response)
for (var i = 0; i < response.rows.length; i++) {
var nowTime = Date.parse(new Date());
var timeTest = response.rows[i].biddingStopTime;
var endTimes=timeTest.substring(0,10).split('-');
timeTest = endTimes[1]+'/'+endTimes[2]+'/'+endTimes[0]+' '+timeTest.substring(10,19);
var leftTime = Date.parse(timeTest)-nowTime;
response.rows[i].biddingStopTime = leftTime ;
this.biddinglist.push(response.rows[i]);
}
if(this.biddinglist.length >= response.total){
this.finished = true;
this.loading = false;
return;
}
this.finished = true;
this.loading = false;
});
},
},
methods: {},
};
</script>

<style scoped lang="scss">
.app-container {

background-color: #FFF;
}
.biddingList{
padding: 0.5rem 2% 0;
.van-row{
padding: 0 3%;
}
padding: 0 2%;
}
.row{
color: #666666;


+ 18
- 8
src/views/user/index.vue Vedi File

@@ -12,7 +12,7 @@
/>
</van-col>
<van-col span="17">
<p>13306310001</p>
<p>{{phone}}</p>
<p onclick="window.location='accountSetting'">账户设置</p>
</van-col>
</van-row>
@@ -22,25 +22,38 @@
<van-cell title="我的咨询" is-link icon="service-o" to="userInteraction" />
<van-cell title="我的供求" is-link icon="bag-o" to="userSupply" />
</div>
<van-button plain type="warning" class="loginOut" @click="loginOut">退出登录</van-button>
<van-button class="loginOut" color="linear-gradient(to right, #ff6034, #ee0a24)" @click="loginOut">
退出登录
</van-button>
</div>
</template>

<script>
import { logout } from "@/api/login/index";
import { getMember , supplyList , deleteSupply} from "@/api/user/index";
import { logout ,getInfo } from "@/api/login/index";
export default {
name: "notice",
name: "user",
data() {
return {
phone:''
};
},
created() {
this.getInfo();
},
methods: {
loginOut(){
logout().then(response => {
location.reload(true);
});
},
getInfo(){
getInfo().then(response => {
console.log(response)
getMember(response.user.userId).then(response => {
console.log(response)
this.phone = response.data.phone;
});
});
},
},
@@ -76,8 +89,5 @@ export default {
.loginOut{
width: 94%;
margin-left: 3%;
background-color: transparent;
color:red;
border-color: red;
}
</style>

+ 35
- 11
src/views/user/supply/index.vue Vedi File

@@ -17,7 +17,6 @@
:finished="finished"
finished-text="没有更多了"
style="margin-top: 10px;"
@load="getList"
>
<van-cell icon="play" v-for="(item , index) in supplyList" v-if="item.supplyDemandType == 1" :key="index">
<template #title>
@@ -25,12 +24,12 @@
</template>
<template #label>
联系电话:{{item.phone}} <p style="float: right;">发布时间:{{item.logintime}}</p>
<van-row style="margin-top: 5px;">
<van-row style="margin-top: 5px;" v-if="item.isAuditStatus == 'N'">
<van-col span="16"></van-col>
<van-col span="4" style="color: #007E72;text-align: right;" @click="goAdd('update',item.id)" v-if="item.reply == null">
<van-icon name="edit" size="15" style="top:3px"/>修改
</van-col>
<van-col span="4" style="color: #007E72;text-align: right;" @click="deleteInteraction(item.id)" v-if="item.reply == null">
<van-col span="4" style="color: #007E72;text-align: right;" @click="deleteSupply(item.id)" v-if="item.reply == null">
<van-icon name="delete-o" size="15" style="top:3px"/>删除
</van-col>
</van-row>
@@ -52,6 +51,15 @@
</template>
<template #label>
联系电话:{{item.phone}} <p style="float: right;">发布时间:{{item.logintime}}</p>
<van-row style="margin-top: 5px;" v-if="item.isAuditStatus == 'N'">
<van-col span="16"></van-col>
<van-col span="4" style="color: #007E72;text-align: right;" @click="goAdd('update',item.id)" v-if="item.reply == null">
<van-icon name="edit" size="15" style="top:3px"/>修改
</van-col>
<van-col span="4" style="color: #007E72;text-align: right;" @click="deleteSupply(item.id)" v-if="item.reply == null">
<van-icon name="delete-o" size="15" style="top:3px"/>删除
</van-col>
</van-row>
</template>
</van-cell>
</van-list>
@@ -61,8 +69,9 @@
</template>

<script>
import { getMember , supplyList } from "@/api/user/index";
import { getMember , supplyList , deleteSupply} from "@/api/user/index";
import { getInfo } from "@/api/login/index";
import {Dialog} from "vant";
export default {
name: "userSupply",
data() {
@@ -76,8 +85,6 @@ export default {
//查询参数
queryParams:{
memberId:'',
pageNum:1,
pageSize:10
}
};
},
@@ -100,6 +107,7 @@ export default {
getInfo().then(response => {
getMember(response.user.userId).then(response => {
this.queryParams.memberId = response.data.id;
this.getList();
});
});
},
@@ -110,14 +118,30 @@ export default {
for (var i = 0; i < response.rows.length; i++) {
this.supplyList.push(response.rows[i]);
}
if(this.supplyList.length >= response.total){
this.finished = true;
return;
}
this.queryParams.pageNum += 1 ;
this.finished = true;
this.loading = false;
});
},
deleteSupply(id){
Dialog.confirm({
title: '系统提示',
message: '是否删除?',
confirmButtonText: '确定',
}).then(() => {
deleteSupply(id).then(response => {
Dialog.confirm({
title: '系统提示',
message: '删除成功',
confirmButtonText: '确定',
showCancelButton:false
}).then(() => {
this.supplyList = [];
this.getList();
})
});
})
}

},
};
</script>

+ 95
- 36
src/views/user/supply/supplyAdd.vue Vedi File

@@ -13,9 +13,11 @@
clickable
name="picker"
:value="value"
label="选择器"
placeholder="点击选择城市"
label="供求类型"
placeholder="点击选择供求类型"
@click="showPicker = true"
required
:rules="[{ required:true }]"
/>
<van-popup v-model="showPicker" position="bottom">
<van-picker
@@ -25,11 +27,16 @@
@cancel="showPicker = false"
/>
</van-popup>
<van-field v-model="form.projectName" label="项目名称" placeholder="请输入标题" required :rules="[{ required:true }]"/>
<van-field v-model="form.location" label="项目地址" placeholder="请输入标题" required :rules="[{ required:true }]"/>
<van-field v-model="form.projectName" label="项目名称" placeholder="请输入项目名称" required :rules="[{ required:true }]"/>
<van-field v-model="form.location" label="项目地址" placeholder="请输入项目地址" required :rules="[{ required:true }]"/>
<van-field v-model="form.realname" label="姓名" placeholder="请输入姓名" required :rules="[{ required:true }]"/>
<van-field v-model="form.phone" label="联系电话" placeholder="请输入联系电话" required :rules="[{ required:true }]"/>
<van-field v-model="form.projectContent" label="项目详情" type="textarea" autosize placeholder="请输入咨询内容" required :rules="[{ required:true }]"/>
<van-field v-model="form.projectContent" label="项目详情" type="textarea" autosize placeholder="请输入项目详情" required :rules="[{ required:true }]"/>
<van-field name="uploader" label="上传相关附件" required :rules="[{ required:true }]">
<template #input>
<van-uploader :after-read="afterRead" :before-delete="deleteFile" v-model="fileList" multiple :max-count="5" />
</template>
</van-field>
<div class="submit">
<van-button round block type="info" color="#007E72" native-type="submit">发布</van-button>
</div>
@@ -38,7 +45,7 @@
</template>

<script>
import { getMember , userDemand , updateCommunicate , selectCommunicate } from "@/api/user/index";
import { getMember , userDemand , updateDemand , selectDemand , base64Attach , showImg , deleteUserImg} from "@/api/user/index";
import { getInfo } from "@/api/login/index";
import {Dialog} from "vant";
export default {
@@ -50,6 +57,7 @@ export default {
value: '',
showPicker: false,
columns:['供应','需求'],
fileList:[],
form:{
projectName:'',
location:'',
@@ -58,7 +66,16 @@ export default {
projectContent:'',
logintime:'',
deptId:100,
}
supplyDemandType:''
},
file:{
tableName:'t_transaction_supply_demand',
tableId:'',
files:[],
fileType:'',
bizPath:'transaction'
},
upLoadList:[]
};
},
created() {
@@ -73,10 +90,29 @@ export default {
}
},
methods: {
afterRead(file) {
// 此时可以自行将文件上传至服务器
for ( var i = 0 ; i < this.fileList.length ; i++){
if(this.fileList[i].url == undefined&&this.fileList!='') {
this.fileList[i] = {url:this.fileList[i].content, id: '', isImage: true};
}
}
},
deleteFile(elIndex){
// deleteUserImg(elIndex.id).then(response => {});
if(elIndex.id != ''){
deleteUserImg(elIndex.id).then(response => {});
}
return (file, name) => {
let fileIndex = name.index
this.fileList[elIndex].splice(fileIndex, 1)
this.upLoadList[elIndex].splice(fileIndex, 1)
}
},
onConfirm(value, index) {
this.value = value;
this.showPicker = false;
Toast(`当前值:${value}, 当前索引:${index}`);
this.form.supplyDemandType = index + 1 ;
},
getInfo(){
getInfo().then(response => {
@@ -88,46 +124,68 @@ export default {
});
},
getInteraction(){
selectCommunicate(this.$route.query.id).then(response => {
this.form.content = response.data.content;
this.form.title = response.data.title;
this.form.realname = response.data.realname;
this.form.phone = response.data.phone;
this.form.id = this.$route.query.id;
selectDemand(this.$route.query.id).then(response => {
this.form.projectName = response.data.projectName;
this.form.location = response.data.location;
this.form.projectContent = response.data.projectContent;
this.form.realname = response.data.realname;
this.form.phone = response.data.phone;
this.form.id = this.$route.query.id;
this.form.supplyDemandType = response.data.supplyDemandType;
this.getDicts("supply_demand_type").then(res => {
this.value = this.selectDictLabel(res.data,response.data.supplyDemandType);
});
showImg(response.data.id).then(responseSecond => {
for (var i = 0 ; i < responseSecond.data.length ; i++){
this.fileList.push({url:this.global.severApi+responseSecond.data[i].fileUrl,id:responseSecond.data[i].id})
}
});
});
},
submitInteraction(){
this.form.logintime = this.getNowFormatDate();
if(this.$route.query.type == 'update'){
updateCommunicate(this.form).then(response => {
if (response.code == 200){
Dialog.confirm({
title: '系统提示',
message: '修改成功',
confirmButtonText: '确定',
showCancelButton:false
}).then(() => {
self.location=document.referrer;
})
this.file.tableId = this.$route.query.id ;
updateDemand(this.form).then(response => {
for (var i = 0 ; i < this.fileList.length ; i++){
if(this.fileList[i].url.indexOf('http://') == -1&&this.fileList!=''){
this.file.files.push(this.fileList[i].url);
}
}
base64Attach(this.file).then(response => {
if (response.code == 200){
Dialog.confirm({
title: '系统提示',
message: '修改成功',
confirmButtonText: '确定',
showCancelButton:false
}).then(() => {
self.location=document.referrer;
})
}
});
});
}else{
userDemand(this.form).then(response => {
if (response.code == 200){
Dialog.confirm({
title: '系统提示',
message: '发布成功',
confirmButtonText: '确定',
showCancelButton:false
}).then(() => {
self.location=document.referrer;
})
this.file.tableId = response.data;
for(var i = 0 ; i < this.fileList.length ; i++){
this.file.files.push(this.fileList[i].url);
}
base64Attach(this.file).then(response => {
if (response.code == 200){
Dialog.confirm({
title: '系统提示',
message: '发布成功',
confirmButtonText: '确定',
showCancelButton:false
}).then(() => {
self.location=document.referrer;
})
}
});
});
}

},

},
};
</script>
@@ -137,10 +195,11 @@ export default {
background-color: #FFF;
}
.submit{
position: absolute;
position: fixed;
bottom: 5%;
width: 90%;
left: 5%;
background-color: #FFFFFF;
p{
text-align: center;
margin-bottom: 0.2rem;


BIN
static/images/zwtpxw.jpg Vedi File

Prima Dopo
Larghezza: 512  |  Altezza: 512  |  Dimensione: 32 KiB

Caricamento…
Annulla
Salva