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

6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 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"
  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>