machine_list.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  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="type"
  116. min-width="160"
  117. show-overflow-tooltip
  118. ></el-table-column>
  119. <el-table-column
  120. align="center"
  121. label="名称"
  122. prop="name"
  123. min-width="160"
  124. show-overflow-tooltip
  125. ></el-table-column>
  126. <el-table-column
  127. align="center"
  128. label="型号"
  129. prop="model"
  130. min-width="160"
  131. show-overflow-tooltip
  132. ></el-table-column>
  133. <el-table-column
  134. align="center"
  135. label="编码"
  136. prop="number"
  137. min-width="160"
  138. show-overflow-tooltip
  139. ></el-table-column>
  140. <el-table-column
  141. align="center"
  142. label="体积"
  143. prop="volume"
  144. min-width="160"
  145. show-overflow-tooltip
  146. ></el-table-column>
  147. <el-table-column
  148. align="center"
  149. label="创建人"
  150. prop="createBy"
  151. min-width="160"
  152. show-overflow-tooltip
  153. ></el-table-column>
  154. <el-table-column
  155. align="center"
  156. label="创建时间"
  157. prop="createTime"
  158. min-width="160"
  159. show-overflow-tooltip
  160. ></el-table-column>
  161. <el-table-column
  162. align="center"
  163. label="更新人"
  164. prop="updateBy"
  165. min-width="160"
  166. show-overflow-tooltip
  167. ></el-table-column>
  168. <el-table-column
  169. align="center"
  170. label="更新时间"
  171. prop="updateTime"
  172. min-width="160"
  173. show-overflow-tooltip
  174. ></el-table-column>
  175. <el-table-column
  176. align="center"
  177. label="操作"
  178. min-width="160"
  179. show-overflow-tooltip
  180. >
  181. <template slot-scope="scope">
  182. <el-button
  183. type="text"
  184. class="textColor"
  185. @click="editFn(scope.row.id, scope.row)"
  186. >编辑</el-button
  187. >
  188. <el-popconfirm
  189. confirm-button-text="好的"
  190. cancel-button-text="不用了"
  191. icon="el-icon-info"
  192. icon-color="red"
  193. title="内容确定删除吗?"
  194. @onConfirm="hanleDeleteAll(scope.row.id)"
  195. >
  196. <el-button
  197. slot="reference"
  198. type="text"
  199. class="textColor el-popover-left"
  200. >删除</el-button
  201. >
  202. </el-popconfirm>
  203. </template>
  204. </el-table-column>
  205. </el-table>
  206. </div>
  207. <!-- 分页 -->
  208. <div class="fr">
  209. <el-pagination
  210. @size-change="handleSizeChange"
  211. @current-change="handleCurrentChange"
  212. :current-page="currentPage"
  213. :page-sizes="[10, 20, 30, 50]"
  214. :page-size="10"
  215. layout="total, sizes, prev, pager, next, jumper"
  216. :total="listTotal"
  217. >
  218. </el-pagination>
  219. </div>
  220. </div>
  221. <!-- 弹窗 -->
  222. <el-dialog
  223. title="产品信息"
  224. :visible.sync="showDialogForm"
  225. width="30%"
  226. :show-close="false"
  227. :close-on-click-modal="false"
  228. >
  229. <el-form
  230. ref="diaLogForm"
  231. :model="diaLogForm"
  232. label-width="70px"
  233. size="small"
  234. label-position="left"
  235. >
  236. <el-form-item label="类型">
  237. <el-select v-model="diaLogForm.type" placeholder="请选择">
  238. <el-option
  239. v-for="item in distList"
  240. :key="item.dictCode"
  241. :label="item.dictValue"
  242. :value="item.dictCode"
  243. >
  244. </el-option>
  245. </el-select>
  246. </el-form-item>
  247. <el-form-item label="名称">
  248. <el-input v-model="diaLogForm.name" size="normal"></el-input>
  249. </el-form-item>
  250. <el-form-item label="型号">
  251. <el-input v-model="diaLogForm.model" size="normal"></el-input>
  252. </el-form-item>
  253. <el-form-item label="编码">
  254. <el-input v-model="diaLogForm.number" size="normal"></el-input>
  255. </el-form-item>
  256. <el-form-item label="体积">
  257. <el-input v-model="diaLogForm.volume" size="normal"></el-input>
  258. </el-form-item>
  259. </el-form>
  260. <div slot="footer" class="dialog-footer">
  261. <el-button @click="(showDialogForm = false), resetInfo()"
  262. >取 消</el-button
  263. >
  264. <el-button type="primary" @click="hanleInfo">确 定</el-button>
  265. </div>
  266. </el-dialog>
  267. </div>
  268. </template>
  269. <script>
  270. import Mixin from "@/mixin/index";
  271. import { downloadFiles, handleImport } from "@/utils/util";
  272. import {
  273. getMachineLlist,
  274. getMachineAdd,
  275. getMachineDel,
  276. getMachineEdit,
  277. getDistList,
  278. getMaterialList,
  279. } from "@/api/basic_data/material";
  280. export default {
  281. mixins: [Mixin],
  282. data() {
  283. return {
  284. currentPage: 1, // 当前页码
  285. pageSize: 10, // 每页数量
  286. listTotal: 0, // 列表总数
  287. options: [
  288. {
  289. value: "选项1",
  290. label: "1",
  291. },
  292. {
  293. value: "选项2",
  294. label: "2",
  295. },
  296. {
  297. value: "选项3",
  298. label: "3",
  299. },
  300. {
  301. value: "选项4",
  302. label: "4",
  303. },
  304. {
  305. value: "选项5",
  306. label: "5",
  307. },
  308. ],
  309. diaLogForm: {
  310. id: null,
  311. name: "",
  312. number: "",
  313. model: "",
  314. volume: "",
  315. type: "",
  316. },
  317. showDialogForm: false,
  318. dataList: [
  319. {
  320. name: "新风机XXX内机",
  321. number: "DSAFSAF232312321",
  322. code: "DSAFSAF232312321",
  323. volume: "23M^3",
  324. outName: "新风机XXX外机",
  325. outNumber: "DSAFSAF232312321",
  326. updateUser: "DSAFSAF232312321",
  327. outVolume: "23M^3",
  328. partsOne: "",
  329. partsTwo: "",
  330. create: "LID",
  331. createDate: "2022-09-12 12:21",
  332. update: "LID",
  333. updateDate: "2022-09-12 12:21",
  334. },
  335. {
  336. name: "新风机XXX内机",
  337. number: "DSAFSAF232312321",
  338. code: "DSAFSAF232312321",
  339. volume: "23M^3",
  340. outName: "新风机XXX外机",
  341. outNumber: "DSAFSAF232312321",
  342. updateUser: "DSAFSAF232312321",
  343. outVolume: "23M^3",
  344. partsOne: "",
  345. partsTwo: "",
  346. create: "LID",
  347. createDate: "2022-09-12 12:21",
  348. update: "LID",
  349. updateDate: "2022-09-12 12:21",
  350. },
  351. {
  352. name: "新风机XXX内机",
  353. number: "DSAFSAF232312321",
  354. code: "DSAFSAF232312321",
  355. volume: "23M^3",
  356. outName: "新风机XXX外机",
  357. outNumber: "DSAFSAF232312321",
  358. updateUser: "DSAFSAF232312321",
  359. outVolume: "23M^3",
  360. partsOne: "",
  361. partsTwo: "",
  362. create: "LID",
  363. createDate: "2022-09-12 12:21",
  364. update: "LID",
  365. updateDate: "2022-09-12 12:21",
  366. },
  367. {
  368. name: "新风机XXX内机",
  369. number: "DSAFSAF232312321",
  370. code: "DSAFSAF232312321",
  371. volume: "23M^3",
  372. outName: "新风机XXX外机",
  373. outNumber: "DSAFSAF232312321",
  374. updateUser: "DSAFSAF232312321",
  375. outVolume: "23M^3",
  376. partsOne: "",
  377. partsTwo: "",
  378. create: "LID",
  379. createDate: "2022-09-12 12:21",
  380. update: "LID",
  381. updateDate: "2022-09-12 12:21",
  382. },
  383. {
  384. name: "新风机XXX内机",
  385. number: "DSAFSAF232312321",
  386. code: "DSAFSAF232312321",
  387. volume: "23M^3",
  388. outName: "新风机XXX外机",
  389. outNumber: "DSAFSAF232312321",
  390. updateUser: "DSAFSAF232312321",
  391. outVolume: "23M^3",
  392. partsOne: "",
  393. partsTwo: "",
  394. create: "LID",
  395. createDate: "2022-09-12 12:21",
  396. update: "LID",
  397. updateDate: "2022-09-12 12:21",
  398. },
  399. ],
  400. searchForm: {
  401. name: "",
  402. number: "",
  403. type: "",
  404. volume: "",
  405. },
  406. type: null,
  407. };
  408. },
  409. methods: {
  410. editFn(id, row) {
  411. this.type = 2;
  412. this.diaLogForm = {
  413. id,
  414. name: row.name,
  415. number: row.number,
  416. model: row.model,
  417. volume: row.volume,
  418. type: row.type,
  419. };
  420. this.showDialogForm = true;
  421. },
  422. hanleInfo() {
  423. if (this.type === 1) {
  424. getMachineAdd(this.diaLogForm).then((res) => {
  425. this.$successMsg("保存成功");
  426. this.getList();
  427. });
  428. } else if (this.type === 2) {
  429. const params = {
  430. ...this.diaLogForm,
  431. };
  432. getMachineEdit(params).then((res) => {
  433. this.$successMsg("编辑成功");
  434. this.getList();
  435. });
  436. this.diaLogForm.id = null;
  437. }
  438. this.resetInfo();
  439. this.showDialogForm = false;
  440. },
  441. // 初始化数据
  442. getList() {
  443. this.listLoading = true;
  444. let params = {
  445. pageNum: this.currentPage,
  446. pageSize: this.pageSize,
  447. name: this.screenForm.name,
  448. number: this.screenForm.number,
  449. type: this.screenForm.type,
  450. volume: this.screenForm.volume,
  451. };
  452. getMachineLlist(params).then((res) => {
  453. this.dataList = res.data.records;
  454. this.listTotal = res.data.total;
  455. this.listLoading = false;
  456. console.log(this.dataList, 1233);
  457. });
  458. getDistList({ sysDictEnum: "MACHINE_CONFIGURE" }).then((res) => {
  459. this.distList = res.data;
  460. console.log(res, 123);
  461. });
  462. },
  463. // 导入
  464. async handleImport(param) {
  465. this.importLoading = true;
  466. const file = param.file;
  467. console.log(file, 123);
  468. const formData = new FormData();
  469. formData.append("file", file);
  470. let result = await handleImport("/stock/importToll", formData);
  471. this.importLoading = false;
  472. this.importFileList = [];
  473. if (result.code == 200) {
  474. this.$alert(result.message, "导入成功", {
  475. confirmButtonText: "确定",
  476. });
  477. this.getList();
  478. } else {
  479. this.$alert(result.message, "导入失败", {
  480. confirmButtonText: "确定",
  481. });
  482. }
  483. },
  484. handleExport() {
  485. let screenData = {
  486. customerName: this.screenForm.customerName,
  487. freeDay: this.screenForm.freeDay,
  488. toll: this.screenForm.toll,
  489. };
  490. downloadFiles("/machine-record/export", screenData);
  491. },
  492. hanleDeleteAll(id) {
  493. console.log(id);
  494. this.hanleDeleteAllPromise(id).then((ids) => {
  495. getMachineDel(ids).then((res) => {
  496. this.getList();
  497. });
  498. });
  499. },
  500. resetInfo() {
  501. this.diaLogForm = {
  502. id: null,
  503. innerMachineName: "",
  504. innerMachineNumber: "",
  505. innerMachineType: "",
  506. innerMachineVolume: 2,
  507. orgNumber: "4564",
  508. outsideMachineName: "",
  509. outsideMachineNumber: "",
  510. outsideMachineType: "",
  511. outsideMachineVolume: 2,
  512. };
  513. },
  514. },
  515. };
  516. </script>
  517. <style lang="scss" scoped>
  518. ::v-deep .el-select {
  519. width: 100%;
  520. }
  521. .import-btn {
  522. display: inline-block;
  523. margin-right: 10px;
  524. }
  525. </style>