Files
code-bang/frontend/miniapp/pages/demand/detail/index.wxml
T
2026-09-30 15:16:09 +08:00

117 lines
8.0 KiB
Plaintext

<!--pages/demand/detail.wxml-->
<wxs src="./index.wxs" module="_calc" />
<view class="page-container">
<!-- 步骤条 -->
<view class="block">
<t-steps theme="dot" current="{{demandInfo.stepList.current}}" bind:change="">
<t-step-item wx:for="{{demandInfo.stepList.steps}}" wx:key="index" wx:for-item="item" title="{{item.status_text}}" content="{{item.status_name}}" />
</t-steps>
</view>
</view>
<!-- 任务信息 -->
<t-cell title="任务编号" note="{{demandInfo.parent_order_no}}" hover />
<t-cell title="任务状态" note="{{demandInfo.status_text}}" bordered hover />
<t-cell title="预算" note="{{_calc.withUnit(demandInfo.budget_amount, '元')}}" bordered hover />
<t-cell title="工期" note="{{_calc.withUnit(demandInfo.limit_time, '天')}}" bordered hover />
<t-cell title="联系方式" note="{{demandInfo.contactText}}" bordered hover />
<view class="qrcode-row">
<image class="qrcode-img" wx:if="{{demandInfo.demand_group_chat.qr_code && (demandInfo.isMy || demandInfo.isMyWin )}}" src="{{demandInfo.demand_group_chat.qr_code}}" data-index="{{0}}" data-images="{{[demandInfo.demand_group_chat.qr_code]}}" mode="widthFix" bind:tap="onImageView" show-menu-by-longpress="{{true}}" />
</view>
<!-- 任务内容 -->
<t-collapse value="{{activeValues}}" bind:change="handleChange">
<t-collapse-panel header="任务内容" value="{{0}}" expandIcon>
<text>{{demandInfo.desc}}</text>
</t-collapse-panel>
<t-collapse-panel header="图片" value="{{1}}" expandIcon>
<view>
<image style="width: 100%;" wx:for="{{demandInfo.images}}" wx:for-item="item" wx:key="index" data-index="{{index}}" data-images="{{demandInfo.images}}" mode="widthFix" src="{{item}}" bind:tap="onImageView"></image>
</view>
</t-collapse-panel>
<t-collapse-panel header="附件" value="{{2}}" expandIcon>
<view class="file-list" wx:if="{{demandInfo.files && demandInfo.files.length}}">
<view class="file-item" wx:for="{{demandInfo.files}}" wx:for-item="item" wx:key="index">
<view class="file-item__name">
<t-tag max-width="420rpx" variant="light" data-url="{{item.url}}">{{item.name}}</t-tag>
</view>
<view class="file-item__ops">
<button class="mini-btn" type="default" size="mini" data-url="{{item.url}}" bindtap="fileUrlCopy">复制</button>
<button class="mini-btn mini-btn--primary" size="mini" data-url="{{item.url}}" bindtap="fileView">预览</button>
</view>
</view>
</view>
<view class="file-empty" wx:else>暂无附件</view>
</t-collapse-panel>
<t-collapse-panel header="{{opType=='quote' ? '我的报价' : '开发人员报价'}}" value="{{3}}" expandIcon>
<view>
<t-input style="--td-input-border-color: rgb(238, 116, 2);" placeholder="填写报价金额" suffix="元" align="right" type="number" value="{{opType=='quote' ? demandInfo.myBidding.quoted_price || demandInfo.demand_contracts.total_amount ||quotedPrice : demandInfo.winBidding.quoted_price}}" disabled="{{opType=='quote' && (!demandInfo.myBidding && !demandInfo.demand_contracts) ? false : true}}" tips="{{opType=='quote' && actualAccount > 0 ? '预计到手金额 ' + actualAccount + '元 + 10%的平台服务费' : ''}}" data-field="quotedPrice" bindchange="onInputChange">
<view slot="label" class="custom-label">报价</view>
</t-input>
<t-input placeholder="填写预计工期" suffix="天" align="right" disabled="{{opType=='quote' && (!demandInfo.myBidding && !demandInfo.demand_contracts) ? false : true}}" type="number" value="{{opType=='quote' ? demandInfo.myBidding.need_days || demandInfo.demand_contracts.need_days || needDays : demandInfo.winBidding.need_days}}" data-field="needDays" bindchange="onInputChange">
<view slot="label" class="custom-label">工期</view>
</t-input>
<t-input label="{{opType=='quote' ? '我的优势' : 'Ta的优势'}}" placeholder="{{opType=='quote' ? '请填写您的优势技能' : '优势技能'}}" disabled="{{opType=='quote' && !demandInfo.myBidding ? false : true}}" value="{{opType=='quote' ? demandInfo.myBidding.remark : demandInfo.winBidding.remark}}" data-field="remark" bindchange="onInputChange" />
</view>
</t-collapse-panel>
<!-- 交付内容:开发者发货后展示,客户确认收货前可查看 -->
<block wx:if="{{_calc.getDelivery(demandInfo)}}">
<t-collapse-panel header="交付内容" value="{{4}}" expandIcon>
<view class="delivery-section">
<view class="delivery-title">开发完成凭证截图</view>
<view class="delivery-images">
<image wx:for="{{_calc.getDelivery(demandInfo).images}}" wx:key="index" class="delivery-image" src="{{item.url}}" mode="aspectFill" data-index="{{index}}" data-images="{{_calc.getDelivery(demandInfo).images}}" bindtap="onDeliveryImagePreview" />
</view>
<view class="delivery-title">交付附件</view>
<view class="file-list">
<view class="file-item" wx:for="{{_calc.getDelivery(demandInfo).files}}" wx:key="index">
<view class="file-item__name">
<t-tag max-width="420rpx" variant="light">{{item.name}}</t-tag>
</view>
<view class="file-item__ops">
<button class="mini-btn" type="default" size="mini" data-url="{{item.url}}" bindtap="fileUrlCopy">复制</button>
<button class="mini-btn mini-btn--primary" size="mini" data-url="{{item.url}}" bindtap="fileView">预览</button>
</view>
</view>
</view>
<block wx:if="{{_calc.getDelivery(demandInfo).remark}}">
<view class="delivery-title">发货备注</view>
<view class="delivery-remark">{{_calc.getDelivery(demandInfo).remark}}</view>
</block>
</view>
</t-collapse-panel>
</block>
</t-collapse>
<!-- 开发人员 -->
<view class="button-submit" wx:if="{{opType =='quote'}}">
<block>
<t-button wx:if="{{_calc.canSubmitBidding(demandInfo)}}" theme="danger" size="large" bind:tap="submitBidding" block>立即报名</t-button>
<view class="button-layout-flex" wx:elif="{{_calc.canConfirmOrder(demandInfo)}}">
<t-button theme="light" size="large" data-status="0" bind:tap="confirmDemand">拒绝接单</t-button>
<t-button theme="danger" size="large" data-status="1" bind:tap="confirmDemand">确认接单</t-button>
</view>
<view class="button-layout-flex" wx:elif="{{_calc.canSignContractDev(demandInfo)}}">
<t-button theme="light" size="large" data-status="0" bind:tap="signContractDev">放弃签约</t-button>
<t-button theme="danger" size="large" data-status="1" bind:tap="signContractDev">合同签约</t-button>
</view>
<t-button wx:elif="{{_calc.isWaitingCustomerSign(demandInfo)}}" theme="light" size="large" disabled block>签约中(等待客户签约)</t-button>
<view class="button-layout-flex" wx:elif="{{_calc.canCompleteWork(demandInfo)}}">
<t-button theme="light" size="large" data-status="0" bind:tap="completeWork">完成失败</t-button>
<t-button theme="danger" size="large" data-status="1" bind:tap="completeWork" block>工作完成</t-button>
</view>
<view class="button-layout-flex" wx:elif="{{_calc.canDeliverGoods(demandInfo)}}">
<t-button theme="danger" size="large" bind:tap="deliverGoods" block>去发货</t-button>
</view>
<t-button wx:elif="{{_calc.isDelivered(demandInfo)}}" theme="light" size="large" disabled block>已发货(等待客户确认收货)</t-button>
</block>
</view>
<!-- 需求方 -->
<view class="button-submit" wx:else>
<block>
<t-button wx:if="{{_calc.canSignContractCustomer(demandInfo)}}" data-status="1" theme="danger" size="large" bind:tap="signContractCustomer" block>合同签约</t-button>
<t-button wx:elif="{{_calc.canAcceptPassed(demandInfo)}}" theme="danger" size="large" bind:tap="acceptPassed" block>验收</t-button>
<t-button wx:elif="{{_calc.canConfirmReceipt(demandInfo)}}" theme="danger" size="large" bind:tap="confirmReceipt" block>确认收货</t-button>
<t-button wx:elif="{{_calc.isWaitingDeliver(demandInfo)}}" theme="light" size="large" disabled block>待发货(等待开发者交付)</t-button>
</block>
</view>