task.vue 23 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006
  1. <template>
  2. <view class="container">
  3. <view class="detail-desc">
  4. <view class="d-header">
  5. <text>派车单</text>
  6. </view>
  7. <view class="c-list">
  8. <view class="c-row b-b">
  9. <text class="tit">出发地</text>
  10. <view class="con-list">
  11. <text>{{carInfo.startPlace}}</text>
  12. </view>
  13. </view>
  14. <view class="c-row b-b">
  15. <text class="tit">目的地</text>
  16. <view class="con-list">
  17. <text>{{carInfo.startInPlace}}</text>
  18. </view>
  19. </view>
  20. <view class="c-row b-b">
  21. <text class="tit">任务量</text>
  22. <view class="con-list">
  23. <text>{{numFilter(carInfo.num)}}</text>
  24. </view>
  25. </view>
  26. <view class="c-row b-b">
  27. <text class="tit">已发运量</text>
  28. <view class="con-list">
  29. <text>{{numFilter(carInfo.tranCount)}}</text>
  30. </view>
  31. </view>
  32. <view class="c-row b-b">
  33. <text class="tit">货名</text>
  34. <view class="con-list">
  35. <text>{{carInfo.goodsName}}</text>
  36. </view>
  37. </view>
  38. </view>
  39. <view class="d-header">
  40. <text>发运数据</text>
  41. </view>
  42. <view class="c-list">
  43. <view class="c-row b-b">
  44. <text class="tit">车号</text>
  45. <view class="con-list">
  46. <input placeholder="请填写车号" name="input" v-model="carNo" @input="carNoInput"></input>
  47. </view>
  48. </view>
  49. <view class="c-row b-b">
  50. <text class="tit">毛重(吨)</text>
  51. <view class="con-list">
  52. <input placeholder="请填写毛重" name="input" v-model="grossWeight" @input="grossWeightInput"></input>
  53. </view>
  54. </view>
  55. <view class="c-row b-b">
  56. <text class="tit">皮重(吨)</text>
  57. <view class="con-list">
  58. <input placeholder="请填写皮重" name="input" v-model="skinWeight" @input="skinWeightInput"></input>
  59. </view>
  60. </view>
  61. <view class="c-row b-b">
  62. <text class="tit">净重(自动计算)</text>
  63. <view class="con-list">
  64. <text>{{numFilter(netWeight)}}</text>
  65. </view>
  66. </view>
  67. <view class="cu-bar bg-white">
  68. <view class="action">
  69. 磅单照片
  70. </view>
  71. </view>
  72. <view class="cu-form-group">
  73. <view class="grid col-2 grid-square flex-sub">
  74. <view class="bg-img" v-if="poundImg != ''" @tap="ViewImage" :data-url="poundImg">
  75. <image :src="poundImg" mode="aspectFit"></image>
  76. <view class="cu-tag bg-red" @tap.stop="DelImg" :data-index="0">
  77. <text class='cuIcon-close'></text>
  78. </view>
  79. </view>
  80. <view class="solids" @tap="ChooseImagePound" v-if="poundImg == ''">
  81. <text class='cuIcon-cameraadd'></text>
  82. </view>
  83. </view>
  84. </view>
  85. </view>
  86. <view class="cu-modal" :class="modalName=='userModal'?'show':''" @tap="hideModal">
  87. <scroll-view scroll-y class="cu-dialog" :style="userStyle" @tap.stop="">
  88. <view class="cu-list menu text-center" >
  89. <view class="cu-item" v-for="(item,index) in userList" :key="index" @click="mygaipai(item.id)">
  90. <label class="flex justify-between align-center flex-sub">
  91. <view class="flex-sub">{{item.userName}}</view>
  92. </label>
  93. </view>
  94. </view>
  95. </scroll-view>
  96. </view>
  97. <view class="cu-modal" :class="modalName=='workModal'?'show':''" @tap="hideModal">
  98. <scroll-view scroll-y class="cu-dialog" :style="userStyle" @tap.stop="">
  99. <view class="cu-list menu text-center" >
  100. <view class="cu-item" v-for="(item,index) in fieldList" :key="index" @click="nextPerson2(item.id)">
  101. <label class="flex justify-between align-center flex-sub">
  102. <view class="flex-sub">{{item.userName}}</view>
  103. </label>
  104. </view>
  105. </view>
  106. </scroll-view>
  107. </view>
  108. <view v-if="taskStatus == 1" class="page-bottom">
  109. <view class="action-btn-group">
  110. <button type="primary" class=" action-btn no-border add-cart-btn" @click="finish">完成</button>
  111. <button type="primary" class=" action-btn no-border add-cart-btn" @click="gaipai">改派</button>
  112. </view>
  113. </view>
  114. <view class="cu-modal" :class="modalName=='inModal'?'show':''" @tap="hideModal">
  115. <scroll-view scroll-y class="cu-dialog" :style="userStyle" @tap.stop="">
  116. <view class="cu-list menu text-center" >
  117. <view class="cu-item" v-for="(item,index) in userList" :key="index" @click="selectInPerson(item)">
  118. <label class="flex justify-between align-center flex-sub">
  119. <view class="flex-sub">{{item.carNo}} ———— {{item.tranCount}}</view>
  120. </label>
  121. </view>
  122. </view>
  123. </scroll-view>
  124. </view>
  125. </view>
  126. </view>
  127. </template>
  128. <script>
  129. import uploadImage from '@/components/ossutil/uploadFile.js';
  130. import Handwriting from '@/components/ossutil/signature.js';
  131. import {
  132. mapState
  133. } from 'vuex';
  134. export default {
  135. data() {
  136. return {
  137. carInfo:[],
  138. trainImg:'',
  139. otherImg:'',
  140. grossWeight:'',
  141. skinWeight:'',
  142. fee:'',
  143. otherFee:'',
  144. carSkinNo:'',
  145. boxNo:'',
  146. taskStatus:'',
  147. userStyle:'',
  148. fieldList:[],
  149. modalName:'',
  150. modalfieldName:'',
  151. taskType:'',
  152. taskId:'',
  153. goodsValue:'',
  154. addNumStatus:false,
  155. wechatNo:'',
  156. lineColor:'black',
  157. slideValue:50,
  158. handwriting:'',
  159. selectColor:'black',
  160. color:'',
  161. insuranceFee:'',
  162. rentboxFee:'',
  163. loadingFee:'',
  164. userList:[],
  165. inPersonName:'',
  166. carlist:[],
  167. suttleWeight2:'',
  168. taskInfo:[],
  169. poundImg:'',
  170. grossWeight:'',
  171. skinWeight:'',
  172. netWeight:'',
  173. carNo:'',
  174. taskStatus:'',
  175. userStyle:'',
  176. modalName:'',
  177. taskType:'',
  178. taskId:'',
  179. boxImg:'',
  180. boxNoImg:'',
  181. titleNoImg:'',
  182. titleNo:'',
  183. nextUserId:''
  184. };
  185. },
  186. computed: {
  187. ...mapState(['hasLogin','userInfo']),
  188. suttleWeight(){
  189. let num=0
  190. if(this.carlist.length>0){
  191. for(var i=0;i<this.carlist.length;i++){
  192. num=Number(num+Number(this.carlist[i].count))
  193. }
  194. }else{
  195. num=this.suttleWeight2
  196. }
  197. return num
  198. }
  199. },
  200. onShow() {
  201. },
  202. onLoad(options) {
  203. const that = this
  204. this.taskId = options.taskId
  205. this.taskType = options.taskType
  206. this.taskStatus = options.taskStatus
  207. uni.showLoading({
  208. title: '正在加载'
  209. })
  210. that.$api.request('tran', 'getTrainDetailInfo', {
  211. id: options.taskId
  212. }, failres => {
  213. that.$api.msg(failres.errmsg)
  214. uni.hideLoading()
  215. }).then(res => {
  216. that.carInfo = res.data
  217. console.log(that.carInfo)
  218. // that.inPersonName = res.data.receiver
  219. that.fee = that.carInfo.fee
  220. that.carNo = that.carInfo.carNos
  221. that.grossWeight = that.carInfo.grossWeight
  222. that.skinWeight=that.carInfo.skinWeight
  223. that.netWeight=that.carInfo.netWeight
  224. that.poundImg= that.carInfo.poundImg
  225. uni.hideLoading()
  226. })
  227. },
  228. onReady(){
  229. },
  230. methods: {
  231. ChooseImageBox() {
  232. var that = this
  233. uni.chooseImage({
  234. count: 1, //默认9
  235. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  236. sourceType: ['album','camera'], //从相册选择
  237. success: (res) => {
  238. //上传图片
  239. //图片路径可自行修改
  240. uploadImage(res.tempFilePaths[0], 'boxImg/',
  241. result => {
  242. that.boxImg = result
  243. uni.hideLoading();
  244. }
  245. )
  246. }
  247. });
  248. },
  249. ChooseImageBoxNo() {
  250. var that = this
  251. uni.chooseImage({
  252. count: 1, //默认9
  253. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  254. sourceType: ['album','camera'], //从相册选择
  255. success: (res) => {
  256. //上传图片
  257. //图片路径可自行修改
  258. uploadImage(res.tempFilePaths[0], 'boxNoImg/',
  259. result => {
  260. that.boxNoImg = result
  261. uni.hideLoading();
  262. }
  263. )
  264. }
  265. });
  266. },
  267. nextPerson2(id){
  268. var that = this
  269. that.$api.request('tran', 'finishTrainCarInfo', {
  270. taskId:that.taskId,
  271. grossWeight:!that.grossWeight?'':that.grossWeight,
  272. skinWeight:!that.skinWeight?'':that.skinWeight,
  273. netWeight:!that.netWeight?'':that.netWeight,
  274. poundImg:!that.poundImg?'':that.poundImg,
  275. carNo:!that.carNo?'':that.carNo,
  276. nextUserId: id
  277. }, failres => {
  278. that.$api.msg(failres.errmsg)
  279. uni.hideLoading()
  280. }).then(res => {
  281. uni.hideLoading()
  282. that.$api.msg('完成成功')
  283. setTimeout(()=>{uni.navigateBack({})},1000);
  284. })
  285. },
  286. ChooseImageTitleNo() {
  287. var that = this
  288. uni.chooseImage({
  289. count: 1, //默认9
  290. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  291. sourceType: ['album','camera'], //从相册选择
  292. success: (res) => {
  293. //上传图片
  294. //图片路径可自行修改
  295. uploadImage(res.tempFilePaths[0], 'titleNoImg/',
  296. result => {
  297. that.titleNoImg = result
  298. uni.hideLoading();
  299. }
  300. )
  301. }
  302. });
  303. },
  304. hideModal(e) {
  305. this.modalName = null
  306. },
  307. ViewImage(e) {
  308. var img = [];
  309. img = e.currentTarget.dataset.url.split(' ')
  310. uni.previewImage({
  311. current:0,
  312. urls: img
  313. });
  314. },
  315. DelImg(e) {
  316. uni.showModal({
  317. title: '提示',
  318. content: '确定要删除该照片吗?',
  319. cancelText: '取消',
  320. confirmText: '确定',
  321. success: res => {
  322. if (res.confirm) {
  323. if(e.currentTarget.dataset.index == 0){
  324. this.poundImg = "";
  325. }
  326. else if(e.currentTarget.dataset.index == 1){
  327. this.boxImg = "";
  328. }
  329. else if(e.currentTarget.dataset.index == 2){
  330. this.boxNoImg = "";
  331. }
  332. else if(e.currentTarget.dataset.index == 3){
  333. this.titleNoImg = "";
  334. }
  335. }
  336. }
  337. })
  338. },
  339. ChooseImagePound() {
  340. uni.chooseImage({
  341. count: 1, //默认9
  342. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  343. sourceType: ['album','camera'], //从相册选择
  344. success: (res) => {
  345. //上传图片
  346. //图片路径可自行修改
  347. uploadImage(res.tempFilePaths[0], 'poundImg/',
  348. result => {
  349. this.poundImg = result
  350. uni.hideLoading();
  351. }
  352. )
  353. }
  354. });
  355. },
  356. grossWeightInput(e) {
  357. this.grossWeight = e.detail.value
  358. if(this.grossWeight && this.skinWeight){
  359. this.netWeight = this.grossWeight - this.skinWeight
  360. }
  361. },
  362. skinWeightInput(e) {
  363. this.skinWeight = e.detail.value
  364. if(this.grossWeight && this.skinWeight){
  365. this.netWeight = this.grossWeight - this.skinWeight
  366. }
  367. },
  368. carNoInput(e) {
  369. this.carNo = e.detail.value
  370. },
  371. boxNoInput(e) {
  372. this.boxNo = e.detail.value
  373. },
  374. titleNoInput(e) {
  375. this.titleNo = e.detail.value
  376. },
  377. finish(){
  378. const that = this
  379. if(!that.grossWeight){
  380. this.$api.msg('请填写毛重');
  381. return;
  382. }
  383. if(!that.skinWeight){
  384. this.$api.msg('请填写皮重');
  385. return;
  386. }
  387. if(!that.carNo){
  388. this.$api.msg('请填写车牌号');
  389. return;
  390. }
  391. if(!that.poundImg){
  392. this.$api.msg('请上传磅单照片');
  393. return;
  394. }
  395. uni.showModal({
  396. title: '温馨提示',
  397. content: '是否指派外勤继续完成发运任务',
  398. confirmText:"是",
  399. cancelText:"否",
  400. success: function (res) {
  401. if (res.confirm) {
  402. uni.showLoading({
  403. title: '正在加载'
  404. })
  405. that.$api.request('user', 'getUserList', {
  406. role:'外勤'
  407. }, failres => {
  408. that.$api.msg(failres.errmsg)
  409. uni.hideLoading()
  410. }).then(res => {
  411. that.fieldList = res.data
  412. if(that.fieldList.length == 0){
  413. that.$api.msg('暂无外勤信息')
  414. }
  415. else{
  416. var height = that.fieldList.length * 100
  417. var width = 500
  418. that.userStyle = "height:"+height+"rpx;width:" + width+"rpx"
  419. that.modalName = 'workModal'
  420. }
  421. uni.hideLoading()
  422. })
  423. } else if (res.cancel) {
  424. uni.showLoading({
  425. title: '正在加载'
  426. })
  427. that.$api.request('tran', 'finishTrainCarInfo', {
  428. taskId: that.taskId,
  429. grossWeight:!that.grossWeight?'':that.grossWeight,
  430. skinWeight:!that.skinWeight?'':that.skinWeight,
  431. netWeight:!that.netWeight?'':that.netWeight,
  432. poundImg:!that.poundImg?'':that.poundImg,
  433. carNo:!that.carNo?'':that.carNo,
  434. nextUserId: -1
  435. }, failres => {
  436. that.$api.msg(failres.errmsg)
  437. uni.hideLoading()
  438. }).then(res => {
  439. uni.hideLoading()
  440. that.$api.msg('完成成功')
  441. setTimeout(()=>{uni.navigateBack({})},1000);
  442. })
  443. }
  444. }
  445. });
  446. },
  447. priceInput(e){
  448. this.price = e.detail.value
  449. },
  450. otherPriceInput(e){
  451. this.otherPrice = e.detail.value
  452. },
  453. insuranceFeeInput(e){
  454. this.insuranceFee = e.detail.value
  455. },
  456. netWeightInput(e){
  457. this.netWeight = e.detail.value
  458. },
  459. carNoInput(e){
  460. this.carNo = e.detail.value
  461. },
  462. rentboxFeeInput(e){
  463. this.rentboxFee = e.detail.value
  464. },
  465. loadingFeeInput(e){
  466. this.loadingFee = e.detail.value
  467. },
  468. boxNoInput(e){
  469. this.boxNo = e.detail.value
  470. },
  471. numFilter (value) {
  472. if(!value){
  473. return 0
  474. }
  475. // 截取当前数据到小数点后两位
  476. let realVal = parseFloat(value).toFixed(2)
  477. return realVal
  478. },
  479. carInput(item,e){
  480. if(item.count>item.tranCount){
  481. uni.showToast({
  482. title: `当前车辆可载吨数为${item.tranCount},请不要超过`,
  483. icon:'none',
  484. duration: 2000
  485. })
  486. item.count = 0
  487. }else{
  488. item.count = e.detail.value
  489. }
  490. },
  491. selectInPerson(item){
  492. if(JSON.stringify(this.carlist).indexOf(JSON.stringify(item.id))==-1){
  493. this.carlist.push(item)
  494. }else{
  495. for(var i=0;i<this.carlist.length;i++){
  496. if(this.carlist[i].id==item.id){
  497. this.carlist[i].count=item.count
  498. }
  499. }
  500. }
  501. this.modalName = null
  502. },
  503. ChooseSignImage() {
  504. this.handwriting = new Handwriting({
  505. lineColor: this.lineColor,
  506. slideValue: this.slideValue, // 0, 25, 50, 75, 100
  507. canvasName: 'handWriting',
  508. })
  509. this.showAutograph = true
  510. },
  511. uploadScaleStart(event){
  512. this.handwriting.uploadScaleStart(event)
  513. },
  514. uploadScaleMove(event){
  515. this.handwriting.uploadScaleMove(event)
  516. },
  517. uploadScaleEnd(event){
  518. this.handwriting.uploadScaleEnd(event)
  519. },
  520. retDraw() {
  521. this.handwriting.retDraw()
  522. },
  523. hideModal(e) {
  524. this.modalName = null
  525. },
  526. ViewImage(e) {
  527. var img = [];
  528. img = e.currentTarget.dataset.url.split(' ')
  529. uni.previewImage({
  530. current:0,
  531. urls: img
  532. });
  533. },
  534. selectPerson(){
  535. const that = this
  536. uni.showLoading({
  537. title: '正在加载'
  538. })
  539. that.$api.request('tran', 'getCarList', {
  540. tranNo:that.carInfo.tranNo,
  541. taskId:that.taskId
  542. }, failres => {
  543. that.$api.msg(failres.errmsg)
  544. uni.hideLoading()
  545. }).then(res => {
  546. for(var i=0;i<res.data.length;i++){
  547. console.log(res.data[i].tranCount)
  548. res.data[i].count = res.data[i].tranCount
  549. }
  550. that.userList = res.data
  551. if(that.userList.length == 0){
  552. that.$api.msg('暂无汽车号')
  553. }
  554. else{
  555. var height = that.userList.length * 100
  556. var width = 500
  557. that.userStyle = "height:"+height+"rpx;width:" + width+"rpx"
  558. that.modalName = 'inModal'
  559. }
  560. uni.hideLoading()
  561. })
  562. },
  563. DelImg(e) {
  564. uni.showModal({
  565. title: '提示',
  566. content: '确定要删除该照片吗?',
  567. cancelText: '取消',
  568. confirmText: '确定',
  569. success: res => {
  570. if (res.confirm) {
  571. if(e.currentTarget.dataset.index == 0){
  572. this.trainImg = "";
  573. }
  574. else if(e.currentTarget.dataset.index == 1){
  575. this.otherImg = "";
  576. }
  577. }
  578. }
  579. })
  580. },
  581. ChooseImage() {
  582. uni.chooseImage({
  583. count: 1, //默认9
  584. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  585. sourceType: ['album','camera'], //从相册选择
  586. success: (res) => {
  587. //上传图片
  588. //图片路径可自行修改
  589. uploadImage(res.tempFilePaths[0], 'trainImg/',
  590. result => {
  591. this.trainImg = result
  592. uni.hideLoading();
  593. }
  594. )
  595. }
  596. });
  597. },
  598. ChooseImageOther() {
  599. uni.chooseImage({
  600. count: 1, //默认9
  601. sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
  602. sourceType: ['album','camera'], //从相册选择
  603. success: (res) => {
  604. //上传图片
  605. //图片路径可自行修改
  606. uploadImage(res.tempFilePaths[0], 'otherImg/',
  607. result => {
  608. this.otherImg = result
  609. uni.hideLoading();
  610. }
  611. )
  612. }
  613. });
  614. },
  615. goodsValueInput(e){
  616. this.goodsValue = e.detail.value
  617. },
  618. numInput(e){
  619. this.addNum = e.detail.value
  620. },
  621. wechatNoInput(e) {
  622. this.wechatNo = e.detail.value
  623. },
  624. gaipai(){
  625. console.log(1111)
  626. const that = this
  627. uni.showLoading({
  628. title: '正在加载'
  629. })
  630. that.$api.request('user', 'getUserList', {
  631. role:'外勤'
  632. }, failres => {
  633. that.$api.msg(failres.errmsg)
  634. uni.hideLoading()
  635. }).then(res => {
  636. that.userList = res.data
  637. if(that.userList.length == 0){
  638. that.$api.msg('暂无外勤信息')
  639. }
  640. else{
  641. var height = that.userList.length * 100
  642. var width = 500
  643. that.userStyle = "height:"+height+"rpx;width:" + width+"rpx"
  644. that.modalName = 'userModal'
  645. }
  646. uni.hideLoading()
  647. })
  648. },
  649. mygaipai(id){
  650. this.nextUserId=id
  651. var that = this
  652. that.$api.request('tran', 'gaipai',{
  653. taskId: that.taskId,
  654. outPersonId:id,
  655. taskType:that.taskType
  656. },failres => {
  657. that.$api.msg(failres.errmsg)
  658. that.modalName = null
  659. uni.hideLoading()
  660. }).then(res => {
  661. that.modalName = null
  662. uni.navigateBack({
  663. delta: 2
  664. })
  665. uni.hideLoading()
  666. })
  667. },
  668. },
  669. }
  670. </script>
  671. <style lang='scss' scoped="true">
  672. .container{
  673. padding-bottom: 160upx;
  674. }
  675. .carwrap{
  676. font-size:20rpx;
  677. }
  678. .detail-desc {
  679. background: #fff;
  680. margin-top: 16upx;
  681. width: 750upx;
  682. .d-header {
  683. display: flex;
  684. justify-content: center;
  685. align-items: center;
  686. height: 80upx;
  687. font-size: $font-base + 2upx;
  688. color: $font-color-dark;
  689. position: relative;
  690. text {
  691. padding: 0 20upx;
  692. background: #fff;
  693. position: relative;
  694. z-index: 1;
  695. }
  696. &:after {
  697. position: absolute;
  698. left: 50%;
  699. top: 50%;
  700. transform: translateX(-50%);
  701. width: 300upx;
  702. height: 0;
  703. content: '';
  704. border-bottom: 1px solid #ccc;
  705. }
  706. }
  707. }
  708. .carwrap{
  709. display: flex;
  710. justify-content: space-between;
  711. padding: 10px 40px;
  712. border-bottom:1px solid #f0f0f0;
  713. }
  714. .trancount{
  715. display: inline-block;
  716. vertical-align: middle;
  717. text-align: right;
  718. width: 100rpx;
  719. }
  720. .c-list {
  721. font-size: $font-sm + 2upx;
  722. color: $font-color-base;
  723. background: #fff;
  724. .c-row {
  725. display: flex;
  726. align-items: center;
  727. padding: 20upx 30upx;
  728. position: relative;
  729. }
  730. .tit {
  731. width: 220upx;
  732. }
  733. .con {
  734. flex: 1;
  735. color: $font-color-dark;
  736. .selected-text {
  737. margin-right: 10upx;
  738. }
  739. }
  740. .bz-list {
  741. height: 40upx;
  742. font-size: $font-sm+2upx;
  743. color: $font-color-dark;
  744. text {
  745. display: inline-block;
  746. margin-right: 30upx;
  747. }
  748. }
  749. .con-list {
  750. flex: 1;
  751. display: flex;
  752. flex-direction: column;
  753. color: $font-color-dark;
  754. line-height: 40upx;
  755. text-align: right;
  756. padding-right: 20upx;
  757. }
  758. .red {
  759. color: $uni-color-primary;
  760. }
  761. }
  762. /* 底部操作菜单 */
  763. .page-bottom {
  764. position: fixed;
  765. left: 30upx;
  766. bottom: 30upx;
  767. z-index: 95;
  768. display: flex;
  769. justify-content: center;
  770. align-items: center;
  771. width: 690upx;
  772. height: 100upx;
  773. background: rgba(255, 255, 255, .9);
  774. box-shadow: 0 0 20upx 0 rgba(0, 0, 0, .5);
  775. border-radius: 16upx;
  776. .p-b-btn {
  777. display: flex;
  778. flex-direction: column;
  779. align-items: center;
  780. justify-content: center;
  781. font-size: $font-sm;
  782. color: $font-color-base;
  783. width: 96upx;
  784. height: 80upx;
  785. .yticon {
  786. font-size: 40upx;
  787. line-height: 48upx;
  788. color: $font-color-light;
  789. }
  790. &.active,
  791. &.active .yticon {
  792. color: $uni-color-primary;
  793. }
  794. .icon-fenxiang2 {
  795. font-size: 42upx;
  796. transform: translateY(-2upx);
  797. }
  798. .icon-shoucang {
  799. font-size: 46upx;
  800. }
  801. }
  802. }
  803. @mixin playcenter {
  804. display: flex;
  805. align-items: center;
  806. justify-content: center;
  807. }
  808. .xsh-start {
  809. width: 105rpx;
  810. height: 105rpx;
  811. background: #FFFFFF;
  812. border-radius: 50%;
  813. font-size: 29rpx;
  814. color: #4135EB;
  815. @include playcenter;
  816. flex-wrap: wrap;
  817. }
  818. .x-modal {
  819. width: 100%;
  820. .x-m-title {
  821. width: 100%;
  822. height: 90rpx;
  823. padding: 0 38rpx 0 31rpx;
  824. box-sizing: border-box;
  825. font-size: 29rpx;
  826. color: #333333;
  827. border-bottom: 1px dashed #999;
  828. @include playcenter;
  829. justify-content: space-between;
  830. .xm-t-clear {
  831. font-size: 25rpx;
  832. color: #341DB7;
  833. @include playcenter;
  834. >image {
  835. width: 28rpx;
  836. height: 28rpx;
  837. display: block;
  838. margin-right: 8rpx;
  839. }
  840. }
  841. }
  842. .x-m-con {
  843. width: 100%;
  844. padding: 0 31rpx 18rpx;
  845. margin-top: 5rpx;
  846. box-sizing: border-box;
  847. }
  848. }
  849. .wrapper {
  850. width: 100%;
  851. height: 100%;
  852. margin: 30upx 0;
  853. overflow: hidden;
  854. display: flex;
  855. align-content: center;
  856. flex-direction: column;
  857. justify-content: center;
  858. font-size: 28upx;
  859. }
  860. .handWriting {
  861. background: #fff;
  862. width: 100%;
  863. height: 350upx;
  864. }
  865. .handRight {
  866. align-items: center;
  867. }
  868. .handCenter {
  869. border: 4upx dashed #e9e9e9;
  870. flex: 5;
  871. overflow: hidden;
  872. box-sizing: border-box;
  873. width: 90%;
  874. margin: 0 auto;
  875. }
  876. .handTitle {
  877. flex: 1;
  878. color: #666;
  879. justify-content: center;
  880. font-size: 30upx;
  881. }
  882. .handBtn {
  883. flex-direction: column;
  884. padding: 40upx 20upx;
  885. }
  886. .buttons{
  887. width: 100%;
  888. margin-top: 20upx;
  889. justify-content: space-between;
  890. }
  891. .buttons>button{
  892. font-size: 30upx;
  893. height: 80upx;
  894. }
  895. .delBtn {
  896. background: #23df02;
  897. color: #fff;
  898. }
  899. .color{
  900. align-items: center;
  901. }
  902. .color>text{
  903. margin-right: 20upx;
  904. }
  905. .subBtn {
  906. background: #008ef6;
  907. color: #fff;
  908. text-align: center;
  909. justify-content: center;
  910. }
  911. .black-select {
  912. width: 60upx;
  913. height: 60upx;
  914. }
  915. .black-select.color_select {
  916. width: 90upx;
  917. height: 90upx;
  918. }
  919. .red-select {
  920. width: 60upx;
  921. height: 60upx;
  922. }
  923. .red-select.color_select {
  924. width: 90upx;
  925. height: 90upx;
  926. }
  927. .slide-wrapper {
  928. align-items: center;
  929. margin-bottom: 20upx;
  930. }
  931. .slider{
  932. width: 400upx;
  933. padding-left: 20upx;
  934. }
  935. .drop {
  936. width: 50upx;
  937. height: 50upx;
  938. border-radius: 50%;
  939. background: #FFF;
  940. position: absolute;
  941. left: 0upx;
  942. top: -10upx;
  943. box-shadow: 0px 1px 5px #888888;
  944. }
  945. .slide {
  946. width: 250upx;
  947. height: 30upx;
  948. }
  949. .showimg{
  950. border: 4upx solid #e9e9e9;
  951. overflow: hidden;
  952. width: 90%;
  953. margin: 0 auto;
  954. background: #eee;
  955. height: 350upx;
  956. margin-top: 40upx;
  957. align-items: center;
  958. justify-content: center;
  959. }
  960. .showimg>image{
  961. width: 100%;
  962. height: 100%;
  963. }
  964. .showimg>text{
  965. font-size: 40upx;
  966. color: #888;
  967. }
  968. .indexFixed{
  969. position: fixed;
  970. left:0;
  971. bottom:0;
  972. right:0;
  973. }
  974. </style>