You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

650 lines
18 KiB

<template>
<!--pages/user/resourcesOrder/index.wxml-->
<view class="order-page">
<view class="tabs-box acea-row row-between">
<view :class="'tab ' + (tabActive == 1 ? 'tab-a' : '')" data-i="1" @tap="tabClick">沟通中</view>
<view :class="'tab ' + (tabActive == 2 ? 'tab-a' : '')" data-i="2" @tap="tabClick">进行中</view>
<view :class="'tab ' + (tabActive == 3 ? 'tab-a' : '')" data-i="3" @tap="tabClick">已结束</view>
</view>
<view class="list">
<view class="no-list" v-if="list.length == 0">
<image src="https://download.cyjyyjy.com/no-needs.png"></image>
<view>暂无订单</view>
<view class="to-btn" @tap="toDemandHall">去需求广场</view>
</view>
<view v-for="(item, index) in list" :key="index" v-if="list.length > 0" class="item">
<view class="number acea-row row-between row-middle">
<text v-if="tabActive == 1"></text>
<text v-else>项目编号 {{item.projectCode}}</text>
<view class="status" v-if="item.projectState != 5">{{tabActive == 1 ? '沟通中' : tabActive == 2 ? '进行中' : '已结束'}}</view>
<view class="status" v-else>平台介入中</view>
</view>
<view class="info-box acea-row">
<image :src="item.resourceInfo.logo" v-if="tabActive == 1"></image>
<image :src="item.projectResource.logo" v-else></image>
<view class="info">
<view class="i-title line1">{{item.resourceInfo.name || item.projectResource.name}}</view>
<view class="tag-item" v-if="tabActive != 1">{{item.cooperationMode}}</view>
<view class="i-desc" v-if="tabActive == 1">{{item.resourceInfo.content}}</view>
<view class="projectinfo-box">
<view class="acea-row row-middle" v-if="tabActive != 1">
<view class="p-label">项目名称:</view>
<view>{{item.projectName}}</view>
</view>
<view class="acea-row row-middle line1" v-if="tabActive != 1">
<view class="p-label">合作方:</view>
<view>{{item.partner}}</view>
</view>
</view>
</view>
</view>
<view class="concat-list-box" v-if="tabActive == 1">
<view class="open-btn acea-row row-middle" @tap="openClick" :data-idx="index">
<text>{{!item.open ? '展开' : '收起'}}</text>
<image :class="'arrow-down ' + (!item.open ? '' : 'arrow-up')" src="/static/images/arrow-d.png"></image>
</view>
<view :class="'concat-list ' + (item.open ? 'list-open' : '')">
<view v-for="(c, index2) in item.partnerInfos" :key="index2" class="concat-item acea-row-nowrap row-middle row-between" @tap="toApplyDetail" :data-item="item">
<view class="acea-row row-middle">
<image :src="c.logo" class="logo"></image>
<view class="name-box acea-row">
<view class="name acea-row row-middle line1">
<view class="company-name">{{c.name}}</view>
<text class="concat-status" v-if="c.comminuteState == 1">等待立项</text>
<text class="concat-status" v-if="c.comminuteState == 2">等待对方确认</text>
<text class="concat-status" v-if="c.comminuteState == 3">已立项</text>
<text class="concat-status" v-if="c.comminuteState == 4">项目流标</text>
</view>
<view class="desc line1">{{c.content}}</view>
</view>
</view>
<image src="/static/images/home/call.png" class="call" @tap.stop="call" :data-item="c"></image>
<view :class="'create-btn ' + (c.comminuteState != 1 ? 'default' : '')" v-if="c.haveRight == 1" @tap.stop="createProject" :data-item="item" :data-id="c.communicateId" :data-comminutestate="c.comminuteState">立项</view>
<!-- <text class="concat-status" wx:if="{{c.comminuteState == 2}}" data-item="{{item}}" data-id="{{c.communicateId}}">等待对方确认</text>
<text class="concat-status" wx:if="{{c.comminuteState == 3}}" data-item="{{item}}" data-id="{{c.communicateId}}">已立项</text>
<text class="concat-status" wx:if="{{c.comminuteState == 4}}" data-item="{{item}}" data-id="{{c.communicateId}}">项目流标</text> -->
</view>
</view>
</view>
<view class="progress-box" v-if="tabActive != 1">
<view v-for="(progress, index2) in item.stageResultsDtoList" :key="index2" class="progress-item acea-row row-between row-middle">
<view class="acea-row row-middle">
<image src="/static/images/home/progress.png"></image>
<text>{{progress.name}} ¥{{progress.money}}</text>
</view>
<view class="progress-status" v-if="progress.state == 0">未开始</view>
<view class="progress-status" v-if="progress.state == 1">申请开启</view>
<view class="progress-status" v-if="progress.state == 2">进行中</view>
<view class="progress-status colorO" v-if="progress.state == 3">已结束</view>
</view>
</view>
<view class="btn-box acea-row row-between row-bottom" v-if="tabActive != 1">
<view class="start-time" v-if="tabActive == 2">{{item.examineTime}}项目开启</view>
<view v-if="tabActive == 3">项目已圆满结束</view>
<view class="btns acea-row">
<view class="btn-item" v-if="tabActive == 2 && item.deliverType == 1" @tap="openNextProgress" :data-item="item">开启下阶段</view>
<view class="btn-item" v-if="tabActive == 2 && item.deliverType == 2" @tap="applyDelivery" :data-item="item">申请交付</view>
<view class="btn-item" v-if="tabActive == 3" @tap="toPlatform" :data-item="item">平台介入</view>
</view>
</view>
</view>
<!-- <view class="item">
<view class="number acea-row row-between row-middle">
<text>项目编号 17262626272727</text>
<view class="status">{{tabActive == 1 ? '沟通中' : tabActive == 2 ? '进行中' : '已结束'}}</view>
</view>
<view class="info-box acea-row row-middle" >
<image src="../../../images/home/company-img.png"></image>
<view class="info">
<view class="i-title line1">教育类学校官网网站建设</view>
<view class="tag-item">定金尾款</view>
<view class="i-desc" wx:if="{{tabActive == 1}}">针对中小学教育机构、课外培训辅导机构,提供官网升级优化和专业的网站建设定制化服务。</view>
<view class="projectinfo-box">
<view class="acea-row row-middle" wx:if="{{tabActive != 1}}">
<view class="p-label">项目名称:</view>
<view>武汉大学武汉大学网建设</view>
</view>
<view class="acea-row row-middle line1" wx:if="{{tabActive != 1}}">
<view class="p-label">合作方:</view>
<view>武汉楚象科技有限公司</view>
</view>
</view>
</view>
</view>
<view class="concat-list-box" wx:if="{{ tabActive == 1 }}">
<view class="open-btn" bindtap="openClick">展开/收起</view>
<view class="concat-list {{open ? 'list-open' : ''}}">
<view class="concat-item acea-row row-middle row-between" wx:for="{{7}}" wx:key="index" bindtap="toApplyDetail">
<image src="../../../images/user/header.png" class="logo"></image>
<view class="name-box acea-row">
<view class="name acea-row row-middle">
<view class="company-name line1">武汉出牛科技科技有限公有限公司</view>
<text class="concat-status">未沟通</text>
</view>
<view class="desc line1">您好,我对您发布的信息很感兴的信息很感兴趣</view>
</view>
<image src="../../../images/home/call.png" class="call"></image>
<view class="create-btn">立项</view>
</view>
</view>
</view>
<view class="progress-box" wx:if="{{ tabActive != 1 }}">
<view class="progress-item acea-row row-between row-middle">
<view class="acea-row row-middle">
<image src="../../../images/home/progress.png"></image>
<text>阶段1 定金</text>
</view>
<view class="progress-status">已结束</view>
</view>
<view class="progress-item acea-row row-between row-middle">
<view class="acea-row row-middle">
<image src="../../../images/home/progress.png"></image>
<text>阶段2 定金</text>
</view>
<view class="progress-status">已结束</view>
</view>
<view class="progress-item acea-row row-between row-middle">
<view class="acea-row row-middle">
<image src="../../../images/home/progress.png"></image>
<text>阶段3 尾款</text>
</view>
<view class="progress-status colorO">已结束</view>
</view>
</view>
<view class="btn-box acea-row row-between row-bottom" wx:if="{{ tabActive != 1 }}">
<view class="start-time" wx:if="{{ tabActive == 2 }}">2021/08/31项目开启</view>
<view class="" wx:if="{{ tabActive == 3 }}">项目已圆满结束</view>
<view class="btns acea-row">
<view class="btn-item" wx:if="{{ tabActive == 2 }}">开启下阶段</view>
<view class="btn-item default" wx:if="{{ tabActive == 2 }}">申请交付</view>
<view class="btn-item" wx:if="{{ tabActive == 3 }}">合作反馈</view>
</view>
</view>
</view> -->
</view>
</view>
</template>
<script>
// pages/user/resourcesOrder/index.js
const app = getApp();
export default {
data() {
return {
tabActive: 1,
list: []
};
},
components: {},
props: {},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
// console.log(this.data.tabActive)
if (this.tabActive == 1) {
this.getCommunicates();
} else {
this.getProjectList();
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
if (this.tabActive == 1) {
this.getCommunicates();
} else {
this.getProjectList();
}
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {},
methods: {
toDemandHall() {
uni.switchTab({
url: '/pages/demandHall/index'
});
},
tabClick(e) {
let i = e.currentTarget.dataset.i;
this.setData({
tabActive: i
});
if (i == 1) {
this.getCommunicates();
} else {
this.getProjectList();
}
},
// 获取 沟通中
getCommunicates() {
app.http('get', 'Communicate/resourceCommunicates').then(res => {
if (res.data.success) {
if (res.data.data.length > 0) {
res.data.data.map(item => {
item.open = false;
});
res.data.data[0].open = true;
}
this.setData({
list: res.data.data
});
uni.stopPullDownRefresh();
}
});
},
//获取进行中、已结束列表
getProjectList() {
app.http('get', 'Project/listProject', {
projectState: this.tabActive - 1,
projectType: 1
}).then(res => {
if (res.data.success) {
res.data.data.map(item => {
item.stageResultsDtoList.map(stage => {
if (stage.state == 1) {
item.showBtn = true;
}
});
});
this.setData({
list: res.data.data
});
uni.stopPullDownRefresh();
}
});
},
// 开启下一阶段
openNextProgress(e) {
let item = e.currentTarget.dataset.item;
console.log(item);
uni.showModal({
title: '提示!',
content: '是否申请开启下阶段?',
success(res) {
if (res.confirm) {
app.http('get', 'Project/applyNextStage', {
projectCode: item.projectCode
}).then(res => {
if (res.data.success) {
uni.showToast({
title: '操作成功!',
duration: 2000
});
}
});
}
}
});
},
//点击展开
openClick(e) {
let idx = e.currentTarget.dataset.idx;
console.log(idx);
let list = this.list;
list[idx].open = !list[idx].open;
this.setData({
list: list
});
},
// 跳转申请详情
toApplyDetail(e) {
let data = encodeURIComponent(JSON.stringify(e.currentTarget.dataset.item));
uni.navigateTo({
url: '/pages/demandHall/applyDetail/index?data=' + data
});
},
//申请交付
applyDelivery(e) {
let item = e.currentTarget.dataset.item;
uni.showModal({
title: '提示',
content: '是否确认提交申请交付',
success: r => {
if (r.confirm) {
app.http('GET', 'Project/applyDeliveryProject', {
projectId: item.id
}).then(res => {
if (res.data.success) {
uni.showToast({
title: '操作成功!'
});
}
});
}
}
});
},
// 拨打电话
call(e) {
let item = e.currentTarget.dataset.item;
uni.makePhoneCall({
phoneNumber: item.phone
});
},
// 立项
createProject(e) {
console.log(e);
let id = e.currentTarget.dataset.id,
comminutestate = e.currentTarget.dataset.comminutestate;
if (comminutestate == 1) {
uni.showModal({
title: "提示!",
content: '是否确认立项?',
success(res) {
if (res.confirm) {
uni.navigateTo({
url: '/pages/demandHall/createProject/index?id=' + id
});
}
}
});
}
},
// 平台介入
toPlatform(e) {
let code = e.currentTarget.dataset.item.projectCode;
uni.navigateTo({
url: '/pages/demandHall/platform/index?code=' + code
});
}
}
};
</script>
<style>
/* pages/user/resourcesOrder/index.wxss */
image{
border-radius: 8rpx;
}
.order-page{
width: 100%;
min-height: 100vh;
background: #EEEEEE;
}
.tabs-box{
width: 100%;
padding: 18rpx 72rpx;
background: #fff;
}
.tab{
text-align: center;
font-size: 28rpx;
color: #707070;
position: relative;
}
.tab::after{
display: block;
content: '';
width: 100%;
height: 8rpx;
border-radius: 8rpx;
background: #FF6D31;
position: absolute;
bottom: -22rpx;
left: 50%;
opacity: 0;
transform: translateX(-50%) scaleX(0);
transition: all .2s ease,opacity .15s ease;
}
.tab-a::after{
opacity: 1;
left: 0;
transform: translateX(0%) scaleX(1);
}
.list{
width: 100%;
padding: 32rpx 40rpx;
}
.no-order{
text-align: center;
line-height: 50rpx;
font-size: 28rpx;
color: #666666;
}
.item{
width: 100%;
padding: 20rpx 20rpx 32rpx;
background: #fff;
border-radius: 12rpx;
margin-bottom: 20rpx;
}
.number{
margin-bottom: 24rpx;
color: #666666;
font-size: 28rpx;
}
.status{
font-weight: 500;
font-size: 28rpx;
color: #FF5100;
}
.info-box image{
width: 154rpx;
height: 154rpx;
border-radius: 8rpx;
margin-right: 12rpx;
}
.info{
width: 450rpx;
font-size: 28rpx;
}
.i-title{
font-weight: 500;
line-height: 40rpx;
color: #1D1D1D;
}
.i-desc{
font-size: 24rpx;
font-weight: 400;
line-height: 34rpx;
color: #666666;
}
.projectinfo-box{
font-size: 24rpx;
color: #1D1D1D;
}
.p-label{
color: #666666;
}
.time{
color: #A7A7A7;
font-size: 24rpx;
}
.colO{
font-size: 28rpx;
margin: 24rpx 0 4rpx;
color: #FF5100;
}
.tag-item{
width: 114rpx;
height: 36rpx;
line-height: 34rpx;
text-align: center;
color: #FF5100;
border: 2rpx solid #FF5100;
background: #fff;
border-radius: 4rpx;
font-size: 24rpx;
margin: 5rpx 0;
}
.open-btn{
color: #FF5100;
font-weight: 500;
font-size: 28rpx;
margin: 20rpx 0;
}
.arrow-down{
width: 25rpx;
height: 14rpx;
margin-left: 12rpx;
}
.arrow-up{
transform: rotate(180deg);
}
.concat-list{
height: 0rpx;
padding-bottom: 0rpx;
margin-bottom: 0rpx;
overflow:hidden;
transition: height 200ms ease;
}
.list-open{
height: 500rpx;
padding-bottom: 28rpx;
margin-bottom: 12rpx;
overflow-y: scroll;
transition: height 300ms ease;
}
.concat-item{
width: 100%;
height: 154rpx;
border-top: 2px solid #EEEEEE;
}
.logo-box{
width: 380rpx;
}
.logo{
width: 92rpx;
height: 92rpx;
margin-right: 10rpx;
}
.call{
width: 54rpx;
height: 54rpx;
}
.name-box{
width: 330rpx;
font-size: 28rpx;
}
.concat-status{
font-size: 24rpx;
display: inline-block;
margin-left: 2rpx;
color: #FF5100;
}
.name{
width: 100%;
font-weight: 500;
line-height: 40rpx;
color: #1D1D1D;
}
.company-name{
width: auto;
margin-right: 10rpx;
}
.desc{
font-size: 20rpx;
color: #707070;
margin-top: 16rpx;
}
.create-btn{
width:120rpx;
height: 50rpx;
padding: 0 6rpx;
font-size: 24rpx;
background: linear-gradient(134deg, #FFA782 0%, #FF6D31 100%);
border-radius: 12rpx;
text-align: center;
line-height: 50rpx;
color: #fff;
}
.progress-box{
margin-top: 32rpx;
padding-top: 32rpx;
border-top: 1px solid #EEEEEE;
}
.progress-item{
width: 100%;
height: 54rpx;
background: #f8f8f8;
padding: 0rpx 20rpx;
font-size: 26rpx;
font-weight: 500;
margin-bottom: 16rpx;
}
.progress-item image{
width: 24rpx;
height: 24rpx;
margin-right: 8rpx;
}
.colorO{
color: #FF8350;
}
.btn-box{
margin-top: 20rpx;
color: #FF5100;
}
.btn-item{
font-size: 28rpx;
width: 162rpx;
height: 56rpx;
line-height: 56rpx;
text-align: center;
background: linear-gradient(134deg, #FFA782 0%, #FF6D31 100%);
border-radius: 12rpx;
color: #fff;
margin-left: 16rpx;
}
.default{
background: linear-gradient(134deg, #BFBFBF 0%, #BFBFBF 100%);
}
.btn-box .start-time{
font-size: 22rpx;
color: #1D1D1D;
}
</style>