inTransit.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. <template>
  2. <!-- 在途运输信息选择页面 -->
  3. <div class="inTransit">
  4. <el-form :inline="true">
  5. <el-form-item>
  6. <label class="el-form-item__label" style="width: auto;">时间段</label>
  7. <el-date-picker
  8. v-model="dateValue"
  9. type="daterange"
  10. range-separator="至"
  11. start-placeholder="开始日期"
  12. end-placeholder="结束日期">
  13. </el-date-picker>
  14. </el-form-item>
  15. <el-form-item>
  16. <label class="el-form-item__label" style="width: auto;">产品分类</label>
  17. <el-input v-model="inputValue" placeholder="请输入内容"></el-input>
  18. </el-form-item>
  19. <el-form-item>
  20. <label class="el-form-item__label" style="width: auto;">车牌号</label>
  21. <el-input v-model="capacityNumber1" placeholder="请输入内容"></el-input>
  22. </el-form-item>
  23. <el-form-item>
  24. <label class="el-form-item__label" style="width: auto;">收货单位</label>
  25. <el-input v-model="consigneeCompanyName1" placeholder="请输入内容"></el-input>
  26. </el-form-item>
  27. <el-form-item>
  28. <label class="el-form-item__label" style="width: auto;">承运单位</label>
  29. <el-input v-model="carrierName" placeholder="请输入内容"></el-input>
  30. </el-form-item>
  31. <el-form-item>
  32. <label class="el-form-item__label" style="width: auto;">门岗名称</label>
  33. <el-input v-model="gatepostName" placeholder="请输入内容"></el-input>
  34. </el-form-item>
  35. <el-form-item>
  36. <label class="el-form-item__label" style="width: auto;">报警类型</label>
  37. <el-select v-model="exceptionType" placeholder="报警类型">
  38. <el-option
  39. v-for="item in exceptionTypes"
  40. :key="item.value"
  41. :label="item.label"
  42. :value="item.value">
  43. </el-option>
  44. </el-select>
  45. <!-- <label class="el-form-item__label" style="width: auto;">报警类型</label>
  46. <el-autocomplete
  47. popper-class="my-autocomplete"
  48. v-model="exceptionType"
  49. :fetch-suggestions="querySearch3"
  50. placeholder="请输入内容"
  51. >
  52. <i class="el-icon-edit el-input__icon" slot="suffix"> </i>
  53. </el-autocomplete> -->
  54. </el-form-item>
  55. <el-form-item>
  56. <el-button type="primary" @click="onSearch"><i class="el-icon-search"></i>查询</el-button>
  57. <el-button type="primary" @click="exportData">导出</el-button>
  58. </el-form-item>
  59. </el-form>
  60. <!-- 执行中 -->
  61. <el-tabs v-model="activeName" >
  62. <el-tab-pane label="执行中" name="first">
  63. <dilTable ref="tab" v-bind.sync="option">
  64. <el-table-column fixed="right" label="操作" width="110">
  65. <template slot-scope="scope">
  66. <el-button @click="click(scope.row)" type="text" size="small" style="font-size: 17px"
  67. >实时轨迹</el-button
  68. >
  69. </template>
  70. </el-table-column>
  71. </dilTable>
  72. </el-tab-pane>
  73. <!-- 已结束 -->
  74. <el-tab-pane label="已结束" name="second">
  75. <dilTable ref="tab2" v-bind.sync="option2">
  76. <el-table-column fixed="right" label="操作" width="220">
  77. <template slot-scope="scope">
  78. <el-button @click="historyclick(scope.row)" type="text" size="small" style="font-size: 17px">历史轨迹</el-button>
  79. <el-button @click="allDistanceclick(scope.row.orderNumber)" type="text" size="small" style="font-size: 17px">总距离</el-button>
  80. </template>
  81. </el-table-column>
  82. </dilTable>
  83. </el-tab-pane>
  84. <!-- 有异常 -->
  85. <el-tab-pane label="有异常" name="third">
  86. <dilTable ref="tab3" v-bind.sync="option3">
  87. <el-table-column fixed="right" label="操作" width="220">
  88. <template slot-scope="scope">
  89. <el-button @click="click(scope.row)" type="text" size="small" style="font-size: 17px"
  90. >实时轨迹</el-button
  91. >
  92. <el-button @click="inTransitAlarmclick(scope.row.orderNumber)" type="text" size="small" style="font-size: 17px">运输报警</el-button>
  93. </template>
  94. </el-table-column>
  95. </dilTable>
  96. </el-tab-pane>
  97. </el-tabs>
  98. <div style="height: 100%">
  99. <vxe-modal width="1237" height="731" v-model="value7" show-zoom resize>
  100. <template #default>
  101. <PathView v-bind.sync="pathOption"></PathView>
  102. </template>
  103. </vxe-modal>
  104. </div>
  105. <!-- <div style="height: 100%">
  106. <vxe-modal width="1237" height="731" v-model="value6" show-zoom resize>
  107. <template #default>
  108. <inTransitOrderMileage v-bind.sync="mileOption"></inTransitOrderMileage>
  109. </template>
  110. </vxe-modal>
  111. </div>
  112. <div style="height: 100%">
  113. <vxe-modal width="1237" height="731" v-model="value5" show-zoom resize>
  114. <template #default>
  115. <inTransitAlarm v-bind.sync="alarmOption"></inTransitAlarm>
  116. </template>
  117. </vxe-modal>
  118. </div> -->
  119. </div>
  120. </template>
  121. <script>
  122. import { sjTime } from "@/utils/sharedJsFile";
  123. //PathView组件注册
  124. // import PageTitle from "@/offSiteTransportation/mapTest.vue";
  125. import PathView from "./mapTest.vue"
  126. // import InTransitOrderMileage from "@/views/TMS/tms-offsite/inTransitOrderMileage.vue"
  127. // import inTransitAlarm from "@/views/TMS/tms-offsite/inTransitAlarm.vue"
  128. export default {
  129. name: "inTransit",
  130. components: {
  131. PathView,
  132. // InTransitOrderMileage,
  133. // inTransitAlarm
  134. },
  135. data() {
  136. return {
  137. exceptionTypes:[{
  138. value: '全部类型',
  139. label: '全部类型'
  140. }, {
  141. value: '离线',
  142. label: '离线'
  143. },{
  144. value: '停车',
  145. label: '停车'
  146. },{
  147. value: '偏离',
  148. label: '偏离'
  149. }],
  150. inputValues:[{
  151. value: '螺纹钢',
  152. label: '螺纹钢'
  153. }, {
  154. value: '微粉',
  155. label: '微粉'
  156. },{
  157. value: '带钢',
  158. label: '带钢'
  159. },{
  160. value: '钢坯',
  161. label: '钢坯'
  162. },{
  163. value: '其他',
  164. label: '其他'
  165. }],
  166. gatepostNames1: [{
  167. value: '信钢北门出口',
  168. label: '信钢北门出口'
  169. }, {
  170. value: '科创微粉出口',
  171. label: '科创微粉出口'
  172. },{
  173. value: '象屿库',
  174. label: '象屿库'
  175. },{
  176. value: '智同库',
  177. label: '智同库'
  178. },{
  179. value: '中联厂出口',
  180. label: '中联厂出口'
  181. }],
  182. dateValue:[new Date(), new Date()],
  183. inputValue:"螺纹钢",
  184. exceptionType:"全部类型",
  185. selectOrderNumber:"",
  186. capacityNumber1:"",
  187. carrierName:"",
  188. gatepostName:"",
  189. value7:false,
  190. value6:false,
  191. value5:false,
  192. dialogVisible:false,
  193. consigneeCompanyName1:"",
  194. status: "",
  195. state: "",
  196. activeName: "first",
  197. option: {
  198. // 表格请求数据的地址
  199. requestUrl: "/api/v1/otms/getInTransitTransportation?apiId=468",
  200. },
  201. option2: {
  202. // 表格请求数据的地址
  203. requestUrl: "/api/v1/otms/getFinishTruckOrderInfo?apiId=468",
  204. },
  205. pathOption:{
  206. orderNumber:'',
  207. capacityNumber:'',
  208. startPointName:'',
  209. endPointName:'',
  210. },
  211. mileOption:{
  212. orderNumber:''
  213. },
  214. alarmOption:{
  215. orderNumber:''
  216. },
  217. option3: {
  218. // 表格请求数据的地址
  219. requestUrl: "/api/v1/otms/getHaveAbnormalTruckOrderInfo?apiId=468",
  220. }
  221. };
  222. },
  223. mounted() {
  224. console.log("nijfdsojfosafj")
  225. this.restaurants = this.loadAll();
  226. // this.onSearch();
  227. },
  228. methods: {
  229. showPathView(data){
  230. this.dialogVisible=!this.dialogVisible;
  231. this.selectOrderNumber=data.orderNumber;
  232. },
  233. querySearch(queryString, cb) {
  234. var restaurants = this.restaurants;
  235. var results = queryString
  236. ? restaurants.filter(this.createFilter(queryString))
  237. : restaurants;
  238. cb(results);
  239. },
  240. querySearch2(queryString, cb) {
  241. var restaurants = [
  242. { value: "信钢北门出口"},
  243. { value: "科创微粉出口"},
  244. { value: "象屿库"},
  245. { value: "智同库"},
  246. ];
  247. var results = queryString
  248. ? restaurants.filter(this.createFilter(queryString))
  249. : restaurants;
  250. cb(results);
  251. },
  252. querySearch3(queryString, cb) {
  253. var restaurants = [
  254. { value: "离线"},
  255. { value: "停车"},
  256. { value: "偏离"},
  257. { value: "全部类型"},
  258. ];
  259. var results = queryString
  260. ? restaurants.filter(this.createFilter(queryString))
  261. : restaurants;
  262. cb(results);
  263. },
  264. createFilter(queryString) {
  265. return (restaurant) => {
  266. return (
  267. restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===
  268. 0
  269. );
  270. };
  271. },
  272. loadAll() {
  273. return [
  274. { value: "螺纹钢"},
  275. { value: "微粉"},
  276. { value: "带钢"},
  277. { value: "钢坯"},
  278. { value: "其他"},
  279. ];
  280. },
  281. exportData(){
  282. let tHeader = [];
  283. let filterVal = [];
  284. if(this.activeName=="first"){
  285. this.$refs.tab.dataColumnData.filter( (item,i) =>{
  286. tHeader.push(item.label);
  287. filterVal.push(item.prop);
  288. } )
  289. this.export2Excel(tHeader,filterVal,this.$refs.tab.dataTabel,'执行中表格');
  290. }else if(this.activeName=="second"){
  291. this.$refs.tab2.dataColumnData.filter( (item,i) =>{
  292. tHeader.push(item.label);
  293. filterVal.push(item.prop);
  294. } )
  295. this.export2Excel(tHeader,filterVal,this.$refs.tab2.dataTabel,'已完成表格');
  296. } else if(this.activeName=="third"){
  297. this.$refs.tab3.dataColumnData.filter( (item,i) =>{
  298. tHeader.push(item.label);
  299. filterVal.push(item.prop);
  300. } )
  301. this.export2Excel(tHeader,filterVal,this.$refs.tab3.dataTabel,'有异常表格');
  302. }
  303. },
  304. export2Excel(tHeader,filterVal,dataTabel,exeName) {
  305. var that = this;
  306. this.downloadLoading = true
  307. require.ensure([], () => {
  308. const { export_json_to_excel } = require("@/assets/excel/Export2Excel.js"); //这里必须使用绝对路径,使用@/+存放export2Excel的路径
  309. console.log("export_json_to_excel",export_json_to_excel)
  310. let list = dataTabel;
  311. let data = that.formatJson(filterVal, list);
  312. export_json_to_excel(tHeader, data, exeName); // 导出的表格名称
  313. });
  314. },
  315. //3.格式转换
  316. formatJson(filterVal, jsonData) {
  317. return jsonData.map((v) => filterVal.map((j) => v[j]));
  318. },
  319. onSearch(){
  320. if(this.activeName=="first"){
  321. //改变执行中条件
  322. this.$refs.tab.setDataRequestQuery({"startTime":sjTime(this.dateValue[0]),
  323. "endTime": sjTime(this.dateValue[1]),
  324. "materialNames": this.inputValue,
  325. "capacityNumbers": this.capacityNumber1,
  326. "carrierNames":this.carrierName,
  327. "outGatepostNames":this.gatepostName,
  328. "consigneeCompanyNames": this.consigneeCompanyName1});
  329. }
  330. if(this.activeName=="second"){
  331. //改变已完成条件
  332. this.$refs.tab2.setDataRequestQuery({"startTime":sjTime(this.dateValue[0]),
  333. "endTime": sjTime(this.dateValue[1]),
  334. "materialNames": this.inputValue,
  335. "capacityNumbers": this.capacityNumber1,
  336. "carrierNames":this.carrierName,
  337. "outGatepostNames":this.gatepostName,
  338. "consigneeCompanyNames": this.consigneeCompanyName1});
  339. }
  340. if(this.activeName=="third"){
  341. //改变有异常条件
  342. this.$refs.tab3.setDataRequestQuery({"startTime":sjTime(this.dateValue[0]),
  343. "endTime": sjTime(this.dateValue[1]),
  344. "materialNames": this.inputValue,
  345. "capacityNumber1": this.capacityNumber1,
  346. "carrierName1":this.carrierName,
  347. "abnormalType":this.exceptionType=="全部类型"?"":this.exceptionType,
  348. "outGatepostNames":this.gatepostName,
  349. "consigneeCompanyName1": this.consigneeCompanyName1});
  350. }
  351. },
  352. //other
  353. click(row) {
  354. this.pathOption.orderNumber=row.orderNumber;
  355. this.pathOption.capacityNumber=row.capacityNumber;
  356. this.pathOption.startPointName="达钢集团"+row.outGatepostName,
  357. this.pathOption.endPointName=row.deliveryAddress,
  358. console.log(this.pathOption,"this.pathOption")
  359. this.value7=true;
  360. // this.$router.push("/offsite/pathView?orderNumber="+row.orderNumber+"&capacityNumber="+row.capacityNumber);
  361. },
  362. historyclick(row){
  363. this.pathOption.orderNumber=row.orderNumber;
  364. this.pathOption.capacityNumber=row.capacityNumber;
  365. this.value7=true;
  366. //this.$router.push("/offsite/pathView?orderNumber="+row.orderNumber+"&capacityNumber="+row.capacityNumber);
  367. },
  368. allDistanceclick(orderNumber){
  369. //this.$router.push("/offsite/inTransitOrderMileage?orderNumber="+orderNumber);
  370. this.mileOption.orderNumber=orderNumber;
  371. this.value6=true;
  372. },
  373. inTransitAlarmclick(orderNumber){
  374. // this.$router.push("/offsite/inTransitAlarm?orderNumber="+orderNumber);
  375. this.alarmOption.orderNumber=orderNumber;
  376. this.value5=true;
  377. },
  378. },
  379. };
  380. </script>
  381. <style lang='scss' scoped>
  382. .homeworkPath {
  383. .top {
  384. padding: 20px 30px;
  385. }
  386. }
  387. </style>