salesPlan.vue 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005
  1. <template>
  2. <el-card shadow="always" :body-style="{ padding: '10px' }">
  3. <div class="app-container">
  4. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="80px">
  5. <el-form-item label="订单编号" prop="orderNumber">
  6. <el-input
  7. v-model="queryParams.orderNumber"
  8. placeholder="请输入订单编号"
  9. clearable
  10. @keyup.enter.native="handleQueryDz"
  11. />
  12. </el-form-item>
  13. <!-- <el-form-item label="合同编号" prop="contractNo">-->
  14. <!-- <el-input-->
  15. <!-- v-model="queryParams.contractNo"-->
  16. <!-- placeholder="请输入合同编号"-->
  17. <!-- clearable-->
  18. <!-- @keyup.enter.native="handleQueryDz"-->
  19. <!-- />-->
  20. <!-- </el-form-item>-->
  21. <el-form-item label="完成时间" prop="completiontime">
  22. <el-date-picker
  23. v-model="queryParams.completiontime"
  24. type="date"
  25. @keyup.enter.native="handleQueryDz"
  26. format="yyyy 年 MM 月 dd 日"
  27. value-format="yyyy-MM-dd"
  28. placeholder="请输入完成时间">
  29. </el-date-picker>
  30. </el-form-item>
  31. <el-form-item label="计划状态:" prop="taskStatus">
  32. <el-select
  33. v-model="queryParams.taskStatus"
  34. placeholder="请选择投产状态"
  35. clearable
  36. filterable
  37. >
  38. <el-option
  39. v-for="item in dict.type.tczt"
  40. :key="item.value"
  41. :label="item.label"
  42. :value="item.value"
  43. >
  44. </el-option>
  45. </el-select>
  46. </el-form-item>
  47. <el-form-item>
  48. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQueryDz">搜索</el-button>
  49. <el-button icon="el-icon-refresh" size="mini" @click="resetQueryDz">重置</el-button>
  50. </el-form-item>
  51. </el-form>
  52. <el-row >
  53. <el-radio-group v-model="queryParams.tabPosition" style="margin-bottom: 30px;float: right" @change="tabHandleClick" >
  54. <el-radio-button label="1">普通</el-radio-button>
  55. <el-radio-button label="2">焊接</el-radio-button>
  56. </el-radio-group>
  57. </el-row>
  58. <div class="mb8 btn-wrap">
  59. <el-row :gutter="10" class="mb8">
  60. <el-col :span="1.5">
  61. <el-button
  62. type="primary"
  63. plain
  64. icon="el-icon-plus"
  65. size="mini"
  66. @click="handleAdd"
  67. v-hasPermi="['amichi:tasks:add']"
  68. >新增</el-button>
  69. </el-col>
  70. <el-col :span="1.5">
  71. <el-button
  72. type="success"
  73. plain
  74. icon="el-icon-edit"
  75. size="mini"
  76. :disabled="single"
  77. @click="handleUpdate"
  78. v-hasPermi="['amichi:tasks:edit']"
  79. >修改</el-button>
  80. </el-col>
  81. <el-col :span="1.5">
  82. <el-button
  83. type="danger"
  84. plain
  85. icon="el-icon-delete"
  86. size="mini"
  87. :disabled="multiple"
  88. @click="handleDelete"
  89. v-hasPermi="['amichi:tasks:remove']"
  90. >删除</el-button>
  91. </el-col>
  92. <el-col :span="1.5">
  93. <el-button
  94. type="warning"
  95. plain
  96. icon="el-icon-download"
  97. size="mini"
  98. @click="handleExport"
  99. v-hasPermi="['amichi:tasks:export']"
  100. >导出</el-button>
  101. </el-col>
  102. <el-col :span="1.5">
  103. <el-button
  104. :disabled="!selection.length"
  105. type="info"
  106. icon="el-icon-s-help"
  107. size="mini"
  108. @click="handleAuto"
  109. >自动排产</el-button>
  110. </el-col>
  111. <el-col :span="1.5" v-show="queryParams.tabPosition==1">
  112. <el-button
  113. type="primary"
  114. plain
  115. icon="el-icon-plus"
  116. size="mini"
  117. @click="pullPlan"
  118. >拉取流转卡生产计划</el-button>
  119. </el-col>
  120. <el-col :span="1.5" v-show="queryParams.tabPosition==2">
  121. <el-button
  122. type="primary"
  123. plain
  124. icon="el-icon-plus"
  125. size="mini"
  126. @click="pullWeldPlan"
  127. >拉取焊接生产计划</el-button>
  128. </el-col>
  129. <right-toolbar
  130. :showCount.sync="showCount"
  131. :showSearch.sync="showSearch"
  132. :counts="true"
  133. @queryTable="getPlanList"
  134. ></right-toolbar>
  135. </el-row>
  136. </div>
  137. <el-table
  138. :data="tableData"
  139. @selection-change="handleSelectionChange"
  140. style="width: 100%;margin-top:20px">
  141. <el-table-column
  142. type="selection"
  143. align="center"
  144. width="55">
  145. </el-table-column>
  146. <el-table-column type="expand" width="30">
  147. <template slot-scope="scopes">
  148. <el-table :data="scopes.row.planTaskDetails" border
  149. style="width:calc(100% - 80px);float:right" id="child_tab">
  150. <el-table-column align="center" label="需求单据" prop="demandDocument"/>
  151. <el-table-column align="center" label="物料编码" prop="materialId" />
  152. <el-table-column align="center" label="物料名称" prop="materialName"/>
  153. <el-table-column align="center" label="型号" prop="modelNumber" />
  154. <el-table-column align="center" label="规格" prop="specification" />
  155. <el-table-column align="center" label="单位" prop="materialUnit" />
  156. <el-table-column align="center" label="数量(台)" >
  157. <template slot-scope="scope">
  158. {{ formatNumber(scope.row.quantity) }}
  159. </template>
  160. </el-table-column>
  161. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" v-if="scopes.row.isWeldSheet!=2">
  162. <template slot-scope="scope">
  163. <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}">
  164. <el-button type="success">
  165. 操作<i class="el-icon-arrow-down el-icon--right"></i>
  166. </el-button>
  167. <el-dropdown-menu slot="dropdown">
  168. <el-dropdown-item icon="el-icon-edit" command="catxlh">流转卡序列号</el-dropdown-item>
  169. </el-dropdown-menu>
  170. </el-dropdown>
  171. </template>
  172. </el-table-column>
  173. </el-table>
  174. </template>
  175. </el-table-column>
  176. <el-table-column
  177. label="任务编号"
  178. align="center"
  179. prop="planNumber">
  180. </el-table-column>
  181. <el-table-column
  182. label="订单号"
  183. align="center"
  184. prop="orderNumber">
  185. </el-table-column>
  186. <el-table-column
  187. prop="creationtimeString"
  188. label="单据日期"
  189. align="center">
  190. <template slot-scope="scope">
  191. {{ formatDateTime(scope.row.creationtimeString) }}
  192. </template>
  193. </el-table-column>
  194. <!-- <el-table-column-->
  195. <!-- label="合同号"-->
  196. <!-- align="center"-->
  197. <!-- prop="contractNumber">-->
  198. <!-- </el-table-column>-->
  199. <el-table-column
  200. label="总台数"
  201. align="center"
  202. prop="quantity">
  203. <template slot-scope="scope">
  204. {{ formatNumber(scope.row.quantity) }}
  205. </template>
  206. </el-table-column>
  207. <el-table-column
  208. label="特殊要求"
  209. align="center"
  210. :show-overflow-tooltip='true'
  211. width="200"
  212. prop="specialRequirements">
  213. </el-table-column>
  214. <!-- <el-table-column-->
  215. <!-- label="完成时间"-->
  216. <!-- align="center"-->
  217. <!-- prop="completionTime">-->
  218. <!-- </el-table-column>-->
  219. <el-table-column
  220. label="完成时间"
  221. align="center"
  222. prop="completionTime">
  223. <template slot-scope="scope">
  224. {{ formatDateTime(scope.row.completionTime) }}
  225. </template>
  226. </el-table-column>
  227. <el-table-column
  228. label="计划状态"
  229. align="center"
  230. prop="taskStatus">
  231. <template v-slot="scope">
  232. <dict-tag :options="dict.type.tczt" :value="scope.row.taskStatus"/>
  233. </template>
  234. </el-table-column>
  235. <el-table-column
  236. label="备注"
  237. align="center"
  238. :show-overflow-tooltip='true'
  239. prop="remark">
  240. </el-table-column>
  241. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  242. <template slot-scope="scope">
  243. <el-dropdown @command="(command)=>{handleCommand(command, scope.row)}">
  244. <el-button type="warning">
  245. 操作<i class="el-icon-arrow-down el-icon--right"></i>
  246. </el-button>
  247. <el-dropdown-menu slot="dropdown">
  248. <el-dropdown-item icon="el-icon-edit" command="handleUpdate">修改</el-dropdown-item>
  249. <el-dropdown-item icon="el-icon-delete" command="handleDelete">删除</el-dropdown-item>
  250. <el-dropdown-item icon="el-icon-edit" v-if="scope.row.taskStatus==0" command="tc">投产</el-dropdown-item>
  251. <el-dropdown-item icon="el-icon-s-open" v-if="scope.row.isWeldSheet==1" command="printFlowCard">打印流转卡</el-dropdown-item>
  252. <el-dropdown-item icon="el-icon-s-open" v-if="scope.row.isWeldSheet!=1" command="printWeldCard">打印流焊接单</el-dropdown-item>
  253. </el-dropdown-menu>
  254. </el-dropdown>
  255. </template>
  256. </el-table-column>
  257. </el-table>
  258. <pagination
  259. v-show="total > 0"
  260. :total="total"
  261. :page.sync="queryParams.pageNum"
  262. :limit.sync="queryParams.pageSize"
  263. @pagination="getPlanList"
  264. />
  265. <!-- 自动排产 -->
  266. <el-dialog title="自动排产" :visible.sync="autoShow" width="1200px">
  267. <el-form
  268. :model="autoForm"
  269. ref="autoForm"
  270. :rules="autoFormRules"
  271. label-width="80px"
  272. :inline="false"
  273. size="normal"
  274. >
  275. <el-form-item label="排产类型" prop="schedulingType">
  276. <!-- <el-input v-model="form.schedulingType"></el-input> -->
  277. <el-select
  278. v-model="autoForm.schedulingType"
  279. placeholder="请选择排产类型"
  280. style="width: 1078px"
  281. clearable
  282. filterable
  283. >
  284. <el-option
  285. v-for="item in dict.type.schedule_type"
  286. :key="item.value"
  287. :label="item.label"
  288. :value="item.value"
  289. >
  290. </el-option>
  291. </el-select>
  292. </el-form-item>
  293. </el-form>
  294. <div class="noneHoveTable">
  295. <!--物料清单表格-->
  296. <el-table
  297. :data="bomFormTableData"
  298. style="width: 100%"
  299. :row-class-name="tableRowClassName">
  300. <el-table-column
  301. prop="fbillno"
  302. label="单据编号"
  303. align="center">
  304. </el-table-column>
  305. <el-table-column
  306. prop="demandDocument"
  307. label="订单号"
  308. align="center">
  309. </el-table-column>
  310. <el-table-column
  311. prop="fmaterialid2Fnumber"
  312. label="物料编码"
  313. align="center">
  314. </el-table-column>
  315. <el-table-column
  316. show-overflow-tooltip
  317. prop="fmaterialname1"
  318. label="物料名称"
  319. align="center">
  320. </el-table-column>
  321. <el-table-column
  322. prop="fPonpBaseproperty"
  323. align="center"
  324. show-overflow-tooltip
  325. label="型号">
  326. </el-table-column>
  327. <el-table-column
  328. show-overflow-tooltip
  329. prop="fPonpBaseproperty"
  330. align="center"
  331. label="规格">
  332. </el-table-column>
  333. <!-- <el-table-column-->
  334. <!-- prop="workingProcedure"-->
  335. <!-- align="center"-->
  336. <!-- label="工作工序">-->
  337. <!-- </el-table-column>-->
  338. <el-table-column
  339. prop="fmustqty"
  340. align="center"
  341. label="需求量">
  342. </el-table-column>
  343. <el-table-column
  344. prop="sumQuantity"
  345. align="center"
  346. label="物料库存量">
  347. </el-table-column>
  348. </el-table>
  349. </div>
  350. <pagination
  351. v-show="qtTotal > 0"
  352. :total="qtTotal"
  353. :page.sync="qtQueryParams.pageNum"
  354. :limit.sync="qtQueryParams.pageSize"
  355. @pagination="viewPlannedMaterialStatus"
  356. />
  357. <template #footer>
  358. <span>
  359. <el-button type="info" @click="autoShow = false">取消</el-button>
  360. <el-button type="primary" @click="autoConfirmHandler"
  361. >确认</el-button
  362. >
  363. </span>
  364. </template>
  365. </el-dialog>
  366. <!-- 投产表单-->
  367. <el-dialog title="计划投产" :visible.sync="tcShow" width="1000px">
  368. <el-form
  369. :model="tcForm"
  370. ref="tcForm"
  371. :rules="tcFormRules"
  372. label-width="80px"
  373. >
  374. <el-row type="flex" class="row-bg" justify="space-between">
  375. <el-col :span="24">
  376. <el-form-item label="流程模板" prop="processKey">
  377. <el-select
  378. v-model="tcForm.processKey"
  379. placeholder="请选择流程模板类型"
  380. style="width: 880px"
  381. >
  382. <el-option
  383. v-for="item in listProcess"
  384. :key="item.resultMap.value"
  385. :label="item.resultMap.processName"
  386. :value="item.resultMap.processKey"
  387. >
  388. </el-option>
  389. </el-select>
  390. </el-form-item>
  391. </el-col>
  392. </el-row>
  393. <el-row type="flex" class="row-bg" justify="space-between">
  394. <el-col :span="24">
  395. <el-form-item label="任务名称" prop="planName">
  396. <el-input v-model="tcForm.planName" placeholder="请输入任务名称" />
  397. </el-form-item>
  398. </el-col>
  399. </el-row>
  400. <el-row type="flex" class="row-bg" justify="space-between">
  401. <el-col :span="24">
  402. <el-form-item label="投产数量" prop="quantity">
  403. <el-input v-model="tcForm.quantity" placeholder="请输入投产数量" />
  404. </el-form-item>
  405. </el-col>
  406. <!-- <el-col :span="12">-->
  407. <!-- <el-form-item label="完成时间" prop="completiontime">-->
  408. <!-- <el-input v-model="tcForm.completiontime" placeholder="请输入完成时间" />-->
  409. <!-- </el-form-item>-->
  410. <!-- </el-col>-->
  411. </el-row>
  412. <!-- <el-row type="flex" class="row-bg" justify="space-between">-->
  413. <!-- <el-col :span="12">-->
  414. <!-- <el-form-item label="数据" prop="requirementDate">-->
  415. <!-- <el-input v-model="tcForm.requirementDate" placeholder="请输入数据" />-->
  416. <!-- </el-form-item>-->
  417. <!-- </el-col>-->
  418. <!-- <el-col :span="12">-->
  419. <!-- <el-form-item label="机壳-端盖" prop="shell">-->
  420. <!-- <el-input v-model="tcForm.shell" placeholder="请输入机壳-端盖" />-->
  421. <!-- </el-form-item>-->
  422. <!-- </el-col>-->
  423. <!-- </el-row>-->
  424. <!-- <el-row type="flex" class="row-bg" justify="space-between">-->
  425. <!-- <el-col :span="12">-->
  426. <!-- <el-form-item label="开关" prop="switching">-->
  427. <!-- <el-input v-model="tcForm.switching" placeholder="请输入开关" />-->
  428. <!-- </el-form-item>-->
  429. <!-- </el-col>-->
  430. <!-- <el-col :span="12">-->
  431. <!-- <el-form-item label="颜色" prop="colour">-->
  432. <!-- <el-input v-model="tcForm.colour" placeholder="请输入颜色" />-->
  433. <!-- </el-form-item>-->
  434. <!-- </el-col>-->
  435. <!-- </el-row>-->
  436. <!-- <el-row type="flex" class="row-bg" justify="space-between">-->
  437. <!-- <el-col :span="12">-->
  438. <!-- <el-form-item label="铭牌" prop="nameplate">-->
  439. <!-- <el-input v-model="tcForm.nameplate" placeholder="请输入铭牌" />-->
  440. <!-- </el-form-item>-->
  441. <!-- </el-col>-->
  442. <!-- <el-col :span="12">-->
  443. <!-- <el-form-item label="说明书" prop="instructions">-->
  444. <!-- <el-input v-model="tcForm.instructions" placeholder="请输入说明书" />-->
  445. <!-- </el-form-item>-->
  446. <!-- </el-col>-->
  447. <!-- </el-row>-->
  448. <!-- <el-row type="flex" class="row-bg" justify="space-between">-->
  449. <!-- <el-col :span="12">-->
  450. <!-- <el-form-item label="合格证" prop="certificate">-->
  451. <!-- <el-input v-model="tcForm.certificate" placeholder="请输入合格证" />-->
  452. <!-- </el-form-item>-->
  453. <!-- </el-col>-->
  454. <!-- <el-col :span="12">-->
  455. <!-- <el-form-item label="包装箱" prop="packingbox">-->
  456. <!-- <el-input v-model="tcForm.packingbox" placeholder="请输入包装箱" />-->
  457. <!-- </el-form-item>-->
  458. <!-- </el-col>-->
  459. <!-- </el-row>-->
  460. <!-- <el-row type="flex" class="row-bg" justify="space-between">-->
  461. <!-- <el-col :span="24">-->
  462. <!-- <el-form-item label="特殊要求" prop="certificate">-->
  463. <!-- <el-input v-model="tcForm.special" placeholder="请输入特殊要求" />-->
  464. <!-- </el-form-item>-->
  465. <!-- </el-col>-->
  466. <!-- </el-row>-->
  467. </el-form>
  468. <template #footer>
  469. <span>
  470. <el-button @click="tcShow=false">取消投产</el-button>
  471. <el-button type="primary" @click="confirmedCommissioning">确认投产</el-button
  472. >
  473. </span>
  474. </template>
  475. </el-dialog>
  476. <!-- 工序流转卡弹窗 -->
  477. <el-dialog :title="title" :visible.sync="flowCardOpen" width="1000px" append-to-body>
  478. <!--弹窗头部搜索-->
  479. <el-form :model="flowCardQueryParams" ref="flowCardQueryForm" size="small" :inline="true" label-width="68px">
  480. <el-form-item label="序列号" prop="serialNumber">
  481. <el-input
  482. v-model="flowCardQueryParams.serialNumber"
  483. placeholder="序列号"
  484. clearable
  485. @keyup.enter.native="flowCardQueryHandleQuery"
  486. />
  487. </el-form-item>
  488. <el-form-item>
  489. <el-button type="primary" icon="el-icon-search" size="mini" @click="flowCardQueryHandleQuery">搜索</el-button>
  490. <el-button icon="el-icon-refresh" size="mini" @click="flowCardQueryResetQuery">重置</el-button>
  491. <!-- <el-button type="danger" icon="el-icon-brush" size="mini" @click="flowCardBM">补码</el-button>-->
  492. </el-form-item>
  493. </el-form>
  494. <!--弹窗内的表格-->
  495. <el-table
  496. :data="flowCardQueryTableData"
  497. border
  498. v-loading="flowCardQueryLoading"
  499. style="width: 100%">
  500. <el-table-column
  501. type="selection"
  502. align="center"
  503. width="55">
  504. </el-table-column>
  505. <el-table-column align="center" prop="demandDocumentNumber" label="需求单据号"></el-table-column>
  506. <el-table-column align="center" prop="serialNumber" label="序列号"></el-table-column>
  507. <el-table-column align="center" prop="printQuantity" label="数量">
  508. <template slot-scope="scope">
  509. {{ formatToInteger(scope.row.printQuantity) }}
  510. </template>
  511. </el-table-column>
  512. </el-table>
  513. <pagination
  514. v-show="flowCardQueryTotal>0"
  515. :total="flowCardQueryTotal"
  516. :page.sync="flowCardQueryParams.pageNum"
  517. :limit.sync="flowCardQueryParams.pageSize"
  518. @pagination="getListFlowCard"
  519. />
  520. </el-dialog>
  521. </div>
  522. </el-card>
  523. </template>
  524. <script>
  525. import {addInstruction, getPlanList,getPlanOne,viewPlannedMaterialStatus } from "@/api/amichi/planTask/index";
  526. import {listTableData,btnCommonApi} from "@/api/tablelist/commonTable.js";
  527. import { getToken } from "@/utils/auth";
  528. import {jdProductionOrderPull,jdProductionWeldPlanOrderPullApi, listProductionCardFlow} from "@/api/amichi/productionCardFlow/productionCardFlow";
  529. export default {
  530. name: "listInfo",
  531. dicts: ["schedule_type","tczt","scheduling_state"],
  532. components: {
  533. },
  534. data() {
  535. return {
  536. flowCardQueryTableData:[],
  537. flowCardQueryLoading:true,
  538. flowCardQueryTotal:0,
  539. flowCardQueryParams:{
  540. documentNumber:"",
  541. pageNum: 1,
  542. pageSize: 10,
  543. },
  544. flowCardOpen:false,
  545. bomFormTableData: [],
  546. showCount:false,
  547. tableData:[],
  548. planOne:{},
  549. orderNumebrs:[],
  550. listProcess:[],
  551. tcForm:{},
  552. tcFormRules:{
  553. processKey: [
  554. { required: true, message: '请选择流程模版', trigger: 'change' }
  555. ],
  556. planName: [
  557. { required: true, message: '请输入任务名称', trigger: 'blur' }
  558. ]
  559. },
  560. tcShow:false,
  561. showSearch:true,
  562. // 自动排产数据 start
  563. autoShow: false,
  564. autoForm: {
  565. schedulingType: "",
  566. },
  567. autoFormRules: {
  568. schedulingType: [
  569. { required: true, message: "请选择排产类型", trigger: "change" },
  570. ],
  571. },
  572. // 自动排产数据 end
  573. QueryfromLoading: false,
  574. selection: [], //选中数组
  575. // 遮罩层
  576. loading: true,
  577. // 选中数组
  578. ids: [],
  579. // 非单个禁用
  580. single: true,
  581. // 非多个禁用
  582. multiple: true,
  583. // 总条数
  584. total: 0,
  585. // 弹出层标题
  586. title: "",
  587. // 表单参数
  588. form: {},
  589. rules: {},
  590. // excel共通导入数据
  591. upload: {
  592. // 是否显示弹出层
  593. open: false,
  594. // 弹出层标题(
  595. title: "",
  596. // 是否禁用上传
  597. isUploading: false,
  598. // 是否更新已经存在的数据
  599. updateSupport: 0,
  600. // 设置上传的请求头部
  601. headers: { Authorization: "Bearer " + getToken() },
  602. // 上传的地址
  603. url: process.env.VUE_APP_BASE_API1 + "common/uploadData",
  604. },
  605. qtQueryParams:{
  606. pageNum: 1, // 第几页
  607. pageSize: 10, // 每页大小
  608. ids:[]
  609. },
  610. qtTotal:0,
  611. selectionString:[],
  612. // 排序方式 默认降序
  613. sortOrder: true,
  614. // 共通查询参数接受子组件的参数
  615. queryParams: {
  616. pageNum: 1, // 第几页
  617. pageSize: 10, // 每页大小
  618. orderByColumn: "", // 根据某列排序
  619. isAsc: "", // desc(降序)或 asc(升序)
  620. tabPosition:"1"
  621. },
  622. };
  623. },
  624. computed: {
  625. formattedTableData() {
  626. return this.tableData.map(item => ({
  627. ...item,
  628. printQuantity: Math.floor(item.printQuantity)
  629. }));
  630. },
  631. shouldShowOperationColumn() {
  632. return this.tableData.some(row => row.isWeldSheet === 2);
  633. }
  634. },
  635. filters: {
  636. formatNumber(value) {
  637. if (!value) return '';
  638. return value.toFixed(2);
  639. }
  640. },
  641. created() {
  642. //查询表格数据
  643. this.getPlanList(this.queryParams);
  644. },
  645. mounted() {
  646. },
  647. methods: {
  648. formatDateTime(dateTimeString) {
  649. if (!dateTimeString) return '';
  650. const date = new Date(dateTimeString);
  651. const year = date.getFullYear();
  652. const month = String(date.getMonth() + 1).padStart(2, '0');
  653. const day = String(date.getDate()).padStart(2, '0');
  654. // const hours = String(date.getHours()).padStart(2, '0');
  655. // const minutes = String(date.getMinutes()).padStart(2, '0');
  656. // const seconds = String(date.getSeconds()).padStart(2, '0');
  657. return `${year}-${month}-${day}`;
  658. },
  659. //拉取焊接生产订单
  660. pullWeldPlan(){
  661. console.log("好吊,你居然能拉取焊接订单")
  662. jdProductionWeldPlanOrderPullApi().then(response => {
  663. if(response.code==200){
  664. this.$message.success("拉取场内计划成功");
  665. }else {
  666. this.$message.success("拉取场内计划失败");
  667. }
  668. });
  669. },
  670. printWeldCard(row){
  671. this.orderNumebrs=[];
  672. console.log("欢迎打印焊接单据")
  673. console.log(row.orderNumber);
  674. this.orderNumebrs.push(row.orderNumber)
  675. //完整写法
  676. this.$router.push({
  677. path: '/amichi/print/FlowWeldCardPrint',
  678. query: {
  679. "orderNumberS": this.orderNumebrs,
  680. }
  681. });
  682. },
  683. tabHandleClick(){
  684. console.log(this.queryParams.tabPosition,"dfakljdkjf")
  685. this.getPlanList();
  686. },
  687. formatToFixedTwo(value) {
  688. if (value !== null && value !== undefined) {
  689. return Number(value).toFixed(2);
  690. }
  691. return '';
  692. },
  693. formatToInteger(value) {
  694. if (value !== null && value !== undefined) {
  695. return Math.floor(value);
  696. }
  697. return '';
  698. },
  699. //拉取场内生产计划增量
  700. pullPlan(){
  701. jdProductionOrderPull().then(response => {
  702. if(response.code==200){
  703. this.$message.success("拉取场内计划成功");
  704. }else {
  705. this.$message.success("拉取场内计划失败");
  706. }
  707. });
  708. },
  709. //查询表单重置
  710. flowCardQueryResetQuery(){
  711. this.resetForm("flowCardQueryForm");
  712. this.getListFlowCard();
  713. },
  714. //查询
  715. flowCardQueryHandleQuery(){
  716. console.log("工序流转卡数据查询");
  717. this.getListFlowCard();
  718. },
  719. //补码操作
  720. flowCardBM(row){
  721. console.log("补码")
  722. },
  723. formatNumber(value) {
  724. if (value === null || value === undefined) return '';
  725. return Number(value).toFixed(2);
  726. },
  727. // 多选框选中数据
  728. handleSelectionChange(selectionString) {
  729. //过滤出是否是选了,已经排产的数据
  730. this.selectionString=selectionString
  731. this.ids = selectionString.map(item => item.id)
  732. this.selection=selectionString.map(item => item.id)
  733. this.single = selectionString.length!==1
  734. this.multiple = !selectionString.length
  735. },
  736. // 自动排产确认回调
  737. autoConfirmHandler() {
  738. this.$refs.autoForm.validate(async (valid) => {
  739. if (valid) {
  740. //走生成采购单逻辑
  741. //过滤出来需求量大于库存量的物料信息
  742. const outOfStockProducts = this.bomFormTableData.filter(product => product.stockQuantity < product.quantityToBeDelivered);
  743. console.log(outOfStockProducts)
  744. this.autoForm.bomFormTableDataS=outOfStockProducts;
  745. //走排产逻辑
  746. this.autoForm.planIds = this.selection;
  747. let res = await addInstruction(this.autoForm);
  748. if (res.code == 200) {
  749. //查询表格数据
  750. this.getPlanList(this.queryParams);
  751. this.$message.success("排产成功");
  752. this.autoShow = false;
  753. } else {
  754. this.$message.error(res.msg);
  755. }
  756. } else {
  757. console.log("error submit!!");
  758. return false;
  759. }
  760. });
  761. },
  762. // 自动排产回调
  763. handleAuto() {
  764. //判断是否排过产了
  765. let result = this.selectionString.filter(obj => String(obj.taskStatus) != "2");
  766. if(result.length>0){
  767. let strArry=[]
  768. result.forEach(item=>{
  769. strArry.push(item.planNumber)
  770. });
  771. this.$message.warning("计划编号: "+strArry.join(",")+"不是待排产状态,不能重新排产");
  772. return;
  773. }
  774. this.viewPlannedMaterialStatus();
  775. },
  776. viewPlannedMaterialStatus(){
  777. // 查询当前选择计划的物料清单信息
  778. this.qtQueryParams.ids=this.selection
  779. viewPlannedMaterialStatus(this.qtQueryParams).then(res=>{
  780. console.log(res.code==501);
  781. if(res.code==501){
  782. this.$message.warning(res.msg);
  783. return;
  784. }else {
  785. //自动排产弹框展示
  786. this.bomFormTableData=res.rows;
  787. this.qtTotal=res.total;
  788. this.autoShow = true;
  789. }
  790. })
  791. },
  792. //物料不够就变红
  793. tableRowClassName({row, rowIndex}) {
  794. if (row.fmustqty -row.sumQuantity>0) {
  795. return 'warning-row';
  796. }else {
  797. return '';
  798. }
  799. },
  800. //确认投产
  801. confirmedCommissioning() {
  802. this.$refs["tcForm"].validate((valid) => {
  803. if (valid) {
  804. let objParam = {
  805. "basicMap": {
  806. btnKey: "69e23221-5054-4f93-84c5-ba5cb9efd4c2",
  807. btnType: "INITIATED",
  808. tableName: "production_planning_management",
  809. visible:true
  810. },
  811. btnParametersMap: {task_status: "1"},
  812. commMap:{
  813. process_key: this.tcForm.processKey,
  814. plan_name:this.tcForm.planName,
  815. },
  816. conditionMap: {id: this.tcForm.id}
  817. };
  818. console.log(objParam);
  819. btnCommonApi(objParam).then(res=>{
  820. console.log(res);
  821. if(res.code=200){
  822. this.$modal.msgSuccess("投产成功");
  823. this.getPlanList();
  824. this.tcShow=false;
  825. }
  826. })
  827. } else {
  828. return false;
  829. }
  830. });
  831. },
  832. handleExport(){},
  833. handleDelete(){},
  834. handleUpdate(){},
  835. //下拉菜单点击事件
  836. handleCommand(command, row) {
  837. switch (command) {
  838. case "handleUpdate":
  839. this.handleUpdate(row)
  840. break;
  841. case "handleDelete":
  842. this.handleDelete(row)
  843. break;
  844. case "tc":
  845. this.tc(row)
  846. break;
  847. case "printFlowCard":
  848. this.printFlowCard(row);
  849. break;
  850. case "catxlh":
  851. this.catxlh(row);
  852. break;
  853. case "printWeldCard":
  854. this.printWeldCard(row);
  855. break;
  856. default:
  857. break;
  858. }
  859. },
  860. //打印流转卡
  861. printFlowCard(row){
  862. this.orderNumebrs=[];
  863. console.log("欢迎打印工序流转卡")
  864. console.log(row.orderNumber);
  865. this.orderNumebrs.push(row.orderNumber)
  866. //完整写法
  867. this.$router.push({
  868. path: '/amichi/print/FlowCardPrint',
  869. query: {
  870. "orderNumberS": this.orderNumebrs,
  871. }
  872. });
  873. },
  874. //展示序列号
  875. catxlh(row){
  876. this.flowCardOpen=true;
  877. this.title = "工序流转卡列表";
  878. this.flowCardQueryParams={
  879. demandDocumentNumber:row.demandDocument,
  880. }
  881. this.getListFlowCard();
  882. },
  883. getListFlowCard(){
  884. this.flowCardQueryLoading = true;
  885. listProductionCardFlow(this.flowCardQueryParams).then(response => {
  886. this.flowCardQueryTableData = response.rows;
  887. this.flowCardQueryTotal = response.total;
  888. this.flowCardQueryLoading = false;
  889. });
  890. },
  891. //投产
  892. tc(row){
  893. console.log(row);
  894. if(row.taskStatus==2){
  895. this.$modal.msgWarning("当前计划未排产请先排产");
  896. return;
  897. }
  898. this.tcShow=true;
  899. this.queryProcessTemplate();
  900. // this.getPlanOne({"id":row.id});
  901. this.tcForm=row;
  902. },
  903. //查询一条计划信息
  904. getPlanOne(obj){
  905. getPlanOne(obj).then(res => {
  906. console.log(res);
  907. this.planOne=res.data;
  908. this.tcForm=res.data;
  909. })
  910. },
  911. //查询流程模板
  912. queryProcessTemplate(){
  913. let myQueryParams={
  914. basicMap:{},
  915. queryMap:{
  916. del_flag:'0',
  917. process_version:'0'
  918. }
  919. };
  920. myQueryParams.basicMap={
  921. tableName:'bpm_process'
  922. };
  923. listTableData(myQueryParams).then(res => {
  924. console.log(res.data)
  925. this.listProcess=res.rows;
  926. })
  927. },
  928. //新增计划
  929. handleAdd(){
  930. },
  931. //计划列表渲染
  932. getPlanList(){
  933. this.queryParams.planType=0
  934. getPlanList(this.queryParams).then((res) => {
  935. console.log(res.data);
  936. this.tableData=res.rows;
  937. this.total = res.total;
  938. });
  939. },
  940. /** 重置按钮操作 */
  941. resetQueryDz() {
  942. this.resetForm("queryForm");
  943. this.handleQueryDz();
  944. },
  945. /** 搜索按钮操作 */
  946. handleQueryDz() {
  947. this.queryParams.pageNum = 1;
  948. this.getPlanList(this.queryParams);
  949. },
  950. }
  951. };
  952. </script>
  953. <style scoped lang="scss">
  954. .dialog_loading {
  955. display: flex;
  956. justify-content: center;
  957. width: 100%;
  958. font-size: 30px;
  959. }
  960. .el-tooltip__popper{
  961. max-width:20%;
  962. }
  963. .el-tooltip__popper,.el-tooltip__popper.is-dark{
  964. background:rgb(48, 65, 86) !important;
  965. color: #fff !important;
  966. line-height: 24px;
  967. }
  968. ::v-deep .el-table .warning-row{
  969. background: red !important;
  970. //color: #fff;
  971. }
  972. ::v-deep .el-table .success-row {
  973. background: red !important;
  974. //color: #fff;
  975. }
  976. /* 修改鼠标经过表格的颜色 */
  977. .noneHoveTable .el-table--enable-row-hover .el-table__body tr:hover>td{
  978. background-color: #FAFAFA !important;
  979. }
  980. </style>