addPage.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821
  1. <!-- 称重登记-新增 -->
  2. <template>
  3. <view class="weighingRegistrationAddPage">
  4. <view class="weighingRegistrationAddPage-center-box">
  5. <view class="text-title-p">基础信息</view>
  6. <view class="content-box" style="padding-bottom:20rpx;">
  7. <view class="sub-picker-box">
  8. <view class="title-box-1" style="width:220rpx;">报备单编号:</view>
  9. <view class="text-p-1">{{addForm.reportNo}}</view>
  10. </view>
  11. <view class="sub-picker-box">
  12. <view class="title-box-1" style="width:220rpx;">实验室:</view>
  13. <view class="text-p-1">{{addForm.subName}}({{addForm.roomNum}})</view>
  14. </view>
  15. <view class="sub-picker-box">
  16. <view class="title-box-1" style="width:220rpx;">上门回收日期:</view>
  17. <view class="text-p-1">{{addForm.expectTime}}({{addForm.expectWeek}})</view>
  18. </view>
  19. <view class="sub-picker-box">
  20. <view class="title-box-1" style="width:220rpx;">废物种类:</view>
  21. <view class="text-p-1">{{addForm.typeNum}}</view>
  22. </view>
  23. <view class="sub-picker-box">
  24. <view class="title-box-1" style="width:220rpx;">报备人:</view>
  25. <view class="text-p-1">{{addForm.reportName}}({{addForm.reportAccount}})</view>
  26. </view>
  27. <view class="sub-picker-box">
  28. <view class="title-box-1" style="width:220rpx;">报备时间:</view>
  29. <view class="text-p-1">{{addForm.reportTime}}</view>
  30. </view>
  31. </view>
  32. <view class="text-title-p">称重登记</view>
  33. <view class="content-box">
  34. <view class="for-content-box" v-for="(item,index) in addForm.formData4" :key="index">
  35. <view class="sub-picker-box">
  36. <view class="mark-box">*</view>
  37. <view class="title-box">类型:</view>
  38. <view class="picker-box">
  39. <picker @change="(val)=>forChange(index,val)" :value="item.forData3" :range="item.forList" :range-key="'wasteName'">
  40. <view class="picker-p" :class="item.forData1?'check-picker-p':''">{{item.forData1?item.forData2:'请选择危废类型'}}</view>
  41. </picker>
  42. </view>
  43. <img class="right-button" v-if="addForm.formData4[1]"
  44. @click="reductionItemButton(index)"
  45. :src="imagesUrl('commonality/icon_zgsq_jian.png')">
  46. </view>
  47. <view class="sub-picker-box" v-if="item.forData1&&item.forData4">
  48. <view class="mark-box">*</view>
  49. <view class="title-box">数量:</view>
  50. <view class="picker-text-box">{{item.forData4+item.forData5}}</view>
  51. </view>
  52. <view class="sub-picker-box">
  53. <view class="mark-box">*</view>
  54. <view class="title-box">称重:</view>
  55. <view class="reduction-button" @click="reductionAdd(1,index)">-</view>
  56. <input class="input-p" type="digit" maxlength="10" @input="(val)=>handleInput(index,val)" v-model="item.forData6">
  57. <view class="add-button" @click="reductionAdd(2,index)">+</view>
  58. <view class="unit-p">kg</view>
  59. <view class="bt-button" :class="btActiveIndex===index?'bt-button-active':''" @click="readScale(index)">
  60. {{btActiveIndex===index?'读取中':'读秤'}}
  61. </view>
  62. </view>
  63. <view class="bt-status-box" v-if="btActiveIndex===index&&btStatus">
  64. <view class="bt-status-text">{{btStatus}}</view>
  65. <view class="bt-cancel-text" @click="stopScale()">取消</view>
  66. </view>
  67. </view>
  68. <view class="add-item-button" v-if="this.addForm.formData4.length < this.dialogOptionForList.length"
  69. @click="addItemButton()">补充其他未报备类型</view>
  70. <view class="sub-picker-box">
  71. <view class="mark-box"></view>
  72. <view class="title-box">图片:</view>
  73. <view class="explain-box">可拍摄称重凭据或回收人员照片,最多可上传3张</view>
  74. </view>
  75. <view class="sub-picker-box">
  76. <view class="img-list-box" v-if="addForm.imgList[0]">
  77. <view class="for-img-box" v-for="(img,imgIndex) in addForm.imgList" :key="imgIndex" >
  78. <p @click="delImg(imgIndex)">x</p>
  79. <img :src="baseUrl+img">
  80. </view>
  81. </view>
  82. <view class="img-up-p" @click="selectImage()" v-if="!addForm.imgList[2]">+</view>
  83. </view>
  84. <view class="sub-picker-box" style="padding-bottom:50rpx;">
  85. </view>
  86. </view>
  87. <view class="submit-check-box" @click="buttonCheck()">
  88. <img v-if="!checkType" class="left-box" :src="imagesUrl('commonality/icon_12.png')">
  89. <img v-if="checkType" class="left-box" :src="imagesUrl('commonality/icon_13.png')">
  90. <view :class="checkType?'check-view':''">本人已认真核对本次危险废物的登记类别及重量信息,确认数据真实、准确、完整,并对其真实性依法承担相应责任。</view>
  91. </view>
  92. <view class="submit-button" :class="!checkType?'no-submit-button':''" @click="submitButton">登记完成,提交</view>
  93. </view>
  94. </view>
  95. </template>
  96. <script>
  97. import {
  98. parseTime
  99. } from '@/component/public.js'
  100. import { config } from '@/api/request/config.js'
  101. import {
  102. hwmsAppWasteOrderList,
  103. hwmsAppWasteOrderWasteDetail,
  104. } from '@/pages_hazardousWasteRecycling/api/index.js'
  105. import BluetoothScale from '@/pages_hazardousWasteRecycling/utils/bluetooth.js'
  106. export default {
  107. data() {
  108. return {
  109. baseUrl:config.base_url,
  110. addForm:{
  111. expectTime: "",
  112. expectWeek: "",
  113. id: 0,
  114. subId: 0,
  115. reportAccount: "",
  116. reportName: "",
  117. reportNo: "",
  118. reportTime: "",
  119. roomNum: "",
  120. subName: "",
  121. typeNum: 0,
  122. formData4:[],
  123. imgList:[],
  124. },
  125. dialogOptionList:[],
  126. dialogOptionForList:[],
  127. checkType:false,
  128. btScale: null,
  129. btStatus: '',
  130. btActiveIndex: -1,
  131. }
  132. },
  133. onLoad(option) {
  134. this.hwmsAppWasteOrderList(option.id);
  135. },
  136. onUnload() {
  137. this.stopScale();
  138. },
  139. onShow() {
  140. },
  141. mounted() {
  142. },
  143. methods: {
  144. buttonCheck(){
  145. this.$set(this,'checkType',!this.checkType);
  146. },
  147. //提交按钮
  148. submitButton(){
  149. let self = this;
  150. if(!this.checkType){
  151. return
  152. }
  153. if(!this.addForm.formData4[0]){
  154. uni.showToast({
  155. title: '请添加危废类型',
  156. icon: "none",
  157. mask: true,
  158. duration: 2000
  159. });
  160. return
  161. }
  162. for(let i=0;i<self.addForm.formData4.length;i++){
  163. if(!self.addForm.formData4[i].forData1){
  164. uni.showToast({
  165. title: '第'+(i+1)+'个类型没有选择',
  166. icon: "none",
  167. mask: true,
  168. duration: 2000
  169. });
  170. return
  171. }
  172. if(self.addForm.formData4[i].forData6 == 0){
  173. uni.showToast({
  174. title: self.addForm.formData4[i].forData2+'没有填写数量',
  175. icon: "none",
  176. mask: true,
  177. duration: 2000
  178. });
  179. return
  180. }
  181. }
  182. let obj = {
  183. id:this.addForm.id,
  184. recycleTime:this.addForm.expectTime,
  185. subId:this.addForm.subId,
  186. registerOrderAddItemBos:[],
  187. images:self.addForm.imgList,
  188. };
  189. for(let i=0;i<self.addForm.formData4.length;i++){
  190. obj.registerOrderAddItemBos.push({
  191. typeId:self.addForm.formData4[i].forData1,
  192. weight:self.addForm.formData4[i].forData6,
  193. })
  194. }
  195. // uni.navigateTo({
  196. // url: "/pages_hazardousWasteRecycling/views/weighingRegistration/signatureComponent?data=" + encodeURIComponent(JSON.stringify(obj))
  197. // });
  198. let info = {
  199. reportNo:this.addForm.reportNo,
  200. subName:this.addForm.subName,
  201. roomNum:this.addForm.roomNum,
  202. expectTime:this.addForm.expectTime,
  203. expectWeek:this.addForm.expectWeek,
  204. reportName:this.addForm.reportName,
  205. reportAccount:this.addForm.reportAccount,
  206. reportTime:this.addForm.reportTime,
  207. details:[],
  208. images:self.addForm.imgList,
  209. }
  210. for(let i=0;i<self.addForm.formData4.length;i++){
  211. info.details.push({
  212. typeName:self.addForm.formData4[i].forData2,
  213. weight:self.addForm.formData4[i].forData6,
  214. })
  215. }
  216. uni.navigateTo({
  217. url: "/pages_hazardousWasteRecycling/views/weighingRegistration/confirmation?data=" + encodeURIComponent(JSON.stringify(obj))+'&info='+ encodeURIComponent(JSON.stringify(info))
  218. });
  219. },
  220. async hwmsAppWasteOrderList(id){
  221. const {
  222. data
  223. } = await hwmsAppWasteOrderList();
  224. if (data.code == 200) {
  225. this.$set(this,'dialogOptionForList',data.data.wasteOrder);
  226. this.hwmsAppWasteOrderWasteDetail(id);
  227. }
  228. },
  229. //详情
  230. async hwmsAppWasteOrderWasteDetail(id) {
  231. let self = this;
  232. const {
  233. data
  234. } = await hwmsAppWasteOrderWasteDetail({id:id});
  235. if (data.code == 200) {
  236. let list = [];
  237. for(let i=0;i<data.data.wasteOrderDetailItemVos.length;i++){
  238. for(let o=0;o<self.dialogOptionForList.length;o++){
  239. if(data.data.wasteOrderDetailItemVos[i].typeId == self.dialogOptionForList[o].id){
  240. let obj = {
  241. forData1:self.dialogOptionForList[o].id,
  242. forData2:self.dialogOptionForList[o].wasteName,
  243. forData3:o,
  244. forData4:data.data.wasteOrderDetailItemVos[i].quantity,
  245. forData5:self.dialogOptionForList[o].unit,
  246. forData6:data.data.wasteOrderDetailItemVos[i].weight?data.data.wasteOrderDetailItemVos[i].weight:0,
  247. forList:self.dialogOptionForList,
  248. }
  249. list.push(JSON.parse(JSON.stringify(obj)))
  250. }
  251. }
  252. }
  253. // item2.endDate = parseTime(item2.endDate, "{y}-{m}-{d}");
  254. this.$set(self.addForm,'expectTime',data.data.expectTime);
  255. this.$set(self.addForm,'expectWeek',data.data.expectWeek);
  256. this.$set(self.addForm,'id',data.data.id);
  257. this.$set(self.addForm,'subId',data.data.subId);
  258. this.$set(self.addForm,'reportAccount',data.data.reportAccount);
  259. this.$set(self.addForm,'reportName',data.data.reportName);
  260. this.$set(self.addForm,'reportNo',data.data.reportNo);
  261. this.$set(self.addForm,'reportTime',parseTime(data.data.reportTime, "{y}-{m}-{d} {h}:{i}:{s}"));
  262. this.$set(self.addForm,'roomNum',data.data.roomNum);
  263. this.$set(self.addForm,'subName',data.data.subName);
  264. this.$set(self.addForm,'typeNum',data.data.typeNum);
  265. this.$set(self.addForm,'formData4',list);
  266. this.filtrateList();
  267. }
  268. },
  269. //选中类型
  270. forChange(index,e){
  271. console.log('e',e);
  272. let self = this;
  273. if(self.addForm.formData4[index].forList[e.detail.value].remarkEnable){
  274. uni.showModal({
  275. title: '确认添加?',
  276. content: self.addForm.formData4[index].forList[e.detail.value].remark,
  277. cancelColor: "#999",
  278. confirmColor: "#0183FA",
  279. success: function(res) {
  280. if(res.confirm){
  281. self.$set(self.addForm.formData4[index],'forData1',self.addForm.formData4[index].forList[e.detail.value].id);
  282. self.$set(self.addForm.formData4[index],'forData2',self.addForm.formData4[index].forList[e.detail.value].wasteName);
  283. self.$set(self.addForm.formData4[index],'forData5',self.addForm.formData4[index].forList[e.detail.value].unit);
  284. self.$set(self.addForm.formData4[index],'forData3',e.detail.value);
  285. self.filtrateList();
  286. }
  287. }
  288. });
  289. }else{
  290. self.$set(self.addForm.formData4[index],'forData1',self.addForm.formData4[index].forList[e.detail.value].id);
  291. self.$set(self.addForm.formData4[index],'forData2',self.addForm.formData4[index].forList[e.detail.value].wasteName);
  292. self.$set(self.addForm.formData4[index],'forData5',self.addForm.formData4[index].forList[e.detail.value].unit);
  293. self.$set(self.addForm.formData4[index],'forData3',e.detail.value);
  294. self.filtrateList();
  295. }
  296. // this.$set(this.addForm.formData4[index],'forData1',this.addForm.formData4[index].forList[e.detail.value].id);
  297. // this.$set(this.addForm.formData4[index],'forData2',this.addForm.formData4[index].forList[e.detail.value].wasteName);
  298. // this.$set(this.addForm.formData4[index],'forData5',this.addForm.formData4[index].forList[e.detail.value].unit);
  299. // this.$set(this.addForm.formData4[index],'forData3',e.detail.value);
  300. // this.filtrateList();
  301. },
  302. //单位值加减
  303. reductionAdd(type,index){
  304. if(type == 1){
  305. //减
  306. if(this.addForm.formData4[index].forData6>=1){
  307. this.$set(this.addForm.formData4[index],'forData6',this.addForm.formData4[index].forData6-1);
  308. }
  309. }else if(type == 2){
  310. //加
  311. if(this.addForm.formData4[index].forData6<9999){
  312. this.$set(this.addForm.formData4[index],'forData6',this.addForm.formData4[index].forData6+1);
  313. }
  314. }
  315. },
  316. //添加类型
  317. addItemButton(){
  318. if(this.addForm.formData4.length>= this.dialogOptionForList.length){
  319. uni.showToast({
  320. title: '没有更多类型可添加',
  321. icon: "none",
  322. mask: true,
  323. duration: 2000
  324. });
  325. return
  326. }
  327. this.addForm.formData4.push({
  328. forData1:'',
  329. forData2:'',
  330. forData3:'',
  331. forData4:0,
  332. forData5:'',
  333. forData6:0,
  334. forList:[],
  335. })
  336. this.filtrateList();
  337. },
  338. //删除类型
  339. reductionItemButton(index){
  340. let self = this;
  341. let num = 0;
  342. for(let i=0;i<self.dialogOptionForList.length;i++){
  343. if(self.dialogOptionForList[i].id == this.addForm.formData4[index].forData1){
  344. if(self.dialogOptionForList[i].remarkEnable){
  345. num++
  346. uni.showModal({
  347. title: '确认删除?',
  348. content: self.dialogOptionForList[i].remark,
  349. cancelColor: "#999",
  350. confirmColor: "#0183FA",
  351. success: function(res) {
  352. if(res.confirm){
  353. self.addForm.formData4.splice(index,1);
  354. self.filtrateList();
  355. }
  356. }
  357. });
  358. }else{
  359. num++
  360. uni.showModal({
  361. content: '确认删除该类型?',
  362. cancelColor: "#999",
  363. confirmColor: "#0183FA",
  364. success: function(res) {
  365. if (res.confirm) {
  366. self.addForm.formData4.splice(index,1);
  367. self.filtrateList();
  368. } else if (res.cancel) {}
  369. }
  370. });
  371. }
  372. }
  373. }
  374. if(num == 0){
  375. self.addForm.formData4.splice(index,1);
  376. self.filtrateList();
  377. }
  378. },
  379. // 图片上传
  380. selectImage() {
  381. let self = this;
  382. wx.chooseImage({
  383. count: 1,
  384. sizeType: ["original", "compressed"],
  385. sourceType: ["album", "camera"],
  386. success: function(res) {
  387. let tempFilePaths = res.tempFilePaths[0];
  388. self.uploadImg(tempFilePaths);
  389. }
  390. });
  391. },
  392. async uploadImg(tempFilePaths){
  393. var self = this;
  394. uni.showLoading({
  395. title: '上传中',
  396. mask: true
  397. });
  398. uni.uploadFile({
  399. url: config.base_url + '/system/file/upload', //仅为示例,非真实的接口地址
  400. header:{'Authorization':uni.getStorageSync('token')},
  401. filePath: tempFilePaths,
  402. name: 'file',
  403. formData: {
  404. 'user': 'test'
  405. },
  406. success: (uploadFileRes) => {
  407. let res = JSON.parse(uploadFileRes.data);
  408. if(res.code == 200){
  409. self.addForm.imgList.push(res.data.url)
  410. }else{
  411. uni.showToast({
  412. title: res.msg,
  413. icon:"none",
  414. mask:true,
  415. duration: 2000
  416. });
  417. }
  418. },
  419. fail: err => {},
  420. complete: () => {
  421. uni.hideLoading()
  422. }
  423. });
  424. },
  425. //删除图片
  426. delImg(index){
  427. let self = this;
  428. uni.showModal({
  429. // title: '确认要退出吗?',
  430. content: '确认删除该图片?',
  431. cancelColor: "#999",
  432. confirmColor: "#0183FA",
  433. success: function(res) {
  434. if (res.confirm) {
  435. self.addForm.imgList.splice(index,1);
  436. } else if (res.cancel) {}
  437. }
  438. });
  439. },
  440. // 小数点后两位
  441. handleInput(index,e){
  442. // 一定要加nextTick,否则特殊情况的更改不生效【如:000时,更改为0】
  443. this.$nextTick(() => {
  444. let value = e.detail.value
  445. // 如果当前输入为空,直接允许清空
  446. if (!value) {
  447. this.addForm.formData4[index].forData6 = ''
  448. } else if (value?.charAt(0) === '0' && value.charAt(1) && value.charAt(1) !== '.') {
  449. // // 1. 当第一位为0时,只能输入小数点【第二位必须是小数点】
  450. value = '0'
  451. }
  452. value = value.replace(/[^\d.]/g, '') // 清除"数字"和"."以外的字符
  453. value = value.replace(/\.{2,}/g, '.') // 只保留第一个. 清除多余的
  454. value = value.match(/^\d*(\.?\d{0,3})/g)[0] || '' // 保留3位小数
  455. this.addForm.formData4[index].forData6 = value
  456. })
  457. },
  458. //匹配数据
  459. filtrateList(){
  460. let self = this;
  461. let forList = JSON.parse(JSON.stringify(this.dialogOptionForList));
  462. let newList = JSON.parse(JSON.stringify(this.dialogOptionForList));
  463. for(let i=0;i<forList.length;i++){
  464. let num = 0;
  465. for(let o=0;o<self.addForm.formData4.length;o++){
  466. if(forList[i].id == self.addForm.formData4[o].forData1){
  467. num++
  468. break
  469. }
  470. }
  471. if(num!=0){
  472. forList.splice(i,1);
  473. i--
  474. }
  475. }
  476. for(let i=0;i<self.addForm.formData4.length;i++){
  477. let list = [];
  478. if(self.addForm.formData4[i].forData1){
  479. for(let o=0;o<newList.length;o++){
  480. if(self.addForm.formData4[i].forData1 == newList[o].value){
  481. list.push(newList[o]);
  482. }
  483. }
  484. }
  485. list = list.concat(forList)
  486. self.$set(self.addForm.formData4[i],'forList',JSON.parse(JSON.stringify(list)));
  487. }
  488. },
  489. // 点击读秤按钮
  490. readScale(index) {
  491. let self = this;
  492. if (this.btActiveIndex === index) {
  493. this.stopScale();
  494. return;
  495. }
  496. this.stopScale();
  497. this.btActiveIndex = index;
  498. this.btStatus = '初始化蓝牙...';
  499. const scale = new BluetoothScale();
  500. this.btScale = scale;
  501. scale.onStatus((msg) => {
  502. self.btStatus = msg;
  503. });
  504. scale.onSelectDevice((devices, callback) => {
  505. const itemList = devices.map((d, i) => {
  506. const rssiText = d.rssi ? ' 信号:' + d.rssi + 'dBm' : '';
  507. return d.name + ' (' + (i + 1) + ')' + rssiText;
  508. });
  509. uni.showActionSheet({
  510. title: '检测到多台蓝牙秤,请选择',
  511. itemList: itemList,
  512. itemColor: '#0183FA',
  513. success: (res) => {
  514. callback(devices[res.tapIndex].deviceId);
  515. },
  516. fail: () => {
  517. callback(null);
  518. }
  519. });
  520. });
  521. scale.onWeight((weight) => {
  522. self.$set(self.addForm.formData4[index], 'forData6', weight);
  523. self.btStatus = '读取成功: ' + weight + ' kg';
  524. self.stopScale();
  525. uni.showToast({ title: '读取成功: ' + weight + ' kg', icon: 'none', duration: 2000 });
  526. });
  527. scale.start().catch((err) => {
  528. uni.showToast({ title: err.message || '蓝牙读取失败', icon: 'none', duration: 2500 });
  529. });
  530. },
  531. // 停止蓝牙读秤
  532. stopScale() {
  533. if (this.btScale) {
  534. this.btScale.stop();
  535. this.btScale = null;
  536. }
  537. this.btActiveIndex = -1;
  538. this.btStatus = '';
  539. },
  540. },
  541. }
  542. </script>
  543. <style lang="stylus" scoped>
  544. .weighingRegistrationAddPage{
  545. height: 100%;
  546. display flex;
  547. flex:1;
  548. flex-direction column;
  549. overflow: hidden;
  550. .weighingRegistrationAddPage-top-box{
  551. height:380rpx;
  552. }
  553. .weighingRegistrationAddPage-center-box{
  554. flex:1;
  555. overflow-y: scroll;
  556. overflow-x: hidden
  557. display flex;
  558. flex-direction column;
  559. }
  560. .text-title-p{
  561. font-size:32rpx;
  562. color:#0183FA;
  563. line-height:80rpx;
  564. margin:0 20rpx;
  565. }
  566. .content-box{
  567. margin:0 20rpx;
  568. background-color: #fff;
  569. border-radius:10rpx;
  570. padding:20rpx 20rpx 0 10rpx;
  571. .for-content-box:nth-child(1){
  572. padding-top:0;
  573. border-top:none;
  574. }
  575. .for-content-box{
  576. margin-bottom:20rpx;
  577. padding-top:30rpx;
  578. border-top:1px solid #dedede;
  579. .right-button{
  580. margin-top:8rpx;
  581. margin-left:20rpx;
  582. width:50rpx;
  583. height:50rpx;
  584. }
  585. }
  586. .sub-picker-box{
  587. display: flex;
  588. padding:10rpx;
  589. .mark-box{
  590. width:17rpx;
  591. color:red;
  592. margin-left:10rpx;
  593. height:60rpx;
  594. line-height:60rpx;
  595. margin-bottom:20rpx;
  596. }
  597. .title-box-1{
  598. width:100rpx;
  599. margin:0 10rpx;
  600. height:40rpx;
  601. line-height:40rpx;
  602. }
  603. .text-p-1{
  604. flex:1;
  605. height:40rpx;
  606. line-height:40rpx;
  607. display:block;
  608. overflow:hidden;
  609. text-overflow:ellipsis;
  610. white-space:nowrap;
  611. }
  612. .title-box{
  613. width:100rpx;
  614. margin:0 10rpx;
  615. height:60rpx;
  616. line-height:60rpx;
  617. }
  618. .text-p{
  619. flex:1;
  620. text-align: right;
  621. height:60rpx;
  622. line-height:60rpx;
  623. }
  624. .picker-box{
  625. height:60rpx;
  626. flex:1;
  627. border:1rpx solid #dedede;
  628. border-radius:10rpx;
  629. .picker-p{
  630. padding:0 20rpx;
  631. color:#666;
  632. line-height:60rpx;
  633. width:300rpx;
  634. display:block;
  635. overflow:hidden;
  636. text-overflow:ellipsis;
  637. white-space:nowrap;
  638. }
  639. .check-picker-p{
  640. }
  641. }
  642. .picker-text-box{
  643. width:400rpx;
  644. line-height:60rpx;
  645. }
  646. .reduction-button{
  647. width:60rpx;
  648. height:60rpx;
  649. border:1rpx solid #0183FA;
  650. color:#0183FA;
  651. text-align: center;
  652. font-size:30rpx;
  653. line-height:58rpx;
  654. border-radius:6rpx;
  655. font-size:34rpx;
  656. font-weight:700;
  657. }
  658. .input-p{
  659. width:140rpx;
  660. height:60rpx;
  661. height:60rpx;
  662. text-align: center;
  663. border:1rpx solid #dedede;
  664. border-radius:6rpx;
  665. margin:0 20rpx;
  666. }
  667. .add-button{
  668. width:60rpx;
  669. height:60rpx;
  670. border:1rpx solid #0183FA;
  671. color:#0183FA;
  672. text-align: center;
  673. font-size:30rpx;
  674. line-height:58rpx;
  675. border-radius:6rpx;
  676. font-size:34rpx;
  677. font-weight:700;
  678. }
  679. .unit-p{
  680. text-align: center;
  681. flex:1;
  682. height:62rpx;
  683. line-height:60rpx;
  684. font-size:30rpx;
  685. }
  686. .bt-button{
  687. margin-left:16rpx;
  688. padding:0 18rpx;
  689. height:60rpx;
  690. line-height:60rpx;
  691. border:1rpx solid #0183FA;
  692. color:#0183FA;
  693. font-size:26rpx;
  694. border-radius:6rpx;
  695. white-space:nowrap;
  696. }
  697. .bt-button-active{
  698. background-color:#0183FA;
  699. color:#fff;
  700. }
  701. .input-text-p{
  702. flex:1;
  703. height:185rpx;
  704. border:1rpx solid #dedede;
  705. border-radius:6rpx;
  706. padding:20rpx;
  707. margin-right:70rpx;
  708. margin-bottom:30rpx;
  709. }
  710. .explain-box{
  711. flex:1;
  712. height:32rpx;
  713. line-height:30rpx;
  714. font-size:28rpx;
  715. color:#999;
  716. }
  717. .img-list-box{
  718. display: flex;
  719. .for-img-box{
  720. position: relative;
  721. width:200rpx;
  722. height:200rpx;
  723. margin-left:18rpx;
  724. p{
  725. position: absolute;
  726. top:0;
  727. right:0;
  728. border-radius:50%;
  729. width:40rpx;
  730. height:40rpx;
  731. line-height:38rpx;
  732. text-align: center;
  733. color:#fff;
  734. background-color: #FF6A6A;
  735. }
  736. img{
  737. display: inline-block;
  738. width:200rpx;
  739. height:200rpx;
  740. }
  741. }
  742. }
  743. .img-up-p{
  744. width:200rpx;
  745. height:200rpx;
  746. margin-left:18rpx;
  747. line-height:200rpx;
  748. text-align: center;
  749. border:1rpx solid #999;
  750. border-radius:10rpx;
  751. color:#999;
  752. line-height:200rpx;
  753. font-size:50rpx;
  754. }
  755. }
  756. .bt-status-box{
  757. display:flex;
  758. align-items:center;
  759. padding:0 20rpx 16rpx 56rpx;
  760. .bt-status-text{
  761. flex:1;
  762. font-size:24rpx;
  763. color:#999;
  764. }
  765. .bt-cancel-text{
  766. font-size:24rpx;
  767. color:#FF6A6A;
  768. padding:0 10rpx;
  769. }
  770. }
  771. .add-item-button{
  772. width:588rpx;
  773. line-height:80rpx;
  774. height:80rpx;
  775. margin:0 50rpx 20rpx;
  776. background-color: #fff;
  777. border:1rpx solid #0183FA;
  778. color:#0183FA;
  779. font-size:30rpx;
  780. text-align: center;
  781. border-radius:6rpx;
  782. }
  783. }
  784. .submit-check-box{
  785. display: flex;
  786. padding:20rpx;
  787. img{
  788. width:40rpx;
  789. height:40rpx;
  790. margin:20rpx 20rpx 0 20rpx;
  791. }
  792. view{
  793. flex:1;
  794. line-height: 40rpx;
  795. color:#666;
  796. }
  797. .check-view{
  798. color:#0183FA !important;
  799. }
  800. }
  801. .submit-button{
  802. width:650rpx;
  803. line-height:80rpx;
  804. height:80rpx;
  805. margin:20rpx 50rpx 60rpx;
  806. background-color: #0183FA;
  807. color:#fff;
  808. font-size:30rpx;
  809. text-align: center;
  810. border-radius:6rpx;
  811. }
  812. .no-submit-button{
  813. background-color: #999 !important;
  814. }
  815. }
  816. </style>