tmsList.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
  6. <title>Hello APP</title>
  7. <link rel="stylesheet" type="text/css" href="../../../../../css/api.css" />
  8. <link rel="stylesheet" type="text/css" href="../../../../../css/aui-win.css" />
  9. <link rel="stylesheet" type="text/css" href="../../../../../css/css/vant-ui.css" />
  10. <link rel="stylesheet" type="text/css" href="../../../../../css/css/iconfont.css">
  11. <script src="../../../../../script/js/vue.js"></script>
  12. <script src="../../../../../script/js/vant-ui.js"></script>
  13. <script src="../../../../../script/js/auto-size.js"></script>
  14. <script src="../../../js/moment.js"></script>
  15. <style>
  16. .flex{
  17. display: flex;
  18. }
  19. #app{
  20. /*width: 100%;
  21. height: 100%*/
  22. }
  23. #aui-header{
  24. background: linear-gradient(to right,#1474E4,#14A7E4);
  25. justify-content: space-between;
  26. align-items: center;
  27. }
  28. .header-search{
  29. flex-grow: 1;
  30. }
  31. .image-icon{
  32. width: .66rem;
  33. height: .66rem;
  34. margin-right: 19px;
  35. }
  36. .image-icon1{
  37. width: .34rem;
  38. height: .34rem;
  39. margin-right: 19px;
  40. flex-shrink: 0;
  41. background: #ffffff;
  42. border: 3px solid rgba(255,255,255,.4);
  43. }
  44. img{
  45. width: 100%;
  46. height: auto;
  47. }
  48. .filters-container{
  49. background: linear-gradient(to right,#1474E4,#14A7E4);
  50. }
  51. .filters-item{
  52. padding: 16px 0;
  53. color: #ffffff;
  54. text-align: center;
  55. }
  56. .selected{
  57. background: #ffffff;
  58. color: #1474E4;
  59. }
  60. #scrollcontaier{
  61. overflow-y: auto;
  62. }
  63. .list-item{
  64. box-sizing: border-box;
  65. width: 10.1rem;
  66. background: #ffffff;
  67. margin: 0.36rem auto 0;
  68. border-radius: 0.08rem;
  69. padding: .4rem;
  70. }
  71. .list-item-row{
  72. justify-content: space-between;
  73. margin: .3rem 0;
  74. }
  75. .centerText{
  76. text-align: center;
  77. }
  78. .bgArrow{
  79. /*::after
  80. content: "";
  81. display: inline-block;
  82. width: 100%;
  83. height: 100%;*/
  84. color: #1474E4;
  85. background: url("../../../../../image/icon/zhixiang.png") no-repeat 0 bottom;
  86. background-size: 100% auto;
  87. }
  88. .grayColor{
  89. color: #888888;
  90. color: .36rem;
  91. }
  92. .boldText{
  93. font-weight: bold;
  94. }
  95. .verText{
  96. align-items: center;
  97. }
  98. .confirm-btn-container{
  99. justify-content: center;
  100. }
  101. .confirm-btn{
  102. background: linear-gradient(to right, #F09623, #FFCF4C);
  103. padding: 0 1.18rem;
  104. height: .96rem;
  105. line-height: .96rem;
  106. border-radius: .48rem;
  107. color: #ffffff;
  108. }
  109. .vbeln-container{
  110. justify-content: flex-start;
  111. }
  112. .vbeln-container span:nth-of-type(1){
  113. display: inline-block;
  114. flex-grow: 1;
  115. flex-shrink: 0;
  116. }
  117. .vbeln-container span:nth-of-type(2){
  118. flex-grow: 0;
  119. }
  120. .vbeln-container-hide{
  121. overflow: hidden;
  122. }
  123. .vbeln-container-hide span:nth-of-type(2){
  124. flex-grow: 0;
  125. text-overflow: ellipsis;
  126. white-space: nowrap;
  127. }
  128. </style>
  129. </head>
  130. <style>
  131. </style>
  132. <body>
  133. <div id="app">
  134. <header class="flex flex-between" id="aui-header">
  135. <van-search class="header-search" v-model="searchVvalue" placeholder="请输入搜索关键词" shape="round" background="transparent" @search="handleSearch"></van-search>
  136. <div class="image-icon"><img src="../../../../../image/icon/zhiyinshuoming.png" alt=""></div>
  137. </header>
  138. <van-dropdown-menu class="filters-container" active-color="#1474E4" id="dropmenu" ref="dropmenu">
  139. <van-dropdown-item title="送货地址" v-model="addressValue" :options="addressList" @change="handleChangeAddress"></van-dropdown-item>
  140. <van-dropdown-item title="签收状态" v-model="statusValue" :options="statusList" @change="handleChangeStatus"></van-dropdown-item>
  141. <van-dropdown-item title="出厂电签日期" ref="dateDrop" @open="handleClickDrop"></van-dropdown-item>
  142. </van-dropdown-menu>
  143. <van-calendar color="#1474E4" v-model="dateShow" type="range" @confirm="onConfirm" ></van-calendar>
  144. <div id="scrollcontaier" ref="scrollcontaier">
  145. <div class="list-container">
  146. <div class="list-item" v-for="(item,index) in dataList" :key="item.tknum">
  147. <div class="list-item-row flex"><div><span>装运凭证:</span><span>{{item.tknum}}</span></div><div class="verText flex"><span>详情</span><van-icon name="arrow" /></div></div>
  148. <van-row class="list-item-row " gutter="20">
  149. <van-col class="centerText" span="8"><span class="boldText">{{item.routeStart}}</span><span class="grayColor">{{item.routeStart}}</span></van-col>
  150. <van-col class="centerText bgArrow" span="8"><span>{{item.statusName}}</span></van-col>
  151. <van-col class="centerText" span="8"><span class="boldText">{{item.routeEnd}}</span><span class="grayColor">{{item.kunnrAddr}}</span></van-col>
  152. </van-row>
  153. <div class="list-item-row flex">
  154. <div class="flex vbeln-container " :class="item.show?'':'vbeln-container-hide'">
  155. <span >交运单号:</span>
  156. <span :ref="'vbeln'+index">{{item.vbelnList | vbelnListFilters}}</span>
  157. </div>
  158. <div v-show="!item.show" class="image-icon1" @click="handleShowText(item)"><img src="../../../../../image/icon/more.png" alt=""></div>
  159. </div>
  160. <div class="list-item-row"><div><span>车牌号:</span><span>{{item.busNumber}}</span></div></div>
  161. <div class="list-item-row"><div><span>装运条数:</span><span>100条</span></div></div>
  162. <van-divider ></van-divider>
  163. <div class="list-item-row confirm-btn-container flex"><div><span class="confirm-btn" @click="handleGo">签收</span></div></div>
  164. </div>
  165. </div>
  166. </div>
  167. </div>
  168. </body>
  169. <script type="text/javascript" src="../../../../../script/api.js"></script>
  170. <link rel="stylesheet" href="../../../../../script/mescroll/mescroll.min.css">
  171. <script type="text/javascript" src="../../../../../script/mescroll/mescroll.min.js"></script>
  172. <script type="text/javascript" src="../../../js/httpRequest_sub.js"></script>
  173. <script type="text/javascript" src="../../../js/vue_plugins_sub.js"></script>
  174. <!-- <script src="../../../../../script/js/auto-size.js"></script> -->
  175. <script type="text/javascript">
  176. function closeWin() {
  177. api.closeWin({
  178. });
  179. }
  180. apiready = function() {
  181. api.parseTapmode();
  182. var header = $api.byId('aui-header');
  183. $api.fixStatusBar(header);
  184. var headerPos = $api.offset(header);
  185. var body_h = $api.offset($api.dom('body')).h;
  186. document.getElementById("scrollcontaier").style.height = $api.offset($api.dom('body')).h - headerPos.h - 34 - 48 + "px";//顶部的搜索框34 ,筛选部分48
  187. new Vue({
  188. el: '#app',
  189. data: {
  190. token: $api.getStorage('loginToken'),
  191. dataList: [],
  192. frist: 1,
  193. searchVvalue:'',
  194. tabActive: -1,
  195. tabPopupShow: false,
  196. chosenId: "1",
  197. addressValue: "-1",
  198. addressList: [{
  199. value: '-1',
  200. text: '全部'
  201. }],
  202. statusValue: "-1",
  203. statusList: [{
  204. value: '-1',
  205. text: '全部',
  206. isDefault: true
  207. },{
  208. value: '0',
  209. text: '签收',
  210. },
  211. {
  212. value: '1',
  213. text: '未签收',
  214. }],
  215. dateValue: "0",
  216. dateShow: false,
  217. startDate: "",
  218. endDate: "",
  219. currentPage: 1,
  220. pageSize: 10,
  221. totalPages: 0
  222. },
  223. mounted: function() {
  224. this.handleGetAddress();
  225. this.handleGetSignOrder();
  226. },
  227. methods:{
  228. configs : function(){
  229. var _this = this;
  230. this.frist = 2;
  231. this.configDownAndPull("scrollcontaier", function(mescroll) {
  232. _this.currentPage = 1;
  233. _this.handleGetSignOrder(mescroll);
  234. }, function(mescroll) {
  235. if (_this.currentPage < _this.totalPages) {
  236. _this.currentPage = _this.currentPage + 1;
  237. _this.handleGetSignOrder(mescroll, 1);
  238. } else {
  239. mescroll.endSuccess(_this.pageSize, false);
  240. }
  241. })
  242. },
  243. // 获取用户地址信息
  244. handleGetAddress: function(){
  245. var _this = this;
  246. api.ajax({
  247. url: 'https://b2bcnapi.sailuntire.com/api/test/b2bapi/action/api/b2bapp/agent/getEmployeeAgentByUserId.xhtml',
  248. method: 'post',
  249. data: {
  250. // this.token
  251. values: {
  252. loginToken : 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjcmVhdGV0aW1lIjoiMjAyMC0xMS0yMyAxMTozODoxOCIsImlkIjoiYXBwXzgzIiwidGVsIjoiMTg3NjU5MjUzMzQiLCJyZWFsTmFtZSI6IuWRqOi-iSIsImxvZ2luVHlwZSI6IjkifQ.WvlIkvm_Gu00QRKBNfgR1Fd2gcbcthIyVk9wW0pQzeI'
  253. }
  254. }
  255. },function(ret, err){
  256. if (ret) {
  257. if(ret.code==1){
  258. for(var i=0;i<ret.data.length;i++){
  259. ret.data[i].text = ret.data[i].address;
  260. ret.data[i].value = ret.data[i].delivery;
  261. };
  262. _this.addressList = ret.data;
  263. _this.addressList.unshift({
  264. value: '-1',
  265. text: '全部'
  266. });
  267. }else{
  268. _this.showToast(ret.message);
  269. }
  270. } else {
  271. _this.showToast(ret.message);
  272. }
  273. });
  274. },
  275. // 获取签收单据的主表信息
  276. handleGetSignOrder: function(mescroll){
  277. var data = {
  278. //this.token
  279. "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyZWFsTmFtZSI6IuWRqOi-iSIsImNyZWF0ZXRpbWUiOiIyMDIwLTEyLTE5IDIxOjI5OjQ2IiwibG9naW5UeXBlIjoiOSIsInRlbCI6IjE4NzY1OTI1MzM0IiwiaWQiOiJhcHBfODMifQ.NZdADXneFoHNCIbcNZS_MwUPfM_NpbYS_8hXO8eDs_Q",//--app登录信息
  280. "tknum": this.searchVvalue,//--装运凭证
  281. "kunnrWe": this.addressValue=="-1"?"":this.addressValue,//--送达方编号
  282. "status": this.statusValue,//-- 0已签收;1未签收;-1全部
  283. "leaveDateStart": this.startDate,//--开始时间
  284. "leaveDateEnd": this.endDate,//--结束时间
  285. "page": this.currentPage,//--开始的页数
  286. "pageSize": this.pageSize,//--每页显示的数量
  287. url : 'json',
  288. type : 'body'
  289. }, _this = this;
  290. _this.$post("signOrderOfHead", data, function(ret) {
  291. if(ret.code==1||ret.code=="1"){
  292. _this.dataList = ret.data.data;
  293. _this.totalPages = ret.data.pageCount%_this.pageSize==0?ret.data.pageCount%ret.data.pageCount/_this.pageSize:Math.ceil(ret.data.pageCount/_this.pageSize);
  294. if (mescroll) {
  295. mescroll.endSuccess(_this.pageSize, true);
  296. }
  297. if(_this.frist == 1){
  298. _this.$nextTick(function(){
  299. _this.configs();
  300. })
  301. }
  302. }
  303. })
  304. },
  305. handleClickTab: function(v){
  306. this.tabActive = v;
  307. this.tabPopupShow = true;
  308. },
  309. handlePopupShow: function(){
  310. this.tabActive = -1;
  311. this.tabPopupShow = false;
  312. },
  313. handleClickDrop: function(){
  314. this.dateShow = true;
  315. },
  316. handleChangeAddress: function(v){
  317. this.handleGetSignOrder();
  318. },
  319. handleChangeStatus: function(){
  320. this.handleGetSignOrder();
  321. },
  322. handleSearch: function(){
  323. this.handleGetSignOrder();
  324. },
  325. onConfirm: function(v){
  326. this.dateShow = false;
  327. var arr = v.splice(",");
  328. var startDate = moment(arr[0]).format('YYYY-MM-DD');
  329. var endDate = moment(arr[1]).format('YYYY-MM-DD');
  330. this.startDate = startDate;
  331. this.endDate = endDate;
  332. this.handleGetSignOrder();
  333. },
  334. // 展示文字
  335. handleShowText: function(item){
  336. this.$set(item,"show",true)
  337. },
  338. handleGo: function(){
  339. this.goWin("tmssign","./tmsSign.html");
  340. }
  341. },
  342. filters:{
  343. vbelnListFilters: function(v){
  344. var v = ["0800001227","0800001227","0800001227","0800001227","0800001227","0800001227"];
  345. var str = ""
  346. if(v.length>0){
  347. for(var i=0; i<v.length; i++){
  348. if(i<v.length-1){
  349. str += v[i] + ",";
  350. }else {
  351. str += v[i];
  352. }
  353. }
  354. };
  355. return str;
  356. }
  357. }
  358. })
  359. };
  360. </script>
  361. </html>