园林绿化
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

483 lines
17 KiB

  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="资产编号" prop="assetCode">
  5. <el-input
  6. v-model="queryParams.assetCode"
  7. placeholder="请输入资产编号"
  8. clearable
  9. @keyup.enter.native="handleQuery"
  10. />
  11. </el-form-item>
  12. <el-form-item label="资产名称" prop="assetName">
  13. <el-input
  14. v-model="queryParams.assetName"
  15. placeholder="请输入资产名称"
  16. clearable
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="责任人" prop="responsiblePerson">
  21. <el-input
  22. v-model="queryParams.responsiblePerson"
  23. placeholder="请输入责任人"
  24. clearable
  25. @keyup.enter.native="handleQuery"
  26. />
  27. </el-form-item>
  28. <el-form-item>
  29. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  30. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  31. </el-form-item>
  32. </el-form>
  33. <el-row :gutter="10" class="mb8">
  34. <el-col :span="1.5">
  35. <el-button
  36. type="primary"
  37. plain
  38. icon="el-icon-plus"
  39. size="mini"
  40. @click="handleAdd"
  41. v-hasPermi="['system:management:add']"
  42. >新增</el-button>
  43. </el-col>
  44. <el-col :span="1.5">
  45. <el-button
  46. type="success"
  47. plain
  48. icon="el-icon-edit"
  49. size="mini"
  50. :disabled="single"
  51. @click="handleUpdate"
  52. v-hasPermi="['system:management:edit']"
  53. >修改</el-button>
  54. </el-col>
  55. <el-col :span="1.5">
  56. <el-button
  57. type="danger"
  58. plain
  59. icon="el-icon-delete"
  60. size="mini"
  61. :disabled="multiple"
  62. @click="handleDelete"
  63. v-hasPermi="['system:management:remove']"
  64. >删除</el-button>
  65. </el-col>
  66. <el-col :span="1.5">
  67. <el-button
  68. type="warning"
  69. plain
  70. icon="el-icon-download"
  71. size="mini"
  72. @click="handleExport"
  73. v-hasPermi="['system:management:export']"
  74. >导出</el-button>
  75. </el-col>
  76. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  77. </el-row>
  78. <el-table v-loading="loading" :data="managementList" @selection-change="handleSelectionChange">
  79. <el-table-column type="selection" width="55" align="center" />
  80. <el-table-column label="资产编号" align="center" prop="assetCode" />
  81. <el-table-column label="资产名称" align="center" prop="assetName" />
  82. <el-table-column label="资产类型" align="center" prop="assetType" />
  83. <el-table-column label="资产分类" align="center" prop="assetCategory" />
  84. <el-table-column label="品牌型号" align="center" prop="model" />
  85. <el-table-column label="生产厂家" align="center" prop="manufacturer" />
  86. <el-table-column label="供应商" align="center" prop="supplier" />
  87. <el-table-column label="采购日期" align="center" prop="purchaseDate" width="180">
  88. <template slot-scope="scope">
  89. <span>{{ parseTime(scope.row.purchaseDate, '{y}-{m}-{d}') }}</span>
  90. </template>
  91. </el-table-column>
  92. <el-table-column label="采购价格" align="center" prop="purchasePrice" />
  93. <el-table-column label="保修开始日期" align="center" prop="warrantyStartDate" width="180">
  94. <template slot-scope="scope">
  95. <span>{{ parseTime(scope.row.warrantyStartDate, '{y}-{m}-{d}') }}</span>
  96. </template>
  97. </el-table-column>
  98. <el-table-column label="保修结束日期" align="center" prop="warrantyEndDate" width="180">
  99. <template slot-scope="scope">
  100. <span>{{ parseTime(scope.row.warrantyEndDate, '{y}-{m}-{d}') }}</span>
  101. </template>
  102. </el-table-column>
  103. <el-table-column label="安装位置" align="center" prop="location" />
  104. <el-table-column label="经度" align="center" prop="longitude" />
  105. <el-table-column label="纬度" align="center" prop="latitude" />
  106. <el-table-column label="资产状态" align="center" prop="status" />
  107. <el-table-column label="健康状态" align="center" prop="healthStatus" />
  108. <el-table-column label="责任部门" align="center" prop="responsibleDepartment" />
  109. <el-table-column label="责任人" align="center" prop="responsiblePerson" />
  110. <el-table-column label="联系电话" align="center" prop="contactPhone" />
  111. <el-table-column label="最近维护日期" align="center" prop="lastMaintenanceDate" width="180">
  112. <template slot-scope="scope">
  113. <span>{{ parseTime(scope.row.lastMaintenanceDate, '{y}-{m}-{d}') }}</span>
  114. </template>
  115. </el-table-column>
  116. <el-table-column label="下次维护日期" align="center" prop="nextMaintenanceDate" width="180">
  117. <template slot-scope="scope">
  118. <span>{{ parseTime(scope.row.nextMaintenanceDate, '{y}-{m}-{d}') }}</span>
  119. </template>
  120. </el-table-column>
  121. <el-table-column label="备注" align="center" prop="remark" />
  122. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  123. <template slot-scope="scope">
  124. <el-button
  125. size="mini"
  126. type="text"
  127. icon="el-icon-edit"
  128. @click="handleUpdate(scope.row)"
  129. v-hasPermi="['system:management:edit']"
  130. >修改</el-button>
  131. <el-button
  132. size="mini"
  133. type="text"
  134. icon="el-icon-delete"
  135. @click="handleDelete(scope.row)"
  136. v-hasPermi="['system:management:remove']"
  137. >删除</el-button>
  138. </template>
  139. </el-table-column>
  140. </el-table>
  141. <pagination
  142. v-show="total>0"
  143. :total="total"
  144. :page.sync="queryParams.pageNum"
  145. :limit.sync="queryParams.pageSize"
  146. @pagination="getList"
  147. />
  148. <!-- 添加或修改资产全生命周期管理对话框 -->
  149. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  150. <el-form ref="form" :model="form" :rules="rules" label-width="100px">
  151. <el-row>
  152. <el-col :span="24">
  153. <el-form-item label="资产编号" prop="assetCode">
  154. <el-input v-model="form.assetCode" placeholder="请输入资产编号" />
  155. </el-form-item>
  156. </el-col>
  157. <el-col :span="24">
  158. <el-form-item label="资产名称" prop="assetName">
  159. <el-input v-model="form.assetName" placeholder="请输入资产名称" />
  160. </el-form-item>
  161. </el-col>
  162. <el-col :span="24">
  163. <el-form-item label="资产分类" prop="assetCategory">
  164. <el-input v-model="form.assetCategory" placeholder="请输入资产分类" />
  165. </el-form-item>
  166. </el-col>
  167. <el-col :span="24">
  168. <el-form-item label="品牌型号" prop="model">
  169. <el-input v-model="form.model" placeholder="请输入品牌型号" />
  170. </el-form-item>
  171. </el-col>
  172. <el-col :span="24">
  173. <el-form-item label="生产厂家" prop="manufacturer">
  174. <el-input v-model="form.manufacturer" placeholder="请输入生产厂家" />
  175. </el-form-item>
  176. </el-col>
  177. <el-col :span="24">
  178. <el-form-item label="供应商" prop="supplier">
  179. <el-input v-model="form.supplier" placeholder="请输入供应商" />
  180. </el-form-item>
  181. </el-col>
  182. <el-col :span="24">
  183. <el-form-item label="采购日期" prop="purchaseDate">
  184. <el-date-picker clearable
  185. v-model="form.purchaseDate"
  186. type="date"
  187. value-format="yyyy-MM-dd"
  188. placeholder="请选择采购日期">
  189. </el-date-picker>
  190. </el-form-item>
  191. </el-col>
  192. <el-col :span="24">
  193. <el-form-item label="采购价格" prop="purchasePrice">
  194. <el-input v-model="form.purchasePrice" placeholder="请输入采购价格" />
  195. </el-form-item>
  196. </el-col>
  197. <el-col :span="24">
  198. <el-form-item label="保修开始日期" prop="warrantyStartDate">
  199. <el-date-picker clearable
  200. v-model="form.warrantyStartDate"
  201. type="date"
  202. value-format="yyyy-MM-dd"
  203. placeholder="请选择保修开始日期">
  204. </el-date-picker>
  205. </el-form-item>
  206. </el-col>
  207. <el-col :span="24">
  208. <el-form-item label="保修结束日期" prop="warrantyEndDate">
  209. <el-date-picker clearable
  210. v-model="form.warrantyEndDate"
  211. type="date"
  212. value-format="yyyy-MM-dd"
  213. placeholder="请选择保修结束日期">
  214. </el-date-picker>
  215. </el-form-item>
  216. </el-col>
  217. <el-col :span="24">
  218. <el-form-item label="安装位置/存放位置" prop="location">
  219. <el-input v-model="form.location" placeholder="请输入安装位置/存放位置" />
  220. </el-form-item>
  221. </el-col>
  222. <el-col :span="24">
  223. <el-form-item label="经度" prop="longitude">
  224. <el-input v-model="form.longitude" placeholder="请输入经度" />
  225. </el-form-item>
  226. </el-col>
  227. <el-col :span="24">
  228. <el-form-item label="纬度" prop="latitude">
  229. <el-input v-model="form.latitude" placeholder="请输入纬度" />
  230. </el-form-item>
  231. </el-col>
  232. <el-col :span="24">
  233. <el-form-item label="责任部门" prop="responsibleDepartment">
  234. <el-input v-model="form.responsibleDepartment" placeholder="请输入责任部门" />
  235. </el-form-item>
  236. </el-col>
  237. <el-col :span="24">
  238. <el-form-item label="责任人" prop="responsiblePerson">
  239. <el-input v-model="form.responsiblePerson" placeholder="请输入责任人" />
  240. </el-form-item>
  241. </el-col>
  242. <el-col :span="24">
  243. <el-form-item label="联系电话" prop="contactPhone">
  244. <el-input v-model="form.contactPhone" placeholder="请输入联系电话" />
  245. </el-form-item>
  246. </el-col>
  247. <el-col :span="24">
  248. <el-form-item label="最近维护日期" prop="lastMaintenanceDate">
  249. <el-date-picker clearable
  250. v-model="form.lastMaintenanceDate"
  251. type="date"
  252. value-format="yyyy-MM-dd"
  253. placeholder="请选择最近维护日期">
  254. </el-date-picker>
  255. </el-form-item>
  256. </el-col>
  257. <el-col :span="24">
  258. <el-form-item label="下次维护日期" prop="nextMaintenanceDate">
  259. <el-date-picker clearable
  260. v-model="form.nextMaintenanceDate"
  261. type="date"
  262. value-format="yyyy-MM-dd"
  263. placeholder="请选择下次维护日期">
  264. </el-date-picker>
  265. </el-form-item>
  266. </el-col>
  267. <el-col :span="24">
  268. <el-form-item label="备注" prop="remark">
  269. <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
  270. </el-form-item>
  271. </el-col>
  272. <el-col :span="24">
  273. <el-form-item label="删除标志" prop="delFlag">
  274. <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
  275. </el-form-item>
  276. </el-col>
  277. </el-row>
  278. </el-form>
  279. <div slot="footer" class="dialog-footer">
  280. <el-button type="primary" @click="submitForm"> </el-button>
  281. <el-button @click="cancel"> </el-button>
  282. </div>
  283. </el-dialog>
  284. </div>
  285. </template>
  286. <script>
  287. import { listManagement, getManagement, delManagement, addManagement, updateManagement } from "@/api/system/management"
  288. export default {
  289. name: "Management",
  290. data() {
  291. return {
  292. // 遮罩层
  293. loading: true,
  294. // 选中数组
  295. ids: [],
  296. // 非单个禁用
  297. single: true,
  298. // 非多个禁用
  299. multiple: true,
  300. // 显示搜索条件
  301. showSearch: true,
  302. // 总条数
  303. total: 0,
  304. // 资产全生命周期管理表格数据
  305. managementList: [],
  306. // 弹出层标题
  307. title: "",
  308. // 是否显示弹出层
  309. open: false,
  310. // 查询参数
  311. queryParams: {
  312. pageNum: 1,
  313. pageSize: 10,
  314. assetCode: null,
  315. assetName: null,
  316. assetType: null,
  317. assetCategory: null,
  318. model: null,
  319. manufacturer: null,
  320. supplier: null,
  321. purchaseDate: null,
  322. purchasePrice: null,
  323. warrantyStartDate: null,
  324. warrantyEndDate: null,
  325. location: null,
  326. longitude: null,
  327. latitude: null,
  328. status: null,
  329. healthStatus: null,
  330. responsibleDepartment: null,
  331. responsiblePerson: null,
  332. contactPhone: null,
  333. lastMaintenanceDate: null,
  334. nextMaintenanceDate: null,
  335. },
  336. // 表单参数
  337. form: {},
  338. // 表单校验
  339. rules: {
  340. assetCode: [
  341. { required: true, message: "资产编号不能为空", trigger: "blur" }
  342. ],
  343. assetName: [
  344. { required: true, message: "资产名称不能为空", trigger: "blur" }
  345. ],
  346. assetType: [
  347. { required: true, message: "资产类型不能为空", trigger: "change" }
  348. ],
  349. status: [
  350. { required: true, message: "资产状态不能为空", trigger: "change" }
  351. ],
  352. }
  353. }
  354. },
  355. created() {
  356. this.getList()
  357. },
  358. methods: {
  359. /** 查询资产全生命周期管理列表 */
  360. getList() {
  361. this.loading = true
  362. listManagement(this.queryParams).then(response => {
  363. this.managementList = response.rows
  364. this.total = response.total
  365. this.loading = false
  366. })
  367. },
  368. // 取消按钮
  369. cancel() {
  370. this.open = false
  371. this.reset()
  372. },
  373. // 表单重置
  374. reset() {
  375. this.form = {
  376. id: null,
  377. assetCode: null,
  378. assetName: null,
  379. assetType: null,
  380. assetCategory: null,
  381. model: null,
  382. manufacturer: null,
  383. supplier: null,
  384. purchaseDate: null,
  385. purchasePrice: null,
  386. warrantyStartDate: null,
  387. warrantyEndDate: null,
  388. location: null,
  389. longitude: null,
  390. latitude: null,
  391. status: null,
  392. healthStatus: null,
  393. responsibleDepartment: null,
  394. responsiblePerson: null,
  395. contactPhone: null,
  396. lastMaintenanceDate: null,
  397. nextMaintenanceDate: null,
  398. remark: null,
  399. createBy: null,
  400. createTime: null,
  401. updateBy: null,
  402. updateTime: null,
  403. delFlag: null
  404. }
  405. this.resetForm("form")
  406. },
  407. /** 搜索按钮操作 */
  408. handleQuery() {
  409. this.queryParams.pageNum = 1
  410. this.getList()
  411. },
  412. /** 重置按钮操作 */
  413. resetQuery() {
  414. this.resetForm("queryForm")
  415. this.handleQuery()
  416. },
  417. // 多选框选中数据
  418. handleSelectionChange(selection) {
  419. this.ids = selection.map(item => item.id)
  420. this.single = selection.length !== 1
  421. this.multiple = !selection.length
  422. },
  423. /** 新增按钮操作 */
  424. handleAdd() {
  425. this.reset()
  426. this.open = true
  427. this.title = "添加资产全生命周期管理"
  428. },
  429. /** 修改按钮操作 */
  430. handleUpdate(row) {
  431. this.reset()
  432. const id = row.id || this.ids
  433. getManagement(id).then(response => {
  434. this.form = response.data
  435. this.open = true
  436. this.title = "修改资产全生命周期管理"
  437. })
  438. },
  439. /** 提交按钮 */
  440. submitForm() {
  441. this.$refs["form"].validate(valid => {
  442. if (valid) {
  443. if (this.form.id != null) {
  444. updateManagement(this.form).then(response => {
  445. this.$modal.msgSuccess("修改成功")
  446. this.open = false
  447. this.getList()
  448. })
  449. } else {
  450. addManagement(this.form).then(response => {
  451. this.$modal.msgSuccess("新增成功")
  452. this.open = false
  453. this.getList()
  454. })
  455. }
  456. }
  457. })
  458. },
  459. /** 删除按钮操作 */
  460. handleDelete(row) {
  461. const ids = row.id || this.ids
  462. this.$modal.confirm('是否确认删除资产全生命周期管理编号为"' + ids + '"的数据项?').then(function() {
  463. return delManagement(ids)
  464. }).then(() => {
  465. this.getList()
  466. this.$modal.msgSuccess("删除成功")
  467. }).catch(() => {})
  468. },
  469. /** 导出按钮操作 */
  470. handleExport() {
  471. this.download('system/management/export', {
  472. ...this.queryParams
  473. }, `management_${new Date().getTime()}.xlsx`)
  474. }
  475. }
  476. }
  477. </script>