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

433 lines
10 KiB

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