task_detail_hy.vue 23 KB

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