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.

2011 lines
64 KiB

3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
1 year 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 year 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 year ago
3 years ago
1 year ago
1 year ago
3 years ago
1 year 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. <el-form :inline="true" label-position="top" :model="searchData">
  4. <el-form-item label="BU">
  5. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 80px">
  6. <el-option
  7. v-for = "i in userBuList"
  8. :key = "i.buNo"
  9. :label = "i.buDesc"
  10. :value = "i.buDesc">
  11. </el-option>
  12. </el-select>
  13. </el-form-item>
  14. <el-form-item label="点检模板编码">
  15. <el-input v-model="searchData.codeNo" clearable style="width: 120px"></el-input>
  16. </el-form-item>
  17. <el-form-item label="点检模板名称">
  18. <el-input v-model="searchData.codeDesc" clearable style="width: 200px"></el-input>
  19. </el-form-item>
  20. <el-form-item label="在用">
  21. <el-select v-model="searchData.active" style="width: 80px">
  22. <el-option label="全部" value=""></el-option>
  23. <el-option label="是" value="Y"></el-option>
  24. <el-option label="否" value="N"></el-option>
  25. </el-select>
  26. </el-form-item>
  27. <el-form-item label="是否被用">
  28. <el-select v-model="searchData.isUse" style="width: 80px">
  29. <el-option label="全部" value=""></el-option>
  30. <el-option label="是" value="Y"></el-option>
  31. <el-option label="否" value="N"></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="部门">
  35. <el-select v-model="searchData.checkType" clearable style="width: 80px">
  36. <el-option label="生产" value="R022"></el-option>
  37. <el-option label="设备" value="R023"></el-option>
  38. <el-option label="质量" value="R024"></el-option>
  39. </el-select>
  40. </el-form-item>
  41. <el-form-item label=" ">
  42. <el-button v-if="!authSearch" @click="getDataList()">查询</el-button>
  43. <el-button v-if="!authSave" type="primary" @click="addModal()">新增</el-button>
  44. <el-button type="primary" icon="el-icon-upload" @click="importExcel" style="margin-left: 2px">导入</el-button>
  45. <el-button @click="exportExcel()" type="primary" style="margin-left: 2px">{{'导出'}}</el-button>
  46. <el-button @click="exportDetailExcel()" type="primary" style="margin-left: 2px">{{'导出明细'}}</el-button>
  47. <!-- <download-excel-->
  48. <!-- :fields="fields()"-->
  49. <!-- :data="exportData"-->
  50. <!-- type="xls"-->
  51. <!-- :name="exportName"-->
  52. <!-- :header="exportHeader"-->
  53. <!-- :footer="exportFooter"-->
  54. <!-- :fetch="createExportData"-->
  55. <!-- :before-generate="startDownload"-->
  56. <!-- :before-finish="finishDownload"-->
  57. <!-- worksheet="导出信息"-->
  58. <!-- class="el-button el-button&#45;&#45;primary el-button&#45;&#45;medium">-->
  59. <!-- {{ "导出" }}-->
  60. <!-- </download-excel>-->
  61. </el-form-item>
  62. </el-form>
  63. <el-table
  64. :height="height"
  65. :data="dataList"
  66. border
  67. style="width: 100%;">
  68. <el-table-column
  69. v-for="(item,index) in columnList" :key="index"
  70. :sortable="item.columnSortable"
  71. :prop="item.columnProp"
  72. :header-align="item.headerAlign"
  73. :show-overflow-tooltip="item.showOverflowTooltip"
  74. :align="item.align"
  75. :fixed="item.fixed==''?false:item.fixed"
  76. :min-width="item.columnWidth"
  77. :label="item.columnLabel">
  78. <template slot-scope="scope">
  79. <span v-if="!item.columnHidden">
  80. <span v-if="columnsProp.includes(item.columnProp)">{{ scope.row[`${item.columnProp}Desc`] }}</span>
  81. <span v-else>
  82. {{ scope.row[item.columnProp] }}
  83. </span>
  84. </span>
  85. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  86. </template>
  87. </el-table-column>
  88. <el-table-column
  89. fixed="right"
  90. header-align="center"
  91. align="center"
  92. width="160"
  93. label="操作">
  94. <template slot-scope="scope">
  95. <el-link style="cursor: pointer" v-if="!authUpdate" @click="updateModal(scope.row)">修改</el-link>
  96. <el-link style="cursor: pointer" @click="detailModal(scope.row)">点检项目</el-link>
  97. <el-link style="cursor: pointer" v-if="!authDelete" @click="deletePropertiesModel(scope.row)">删除</el-link>
  98. </template>
  99. </el-table-column>
  100. </el-table>
  101. <el-pagination
  102. @size-change="sizeChangeHandle"
  103. @current-change="currentChangeHandle"
  104. :current-page="pageIndex"
  105. :page-sizes="[20, 50, 100, 200, 500]"
  106. :page-size="pageSize"
  107. :total="totalPage"
  108. layout="total, sizes, prev, pager, next, jumper">
  109. </el-pagination>
  110. <el-dialog title="点检模板" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="460px">
  111. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  112. <el-form-item label="BU" prop="bu" :rules="rules.bu">
  113. <el-select v-model="modalData.bu" placeholder="请选择" :disabled="modalDisableFlag" style="width: 230px">
  114. <el-option
  115. v-for = "i in userBuList"
  116. :key = "i.buNo"
  117. :label = "i.sitename"
  118. :value = "i.buNo">
  119. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  120. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  121. {{ i.buDesc }}
  122. </span>
  123. </el-option>
  124. </el-select>
  125. </el-form-item>
  126. <el-form-item label="部门" prop="checkType">
  127. <el-select v-model="modalData.checkType" :disabled="modalDisableFlag" style="width: 80px">
  128. <el-option label="生产" value="R022"></el-option>
  129. <el-option label="设备" value="R023"></el-option>
  130. <el-option label="质量" value="R024"></el-option>
  131. </el-select>
  132. </el-form-item>
  133. <el-form-item label="是否在用" prop="active" :rules="rules.activeType">
  134. <el-select filterable v-model="modalData.active" style="width: 80px">
  135. <el-option label="是" value="Y"></el-option>
  136. <el-option label="否" value="N"></el-option>
  137. </el-select>
  138. </el-form-item>
  139. </el-form>
  140. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;">
  141. <el-form-item label="点检模板编码" prop="codeNo" :rules="rules.codeNoType">
  142. <el-input v-model="modalData.codeNo" :disabled="modalDisableFlag" style="width: 140px"></el-input>
  143. </el-form-item>
  144. <el-form-item label="点检模板名称" prop="codeDesc" :rules="rules.codeDescType">
  145. <el-input v-model="modalData.codeDesc" style="width: 264px"></el-input>
  146. </el-form-item>
  147. </el-form>
  148. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  149. <el-button type="primary" @click="saveData()">保存</el-button>
  150. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  151. </el-footer>
  152. </el-dialog>
  153. <el-dialog title="点检项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="1155px">
  154. <el-form :inline="true" label-position="top">
  155. <el-form-item label="点检模板编码">
  156. <el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>
  157. </el-form-item>
  158. <el-form-item label="点检模板名称">
  159. <el-input v-model="detailData.codeDesc" readonly style="width: 173px"></el-input>
  160. </el-form-item>
  161. <el-form-item label=" ">
  162. <el-button type="primary" @click="addFastModal()">新增</el-button>
  163. <el-button type="primary" @click="goUp()">上移</el-button>
  164. <el-button type="primary" @click="goDown()">下移</el-button>
  165. </el-form-item>
  166. </el-form>
  167. <el-table
  168. :height="300"
  169. :data="detailList"
  170. border
  171. @row-click="itemClickRow"
  172. ref="detailTable"
  173. highlight-current-row
  174. style="width: 100%;">
  175. <el-table-column
  176. v-for="(item,index) in columnDetailList" :key="index"
  177. :sortable="item.columnSortable"
  178. :prop="item.columnProp"
  179. :header-align="item.headerAlign"
  180. :show-overflow-tooltip="item.showOverflowTooltip"
  181. :align="item.align"
  182. :fixed="item.fixed==''?false:item.fixed"
  183. :min-width="item.columnWidth"
  184. :label="item.columnLabel">
  185. <template slot-scope="scope">
  186. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  187. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  188. </template>
  189. </el-table-column>
  190. <el-table-column
  191. fixed="right"
  192. header-align="center"
  193. align="center"
  194. width="130"
  195. label="操作">
  196. <template slot-scope="scope">
  197. <a type="text" size="small" v-if="scope.row.valueChooseFlag === 'Y'" @click="chooseModal(scope.row)">可选值</a>
  198. <a type="text" size="small" @click="deleteModalDetails(scope.row)">删除项目</a>
  199. </template>
  200. </el-table-column>
  201. </el-table>
  202. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  203. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  204. </el-footer>
  205. </el-dialog>
  206. <el-dialog title="新增" @close="refreshDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag" width="1200px">
  207. <div style="font-size: 12px">
  208. <el-form :inline="true" label-position="top" :model="detailData">
  209. <el-form-item :label="'项目编码'">
  210. <el-input v-model="detailData.itemNo" style="width: 120px"></el-input>
  211. </el-form-item>
  212. <el-form-item :label="'项目名称'">
  213. <el-input v-model="detailData.itemDesc" style="width: 145px"></el-input>
  214. </el-form-item>
  215. <el-form-item :label="' '">
  216. <el-button type="primary" @click="queryTemplateItem()">查询</el-button>
  217. </el-form-item>
  218. </el-form>
  219. </div>
  220. <el-container style="margin-top: 0px;">
  221. <el-main style="width: 450px;padding: 1px">
  222. <span style="font-size: 12px" >可选项目</span>
  223. <el-table
  224. height="400px"
  225. :data="itemList1"
  226. border
  227. ref="itemTable1"
  228. @row-click="itemClickRow1"
  229. @selection-change="selectionItem1"
  230. highlight-current-row
  231. style="width: 100%">
  232. <el-table-column
  233. type="selection"
  234. header-align="center"
  235. align="center"
  236. width="50">
  237. </el-table-column>
  238. <el-table-column
  239. prop="itemNo"
  240. header-align="center"
  241. align="left"
  242. min-width="80"
  243. label="项目编码">
  244. </el-table-column>
  245. <el-table-column
  246. prop="itemDesc"
  247. header-align="center"
  248. align="left"
  249. min-width="200"
  250. label="项目名称">
  251. </el-table-column>
  252. <el-table-column
  253. prop="itemRemark"
  254. header-align="center"
  255. align="left"
  256. min-width="200"
  257. label="方法说明">
  258. </el-table-column>
  259. </el-table>
  260. </el-main>
  261. <el-main style="width: 10px;padding: 1px">
  262. <div style="margin-top: 200px;margin-left: 18px">
  263. <el-button type="primary" @click="addItem()">添加>></el-button>
  264. </div>
  265. <div style="margin-top: 15px;margin-left: 18px">
  266. <el-button type="primary" @click="deleteItem()">删除<<</el-button>
  267. </div>
  268. </el-main>
  269. <el-main style="width: 450px;padding: 1px">
  270. <span style="font-size: 12px" >已有项目</span>
  271. <el-table
  272. height="400px"
  273. :data="itemList2"
  274. border
  275. ref="itemTable2"
  276. @row-click="itemClickRow2"
  277. @selection-change="selectionItem2"
  278. highlight-current-row
  279. style="width: 100%">
  280. <el-table-column
  281. type="selection"
  282. header-align="center"
  283. align="center"
  284. width="50">
  285. </el-table-column>
  286. <el-table-column
  287. prop="itemNo"
  288. header-align="center"
  289. align="left"
  290. min-width="80"
  291. label="项目编码">
  292. </el-table-column>
  293. <el-table-column
  294. prop="itemDesc"
  295. header-align="center"
  296. align="left"
  297. min-width="200"
  298. label="项目名称">
  299. </el-table-column>
  300. <el-table-column
  301. prop="itemRemark"
  302. header-align="center"
  303. align="left"
  304. min-width="200"
  305. label="方法说明">
  306. </el-table-column>
  307. </el-table>
  308. </el-main>
  309. </el-container>
  310. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  311. <el-button type="primary" @click="fastAddFlag = false">关闭</el-button>
  312. </el-footer>
  313. </el-dialog>
  314. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="chooseModalFlag" width="350px">
  315. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  316. <el-form-item label="点检项目名称:">
  317. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  318. </el-form-item>
  319. <el-form-item :label="'检测值类型'">
  320. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  321. <el-option label="文本" value="T"></el-option>
  322. <el-option label="数字" value="N"></el-option>
  323. </el-select>
  324. </el-form-item>
  325. </el-form>
  326. <el-table
  327. :height="300"
  328. :data="chooseTableData"
  329. border
  330. style="width: 100%">
  331. <el-table-column
  332. prop="availableValue"
  333. header-align="center"
  334. align="left"
  335. min-width="200"
  336. label="属性值">
  337. </el-table-column>
  338. </el-table>
  339. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  340. <el-button type="primary" @click="chooseModalFlag = false">关闭</el-button>
  341. </el-footer>
  342. </el-dialog>
  343. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  344. <!-- 导入对话框 -->
  345. <template>
  346. <el-dialog
  347. title="点检模板数据导入"
  348. :close-on-click-modal="false"
  349. :visible.sync="uploadDialogVisible"
  350. width="400px"
  351. top="12vh"
  352. class="simple-dialog"
  353. @close="handleUploadDialogClose"
  354. >
  355. <div class="download-area">
  356. <el-button type="primary" @click="downloadTemplate" size="medium" style="width: 40%;">
  357. <i class="el-icon-download"></i> 下载文件模板
  358. </el-button>
  359. </div>
  360. <!-- BU选择 -->
  361. <div class="bu-area">
  362. <el-form :inline="true" label-position="top" label-width="80px">
  363. <el-form-item label="BU">
  364. <el-select v-model="uploadBu" placeholder="请选择" style="width: 295px">
  365. <el-option
  366. v-for="i in userBuList"
  367. :key="i.buNo"
  368. :label="i.sitename"
  369. :value="i.buNo">
  370. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  371. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;">
  372. {{ i.buDesc }}
  373. </span>
  374. </el-option>
  375. </el-select>
  376. </el-form-item>
  377. </el-form>
  378. </div>
  379. <!-- 文件上传 -->
  380. <div>
  381. <el-upload
  382. class="upload-demo"
  383. drag
  384. action="javascript:void(0);"
  385. ref="uploadFile"
  386. :on-change="handleFileChange"
  387. :auto-upload="false"
  388. :limit="1"
  389. accept=".xlsx,.xls"
  390. >
  391. <i class="el-icon-upload"></i>
  392. <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
  393. </el-upload>
  394. </div>
  395. <!-- 底部 -->
  396. <span slot="footer" class="dialog-footer">
  397. <el-button type="primary" @click="confirmUpload" size="medium">保存</el-button>
  398. <el-button @click="uploadDialogVisible = false" size="medium">关闭</el-button>
  399. </span>
  400. </el-dialog>
  401. </template>
  402. </div>
  403. </template>
  404. <script>
  405. import {
  406. eamPropertiesModelSearch,
  407. eamPropertiesModelSave,
  408. eamPropertiesModelEdit,
  409. eamPropertiesModelDelete,
  410. searchItemAvailable,
  411. searchModalDetails,
  412. saveModalDetails,
  413. deleteModalDetails, // 多选删除
  414. eamPropertiesItemSearch,
  415. getItemLists,
  416. deleteModalDetail, // 单删
  417. getSiteAndBuByUserName,
  418. getRoleByUserName,
  419. goUpItemEam,
  420. goDownItemEam,
  421. uploadEamPropertiesModelExcel, // 导入点检模板Excel
  422. downloadEamPropertiesModelTemplate, // 下载点检模板导入模板
  423. } from "@/api/eam/eam.js"
  424. import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
  425. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  426. import Chooselist from '@/views/modules/common/Chooselist_eam'
  427. import excel from "@/utils/excel-util.js";
  428. export default {
  429. components: {
  430. Chooselist
  431. },
  432. watch: {
  433. searchData: {
  434. deep: true,
  435. handler: function (newV, oldV) {
  436. this.searchData.codeNo = this.searchData.codeNo.toUpperCase()
  437. }
  438. },
  439. itemData: {
  440. deep: true,
  441. handler: function (newV, oldV) {
  442. this.itemData.itemNo = this.itemData.itemNo.toUpperCase()
  443. }
  444. },
  445. modalData: {
  446. deep: true,
  447. handler: function (newV, oldV) {
  448. this.modalData.codeNo = this.modalData.codeNo.toUpperCase()
  449. }
  450. },
  451. detailData: {
  452. deep: true,
  453. handler: function (newV, oldV) {
  454. this.detailData.codeNo = this.detailData.codeNo.toUpperCase()
  455. this.detailData.itemNo = this.detailData.itemNo.toUpperCase()
  456. }
  457. }
  458. },
  459. data () {
  460. return {
  461. columnsProp:['createdBy','active','updateBy'],
  462. // 是否收藏
  463. favorite: false,
  464. // 导出 start
  465. exportData: [],
  466. exportName: "点检模板" + this.dayjs().format('YYYYMMDDHHmmss'),
  467. exportHeader: ["点检模板"],
  468. exportFooter: [],
  469. exportList:[],
  470. // 导出 end
  471. tagNo:'',
  472. searchData: {
  473. site: '',
  474. userName: this.$store.state.user.name,
  475. codeNo: '',
  476. codeDesc: '',
  477. buDesc: '',
  478. active:'Y',
  479. functionType:'A',
  480. isUse: '',
  481. checkType: '',
  482. page: 1,
  483. limit: 10,
  484. },
  485. height: 200,
  486. pageIndex: 1,
  487. pageSize: 20,
  488. totalPage: 0,
  489. modalFlag: false,
  490. modalDisableFlag: false,
  491. modalData: {
  492. flag: '',
  493. bu: '',
  494. codeNo: '',
  495. codeDesc: '',
  496. active: '',
  497. functionType: 'A',
  498. userId: this.$store.state.user.name,
  499. createdBy: this.$store.state.user.name,
  500. updateBy: this.$store.state.user.name,
  501. checkType: ''
  502. },
  503. detailData: {
  504. site: '',
  505. buNo: '',
  506. codeNo: '',
  507. codeDesc: '',
  508. functionType: 'A',
  509. itemNo: '',
  510. itemDesc: '',
  511. itemType: 'A',
  512. userId: this.$store.state.user.name,
  513. checkType: ''
  514. },
  515. columnList: [
  516. {
  517. userId: this.$store.state.user.name,
  518. functionId: 101002002,
  519. serialNumber: '101002002Table1BuDesc',
  520. tableId: "101002002Table1",
  521. tableName: "点检模板表",
  522. columnProp: 'buDesc',
  523. headerAlign: "center",
  524. align: "center",
  525. columnLabel: 'BU',
  526. columnHidden: false,
  527. columnImage: false,
  528. columnSortable: false,
  529. sortLv: 0,
  530. status: true,
  531. fixed: '',
  532. columnWidth: 100,
  533. },
  534. {
  535. userId: this.$store.state.user.name,
  536. functionId: 101002002,
  537. serialNumber: '101002002Table1CodeNo',
  538. tableId: "101002002Table1",
  539. tableName: "点检模板表",
  540. columnProp: 'codeNo',
  541. headerAlign: "center",
  542. align: "center",
  543. columnLabel: '点检模板编码',
  544. columnHidden: false,
  545. columnImage: false,
  546. columnSortable: false,
  547. sortLv: 0,
  548. status: true,
  549. fixed: '',
  550. columnWidth: 120,
  551. },
  552. {
  553. userId: this.$store.state.user.name,
  554. functionId: 101002002,
  555. serialNumber: '101002002Table1CodeDesc',
  556. tableId: "101002002Table1",
  557. tableName: "点检模板表",
  558. columnProp: 'codeDesc',
  559. headerAlign: "center",
  560. align: "left",
  561. columnLabel: '点检模板名称',
  562. columnHidden: false,
  563. columnImage: false,
  564. columnSortable: false,
  565. sortLv: 0,
  566. status: true,
  567. fixed: '',
  568. columnWidth: 200,
  569. },
  570. {
  571. userId: this.$store.state.user.name,
  572. functionId: 101002002,
  573. serialNumber: '101002002Table1Active',
  574. tableId: "101002002Table1",
  575. tableName: "点检模板表",
  576. columnProp: 'active',
  577. headerAlign: "center",
  578. align: "center",
  579. columnLabel: '在用',
  580. columnHidden: false,
  581. columnImage: false,
  582. columnSortable: false,
  583. sortLv: 0,
  584. status: true,
  585. fixed: '',
  586. columnWidth: 100,
  587. },
  588. {
  589. userId: this.$store.state.user.name,
  590. functionId: 101002002,
  591. serialNumber: '101002002Table1IsUse',
  592. tableId: "101002002Table1",
  593. tableName: "点检模板表",
  594. columnProp: 'isUse',
  595. headerAlign: "center",
  596. align: "center",
  597. columnLabel: '是否被用',
  598. columnHidden: false,
  599. columnImage: false,
  600. columnSortable: false,
  601. sortLv: 0,
  602. status: true,
  603. fixed: '',
  604. columnWidth: 100,
  605. },
  606. {
  607. userId: this.$store.state.user.name,
  608. functionId: 101002002,
  609. serialNumber: '101002002Table1CreatedDate',
  610. tableId: "101002002Table1",
  611. tableName: "点检模板表",
  612. columnProp: 'createdDate',
  613. headerAlign: "center",
  614. align: "center",
  615. columnLabel: '创建时间',
  616. columnHidden: false,
  617. columnImage: false,
  618. columnSortable: false,
  619. sortLv: 0,
  620. status: true,
  621. fixed: '',
  622. columnWidth: 170,
  623. },
  624. {
  625. userId: this.$store.state.user.name,
  626. functionId: 101002002,
  627. serialNumber: '101002002Table1CreatedBy',
  628. tableId: "101002002Table1",
  629. tableName: "点检模板表",
  630. columnProp: 'createdBy',
  631. headerAlign: "center",
  632. align: "center",
  633. columnLabel: '创建人',
  634. columnHidden: false,
  635. columnImage: false,
  636. columnSortable: false,
  637. sortLv: 0,
  638. status: true,
  639. fixed: '',
  640. columnWidth: 100,
  641. },
  642. {
  643. userId: this.$store.state.user.name,
  644. functionId: 101002002,
  645. serialNumber: '101002002Table1UpdateDate',
  646. tableId: "101002002Table1",
  647. tableName: "点检模板表",
  648. columnProp: 'updateDate',
  649. headerAlign: "center",
  650. align: "center",
  651. columnLabel: '更新时间',
  652. columnHidden: false,
  653. columnImage: false,
  654. columnSortable: false,
  655. sortLv: 0,
  656. status: true,
  657. fixed: '',
  658. columnWidth: 170,
  659. },
  660. {
  661. userId: this.$store.state.user.name,
  662. functionId: 101002002,
  663. serialNumber: '101002002Table1UpdateBy',
  664. tableId: "101002002Table1",
  665. tableName: "点检模板表",
  666. columnProp: 'updateBy',
  667. headerAlign: "center",
  668. align: "center",
  669. columnLabel: '更新人',
  670. columnHidden: false,
  671. columnImage: false,
  672. columnSortable: false,
  673. sortLv: 0,
  674. status: true,
  675. fixed: '',
  676. columnWidth: 100,
  677. },
  678. ],
  679. detailModelFlag: false,
  680. detailList: [],
  681. chooseTableData: [],
  682. dataListSelections: [],
  683. chooseModalFlag: false,
  684. itemFlag: 'text',
  685. itemData: {
  686. itemNo:'',
  687. valueNo:'',
  688. availableValue:'',
  689. itemType:'A',
  690. createdBy: this.$store.state.user.name
  691. },
  692. dataList: [],
  693. departmentList: [],
  694. // 展示列集
  695. columnDetailList: [
  696. {
  697. userId: this.$store.state.user.name,
  698. functionId: 101002002,
  699. serialNumber: '101002002Table2ItemNo',
  700. tableId: "101002002Table2",
  701. tableName: "点检项目表",
  702. columnProp: 'itemNo',
  703. headerAlign: "center",
  704. align: "left",
  705. columnLabel: '点检项目编码',
  706. columnHidden: false,
  707. columnImage: false,
  708. columnSortable: false,
  709. sortLv: 0,
  710. status: true,
  711. fixed: '',
  712. columnWidth: 80,
  713. },
  714. {
  715. userId: this.$store.state.user.name,
  716. functionId: 101002002,
  717. serialNumber: '101002002Table2ItemDesc',
  718. tableId: "101002002Table2",
  719. tableName: "点检项目表",
  720. columnProp: 'itemDesc',
  721. headerAlign: "center",
  722. align: "left",
  723. columnLabel: '点检项目名称',
  724. columnHidden: false,
  725. columnImage: false,
  726. columnSortable: false,
  727. sortLv: 0,
  728. status: true,
  729. fixed: '',
  730. columnWidth: 107,
  731. },
  732. {
  733. userId: this.$store.state.user.name,
  734. functionId: 101002002,
  735. serialNumber: '101002002Table2ItemRemark',
  736. tableId: "101002002Table2",
  737. tableName: "点检项目表",
  738. columnProp: 'itemRemark',
  739. headerAlign: "center",
  740. align: "left",
  741. columnLabel: '点检方法说明',
  742. columnHidden: false,
  743. columnImage: false,
  744. columnSortable: false,
  745. sortLv: 0,
  746. status: true,
  747. fixed: '',
  748. columnWidth: 417,
  749. },
  750. {
  751. userId: this.$store.state.user.name,
  752. functionId: 101002002,
  753. serialNumber: '101002002Table2ValueType',
  754. tableId: "101002002Table2",
  755. tableName: "点检项目表",
  756. columnProp: 'valueType',
  757. headerAlign: "center",
  758. align: "center",
  759. columnLabel: '检测值类型',
  760. columnHidden: false,
  761. columnImage: false,
  762. columnSortable: false,
  763. sortLv: 0,
  764. status: true,
  765. fixed: '',
  766. columnWidth: 80,
  767. },
  768. {
  769. userId: this.$store.state.user.name,
  770. functionId: 101002002,
  771. serialNumber: '101002002Table2DefaultValue',
  772. tableId: "101002002Table2",
  773. tableName: "点检项目表",
  774. columnProp: 'defaultValue',
  775. headerAlign: "center",
  776. align: "right",
  777. columnLabel: '参照值',
  778. columnHidden: false,
  779. columnImage: false,
  780. columnSortable: false,
  781. sortLv: 0,
  782. status: true,
  783. fixed: '',
  784. columnWidth: 80,
  785. },
  786. {
  787. userId: this.$store.state.user.name,
  788. functionId: 101002002,
  789. serialNumber: '101002002Table2MaxValue',
  790. tableId: "101002002Table2",
  791. tableName: "点检项目表",
  792. columnProp: 'maxValue',
  793. headerAlign: "center",
  794. align: "right",
  795. columnLabel: '最大值',
  796. columnHidden: false,
  797. columnImage: false,
  798. columnSortable: false,
  799. sortLv: 0,
  800. status: true,
  801. fixed: '',
  802. columnWidth: 80,
  803. },
  804. {
  805. userId: this.$store.state.user.name,
  806. functionId: 101002002,
  807. serialNumber: '101002002Table2MinValue',
  808. tableId: "101002002Table2",
  809. tableName: "点检项目表",
  810. columnProp: 'minValue',
  811. headerAlign: "center",
  812. align: "right",
  813. columnLabel: '最小值',
  814. columnHidden: false,
  815. columnImage: false,
  816. columnSortable: false,
  817. sortLv: 0,
  818. status: true,
  819. fixed: '',
  820. columnWidth: 80,
  821. },
  822. {
  823. userId: this.$store.state.user.name,
  824. functionId: 101002002,
  825. serialNumber: '101002002TableValueChooseFlag',
  826. tableId: "101002002Table",
  827. tableName: "common",
  828. columnProp: 'valueChooseFlag',
  829. headerAlign: "center",
  830. align: "center",
  831. columnLabel: '是否值可选',
  832. columnHidden: false,
  833. columnImage: false,
  834. columnSortable: false,
  835. sortLv: 0,
  836. status: true,
  837. fixed: '',
  838. columnWidth: 80,
  839. },
  840. ],
  841. columnExport: [
  842. {
  843. userId: this.$store.state.user.name,
  844. functionId: 101003002,
  845. serialNumber: '101003002Table1BuDesc',
  846. tableId: "101003002Table1",
  847. tableName: "维保模板表",
  848. columnProp: 'buDesc',
  849. headerAlign: "center",
  850. align: "center",
  851. columnLabel: 'BU',
  852. columnHidden: false,
  853. columnImage: false,
  854. columnSortable: false,
  855. sortLv: 0,
  856. status: true,
  857. fixed: '',
  858. columnWidth: 100,
  859. },
  860. {
  861. userId: this.$store.state.user.name,
  862. functionId: 101003002,
  863. serialNumber: '101003002Table1CodeNo',
  864. tableId: "101003002Table1",
  865. tableName: "维保模板表",
  866. columnProp: 'codeNo',
  867. headerAlign: "center",
  868. align: "center",
  869. columnLabel: '维保模板编码',
  870. columnHidden: false,
  871. columnImage: false,
  872. columnSortable: false,
  873. sortLv: 0,
  874. status: true,
  875. fixed: '',
  876. columnWidth: 120,
  877. },
  878. {
  879. userId: this.$store.state.user.name,
  880. functionId: 101003002,
  881. serialNumber: '101003002Table1CodeDesc',
  882. tableId: "101003002Table1",
  883. tableName: "维保模板表",
  884. columnProp: 'codeDesc',
  885. headerAlign: "center",
  886. align: "left",
  887. columnLabel: '维保模板名称',
  888. columnHidden: false,
  889. columnImage: false,
  890. columnSortable: false,
  891. sortLv: 0,
  892. status: true,
  893. fixed: '',
  894. columnWidth: 200,
  895. },
  896. {
  897. userId: this.$store.state.user.name,
  898. functionId: 101003002,
  899. serialNumber: '101003002Table1Active',
  900. tableId: "101003002Table1",
  901. tableName: "维保模板表",
  902. columnProp: 'active',
  903. headerAlign: "center",
  904. align: "center",
  905. columnLabel: '在用',
  906. columnHidden: false,
  907. columnImage: false,
  908. columnSortable: false,
  909. sortLv: 0,
  910. status: true,
  911. fixed: '',
  912. columnWidth: 100,
  913. },
  914. {
  915. userId: this.$store.state.user.name,
  916. functionId: 101003002,
  917. serialNumber: '101003002Table1IsUse',
  918. tableId: "101003002Table1",
  919. tableName: "维保模板表",
  920. columnProp: 'isUse',
  921. headerAlign: "center",
  922. align: "center",
  923. columnLabel: '是否被用',
  924. columnHidden: false,
  925. columnImage: false,
  926. columnSortable: false,
  927. sortLv: 0,
  928. status: true,
  929. fixed: '',
  930. columnWidth: 100,
  931. },
  932. {
  933. userId: this.$store.state.user.name,
  934. functionId: 101003002,
  935. serialNumber: '101003002Table1CreatedDate',
  936. tableId: "101003002Table1",
  937. tableName: "维保模板表",
  938. columnProp: 'createdDate',
  939. headerAlign: "center",
  940. align: "center",
  941. columnLabel: '创建时间',
  942. columnHidden: false,
  943. columnImage: false,
  944. columnSortable: false,
  945. sortLv: 0,
  946. status: true,
  947. fixed: '',
  948. columnWidth: 170,
  949. },
  950. {
  951. userId: this.$store.state.user.name,
  952. functionId: 101003002,
  953. serialNumber: '101003002Table1CreatedBy',
  954. tableId: "101003002Table1",
  955. tableName: "维保模板表",
  956. columnProp: 'createdBy',
  957. headerAlign: "center",
  958. align: "center",
  959. columnLabel: '创建人',
  960. columnHidden: false,
  961. columnImage: false,
  962. columnSortable: false,
  963. sortLv: 0,
  964. status: true,
  965. fixed: '',
  966. columnWidth: 100,
  967. },
  968. {
  969. userId: this.$store.state.user.name,
  970. functionId: 101003002,
  971. serialNumber: '101003002Table1UpdateDate',
  972. tableId: "101003002Table1",
  973. tableName: "维保模板表",
  974. columnProp: 'updateDate',
  975. headerAlign: "center",
  976. align: "center",
  977. columnLabel: '更新时间',
  978. columnHidden: false,
  979. columnImage: false,
  980. columnSortable: false,
  981. sortLv: 0,
  982. status: true,
  983. fixed: '',
  984. columnWidth: 170,
  985. },
  986. {
  987. userId: this.$store.state.user.name,
  988. functionId: 101003002,
  989. serialNumber: '101003002Table1UpdateBy',
  990. tableId: "101003002Table1",
  991. tableName: "维保模板表",
  992. columnProp: 'updateBy',
  993. headerAlign: "center",
  994. align: "center",
  995. columnLabel: '更新人',
  996. columnHidden: false,
  997. columnImage: false,
  998. columnSortable: false,
  999. sortLv: 0,
  1000. status: true,
  1001. fixed: '',
  1002. columnWidth: 100,
  1003. },
  1004. {
  1005. userId: this.$store.state.user.name,
  1006. functionId: 101003002,
  1007. serialNumber: '101003002Table2ItemNo',
  1008. tableId: "101003002Table2",
  1009. tableName: "维保项目表",
  1010. columnProp: 'itemNo',
  1011. headerAlign: "center",
  1012. align: "left",
  1013. columnLabel: '维保项目编码',
  1014. columnHidden: false,
  1015. columnImage: false,
  1016. columnSortable: false,
  1017. sortLv: 0,
  1018. status: true,
  1019. fixed: '',
  1020. columnWidth: 82,
  1021. },
  1022. {
  1023. userId: this.$store.state.user.name,
  1024. functionId: 101003002,
  1025. serialNumber: '101003002Table2ItemDesc',
  1026. tableId: "101003002Table2",
  1027. tableName: "维保项目表",
  1028. columnProp: 'itemDesc',
  1029. headerAlign: "center",
  1030. align: "left",
  1031. columnLabel: '维保项目名称',
  1032. columnHidden: false,
  1033. columnImage: false,
  1034. columnSortable: false,
  1035. sortLv: 0,
  1036. status: true,
  1037. fixed: '',
  1038. columnWidth:106,
  1039. },
  1040. {
  1041. userId: this.$store.state.user.name,
  1042. functionId: 101003002,
  1043. serialNumber: '101003002Table2ItemRemark',
  1044. tableId: "101003002Table2",
  1045. tableName: "维保项目表",
  1046. columnProp: 'itemRemark',
  1047. headerAlign: "center",
  1048. align: "left",
  1049. columnLabel: '维保方法说明',
  1050. columnHidden: false,
  1051. columnImage: false,
  1052. columnSortable: false,
  1053. sortLv: 0,
  1054. status: true,
  1055. fixed: '',
  1056. columnWidth: 298,
  1057. },
  1058. {
  1059. userId: this.$store.state.user.name,
  1060. functionId: 101003002,
  1061. serialNumber: '101003002Table2ValueType',
  1062. tableId: "101003002Table2",
  1063. tableName: "维保项目表",
  1064. columnProp: 'valueType',
  1065. headerAlign: "center",
  1066. align: "center",
  1067. columnLabel: '检测值类型',
  1068. columnHidden: false,
  1069. columnImage: false,
  1070. columnSortable: false,
  1071. sortLv: 0,
  1072. status: true,
  1073. fixed: '',
  1074. columnWidth: 70,
  1075. },
  1076. {
  1077. userId: this.$store.state.user.name,
  1078. functionId: 101003002,
  1079. serialNumber: '101003002Table2DefaultValue',
  1080. tableId: "101003002Table2",
  1081. tableName: "维保项目表",
  1082. columnProp: 'defaultValue',
  1083. headerAlign: "center",
  1084. align: "right",
  1085. columnLabel: '参照值',
  1086. columnHidden: false,
  1087. columnImage: false,
  1088. columnSortable: false,
  1089. sortLv: 0,
  1090. status: true,
  1091. fixed: '',
  1092. columnWidth: 65,
  1093. },
  1094. {
  1095. userId: this.$store.state.user.name,
  1096. functionId: 101003002,
  1097. serialNumber: '101003002Table2MaxValue',
  1098. tableId: "101003002Table2",
  1099. tableName: "维保项目表",
  1100. columnProp: 'maxValue',
  1101. headerAlign: "center",
  1102. align: "right",
  1103. columnLabel: '最大值',
  1104. columnHidden: false,
  1105. columnImage: false,
  1106. columnSortable: false,
  1107. sortLv: 0,
  1108. status: true,
  1109. fixed: '',
  1110. columnWidth: 65,
  1111. },
  1112. {
  1113. userId: this.$store.state.user.name,
  1114. functionId: 101003002,
  1115. serialNumber: '101003002Table2MinValue',
  1116. tableId: "101003002Table2",
  1117. tableName: "维保项目表",
  1118. columnProp: 'minValue',
  1119. headerAlign: "center",
  1120. align: "right",
  1121. columnLabel: '最小值',
  1122. columnHidden: false,
  1123. columnImage: false,
  1124. columnSortable: false,
  1125. sortLv: 0,
  1126. status: true,
  1127. fixed: '',
  1128. columnWidth: 65,
  1129. },
  1130. {
  1131. userId: this.$store.state.user.name,
  1132. functionId: 101003002,
  1133. serialNumber: '101003002Table2ValueChooseFlag',
  1134. tableId: "101003002Table2",
  1135. tableName: "维保项目表",
  1136. columnProp: 'valueChooseFlag',
  1137. headerAlign: "center",
  1138. align: "center",
  1139. columnLabel: '是否值可选',
  1140. columnHidden: false,
  1141. columnImage: false,
  1142. columnSortable: false,
  1143. sortLv: 0,
  1144. status: true,
  1145. fixed: '',
  1146. columnWidth: 70,
  1147. }
  1148. ],
  1149. levelList: [],
  1150. chooseModalData: {
  1151. site: '',
  1152. buNo: '',
  1153. itemNo: '',
  1154. itemDesc: '',
  1155. itemType:'A',
  1156. valueTypeDb:'',
  1157. },
  1158. currentRow:{
  1159. },
  1160. //---------快速添加----------
  1161. fastAddFlag: false,
  1162. itemList1: [],
  1163. itemList2: [],
  1164. itemListRow1: {},
  1165. itemListRow2: {},
  1166. itemSelections1: [],
  1167. itemSelections2: [],
  1168. rules: {
  1169. codeNoType:[
  1170. {
  1171. required: true,
  1172. message: ' ',
  1173. trigger: ['blur','change']
  1174. }
  1175. ],
  1176. codeDescType:[
  1177. {
  1178. required: true,
  1179. message: ' ',
  1180. trigger: ['blur','change']
  1181. }
  1182. ],
  1183. activeType:[
  1184. {
  1185. required: true,
  1186. message: ' ',
  1187. trigger: ['blur','change']
  1188. }
  1189. ],
  1190. bu:[
  1191. {
  1192. required: true,
  1193. message: ' ',
  1194. trigger: ['blur','change']
  1195. }
  1196. ],
  1197. checkType: [
  1198. {
  1199. required: true,
  1200. message: ' ',
  1201. trigger: ['blur','change']
  1202. }
  1203. ]
  1204. },
  1205. userBuList: [],
  1206. userRoleList: [],
  1207. authSearch: false,
  1208. authSave: false,
  1209. authUpdate: false,
  1210. authDelete: false,
  1211. menuId: this.$route.meta.menuId,
  1212. // 上传相关
  1213. uploadDialogVisible: false,
  1214. uploadFileName: '',
  1215. uploadFile: null,
  1216. uploadBu: '', // 上传时选择的BU
  1217. }
  1218. },
  1219. mounted () {
  1220. this.$nextTick(() => {
  1221. this.height = window.innerHeight - 180
  1222. })
  1223. },
  1224. created () {
  1225. // 按钮控制
  1226. this.getButtonAuthData()
  1227. // 获取用户的 site 和 bu
  1228. this.getSiteAndBuByUserName()
  1229. // 获取用户的 role
  1230. this.getRoleByUserName()
  1231. // 校验用户是否收藏
  1232. this.favoriteIsOk()
  1233. // 动态列
  1234. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  1235. this.getTableUserColumn(this.$route.meta.menuId+'table2',2)
  1236. if (!this.authSearch) {
  1237. // 获取数据列表
  1238. this.getDataList()
  1239. }
  1240. },
  1241. methods: {
  1242. // 获取用户的bu
  1243. getSiteAndBuByUserName () {
  1244. let tempData = {
  1245. username: this.$store.state.user.name,
  1246. }
  1247. getSiteAndBuByUserName(tempData).then(({data}) => {
  1248. if (data.code === 0) {
  1249. this.userBuList = data.rows
  1250. }
  1251. })
  1252. },
  1253. // 获取用户的 role
  1254. getRoleByUserName () {
  1255. let tempData = {
  1256. username: this.$store.state.user.name,
  1257. }
  1258. getRoleByUserName(tempData).then(({data}) => {
  1259. if (data.code === 0) {
  1260. this.userRoleList = data.rows
  1261. }
  1262. })
  1263. },
  1264. // 校验用户是否收藏
  1265. favoriteIsOk () {
  1266. let userFavorite = {
  1267. userId: this.$store.state.user.id,
  1268. languageCode: this.$i18n.locale
  1269. }
  1270. userFavoriteList(userFavorite).then(({data}) => {
  1271. for (let i = 0; i < data.list.length; i++) {
  1272. if (this.$route.meta.menuId === data.list[i].menuId) {
  1273. this.favorite = true
  1274. }
  1275. }
  1276. })
  1277. },
  1278. // 收藏 OR 取消收藏
  1279. favoriteFunction () {
  1280. let userFavorite = {
  1281. userId: this.$store.state.user.id,
  1282. functionId: this.$route.meta.menuId,
  1283. }
  1284. if (this.favorite) {
  1285. removeUserFavorite(userFavorite).then(({data}) => {
  1286. this.$message.success(data.msg)
  1287. this.favorite = false
  1288. })
  1289. } else {
  1290. // 收藏
  1291. saveUserFavorite(userFavorite).then(({data}) => {
  1292. this.$message.success(data.msg)
  1293. this.favorite = true
  1294. })
  1295. }
  1296. },
  1297. // 获取基础数据列表S
  1298. getBaseList (val,type) {
  1299. this.tagNo = val
  1300. this.$nextTick(() => {
  1301. let strVal = ''
  1302. if (val === 1024) {
  1303. strVal = this.detailData.itemNo
  1304. }
  1305. this.$refs.baseList.init(val, strVal)
  1306. })
  1307. },
  1308. // 列表方法的回调
  1309. getBaseData (val) {
  1310. if (this.tagNo === 1024) {
  1311. this.detailData.itemNo = val.ItemNo
  1312. this.detailData.itemDesc = val.ItemDesc
  1313. }
  1314. },
  1315. async exportExcel() {
  1316. this.searchData.limit = -1
  1317. this.searchData.page = 1
  1318. excel.exportTable({
  1319. url: "/pms/eam/eamPropertiesModelSearch",
  1320. columnMapping: this.columnList,//可以直接用table,不需要的列就剔除
  1321. mergeSetting: [],//需要合并的列
  1322. params: this.searchData,
  1323. fileName: this.exportName+".xlsx",
  1324. rowFetcher: res => res.data,
  1325. columnFormatter: [],
  1326. dropColumns: [],//需要剔除的列,例如dropColumns: ["netWeight"],即剔除净重列
  1327. });
  1328. },
  1329. async exportDetailExcel() {
  1330. this.searchData.limit = -1
  1331. this.searchData.page = 1
  1332. excel.exportTable({
  1333. url: "/pms/eam/exportEamPropertiesTemplateAndItem",
  1334. columnMapping: this.columnExport,//可以直接用table,不需要的列就剔除
  1335. mergeSetting: [],//需要合并的列
  1336. params: this.searchData,
  1337. fileName: this.exportName+".xlsx",
  1338. rowFetcher: res => res.data,
  1339. columnFormatter: [],
  1340. dropColumns: [],//需要剔除的列,例如dropColumns: ["netWeight"],即剔除净重列
  1341. });
  1342. },
  1343. //导出excel
  1344. // async createExportData () {
  1345. // this.searchData.limit = -1
  1346. // this.searchData.page = 1
  1347. // await eamPropertiesModelSearch(this.searchData).then(({data}) => {
  1348. // this.exportList = data.page.list
  1349. // })
  1350. // return this.exportList
  1351. // },
  1352. // startDownload() {},
  1353. // finishDownload() {},
  1354. // fields() {
  1355. // let json = "{"
  1356. // this.columnList.forEach((item, index) => {
  1357. // if (index == this.columnList.length - 1) {
  1358. // json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  1359. // } else {
  1360. // json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  1361. // }
  1362. // })
  1363. // json += "}"
  1364. // let s = eval("(" + json + ")")
  1365. // return s
  1366. // },
  1367. // 获取数据列表
  1368. getDataList () {
  1369. this.searchData.limit = this.pageSize
  1370. this.searchData.page = this.pageIndex
  1371. eamPropertiesModelSearch(this.searchData).then(({data}) => {
  1372. if (data.code === 0) {
  1373. this.dataList = data.page.list
  1374. this.pageIndex = data.page.currPage
  1375. this.pageSize = data.page.pageSize
  1376. this.totalPage = data.page.totalCount
  1377. }
  1378. })
  1379. },
  1380. // 每页数
  1381. sizeChangeHandle (val) {
  1382. this.pageSize = val
  1383. this.pageIndex = 1
  1384. this.getDataList()
  1385. },
  1386. // 当前页
  1387. currentChangeHandle (val) {
  1388. this.pageIndex = val
  1389. this.getDataList()
  1390. },
  1391. addModal () {
  1392. this.modalData = {
  1393. site: '',
  1394. bu: this.userBuList[0].buNo,
  1395. flag: '1',
  1396. codeNo: '',
  1397. codeDesc: '',
  1398. active: 'Y',
  1399. functionType: 'A',
  1400. userId: this.$store.state.user.name,
  1401. createdBy: this.$store.state.user.name,
  1402. updateBy: this.$store.state.user.name,
  1403. checkType: this.userRoleList.length > 0 ? this.userRoleList[0].roleNo : 'R022',
  1404. }
  1405. this.modalDisableFlag = false
  1406. this.modalFlag = true
  1407. },
  1408. updateModal (row) {
  1409. this.modalData = {
  1410. site: this.$store.state.user.site,
  1411. flag: '2',
  1412. bu: row.site + '_' + row.buNo,
  1413. codeNo: row.codeNo,
  1414. codeDesc: row.codeDesc,
  1415. active: row.active,
  1416. functionType: 'A',
  1417. userId: this.$store.state.user.name,
  1418. updateBy: this.$store.state.user.name,
  1419. checkType: row.checkType
  1420. }
  1421. this.modalDisableFlag = true
  1422. this.modalFlag = true
  1423. },
  1424. // 删除
  1425. deletePropertiesModel (row) {
  1426. this.$confirm(`是否删除这个点检模板?`, '提示', {
  1427. confirmButtonText: '确定',
  1428. cancelButtonText: '取消',
  1429. type: 'warning'
  1430. }).then(() => {
  1431. eamPropertiesModelDelete(row).then(({data}) => {
  1432. if (data && data.code === 0) {
  1433. this.getDataList()
  1434. this.$message({
  1435. message: '操作成功',
  1436. type: 'success',
  1437. duration: 1500,
  1438. onClose: () => {}
  1439. })
  1440. } else {
  1441. this.$alert(data.msg, '错误', {
  1442. confirmButtonText: '确定'
  1443. })
  1444. }
  1445. })
  1446. })
  1447. },
  1448. saveData () {
  1449. if (this.modalData.bu === '' || this.modalData.bu == null) {
  1450. this.$message.warning('请选择BU!')
  1451. return
  1452. }
  1453. if (this.modalData.checkType === '' || this.modalData.checkType == null) {
  1454. this.$message.warning('请选择部门!')
  1455. return
  1456. }
  1457. if (this.modalData.codeNo === '' || this.modalData.codeNo == null) {
  1458. this.$message.warning('请输入点检模板编码!')
  1459. return
  1460. }
  1461. if (this.modalData.codeDesc === '' || this.modalData.codeDesc == null) {
  1462. this.$message.warning('请输入点检模板名称!')
  1463. return
  1464. }
  1465. if (this.modalData.active === '' || this.modalData.active == null) {
  1466. this.$message.warning('选择是否在用!')
  1467. return
  1468. }
  1469. if (this.modalData.flag === '1') {
  1470. eamPropertiesModelSave(this.modalData).then(({data}) => {
  1471. if (data && data.code === 0) {
  1472. this.getDataList()
  1473. this.modalFlag = false
  1474. this.$message({
  1475. message: '操作成功',
  1476. type: 'success',
  1477. duration: 1500,
  1478. onClose: () => {}
  1479. })
  1480. } else {
  1481. this.$alert(data.msg, '错误', {
  1482. confirmButtonText: '确定'
  1483. })
  1484. }
  1485. })
  1486. } else {
  1487. eamPropertiesModelEdit(this.modalData).then(({data}) => {
  1488. if (data && data.code === 0) {
  1489. this.getDataList()
  1490. this.modalFlag = false
  1491. this.$message({
  1492. message: '操作成功',
  1493. type: 'success',
  1494. duration: 1500,
  1495. onClose: () => {}
  1496. })
  1497. } else {
  1498. this.$alert(data.msg, '错误', {
  1499. confirmButtonText: '确定'
  1500. })
  1501. }
  1502. })
  1503. }
  1504. },
  1505. // 打开项目清单
  1506. detailModal (row) {
  1507. this.detailData.site = row.site
  1508. this.detailData.buNo = row.buNo
  1509. this.detailData.codeNo = row.codeNo
  1510. this.detailData.codeDesc = row.codeDesc
  1511. this.detailData.checkType = row.checkType
  1512. searchModalDetails(this.detailData).then(({data}) => {
  1513. this.detailList = data.rows
  1514. })
  1515. this.detailModelFlag = true
  1516. },
  1517. itemNoBlur () {
  1518. let inData = {
  1519. site: this.$store.state.user.site,
  1520. itemType: 'A',
  1521. itemNo: this.detailData.itemNo
  1522. }
  1523. eamPropertiesItemSearch(inData).then(({data}) => {
  1524. if (data.rows.length > 0) {
  1525. this.detailData.itemDesc = data.rows[0].itemDesc
  1526. }else {
  1527. this.detailData.itemDesc = ''
  1528. }
  1529. })
  1530. },
  1531. deleteModalDetails (row) {
  1532. this.$confirm(`是否删除这个点检项目?`, '提示', {
  1533. confirmButtonText: '确定',
  1534. cancelButtonText: '取消',
  1535. type: 'warning'
  1536. }).then(() => {
  1537. deleteModalDetail(row).then(({data}) => {
  1538. if (data && data.code === 0) {
  1539. searchModalDetails(this.detailData).then(({data}) => {
  1540. this.detailList = data.rows
  1541. })
  1542. this.$message({
  1543. message: '操作成功',
  1544. type: 'success',
  1545. duration: 1500,
  1546. onClose: () => {}
  1547. })
  1548. } else {
  1549. this.$alert(data.msg, '错误', {
  1550. confirmButtonText: '确定'
  1551. })
  1552. }
  1553. })
  1554. })
  1555. },
  1556. chooseModal (row) {
  1557. this.chooseModalData.site = row.site
  1558. this.chooseModalData.buNo = row.buNo
  1559. this.chooseModalData.itemNo = row.itemNo
  1560. this.chooseModalData.itemDesc = row.itemDesc
  1561. this.chooseModalData.valueTypeDb = row.valueTypeDb
  1562. searchItemAvailable(this.chooseModalData).then(({data}) => {
  1563. this.chooseTableData = data.rows
  1564. })
  1565. this.chooseModalFlag = true
  1566. },
  1567. queryTemplateItem () {
  1568. getItemLists(this.detailData).then(({data}) => {
  1569. this.itemList1 = data.row1
  1570. this.itemList2 = data.row2
  1571. })
  1572. },
  1573. addFastModal () {
  1574. this.itemSelections1 = null
  1575. this.itemSelections2 = null
  1576. getItemLists(this.detailData).then(({data}) => {
  1577. this.itemList1 = data.row1
  1578. this.itemList2 = data.row2
  1579. })
  1580. this.fastAddFlag = true
  1581. },
  1582. // 可选项目
  1583. itemClickRow1 (row) {
  1584. this.$refs.itemTable1.toggleRowSelection(row);
  1585. },
  1586. itemClickRow(row){
  1587. this.currentRow= JSON.parse(JSON.stringify(row))
  1588. },
  1589. // 已有项目
  1590. itemClickRow2 (row) {
  1591. this.$refs.itemTable2.toggleRowSelection(row);
  1592. },
  1593. selectionItem1 (val) {
  1594. this.itemSelections1 = val
  1595. },
  1596. selectionItem2 (val) {
  1597. this.itemSelections2 = val
  1598. },
  1599. addItem () {
  1600. if (this.itemSelections1 == null || this.itemSelections1.length === 0) {
  1601. this.$message.warning('请选择可选项目!')
  1602. return
  1603. }
  1604. let inData = {
  1605. site: this.detailData.site,
  1606. buNo: this.detailData.buNo,
  1607. codeNo: this.detailData.codeNo,
  1608. codeDesc: this.detailData.codeDesc,
  1609. functionType: this.detailData.functionType,
  1610. itemList: this.itemSelections1,
  1611. itemType: this.detailData.itemType,
  1612. userId: this.$store.state.user.name,
  1613. checkType: this.detailData.checkType,
  1614. }
  1615. saveModalDetails(inData).then(({data}) => {
  1616. if (data && data.code === 0) {
  1617. getItemLists(this.detailData).then(({data}) => {
  1618. this.itemList1 = data.row1
  1619. this.itemList2 = data.row2
  1620. })
  1621. this.itemSelections1 = []
  1622. } else {
  1623. this.$alert(data.msg, '错误', {
  1624. confirmButtonText: '确定'
  1625. })
  1626. }
  1627. })
  1628. },
  1629. deleteItem () {
  1630. if(this.itemSelections2 == null || this.itemSelections2.length === 0){
  1631. this.$message.warning('请选择已有项目!')
  1632. return
  1633. }
  1634. let inData = {
  1635. site: this.detailData.site,
  1636. buNo: this.detailData.buNo,
  1637. codeNo: this.detailData.codeNo,
  1638. codeDesc: this.detailData.codeDesc,
  1639. functionType: this.detailData.functionType,
  1640. itemList: this.itemSelections2,
  1641. itemType: this.detailData.itemType,
  1642. userId: this.$store.state.user.name
  1643. }
  1644. deleteModalDetails(inData).then(({data}) => {
  1645. if (data && data.code === 0) {
  1646. getItemLists(this.detailData).then(({data}) => {
  1647. this.itemList1 = data.row1
  1648. this.itemList2 = data.row2
  1649. })
  1650. this.itemSelections2 = []
  1651. } else {
  1652. this.$alert(data.msg, '错误', {
  1653. confirmButtonText: '确定'
  1654. })
  1655. }
  1656. })
  1657. },
  1658. refreshDetailList () {
  1659. searchModalDetails(this.detailData).then(({data}) => {
  1660. this.detailList = data.rows
  1661. })
  1662. },
  1663. goUp() {
  1664. goUpItemEam(this.currentRow).then(({data}) => {
  1665. if (data && data.code === 0) {
  1666. searchModalDetails(this.detailData).then(({data}) => {
  1667. this.detailList = data.rows
  1668. for (let i = 0; i <this.detailList.length ; i++) {
  1669. if(this.detailList[i].itemNo===this.currentRow.itemNo){
  1670. this.$refs.detailTable.setCurrentRow(this.detailList[i]);
  1671. this.currentRow=JSON.parse(JSON.stringify(this.detailList[i]))
  1672. this.$message.success('操作成功')
  1673. }
  1674. }
  1675. //this.objectSearch()
  1676. })
  1677. }
  1678. })
  1679. },
  1680. goDown() {
  1681. goDownItemEam(this.currentRow).then(({data}) => {
  1682. if (data && data.code === 0) {
  1683. searchModalDetails(this.detailData).then(({data}) => {
  1684. this.detailList = data.rows
  1685. for (let i = 0; i <this.detailList.length ; i++) {
  1686. if(this.detailList[i].itemNo===this.currentRow.itemNo){
  1687. this.$refs.detailTable.setCurrentRow(this.detailList[i]);
  1688. this.currentRow=JSON.parse(JSON.stringify(this.detailList[i]))
  1689. this.$message.success('操作成功')
  1690. }
  1691. }
  1692. })
  1693. }
  1694. })
  1695. },
  1696. // 动态列开始 获取 用户保存的 格式列
  1697. async getTableUserColumn (tableId, columnId) {
  1698. let queryTableUser = {
  1699. userId: this.$store.state.user.name,
  1700. functionId: this.$route.meta.menuId,
  1701. tableId: tableId,
  1702. status: true,
  1703. languageCode: this.$i18n.locale
  1704. }
  1705. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  1706. if (data.rows.length > 0) {
  1707. switch (columnId) {
  1708. case 1:
  1709. this.columnList = data.rows
  1710. break;
  1711. case 2:
  1712. this.columnDetailList = data.rows
  1713. break;
  1714. }
  1715. } else {
  1716. this.getColumnList(tableId, columnId)
  1717. }
  1718. })
  1719. },
  1720. // 获取 tableDefault 列
  1721. async getColumnList (tableId, columnId) {
  1722. let queryTable = {
  1723. functionId: this.$route.meta.menuId,
  1724. tableId: tableId,
  1725. languageCode: this.$i18n.locale
  1726. }
  1727. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1728. if (!data.rows.length == 0) {
  1729. switch (columnId) {
  1730. case 1:
  1731. this.columnList = data.rows
  1732. break;
  1733. case 2:
  1734. this.columnDetailList = data.rows
  1735. break;
  1736. }
  1737. }
  1738. })
  1739. },
  1740. //获取按钮的权限数据
  1741. getButtonAuthData () {
  1742. let searchFlag = this.isAuth(this.menuId+":search")
  1743. let saveFlag = this.isAuth(this.menuId+":save")
  1744. let updateFlag = this.isAuth(this.menuId+":update")
  1745. let deleteFlag = this.isAuth(this.menuId+":delete")
  1746. //处理页面的权限数据
  1747. this.authSearch = !searchFlag
  1748. this.authSave = !saveFlag
  1749. this.authUpdate = !updateFlag
  1750. this.authDelete = !deleteFlag
  1751. },
  1752. // Excel导入
  1753. importExcel () {
  1754. this.uploadDialogVisible = true
  1755. this.uploadFileName = ''
  1756. this.uploadFile = null
  1757. this.uploadBu = '' // 清空BU选择
  1758. // 清空el-upload组件的文件列表
  1759. if (this.$refs.uploadFile) {
  1760. this.$refs.uploadFile.clearFiles()
  1761. }
  1762. },
  1763. // 文件选择变化
  1764. handleFileChange (file) {
  1765. this.uploadFile = file.raw
  1766. this.uploadFileName = file.name
  1767. },
  1768. // 确认上传
  1769. confirmUpload () {
  1770. // 验证BU是否选择
  1771. if (!this.uploadBu || this.uploadBu === '') {
  1772. this.$message.warning('请先选择BU')
  1773. return
  1774. }
  1775. if (!this.uploadFile) {
  1776. this.$message.warning('请先选择文件')
  1777. return
  1778. }
  1779. const formData = new FormData()
  1780. formData.append('file', this.uploadFile)
  1781. formData.append('createBy', this.$store.state.user.name)
  1782. formData.append('site', this.uploadBu.split('_')[0]) // 从BU中提取site
  1783. formData.append('buNo', this.uploadBu.split('_')[1]) // 从BU中提取buNo
  1784. // 调用后端导入接口
  1785. uploadEamPropertiesModelExcel(formData).then(({data}) => {
  1786. if (data.code === 0) {
  1787. this.$message.success(data.msg || '导入成功')
  1788. this.uploadDialogVisible = false
  1789. // 清空文件信息
  1790. this.uploadFileName = ''
  1791. this.uploadFile = null
  1792. this.uploadBu = ''
  1793. if (this.$refs.uploadFile) {
  1794. this.$refs.uploadFile.clearFiles()
  1795. }
  1796. this.getDataList()
  1797. } else {
  1798. this.$message.error(data.msg || '导入失败')
  1799. }
  1800. }).catch((error) => {
  1801. console.error('导入失败:', error)
  1802. const errorMsg = (error.response && error.response.data && error.response.data.msg) || error.message || '未知错误'
  1803. this.$message.error('导入失败: ' + errorMsg)
  1804. })
  1805. },
  1806. // 下载模板
  1807. downloadTemplate () {
  1808. const loading = this.$loading({
  1809. lock: true,
  1810. text: '正在下载模板...',
  1811. spinner: 'el-icon-loading',
  1812. background: 'rgba(0, 0, 0, 0.7)'
  1813. })
  1814. // 使用原生XMLHttpRequest处理文件下载,避免axios拦截器干扰
  1815. const xhr = new XMLHttpRequest()
  1816. xhr.open('GET', this.$http.adornUrl('/pms/eam/downloadEamPropertiesModelTemplate'), true)
  1817. xhr.responseType = 'blob'
  1818. // 添加token
  1819. const token = this.$cookie.get('token')
  1820. if (token) {
  1821. xhr.setRequestHeader('token', token)
  1822. }
  1823. xhr.onload = () => {
  1824. loading.close()
  1825. if (xhr.status === 200) {
  1826. const blob = xhr.response
  1827. // 验证Blob大小
  1828. if (blob.size === 0) {
  1829. this.$message.error('模板文件为空,请联系管理员')
  1830. return
  1831. }
  1832. // 创建下载链接
  1833. const url = window.URL.createObjectURL(blob)
  1834. const link = document.createElement('a')
  1835. link.href = url
  1836. link.download = '点检模板导入模板.xlsx'
  1837. link.style.display = 'none'
  1838. document.body.appendChild(link)
  1839. link.click()
  1840. document.body.removeChild(link)
  1841. // 释放URL对象
  1842. setTimeout(() => {
  1843. window.URL.revokeObjectURL(url)
  1844. }, 100)
  1845. this.$message.success('模板下载成功')
  1846. } else {
  1847. console.error('模板下载失败,状态码:', xhr.status)
  1848. this.$message.error('模板下载失败:服务器错误')
  1849. }
  1850. }
  1851. xhr.onerror = () => {
  1852. loading.close()
  1853. console.error('网络错误')
  1854. this.$message.error('模板下载失败:网络错误')
  1855. }
  1856. xhr.send()
  1857. },
  1858. // 关闭上传对话框时清空文件
  1859. handleUploadDialogClose () {
  1860. this.uploadFileName = ''
  1861. this.uploadFile = null
  1862. this.uploadBu = '' // 清空BU选择
  1863. if (this.$refs.uploadFile) {
  1864. this.$refs.uploadFile.clearFiles()
  1865. }
  1866. },
  1867. }
  1868. }
  1869. </script>
  1870. <style scoped>
  1871. .el-table /deep/ .cell{
  1872. height: auto;
  1873. line-height: 1.5;
  1874. }
  1875. .simple-dialog >>> .el-dialog {
  1876. border-radius: 8px;
  1877. }
  1878. /* body顶格 */
  1879. .simple-dialog >>> .el-dialog__body {
  1880. padding: 0px 20px 10px 20px !important;
  1881. }
  1882. /* 内容不要额外缩进 */
  1883. .simple-dialog >>> .el-dialog__body > div {
  1884. margin-left: 0 !important;
  1885. }
  1886. /* 下载区域 */
  1887. .download-area {
  1888. margin-top: 0;
  1889. margin-bottom: 0;
  1890. }
  1891. /* 下载按钮 */
  1892. .download-btn {
  1893. width: 40%;
  1894. }
  1895. /* BU区域 */
  1896. .bu-area {
  1897. margin-top: 0;
  1898. margin-bottom: 5px;
  1899. }
  1900. /* BU label */
  1901. .simple-dialog >>> .el-form-item__label {
  1902. padding-bottom: 0;
  1903. line-height: 22px;
  1904. }
  1905. /* 去掉form自带间距 */
  1906. .simple-dialog >>> .el-form-item {
  1907. margin-bottom: 0;
  1908. }
  1909. /* 上传区域 */
  1910. .upload-demo {
  1911. margin-top: 0;
  1912. }
  1913. /* 上传框 */
  1914. .upload-demo .el-upload-dragger {
  1915. width: 100%;
  1916. height: 150px;
  1917. }
  1918. .simple-dialog >>> .el-dialog__body {
  1919. padding-left: 10px !important;
  1920. padding-right: 0 !important;
  1921. }
  1922. </style>