index.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="任务编号" prop="taskNo">
  5. <el-input
  6. v-model="queryParams.taskNo"
  7. placeholder="请输入任务编号"
  8. clearable
  9. size="small"
  10. @keyup.enter.native="handleQuery"
  11. />
  12. </el-form-item>
  13. <el-form-item label="起始区域" prop="areaFrom">
  14. <!-- <el-input-->
  15. <!-- v-model="queryParams.areaFrom"-->
  16. <!-- placeholder="请输入起始区域"-->
  17. <!-- clearable-->
  18. <!-- size="small"-->
  19. <!-- @keyup.enter.native="handleQuery"-->
  20. <!-- />-->
  21. <el-select v-model="queryParams.areaFrom" @change="locationZoneFromChange" placeholder="请选择起始区域" clearable
  22. size="small" style="width: 100%">
  23. <el-option
  24. v-for="dict in this.locationZoneCombo"
  25. :key="dict.zoneId"
  26. :label="dict.zoneName"
  27. :value="dict.zoneId"
  28. />
  29. </el-select>
  30. </el-form-item>
  31. <el-form-item label="起始点位" prop="locationFrom">
  32. <el-input
  33. v-model="queryParams.locationFrom"
  34. placeholder="请输入起始点位"
  35. clearable
  36. size="small"
  37. @keyup.enter.native="handleQuery"
  38. />
  39. </el-form-item>
  40. <el-form-item label="终点点位" prop="locationTo">
  41. <el-input
  42. v-model="queryParams.locationTo"
  43. placeholder="请输入终点点位"
  44. clearable
  45. size="small"
  46. @keyup.enter.native="handleQuery"
  47. />
  48. </el-form-item>
  49. <el-form-item label="终点区域" prop="areaTo">
  50. <!-- <el-input-->
  51. <!-- v-model="queryParams.areaTo"-->
  52. <!-- placeholder="请输入终点区域"-->
  53. <!-- clearable-->
  54. <!-- size="small"-->
  55. <!-- @keyup.enter.native="handleQuery"-->
  56. <!-- />-->
  57. <el-select v-model="queryParams.areaTo" @change="locationZoneToChange" placeholder="请选择终点区域" clearable
  58. size="small" style="width: 100%">
  59. <el-option
  60. v-for="dict in this.locationZoneCombo"
  61. :key="dict.zoneId"
  62. :label="dict.zoneName"
  63. :value="dict.zoneId"
  64. />
  65. </el-select>
  66. </el-form-item>
  67. <el-form-item label="ִ状态" prop="state">
  68. <!-- <el-input-->
  69. <!-- v-model="queryParams.state"-->
  70. <!-- placeholder="请输入ִ状态"-->
  71. <!-- clearable-->
  72. <!-- size="small"-->
  73. <!-- @keyup.enter.native="handleQuery"-->
  74. <!-- />-->
  75. <el-select v-model="queryParams.state" clearable placeholder="请选择">
  76. <el-option
  77. v-for="item in options"
  78. :key="item.value"
  79. :label="item.label"
  80. :value="item.value">
  81. </el-option>
  82. </el-select>
  83. </el-form-item>
  84. <!-- <el-form-item label="创建人" prop="createUser">-->
  85. <!-- <el-input-->
  86. <!-- v-model="queryParams.createUser"-->
  87. <!-- placeholder="请输入创建人"-->
  88. <!-- clearable-->
  89. <!-- size="small"-->
  90. <!-- @keyup.enter.native="handleQuery"-->
  91. <!-- />-->
  92. <!-- </el-form-item>-->
  93. <el-form-item label="创建时间" prop="createDate">
  94. <el-date-picker
  95. v-model="dateRange"
  96. size="small"
  97. style="width: 240px"
  98. value-format="yyyy-MM-dd"
  99. type="daterange"
  100. range-separator="-"
  101. start-placeholder="开始日期"
  102. end-placeholder="结束日期"
  103. ></el-date-picker>
  104. </el-form-item>
  105. <el-form-item label="任务类型" prop="ext7">
  106. <el-select v-model="queryParams.ext7" placeholder="请选择类型" clearable size="small">
  107. <el-option
  108. v-for="dict in taskTypeCombo"
  109. :key="dict.value"
  110. :label="dict.label"
  111. :value="dict.value"
  112. />
  113. </el-select>
  114. </el-form-item>
  115. <el-form-item label="托盘号" prop="ext5">
  116. <el-input
  117. v-model="queryParams.ext5"
  118. placeholder="请输入托盘号"
  119. clearable
  120. size="small"
  121. @keyup.enter.native="handleQuery"
  122. />
  123. </el-form-item>
  124. <el-form-item label="单据号" prop="ext6">
  125. <el-input
  126. v-model="queryParams.ext6"
  127. placeholder="请输入单据号"
  128. clearable
  129. size="small"
  130. @keyup.enter.native="handleQuery"
  131. />
  132. </el-form-item>
  133. <!-- <el-form-item label="仓库" prop="shopId">-->
  134. <!-- <el-input-->
  135. <!-- v-model="queryParams.shopId"-->
  136. <!-- placeholder="请输入仓库"-->
  137. <!-- clearable-->
  138. <!-- size="small"-->
  139. <!-- @keyup.enter.native="handleQuery"-->
  140. <!-- />-->
  141. <!-- </el-form-item>-->
  142. <!-- <el-form-item label="任务开始时间" prop="startTime">-->
  143. <!-- <el-date-picker clearable size="small"-->
  144. <!-- v-model="queryParams.startTime"-->
  145. <!-- type="date"-->
  146. <!-- value-format="yyyy-MM-dd"-->
  147. <!-- placeholder="选择任务开始时间">-->
  148. <!-- </el-date-picker>-->
  149. <!-- </el-form-item>-->
  150. <!-- <el-form-item label="任务结束时间" prop="endTime">-->
  151. <!-- <el-date-picker clearable size="small"-->
  152. <!-- v-model="queryParams.endTime"-->
  153. <!-- type="date"-->
  154. <!-- value-format="yyyy-MM-dd"-->
  155. <!-- placeholder="选择任务结束时间">-->
  156. <!-- </el-date-picker>-->
  157. <!-- </el-form-item>-->
  158. <el-form-item>
  159. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  160. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  161. </el-form-item>
  162. </el-form>
  163. <el-row :gutter="10" class="mb8">
  164. <el-col :span="1.5">
  165. <el-button
  166. type="primary"
  167. plain
  168. icon="el-icon-plus"
  169. size="mini"
  170. @click="handleAdd"
  171. v-hasPermi="['ams:wcsTask:add']"
  172. >新增</el-button>
  173. </el-col>
  174. <!-- <el-col :span="1.5">-->
  175. <!-- <el-button-->
  176. <!-- type="primary"-->
  177. <!-- plain-->
  178. <!-- icon="el-icon-plus"-->
  179. <!-- size="mini"-->
  180. <!-- @click="handleCharge"-->
  181. <!-- >充电任务</el-button>-->
  182. <!-- </el-col>-->
  183. <!--<el-col :span="1.5">
  184. <el-button
  185. type="success"
  186. plain
  187. icon="el-icon-edit"
  188. size="mini"
  189. :disabled="single"
  190. @click="handleUpdate"
  191. v-hasPermi="['ams:wcsTask:edit']"
  192. >修改</el-button>
  193. </el-col>-->
  194. <!-- <el-col :span="1.5">-->
  195. <!-- <el-button-->
  196. <!-- type="danger"-->
  197. <!-- plain-->
  198. <!-- icon="el-icon-delete"-->
  199. <!-- size="mini"-->
  200. <!-- :disabled="multiple"-->
  201. <!-- @click="handleCancel()"-->
  202. <!-- v-hasPermi="['ams:wcsTask:remove']"-->
  203. <!-- >取消任务</el-button>-->
  204. <!-- </el-col>-->
  205. <!--<el-col :span="1.5">
  206. <el-button
  207. type="warning"
  208. plain
  209. icon="el-icon-download"
  210. size="mini"
  211. @click="handleExport"
  212. v-hasPermi="['ams:wcsTask:export']"
  213. >导出</el-button>
  214. </el-col>-->
  215. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  216. </el-row>
  217. <el-table v-loading="loading" :data="wcsTaskList" @selection-change="handleSelectionChange">
  218. <el-table-column type="selection" width="55" align="center" />
  219. <el-table-column label="任务编号" align="center" prop="taskNo" width="180"/>
  220. <!--<el-table-column label="仓库" align="center" prop="shopId" />-->
  221. <!--<el-table-column label="调用系统名称" align="center" prop="sysName" />-->
  222. <!--<el-table-column label="调用设备名称" align="center" prop="deviceName" />-->
  223. <el-table-column label="起始区域" align="center" prop="areaFrom" />
  224. <el-table-column label="起始点位" align="center" prop="locationFrom" />
  225. <el-table-column label="终点点位" align="center" prop="locationTo" />
  226. <!-- <el-table-column label="AGV站点" align="center" prop="agvStation" />-->
  227. <el-table-column label="终点区域" align="center" prop="areaTo" />
  228. <!-- <el-table-column label="优先级" align="center" prop="priority" />-->
  229. <el-table-column label="ִ状态" align="center" prop="state" >
  230. <template slot-scope="scope">
  231. <div v-if="scope.row.state === 1">开始</div>
  232. <div v-if="scope.row.state === 2">完成</div>
  233. <div v-if="scope.row.state === 3">开始取货</div>
  234. <div v-if="scope.row.state === 4">取货完成</div>
  235. <div v-if="scope.row.state === 5">开始卸货</div>
  236. <div v-if="scope.row.state === 6">卸货完成</div>
  237. <div v-if="scope.row.state === 7">取消</div>
  238. <div v-if="scope.row.state === 8">异常</div>
  239. <div v-if="scope.row.state === 9">待下发</div>
  240. <div v-if="scope.row.state === 10">已下发</div>
  241. <div v-if="scope.row.state === 11">取消并归于起点</div>
  242. <div v-if="scope.row.state === 12">取消并归于终点</div>
  243. <div v-if="scope.row.state === 13">取货待确认</div>
  244. <div v-if="scope.row.state === 14">卸货待确认</div>
  245. </template>
  246. </el-table-column>
  247. <el-table-column label="备注" align="center" prop="remark" />
  248. <!--<el-table-column label="创建人" align="center" prop="createUser" />-->
  249. <el-table-column label="创建时间" align="center" prop="createDate" width="200"/>
  250. <!--<el-table-column label="任务类型" align="center" prop="taskType" />-->
  251. <el-table-column label="任务开始时间" align="center" prop="startTime"/>
  252. <el-table-column label="任务结束时间" align="center" prop="endTime"/>
  253. <!--<el-table-column label="父任务单号" align="center" prop="parentTask" />-->
  254. <!--<el-table-column label="AGV接收车号" align="center" prop="agvNo" />-->
  255. <el-table-column label="任务类型" align="center" prop="ext7">
  256. <template slot-scope="scope">
  257. <div v-if="scope.row.ext7 === '5'">入库</div>
  258. <div v-if="scope.row.ext7 === '6'">出库</div>
  259. <div v-if="scope.row.ext7 === '9'">回库</div>
  260. <div v-if="scope.row.ext7 === '10'">移库</div>
  261. </template>
  262. </el-table-column>
  263. <el-table-column label="托盘号" align="center" prop="ext5" />
  264. <el-table-column label="单据号" align="center" prop="ext6" width="200" />
  265. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed = "right">
  266. <template slot-scope="scope">
  267. <el-button
  268. v-if="scope.row.state !== 4 && scope.row.state !== 2 && scope.row.state !== 11 && scope.row.state !== 12"
  269. size="mini"
  270. type="text"
  271. icon="el-icon-edit"
  272. @click="handlePickupCompleted(scope.row)">取货完成</el-button>
  273. <el-button
  274. v-if="(scope.row.state == 4) || (scope.row.state !== 2 && scope.row.state !== 11 && scope.row.state !== 12)"
  275. size="mini"
  276. type="text"
  277. icon="el-icon-edit"
  278. @click="handleComplete(scope.row)">卸货完成</el-button>
  279. <el-button
  280. v-if="scope.row.state !== 7 && scope.row.state !== 2 && scope.row.state !== 11 && scope.row.state !== 12"
  281. size="mini"
  282. type="text"
  283. icon="el-icon-delete"
  284. @click="handleCancel(scope.row)"
  285. v-hasPermi="['ams:wcsTask:remove']"
  286. >取消</el-button>
  287. <!-- <el-button size="mini" type="text" v-if="scope.row.state === 7" @click="handleDisposition(scope.row, 'disFrom')">归于起点</el-button>-->
  288. <!-- <el-button size="mini" type="text" v-if="scope.row.state === 7" @click="handleDisposition(scope.row, 'disTo')">归于终点</el-button>-->
  289. </template>
  290. </el-table-column>
  291. </el-table>
  292. <pagination
  293. v-show="total>0"
  294. :total="total"
  295. :page.sync="queryParams.pageNum"
  296. :limit.sync="queryParams.pageSize"
  297. @pagination="getList"
  298. />
  299. <!-- 添加或修改AGV任务对话框 -->
  300. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  301. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  302. <el-form-item label="任务类型" prop="businessType">
  303. <el-select v-model="form.businessType" placeholder="请选择任务类型" clearable size="small" style="width: 100%">
  304. <el-option
  305. v-for="dict in businessTypeCombo"
  306. :key="dict.value"
  307. :label="dict.label"
  308. :value="dict.value"
  309. ></el-option>
  310. </el-select>
  311. </el-form-item>
  312. <el-form-item label="是否转发" prop="businessType">
  313. <el-select v-model="form.taskType" placeholder="请选择" clearable size="small" style="width: 100%">
  314. <el-option
  315. v-for="dict in isYesAndNoCombo"
  316. :key="dict.value"
  317. :label="dict.label"
  318. :value="dict.value"
  319. ></el-option>
  320. </el-select>
  321. </el-form-item>
  322. <el-form-item label="起始区域" prop="areaFrom">
  323. <el-select v-model="form.areaFrom" @change="locationZoneFromChange" placeholder="请选择库区" clearable
  324. size="small" style="width: 100%">
  325. <el-option
  326. v-for="dict in this.locationZoneCombo"
  327. :key="dict.zoneId"
  328. :label="dict.zoneName"
  329. :value="dict.zoneId"
  330. />
  331. </el-select>
  332. </el-form-item>
  333. <el-form-item label="起始点位" prop="locationFrom">
  334. <el-select v-model="form.locationFrom" placeholder="请选择库位" clearable size="small" style="width: 100%">
  335. <el-option
  336. v-for="dict in locationFromCombo"
  337. :key="dict.id"
  338. :label="dict.locationNo"
  339. :value="dict.id"
  340. ></el-option>
  341. </el-select>
  342. </el-form-item>
  343. <el-form-item label="目标区域" prop="areaTo">
  344. <el-select v-model="form.areaTo" @change="locationZoneToChange" placeholder="请选择库区" clearable
  345. size="small" style="width: 100%">
  346. <el-option
  347. v-for="dict in this.locationZoneCombo"
  348. :key="dict.zoneId"
  349. :label="dict.zoneName"
  350. :value="dict.zoneId"
  351. />
  352. </el-select>
  353. </el-form-item>
  354. <el-form-item label="终点点位" prop="locationTo">
  355. <el-select v-model="form.locationTo" placeholder="请选择库位" clearable size="small" style="width: 100%">
  356. <el-option
  357. v-for="dict in locationToCombo"
  358. :key="dict.id"
  359. :label="dict.locationNo"
  360. :value="dict.id"
  361. ></el-option>
  362. </el-select>
  363. </el-form-item>
  364. <!--
  365. <el-form-item label="优先级" prop="priority">
  366. <el-input v-model="form.priority" placeholder="请输入优先级" />
  367. </el-form-item>
  368. <el-form-item label="起始区域" prop="areaFrom">
  369. <el-input v-model="form.areaFrom" placeholder="请输入起始区域" />
  370. </el-form-item>
  371. <el-form-item label="终点区域" prop="areaTo">
  372. <el-input v-model="form.areaTo" placeholder="请输入终点区域" />
  373. </el-form-item>
  374. <el-form-item label="任务关联单号类型1" prop="whTypeFrom">
  375. <el-input v-model="form.whTypeFrom" placeholder="请输入任务关联单号类型1" />
  376. </el-form-item>
  377. <el-form-item label="任务关联单号1" prop="whNoFrom">
  378. <el-input v-model="form.whNoFrom" placeholder="请输入任务关联单号1" />
  379. </el-form-item>
  380. <el-form-item label="任务关联单号类型2" prop="whTypeTo">
  381. <el-input v-model="form.whTypeTo" placeholder="请输入任务关联单号类型2" />
  382. </el-form-item>
  383. <el-form-item label="任务关联单号2" prop="whNoTo">
  384. <el-input v-model="form.whNoTo" placeholder="请输入任务关联单号2" />
  385. </el-form-item>
  386. <el-form-item label="调用系统名称" prop="sysName">
  387. <el-input v-model="form.sysName" placeholder="请输入调用系统名称" />
  388. </el-form-item>
  389. <el-form-item label="调用设备名称" prop="deviceName">
  390. <el-input v-model="form.deviceName" placeholder="请输入调用设备名称" />
  391. </el-form-item>
  392. <el-form-item label="批号" prop="batchNo">
  393. <el-input v-model="form.batchNo" placeholder="请输入批号" />
  394. </el-form-item>
  395. <el-form-item label="批号2" prop="batchOrderNo">
  396. <el-input v-model="form.batchOrderNo" placeholder="请输入批号2" />
  397. </el-form-item>
  398. <el-form-item label="ִ状态9:(队列等待) 0:(下达AMS成功)" prop="state">
  399. <el-input v-model="form.state" placeholder="请输入ִ状态9:(队列等待) 0:(下达AMS成功)" />
  400. </el-form-item>
  401. <el-form-item label="备注" prop="remark">
  402. <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  403. </el-form-item>
  404. <el-form-item label="创建人" prop="createUser">
  405. <el-input v-model="form.createUser" placeholder="请输入创建人" />
  406. </el-form-item>
  407. <el-form-item label="创建时间" prop="createDate">
  408. <el-date-picker clearable size="small"
  409. v-model="form.createDate"
  410. type="date"
  411. value-format="yyyy-MM-dd"
  412. placeholder="选择创建时间">
  413. </el-date-picker>
  414. </el-form-item>
  415. <el-form-item label="编辑人" prop="updateUser">
  416. <el-input v-model="form.updateUser" placeholder="请输入编辑人" />
  417. </el-form-item>
  418. <el-form-item label="编辑时间" prop="updateDate">
  419. <el-date-picker clearable size="small"
  420. v-model="form.updateDate"
  421. type="date"
  422. value-format="yyyy-MM-dd"
  423. placeholder="选择编辑时间">
  424. </el-date-picker>
  425. </el-form-item>
  426. <el-form-item label="仓库" prop="shopId">
  427. <el-input v-model="form.shopId" placeholder="请输入仓库" />
  428. </el-form-item>
  429. <el-form-item label="任务开始时间" prop="startTime">
  430. <el-date-picker clearable size="small"
  431. v-model="form.startTime"
  432. type="date"
  433. value-format="yyyy-MM-dd"
  434. placeholder="选择任务开始时间">
  435. </el-date-picker>
  436. </el-form-item>
  437. <el-form-item label="任务结束时间" prop="endTime">
  438. <el-date-picker clearable size="small"
  439. v-model="form.endTime"
  440. type="date"
  441. value-format="yyyy-MM-dd"
  442. placeholder="选择任务结束时间">
  443. </el-date-picker>
  444. </el-form-item>
  445. <el-form-item label="父任务单号" prop="parentTask">
  446. <el-input v-model="form.parentTask" placeholder="请输入父任务单号" />
  447. </el-form-item>
  448. <el-form-item label="AGV接收车号" prop="agvNo">
  449. <el-input v-model="form.agvNo" placeholder="请输入AGV接收车号" />
  450. </el-form-item>
  451. <el-form-item label="是否有前置任务,有必须等待前置任务完成" prop="beforeTask">
  452. <el-input v-model="form.beforeTask" placeholder="请输入是否有前置任务,有必须等待前置任务完成" />
  453. </el-form-item>-->
  454. </el-form>
  455. <div slot="footer" class="dialog-footer">
  456. <el-button type="primary" @click="submitForm">确 定</el-button>
  457. <el-button @click="cancel">取 消</el-button>
  458. </div>
  459. </el-dialog>
  460. <!--充电-->
  461. <el-dialog :title="title" :visible.sync="chaegeOpen" width="500px" append-to-body>
  462. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  463. <el-form-item label="车号" prop="businessType">
  464. <el-select v-model="form.agvNo" placeholder="请选择车辆" clearable size="small" style="width: 100%">
  465. <el-option
  466. v-for="dict in chargeCombo"
  467. :key="dict.value"
  468. :label="dict.label"
  469. :value="dict.value"
  470. ></el-option>
  471. </el-select>
  472. </el-form-item>
  473. </el-form>
  474. <div slot="footer" class="dialog-footer">
  475. <el-button type="primary" @click="submitChargeForm">确 定</el-button>
  476. </div>
  477. </el-dialog>
  478. </div>
  479. </template>
  480. <script>
  481. import {
  482. listWcsTask,
  483. getWcsTask,
  484. delWcsTask,
  485. addWcsTask,
  486. updateWcsTask,
  487. addTestTask,
  488. completeWcsTask,
  489. pickupCompleteWcsTask,
  490. taskCancel,
  491. invDisposition,
  492. addChargeTask
  493. } from "@/api/ams/wcsTask";
  494. import { queryLocationDict } from "@/api/base/locationInfo";
  495. import { queryLocationZoneDict } from "@/api/base/locationZone"
  496. import {lockLocRequest} from "@/api/ams/locationView";
  497. export default {
  498. name: "WcsTask",
  499. data() {
  500. return {
  501. //创建时间范围
  502. dateRange: [],
  503. // 遮罩层
  504. loading: true,
  505. // 选中数组
  506. ids: [],
  507. // 非单个禁用
  508. single: true,
  509. // 非多个禁用
  510. multiple: true,
  511. // 显示搜索条件
  512. showSearch: true,
  513. // 总条数
  514. total: 0,
  515. // AGV任务表格数据
  516. wcsTaskList: [],
  517. // 弹出层标题
  518. title: "",
  519. // 是否显示弹出层
  520. open: false,
  521. // 充电弹窗
  522. chaegeOpen:false,
  523. // 查询参数
  524. queryParams: {
  525. pageNum: 1,
  526. pageSize: 10,
  527. locationFrom: null,
  528. areaFrom: null,
  529. locationTo: null,
  530. areaTo: null,
  531. priority: null,
  532. state: null,
  533. createUser: null,
  534. createDate: null,
  535. taskType: null,
  536. shopId: null,
  537. startTime: null,
  538. endTime: null,
  539. parentTask: null,
  540. agvNo: null
  541. },
  542. // 表单参数
  543. form: {},
  544. // 表单校验
  545. rules: {
  546. },
  547. businessTypeCombo: [
  548. {'label':'普通任务','value':'01'}
  549. ],
  550. chargeCombo: [
  551. {'label':'迷你堆垛A','value':'1'},
  552. {'label':'迷你堆垛B','value':'2'},
  553. {'label':'三向车','value':'3'}
  554. ],
  555. taskTypeCombo: [
  556. {'label':'入库','value':'5'},
  557. {'label':'出库','value':'6'},
  558. {'label':'回库','value':'9'},
  559. {'label':'移库','value':'10'}
  560. ],
  561. isYesAndNoCombo: [
  562. {'label':'是','value':'Y'},
  563. {'label':'否','value':'N'}
  564. ],
  565. locationFromCombo: [],
  566. locationToCombo: [],
  567. locationZoneCombo: [],
  568. options: [{//状态栏下拉选项
  569. value: '1',
  570. label: '开始'
  571. }, {
  572. value: '2',
  573. label: '完成'
  574. }, {
  575. value: '3',
  576. label: '开始取货'
  577. }, {
  578. value: '4',
  579. label: '取货完成'
  580. }, {
  581. value: '5',
  582. label: '开始卸货'
  583. },{
  584. value: '6',
  585. label: '卸货完成'
  586. },{
  587. value: '7',
  588. label: '取消'
  589. },{
  590. value: '8',
  591. label: '异常'
  592. },{
  593. value: '9',
  594. label: '待下发'
  595. },{
  596. value: '10',
  597. label: '已下发'
  598. },{
  599. value: '11',
  600. label: '取消并归于起点'
  601. },{
  602. value: '12',
  603. label: '取消并归于终点'
  604. },{
  605. value: '13',
  606. label: '取货待确认'
  607. },{
  608. value: '14',
  609. label: '卸货待确认'
  610. }],
  611. };
  612. },
  613. created() {
  614. this.initData();
  615. this.getList();
  616. },
  617. methods: {
  618. initData() {
  619. queryLocationZoneDict().then(response => {
  620. this.locationZoneCombo = response.data
  621. })
  622. },
  623. /** 查询AGV任务列表 */
  624. getList() {
  625. this.loading = true;
  626. listWcsTask(/*this.queryParams,*/this.addDateRange(this.queryParams, this.dateRange)).then(response => {
  627. this.wcsTaskList = response.rows;
  628. this.total = response.total;
  629. this.loading = false;
  630. });
  631. },
  632. // 取消按钮
  633. cancel() {
  634. this.open = false;
  635. this.reset();
  636. },
  637. // 表单重置
  638. reset() {
  639. this.form = {
  640. taskNo: null,
  641. businessType: null,
  642. whTypeFrom: null,
  643. whNoFrom: null,
  644. whTypeTo: null,
  645. whNoTo: null,
  646. sysName: null,
  647. deviceName: null,
  648. batchNo: null,
  649. batchOrderNo: null,
  650. locationFrom: null,
  651. areaFrom: null,
  652. locationTo: null,
  653. areaTo: null,
  654. priority: null,
  655. state: null,
  656. remark: null,
  657. createUser: null,
  658. createDate: null,
  659. updateUser: null,
  660. updateDate: null,
  661. taskType: null,
  662. shopId: null,
  663. startTime: null,
  664. endTime: null,
  665. parentTask: null,
  666. extParam: null,
  667. ext1: null,
  668. ext2: null,
  669. ext3: null,
  670. ext4: null,
  671. ext5: null,
  672. ext6: null,
  673. ext7: null,
  674. ext8: null,
  675. agvNo: null,
  676. beforeTask: null
  677. };
  678. this.resetForm("form");
  679. },
  680. /** 搜索按钮操作 */
  681. handleQuery() {
  682. this.queryParams.pageNum = 1;
  683. this.getList();
  684. },
  685. /** 重置按钮操作 */
  686. resetQuery() {
  687. this.resetForm("queryForm");
  688. this.handleQuery();
  689. },
  690. // 多选框选中数据
  691. handleSelectionChange(selection) {
  692. this.ids = selection.map(item => item.taskNo)
  693. this.single = selection.length!==1
  694. this.multiple = !selection.length
  695. },
  696. /** 新增按钮操作 */
  697. handleAdd() {
  698. this.reset();
  699. this.open = true;
  700. this.title = "添加AGV任务";
  701. },
  702. /** 新增充电任务 */
  703. handleCharge() {
  704. this.reset();
  705. this.chaegeOpen = true;
  706. this.title = "添加充电任务";
  707. },
  708. /** 修改按钮操作 */
  709. handleUpdate(row) {
  710. this.reset();
  711. const taskNo = row.taskNo || this.ids
  712. getWcsTask(taskNo).then(response => {
  713. this.form = response.data;
  714. this.open = true;
  715. this.title = "修改AGV任务";
  716. });
  717. },
  718. /** 提交按钮 */
  719. submitForm() {
  720. this.$refs["form"].validate(valid => {
  721. if (valid) {
  722. addTestTask(this.form).then(
  723. response => {
  724. this.getList();
  725. this.$modal.msgSuccess("添加成功");
  726. this.open = false;
  727. }
  728. );
  729. }
  730. });
  731. },
  732. /** 提交按钮 */
  733. submitChargeForm() {
  734. this.$refs["form"].validate(valid => {
  735. if (valid) {
  736. addChargeTask(this.form).then(
  737. response => {
  738. this.getList();
  739. this.$modal.msgSuccess("添加成功");
  740. this.open = false;
  741. }
  742. );
  743. }
  744. });
  745. },
  746. /** 删除按钮操作 */
  747. handleDelete(row) {
  748. const taskNos = row.taskNo || this.ids;
  749. this.$modal.confirm('是否确认删除AGV任务编号为"' + taskNos + '"的数据项?').then(function() {
  750. return delWcsTask(taskNos);
  751. }).then(() => {
  752. this.getList();
  753. this.$modal.msgSuccess("删除成功");
  754. }).catch(() => {});
  755. },
  756. /** 导出按钮操作 */
  757. handleExport() {
  758. this.download('ams/wcsTask/export', {
  759. ...this.queryParams
  760. }, `wcsTask_${new Date().getTime()}.xlsx`)
  761. },
  762. handlePickupCompleted (row) {
  763. const taskNos = row.taskNo
  764. let vue = this
  765. this.$modal.confirm('是否确认取货完成"' + taskNos + '"的任务?').then(function() {
  766. pickupCompleteWcsTask(taskNos).then(response => {
  767. console.log(response)
  768. if (response.code == 200) {
  769. vue.getList();
  770. vue.$modal.msgSuccess(response.msg);
  771. } else {
  772. vue.getList();
  773. vue.$modal.msgError(response.msg);
  774. }
  775. });
  776. });
  777. },
  778. handleComplete (row) {
  779. const taskNos = row.taskNo
  780. const vue = this
  781. this.$modal.confirm('是否确认卸货完成"' + taskNos + '"的任务?').then(function() {
  782. completeWcsTask(taskNos).then(response => {
  783. if (response.code === 200) {
  784. vue.getList();
  785. vue.$modal.msgSuccess(response.msg);
  786. } else {
  787. vue.getList();
  788. vue.$modal.msgError(response.msg);
  789. }
  790. });
  791. });
  792. },
  793. handleCancel (row) {
  794. const taskNos = row.taskNo
  795. this.$modal.confirm('是否确认要取消"' + taskNos + '"的任务?').then(function() {
  796. return taskCancel(taskNos);
  797. }).then(() => {
  798. this.getList();
  799. this.$modal.msgSuccess("执行成功");
  800. }).catch(() => {});
  801. },
  802. handleDisposition (row, result) {
  803. const taskNos = row.taskNo
  804. let resultMsg = ''
  805. if (result === 'disFrom') {
  806. resultMsg = '归于起点'
  807. } else if (result === 'disTo') {
  808. resultMsg = '归于终点'
  809. } else {
  810. resultMsg = '清空库存'
  811. }
  812. this.$modal.confirm('确认要进行"' + resultMsg + '"的操作?').then(function() {
  813. return invDisposition(taskNos, result);
  814. }).then(() => {
  815. this.getList();
  816. this.$modal.msgSuccess("执行成功");
  817. }).catch(() => {});
  818. },
  819. locationZoneFromChange: function (value) {
  820. let param = 0
  821. if (value != '') {
  822. param = value
  823. }
  824. queryLocationDict(param).then(response => {
  825. this.locationFromCombo = response.data
  826. })
  827. },
  828. locationZoneToChange: function (value) {
  829. let param = 0
  830. if (value != '') {
  831. param = value
  832. }
  833. queryLocationDict(param).then(response => {
  834. this.locationToCombo = response.data
  835. })
  836. }
  837. }
  838. };
  839. </script>