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.

1224 lines
40 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. <template>
  2. <div class="mod-config">
  3. <div>
  4. <span @click="favoriteFunction()">
  5. <icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
  6. </span>
  7. </div>
  8. <!-- 条件查询 -->
  9. <el-form :inline="true" label-position="top">
  10. <el-form-item :label="'设备编码:'">
  11. <el-input v-model="searchData.objectId" style="width: 120px"></el-input>
  12. </el-form-item>
  13. <el-form-item :label="'故障编码:'">
  14. <el-input v-model="searchData.defectId" style="width: 120px"></el-input>
  15. </el-form-item>
  16. <el-form-item :label="'故障原因:'">
  17. <el-input v-model="searchData.defectDesc" style="width: 120px"></el-input>
  18. </el-form-item>
  19. <el-form-item :label="'故障描述:'">
  20. <el-input v-model="searchData.defectDescribe" style="width: 120px"></el-input>
  21. </el-form-item>
  22. <el-form-item :label="'类型'">
  23. <el-select v-model="searchData.fileType" style="width: 120px">
  24. <el-option label="全部" value=""></el-option>
  25. <el-option label="点检" value="点检"></el-option>
  26. <el-option label="保养" value="保养"></el-option>
  27. <el-option label="维修" value="维修"></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item :label="'上传日期:'">
  31. <el-date-picker style="width: 150px" v-model="searchData.startDate" type="datetime"
  32. value-format='yyyy-MM-dd HH:mm' format='yyyy-MM-dd HH:mm' placeholder="开始日期">
  33. </el-date-picker>
  34. -
  35. <el-date-picker style="width: 150px" v-model="searchData.endDate" type="datetime"
  36. value-format='yyyy-MM-dd HH:mm' format='yyyy-MM-dd HH:mm' placeholder="结束日期">
  37. </el-date-picker>
  38. </el-form-item>
  39. <el-form-item :label="' '">
  40. <el-button v-if="!authSearch" type="primary" @click="getDataList()">查询</el-button>
  41. <el-button v-if="!authSave" type="primary" @click="addModal()">新增</el-button>
  42. <el-button v-if="!authDelete" type="primary" @click="deleteSome()">删除</el-button>
  43. <download-excel
  44. :fields="fields()"
  45. :data="exportData"
  46. type="xls"
  47. :name="exportName"
  48. :header="exportHeader"
  49. :footer="exportFooter"
  50. :fetch="createExportData"
  51. :before-generate="startDownload"
  52. :before-finish="finishDownload"
  53. worksheet="导出信息"
  54. class="el-button el-button--primary el-button--medium">
  55. {{ "导出" }}
  56. </download-excel>
  57. </el-form-item>
  58. </el-form>
  59. <!-- 展示列表 -->
  60. <el-table
  61. :height="height"
  62. :data="dataList"
  63. ref="eamObjectTable"
  64. highlight-current-row
  65. @row-click="setCurrentRow"
  66. @current-change="changeCurrentRow"
  67. @selection-change="selectionChangeHandle"
  68. border
  69. v-loading="dataListLoading"
  70. style="width: 100%;">
  71. <el-table-column
  72. type="selection"
  73. header-align="center"
  74. align="center"
  75. :selectable="selectFlag"
  76. width="50">
  77. </el-table-column>
  78. <el-table-column
  79. v-for="(item,index) in columnList" :key="index"
  80. :sortable="item.columnSortable"
  81. :prop="item.columnProp"
  82. :header-align="item.headerAlign"
  83. :show-overflow-tooltip="item.showOverflowTooltip"
  84. :align="item.align"
  85. :fixed="item.fixed==''?false:item.fixed"
  86. :min-width="item.columnWidth"
  87. :label="item.columnLabel">
  88. <template slot-scope="scope">
  89. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  90. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  91. </template>
  92. </el-table-column>
  93. <el-table-column
  94. fixed="right"
  95. header-align="center"
  96. align="center"
  97. width="100"
  98. label="操作">
  99. <template slot-scope="scope">
  100. <a v-if="!authUpdate" type="text" size="small" @click="updateModal(scope.row)">编辑</a>
  101. <a v-if="!authDelete" type="text" size="small" @click="deleteModal(scope.row)">删除</a>
  102. </template>
  103. </el-table-column>
  104. </el-table>
  105. <!-- 分页栏 -->
  106. <el-pagination
  107. @size-change="sizeChangeHandle"
  108. @current-change="currentChangeHandle"
  109. :current-page="pageIndex"
  110. :page-sizes="[20, 50, 100, 200, 500]"
  111. :page-size="pageSize"
  112. :total="totalPage"
  113. layout="total, sizes, prev, pager, next, jumper">
  114. </el-pagination>
  115. <!-- 一级新增/编辑 -->
  116. <el-dialog title="设备知识库" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="321px">
  117. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  118. <el-form-item prop="objectId" :rules="rules.objectIdType">
  119. <span slot="label" style="" @click="getBaseList(200)"><a herf="#">设备编码</a></span>
  120. <el-input v-model="modalData.objectId" style="width: 120px"></el-input>
  121. </el-form-item>
  122. <el-form-item label="设备名称:" prop="objectName" :rules="rules.objectNameType">
  123. <el-input v-model="modalData.objectName" disabled style="width: 150px"></el-input>
  124. </el-form-item>
  125. </el-form>
  126. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  127. <!-- <el-form-item label="故障编码" prop="defectId" :rules="rules.defectIdType">-->
  128. <!-- <el-select v-model="modalData.defectId" @change="defectIdChange()" placeholder="请选择" style="width: 120px">-->
  129. <!-- <el-option-->
  130. <!-- v-for = "i in defectList"-->
  131. <!-- :key = "i.defectId"-->
  132. <!-- :label = "i.defectId"-->
  133. <!-- :value = "i.defectId">-->
  134. <!-- </el-option>-->
  135. <!-- </el-select>-->
  136. <!-- </el-form-item>-->
  137. <el-form-item prop="defectId" :rules="rules.defectIdType">
  138. <span slot="label" @click="getBaseList(1054)"><a herf="#">故障编码</a></span>
  139. <el-input v-model="modalData.defectId" style="width: 120px"></el-input>
  140. </el-form-item>
  141. <el-form-item label="故障原因:" prop="defectDesc" :rules="rules.defectDescType">
  142. <el-input v-model="modalData.defectDesc" disabled style="width: 150px"></el-input>
  143. </el-form-item>
  144. </el-form>
  145. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  146. <el-form-item label="类型" prop="fileType" :rules="rules.fileTypeType">
  147. <el-select v-model="modalData.fileType" placeholder="请选择" style="width: 120px">
  148. <el-option label="点检" value="点检"></el-option>
  149. <el-option label="保养" value="保养"></el-option>
  150. <el-option label="维修" value="维修"></el-option>
  151. </el-select>
  152. </el-form-item>
  153. <el-form-item label="故障描述:">
  154. <el-input v-model="modalData.defectDescribe" style="width: 150px"></el-input>
  155. </el-form-item>
  156. </el-form>
  157. <el-form :inline="true" label-position="top" :model="modalData" style="margin-left: 7px;margin-top: -5px;">
  158. <el-form-item label="处置措施:">
  159. <el-input v-model="modalData.disposalMeasures" style="width: 284px"></el-input>
  160. </el-form-item>
  161. </el-form>
  162. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  163. <el-form-item label="备注:">
  164. <el-input
  165. type="textarea"
  166. v-model="modalData.remark"
  167. :rows="3"
  168. resize='none'
  169. maxlength="300"
  170. show-word-limit
  171. style="width: 284px;height: 60px">
  172. </el-input>
  173. </el-form-item>
  174. </el-form>
  175. <el-footer style="height:40px;margin-top: 60px;text-align:center">
  176. <el-button type="primary" @click="saveData()">保存</el-button>
  177. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  178. </el-footer>
  179. </el-dialog>
  180. <!-- 二级列表 -->
  181. <el-tabs v-model="activeTable" style="margin-top: 0px; width: 100%; height: 100%;" type="border-card" @tab-click="tabClick" class="customer-tab">
  182. <!-- 文档 -->
  183. <el-tab-pane label="文档" name="file_content">
  184. <!--文件上传-->
  185. <el-form label-position="top" style="margin-top: 5px; margin-left: 0px;">
  186. <el-form :inline="true" label-position="top" style="margin-top: 5px">
  187. <el-button type="primary" @click="addUploadFileModal()">上传文件</el-button>
  188. </el-form>
  189. </el-form>
  190. <el-table
  191. :data="fileContentList"
  192. :height="secondHeight"
  193. border
  194. v-loading="dataListLoading"
  195. style="width: 100%; ">
  196. <el-table-column
  197. v-for="(item,index) in columnFileContentArray" :key="index"
  198. :sortable="item.columnSortable"
  199. :prop="item.columnProp"
  200. :header-align="item.headerAlign"
  201. :show-overflow-tooltip="item.showOverflowTooltip"
  202. :align="item.align"
  203. :fixed="item.fixed==''?false:item.fixed"
  204. :min-width="item.columnWidth"
  205. :label="item.columnLabel">
  206. <template slot-scope="scope">
  207. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  208. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  209. </template>
  210. </el-table-column>
  211. <el-table-column
  212. fixed="right"
  213. header-align="center"
  214. align="center"
  215. width="100"
  216. label="操作">
  217. <template slot-scope="scope">
  218. <a @click="downloadFile(scope.row)">下载</a>
  219. <a type="text" size="small" @click="deleteFile(scope.row)">删除</a>
  220. </template>
  221. </el-table-column>
  222. </el-table>
  223. </el-tab-pane>
  224. </el-tabs>
  225. <!-- 上传文件的modal -->
  226. <comEamKnowledgeBaseUploadFile ref="comEamKnowledgeBaseUploadFile" @refreshPageTables="getDataList()" v-drag></comEamKnowledgeBaseUploadFile>
  227. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  228. </div>
  229. </template>
  230. <script>
  231. import {
  232. getKnowledgeBaseList, // 查询知识库文件列表
  233. getDefectList, // 获取故障列表
  234. saveKnowledgeBase, // 新增知识库文件
  235. knowledgeBaseUpdate, // 修改知识库文件
  236. knowledgeBaseDelete, // 删除知识库文件
  237. knowledgeBaseDeleteSome, // 批量删除
  238. getFileContentList, // 刷新派设备文档的列表
  239. downLoadObjectFile
  240. } from '@/api/eam/eam_object_list.js';
  241. import { userFavoriteList, saveUserFavorite, removeUserFavorite } from '@/api/userFavorite.js'
  242. import { deleteObjectFile } from '@/api/eam/eam.js';
  243. import { deleteResourceSpare } from '@/api/partspare/resourcespare.js'
  244. /*引入組件*/
  245. import comEamKnowledgeBaseUploadFile from "./com_eam_knowledge_base_upload_file";/*上传文件的組件*/
  246. import {
  247. getTableDefaultListLanguage,
  248. getTableUserListLanguage,
  249. } from "@/api/table.js"
  250. import Chooselist from '@/views/modules/common/Chooselist_eam'
  251. import axios from "axios";
  252. import Vue from "vue";
  253. export default {
  254. data () {
  255. return {
  256. // 是否收藏
  257. favorite: false,
  258. // 导出 start
  259. exportData: [],
  260. exportName: "设备知识库" + this.dayjs().format('YYYYMMDDHHmmss'),
  261. exportHeader: ["设备知识库"],
  262. exportFooter: [],
  263. exportList:[],
  264. // 导出 end
  265. tagNo:'',
  266. activeTable: 'file_content',
  267. folder: 'eamObject',
  268. eamObjectId: '',
  269. uploadUrl: "",
  270. currentRow: {},
  271. searchData: {
  272. site: this.$store.state.user.site,
  273. objectId: '',
  274. defectId: '',
  275. defectDesc: '',
  276. defectDescribe: '',
  277. fileType: '',
  278. startDate: '',
  279. endDate: '',
  280. page: 1,
  281. limit: 10
  282. },
  283. pageIndex: 1,
  284. pageSize: 100,
  285. totalPage: 0,
  286. height: 200,
  287. secondHeight: 200,
  288. dataList: [],
  289. fileContentList: [],
  290. columnFileContentArray: [
  291. {
  292. columnProp: 'fileName',
  293. headerAlign: "center",
  294. align: "left",
  295. columnLabel: '文件名称',
  296. columnHidden: false,
  297. columnImage: false,
  298. columnSortable: false,
  299. sortLv: 0,
  300. status: true,
  301. fixed: false
  302. },
  303. {
  304. columnProp: 'createdBy',
  305. headerAlign: "center",
  306. align: "left",
  307. columnLabel: '上传人',
  308. columnHidden: false,
  309. columnImage: false,
  310. columnSortable: true,
  311. sortLv: 0,
  312. status: true,
  313. fixed: false
  314. },
  315. {
  316. columnProp: 'createDate',
  317. align: 'center',
  318. columnLabel: '上传时间',
  319. columnHidden: false,
  320. columnImage: false,
  321. columnSortable: true,
  322. sortLv: 0,
  323. status: true,
  324. fixed: false
  325. },
  326. {
  327. columnProp: 'orderRef3',
  328. headerAlign: "center",
  329. align: "left",
  330. columnLabel: '备注',
  331. columnHidden: false,
  332. columnImage: false,
  333. columnSortable: true,
  334. sortLv: 0,
  335. status: true,
  336. fixed: false
  337. },
  338. ],
  339. dataListLoading: false,
  340. modalFlag: false,
  341. modalDisableFlag: false,
  342. modalData: {
  343. flag: '',
  344. site: this.$store.state.user.site,
  345. createBy: '',
  346. updateBy: '',
  347. num: '',
  348. objectId: '',
  349. objectName: '',
  350. fileType: '',
  351. defectId: '',
  352. defectDesc: '',
  353. defectDescribe: '',
  354. disposalMeasures: '',
  355. fileId: '',
  356. fileName: '',
  357. remark: '',
  358. },
  359. // 展示列集
  360. columnList: [
  361. {
  362. userId: this.$store.state.user.name,
  363. functionId: 101001011,
  364. serialNumber: '101001011Table1Num',
  365. tableId: "101001011Table1",
  366. tableName: "设备知识库表",
  367. columnProp: 'num',
  368. headerAlign: "center",
  369. align: 'center',
  370. columnLabel: '编号',
  371. columnHidden: false,
  372. columnImage: false,
  373. columnSortable: false,
  374. sortLv: 0,
  375. status: true,
  376. fixed: '',
  377. columnWidth: 120,
  378. },
  379. {
  380. userId: this.$store.state.user.name,
  381. functionId: 101001011,
  382. serialNumber: '101001011Table1FileType',
  383. tableId: "101001011Table1",
  384. tableName: "设备知识库表",
  385. columnProp: 'fileType',
  386. align: 'center',
  387. columnLabel: '类型',
  388. columnHidden: false,
  389. columnImage: false,
  390. columnSortable: false,
  391. sortLv: 0,
  392. status: true,
  393. fixed: '',
  394. columnWidth: 100,
  395. },
  396. {
  397. userId: this.$store.state.user.name,
  398. functionId: 101001011,
  399. serialNumber: '101001011Table1ObjectId',
  400. tableId: "101001011Table1",
  401. tableName: "设备知识库表",
  402. columnProp: 'objectId',
  403. headerAlign: "center",
  404. align: "center",
  405. columnLabel: '设备编码',
  406. columnHidden: false,
  407. columnImage: false,
  408. columnSortable: false,
  409. sortLv: 0,
  410. status: true,
  411. fixed: '',
  412. columnWidth: 120,
  413. },
  414. {
  415. userId: this.$store.state.user.name,
  416. functionId: 101001011,
  417. serialNumber: '101001011Table1ObjectName',
  418. tableId: "101001011Table1",
  419. tableName: "设备知识库表",
  420. columnProp: 'objectName',
  421. headerAlign: "center",
  422. align: "left",
  423. columnLabel: '设备名称',
  424. columnHidden: false,
  425. columnImage: false,
  426. columnSortable: false,
  427. sortLv: 0,
  428. status: true,
  429. fixed: '',
  430. columnWidth: 200,
  431. },
  432. {
  433. userId: this.$store.state.user.name,
  434. functionId: 101001011,
  435. serialNumber: '101001011Table1DefectId',
  436. tableId: "101001011Table1",
  437. tableName: "设备知识库表",
  438. columnProp: 'defectId',
  439. headerAlign: "center",
  440. align: "center",
  441. columnLabel: '故障编码',
  442. columnHidden: false,
  443. columnImage: false,
  444. columnSortable: false,
  445. sortLv: 0,
  446. status: true,
  447. fixed: '',
  448. columnWidth: 120,
  449. },
  450. {
  451. userId: this.$store.state.user.name,
  452. functionId: 101001011,
  453. serialNumber: '101001011Table1DefectDesc',
  454. tableId: "101001011Table1",
  455. tableName: "设备知识库表",
  456. columnProp: 'defectDesc',
  457. headerAlign: "center",
  458. align: "left",
  459. columnLabel: '故障原因',
  460. columnHidden: false,
  461. columnImage: false,
  462. columnSortable: false,
  463. sortLv: 0,
  464. status: true,
  465. fixed: '',
  466. columnWidth: 200,
  467. },
  468. {
  469. userId: this.$store.state.user.name,
  470. functionId: 101001011,
  471. serialNumber: '101001011Table1DefectDescribe',
  472. tableId: "101001011Table1",
  473. tableName: "设备知识库表",
  474. columnProp: 'defectDescribe',
  475. headerAlign: "center",
  476. align: "left",
  477. columnLabel: '故障描述',
  478. columnHidden: false,
  479. columnImage: false,
  480. columnSortable: false,
  481. sortLv: 0,
  482. status: true,
  483. fixed: '',
  484. columnWidth: 200,
  485. },
  486. {
  487. userId: this.$store.state.user.name,
  488. functionId: 101001011,
  489. serialNumber: '101001011Table1DisposalMeasures',
  490. tableId: "101001011Table1",
  491. tableName: "设备知识库表",
  492. columnProp: 'disposalMeasures',
  493. headerAlign: "center",
  494. align: "left",
  495. columnLabel: '处置措施',
  496. columnHidden: false,
  497. columnImage: false,
  498. columnSortable: false,
  499. sortLv: 0,
  500. status: true,
  501. fixed: '',
  502. columnWidth: 150
  503. },
  504. {
  505. userId: this.$store.state.user.name,
  506. functionId: 101001011,
  507. serialNumber: '101001011Table1OrderNo',
  508. tableId: "101001011Table1",
  509. tableName: "设备知识库表",
  510. columnProp: 'orderNo',
  511. align: 'center',
  512. columnLabel: '单据号',
  513. columnHidden: false,
  514. columnImage: false,
  515. columnSortable: false,
  516. sortLv: 0,
  517. status: true,
  518. fixed: '',
  519. columnWidth: 120,
  520. },
  521. {
  522. userId: this.$store.state.user.name,
  523. functionId: 101001011,
  524. serialNumber: '101001011Table1Remark',
  525. tableId: "101001011Table1",
  526. tableName: "设备知识库表",
  527. columnProp: 'remark',
  528. headerAlign: "center",
  529. align: "left",
  530. columnLabel: '备注',
  531. columnHidden: false,
  532. columnImage: false,
  533. columnSortable: false,
  534. sortLv: 0,
  535. status: true,
  536. fixed: '',
  537. columnWidth: 200,
  538. },
  539. {
  540. userId: this.$store.state.user.name,
  541. functionId: 101001011,
  542. serialNumber: '101001011Table1CreateDate',
  543. tableId: "101001011Table1",
  544. tableName: "设备知识库表",
  545. columnProp: 'createDate',
  546. align: 'center',
  547. columnLabel: '上传时间',
  548. columnHidden: false,
  549. columnImage: false,
  550. columnSortable: false,
  551. sortLv: 0,
  552. status: true,
  553. fixed: '',
  554. columnWidth: 170,
  555. },
  556. {
  557. userId: this.$store.state.user.name,
  558. functionId: 101001011,
  559. serialNumber: '101001011Table1CreateBy',
  560. tableId: "101001011Table1",
  561. tableName: "设备知识库表",
  562. columnProp: 'createBy',
  563. headerAlign: "center",
  564. align: "center",
  565. columnLabel: '上传人',
  566. columnHidden: false,
  567. columnImage: false,
  568. columnSortable: false,
  569. sortLv: 0,
  570. status: true,
  571. fixed: '',
  572. columnWidth: 100,
  573. },
  574. {
  575. userId: this.$store.state.user.name,
  576. functionId: 101001011,
  577. serialNumber: '101001011Table1UpdateDate',
  578. tableId: "101001011Table1",
  579. tableName: "设备知识库表",
  580. columnProp: 'updateDate',
  581. align: 'center',
  582. columnLabel: '更新时间',
  583. columnHidden: false,
  584. columnImage: false,
  585. columnSortable: false,
  586. sortLv: 0,
  587. status: true,
  588. fixed: '',
  589. columnWidth: 170,
  590. },
  591. {
  592. userId: this.$store.state.user.name,
  593. functionId: 101001011,
  594. serialNumber: '101001011Table1UpdateBy',
  595. tableId: "101001011Table1",
  596. tableName: "设备知识库表",
  597. columnProp: 'updateBy',
  598. headerAlign: "center",
  599. align: "center",
  600. columnLabel: '更新人',
  601. columnHidden: false,
  602. columnImage: false,
  603. columnSortable: false,
  604. sortLv: 0,
  605. status: true,
  606. fixed: '',
  607. columnWidth: 100,
  608. },
  609. ],
  610. defectList: [],
  611. dataListSelections: [],
  612. rules:{
  613. objectIdType:[
  614. {
  615. required: true,
  616. message: ' ',
  617. trigger: ['blur','change']
  618. }
  619. ],
  620. objectNameType:[
  621. {
  622. required: true,
  623. message: ' ',
  624. trigger: ['blur','change']
  625. }
  626. ],
  627. defectIdType:[
  628. {
  629. required: true,
  630. message: ' ',
  631. trigger: ['blur','change']
  632. }
  633. ],
  634. defectDescType:[
  635. {
  636. required: true,
  637. message: ' ',
  638. trigger: ['blur','change']
  639. }
  640. ],
  641. fileTypeType:[
  642. {
  643. required: true,
  644. message: ' ',
  645. trigger: ['blur','change']
  646. }
  647. ]
  648. },
  649. authSearch: false,
  650. authSave: false,
  651. authUpdate: false,
  652. authDelete: false,
  653. menuId: this.$route.meta.menuId,
  654. }
  655. },
  656. components: {
  657. comEamKnowledgeBaseUploadFile,/*文件上传的组件*/
  658. Chooselist,
  659. },
  660. mounted () {
  661. this.$nextTick(() => {
  662. this.height = window.innerHeight / 2 - 30;
  663. /*第二个表格高度的动态调整*/
  664. this.secondHeight = window.innerHeight / 2 - 190;
  665. })
  666. },
  667. created () {
  668. // 按钮控制
  669. this.getButtonAuthData()
  670. this.favoriteIsOk()
  671. // 动态列
  672. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  673. if (!this.authSearch) {
  674. // 获取数据列表
  675. this.getDataList()
  676. }
  677. },
  678. methods: {
  679. // 多选
  680. selectionChangeHandle(val) {
  681. this.dataListSelections = val
  682. },
  683. selectFlag(){
  684. return true;
  685. },
  686. // 故障ID改变事件
  687. defectIdChange(){
  688. for (let i = 0; i < this.defectList.length; i++) {
  689. if (this.defectList[i].defectId = this.modalData.defectId){
  690. this.modalData.defectDesc = this.defectList[i].defectDesc
  691. }
  692. }
  693. },
  694. // 获取基础数据列表S
  695. getBaseList (val,type) {
  696. this.tagNo = val
  697. this.$nextTick(() => {
  698. let strVal = ''
  699. if (val === 200) {
  700. strVal = this.modalData.objectId
  701. this.$refs.baseList.init(val, strVal)
  702. }
  703. if (val === 1054) {
  704. strVal = this.modalData.defectId
  705. this.$refs.baseList.init(val, strVal)
  706. }
  707. })
  708. },
  709. /* 列表方法的回调 */
  710. getBaseData (val) {
  711. if (this.tagNo === 200) {
  712. this.modalData.objectId = val.ObjectID
  713. this.modalData.objectName = val.ObjectDesc
  714. // this.defectList = []
  715. // this.modalData.defectId = ''
  716. // this.modalData.defectDesc = ''
  717. // this.getDefectList()
  718. }
  719. if (this.tagNo === 1054) {
  720. this.modalData.defectId = val.DefectID
  721. this.modalData.defectDesc = val.DefectDesc
  722. }
  723. },
  724. // 获取故障列表
  725. getDefectList(){
  726. getDefectList(this.modalData).then(({data}) => {
  727. if (data && data.code === 0) {
  728. this.defectList = data.rows
  729. } else {
  730. this.$alert(data.msg, '错误', {
  731. confirmButtonText: '确定'
  732. })
  733. }
  734. })
  735. },
  736. // 获取数据列表
  737. getDataList () {
  738. this.searchData.limit = this.pageSize
  739. this.searchData.page = this.pageIndex
  740. getKnowledgeBaseList(this.searchData).then(({data}) => {
  741. if (data && data.code === 0) {
  742. this.dataList = data.page.list
  743. this.pageIndex = data.page.currPage
  744. this.pageSize = data.page.pageSize
  745. this.totalPage = data.page.totalCount
  746. //判断是否全部存在数据
  747. if(this.totalPage > 0){
  748. //设置选中行
  749. this.$refs.eamObjectTable.setCurrentRow(this.dataList[0]);
  750. this.refreshCurrentTabTable();//加载当前的页签的table
  751. }
  752. }
  753. this.dataListLoading = false;
  754. })
  755. },
  756. // 每页数
  757. sizeChangeHandle (val) {
  758. this.pageSize = val
  759. this.pageIndex = 1
  760. this.getDataList()
  761. },
  762. // 当前页
  763. currentChangeHandle (val) {
  764. this.pageIndex = val
  765. this.getDataList()
  766. },
  767. // 一级新增
  768. addModal(){
  769. this.modalData = {
  770. flag: '1',
  771. site: this.$store.state.user.site,
  772. createBy: this.$store.state.user.name,
  773. num: '',
  774. objectId: '',
  775. objectName: '',
  776. fileType: '',
  777. defectId: '',
  778. defectDesc: '',
  779. defectDescribe: '',
  780. disposalMeasures: '',
  781. fileId: '',
  782. fileName: '',
  783. remark: '',
  784. };
  785. this.modalDisableFlag = false;
  786. this.modalFlag = true;
  787. },
  788. // 一级修改
  789. updateModal(row){
  790. this.modalData = {
  791. flag:'2',
  792. site: this.$store.state.user.site,
  793. updateBy: this.$store.state.user.name,
  794. num: row.num,
  795. objectId: row.objectId,
  796. objectName: row.objectName,
  797. fileType: row.fileType,
  798. defectId: row.defectId,
  799. defectDesc: row.defectDesc,
  800. defectDescribe: row.defectDescribe,
  801. disposalMeasures: row.disposalMeasures,
  802. fileId: row.fileId,
  803. fileName: row.fileName,
  804. remark: row.remark
  805. };
  806. this.modalDisableFlag = true;
  807. this.modalFlag = true;
  808. },
  809. // 新增/修改设备知识库
  810. saveData(){
  811. if (this.modalData.objectId === '' || this.modalData.objectId == null) {
  812. this.$alert('请选择设备编码!', '错误', {
  813. confirmButtonText: '确定'
  814. })
  815. return false
  816. }
  817. if (this.modalData.objectName === '' || this.modalData.objectName == null) {
  818. this.$alert('请选择设备名称!', '错误', {
  819. confirmButtonText: '确定'
  820. })
  821. return false
  822. }
  823. if (this.modalData.defectId === '' || this.modalData.defectId == null) {
  824. this.$alert('请选择故障编码!', '错误', {
  825. confirmButtonText: '确定'
  826. })
  827. return false
  828. }
  829. if (this.modalData.fileType === '' || this.modalData.fileType == null) {
  830. this.$alert('请选择类型!', '错误', {
  831. confirmButtonText: '确定'
  832. })
  833. return false
  834. }
  835. if(this.modalData.flag === '1'){
  836. saveKnowledgeBase(this.modalData).then(({data}) => {
  837. if (data && data.code === 0) {
  838. this.getDataList()
  839. this.defectList = []
  840. this.modalFlag = false
  841. this.$message({
  842. message: '操作成功',
  843. type: 'success',
  844. duration: 1500,
  845. onClose: () => {
  846. }
  847. })
  848. } else {
  849. this.$alert(data.msg, '错误', {
  850. confirmButtonText: '确定'
  851. })
  852. }
  853. })
  854. }else {
  855. knowledgeBaseUpdate(this.modalData).then(({data}) => {
  856. if (data && data.code === 0) {
  857. this.getDataList()
  858. this.modalFlag = false
  859. this.$message({
  860. message: '操作成功',
  861. type: 'success',
  862. duration: 1500,
  863. onClose: () => {
  864. }
  865. })
  866. } else {
  867. this.$alert(data.msg, '错误', {
  868. confirmButtonText: '确定'
  869. })
  870. }
  871. })
  872. }
  873. },
  874. // 一级删除
  875. deleteModal(row) {
  876. this.$confirm('确定要删除该内容?', '提示', {
  877. confirmButtonText: '确定',
  878. cancelButtonText: '取消',
  879. type: 'warning'
  880. }).then(() => {
  881. knowledgeBaseDelete(row).then(({data}) => {
  882. if (data && data.code === 0) {
  883. this.getDataList()
  884. this.getFileContentData();
  885. this.$message({
  886. message: '操作成功',
  887. type: 'success',
  888. duration: 1500,
  889. onClose: () => {
  890. }
  891. })
  892. } else {
  893. this.$alert(data.msg, '错误', {
  894. confirmButtonText: '确定'
  895. })
  896. }
  897. })
  898. }).catch(() => {
  899. })
  900. },
  901. // 二级删除
  902. deleteFile(row){
  903. this.$confirm('确定要删除此文件?', '提示', {
  904. confirmButtonText: '确定',
  905. cancelButtonText: '取消',
  906. type: 'warning'
  907. }).then(() => {
  908. deleteObjectFile(row).then(({data}) => {
  909. if (data && data.code === 0) {
  910. this.getFileContentData();
  911. this.$message({
  912. message: '操作成功',
  913. type: 'success',
  914. duration: 1500,
  915. onClose: () => {
  916. }
  917. })
  918. } else {
  919. this.$alert(data.msg, '错误', {
  920. confirmButtonText: '确定'
  921. })
  922. }
  923. })
  924. }).catch(() => {
  925. })
  926. },
  927. // 批量删除
  928. deleteSome() {
  929. if(this.dataListSelections.length === 0){
  930. this.$alert('请勾选要删除的内容!', '错误', {
  931. confirmButtonText: '确定'
  932. })
  933. return false
  934. }
  935. this.$confirm('确定要删除所选内容?', '提示', {
  936. confirmButtonText: '确定',
  937. cancelButtonText: '取消',
  938. type: 'warning'
  939. }).then(() => {
  940. knowledgeBaseDeleteSome(this.dataListSelections).then(({data}) => {
  941. if (data && data.code === 0) {
  942. this.getDataList()
  943. this.getFileContentData();
  944. this.$message({
  945. message: '操作成功',
  946. type: 'success',
  947. duration: 1500,
  948. onClose: () => {
  949. }
  950. })
  951. } else {
  952. this.$alert(data.msg, '错误', {
  953. confirmButtonText: '确定'
  954. })
  955. }
  956. })
  957. }).catch(() => {
  958. })
  959. },
  960. // 刷新页签的table数据
  961. refreshCurrentTabTable () {
  962. this.getFileContentData();
  963. },
  964. // 刷新派设备文档的列表
  965. getFileContentData() {
  966. let currentData = {
  967. orderRef1: this.$store.state.user.site,
  968. orderRef2: this.currentRow.num
  969. }
  970. getFileContentList(currentData).then(({data}) => {
  971. //区分请求成功和失败的状况
  972. if (data && data.code == 200) {
  973. this.fileContentList = data.rows;
  974. } else {
  975. this.fileContentList = [];
  976. }
  977. });
  978. },
  979. // 列表表格选择替换
  980. tabClick (tab, event) {
  981. // 刷新列表数据
  982. this.refreshCurrentTabTable()
  983. },
  984. // 上传文件
  985. addUploadFileModal(){
  986. let currentData = {
  987. site: this.$store.state.user.site,
  988. createBy: this.$store.state.user.name,
  989. num: this.currentRow.num,
  990. objectId: this.currentRow.objectId,
  991. objectName: this.currentRow.objectName,
  992. defectId: this.currentRow.defectId,
  993. defectDesc: this.currentRow.defectDesc,
  994. }
  995. //打开组件 去做新增业务
  996. this.$nextTick(() => {
  997. this.$refs.comEamKnowledgeBaseUploadFile.init(currentData)
  998. })
  999. },
  1000. // 设置当前的行
  1001. setCurrentRow(row, column, event) {
  1002. this.currentRow = JSON.parse(JSON.stringify(row))
  1003. },
  1004. // 当前值发生变化的时候修改
  1005. changeCurrentRow(row, oldRow){
  1006. // 判断是否是获取焦点的事件
  1007. if(row){
  1008. this.currentRow = JSON.parse(JSON.stringify(row));
  1009. this.eamObjectId = row.objectId;
  1010. this.uploadUrl = this.$http.adornUrl(`/api/sys/file/upload?token=${this.$cookie.get('token')}&folder=` + this.folder + `&objectId=` + this.eamObjectId);
  1011. //刷新当前页表
  1012. this.refreshCurrentTabTable();
  1013. }
  1014. },
  1015. // 校验用户是否收藏
  1016. favoriteIsOk() {
  1017. let userFavorite = {
  1018. userId: this.$store.state.user.id,
  1019. languageCode: this.$i18n.locale
  1020. }
  1021. userFavoriteList(userFavorite).then(({data}) => {
  1022. for (let i = 0; i < data.list.length; i++) {
  1023. // let flag=false;
  1024. if(this.$route.meta.menuId==data.list[i].menuId){
  1025. this.favorite = true
  1026. // flag=true;
  1027. }
  1028. }
  1029. })
  1030. },
  1031. // 收藏 OR 取消收藏
  1032. favoriteFunction() {
  1033. let userFavorite = {
  1034. userId: this.$store.state.user.id,
  1035. functionId: this.$route.meta.menuId,
  1036. }
  1037. if (this.favorite) {
  1038. removeUserFavorite(userFavorite).then(({data}) => {
  1039. this.$message.success(data.msg)
  1040. this.favorite = false
  1041. })
  1042. } else {
  1043. // 收藏
  1044. saveUserFavorite(userFavorite).then(({data}) => {
  1045. this.$message.success(data.msg)
  1046. this.favorite = true
  1047. })
  1048. }
  1049. },
  1050. //导出excel
  1051. async createExportData() {
  1052. this.searchData.limit = -1
  1053. this.searchData.page = 1
  1054. await getKnowledgeBaseList(this.searchData).then(({data}) => {
  1055. this.exportList= data.page.list;
  1056. })
  1057. return this.exportList;
  1058. },
  1059. downloadFile(row){
  1060. downLoadObjectFile(row)
  1061. .then(({data}) => {
  1062. // 不限制文件下载类型
  1063. const blob = new Blob([data], {type: "application/octet-stream"})
  1064. // 下载文件名称
  1065. const fileName = row.fileName
  1066. // a标签下载
  1067. const linkNode = document.createElement('a')
  1068. linkNode.download = fileName // a标签的download属性规定下载文件的名称
  1069. linkNode.style.display = 'none'
  1070. linkNode.href = URL.createObjectURL(blob) // 生成一个Blob URL
  1071. document.body.appendChild(linkNode)
  1072. linkNode.click() // 模拟在按钮上的一次鼠标单击
  1073. console.log(linkNode)
  1074. URL.revokeObjectURL(linkNode.href) // 释放URL 对象
  1075. document.body.removeChild(linkNode)
  1076. })
  1077. },
  1078. startDownload() {
  1079. },
  1080. finishDownload() {
  1081. },
  1082. fields() {
  1083. let json = "{"
  1084. this.columnList.forEach((item, index) => {
  1085. if (index == this.columnList.length - 1) {
  1086. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1087. } else {
  1088. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1089. }
  1090. })
  1091. json += "}"
  1092. let s = eval("(" + json + ")")
  1093. return s
  1094. },
  1095. // 动态列开始 获取 用户保存的 格式列
  1096. async getTableUserColumn (tableId, columnId) {
  1097. let queryTableUser = {
  1098. userId: this.$store.state.user.name,
  1099. functionId: this.$route.meta.menuId,
  1100. tableId: tableId,
  1101. status: true,
  1102. languageCode: this.$i18n.locale
  1103. }
  1104. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  1105. if (data.rows.length > 0) {
  1106. //this.columnList1 = []
  1107. switch (columnId) {
  1108. case 1:
  1109. this.columnList = data.rows
  1110. break;
  1111. // case 2:
  1112. // this.detailColumnList = data.rows
  1113. // break;
  1114. // case 3:
  1115. // this.columnList2 = data.rows
  1116. // break;
  1117. // case 4:
  1118. // this.columnList3 = data.rows
  1119. // break;
  1120. }
  1121. } else {
  1122. this.getColumnList(tableId, columnId)
  1123. }
  1124. })
  1125. },
  1126. // 获取 tableDefault 列
  1127. async getColumnList (tableId, columnId) {
  1128. let queryTable= {
  1129. functionId: this.$route.meta.menuId,
  1130. tableId: tableId,
  1131. languageCode: this.$i18n.locale
  1132. }
  1133. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1134. if (!data.rows.length == 0) {
  1135. switch (columnId) {
  1136. case 1:
  1137. this.columnList = data.rows
  1138. break;
  1139. // case 2:
  1140. // this.detailColumnList = data.rows
  1141. // break;
  1142. // case 3:
  1143. // this.columnList2 = data.rows
  1144. // break;
  1145. // case 4:
  1146. // this.columnList3 = data.rows
  1147. // break;
  1148. }
  1149. } else {
  1150. // this.showDefault = true.
  1151. }
  1152. })
  1153. },
  1154. //获取按钮的权限数据
  1155. getButtonAuthData () {
  1156. let searchFlag = this.isAuth(this.menuId+":search")
  1157. let saveFlag = this.isAuth(this.menuId+":save")
  1158. let updateFlag = this.isAuth(this.menuId+":update")
  1159. let deleteFlag = this.isAuth(this.menuId+":delete")
  1160. //处理页面的权限数据
  1161. this.authSearch = !searchFlag
  1162. this.authSave = !saveFlag
  1163. this.authUpdate = !updateFlag
  1164. this.authDelete = !deleteFlag
  1165. },
  1166. }
  1167. }
  1168. </script>
  1169. <style scoped lang="scss">
  1170. /deep/ .customer-tab .el-tabs__content {
  1171. padding: 0px !important;
  1172. }
  1173. /*修改上传图标的样式*/
  1174. .el-upload-dragger .el-icon-upload {
  1175. font-size: 36px;
  1176. color: #c0c4cc;
  1177. margin: 10px 10px;
  1178. line-height: 20px;
  1179. }
  1180. /*修改上传框的样式*/
  1181. /deep/ .customer-upload .el-upload-dragger {
  1182. background-color: #fff;
  1183. border: 1px dashed #d9d9d9;
  1184. border-radius: 6px;
  1185. -webkit-box-sizing: border-box;
  1186. box-sizing: border-box;
  1187. margin-left: 10px;
  1188. width: 240px;
  1189. height: 42px;
  1190. text-align: left;
  1191. position: relative;
  1192. overflow: hidden;
  1193. }
  1194. /*修改上传文字的样式*/
  1195. .customer-upload .el-upload__text{
  1196. margin-top: -32px;
  1197. margin-left: 40px;
  1198. }
  1199. .el-table /deep/ .cell{
  1200. height: auto;
  1201. line-height: 1.5;
  1202. }
  1203. </style>