移动端
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.
 
 

1355 lines
48 KiB

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