machine_list.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. <template>
  2. <div class="app-container">
  3. <!-- 筛选条件 -->
  4. <div>
  5. <el-form
  6. ref="screenForm"
  7. :model="screenForm"
  8. label-width="70px"
  9. size="small"
  10. label-position="left"
  11. >
  12. <el-row :gutter="20">
  13. <el-col :xs="24" :sm="12" :lg="6">
  14. <el-form-item label="名称" prop="name">
  15. <el-input
  16. placeholder="请输入名称"
  17. v-model="screenForm.name"
  18. ></el-input>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :xs="24" :sm="12" :lg="6">
  22. <el-form-item label="型号" prop="type">
  23. <el-input
  24. placeholder="请输入型号"
  25. v-model="screenForm.type"
  26. ></el-input>
  27. </el-form-item>
  28. </el-col>
  29. <el-col :xs="24" :sm="12" :lg="6">
  30. <el-form-item label="编码" prop="number">
  31. <el-input
  32. placeholder="请输入编码"
  33. v-model="screenForm.number"
  34. ></el-input>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :xs="24" :sm="12" :lg="6">
  38. <el-form-item label="体积" prop="volume">
  39. <el-input
  40. placeholder="请输入体积"
  41. v-model="screenForm.volume"
  42. ></el-input>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :xs="24" :sm="24" :lg="24" class="tr">
  46. <el-form-item label="">
  47. <el-button size="small" @click="resetScreenForm">清空</el-button>
  48. <el-button size="small" type="primary" @click="submitScreenForm"
  49. >搜索</el-button
  50. >
  51. </el-form-item>
  52. </el-col>
  53. </el-row>
  54. </el-form>
  55. </div>
  56. <!-- 按钮 -->
  57. <div class="btn-group clearfix">
  58. <div class="fl">
  59. <el-button
  60. type="primary"
  61. size="small"
  62. @click="(showDialogForm = true), (type = 1)"
  63. >新增</el-button
  64. >
  65. <el-popconfirm
  66. confirm-button-text="好的"
  67. cancel-button-text="不用了"
  68. icon="el-icon-info"
  69. icon-color="red"
  70. title="内容确定删除吗?"
  71. @onConfirm="hanleDeleteAll"
  72. >
  73. <el-button
  74. slot="reference"
  75. type="primary"
  76. size="small"
  77. class="textColor el-popover-left"
  78. >删除</el-button
  79. >
  80. </el-popconfirm>
  81. </div>
  82. <div class="fr">
  83. <el-upload
  84. class="import-btn"
  85. :action="baseURL + 'student/import'"
  86. :http-request="handleImport"
  87. :file-list="importFileList"
  88. >
  89. <el-button type="primary" size="small">导入</el-button>
  90. </el-upload>
  91. <el-button type="primary" size="small" @click="handleExport"
  92. >导出</el-button
  93. >
  94. <el-button type="primary" size="small">打印</el-button>
  95. </div>
  96. </div>
  97. <div class="mymain-container">
  98. <!-- 列表 -->
  99. <div class="table">
  100. <el-table
  101. v-loading="listLoading"
  102. :data="dataList"
  103. element-loading-text="Loading"
  104. border
  105. fit
  106. highlight-current-row
  107. @select-all="hanleSelectAll"
  108. @select="hanleSelectAll"
  109. stripe
  110. >
  111. <el-table-column type="selection" align="center"></el-table-column>
  112. <el-table-column
  113. align="center"
  114. label="内机名称"
  115. prop="innerMachineName"
  116. min-width="160"
  117. show-overflow-tooltip
  118. ></el-table-column>
  119. <el-table-column
  120. align="center"
  121. label="内机型号"
  122. prop="innerMachineType"
  123. min-width="160"
  124. show-overflow-tooltip
  125. ></el-table-column>
  126. <el-table-column
  127. align="center"
  128. label="编码"
  129. prop="innerMachineNumber"
  130. min-width="160"
  131. show-overflow-tooltip
  132. ></el-table-column>
  133. <el-table-column
  134. align="center"
  135. label="内机体积"
  136. prop="innerMachineVolume"
  137. min-width="160"
  138. show-overflow-tooltip
  139. ></el-table-column>
  140. <el-table-column
  141. align="center"
  142. label="外机名称"
  143. prop="outsideMachineName"
  144. min-width="160"
  145. show-overflow-tooltip
  146. ></el-table-column>
  147. <el-table-column
  148. align="center"
  149. label="外机型号"
  150. prop="outsideMachineType"
  151. min-width="160"
  152. show-overflow-tooltip
  153. ></el-table-column>
  154. <el-table-column
  155. align="center"
  156. label="外机编码"
  157. prop="outsideMachineNumber"
  158. min-width="160"
  159. show-overflow-tooltip
  160. ></el-table-column>
  161. <el-table-column
  162. align="center"
  163. label="外机体积"
  164. prop="outsideMachineVolume"
  165. min-width="160"
  166. show-overflow-tooltip
  167. ></el-table-column>
  168. <el-table-column
  169. align="center"
  170. label="配件1"
  171. prop="parts1"
  172. min-width="160"
  173. show-overflow-tooltip
  174. ></el-table-column>
  175. <el-table-column
  176. align="center"
  177. label="配件2"
  178. prop="parts2"
  179. min-width="160"
  180. show-overflow-tooltip
  181. ></el-table-column>
  182. <el-table-column
  183. align="center"
  184. label="创建人"
  185. prop="createBy"
  186. min-width="160"
  187. show-overflow-tooltip
  188. ></el-table-column>
  189. <el-table-column
  190. align="center"
  191. label="创建时间"
  192. prop="createTime"
  193. min-width="160"
  194. show-overflow-tooltip
  195. ></el-table-column>
  196. <el-table-column
  197. align="center"
  198. label="更新人"
  199. prop="updateBy"
  200. min-width="160"
  201. show-overflow-tooltip
  202. ></el-table-column>
  203. <el-table-column
  204. align="center"
  205. label="更新时间"
  206. prop="updateTime"
  207. min-width="160"
  208. show-overflow-tooltip
  209. ></el-table-column>
  210. <el-table-column
  211. align="center"
  212. label="操作"
  213. min-width="160"
  214. show-overflow-tooltip
  215. >
  216. <template slot-scope="scope">
  217. <el-button
  218. type="text"
  219. class="textColor"
  220. @click="editFn(scope.row.id,scope.row)"
  221. >编辑</el-button
  222. >
  223. <el-popconfirm
  224. confirm-button-text="好的"
  225. cancel-button-text="不用了"
  226. icon="el-icon-info"
  227. icon-color="red"
  228. title="内容确定删除吗?"
  229. @onConfirm="hanleDeleteAll(scope.row.id)"
  230. >
  231. <el-button
  232. slot="reference"
  233. type="text"
  234. class="textColor el-popover-left"
  235. >删除</el-button
  236. >
  237. </el-popconfirm>
  238. </template>
  239. </el-table-column>
  240. </el-table>
  241. </div>
  242. <!-- 分页 -->
  243. <div class="fr">
  244. <el-pagination
  245. @size-change="handleSizeChange"
  246. @current-change="handleCurrentChange"
  247. :current-page="currentPage"
  248. :page-sizes="[10, 20, 30, 50]"
  249. :page-size="10"
  250. layout="total, sizes, prev, pager, next, jumper"
  251. :total="listTotal"
  252. >
  253. </el-pagination>
  254. </div>
  255. </div>
  256. <!-- 弹窗 -->
  257. <el-dialog
  258. title="产品信息"
  259. :visible.sync="showDialogForm"
  260. width="30%"
  261. :show-close="false"
  262. :close-on-click-modal="false"
  263. >
  264. <el-form
  265. ref="diaLogForm"
  266. :model="diaLogForm"
  267. label-width="70px"
  268. size="small"
  269. label-position="left"
  270. >
  271. <el-form-item label="内机名称">
  272. <!-- <el-select
  273. v-model="diaLogForm.positionName"
  274. multiple
  275. placeholder="请选择"
  276. >
  277. <el-option
  278. v-for="item in options"
  279. :key="item.value"
  280. :label="item.label"
  281. :value="item.value"
  282. >
  283. </el-option>
  284. </el-select> -->
  285. <el-input v-model="diaLogForm.innerMachineName"></el-input>
  286. </el-form-item>
  287. <el-form-item label="内机型号">
  288. <el-input v-model="diaLogForm.innerMachineType"></el-input>
  289. </el-form-item>
  290. <el-form-item label="内机编码">
  291. <el-input v-model="diaLogForm.innerMachineNumber"></el-input>
  292. </el-form-item>
  293. <el-form-item label="内机体积">
  294. <el-input v-model="diaLogForm.innerMachineVolume"></el-input>
  295. </el-form-item>
  296. <el-form-item label="外机名称">
  297. <!-- <el-select
  298. v-model="diaLogForm.positionName"
  299. multiple
  300. placeholder="请选择"
  301. >
  302. <el-option
  303. v-for="item in options"
  304. :key="item.value"
  305. :label="item.label"
  306. :value="item.value"
  307. >
  308. </el-option>
  309. </el-select> -->
  310. <el-input v-model="diaLogForm.outsideMachineName"></el-input>
  311. </el-form-item>
  312. <el-form-item label="外机机型号">
  313. <el-input v-model="diaLogForm.outsideMachineType"></el-input>
  314. </el-form-item>
  315. <el-form-item label="外机编码">
  316. <el-input v-model="diaLogForm.outsideMachineNumber"></el-input>
  317. </el-form-item>
  318. <el-form-item label="外机体积">
  319. <el-input v-model="diaLogForm.outsideMachineVolume"></el-input>
  320. </el-form-item>
  321. <!-- <el-form-item label="配件1">
  322. <el-input v-model="diaLogForm.alert"></el-input>
  323. </el-form-item>
  324. <el-form-item label="配件2">
  325. <el-input v-model="diaLogForm.alert"></el-input>
  326. </el-form-item> -->
  327. </el-form>
  328. <div slot="footer" class="dialog-footer">
  329. <el-button @click="(showDialogForm = false), resetInfo()"
  330. >取 消</el-button
  331. >
  332. <el-button type="primary" @click="hanleInfo">确 定</el-button>
  333. </div>
  334. </el-dialog>
  335. </div>
  336. </template>
  337. <script>
  338. import Mixin from "@/mixin/index";
  339. import { downloadFiles, handleImport } from "@/utils/util";
  340. import {
  341. getMachineLlist,
  342. getMachineAdd,
  343. getMachineDel,
  344. getMachineEdit,
  345. } from "@/api/basic_data/material";
  346. export default {
  347. mixins: [Mixin],
  348. data() {
  349. return {
  350. currentPage: 1, // 当前页码
  351. pageSize: 10, // 每页数量
  352. listTotal: 0, // 列表总数
  353. options: [
  354. {
  355. value: "选项1",
  356. label: "1",
  357. },
  358. {
  359. value: "选项2",
  360. label: "2",
  361. },
  362. {
  363. value: "选项3",
  364. label: "3",
  365. },
  366. {
  367. value: "选项4",
  368. label: "4",
  369. },
  370. {
  371. value: "选项5",
  372. label: "5",
  373. },
  374. ],
  375. diaLogForm: {
  376. id: null,
  377. innerMachineName: "",
  378. innerMachineNumber: "",
  379. innerMachineType: "",
  380. innerMachineVolume: 2,
  381. orgNumber: "",
  382. outsideMachineName: "",
  383. outsideMachineNumber: "",
  384. outsideMachineType: "",
  385. outsideMachineVolume: 2,
  386. },
  387. showDialogForm: false,
  388. dataList: [
  389. {
  390. name: "新风机XXX内机",
  391. number: "DSAFSAF232312321",
  392. code: "DSAFSAF232312321",
  393. volume: "23M^3",
  394. outName: "新风机XXX外机",
  395. outNumber: "DSAFSAF232312321",
  396. updateUser: "DSAFSAF232312321",
  397. outVolume: "23M^3",
  398. partsOne: "",
  399. partsTwo: "",
  400. create: "LID",
  401. createDate: "2022-09-12 12:21",
  402. update: "LID",
  403. updateDate: "2022-09-12 12:21",
  404. },
  405. {
  406. name: "新风机XXX内机",
  407. number: "DSAFSAF232312321",
  408. code: "DSAFSAF232312321",
  409. volume: "23M^3",
  410. outName: "新风机XXX外机",
  411. outNumber: "DSAFSAF232312321",
  412. updateUser: "DSAFSAF232312321",
  413. outVolume: "23M^3",
  414. partsOne: "",
  415. partsTwo: "",
  416. create: "LID",
  417. createDate: "2022-09-12 12:21",
  418. update: "LID",
  419. updateDate: "2022-09-12 12:21",
  420. },
  421. {
  422. name: "新风机XXX内机",
  423. number: "DSAFSAF232312321",
  424. code: "DSAFSAF232312321",
  425. volume: "23M^3",
  426. outName: "新风机XXX外机",
  427. outNumber: "DSAFSAF232312321",
  428. updateUser: "DSAFSAF232312321",
  429. outVolume: "23M^3",
  430. partsOne: "",
  431. partsTwo: "",
  432. create: "LID",
  433. createDate: "2022-09-12 12:21",
  434. update: "LID",
  435. updateDate: "2022-09-12 12:21",
  436. },
  437. {
  438. name: "新风机XXX内机",
  439. number: "DSAFSAF232312321",
  440. code: "DSAFSAF232312321",
  441. volume: "23M^3",
  442. outName: "新风机XXX外机",
  443. outNumber: "DSAFSAF232312321",
  444. updateUser: "DSAFSAF232312321",
  445. outVolume: "23M^3",
  446. partsOne: "",
  447. partsTwo: "",
  448. create: "LID",
  449. createDate: "2022-09-12 12:21",
  450. update: "LID",
  451. updateDate: "2022-09-12 12:21",
  452. },
  453. {
  454. name: "新风机XXX内机",
  455. number: "DSAFSAF232312321",
  456. code: "DSAFSAF232312321",
  457. volume: "23M^3",
  458. outName: "新风机XXX外机",
  459. outNumber: "DSAFSAF232312321",
  460. updateUser: "DSAFSAF232312321",
  461. outVolume: "23M^3",
  462. partsOne: "",
  463. partsTwo: "",
  464. create: "LID",
  465. createDate: "2022-09-12 12:21",
  466. update: "LID",
  467. updateDate: "2022-09-12 12:21",
  468. },
  469. ],
  470. searchForm: {
  471. name: "",
  472. number: "",
  473. type: "",
  474. volume: "",
  475. },
  476. type: null,
  477. };
  478. },
  479. methods: {
  480. editFn(id, row) {
  481. this.type=2
  482. this.diaLogForm = {
  483. id,
  484. innerMachineName: row.innerMachineName,
  485. innerMachineNumber: row.innerMachineNumber,
  486. innerMachineType: row.innerMachineType,
  487. innerMachineVolume: row.innerMachineVolume,
  488. orgNumber: row.orgNumber,
  489. outsideMachineName: row.outsideMachineName,
  490. outsideMachineNumber: row.outsideMachineNumber,
  491. outsideMachineType: row.outsideMachineType,
  492. outsideMachineVolume: row.outsideMachineVolume,
  493. };
  494. this.showDialogForm = true;
  495. },
  496. hanleInfo() {
  497. if (this.type === 1) {
  498. getMachineAdd(this.diaLogForm).then((res) => {
  499. this.$successMsg("保存成功");
  500. this.getList();
  501. });
  502. } else if (this.type === 2) {
  503. const params = {
  504. ...this.diaLogForm,
  505. };
  506. getMachineEdit(params).then((res) => {
  507. this.$successMsg("编辑成功");
  508. this.getList();
  509. });
  510. this.diaLogForm.id = null;
  511. }
  512. this.resetInfo();
  513. this.showDialogForm = false;
  514. },
  515. // 初始化数据
  516. getList() {
  517. this.listLoading = true;
  518. let params = {
  519. pageNum: this.currentPage,
  520. pageSize: this.pageSize,
  521. name: this.screenForm.name,
  522. number: this.screenForm.number,
  523. type: this.screenForm.type,
  524. volume: this.screenForm.volume,
  525. };
  526. getMachineLlist(params).then((res) => {
  527. this.dataList = res.data.records;
  528. this.listTotal = res.data.total;
  529. this.listLoading = false;
  530. console.log(this.dataList, 1233);
  531. });
  532. },
  533. // 导入
  534. async handleImport(param) {
  535. this.importLoading = true;
  536. const file = param.file;
  537. console.log(file, 123);
  538. const formData = new FormData();
  539. formData.append("file", file);
  540. let result = await handleImport("/stock/importToll", formData);
  541. this.importLoading = false;
  542. this.importFileList = [];
  543. if (result.code == 200) {
  544. this.$alert(result.message, "导入成功", {
  545. confirmButtonText: "确定",
  546. });
  547. this.getList();
  548. } else {
  549. this.$alert(result.message, "导入失败", {
  550. confirmButtonText: "确定",
  551. });
  552. }
  553. },
  554. handleExport() {
  555. let screenData = {
  556. customerName: this.screenForm.customerName,
  557. freeDay: this.screenForm.freeDay,
  558. toll: this.screenForm.toll,
  559. };
  560. downloadFiles("/machine-record/export", screenData);
  561. },
  562. hanleDeleteAll(id) {
  563. console.log(id);
  564. this.hanleDeleteAllPromise(id).then((ids) => {
  565. getMachineDel(ids).then((res) => {
  566. this.getList();
  567. });
  568. });
  569. },
  570. resetInfo() {
  571. this.diaLogForm = {
  572. id: null,
  573. innerMachineName: "",
  574. innerMachineNumber: "",
  575. innerMachineType: "",
  576. innerMachineVolume: 2,
  577. orgNumber: "4564",
  578. outsideMachineName: "",
  579. outsideMachineNumber: "",
  580. outsideMachineType: "",
  581. outsideMachineVolume: 2,
  582. };
  583. },
  584. },
  585. };
  586. </script>
  587. <style lang="scss" scoped>
  588. ::v-deep .el-select {
  589. width: 100%;
  590. }
  591. </style>