移动端
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

projectDetail.vue 49 KiB

4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
2 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
3 anni fa
2 anni fa
2 anni fa
4 anni fa
2 anni fa
2 anni fa
4 anni fa
4 anni fa
4 anni fa
2 anni fa
4 anni fa
4 anni fa
2 anni fa
4 anni fa
4 anni fa
4 anni fa
2 anni fa
4 anni fa
4 anni fa
4 anni fa
2 anni fa
2 anni fa
4 anni fa
4 anni fa
2 anni fa
2 anni fa
2 mesi fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
4 anni fa
4 anni fa
2 anni fa
4 anni fa
4 anni fa
4 anni fa
2 anni fa
4 anni fa
2 anni fa
4 anni fa
2 anni fa
4 anni fa
2 anni fa
2 anni fa
4 anni fa
2 anni fa
4 anni fa
2 anni fa
4 anni fa
2 anni fa
2 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
2 anni fa
2 anni fa
4 anni fa
2 anni fa
4 anni fa
4 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
4 anni fa
2 mesi fa
3 anni fa
2 anni fa
2 anni fa
2 mesi fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
3 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
2 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
4 anni fa
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373
  1. <template>
  2. <div class="app-container">
  3. <navBar title="项目详情" background="0" positionType="relative"></navBar>
  4. <van-tabs scrollspy sticky >
  5. <van-tab title="竞拍信息" title-style="font-size:12px;">
  6. <van-swipe class="my-swipe" height="235" indicator-color="white" @change="onChange">
  7. <template v-if="detail.fileUrlList !== undefined &&detail.fileUrlList.length>0">
  8. <van-swipe-item v-for="(item,index) in detail.fileUrlList" :key="index"><van-image :src="item.fileUrl?'/api'+item.fileUrl:'../../static/images/zwtp.jpg'" height="235" /></van-swipe-item>
  9. </template>
  10. <template v-else>
  11. <van-swipe-item><van-image src="../../static/images/zwtp.jpg" height="235" /></van-swipe-item>
  12. </template>
  13. <template #indicator>
  14. <div class="custom-indicator">{{ current + 1 }}/{{ detail.fileUrlList !== undefined &&detail.fileUrlList.length>0 ? detail.fileUrlList.length:1 }}</div>
  15. </template>
  16. </van-swipe>
  17. <van-notice-bar color="#fff" background="#21B6AB" left-icon="clock-o">
  18. {{ process }}&nbsp&nbsp&nbsp&nbsp<span id="timeData"></span>
  19. <!-- <van-count-down ref="countDown" :time="time" format="DD 天 HH 时 mm 分 ss 秒" @change="timerChange" />-->
  20. </van-notice-bar>
  21. <div class="information">
  22. <van-row>
  23. <van-col span="24" class="title">【{{ detail.rollout }}】{{ detail.projectName }}</van-col>
  24. </van-row>
  25. <van-row>
  26. <van-col span="5">挂牌价</van-col>
  27. <van-col span="19" class="price"><span>{{detail.price}}</span> {{detail.unit}}</van-col>
  28. </van-row>
  29. <van-row v-if="detail.priceMax">
  30. <van-col span="5">最高限价</van-col>
  31. <van-col span="19" class="money"><span>{{ detail.priceMax }}</span> 元</van-col>
  32. </van-row>
  33. <van-row>
  34. <van-col span="5">保证金</van-col>
  35. <van-col span="19" class="money"><span>{{ detail.deposit }}</span> 元</van-col>
  36. </van-row>
  37. </div>
  38. <div class="lead" v-if="((detail.biddingType=='自由竞价' || detail.biddingType=='1')&&detail.projectShowStatus!='正在竞价'&&detail.projectShowStatus!='等待竞价') || (detail.biddingType!='自由竞价' && detail.biddingType!='1')">
  39. <img src="../../../static/images/transaction_new/project/project_icon_01.png" style="display: block;" />
  40. <template v-if="biddinglistInformation!=undefined&&biddinglistInformation.length>0">
  41. <p>{{biddinglistInformation[0].memberId}}</p>
  42. <p>{{biddinglistInformation[0].money}}{{detail.unit}}</p>
  43. <p>领先</p>
  44. </template>
  45. <p v-else style="margin: 0 auto;">暂无出价</p>
  46. </div>
  47. <div class="detail">
  48. <van-row>
  49. <van-col span="24"><span>报名开始时间:</span>{{ detail.signupStartTime }}</van-col>
  50. </van-row>
  51. <van-row>
  52. <van-col span="24"><span>报名截止时间:</span>{{ detail.signupStopTime }}</van-col>
  53. </van-row>
  54. <van-row>
  55. <van-col span="24"><span>竞价开始时间:</span>{{ detail.biddingStartTime }}</van-col>
  56. </van-row>
  57. <van-row>
  58. <van-col span="24"><span>竞价结束时间:</span>{{ detail.biddingStopSetime }}</van-col>
  59. </van-row>
  60. <van-row>
  61. <van-col span="24"><span>竞价方式:</span>{{ detail.biddingType }}</van-col>
  62. </van-row>
  63. <van-row>
  64. <van-col span="24"><span>竞价方向:</span>{{ detail.biddingDirect }}</van-col>
  65. </van-row>
  66. <van-row v-if="detail.ladderPrice&&detail.biddingType=='阶梯竞价'">
  67. <van-col span="24"><span>阶梯价(增减幅度):</span>¥{{ detail.ladderPrice }}</van-col>
  68. </van-row>
  69. <van-row v-if="detail.delayPeriod!=0">
  70. <van-col span="24"><span>延时周期:</span>{{detail.delayPeriod}}秒</van-col>
  71. </van-row>
  72. <van-row v-if="detail.delayPeriod!=0">
  73. <van-col span="24"><span>延时说明:</span>自由竞价期结束后,进入{{detail.delayPeriod}}秒延时竞价期;延时竞价期内但凡有出价,则继续延时竞价,直至无人出价!</van-col>
  74. </van-row>
  75. <van-row v-if="detail.changeImg.length > 0">
  76. <van-col span="24"><span>变更说明:</span></van-col>
  77. </van-row>
  78. <van-row v-if="detail.changeImg.length > 0">
  79. <van-col span="24">
  80. <img v-for="(item,index) in detail.changeImg" @click="previewImage(index,detail.changeImg)" :key="index" :src="'/api' + item" style="width: 100%;" />
  81. </van-col>
  82. </van-row>
  83. </div>
  84. </van-tab>
  85. <van-tab title="标的物介绍" title-style="font-size:12px;">
  86. <div class="introduce gnbg">
  87. <p class="delTitle"><i></i>标的物介绍</p>
  88. <van-row>
  89. <van-col span="24" style="color:#333333;font-size: 0.4rem;text-align: center;font-weight: bold;">项目挂牌转出方简况及公告内容</van-col>
  90. </van-row>
  91. <van-row>
  92. <van-col span="24"><span>{{detail.projectNumber == '集体资产采购类' ? '建设方':'转出方'}}名称</span>{{ detail.outName }}</van-col>
  93. </van-row>
  94. <van-row>
  95. <van-col span="24"><span>住址</span>{{ detail.address }}</van-col>
  96. </van-row>
  97. <van-row>
  98. <van-col span="24"><span>转出方类型</span>{{ detail.economicType }}</van-col>
  99. </van-row>
  100. <van-row>
  101. <van-col span="24"><span>统一社会信用代码</span>{{ detail.areaNum }}</van-col>
  102. </van-row>
  103. <van-row>
  104. <van-col span="12"><span>项目联系人</span>{{ detail.linkPerson }}</van-col>
  105. <van-col span="12"><span>联系电话</span>{{ detail.linkPhone }}</van-col>
  106. </van-row>
  107. <van-row>
  108. <van-col span="12"><span>项目类型</span>{{ detail.projectNumber }}</van-col>
  109. <van-col span="12"><span>标的类别</span>{{ detail.projectType }}</van-col>
  110. </van-row>
  111. <van-row>
  112. <van-col span="24"><span>转出项目名称</span>{{ detail.projectName }}</van-col>
  113. </van-row>
  114. <van-row>
  115. <van-col span="24"><span>坐落</span>{{ detail.locationName }}</van-col>
  116. </van-row>
  117. <!-- <van-row>-->
  118. <!-- <van-col span="14"><span>是否属再次转出</span>{{ detail.twoout == 'N'?"否":"是"}}</van-col>-->
  119. <!-- <van-col span="10"><span>前次转出方式</span>{{ detail.oneout}}</van-col>-->
  120. <!-- </van-row>-->
  121. <van-row v-if="detail.projectNumber != '集体资产采购类'">
  122. <van-col span="12"><span>拟转出方式</span>{{ detail.rollout }}</van-col>
  123. <van-col span="12"><span>拟转出面积/数量</span> {{detail.allCount}}{{detail.allCountUnit}} </van-col>
  124. </van-row>
  125. <template v-if="detail.projectNumber != '集体资产采购类'">
  126. <template v-if="detail.projectNumber == '集体经营性资产' && detail.projectType == '房屋建筑' && detail.rollout == '转让'">
  127. </template>
  128. <van-row v-else>
  129. <van-col span="24"><span>拟转出期限</span>{{detail.outStartTime}} 至 {{detail.outStopTime}}&nbsp&nbsp&nbsp&nbsp&nbsp共{{detail.outYearNum}}{{detail.outYearUnit}}</van-col>
  130. </van-row>
  131. </template>
  132. <van-row v-if="detail.projectNumber != '集体资产采购类'">
  133. <van-col span="24"><span>涉及农户数</span>{{ detail.peasantNum }}</van-col>
  134. </van-row>
  135. <van-row>
  136. <van-col span="24"><span>支付方式</span>{{ detail.paymentType }}</van-col>
  137. </van-row>
  138. <van-row>
  139. <van-col span="24"><span>支付说明</span></van-col>
  140. </van-row>
  141. <van-row>
  142. <van-col span="24">
  143. <template v-if="detail.paymentTypeOriginal=='1'">
  144. <span v-if="detail.projectNumberOriginal!=='8'">本合同签订之日起</span>
  145. <span v-if="detail.projectNumberOriginal=='8'">项目完成后</span>
  146. <span>{{detail.paymentComment}}日内,</span>
  147. <span v-if="detail.projectNumberOriginal!=='8'">乙方一次性将租赁费支付给甲方。</span>
  148. <span v-if="detail.projectNumberOriginal=='8'">甲方一次性将工程款支付给乙方。</span>
  149. </template>
  150. <template v-if="detail.paymentTypeOriginal!='1'">
  151. {{detail.paymentCondition}}
  152. </template>
  153. </van-col>
  154. </van-row>
  155. <van-row>
  156. <van-col span="24"><span>授权情况</span>{{ detail.authorization }}</van-col>
  157. </van-row>
  158. <van-row>
  159. <van-col span="24"><span>{{detail.projectNumber == '集体资产采购类' ? '工程内容':'拟流转用途'}}</span>{{ detail.contractPurpose }}</van-col>
  160. </van-row>
  161. <van-row>
  162. <van-col span="24"><span>{{detail.projectNumber == '集体资产采购类' ? '承包范围':'其它需要披露的事项'}}</span>{{ detail.cracksEvents }}</van-col>
  163. </van-row>
  164. <van-row>
  165. <van-col span="24"><span>受让方条件</span>{{ detail.condition }}</van-col>
  166. </van-row>
  167. <van-row v-if="detail.projectNumber != '集体资产采购类'">
  168. <van-col span="24" style="color:#0DBCAA;">标的物信息</van-col>
  169. </van-row>
  170. <div v-if="detail.projectNumber != '集体资产采购类'" class="project_info" v-for="(item,index) in detail.subjectList" :key="index">
  171. <van-row>
  172. <van-col span="8">{{ item.landName }}</van-col>
  173. <van-col span="8">{{ item.area }}{{item.areaUnit}}</van-col>
  174. <van-col span="8">{{ item.condition}}</van-col>
  175. </van-row>
  176. </div>
  177. </div>
  178. </van-tab>
  179. <van-tab title="标的物图片" title-style="font-size:12px;">
  180. <div class="introduce gnbg">
  181. <p class="delTitle"><i></i>标的物图片</p>
  182. <template v-if="detail.fileUrlList !== undefined &&detail.fileUrlList.length>0">
  183. <img v-for="(item,index) in detail.fileUrlList" :key="index" :src="item.fileUrl?'/api'+item.fileUrl:'../../../static/images/index/detailImg.png'" style="vertical-align: text-top;width: 100%;" />
  184. </template>
  185. <template v-else>
  186. <img src="../../../static/images/index/detailImg.png" style="vertical-align: text-top;width: 100%;" />
  187. </template>
  188. </div>
  189. </van-tab>
  190. <van-tab title="竞买须知" title-style="font-size:12px;">
  191. <div class="notice gnbg">
  192. <p class="delTitle"><i></i>竞买须知</p>
  193. <div v-html="webConfig"></div>
  194. </div>
  195. </van-tab>
  196. <van-tab title="竞价记录" title-style="font-size:12px;">
  197. <div class="biddingList gnbg">
  198. <p class="delTitle"><i></i>竞价记录</p>
  199. <p v-if="detail.biddingType == '自由竞价' && (detail.projectShowStatus == '正在竞价'||detail.projectShowStatus == '等待竞价')">友情提示:自由竞价方式下,项目结束前不显示竞价记录!</p>
  200. <table v-else width="100%" cellspacing="0">
  201. <tr>
  202. <td>出价人</td>
  203. <td>出价</td>
  204. <td>状态</td>
  205. <td>时间</td>
  206. </tr>
  207. <tr v-for="(item,index) in biddinglistInformation" :key="index">
  208. <td>{{ item.memberId }}</td>
  209. <td>{{ item.money}}</td>
  210. <template v-if="index==0">
  211. <td style="color:#FF2D2D">领先</td>
  212. </template>
  213. <template v-else>
  214. <td></td>
  215. </template>
  216. <td>{{ item.loginTime }}</td>
  217. </tr>
  218. </table>
  219. </div>
  220. </van-tab>
  221. </van-tabs>
  222. <div style="height: 3rem;"></div>
  223. <div class="bottomBtn" v-if="bottomBtn">
  224. <van-row v-if="!showBtn">
  225. <!-- <van-col span="8" style="margin-top: 4px;" @click="showPopup">-->
  226. <!-- <van-image src="../../static/images/icon/clock.png" style="vertical-align: text-bottom;" />-->
  227. <!-- <p style="line-height: 0.2rem;color: #999999">提醒</p>-->
  228. <!-- </van-col>-->
  229. <van-col span="24">
  230. <van-button round color="linear-gradient(to right,#FD683F,#FF2D2D)" block :disabled="isSignup" @click="goSignUp">
  231. {{ btnMsg }}<br/>
  232. <span style="font-size: 10px">保证金¥{{detail.deposit}}</span>
  233. </van-button>
  234. </van-col>
  235. </van-row>
  236. <div v-if="showBtn&&detail.biddingType!='阶梯竞价'" style="display: flex;align-items: center;width: 70%;margin: 0 auto;">
  237. <van-field v-model="price" type="number" input-align="center" placeholder="请输入出价金额" />
  238. <p style="flex-shrink: 0;">{{detail.unit}}</p>
  239. </div>
  240. <van-row v-if="showBtn" type="flex" justify="space-around">
  241. <van-col span="3" v-if="detail.ladderPrice&&detail.biddingType=='阶梯竞价'" style="text-align: center;line-height: 1rem">
  242. <van-button color="#e2e2e2" icon="minus" size="small" @click="sub"></van-button>
  243. </van-col>
  244. <van-col span="18">
  245. <div style="display: flex;">
  246. <van-button round color="linear-gradient(to right,#FD683F,#FF2D2D)" block @click="offer">
  247. <p>出价</p>
  248. <p v-if="detail.ladderPrice&&detail.biddingType=='阶梯竞价'">{{price}}{{detail.unit}}</p>
  249. </van-button>
  250. <!-- <van-button v-if="isFirst == 'Y'" round color="#FF2D2D" block @click="offerFirst" style="margin-left: 10px;width: 30%;">-->
  251. <!-- <p>优先跟价</p>-->
  252. <!-- </van-button>-->
  253. </div>
  254. </van-col>
  255. <van-col span="3" v-if="detail.ladderPrice&&detail.biddingType=='阶梯竞价'" style="text-align: center;line-height: 1rem">
  256. <van-button color="#e2e2e2" icon="plus" size="small" @click="add"></van-button>
  257. </van-col>
  258. </van-row>
  259. </div>
  260. <van-popup v-model="show" class="popup" closeable>
  261. <van-image src="../../static/images/icon/success.png"/>
  262. <p class="popupTit">提醒设置成功</p>
  263. <p class="popupContent">系统将按要求提醒您竞拍</p>
  264. <van-button round color="#FF2D2D" block class="iKnow">
  265. 我知道了
  266. </van-button>
  267. <p class="updatePopup">修改提醒方式</p>
  268. </van-popup>
  269. </div>
  270. </template>
  271. <script>
  272. import {
  273. biddingSubmit,
  274. getBiddingList, getBiddingStopTime,
  275. getMember,
  276. getOutProjectDetail,
  277. getSignup,
  278. getWebConfig,
  279. projectNewBidMoney
  280. } from "../../api/project";
  281. import {getInfo} from "../../api/login";
  282. import $ from "jquery";
  283. import navBar from "@/components/common/nav_bar.vue";
  284. import {ImagePreview} from "vant";
  285. export default {
  286. name: "projectDetail",
  287. components: { navBar },
  288. provide(){
  289. return{
  290. reload:this.reload
  291. }
  292. },
  293. data() {
  294. return {
  295. current: 0,
  296. show: false,
  297. id:this.$route.query.id,
  298. detail: {
  299. biddingType:'自由竞价'
  300. },
  301. webConfig:"",
  302. biddinglistInformation:[],
  303. rollout_type:[],
  304. process:"",
  305. tip:"",
  306. btnMsg:"",
  307. time:null,
  308. timeMsg:"",
  309. isSignup:true,
  310. showBtn:false,
  311. price:null,
  312. userAccount:"",
  313. userName:"",
  314. userId:"",
  315. timeConfig:'',
  316. biddinglistInformationLength:0,
  317. biddingTimeType:1,
  318. isFirst:'',
  319. timer:null,
  320. getSignupData:'',
  321. bottomBtn:false,
  322. delayPeriodNow:false,
  323. nowDate:0,
  324. biddingquery:{
  325. projectId:this.$route.query.id,
  326. pageSize:10,
  327. pageNum:1
  328. },
  329. timeData:'',
  330. timeCount:null
  331. };
  332. },
  333. computed: {
  334. getNowFormatDate:function(){
  335. let date = new Date();
  336. let seperator1 = "-";
  337. let seperator2 = ":";
  338. let month = date.getMonth() + 1;
  339. let day = date.getDate();
  340. let hours = date.getHours();
  341. let minutes = date.getMinutes();
  342. let seconds = date.getSeconds();
  343. if (month >= 1 && month <= 9) {
  344. month = "0" + month;
  345. }
  346. if (day >= 0 && day <= 9) {
  347. day = "0" + day;
  348. }
  349. if (hours >= 0 && hours <= 9) {
  350. hours = "0" + hours;
  351. }
  352. if (minutes >= 0 && minutes <= 9) {
  353. minutes = "0" + minutes;
  354. }
  355. if (seconds >= 0 && seconds <= 9) {
  356. seconds = "0" + seconds;
  357. }
  358. let currentdate = date.getFullYear() + seperator1 + month + seperator1 + day + " " + hours + seperator2 + minutes + seperator2 + seconds;
  359. //console.log(currentdate)
  360. return currentdate;
  361. }
  362. },
  363. created() {
  364. clearInterval(this.timer);
  365. this.reload();
  366. },
  367. methods: {
  368. previewImage(index, imgList) {
  369. ImagePreview({
  370. startPosition: index,
  371. images: imgList.map(element => '/api' + element),
  372. });
  373. },
  374. goSignUp(){
  375. getInfo().then(response => {
  376. getMember(response.user.userId).then(resresponse => {
  377. let data= {
  378. projectId:this.id,
  379. memberId:resresponse.data.id,
  380. };
  381. var isSign;
  382. getSignup(data).then(r =>{
  383. if(r.data=="1"){
  384. isSign=true
  385. }
  386. })
  387. if (resresponse.data.activitiStatus == '3'){
  388. if (isSign){
  389. this.$toast({
  390. icon: 'error', // 找到自己需要的图标
  391. message: '已报名,请耐心等待审核结果!',
  392. duration:"2000",
  393. onClose:function(){
  394. }
  395. })
  396. return;
  397. }
  398. this.$router.push(
  399. {
  400. path: 'signUp',
  401. query: {
  402. projectId: this.detail.id,
  403. deposit: this.detail.deposit,
  404. projectName: this.detail.projectName
  405. }
  406. }
  407. );
  408. }else{
  409. this.$toast({
  410. icon: 'error', // 找到自己需要的图标
  411. message: '交易中心审核注册信息后方可进行报名!',
  412. duration:"2000",
  413. onClose:function(){
  414. }
  415. })
  416. }
  417. })
  418. })
  419. },
  420. onChange(index) {
  421. this.current = index;
  422. },
  423. showPopup() {
  424. this.show = true;
  425. },
  426. reload(){
  427. //console.log("结束进入")
  428. getOutProjectDetail(this.id).then(response =>{
  429. this.detail = response.data;
  430. this.getDicts("rollout_type").then(res =>{
  431. this.detail.rollout = this.selectDictLabel(res.data,response.data.rollout);
  432. if(this.detail.oneout==0){
  433. this.detail.oneout = "无"
  434. }else{
  435. this.detail.oneout = this.selectDictLabel(res.data,response.data.oneout);
  436. }
  437. })
  438. this.getDicts("project_type").then(res => {
  439. this.detail.projectNumberOriginal = response.data.projectNumber;
  440. this.detail.projectNumber = this.selectDictLabel(res.data,response.data.projectNumber);
  441. });
  442. // this.getDicts("sub_object_type").then(res => {
  443. // // this.detail.projectType = this.selectDictLabel(res.data,response.data.projectType);
  444. // });
  445. this.getDicts("economic_type").then(res => {
  446. this.detail.economicType = this.selectDictLabel(res.data,response.data.economicType);
  447. });
  448. this.getDicts("area_unit").then(res => {
  449. this.detail.allCountUnit = this.selectDictLabel(res.data,response.data.allCountUnit);
  450. });
  451. this.getDicts("bidding_type").then(res => {
  452. // debugger;
  453. this.detail.biddingType = this.selectDictLabel(res.data,response.data.biddingType);
  454. });
  455. this.getDicts("bidding_direct").then(res => {
  456. this.detail.biddingDirect = this.selectDictLabel(res.data,response.data.biddingDirect);
  457. });
  458. this.getDicts("price_unit").then(res => {
  459. this.detail.unit = this.selectDictLabel(res.data,response.data.unit);
  460. });
  461. this.getDicts("payment_type").then(res => {
  462. this.detail.paymentTypeOriginal = response.data.paymentType;
  463. this.detail.paymentType = this.selectDictLabel(res.data,response.data.paymentType);
  464. });
  465. for(let i of this.detail.subjectList){
  466. this.getDicts("area_unit").then(res => {
  467. i.areaUnit = this.selectDictLabel(res.data,i.areaUnit);
  468. });
  469. }
  470. var that = this;
  471. this.timer = setInterval(function () {
  472. if(that.process == "竞价中"){
  473. getBiddingList(that.biddingquery).then(response =>{
  474. that.biddinglistInformation = response.rows
  475. if((response.rows.length != that.biddinglistInformationLength) && that.detail.ladderPrice){
  476. if (that.detail.biddingDirect == 2 ||that.detail.biddingDirect == '反向竞价') {
  477. if(response.rows[0].money<=that.price) {
  478. that.price = parseInt(response.rows[0].money) - parseInt(that.detail.ladderPrice)
  479. }
  480. }else{
  481. if(response.rows[0].money>=that.price) {
  482. that.price = parseInt(response.rows[0].money) + parseInt(that.detail.ladderPrice)
  483. }
  484. }
  485. }
  486. that.biddinglistInformationLength = response.total
  487. });
  488. }
  489. },3000)
  490. getInfo().then(response => {
  491. this.userId = response.user.userId;
  492. getMember(response.user.userId).then(res => {
  493. this.userAccount=res.data.phone
  494. this.userName=res.data.realname
  495. this.memberId=res.data.id
  496. let data= {
  497. projectId:this.id,
  498. memberId:res.data.id,
  499. depositStatus:'1'
  500. };
  501. getSignup(data).then(r =>{
  502. this.getSignupData = r.data;
  503. this.isFirst = r.signup.isFirst;
  504. this.getBidding();
  505. this.timeCount = setInterval(()=>{
  506. this.getTime()
  507. },1000)
  508. this.bottomBtn = true;
  509. })
  510. })
  511. })
  512. });
  513. getWebConfig().then(response =>{
  514. this.timeConfig = response.data[8].configValue;
  515. response.data.map(item =>{
  516. if(item.configKey=="cqjy.website.bidInfo"){
  517. this.webConfig = item.configValue
  518. }
  519. })
  520. });
  521. },
  522. getTime(){
  523. this.bottomBtn = true;
  524. // let biddingStartTime = Date.parse(this.detail.biddingStartTime)+0
  525. // let biddingStopTime = Date.parse(this.detail.biddingStopTime)+0
  526. // let biddingStopSetime = Date.parse(this.detail.biddingStopSetime)+0
  527. // let signupStartTime = Date.parse(this.detail.signupStartTime)+0
  528. // let signupStopTime = Date.parse(this.detail.signupStopTime)+0
  529. let biddingStartTime = new Date(this.detail.biddingStartTime.replace(/-/g,'/')).getTime();
  530. let biddingStopTime = new Date(this.detail.biddingStopTime.replace(/-/g,'/')).getTime();
  531. let biddingStopSetime = new Date(this.detail.biddingStopSetime.replace(/-/g,'/')).getTime();
  532. let signupStartTime = new Date(this.detail.signupStartTime.replace(/-/g,'/')).getTime();
  533. let signupStopTime = new Date(this.detail.signupStopTime.replace(/-/g,'/')).getTime();
  534. // console.log(this.detail.biddingStartTime.replace(/-/g,'/'));
  535. // console.log(this.detail.biddingStopTime.replace(/-/g,'/'));
  536. // console.log(this.detail.biddingStopSetime.replace(/-/g,'/'));
  537. // console.log(this.detail.signupStartTime.replace(/-/g,'/'));
  538. // console.log(this.detail.signupStopTime.replace(/-/g,'/'));
  539. // alert(this.detail.biddingStartTime.replace(/-/g,'/')+' & '+biddingStartTime);
  540. // alert(this.detail.biddingStopTime.replace(/-/g,'/')+' & '+biddingStopTime);
  541. // alert(this.detail.biddingStopSetime.replace(/-/g,'/')+' & '+biddingStopSetime);
  542. // alert(this.detail.signupStartTime.replace(/-/g,'/')+' & '+signupStartTime);
  543. // alert(this.detail.signupStopTime.replace(/-/g,'/')+' & '+signupStopTime);
  544. // console.log('1111111111111111111111111')
  545. // console.log(biddingStartTime);
  546. // console.log(biddingStopTime);
  547. // console.log(biddingStopSetime);
  548. // console.log(signupStartTime);
  549. // console.log(signupStopTime);
  550. // console.log('-------------------------')
  551. // let nowDate = Date.parse(this.format($.ajax({async:false,data:{·i: Date.parse(new Date())}}).getResponseHeader("Date"), "yyyy-MM-dd HH:mm:ss"));
  552. // console.log($.ajax({async:false,data:{i: new Date().getTime()}}))
  553. let nowDate = new Date($.ajax({async:false,data:{i: new Date().getTime()}}).getResponseHeader("Date")).getTime();
  554. let time = this.detail.delayPeriod * 1000;
  555. var difference = biddingStopTime-nowDate;//延时后时间差
  556. var differenceSetime = biddingStopSetime-nowDate;//延时后时间差
  557. let m = Math.floor(difference/1000/60%60);
  558. let s = Math.floor(difference/1000%60);
  559. if (s%2 == 0&&time!=0){
  560. getBiddingStopTime(this.id).then(response =>{
  561. this.$set(this.detail,'biddingStopTime',response.data);
  562. });
  563. }
  564. if (differenceSetime <= 0 && difference >= 0 && difference <=time){
  565. console.log("竞价剩余两分钟"+"m:"+m+"s:"+s)
  566. this.biddingTimeType = 1;
  567. this.process= "竞价中"
  568. this.detail.projectShowStatus = '正在竞价';
  569. this.tip=this.detail.biddingStopTime+"结束竞价"
  570. this.timeMsg="距竞价结束"
  571. if(this.getSignupData=="1"){
  572. this.isSignup=true
  573. this.btnMsg="立即竞价"
  574. if(this.detail.biddingType!='线下竞价'){
  575. this.showBtn=true
  576. }else{
  577. this.btnMsg="立即竞价(暂不支持线上出价)"
  578. }
  579. // this.price=this.detail.ladderPrice?this.biddinglistInformation[0].money+this.detail.ladderPrice:this.biddinglistInformation[0].money+1
  580. }else{
  581. this.btnMsg="未报名"
  582. this.isSignup=true
  583. }
  584. $('#timeData').html(this.TimeInterval(biddingStopTime-nowDate));
  585. if (s < 1 && m < 1){
  586. console.log("竞价结束22222222222")
  587. getBiddingStopTime(this.id).then(response => {
  588. this.$set(this.detail,'biddingStopTime',response.data)
  589. let timeNew = Date.parse(response.data) + 0 - nowDate;
  590. if (timeNew > 0) {
  591. this.$set(this.detail,'biddingStopTime',response.data)
  592. this.getTime();
  593. } else {
  594. // clearInterval(this.timeCount);
  595. this.process = "竞价结束"
  596. this.tip = this.detail.biddingStopTime + "结束竞价"
  597. this.btnMsg = "竞价结束"
  598. this.timeMsg = "竞价结束"
  599. this.time = 0
  600. this.isSignup = true
  601. this.showBtn = false
  602. this.biddingTimeType = 2;
  603. this.detail.projectShowStatus = '竞价结束'
  604. $('#timeData').html('');
  605. return;
  606. }
  607. });
  608. }else if (s%2 == 0&&time!=0){
  609. getBiddingStopTime(this.id).then(response =>{
  610. this.$set(this.detail,'biddingStopTime',response.data);
  611. });
  612. }
  613. }else{
  614. this.dataCompare(signupStartTime,signupStopTime,biddingStartTime,biddingStopSetime)
  615. }
  616. },
  617. dataCompare(signupStartTime,signupStopTime,biddingStartTime,biddingStopTime){
  618. // alert(new Date($.ajax({async:false,data:{i: Date.parse(new Date())}}).getResponseHeader("Date")).getTime());
  619. // let nowDate = Date.parse(
  620. // this.format(
  621. // $.ajax({
  622. // async:false,
  623. // data:{i: Date.parse(new Date())}
  624. // }).getResponseHeader("Date"), "yyyy-MM-dd HH:mm:ss")
  625. // );
  626. let nowDate = new Date($.ajax({async:false,data:{i: new Date().getTime()}}).getResponseHeader("Date")).getTime();
  627. if(signupStartTime>nowDate){
  628. //console.log('未开始')
  629. this.process= "报名未开始"
  630. this.tip=this.detail.signupStartTime+"开始报名"
  631. this.btnMsg="报名未开始"
  632. this.timeMsg="距报名开始"
  633. $('#timeData').html(this.TimeInterval(signupStartTime-nowDate))
  634. // this.timeData = ;
  635. this.isSignup=true
  636. }
  637. if(signupStopTime>nowDate&&signupStopTime>signupStartTime){
  638. //console.log('报名中')
  639. this.process= "报名中"
  640. this.isSignup=false
  641. this.tip=this.detail.signupStopTime+"报名截止"
  642. this.btnMsg="立即报名"
  643. this.timeMsg="距报名截止"
  644. // this.time = signupStopTime-nowDate
  645. $('#timeData').html(this.TimeInterval(signupStopTime-nowDate));
  646. // this.timeData = this.TimeInterval(signupStopTime-nowDate);
  647. if(this.getSignupData=="1"){
  648. this.isSignup=true
  649. this.btnMsg="已报名"
  650. }
  651. }
  652. if(biddingStartTime>nowDate&&nowDate>signupStopTime){
  653. //console.log('竞价未开始')
  654. this.biddingTimeType = 3;
  655. this.process= "竞价未开始"
  656. this.tip=this.detail.biddingStartTime+"开始竞价"
  657. this.timeMsg="距竞价开始"
  658. // this.time = biddingStartTime-nowDate
  659. $('#timeData').html(this.TimeInterval(biddingStartTime-nowDate));
  660. // this.timeData = this.TimeInterval(biddingStartTime-nowDate);
  661. this.isSignup=true;
  662. if(this.getSignupData=="1"){
  663. this.btnMsg="已报名"
  664. // this.price=this.detail.ladderPrice?this.biddinglistInformation[0].money+this.detail.ladderPrice:this.biddinglistInformation[0].money+1
  665. }else{
  666. this.btnMsg="未报名"
  667. }
  668. }
  669. if(biddingStopTime>nowDate&&nowDate>biddingStartTime){
  670. //console.log('竞价中')
  671. this.biddingTimeType = 1;
  672. this.process= "竞价中"
  673. this.tip=this.detail.biddingStopTime+"结束竞价"
  674. this.timeMsg="距竞价结束"
  675. // this.time = biddingStopTime-nowDate
  676. $('#timeData').html(this.TimeInterval(biddingStopTime-nowDate));
  677. // this.timeData = this.TimeInterval(biddingStopTime-nowDate);
  678. //console.log(this.timeData)
  679. if(this.getSignupData=="1"){
  680. this.isSignup=true
  681. this.btnMsg="立即竞价"
  682. if(this.detail.biddingType!='线下竞价'){
  683. this.showBtn=true
  684. }else{
  685. this.btnMsg="立即竞价(暂不支持线上出价)"
  686. }
  687. // this.price=this.detail.ladderPrice?this.biddinglistInformation[0].money+this.detail.ladderPrice:this.biddinglistInformation[0].money+1
  688. }else{
  689. this.btnMsg="未报名"
  690. this.isSignup=true
  691. }
  692. }
  693. if(nowDate>biddingStopTime){
  694. //console.log('竞价结束')
  695. // clearInterval(this.timeCount);
  696. this.process= "竞价结束"
  697. this.tip=this.detail.biddingStopTime+"结束竞价"
  698. this.detail.projectShowStatus = '竞价结束'
  699. this.btnMsg="竞价结束"
  700. this.timeMsg="竞价结束"
  701. this.time = 0
  702. this.isSignup = true
  703. this.showBtn=false
  704. this.biddingTimeType = 2;
  705. $('#timeData').html('');
  706. // this.timeData = ''
  707. }
  708. },
  709. getBidding(){
  710. var that = this;
  711. getBiddingList(that.biddingquery).then(response =>{
  712. that.biddinglistInformation = response.rows
  713. that.biddinglistInformationLength = response.total
  714. if (that.detail.biddingType == '阶梯竞价'){
  715. if (response.rows.length>0&&that.detail.ladderPrice){
  716. if (that.price == 0){return;}
  717. if (that.detail.biddingDirect == 2 ||that.detail.biddingDirect == '反向竞价') {
  718. let money = that.price?that.price:response.rows[0].money
  719. if(response.rows[0].money<=money){
  720. that.price = parseFloat(response.rows[0].money - that.detail.ladderPrice).toFixed(2)
  721. }
  722. }else{
  723. console.log(response.rows[0].money>=that.price)
  724. let money = that.price?that.price:response.rows[0].money
  725. if(response.rows[0].money>=money){
  726. that.price = parseFloat(response.rows[0].money + that.detail.ladderPrice).toFixed(2)
  727. }
  728. }
  729. }else if (response.rows.length>0&&!that.detail.ladderPrice){
  730. if (that.price == 0){return;}
  731. that.price = response.rows[0].money
  732. }else{
  733. if (that.detail.biddingDirect == 2 ||that.detail.biddingDirect == '反向竞价') {
  734. that.price = parseFloat(that.detail.price).toFixed(2)
  735. }else{
  736. that.price = parseFloat(that.detail.price).toFixed(2)
  737. }
  738. }
  739. }
  740. });
  741. },
  742. offerFirst(){
  743. let newMoney;
  744. projectNewBidMoney(this.id).then(response =>{
  745. if (response.data&&response.code==200){
  746. newMoney = response.data;
  747. }else{
  748. newMoney = this.detail.price;
  749. }
  750. let data= {
  751. projectId:this.id,
  752. memberId:this.memberId,
  753. userId:this.userId,
  754. userAccount:this.userAccount,
  755. userName:this.userName,
  756. money:parseFloat(newMoney),
  757. loginTime:Date.now($.ajax({async:false,data:{i: Date.parse(new Date())}}).getResponseHeader("Date"))
  758. };
  759. biddingSubmit(data).then(response =>{
  760. let _this = this
  761. if(response){
  762. this.$toast({
  763. icon: 'success', // 找到自己需要的图标
  764. message: '出价成功',
  765. duration:"1000",
  766. onClose:function(){
  767. clearInterval(this.timer);
  768. // _this.reload()
  769. _this.getBidding();
  770. if (_this.detail.delayPeriod != 0 && _this.delayPeriodNow){
  771. _this.time = null;
  772. }
  773. if (_this.detail.biddingType=='自由竞价'||_this.detail.biddingType=='公开竞价'){
  774. _this.price = null;
  775. }
  776. }
  777. })
  778. }
  779. })
  780. });
  781. },
  782. offer(){
  783. let newMoney;
  784. projectNewBidMoney(this.id).then(response =>{
  785. if (response.data&&response.code==200){
  786. newMoney = response.data;
  787. }else{
  788. newMoney = this.detail.price;
  789. }
  790. if (this.price==''||this.price==0||this.price<0||this.price == null){
  791. this.$toast({
  792. icon: 'fail', // 找到自己需要的图标
  793. message: '请输入出价金额',
  794. duration:"1000",
  795. onClose:function(){
  796. }
  797. })
  798. return;
  799. }
  800. if (this.detail.biddingDirect == '反向竞价'){
  801. // if (this.biddinglistInformation.length<1){
  802. if(this.detail.price<this.price){
  803. this.$toast({
  804. icon: 'fail', // 找到自己需要的图标
  805. message: '出价不能高于挂牌价格',
  806. duration:"1000",
  807. onClose:function(){
  808. }
  809. })
  810. return;
  811. }else{
  812. if (this.detail.biddingType=='阶梯竞价'||this.detail.biddingType=='公开竞价'){
  813. if (this.biddinglistInformation.length>1){
  814. //判断用户出价不能高于当前出价最低价格
  815. if(newMoney <= this.price){
  816. this.$toast({
  817. icon: 'fail', // 找到自己需要的图标
  818. message: '出价不能高于当前出价最低价格',
  819. duration:"1000",
  820. onClose:function(){
  821. }
  822. })
  823. return;
  824. }
  825. }
  826. }
  827. }
  828. }else{
  829. if(this.detail.price>this.price){
  830. this.$toast({
  831. icon: 'fail', // 找到自己需要的图标
  832. message: '出价不能低于挂牌价格',
  833. duration:"1000",
  834. onClose:function(){
  835. }
  836. })
  837. return;
  838. }else{
  839. if (this.detail.biddingType=='阶梯竞价'||this.detail.biddingType=='公开竞价'){
  840. if (this.biddinglistInformation.length>1){
  841. //判断用户出价不能高于当前出价最低价格
  842. //console.log(newMoney)
  843. //console.log(this.price)
  844. if(newMoney >= this.price){
  845. this.$toast({
  846. icon: 'fail', // 找到自己需要的图标
  847. message: '出价不能低于当前出价最高价格',
  848. duration:"1000",
  849. onClose:function(){
  850. }
  851. })
  852. return;
  853. }
  854. }
  855. }
  856. }
  857. }
  858. let data= {
  859. projectId:this.id,
  860. memberId:this.memberId,
  861. userId:this.userId,
  862. userAccount:this.userAccount,
  863. userName:this.userName,
  864. money:parseFloat(this.price),
  865. loginTime:Date.now($.ajax({async:false,data:{i: Date.parse(new Date())}}).getResponseHeader("Date"))
  866. };
  867. // console.log(Date.now($.ajax({async:false}).getResponseHeader("Date")))
  868. biddingSubmit(data).then(response =>{
  869. let _this = this
  870. if(response){
  871. // clearInterval(this.timer);
  872. this.$toast({
  873. icon: 'success', // 找到自己需要的图标
  874. message: '出价成功',
  875. duration:"1000",
  876. onClose:function(){
  877. clearInterval(this.timer);
  878. // _this.reload()
  879. _this.getBidding();
  880. if (_this.detail.delayPeriod != 0 && _this.delayPeriodNow){
  881. _this.time = null;
  882. }
  883. if (_this.detail.biddingType=='自由竞价'||_this.detail.biddingType=='公开竞价'){
  884. _this.price = null;
  885. }else{
  886. _this.price = _this.price-_this.detail.ladderPrice;
  887. }
  888. }
  889. })
  890. }
  891. })
  892. });
  893. },
  894. add(){
  895. if (this.detail.biddingDirect == '反向竞价'){
  896. if (this.biddinglistInformation.length<1){
  897. if(this.detail.price <= this.price){
  898. this.$toast({
  899. icon: 'fail', // 找到自己需要的图标
  900. message: '出价不能高于挂牌价格',
  901. duration:"1000",
  902. onClose:function(){
  903. }
  904. })
  905. return;
  906. }
  907. }else{
  908. if(this.biddinglistInformation[0].money <= (parseFloat(this.price)+parseFloat(this.detail.ladderPrice)).toFixed(2)){
  909. this.$toast({
  910. icon: 'fail', // 找到自己需要的图标
  911. message: '出价不能高于当前出价最低价格',
  912. duration:"1000",
  913. onClose:function(){
  914. }
  915. })
  916. return;
  917. }
  918. }
  919. }else{
  920. if (this.biddinglistInformation.length<1){
  921. if(this.detail.price>this.price){
  922. this.$toast({
  923. icon: 'fail', // 找到自己需要的图标
  924. message: '出价不能低于挂牌价格',
  925. duration:"1000",
  926. onClose:function(){
  927. }
  928. })
  929. return;
  930. }
  931. }else{
  932. if(this.biddinglistInformation[0].money>this.price){
  933. this.$toast({
  934. icon: 'fail', // 找到自己需要的图标
  935. message: '出价不能低于当前出价最高价格',
  936. duration:"1000",
  937. onClose:function(){
  938. }
  939. })
  940. return;
  941. }
  942. }
  943. }
  944. //console.log(this.price == null)
  945. this.price == null?this.price = 0:this.price = this.price;
  946. this.detail.ladderPrice?this.price=(parseFloat(this.price)+parseFloat(this.detail.ladderPrice)).toFixed(2):this.price += 1
  947. },
  948. sub(){
  949. if (this.detail.biddingDirect == '反向竞价'){
  950. if (this.biddinglistInformation.length<1){
  951. if(this.detail.price<this.price){
  952. this.$toast({
  953. icon: 'fail', // 找到自己需要的图标
  954. message: '出价不能高于挂牌价格',
  955. duration:"1000",
  956. onClose:function(){
  957. }
  958. })
  959. return;
  960. }
  961. }else{
  962. if(this.biddinglistInformation[0].money<this.price){
  963. this.$toast({
  964. icon: 'fail', // 找到自己需要的图标
  965. message: '出价不能高于当前出价最低价格',
  966. duration:"1000",
  967. onClose:function(){
  968. }
  969. })
  970. return;
  971. }
  972. }
  973. }else{
  974. if (this.biddinglistInformation.length<1){
  975. if(this.detail.price>=this.price){
  976. this.$toast({
  977. icon: 'fail', // 找到自己需要的图标
  978. message: '出价不能低于挂牌价格',
  979. duration:"1000",
  980. onClose:function(){
  981. }
  982. })
  983. return;
  984. }
  985. }else{
  986. if(this.biddinglistInformation[0].money >= (parseFloat(this.price)-parseFloat(this.detail.ladderPrice)).toFixed(2)){
  987. this.$toast({
  988. icon: 'fail', // 找到自己需要的图标
  989. message: '出价不能低于当前出价最高价格',
  990. duration:"1000",
  991. onClose:function(){
  992. }
  993. })
  994. return;
  995. }
  996. }
  997. }
  998. this.price == null?this.price = 0:this.price = this.price;
  999. if (this.price == 0)return;
  1000. this.detail.ladderPrice?this.price=(parseFloat(this.price)-parseFloat(this.detail.ladderPrice)).toFixed(2):this.price -= 1
  1001. // if(this.detail.ladderPrice){
  1002. // if((this.price-this.detail.ladderPrice)>this.biddinglistInformation[0].money){
  1003. // this.price-=this.detail.ladderPrice
  1004. // }else{
  1005. // this.$toast({
  1006. // icon: 'error', // 找到自己需要的图标
  1007. // message: '出价不能低于当前最高价',
  1008. // duration:"1000",
  1009. // })
  1010. // }
  1011. // }else{
  1012. // if((this.price-1)>this.biddinglistInformation[0].money){
  1013. // this.price-=1
  1014. // }else{
  1015. // this.$toast({
  1016. // icon: 'error', // 找到自己需要的图标
  1017. // message: '出价不能低于当前最高价',
  1018. // duration:"1000",
  1019. // })
  1020. // }
  1021. // }
  1022. },
  1023. timerChange(value){
  1024. let d = value.days;
  1025. let h = value.hours;
  1026. let m = value.minutes;
  1027. let s = value.seconds;
  1028. let biddingStopTime = Date.parse(this.detail.biddingStopTime)+0
  1029. let nowDate = Date.parse(this.format($.ajax({async:false,data:{i: Date.parse(new Date())}}).getResponseHeader("Date"), "yyyy-MM-dd HH:mm:ss"));
  1030. let time = this.detail.delayPeriod * 1000;
  1031. if (s < 1 && m < 1){
  1032. console.log("竞价结束22222222222")
  1033. getBiddingStopTime(this.id).then(response => {
  1034. this.$set(this.detail,'biddingStopTime',response.data)
  1035. let timeNew = Date.parse(response.data) + 0 - nowDate;
  1036. if (timeNew > 0) {
  1037. this.$set(this.detail,'biddingStopTime',response.data)
  1038. this.getTime();
  1039. } else {
  1040. this.process = "竞价结束"
  1041. this.tip = this.detail.biddingStopTime + "结束竞价"
  1042. this.btnMsg = "竞价结束"
  1043. this.timeMsg = "竞价结束"
  1044. this.time = 0
  1045. this.isSignup = true
  1046. this.showBtn = false
  1047. this.biddingTimeType = 2;
  1048. return;
  1049. }
  1050. });
  1051. }else if (s%2 == 0&&time!=0){
  1052. //console.log('aaa')
  1053. // console.log((biddingStopTime-nowDate))
  1054. // console.log(time)
  1055. // this.getTime();
  1056. if ((biddingStopTime-nowDate)<=time){
  1057. // console.log("竞价剩余两分钟"+"m:"+m+"s:"+s)
  1058. getBiddingStopTime(this.id).then(response =>{
  1059. if(this.detail.biddingStopTime!=response.data){
  1060. console.log('有人出价')
  1061. this.time = null;
  1062. }
  1063. this.detail.biddingStopTime = response.data
  1064. this.$set(this.detail,'biddingStopTime',response.data);
  1065. this.delayPeriodNow = true;
  1066. // this.time = Date.parse(response.data)+0-nowDate;
  1067. });
  1068. }
  1069. }
  1070. },
  1071. TimeInterval(timestamp) {
  1072. //时间戳转化为天时分秒
  1073. // 总秒数
  1074. var second = Math.floor(timestamp/ 1000);
  1075. // 天数
  1076. var day = Math.floor(second / 3600 / 24);
  1077. // 小时
  1078. var hr = Math.floor(second / 3600 % 24);
  1079. // 分钟
  1080. var min = Math.floor(second / 60 % 60);
  1081. // 秒
  1082. var sec = Math.floor(second % 60);
  1083. return (day?day + "天":'0天') + (hr?hr+ "时":'0时') + ( min?min + "分":'0分') + sec + "秒";
  1084. },
  1085. },
  1086. destroyed () {
  1087. console.log('bbbbbbbbbb')
  1088. clearInterval(this.timer);
  1089. clearInterval(this.timeCount);
  1090. },
  1091. beforeDestory() {
  1092. clearInterval(this.timer)
  1093. clearInterval(this.timeCount);
  1094. },
  1095. //离开页面清除定时器失效问题
  1096. beforeRouteLeave(to, from, next) {
  1097. console.log("我离开了")
  1098. clearInterval(this.timer)
  1099. clearInterval(this.timeCount);
  1100. this.time = null;
  1101. next()
  1102. }
  1103. };
  1104. </script>
  1105. <style scoped lang="scss">
  1106. .app-container {
  1107. background: #F4F8FB;
  1108. height: 100vh;
  1109. overflow-y: scroll;
  1110. }
  1111. /deep/ .van-tabs__content{
  1112. background: transparent;
  1113. /*border-radius: 20PX;*/
  1114. }
  1115. /deep/ .van-tabs__nav{
  1116. /*background: transparent;*/
  1117. padding-bottom: 0;
  1118. }
  1119. /deep/ .van-tab--active{
  1120. background: #fff;
  1121. }
  1122. /deep/ .van-tab::after{
  1123. display: none;
  1124. }
  1125. /deep/ .van-tabs__wrap{
  1126. overflow: initial;
  1127. }
  1128. /deep/ .van-tabs__line{
  1129. /*background: linear-gradient(to right, #5166f5, #97eedc);*/
  1130. background: url("../../../static/images/transaction_new/tab_border.png") no-repeat center;
  1131. height: 0.35rem;
  1132. bottom: 0;
  1133. }
  1134. /deep/ .van-tab:nth-child(1)::before{
  1135. content: "";
  1136. position: absolute;
  1137. left: auto;
  1138. top: 0;
  1139. right: -19%;
  1140. bottom: 0;
  1141. background: url("../../../static/images/yinnong/login_tab_icon.png") no-repeat center;
  1142. background-size: 100% 100%;
  1143. width: 20%;
  1144. }
  1145. /deep/ .van-tab:nth-child(2)::before{
  1146. content: "";
  1147. position: absolute;
  1148. left: -19%;
  1149. top: 0;
  1150. right: auto;
  1151. bottom: 0;
  1152. /*background: url("../../../static/images/yinnong/login_tab_icon_right.png") no-repeat center;*/
  1153. /*background-size: 100% 100%;*/
  1154. width: 20%;
  1155. }
  1156. .van-count-down{
  1157. display: inline-block;
  1158. color: #fff;
  1159. }
  1160. .custom-indicator {
  1161. position: absolute;
  1162. right: 20px;
  1163. bottom: 20px;
  1164. padding: 0px 20px;
  1165. font-size: 12px;
  1166. /*rgba(0, 0, 0, 0.1)*/
  1167. background: rgba(0, 0, 0, 0.2);
  1168. color: #FFF;
  1169. border-radius: 20px;
  1170. line-height: 0.5rem;
  1171. }
  1172. .title{
  1173. font-size: 0.45rem;
  1174. margin-bottom: 10PX;
  1175. }
  1176. .my-swipe{
  1177. width: 100%;
  1178. }
  1179. .my-swipe .van-swipe-item .van-image{
  1180. width: 100%;
  1181. }
  1182. .information{
  1183. background-color: #FFF;
  1184. padding: 0.4rem 0.5rem;
  1185. width: 94%;
  1186. margin: 0.3rem auto 0;
  1187. border-radius: 10PX;
  1188. }
  1189. .van-row{
  1190. line-height: 0.7rem;
  1191. }
  1192. .price{
  1193. color: #FF2D2D;
  1194. }
  1195. .price span{
  1196. font-size: 0.5rem;
  1197. font-weight: bold;
  1198. }
  1199. .money{
  1200. color: #FF2D2D;
  1201. }
  1202. .money span{
  1203. font-size: 0.5rem;
  1204. font-weight: bold;
  1205. }
  1206. .van-count-down{
  1207. line-height: 0.7rem;
  1208. }
  1209. .lead{
  1210. background: #FFF url("../../../static/images/transaction_new/project/project_icon_02.png") no-repeat center;
  1211. background-size: 100% 100%;
  1212. padding: 0.2rem 0.5rem;
  1213. color: #FF2D2D;
  1214. display: flex;
  1215. align-items: center;
  1216. justify-content: space-between;
  1217. width: 94%;
  1218. margin: 0.3rem auto 0;
  1219. border-radius: 10PX;
  1220. }
  1221. .detail{
  1222. background-color: #FFF;
  1223. padding: 0.2rem 0.5rem;
  1224. width: 94%;
  1225. margin: 0.3rem auto 0;
  1226. border-radius: 10PX;
  1227. }
  1228. .detail span{
  1229. color: #8A8A8A;
  1230. }
  1231. .delTitle{
  1232. font-size: 16PX;
  1233. color: #333333;
  1234. padding: 0.2rem 0;
  1235. display: flex;
  1236. align-items: center;
  1237. line-height: 1;
  1238. i{
  1239. background: #0CBEA6;
  1240. width: 4PX;
  1241. height: 14PX;
  1242. border-radius: 100PX;
  1243. margin-right: 5PX;
  1244. }
  1245. }
  1246. .gnbg{
  1247. background: #ffffff linear-gradient(rgba(13,188,170,.28),#ffffff) no-repeat;
  1248. background-size: 100% 50Px;
  1249. }
  1250. .introduce{
  1251. padding: 0.2rem 0.5rem 0.5rem;
  1252. background-color: #FFF;
  1253. width: 94%;
  1254. margin: 0.3rem auto 0;
  1255. border-radius: 10PX;
  1256. }
  1257. .introduce span{
  1258. color: #8A8A8A;
  1259. margin-right: 20px;
  1260. }
  1261. .project_info{
  1262. border: 1px solid #DCDCDC;
  1263. padding: 0px 20px;
  1264. margin-top: 10px;
  1265. border-radius: 10px;
  1266. }
  1267. .notice{
  1268. padding: 0.2rem 0.5rem 0.5rem;
  1269. background-color: #FFF;
  1270. width: 94%;
  1271. margin: 0.3rem auto 0;
  1272. border-radius: 10PX;
  1273. }
  1274. .notice div p{
  1275. line-height: 0.7rem;
  1276. }
  1277. .biddingList{
  1278. padding: 0.2rem 0.5rem 0.5rem;
  1279. background-color: #FFF;
  1280. width: 94%;
  1281. margin: 0.3rem auto 0.4rem;
  1282. border-radius: 10PX;
  1283. }
  1284. .biddingList table{
  1285. text-align: center;
  1286. }
  1287. .biddingList table td{
  1288. text-align: center;
  1289. padding: 10px 0px;
  1290. }
  1291. .biddingList table tr:first-child td{
  1292. background-color: #0DBCAA;
  1293. color: #FFF;
  1294. }
  1295. .bottomBtn{
  1296. padding: 0.2rem 0.2rem;
  1297. background-color: #FFF;
  1298. position: fixed;
  1299. bottom: 0;
  1300. width: 100%;
  1301. }
  1302. .popup{
  1303. text-align: center;
  1304. padding: 0.5rem;
  1305. border-radius: 20px;
  1306. width: 70%;
  1307. padding-top: 1.5rem;
  1308. }
  1309. .popupTit{
  1310. color: #0DBCAA;
  1311. font-size: 0.4rem;
  1312. line-height: 0.9rem;
  1313. }
  1314. .popupContent{
  1315. color: #666666;
  1316. }
  1317. .iKnow{
  1318. margin-top: 1rem;
  1319. }
  1320. .updatePopup{
  1321. color: #0DBCAA;
  1322. margin-top: 0.5rem;
  1323. }
  1324. </style>