铝交易,微信公众号
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.

437 lines
8.9 KiB

6 months ago
5 months ago
5 months ago
5 months ago
6 months ago
6 months ago
6 months ago
5 months ago
6 months ago
5 months ago
6 months ago
  1. <template>
  2. <view class="page">
  3. <navbar :title="titleList[titleIndex]" leftClick @leftClick="$utils.navigateBack" />
  4. <view class="frame">
  5. <view class="title">
  6. <span
  7. style="width: 10rpx;height: 40rpx;background-color: #1f1c39;border-radius: 10rpx;overflow: hidden;"></span>
  8. <span>{{ $t('other.aluminumProducts') }}</span>
  9. </view>
  10. <view class="basic-info">
  11. <!--供应商名称-->
  12. <view class="item" v-if="titleIndex == 1">
  13. <view>{{ $t('other.supplierName') }}</view>
  14. <view>华南铝业有限公司</view>
  15. </view>
  16. <!--商品规格-->
  17. <view class="item">
  18. <view>{{ $t('components.productSpe') }}</view>
  19. <view>铝制品(Al>96%)</view>
  20. </view>
  21. <!--提货地点-->
  22. <view class="currentRegion">
  23. <view>{{ $t('components.pickupLocation') }}</view>
  24. <view @click.stop="selectAddr">
  25. <input class="input" disabled v-model="form.currentRegion"
  26. :placeholder=" $t('components.selectRegion')">
  27. </input>
  28. <view class="orientation">
  29. <img src="../../static/image/address/selectIcon.png"
  30. style="width:30rpx;height: 30rpx;margin:5rpx 5rpx 5rpx 5rpx;">
  31. </view>
  32. </view>
  33. </view>
  34. <!--详细地址-->
  35. <view class="item">
  36. <view>{{ $t('components.detailedAddress') }}</view>
  37. <view>
  38. <input v-model="form.address" :placeholder="$t('components.enterDetailedAddress') "
  39. clearable></input>
  40. </view>
  41. </view>
  42. <!--交货日期-->
  43. <view class="delivery-date">
  44. <view>{{ $t('components.deliveryDate') }}</view>
  45. <view class="value">
  46. <view class="dateTimeCls">
  47. <view class="date" @click="startDateOpen">
  48. {{ form.deliveryDate }}
  49. <uv-datetime-picker ref="startDateRef" v-model="form.deliveryDate" mode="date"
  50. @confirm="startDateChange"></uv-datetime-picker>
  51. </view>
  52. <view class="img">
  53. >
  54. </view>
  55. </view>
  56. </view>
  57. </view>
  58. <!--暂定数量-->
  59. <view class="tentativeQuantity">
  60. <view class="key">{{ $t('other.tentativeQuantity') }}</view>
  61. <view class="value">
  62. <uv-number-box v-model="form.tentativeQuantity"></uv-number-box>
  63. </view>
  64. </view>
  65. <!--单价-->
  66. <view class="item">
  67. <view>{{ $t('components.unitPrice') }}</view>
  68. <view>
  69. <input clearable v-model="form.price"></input>
  70. </view>
  71. </view>
  72. <!--提交报价和提交审核-->
  73. <view class="btns">
  74. <span @click="confirmBtn" class="ljxd">
  75. {{ titleIndex == 0 ? $t('other.submitQuotation') : $t('other.submitReview') }}
  76. </span>
  77. <span @click="contactUs" class="lxwm">
  78. {{ $t('components.contactUs') }}
  79. </span>
  80. <span class="tip">{{ $t('components.contactTip') }}</span>
  81. </view>
  82. </view>
  83. </view>
  84. <!-- 联系客服弹框 -->
  85. <customerServicePopup ref="customerServicePopup" />
  86. </view>
  87. </template>
  88. <script>
  89. import topbar from "@/components/base/topbar.vue";
  90. import tabber from "@/components/base/tabbar.vue";
  91. import customerServicePopup from "@/components/config/customerServicePopup.vue";
  92. import Position from "@/utils/position";
  93. import dayjs from "dayjs";
  94. export default {
  95. name: "offer",
  96. components: {
  97. customerServicePopup,
  98. tabber,
  99. topbar
  100. },
  101. onLoad(options) {
  102. this.titleIndex = options.titleIndex;
  103. },
  104. data() {
  105. return {
  106. titleIndex: 0,
  107. titleList: [
  108. // 0 供应商报价
  109. this.$t('pages.index.index.supplierQuotation'),
  110. this.$t('pages.index.index.supplierBillLading')
  111. ],
  112. form: {
  113. address: "",
  114. longitude: "",
  115. latitude: "",
  116. deliveryDate: dayjs(new Date()).format("YYYY-MM-DD"),
  117. }
  118. }
  119. },
  120. methods: {
  121. // 提交报价/提交审核
  122. confirmBtn() {
  123. console.log(this.form);
  124. },
  125. startDateChange(val) {
  126. this.$nextTick(() => {
  127. this.form.deliveryDate = dayjs(val.value).format("YYYY-MM-DD")
  128. });
  129. },
  130. startDateOpen() {
  131. this.$refs.startDateRef.open();
  132. },
  133. // 联系我们
  134. contactUs() {
  135. this.$refs.customerServicePopup.open()
  136. },
  137. //地图上选择地址
  138. selectAddr() {
  139. Position.getLocation(res => {
  140. Position.selectAddress(res.longitude, res.latitude, success => {
  141. this.setAddress(success)
  142. })
  143. })
  144. Position.getLocationDetail(res => {
  145. console.log(res);
  146. this.form.address = res
  147. })
  148. },
  149. },
  150. }
  151. </script>
  152. <style scoped lang="scss">
  153. .page {
  154. height: 100vh;
  155. .frame {
  156. background-color: #FFF;
  157. .title {
  158. display: flex;
  159. font-size: 30rpx;
  160. font-weight: 700;
  161. padding: 0rpx 0 0rpx 20rpx;
  162. margin: 20rpx 0 0 0;
  163. >span:nth-of-type(1) {
  164. margin: 4rpx 0 0 8rpx;
  165. background-color: #FFF;
  166. }
  167. >span:nth-of-type(2) {
  168. margin: 0 0 0 8rpx;
  169. background-color: #FFF;
  170. }
  171. }
  172. .basic-info {
  173. display: flex;
  174. flex-direction: column;
  175. gap: 10rpx;
  176. //margin-top: 20rpx;
  177. padding: 20rpx 20rpx 20rpx 20rpx;
  178. .delivery-date {
  179. display: flex;
  180. align-items: center;
  181. background-color: #FFF;
  182. height: 80rpx;
  183. // margin: 10rpx 0 0 0;
  184. padding: 10rpx 0 0 20rpx;
  185. >view:nth-of-type(1) {
  186. width: 30%;
  187. // font-weight: 700;
  188. }
  189. .value {
  190. width: 70%;
  191. border-radius: 10rpx;
  192. overflow: hidden;
  193. .dateTimeCls {
  194. display: flex;
  195. align-items: center;
  196. justify-content: space-between;
  197. width: 100%;
  198. height: 80%;
  199. //border: 1px solid #b0b2b3;
  200. padding: 5rpx;
  201. border-radius: 20rpx;
  202. .date {
  203. font-size: 30rpx;
  204. display: flex;
  205. align-items: center;
  206. width: 80%;
  207. height: 100%;
  208. color: #000;
  209. }
  210. .img {
  211. display: flex;
  212. justify-content: center;
  213. align-items: center;
  214. //margin-left: 50rpx;
  215. width: 20%;
  216. //height: 100%;
  217. }
  218. }
  219. }
  220. }
  221. .tentativeQuantity {
  222. display: flex;
  223. align-items: center;
  224. background-color: #FFF;
  225. height: 80rpx;
  226. // margin: 10rpx 0 0 0;
  227. padding: 10rpx 0 0 20rpx;
  228. .key {
  229. width: 30%;
  230. }
  231. .value {
  232. width: 70%;
  233. border-radius: 10rpx;
  234. overflow: hidden;
  235. }
  236. }
  237. .Tip {
  238. display: flex;
  239. align-items: center;
  240. justify-content: center;
  241. .span {
  242. color: #999;
  243. font-size: 24rpx;
  244. }
  245. }
  246. .btns {
  247. width: 100%;
  248. display: flex;
  249. flex-direction: column;
  250. align-items: center;
  251. justify-content: center;
  252. gap: 20rpx;
  253. .ljxd {
  254. display: flex;
  255. align-items: center;
  256. justify-content: center;
  257. width: 500rpx;
  258. height: 70rpx;
  259. border-radius: 40rpx;
  260. color: #FFF;
  261. font-size: 28rpx;
  262. margin: 20rpx 10rpx 0 0;
  263. background: $uni-color;
  264. //margin-top: 20rpx;
  265. border-radius: 40rpx;
  266. }
  267. .lxwm {
  268. display: flex;
  269. align-items: center;
  270. justify-content: center;
  271. width: 500rpx;
  272. height: 70rpx;
  273. border-radius: 40rpx;
  274. color: #000000;
  275. font-size: 28rpx;
  276. margin: 20rpx 10rpx 0 0;
  277. background: #f1f1f1;
  278. //margin-top: 20rpx;
  279. border-radius: 40rpx;
  280. }
  281. .tip {
  282. display: flex;
  283. align-items: center;
  284. justify-content: center;
  285. font-size: 24rpx;
  286. color: #999;
  287. //width: 500rpx;
  288. }
  289. }
  290. .item {
  291. display: flex;
  292. align-items: center;
  293. background-color: #FFF;
  294. height: 80rpx;
  295. // margin: 10rpx 0 0 0;
  296. padding: 10rpx 0 0 20rpx;
  297. >view:nth-of-type(1) {
  298. width: 30%;
  299. // font-weight: 700;
  300. }
  301. >view:nth-of-type(2) {
  302. width: 70%;
  303. border-radius: 10rpx;
  304. overflow: hidden;
  305. input {
  306. background-color: #FFF;
  307. font-size: 28rpx;
  308. padding: 16rpx 8rpx 16rpx 15rpx;
  309. }
  310. }
  311. }
  312. .performanceBond {
  313. display: flex;
  314. align-items: center;
  315. background-color: #FFF;
  316. height: 80rpx;
  317. // margin: 10rpx 0 0 0;
  318. padding: 10rpx 0 0 20rpx;
  319. .key {
  320. width: 30%;
  321. // font-weight: 700;
  322. }
  323. .value {
  324. width: 70%;
  325. border-radius: 10rpx;
  326. overflow: hidden;
  327. input {
  328. background-color: #FFF;
  329. font-size: 28rpx;
  330. padding: 16rpx 8rpx 16rpx 15rpx;
  331. }
  332. }
  333. }
  334. .currentRegion {
  335. display: flex;
  336. align-items: center;
  337. background-color: #FFF;
  338. height: 80rpx;
  339. // margin: 10rpx 0 0 0;
  340. padding: 10rpx 0 0 20rpx;
  341. >view:nth-of-type(1) {
  342. width: 30%;
  343. // font-weight: 700;
  344. }
  345. >view:nth-of-type(2) {
  346. width: 70%;
  347. padding: 0 20rpx 0 0;
  348. display: flex;
  349. .input {
  350. background-color: #f5f5f5;
  351. // color: #a4a4a4;
  352. font-size: 28rpx;
  353. padding: 8rpx 8rpx 8rpx 15rpx;
  354. width: 350rpx;
  355. }
  356. .orientation {
  357. display: flex;
  358. padding: 10rpx 10rpx 10rpx 20rpx;
  359. font-size: 30rpx;
  360. color: #FBAB32;
  361. flex-direction: column;
  362. justify-content: center;
  363. align-items: center;
  364. }
  365. }
  366. }
  367. }
  368. }
  369. }
  370. </style>