shelfSet.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703
  1. <template>
  2. <view class="content">
  3. <u-navbar back-text="货架设置" :border-bottom="false" :background="{backgroundColor: $config('primaryColor')}"
  4. back-icon-color="#fff" :back-text-style="{ color: '#fff' }">
  5. <view slot='right' style="padding: 0 30upx;color: #ffffff;" @click="toPlRacking" v-if="shelfPlaceList">
  6. <u-icon name="piliangshangjia" custom-prefix="iscm-icon"></u-icon>
  7. <text style="margin-left: 6rpx;">批量上架</text>
  8. <u-badge v-if="showDot" :is-dot="true" size="mini" type="error"></u-badge>
  9. </view>
  10. </u-navbar>
  11. <view class="body-content flex flex_column">
  12. <view class="card-box" v-if="detailData">
  13. <view class="card-row flex align_center justify_between">
  14. <view class="label">货架名称</view>
  15. <view class="text flex align_center" @click="editShelf">
  16. <text style="width: 80%;flex: 1;">{{detailData.shelfName}}</text>
  17. <u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
  18. </view>
  19. </view>
  20. <view class="card-row flex align_center justify_between">
  21. <view class="label">关联客户</view>
  22. <view class="text flex align_center" @click="customeSet">
  23. <text
  24. style="width: 80%;flex: 1;">{{ (detailData&&detailData.customerEntity&&detailData.customerEntity.customerName) || '--' }}</text>
  25. <u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
  26. </view>
  27. </view>
  28. <view class="card-row align_center flex justify_between">
  29. <view class="label" style="width: 40%;" @click="showTip(0)">价格权限设置 <u-icon color="#ffaa00"
  30. name="question-circle"></u-icon></view>
  31. <view class="text flex align_center justify_end" style="width: 60%;"
  32. @click="openSetPriceShow">
  33. <view style="flex-grow: 1;">
  34. <view>货架产品:<text style="width: 80%;flex: 1;">{{showPriceStr.length ? showPriceStr.join("/") : '--'}}</text></view>
  35. <view>非货架产品:<text style="width: 80%;flex: 1;">{{showNonPriceStr.length ? showNonPriceStr.join("/") : '--'}}</text></view>
  36. </view>
  37. <u-icon name="arrow-right" color="#969da3" size="28"></u-icon>
  38. </view>
  39. </view>
  40. <view class="card-row align_center flex justify_between" v-if="showMore">
  41. <view class="label" style="width: 50%;" @click="showTip(1)">是否设置完成 <u-icon color="#ffaa00"
  42. name="question-circle"></u-icon></view>
  43. <view class="text" style="width: 50%;text-align: right;"><u-switch v-model="switchVal"
  44. @change="switchChange"></u-switch></view>
  45. </view>
  46. <view class="moreSeting" @click="showMore=!showMore">
  47. <text>{{!showMore?'更多设置':'收起'}}</text> <u-icon :name="showMore?'arrow-up':'arrow-down'"></u-icon>
  48. </view>
  49. </view>
  50. <!-- 货位信息 -->
  51. <view class="shelfPlace" :style="{height: scrollH+'px'}" v-if="shelfPlaceList">
  52. <view class="flex align_center shelfPlaceHead">
  53. <view class="lt"><text>□</text>表示没有绑定产品</view>
  54. <view class="search-btn flex align_center" @click="toSearchHw">
  55. <view><u-icon name="search"></u-icon><text>按产品搜索</text></view>
  56. <u-icon name="scan"></u-icon>
  57. </view>
  58. </view>
  59. <view class="flex shelfTabs">
  60. <view class="leftTabs">
  61. <view v-for="item in placeTab" :key="item" :class="curTab==item?'active':''"
  62. @click="tabChange(item)">{{item}}层</view>
  63. </view>
  64. <view class="rightCons flex flex_column">
  65. <view class="hwList flex_1">
  66. <text @click="editHw(item)" v-for="item in shelfPlaceList[curTab]"
  67. :key="item.shelfPlaceCode"
  68. :class="item.shelfProductApiEntity && item.shelfProductApiEntity.productSn?'':'red'">
  69. {{item.shelfPlaceCode}}
  70. </text>
  71. <text class="add" @click="addHw('add',1)"><u-icon name="plus"></u-icon></text>
  72. </view>
  73. <view class="hwAction flex justify_between">
  74. <u-button shape="circle" @click="tapPopup(1)" size="medium">打印贴签</u-button>
  75. <u-button class="newbtn" @click="tapPopup(2)" type='primary' shape="circle"
  76. size="medium">快速补货</u-button>
  77. </view>
  78. </view>
  79. </view>
  80. </view>
  81. <view style="width: 100%;" v-else>
  82. <view class="nodata" v-if="!loading">
  83. <view>
  84. <u-image :src="`../../static/${$config('themePath')}/def_no_data@3x.png`" width="180"
  85. height="180" border-radius="10"></u-image>
  86. </view>
  87. <view class="flex">
  88. 暂无货位信息,请点击
  89. <view>
  90. <text @click="toPlRacking">批量上架</text>
  91. <u-badge :offset="[-6,-10]" v-if="showDot" :is-dot="true" size="mini"
  92. type="error"></u-badge>
  93. </view>
  94. </view>
  95. </view>
  96. <view class="nodata" v-else>
  97. <u-loadmore :load-text="$config('loadText')" status="loading" />
  98. </view>
  99. </view>
  100. </view>
  101. <!-- 设置价格显示弹框 -->
  102. <u-modal v-model="updateShowPrice" :show-cancel-button="true" title="价格权限设置" @confirm="savePriceSet">
  103. <view class="slot-content" style="padding: 1rem 1rem 1.5rem;text-align: center;">
  104. <view style="color: #999;font-size: 0.8rem;margin: 0.5rem;">提示:不勾选则不显示价格</view>
  105. <view style="text-align: left;font-size: 0.9rem;padding-left: 1rem;">货架产品:</view>
  106. <u-checkbox-group @change="priceSetChange">
  107. <u-checkbox v-for="item in showPrice" :key="item.paramCode" v-model="item.checked"
  108. :name="item.paramCode">{{item.text}}</u-checkbox>
  109. </u-checkbox-group>
  110. <view style="text-align: left;font-size: 0.9rem;padding-left: 1rem;margin-top: 0.5rem;">非货架产品:</view>
  111. <u-checkbox-group @change="nonPriceSetChange">
  112. <u-checkbox v-for="item in showNonPrice" :key="item.paramCode" v-model="item.checked"
  113. :name="item.paramCode">{{item.text}}</u-checkbox>
  114. </u-checkbox-group>
  115. </view>
  116. </u-modal>
  117. </view>
  118. </template>
  119. <script>
  120. import {
  121. shelfDetail,
  122. shelfSave,
  123. modifFinishFlag,
  124. getProductPlace,
  125. getShelfPriceShow,
  126. updateShelfPriceShow
  127. } from '@/api/shelf'
  128. import {
  129. shelfCartNotEmpty
  130. } from '@/api/shelfCart'
  131. import {
  132. createShelfReplenishBill
  133. } from '@/api/shelfReplenish'
  134. export default {
  135. components: {},
  136. data() {
  137. return {
  138. loading: false,
  139. shelfSn: null,
  140. detailData: null,
  141. switchVal: false,
  142. showMenus: false,
  143. scrollH: 400,
  144. popData: [{
  145. title: '快速补货',
  146. val: '0'
  147. }, {
  148. title: '打印贴签',
  149. val: '1'
  150. }],
  151. pleft: 0,
  152. ptop: 0,
  153. shelfPlaceList: null,
  154. placeTab: [],
  155. curTab: '',
  156. isLoad: false,
  157. webView: null,
  158. showDot: false,
  159. showPrice: [],
  160. showNonPrice:[],
  161. showPriceStr: [],
  162. showNonPriceStr:[],
  163. updateShowPrice: false,
  164. showPriceBak: [],
  165. showMore: false
  166. }
  167. },
  168. watch: {
  169. showMore(a, b) {
  170. this.getScrollHeight(a)
  171. },
  172. },
  173. onLoad(option) {
  174. this.shelfSn = option.shelfSn
  175. // 获取货架详情
  176. this.getShelfDetal()
  177. // 获取货物
  178. this.getShelfPlace()
  179. this.isLoad = true
  180. // this.webView = this.$mp.page.$getAppWebview();
  181. uni.$on("editCustome", (data) => {
  182. this.isLoad = true
  183. this.saveShelf(data, 0)
  184. })
  185. uni.$on("editShelfName", (data) => {
  186. this.isLoad = true
  187. this.saveShelf(data, 1)
  188. })
  189. // const win = uni.getWindowInfo()
  190. // this.pleft = Math.floor(win.windowWidth * 0.3)
  191. // this.ptop = Math.floor(win.windowHeight - 70)
  192. this.getScrollHeight(this.showMore)
  193. console.log(this.shelfSn)
  194. },
  195. onUnload() {
  196. uni.$off("editCustome")
  197. uni.$off("editShelfName")
  198. },
  199. onShow() {
  200. if (!this.isLoad) {
  201. this.updateHw()
  202. }
  203. },
  204. methods: {
  205. getScrollHeight(a) {
  206. const sys = uni.getSystemInfoSync()
  207. const h = a ? 290 : 250
  208. if (sys.platform == 'android') {
  209. this.scrollH = sys.windowHeight - h
  210. } else {
  211. if (sys.safeArea.top) {
  212. this.scrollH = sys.windowHeight - h + sys.statusBarHeight - 34
  213. } else {
  214. this.scrollH = sys.windowHeight - h - 14
  215. }
  216. }
  217. },
  218. // 刷新货位
  219. updateHw() {
  220. this.placeTab = []
  221. this.shelfPlaceList = null
  222. this.getShelfPlace(true)
  223. },
  224. // 批量上架
  225. toPlRacking() {
  226. const url = this.showDot ? '/pages/batchShelves/cartList' : '/pages/batchShelves/index'
  227. uni.navigateTo({
  228. url: url + "?shelfSn=" + this.shelfSn + '&shelfName=' + this.detailData.shelfName +
  229. '&customerSn=' + this.detailData.customerSn
  230. })
  231. },
  232. // 更多操作
  233. tapPopup(e) {
  234. // 打印贴签
  235. if (e == 1) {
  236. if (this.hasNoBindPro()) {
  237. uni.navigateTo({
  238. url: "/pages/latePlay/chooseProduct?shelfSn=" + this.shelfSn + '&shelfName=' + this
  239. .detailData.shelfName
  240. })
  241. } else {
  242. uni.showModal({
  243. showCancel: false,
  244. confirmText: "好的",
  245. title: "提示",
  246. content: "所有货位都没有绑定产品,无法打印贴签!"
  247. })
  248. }
  249. }
  250. // 快速补货
  251. if (e == 2) {
  252. createShelfReplenishBill({
  253. shelfSn: this.shelfSn,
  254. enableFlag: 1
  255. }).then(res => {
  256. console.log(res.data)
  257. if (res.data && res.data.length) {
  258. const params = Object.assign(this.detailData, {
  259. list: res.data
  260. })
  261. this.$store.state.vuex_tempData = params
  262. uni.navigateTo({
  263. url: "/pages/shelfSetting/quickReplenish"
  264. })
  265. } else {
  266. uni.showModal({
  267. showCancel: false,
  268. confirmText: "好的",
  269. title: "提示",
  270. content: "没有需要补货的产品"
  271. })
  272. }
  273. })
  274. }
  275. },
  276. showTip(type) {
  277. uni.showModal({
  278. showCancel: false,
  279. confirmText: "好的",
  280. title: "提示",
  281. content: type ? "只有当数字货架的“是否设置完成”为“是”,系统才会自动对该货架生成补货单,修理厂才能正常下单。" :
  282. "不勾选则不显示价格,结算价:即易码通进货价"
  283. })
  284. },
  285. // 设置完成是否
  286. switchChange(v) {
  287. const params = {
  288. shelfSn: this.shelfSn,
  289. finishFlag: v ? '1' : '0'
  290. }
  291. modifFinishFlag(params).then(res => {
  292. if (res.status == 200) {
  293. uni.showToast({
  294. icon: 'none',
  295. title: res.message
  296. })
  297. }
  298. })
  299. },
  300. // 关联客户
  301. customeSet() {
  302. uni.navigateTo({
  303. url: "/pages/sales/chooseCustomer?backPage=shelfEdit&shelfName=" + this.detailData.shelfName
  304. })
  305. },
  306. // 修改货架名称
  307. editShelf() {
  308. uni.navigateTo({
  309. url: "/pages/shelfSetting/editShelf?shelfName=" + this.detailData.shelfName
  310. })
  311. },
  312. // 是否没有绑定任何产品
  313. hasNoBindPro() {
  314. let noBindPro = null;
  315. for (let i = 0; i < this.placeTab.length; i++) {
  316. noBindPro = this.shelfPlaceList[this.placeTab[i]].find(item => item.shelfProductApiEntity && item
  317. .shelfProductApiEntity.productSn);
  318. if (!!noBindPro) {
  319. break
  320. }
  321. }
  322. return !!noBindPro
  323. },
  324. // 按照产品搜索货位
  325. toSearchHw() {
  326. if (this.hasNoBindPro()) {
  327. uni.navigateTo({
  328. url: "/pages/shelfSetting/searchShelfHw?shelfName=" + this.detailData.shelfName +
  329. "&shelfSn=" + this.shelfSn
  330. })
  331. } else {
  332. uni.showModal({
  333. showCancel: false,
  334. confirmText: "好的",
  335. title: "提示",
  336. content: "所有货位都没有绑定产品,无法搜索!"
  337. })
  338. }
  339. },
  340. // 编辑货位
  341. editHw(item) {
  342. const hasProduct = item.shelfProductApiEntity && item.shelfProductApiEntity.productSn
  343. const type = hasProduct ? 'edit' : 'bind'
  344. const params = Object.assign(this.detailData, item)
  345. this.$store.state.vuex_tempData = params
  346. uni.navigateTo({
  347. url: "/pages/shelfSetting/editShelfHw?type=" + type
  348. })
  349. },
  350. // 新增货位
  351. addHw(type, flag) {
  352. let shelfPlaceCode = ''
  353. if (type == 'edit') {
  354. shelfPlaceCode = flag
  355. }
  356. if (type == 'add' && flag == 1) {
  357. const row = this.shelfPlaceList[this.curTab]
  358. const num = row[row.length - 1].shelfPlaceCode.replace(this.curTab, '')
  359. const nextNum = Number(num) + 1
  360. shelfPlaceCode = this.curTab + (nextNum < 10 ? '0' : '') + nextNum
  361. }
  362. const params = {
  363. customerSn: this.detailData.customerSn,
  364. shelfSn: this.detailData.shelfSn,
  365. id: this.detailData.id
  366. }
  367. uni.navigateTo({
  368. url: "/pages/shelfSetting/addShelfHw?detailData=" + encodeURIComponent(JSON.stringify(
  369. params)) + "&type=" + type + "&shelfPlaceCode=" + shelfPlaceCode
  370. })
  371. },
  372. // 保存数字货架基本信息
  373. saveShelf(data, type) {
  374. const params = {
  375. shelfSn: this.shelfSn
  376. }
  377. if (type == 1) {
  378. params.customerSn = this.detailData.customerSn
  379. params.shelfName = data.shelfName
  380. } else {
  381. params.customerSn = data.customerSn
  382. }
  383. shelfSave(params).then(res => {
  384. if (res.status == 200) {
  385. this.toashMsg(res.message)
  386. this.getShelfDetal()
  387. }
  388. })
  389. },
  390. // 获取价格显示设置
  391. getShelfPriceShow() {
  392. getShelfPriceShow({
  393. shelfSn: this.shelfSn
  394. }).then(res => {
  395. if (res.status == 200) {
  396. const ret = res.data && res.data
  397. this.showPriceBak = ret
  398. this.formatPriceShow()
  399. }
  400. })
  401. },
  402. // 格式化价格显示
  403. formatPriceShow(){
  404. this.showPrice = []
  405. this.showPriceStr = []
  406. this.showNonPrice = []
  407. this.showNonPriceStr = []
  408. this.showPriceBak.map(item => {
  409. if (item.paramCode == 'shelf_price_show' && item.paramValue == 1) {
  410. this.showPriceStr.push("车主价")
  411. }
  412. if (item.paramCode == 'shelf_cost_show' && item.paramValue == 1) {
  413. this.showPriceStr.push("结算价")
  414. }
  415. if (item.paramCode == 'non_shelf_price_show' && item.paramValue == 1) {
  416. this.showNonPriceStr.push("车主价")
  417. }
  418. if (item.paramCode == 'non_shelf_cost_show' && item.paramValue == 1) {
  419. this.showNonPriceStr.push("结算价")
  420. }
  421. if(item.paramCode.indexOf("non_")>=0){
  422. this.showNonPrice.push({
  423. paramCode: item.paramCode,
  424. paramValue: item.paramValue,
  425. text: item.paramCode == 'non_shelf_price_show' ? '车主价' : '结算价',
  426. checked: item.paramValue == 1
  427. })
  428. }else{
  429. this.showPrice.push({
  430. paramCode: item.paramCode,
  431. paramValue: item.paramValue,
  432. text: item.paramCode == 'shelf_price_show' ? '车主价' : '结算价',
  433. checked: item.paramValue == 1
  434. })
  435. }
  436. })
  437. },
  438. openSetPriceShow(){
  439. this.formatPriceShow()
  440. this.updateShowPrice = true
  441. },
  442. // 选择价格显示
  443. priceSetChange(e) {
  444. console.log(e)
  445. this.showPrice.map(item => {
  446. item.paramValue = e.includes(item.paramCode) ? 1 : 0
  447. })
  448. },
  449. nonPriceSetChange(e){
  450. this.showNonPrice.map(item => {
  451. item.paramValue = e.includes(item.paramCode) ? 1 : 0
  452. })
  453. },
  454. // 价格显示保存
  455. savePriceSet() {
  456. uni.showLoading({
  457. mask: true,
  458. title: '正在保存价格设置...'
  459. })
  460. // 更新价格显示
  461. updateShelfPriceShow({
  462. shelfSn: this.shelfSn,
  463. paramValue: [...this.showPrice,...this.showNonPrice]
  464. }).then(res => {
  465. if (res.status == 200) {
  466. this.getShelfPriceShow()
  467. this.toashMsg(res.message)
  468. }
  469. uni.hideLoading()
  470. })
  471. },
  472. getShelfDetal() {
  473. shelfDetail({
  474. sn: this.shelfSn
  475. }).then(res => {
  476. if (res.status == 200) {
  477. this.detailData = res.data
  478. this.switchVal = res.data.finishFlag == 1
  479. // 价格设置
  480. this.getShelfPriceShow()
  481. } else {
  482. this.detailData = null
  483. }
  484. })
  485. },
  486. getShelfPlace(flag) {
  487. this.loading = true
  488. getProductPlace({
  489. shelfSn: this.shelfSn
  490. }).then(res => {
  491. if (res.status == 200 && res.data) {
  492. this.shelfPlaceList = res.data
  493. // 获取层
  494. for (let a in res.data) {
  495. this.placeTab.push(a)
  496. }
  497. // 排序
  498. this.placeTab.sort(function(a, b) {
  499. return (a + '').localeCompare(b + '');
  500. });
  501. console.log(this.placeTab)
  502. if (!flag || !this.curTab) {
  503. this.curTab = this.placeTab[0]
  504. }
  505. if (this.placeTab.length == 0) {
  506. this.shelfPlaceList = null
  507. }
  508. } else {
  509. this.shelfPlaceList = null
  510. this.placeTab = []
  511. }
  512. // 是否有已录入的产品
  513. this.getHasCartNotEmpty()
  514. this.isLoad = false
  515. this.loading = false
  516. })
  517. },
  518. tabChange(item) {
  519. this.curTab = item
  520. },
  521. getHasCartNotEmpty() {
  522. shelfCartNotEmpty({
  523. shelfSn: this.shelfSn
  524. }).then(res => {
  525. this.showDot = res.data == 1
  526. })
  527. }
  528. }
  529. }
  530. </script>
  531. <style lang="less">
  532. .content {
  533. width: 100%;
  534. .nodata {
  535. padding: 100rpx 50rpx;
  536. text-align: center;
  537. display: flex;
  538. flex-direction: column;
  539. justify-content: center;
  540. align-items: center;
  541. >view {
  542. position: relative;
  543. padding: 10upx 0;
  544. text {
  545. color: #00aaff;
  546. margin-left: 10rpx;
  547. }
  548. }
  549. }
  550. .body-content {
  551. width: 100%;
  552. }
  553. .card-box {
  554. background-color: #fff;
  555. border-radius: 0.5rem;
  556. box-shadow: 0.1rem 0.2rem 0.3rem #eee;
  557. padding: 0 1rem;
  558. margin: 0.5rem;
  559. .card-row {
  560. border-bottom: 1rpx solid #eee;
  561. padding: 20rpx 0;
  562. min-height: 90rpx;
  563. &:last-child {
  564. border-bottom: 0;
  565. }
  566. .label {
  567. flex: 1;
  568. width: 20%;
  569. }
  570. .text {
  571. width: 80%;
  572. color: #666;
  573. }
  574. }
  575. .moreSeting {
  576. text-align: center;
  577. color: #999;
  578. padding: 20upx;
  579. >text {
  580. margin-right: 10rpx;
  581. }
  582. }
  583. }
  584. .shelfPlace {
  585. height: calc(100% - 300rpx);
  586. .shelfPlaceHead {
  587. padding: 0.2rem 0.5rem 0.5rem;
  588. justify-content: space-between;
  589. .lt {
  590. font-size: 0.9rem;
  591. color: #999;
  592. text {
  593. color: #ff5500;
  594. font-size: 1rem;
  595. }
  596. }
  597. .search-btn {
  598. border: 1rpx solid #eee;
  599. border-radius: 50rpx;
  600. width: 50%;
  601. justify-content: space-between;
  602. padding: 0.3rem 0.5rem;
  603. color: #999;
  604. background-color: #fff;
  605. font-size: 0.9rem;
  606. &:active {
  607. opacity: 0.6;
  608. }
  609. }
  610. }
  611. .shelfTabs {
  612. height: calc(100% - 85rpx);
  613. .leftTabs {
  614. width: 20%;
  615. overflow: auto;
  616. >view {
  617. padding: 0.8rem 0.5rem;
  618. border-left: 0.2rem solid #f8f8f8;
  619. text-align: center;
  620. }
  621. .active {
  622. border-color: rgb(47, 126, 209);
  623. background-color: #fff;
  624. }
  625. }
  626. .rightCons {
  627. width: 80%;
  628. background-color: #fff;
  629. position: relative;
  630. .hwList {
  631. overflow: auto;
  632. padding: 0.5rem;
  633. padding-bottom: 105rpx;
  634. >text {
  635. border: 1rpx solid #eee;
  636. padding: 0.2rem 0.8rem;
  637. border-radius: 0.3rem;
  638. margin: 0.5rem 2%;
  639. float: left;
  640. width: 20%;
  641. text-align: center;
  642. }
  643. .red {
  644. border-color: #ff5500;
  645. }
  646. .add {
  647. border-style: dashed;
  648. border-color: #999;
  649. color: #999;
  650. }
  651. }
  652. .hwAction {
  653. padding: 0.5rem;
  654. position: fixed;
  655. bottom: 0;
  656. right: 0;
  657. width: 80%;
  658. background-color: #fff;
  659. button {
  660. width: 240rpx;
  661. }
  662. .newbtn {
  663. background-color: rgb(51, 95, 182);
  664. color: #fff;
  665. }
  666. }
  667. }
  668. }
  669. }
  670. }
  671. </style>