detail.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804
  1. <template>
  2. <view class="content">
  3. <view class="box" v-if="pageData.tab == 1">
  4. <order-top :name="pageData.real_name" :phone="pageData.mobile" :type="pageData.status" :amount="amount"></order-top>
  5. </view>
  6. <view class="box" v-if="pageData.tab != 1">
  7. <order-top :name="pageData.real_name" :phone="pageData.mobile" :type="pageData.status" :amount="pageData.user_order.amount"></order-top>
  8. </view>
  9. <view class="box" style="margin-bottom: 186rpx;">
  10. <view class="box1">
  11. <view class="title">商品明细</view>
  12. <view class="list">
  13. <block v-for="(item,index) in pageData.items" :key="index">
  14. <view class="list_item">
  15. <view class="item_title">{{item.name}}</view>
  16. <view class="hflex acenter item_cell" v-if="pageData.tab!==4">
  17. <view class="item_text" v-if="item.spec">规格:{{item.spec}}</view>
  18. <view class="item_text" v-if="item.number">数量:{{item.number}}</view>
  19. </view>
  20. <view class="hflex acenter item_cell" v-if="pageData.tab==4">
  21. <view class="item_text" v-if="item.weight">数量/吨位:{{item.weight}}</view>
  22. </view>
  23. <view class="hflex acenter item_cell" v-if="item.price">
  24. <view class="item_text">原采购价:<span class="price">¥{{item.price}}</span></view>
  25. </view>
  26. <view class="hflex acenter item_cell" v-if="item.standard">
  27. <view class="item_text">质量标准:{{item.standard}}</view>
  28. </view>
  29. <view class="vflex" style="margin-top: 20rpx;" v-if="item.enclosure">
  30. <view v-for="(item2,index2) in item.enclosure" :key="index2" class="hflex acenter jbetween">
  31. <view class="hflex acenter">
  32. <image :src="item2.icon" class="item_img"></image>
  33. <view class="text_style1">{{item2.filename}}</view>
  34. </view>
  35. <view class="hflex acenter jcenter item_btn" @click="open(index,index2)">
  36. <u-icon name="download" color="#506DFF" size="10"></u-icon>
  37. <view>下载附件</view>
  38. </view>
  39. </view>
  40. </view>
  41. </view>
  42. <view class="hflex acenter jbetween offer" v-if="item.status == 1 && pageData.tab == 1">
  43. <view class="hflex acenter">
  44. <view class="offer_title">订单报价:</view>
  45. <view class="offer_text2">暂未报价</view>
  46. </view>
  47. <view class="offer_btn" v-if="!item.user_order && item.status == 1" @click="receiv(index)">立即接单</view>
  48. </view>
  49. <view class="hflex acenter jbetween offer" v-if="pageData.tab == 1 && item.status == 2">
  50. <view class="hflex acenter">
  51. <view class="offer_title">订单报价:</view>
  52. <view class="offer_text" v-if="item.user_order.amount">{{item.user_order.amount}}</view>
  53. <view class="offer_text2" v-else>暂未报价</view>
  54. </view>
  55. <view class="hflex acenter">
  56. <view class="offer_btn" v-if="item.user_order.amount" @click="toOffer(index)">查看详情</view>
  57. <view class="offer_btn" v-else-if="!item.user_order.amount" @click="toOffer(index)">立即报价</view>
  58. </view>
  59. </view>
  60. <view class="hflex acenter jbetween offer" v-if="item.status == 3 && pageData.tab == 1 && item.offer_id == item.user_order.id">
  61. <view class="hflex acenter">
  62. <view class="offer_title">订单报价:</view>
  63. <view class="offer_text2" style="color: #999999;" v-if="item.offer_id != item.user_order.id">不可报价</view>
  64. <view class="offer_text2" v-if="item.offer_id == item.user_order.id">{{item.user_order.amount}}</view>
  65. </view>
  66. <view class="hflex acenter">
  67. <view class="offer_btn" v-if="item.offer_id == item.user_order.id" @click="toOffer(index)">查看详情</view>
  68. <view class="offer_btn offer_btn1" v-if="item.offer_id != item.user_order.id">已匹配</view>
  69. <view class="offer_btn" v-if="item.offer_id == item.user_order.id" @click="open(index,-1)">下载文件</view>
  70. </view>
  71. </view>
  72. <view class="hflex acenter jbetween offer" v-if="item.offer_id != item.user_order.id && pageData.tab == 1 && item.user_order &&item.status == 3">
  73. <view class="hflex acenter">
  74. <view class="offer_title">订单报价:</view>
  75. <view class="offer_text" v-if="item.user_order.amount">{{item.user_order.amount}}</view>
  76. <view class="offer_text2" v-else>暂未报价</view>
  77. </view>
  78. <view class="hflex acenter">
  79. <view class="offer_btn" @click="toOffer(index)">查看详情</view>
  80. <!-- <view class="offer_btn offer_btn1" v-if="item.offer_id != item.user_order.id">已匹配</view>
  81. <view class="offer_btn" v-if="item.offer_id == item.user_order.id" @click="open(index,-1)">下载文件</view> -->
  82. </view>
  83. </view>
  84. <view class="hflex acenter jbetween offer" v-if="item.status == 3 && pageData.tab == 1 && !item.user_order">
  85. <view class="hflex acenter">
  86. <view class="offer_title">订单报价:</view>
  87. <view class="offer_text" v-if="item.user_order">{{item.user_order.amount}}</view>
  88. <view class="offer_text2" v-else>暂未报价</view>
  89. </view>
  90. <view class="hflex acenter">
  91. <view class="offer_btn offer_btn1" v-if="item.offer_id != item.user_order.id">已匹配</view>
  92. </view>
  93. <!-- <view class="offer_btn offer_btn1" v-if="item.offer_id != item.user_order.id">已匹配</view>
  94. <view class="offer_btn" v-if="item.offer_id == item.user_order.id" @click="open(index,-1)">下载文件</view>
  95. </view>
  96. </view>
  97. <!-- <view class="hflex acenter jend offer" v-if="!item.user_order && item.status==3">
  98. <view class="offer_btn" v-if="item.status==3" @click="open(index,-1)">下载文件</view>
  99. </view> -->
  100. </view>
  101. </block>
  102. </view>
  103. <view class="text_style1 cell" v-if="pageData.standard_tech"><span class="label">生产技术标准:</span>{{pageData.standard_tech}}</view>
  104. <view class="text_style1 cell" v-if="pageData.standard_check"><span class="label">生产验收标准:</span>{{pageData.standard_check}}</view>
  105. <view class="hflex acenter jbetween offer" v-if="pageData.tab !== 1">
  106. <view class="hflex acenter">
  107. <view class="offer_title">订单报价:</view>
  108. <view class="offer_text" v-if="pageData.user_order.amount">{{pageData.user_order.amount}}</view>
  109. <view class="offer_text2" v-else>暂未报价</view>
  110. </view>
  111. <view class="offer_btn" v-if="pageData.user_order.amount || pageData.offer_id == pageData.user_order.id" @click="toOffer(-1)">查看详情</view>
  112. <view class="offer_btn offer_btn1" v-else-if="pageData.status == 3 && pageData.offer_id != pageData.user_order.id" @click="toOffer(-1)">查看详情</view>
  113. <view class="offer_btn offer_btn1" v-else-if="pageData.status == 3 && !pageData.user_order.amount">已匹配</view>
  114. <view class="offer_btn" v-else-if="!pageData.user_order.amount" @click="toOffer(-1)">立即报价</view>
  115. </view>
  116. <view class="text_style2" v-if="pageData.post_address">交货地址:{{pageData.post_address}}</view>
  117. <view class="text_style2" v-if="pageData.post_time">交货日期:{{pageData.post_time}}</view>
  118. <view class="text_style2" v-if="pageData.tab !== 4">发布日期:{{pageData.create_time}}</view>
  119. <view class="text_style2" v-if="pageData.form">包装形式:{{pageData.form}}</view>
  120. <view class="text_style2" v-if="pageData.wharf_to">装货码头:{{pageData.wharf_to}}</view>
  121. <view class="text_style2" v-if="pageData.wharf_for">到港码头:{{pageData.wharf_for}}</view>
  122. </view>
  123. <view class="box1">
  124. <view class="title">订单信息</view>
  125. <view class="text_style2">订单编号:{{pageData.order_no}} <span style="color: #506DFF" @click="copy(pageData.order_no)">| 复制</span></view>
  126. <view class="text_style2">下单时间:{{pageData.create_time}}</view>
  127. </view>
  128. </view>
  129. <view v-if="pageData.type == 2">
  130. <view class="bottom" v-if="pageData.status != 3||pageData.tab == 1">
  131. <view class="btn" @click="chat">查看回复</view>
  132. </view>
  133. </view>
  134. <view class="" v-if="pageData.type == 2">
  135. <view class="bottom hflex acenter jbetween" v-if="pageData.tab != 1 && pageData.status == 3">
  136. <view class="left_btn hflex acenter jcenter" @click="open(index1,-1)">
  137. <image src="https://ship-expert.zhousi.hdlkeji.com/common/down-blue.png" style="width: 44rpx;height: 44rpx;margin-right: 8rpx;"></image>
  138. <view>下载文件</view>
  139. </view>
  140. <view class="right_btn hflex acenter jcenter" @click="chat">查看回复</view>
  141. </view>
  142. </view>
  143. <view v-else>
  144. <view class="bottom hflex acenter jbetween" v-if="pageData.tab != 1 && pageData.status == 3">
  145. <view class="left_btn hflex acenter jcenter" style="width: 100%;" @click="open(index1,-1)">
  146. <image src="https://ship-expert.zhousi.hdlkeji.com/common/down-blue.png" style="width: 44rpx;height: 44rpx;margin-right: 8rpx;"></image>
  147. <view>下载文件</view>
  148. </view>
  149. </view>
  150. </view>
  151. <u-popup :show="show" mode="center" @close="close">
  152. <view class="popu">
  153. <view class="popu_top hflex acenter jbetween">
  154. <view></view>
  155. <view class="popu_title">下载文件</view>
  156. <image src="https://ship-expert.zhousi.hdlkeji.com/common/close.png" style="width: 32rpx;height: 32rpx;" @click="close"></image>
  157. </view>
  158. <view class="file_bg hflex acenter" v-if="index2 != -1">
  159. <image :src="pageData.items[index1].enclosure[index2].icon" class="file_icon"></image>
  160. <view class="file_name text_hide" style="max-width: 400rpx;">{{pageData.items[index1].enclosure[index2].filename}}</view>
  161. </view>
  162. <view class="file_bg hflex acenter" v-else>
  163. <view class="file_name text_hide">{{pageData.down_word?pageData.down_word:pageData.items[index1].down_word}}</view>
  164. </view>
  165. <view class="btn_group hflex acenter jbetween" v-if="index2 != -1">
  166. <view class="left_btn hflex acenter jcenter" @click="copy(pageData.items[index1].enclosure[index2].fileurl)">复制链接</view>
  167. <view class="right_btn hflex acenter jcenter" @click="see(pageData.items[index1].enclosure[index2].fileurl)">预览文件</view>
  168. </view>
  169. <view class="btn_group hflex acenter jbetween" v-else>
  170. <view class="left_btn hflex acenter jcenter" @click="copy(pageData.down_word?pageData.down_word:pageData.items[index1].down_word)">复制链接</view>
  171. <view class="right_btn hflex acenter jcenter" @click="see(pageData.down_word?pageData.down_word:pageData.items[index1].down_word)">预览文件</view>
  172. </view>
  173. <!-- <view class="hflex acenter jcenter text_blue" @click="see(pageData.items[index1].enclosure[index2].fileurl)">预览文件></view> -->
  174. </view>
  175. </u-popup>
  176. <u-popup :show="receiv_show" mode="center" :round="10" :closeable="true" :safeAreaInsetBottom="false" @close="close">
  177. <view class="popup">
  178. <view class="popup_title">填写报价信息</view>
  179. <view class="input_bg hflex acenter">
  180. <view class="price">¥</view>
  181. <u-input v-model="offer" placeholder="填写你的报价" border="none"></u-input>
  182. </view>
  183. <view class="hflex acenter">
  184. <image src="https://ship-expert.zhousi.hdlkeji.com/common/icon_tips.png" style="width: 24rpx;height: 24rpx;padding-right: 6rpx"></image>
  185. <view class="popup_info">报价可先不填,可等评估后再填写</view>
  186. </view>
  187. <view class="input_bg hflex acenter" v-if="tab == 2 || tab == 3">
  188. <view class="price">报价说明</view>
  189. <u-input v-model="description" placeholder="例如:税前/税后" border="none"></u-input>
  190. </view>
  191. <view class="input_bg hflex acenter" v-else>
  192. <view class="price">货期</view>
  193. <u-input v-model="lead_time" placeholder="例如: 1个月" border="none"></u-input>
  194. </view>
  195. <view class="input_bg" v-if="tab == 0 || tab == 1">
  196. <view class="price">产品介绍以及报价说明</view>
  197. <u--textarea v-model="description" placeholder="例如:税前/税后" border="none"></u--textarea>
  198. </view>
  199. <view class="hflex acenter jbetween" v-if="tab == 0">
  200. <view class="price">是否现货</view>
  201. <u-switch v-model="is_stock" activeColor="#506dff" @change="change"></u-switch>
  202. </view>
  203. <view class="hflex acenter" style="padding-bottom: 20rpx;">
  204. <view class="price">上传图片及资质证明图片</view>
  205. <image src="https://ship-expert.zhousi.hdlkeji.com/common/icon_tips.png" style="width: 24rpx;height: 24rpx;padding-right: 6rpx"></image>
  206. <view class="popup_info">最多上传9张图片</view>
  207. </view>
  208. <u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="9"></u-upload>
  209. <view class="popup_btn" @click="receiving">立即接单</view>
  210. <view class="price">友情提醒:</view>
  211. <view class="popup_info">请认真核算报价,报价后不可修改和删除,报价时间约需x天内报价,逾期影响信用等级。</view>
  212. </view>
  213. </u-popup>
  214. </view>
  215. </template>
  216. <script>
  217. import $api from '@/static/js/api.js'
  218. var that = ''
  219. export default {
  220. data() {
  221. return {
  222. id: '',
  223. id2: '',
  224. user_id: '',
  225. tab: '',
  226. pageData: {},
  227. index1: 0,
  228. index2: 0,
  229. show: false,
  230. amount: '',
  231. quotation_show: false,
  232. receiv_show: false,
  233. offer: '',
  234. lead_time: '',
  235. description: '',
  236. is_stock: false,
  237. fileList1: [],
  238. }
  239. },
  240. onLoad(options) {
  241. that = this
  242. that.user_id = uni.getStorageSync('id')
  243. that.id = options.id
  244. that.tab = options.tab
  245. that.getData()
  246. },
  247. methods: {
  248. getData() {
  249. var url = ""
  250. switch(that.tab) {
  251. case '1':
  252. url = '/data/api.auth.Purchase/show';
  253. break;
  254. case '2':
  255. url = '/data/api.auth.Purchase/production_show';
  256. break;
  257. case '3':
  258. url = '/data/api.auth.Purchase/coor_show';
  259. break;
  260. case '4':
  261. url = '/data/api.auth.Purchase/ocean_show';
  262. break;
  263. }
  264. $api.req({
  265. url: url,
  266. data: {
  267. id: that.id
  268. }
  269. }, function(res) {
  270. if(res.code == 1) {
  271. that.pageData = res.data
  272. if(that.tab == '1') {
  273. for(var i=0;i<that.pageData.items.length;i++) {
  274. if(that.pageData.items[i].user_order) {
  275. if(that.pageData.items[i].user_order.amount) {
  276. that.amount = that.pageData.items[i].user_order.amount
  277. }
  278. }
  279. }
  280. }
  281. }
  282. })
  283. },
  284. copy(value) {
  285. uni.setClipboardData({
  286. data: value,
  287. success: function () {
  288. $api.info('复制成功')
  289. }
  290. });
  291. },
  292. toOffer(index) {
  293. $api.jump('/page_shop/pages/order/offer?id=' + that.id + '&tab=' + that.tab + '&index=' + index)
  294. },
  295. receiv(index) {
  296. that.id2 = that.pageData.items[index].id
  297. that.receiv_show = true
  298. },
  299. chat() {
  300. $api.jump('/page_shop/pages/order/chat3?id=' + that.id + '&tab=' + that.tab)
  301. },
  302. open(index1,index2) {
  303. that.index1 = index1
  304. that.index2 = index2
  305. that.show = true
  306. },
  307. close() {
  308. that.show = false
  309. that.receiv_show = false
  310. },
  311. down(url) {
  312. wx.downloadFile({
  313. url: url, //仅为示例,并非真实的资源
  314. success (res) {
  315. // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
  316. if (res.statusCode === 200) {
  317. const filePath = res.tempFilePath
  318. uni.saveFile({
  319. tempFilePath: filePath,
  320. success: function(res) {
  321. console.log(res);
  322. that.close()
  323. that.see(res.savedFilePath)
  324. }
  325. })
  326. }
  327. }
  328. })
  329. },
  330. see(url) {
  331. wx.downloadFile({
  332. // 示例 url,并非真实存在
  333. url: url,
  334. showMenu: true,
  335. success: function (res) {
  336. const filePath = res.tempFilePath
  337. wx.openDocument({
  338. filePath: filePath,
  339. success: function (res) {
  340. console.log('打开文档成功')
  341. }
  342. })
  343. }
  344. })
  345. },
  346. // 是否现货
  347. change(e) {
  348. console.log(e);
  349. that.is_stock = e
  350. },
  351. // 删除图片
  352. deletePic(event) {
  353. this[`fileList${event.name}`].splice(event.index, 1)
  354. },
  355. // 新增图片
  356. async afterRead(event) {
  357. uni.showLoading({
  358. title: '上传中',
  359. mask: true
  360. })
  361. let lists = [].concat(event.file)
  362. let fileListLen = this[`fileList${event.name}`].length
  363. lists.map((item) => {
  364. this[`fileList${event.name}`].push({
  365. ...item,
  366. // status: 'uploading',
  367. // message: '上传中'
  368. })
  369. })
  370. for (let i = 0; i < lists.length; i++) {
  371. const result = await this.uploadFilePromise(lists[i].url)
  372. let item = this[`fileList${event.name}`][fileListLen]
  373. this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
  374. // status: 'success',
  375. // message: '',
  376. type: result.type,
  377. url: result.url
  378. }))
  379. fileListLen++
  380. if(lists.length - 1 == i) {
  381. uni.hideLoading()
  382. }
  383. }
  384. },
  385. uploadFilePromise(url) {
  386. return new Promise((resolve, reject) => {
  387. let a = uni.uploadFile({
  388. url: $api.config.baseUrl + '/data/api.auth.Center/upload',
  389. filePath: url,
  390. name: 'file',
  391. header: {
  392. 'content-type': 'application/x-www-form-urlencoded',
  393. 'api-token': uni.getStorageSync('token').token?uni.getStorageSync('token').token:'',
  394. 'api-name': 'wxapp'
  395. },
  396. // formData: {
  397. // user: 'test'
  398. // },
  399. success: (res) => {
  400. setTimeout(() => {
  401. var data = JSON.parse(res.data)
  402. console.log('data:',data);
  403. var type = data.data.key.split('.')
  404. if(type[1] == 'mp4') {
  405. that.$set(data.data,'type','video')
  406. } else {
  407. that.$set(data.data,'type','image')
  408. }
  409. resolve(data.data)
  410. }, 1000)
  411. }
  412. });
  413. })
  414. },
  415. receiving() {
  416. var imgsList = []
  417. for(var i=0;i<that.fileList1.length;i++) {
  418. imgsList.push(that.fileList1[i].url)
  419. }
  420. var url = ""
  421. var data = ""
  422. if(that.description == "") {
  423. $api.info('请填写报价说明')
  424. return
  425. }
  426. if(imgsList == "") {
  427. $api.info('请上传图片资质')
  428. return
  429. }
  430. switch(that.pageData.tab) {
  431. case 1:
  432. url = '/data/api.auth.Purchase/purchase_create';
  433. data = {
  434. id: that.id2,
  435. amount: that.offer,
  436. date: that.lead_time,
  437. desc: that.description,
  438. is_have: that.is_stock?1:0,
  439. images: imgsList,
  440. };
  441. break;
  442. case 2:
  443. url = '/data/api.auth.Purchase/production_create';
  444. data = {
  445. id: that.id2,
  446. amount: that.offer,
  447. date: that.lead_time,
  448. desc: that.description,
  449. images: imgsList,
  450. };
  451. break;
  452. case 3:
  453. url = '/data/api.auth.Purchase/coor_create';
  454. data = {
  455. id: that.id2,
  456. amount: that.offer,
  457. desc: that.description,
  458. images: imgsList,
  459. };
  460. break;
  461. case 4:
  462. url = '/data/api.auth.Purchase/ocean_create';
  463. data = {
  464. id: that.id2,
  465. amount: that.offer,
  466. desc: that.description,
  467. images: imgsList,
  468. };
  469. break;
  470. }
  471. $api.req({
  472. url: url,
  473. method: 'POST',
  474. data: data
  475. }, function(res) {
  476. if(res.code == 1) {
  477. $api.info(res.info)
  478. that.close()
  479. that.getData()
  480. }
  481. })
  482. },
  483. },
  484. }
  485. </script>
  486. <style lang="scss" scoped>
  487. .content {
  488. background-color: #F4F4F4;
  489. // padding: 0 30rpx;
  490. .box {
  491. width: 100%;
  492. box-sizing: border-box;
  493. padding: 0 30rpx;
  494. margin: 20rpx 0 0;
  495. .box1 {
  496. width: 100%;
  497. background: #FFFFFF;
  498. border-radius: 24rpx;
  499. box-sizing: border-box;
  500. padding: 24rpx 20rpx;
  501. margin-bottom: 20rpx;
  502. .title {
  503. font-size: 30rpx;
  504. font-weight: 500;
  505. color: #222222;
  506. }
  507. .list {
  508. .list_item {
  509. width: 100%;
  510. background: #F4F4F4;
  511. border-radius: 16rpx;
  512. box-sizing: border-box;
  513. padding: 20rpx;
  514. margin: 24rpx 0 20rpx;
  515. .item_title {
  516. font-size: 28rpx;
  517. font-weight: 400;
  518. color: #222222;
  519. }
  520. .item_cell {
  521. width: 100%;
  522. padding: 22rpx 0;
  523. border-bottom: 1rpx solid #ECECEC;
  524. .item_text {
  525. font-size: 24rpx;
  526. margin-right: 50rpx;
  527. font-weight: 400;
  528. color: #888888;
  529. }
  530. .price {
  531. font-size: 28rpx;
  532. font-weight: 400;
  533. color: #555555;
  534. line-height: 30rpx;
  535. }
  536. }
  537. .item_img {
  538. width: 36rpx;
  539. height: 44rpx;
  540. margin-right: 8rpx;
  541. }
  542. .text_style1 {
  543. font-size: 24rpx;
  544. font-weight: 400;
  545. color: #333333;
  546. }
  547. .item_btn {
  548. width: 120rpx;
  549. height: 44rpx;
  550. border-radius: 22rpx;
  551. border: 1px solid #506DFF;
  552. padding: 0 8rpx;
  553. box-sizing: border-box;
  554. font-size: 16rpx;
  555. font-weight: 400;
  556. color: #506DFF;
  557. }
  558. }
  559. }
  560. .text_style1 {
  561. font-size: 26rpx;
  562. font-weight: 400;
  563. color: #999999;
  564. }
  565. .cell {
  566. padding: 0 0 24rpx;
  567. }
  568. .label {
  569. color: #444444;
  570. }
  571. .offer {
  572. width: 100%;
  573. height: 72rpx;
  574. background: #EAF4FF;
  575. border-radius: 16rpx;
  576. box-sizing: border-box;
  577. padding: 0 20rpx;
  578. .offer_title {
  579. font-size: 24rpx;
  580. font-weight: 400;
  581. color: #506DFF;
  582. }
  583. .offer_text {
  584. font-size: 32rpx;
  585. font-weight: 400;
  586. color: #222222;
  587. }
  588. .offer_text2 {
  589. font-size: 26rpx;
  590. font-weight: 400;
  591. color: #FF3434;
  592. }
  593. .offer_btn {
  594. width: 124rpx;
  595. height: 44rpx;
  596. background: #EAF4FF;
  597. border-radius: 22rpx;
  598. border: 1rpx solid #506DFF;
  599. font-size: 22rpx;
  600. font-weight: 400;
  601. color: #506DFF;
  602. text-align: center;
  603. line-height: 44rpx;
  604. margin-left: 10rpx;
  605. }
  606. .offer_btn1 {
  607. border: 1rpx solid #777777;
  608. color: #222222;
  609. }
  610. }
  611. .text_style2 {
  612. font-size: 26rpx;
  613. font-weight: 400;
  614. color: #444444;
  615. margin: 12rpx 0;
  616. }
  617. }
  618. }
  619. .bottom {
  620. position: fixed;
  621. bottom: 0;
  622. width: 100%;
  623. height: 166rpx;
  624. background: #FFFFFF;
  625. box-sizing: border-box;
  626. padding: 0 30rpx;
  627. .btn {
  628. margin: 10rpx auto;
  629. width: 690rpx;
  630. height: 88rpx;
  631. background: #506DFF;
  632. border-radius: 44rpx;
  633. text-align: center;
  634. line-height: 88rpx;
  635. font-size: 36rpx;
  636. font-weight: 500;
  637. color: #FFFFFF;
  638. }
  639. .left_btn {
  640. width: 300rpx;
  641. height: 88rpx;
  642. background: #ECEFFE;
  643. border-radius: 44rpx;
  644. font-size: 36rpx;
  645. font-weight: 500;
  646. color: #506DFF;
  647. line-height: 50rpx;
  648. }
  649. .right_btn {
  650. width: 370rpx;
  651. height: 88rpx;
  652. background: #506DFF;
  653. border-radius: 44rpx;
  654. font-size: 36rpx;
  655. font-weight: 500;
  656. color: #FFFFFF;
  657. line-height: 50rpx;
  658. }
  659. }
  660. .popu {
  661. width: 630rpx;
  662. background: #FFFFFF;
  663. border-radius: 24rpx;
  664. margin: 0 auto;
  665. box-sizing: border-box;
  666. padding: 0 40rpx;
  667. .popu_top {
  668. padding: 32rpx 0 40rpx;
  669. .popu_title {
  670. font-size: 36rpx;
  671. font-weight: 500;
  672. color: #333333;
  673. line-height: 50rpx;
  674. }
  675. }
  676. .file_bg {
  677. width: 550rpx;
  678. height: 100rpx;
  679. background: #F4F4F4;
  680. border-radius: 16rpx;
  681. margin: 0 0 42rpx;
  682. }
  683. .file_icon {
  684. width: 48rpx;
  685. height: 60rpx;
  686. }
  687. .file_name {
  688. padding-left: 14rpx;
  689. font-size: 28rpx;
  690. font-weight: 400;
  691. color: #333333;
  692. line-height: 40rpx;
  693. }
  694. .btn_group {
  695. width: 100%;
  696. padding: 30rpx 0;
  697. .left_btn {
  698. width: 260rpx;
  699. height: 76rpx;
  700. background: #ECEFFE;
  701. border-radius: 40rpx;
  702. font-size: 30rpx;
  703. font-weight: 500;
  704. color: #506DFF;
  705. line-height: 42rpx;
  706. }
  707. .right_btn {
  708. width: 260rpx;
  709. height: 76rpx;
  710. background: #506DFF;
  711. border-radius: 40rpx;
  712. font-size: 30rpx;
  713. font-weight: 500;
  714. color: #FFFFFF;
  715. line-height: 42rpx;
  716. }
  717. }
  718. .text_blue {
  719. font-size: 30rpx;
  720. font-weight: 400;
  721. color: #506DFF;
  722. line-height: 42rpx;
  723. padding: 28rpx 0 46rpx;
  724. }
  725. }
  726. .popup {
  727. width: 670rpx;
  728. background: #FFFFFF;
  729. border-radius: 10px;
  730. box-sizing: border-box;
  731. padding: 36rpx 30rpx 24rpx;
  732. .popup_title {
  733. width: 100%;
  734. text-align: center;
  735. font-size: 32rpx;
  736. font-weight: 500;
  737. color: #222222;
  738. margin-bottom: 24rpx;
  739. }
  740. .popup_name {
  741. font-size: 26rpx;
  742. font-weight: 400;
  743. color: #222222;
  744. padding: 28rpx 0 20rpx;
  745. }
  746. .popup_text {
  747. font-size: 22rpx;
  748. font-weight: 500;
  749. color: #777777;
  750. padding-right: 60rpx;
  751. }
  752. .input_bg {
  753. background: #F4F4F4;
  754. border-radius: 8px;
  755. box-sizing: border-box;
  756. padding: 16rpx 20rpx;
  757. margin: 20rpx 0;
  758. .price {
  759. font-size: 32rpx;
  760. font-weight: 500;
  761. color: #222222;
  762. padding-right: 20rpx;
  763. }
  764. .u-textarea {
  765. background-color: #F4F4F4 !important;
  766. }
  767. .red {
  768. font-size: 28rpx;
  769. font-weight: bold;
  770. color: #FF3636;
  771. }
  772. }
  773. .popup_info {
  774. font-size: 20rpx;
  775. font-weight: 400;
  776. color: #C0C0C0;
  777. line-height: 28rpx;
  778. }
  779. .popup_btn {
  780. width: 610rpx;
  781. height: 80rpx;
  782. background: #506DFF;
  783. border-radius: 40rpx;
  784. font-size: 32rpx;
  785. font-weight: 500;
  786. color: #FFFFFF;
  787. text-align: center;
  788. line-height: 80rpx;
  789. margin: 20rpx 0;
  790. }
  791. }
  792. }
  793. </style>