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.

1326 lines
42 KiB

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
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
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. <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
  9. <el-form-item :label="'BU'">
  10. <el-select v-model="searchData.buDesc" placeholder="请选择" clearable style="width: 130px">
  11. <el-option
  12. v-for = "i in userBuList"
  13. :key = "i.buNo"
  14. :label = "i.buDesc"
  15. :value = "i.buDesc">
  16. </el-option>
  17. </el-select>
  18. </el-form-item>
  19. <el-form-item :label="'点检模板编码'">
  20. <el-input v-model="searchData.codeNo" style="width: 120px"></el-input>
  21. </el-form-item>
  22. <el-form-item :label="'点检模板名称'">
  23. <el-input v-model="searchData.codeDesc" style="width: 120px"></el-input>
  24. </el-form-item>
  25. <el-form-item :label="'在用'">
  26. <el-select filterable v-model="searchData.active" style="width: 130px">
  27. <el-option label="全部" value=""></el-option>
  28. <el-option label="是" value="Y"></el-option>
  29. <el-option label="否" value="N"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. <el-form-item :label="'是否被用'">
  33. <el-select filterable v-model="searchData.isUse" style="width: 130px">
  34. <el-option label="全部" value=""></el-option>
  35. <el-option label="是" value="Y"></el-option>
  36. <el-option label="否" value="N"></el-option>
  37. </el-select>
  38. </el-form-item>
  39. <el-form-item :label="' '">
  40. <el-button v-if="!authSearch" @click="getDataList()">查询</el-button>
  41. <el-button v-if="!authSave" type="primary" @click="addModal()">新增</el-button>
  42. <download-excel
  43. :fields="fields()"
  44. :data="exportData"
  45. type="xls"
  46. :name="exportName"
  47. :header="exportHeader"
  48. :footer="exportFooter"
  49. :fetch="createExportData"
  50. :before-generate="startDownload"
  51. :before-finish="finishDownload"
  52. worksheet="导出信息"
  53. class="el-button el-button--primary el-button--medium">
  54. {{ "导出" }}
  55. </download-excel>
  56. </el-form-item>
  57. </el-form>
  58. <el-table
  59. :height="height"
  60. :data="dataList"
  61. border
  62. style="width: 100%;">
  63. <el-table-column
  64. v-for="(item,index) in columnList" :key="index"
  65. :sortable="item.columnSortable"
  66. :prop="item.columnProp"
  67. :header-align="item.headerAlign"
  68. :show-overflow-tooltip="item.showOverflowTooltip"
  69. :align="item.align"
  70. :fixed="item.fixed==''?false:item.fixed"
  71. :min-width="item.columnWidth"
  72. :label="item.columnLabel">
  73. <template slot-scope="scope">
  74. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  75. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  76. </template>
  77. </el-table-column>
  78. <el-table-column
  79. fixed="right"
  80. header-align="center"
  81. align="center"
  82. width="160"
  83. label="操作">
  84. <template slot-scope="scope">
  85. <a v-if="!authUpdate" type="text" size="small" @click="updateModal(scope.row)">修改</a>
  86. <a type="text" size="small" @click="detailModal(scope.row)">点检项目</a>
  87. <a v-if="!authDelete" type="text" size="small" @click="deletePropertiesModel(scope.row)">删除</a>
  88. </template>
  89. </el-table-column>
  90. </el-table>
  91. <el-pagination
  92. @size-change="sizeChangeHandle"
  93. @current-change="currentChangeHandle"
  94. :current-page="pageIndex"
  95. :page-sizes="[20, 50, 100, 200, 500]"
  96. :page-size="pageSize"
  97. :total="totalPage"
  98. layout="total, sizes, prev, pager, next, jumper">
  99. </el-pagination>
  100. <el-dialog title="点检模板" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px">
  101. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  102. <el-form-item label="BU" prop="bu" :rules="rules.bu">
  103. <el-select v-model="modalData.bu" placeholder="请选择" :disabled="modalDisableFlag" style="width: 230px">
  104. <el-option
  105. v-for = "i in userBuList"
  106. :key = "i.buNo"
  107. :label = "i.sitename"
  108. :value = "i.buNo">
  109. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  110. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  111. {{ i.buDesc }}
  112. </span>
  113. </el-option>
  114. </el-select>
  115. </el-form-item>
  116. <el-form-item label="是否在用:" prop="active" :rules="rules.activeType">
  117. <el-select filterable v-model="modalData.active" style="width: 140px">
  118. <el-option label="是" value="Y"></el-option>
  119. <el-option label="否" value="N"></el-option>
  120. </el-select>
  121. </el-form-item>
  122. </el-form>
  123. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  124. <el-form-item label="点检模板编码:" prop="codeNo" :rules="rules.codeNoType">
  125. <el-input v-model="modalData.codeNo" :disabled="modalDisableFlag" style="width: 140px"></el-input>
  126. </el-form-item>
  127. <el-form-item label="点检模板名称:" prop="codeDesc" :rules="rules.codeDescType">
  128. <el-input v-model="modalData.codeDesc" style="width: 230px"></el-input>
  129. </el-form-item>
  130. </el-form>
  131. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  132. <el-button type="primary" @click="saveData()">保存</el-button>
  133. <el-button type="primary" @click="modalFlag = false">关闭</el-button>
  134. </el-footer>
  135. </el-dialog>
  136. <el-dialog title="点检项目清单" :close-on-click-modal="false" v-drag :visible.sync="detailModelFlag" width="1155px">
  137. <el-form :inline="true" label-position="top">
  138. <el-form-item :label="'点检模板编码'">
  139. <el-input v-model="detailData.codeNo" readonly style="width: 120px"></el-input>
  140. </el-form-item>
  141. <el-form-item :label="'点检模板名称'">
  142. <el-input v-model="detailData.codeDesc" readonly style="width: 173px"></el-input>
  143. </el-form-item>
  144. <el-form-item :label="' '">
  145. <el-button type="primary" @click="addFastModal()">新增</el-button>
  146. </el-form-item>
  147. </el-form>
  148. <el-table
  149. :height="300"
  150. :data="detailList"
  151. border
  152. style="width: 100%;">
  153. <el-table-column
  154. v-for="(item,index) in columnDetailList" :key="index"
  155. :sortable="item.columnSortable"
  156. :prop="item.columnProp"
  157. :header-align="item.headerAlign"
  158. :show-overflow-tooltip="item.showOverflowTooltip"
  159. :align="item.align"
  160. :fixed="item.fixed==''?false:item.fixed"
  161. :min-width="item.columnWidth"
  162. :label="item.columnLabel">
  163. <template slot-scope="scope">
  164. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  165. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  166. </template>
  167. </el-table-column>
  168. <el-table-column
  169. fixed="right"
  170. header-align="center"
  171. align="center"
  172. width="130"
  173. label="操作">
  174. <template slot-scope="scope">
  175. <a type="text" size="small" v-if="scope.row.valueChooseFlag === 'Y'" @click="chooseModal(scope.row)">可选值</a>
  176. <a type="text" size="small" @click="deleteModalDetails(scope.row)">删除项目</a>
  177. </template>
  178. </el-table-column>
  179. </el-table>
  180. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  181. <el-button type="primary" @click="detailModelFlag = false">关闭</el-button>
  182. </el-footer>
  183. </el-dialog>
  184. <el-dialog title="新增" @close="refreshDetailList" :close-on-click-modal="false" v-drag :visible.sync="fastAddFlag" width="1200px">
  185. <div style="font-size: 12px">
  186. <el-form :inline="true" label-position="top" :model="detailData">
  187. <el-form-item :label="'项目编码'">
  188. <el-input v-model="detailData.itemNo" style="width: 120px"></el-input>
  189. </el-form-item>
  190. <el-form-item :label="'项目名称'">
  191. <el-input v-model="detailData.itemDesc" style="width: 145px"></el-input>
  192. </el-form-item>
  193. <el-form-item :label="' '">
  194. <el-button type="primary" @click="queryTemplateItem()">查询</el-button>
  195. </el-form-item>
  196. </el-form>
  197. </div>
  198. <el-container style="margin-top: 0px;">
  199. <el-main style="width: 450px;padding: 1px">
  200. <span style="font-size: 12px" >可选项目</span>
  201. <el-table
  202. height="400px"
  203. :data="itemList1"
  204. border
  205. ref="itemTable1"
  206. @row-click="itemClickRow1"
  207. @selection-change="selectionItem1"
  208. highlight-current-row
  209. style="width: 100%">
  210. <el-table-column
  211. type="selection"
  212. header-align="center"
  213. align="center"
  214. :selectable="selectFlag"
  215. width="50">
  216. </el-table-column>
  217. <el-table-column
  218. prop="itemNo"
  219. header-align="center"
  220. align="left"
  221. min-width="80"
  222. label="项目编码">
  223. </el-table-column>
  224. <el-table-column
  225. prop="itemDesc"
  226. header-align="center"
  227. align="left"
  228. min-width="200"
  229. label="项目名称">
  230. </el-table-column>
  231. <el-table-column
  232. prop="itemRemark"
  233. header-align="center"
  234. align="left"
  235. min-width="200"
  236. label="方法说明">
  237. </el-table-column>
  238. </el-table>
  239. </el-main>
  240. <el-main style="width: 10px;padding: 1px">
  241. <div style="margin-top: 200px;margin-left: 18px">
  242. <el-button type="primary" @click="addItem()">添加>></el-button>
  243. </div>
  244. <div style="margin-top: 15px;margin-left: 18px">
  245. <el-button type="primary" @click="deleteItem()">删除<<</el-button>
  246. </div>
  247. </el-main>
  248. <el-main style="width: 450px;padding: 1px">
  249. <span style="font-size: 12px" >已有项目</span>
  250. <el-table
  251. height="400px"
  252. :data="itemList2"
  253. border
  254. ref="itemTable2"
  255. @row-click="itemClickRow2"
  256. @selection-change="selectionItem2"
  257. highlight-current-row
  258. style="width: 100%">
  259. <el-table-column
  260. type="selection"
  261. header-align="center"
  262. align="center"
  263. :selectable="selectFlag"
  264. width="50">
  265. </el-table-column>
  266. <el-table-column
  267. prop="itemNo"
  268. header-align="center"
  269. align="left"
  270. min-width="80"
  271. label="项目编码">
  272. </el-table-column>
  273. <el-table-column
  274. prop="itemDesc"
  275. header-align="center"
  276. align="left"
  277. min-width="200"
  278. label="项目名称">
  279. </el-table-column>
  280. <el-table-column
  281. prop="itemRemark"
  282. header-align="center"
  283. align="left"
  284. min-width="200"
  285. label="方法说明">
  286. </el-table-column>
  287. </el-table>
  288. </el-main>
  289. </el-container>
  290. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  291. <el-button type="primary" @click="fastAddFlag = false">关闭</el-button>
  292. </el-footer>
  293. </el-dialog>
  294. <el-dialog title="可选值" :close-on-click-modal="false" v-drag :visible.sync="chooseModalFlag" width="350px">
  295. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  296. <el-form-item label="点检项目名称:">
  297. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  298. </el-form-item>
  299. <el-form-item :label="'检测值类型'">
  300. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  301. <el-option label="文本" value="T"></el-option>
  302. <el-option label="数字" value="N"></el-option>
  303. </el-select>
  304. </el-form-item>
  305. </el-form>
  306. <el-table
  307. :height="300"
  308. :data="chooseTableData"
  309. border
  310. style="width: 100%">
  311. <el-table-column
  312. prop="availableValue"
  313. header-align="center"
  314. align="left"
  315. min-width="200"
  316. label="属性值">
  317. </el-table-column>
  318. </el-table>
  319. <el-footer style="height:40px;margin-top: 10px;text-align:center">
  320. <el-button type="primary" @click="chooseModalFlag = false">关闭</el-button>
  321. </el-footer>
  322. </el-dialog>
  323. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  324. </div>
  325. </template>
  326. <script>
  327. import {
  328. eamPropertiesModelSearch,
  329. eamPropertiesModelSave,
  330. eamPropertiesModelEdit,
  331. eamPropertiesModelDelete,
  332. searchItemAvailable,
  333. searchModalDetails,
  334. saveModalDetails,
  335. deleteModalDetails, // 多选删除
  336. eamPropertiesItemSearch,
  337. getItemLists,
  338. deleteModalDetail, // 单删
  339. getSiteAndBuByUserName
  340. } from "@/api/eam/eam.js"
  341. import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
  342. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  343. import Chooselist from '@/views/modules/common/Chooselist_eam'
  344. export default {
  345. components: {
  346. Chooselist
  347. },
  348. watch: {
  349. searchData: {
  350. deep: true,
  351. handler: function (newV, oldV) {
  352. this.searchData.codeNo = this.searchData.codeNo.toUpperCase()
  353. }
  354. },
  355. itemData: {
  356. deep: true,
  357. handler: function (newV, oldV) {
  358. this.itemData.itemNo = this.itemData.itemNo.toUpperCase()
  359. }
  360. },
  361. modalData: {
  362. deep: true,
  363. handler: function (newV, oldV) {
  364. this.modalData.codeNo = this.modalData.codeNo.toUpperCase()
  365. }
  366. },
  367. detailData: {
  368. deep: true,
  369. handler: function (newV, oldV) {
  370. this.detailData.codeNo = this.detailData.codeNo.toUpperCase()
  371. this.detailData.itemNo = this.detailData.itemNo.toUpperCase()
  372. }
  373. }
  374. },
  375. data () {
  376. return {
  377. // 是否收藏
  378. favorite: false,
  379. // 导出 start
  380. exportData: [],
  381. exportName: "点检模板" + this.dayjs().format('YYYYMMDDHHmmss'),
  382. exportHeader: ["点检模板"],
  383. exportFooter: [],
  384. exportList:[],
  385. // 导出 end
  386. tagNo:'',
  387. searchData: {
  388. site: '',
  389. userName: this.$store.state.user.name,
  390. codeNo: '',
  391. codeDesc: '',
  392. buDesc: '',
  393. active:'Y',
  394. functionType:'A',
  395. isUse: '',
  396. page: 1,
  397. limit: 10,
  398. },
  399. height: 200,
  400. pageIndex: 1,
  401. pageSize: 20,
  402. totalPage: 0,
  403. modalFlag: false,
  404. modalDisableFlag: false,
  405. modalData: {
  406. flag: '',
  407. bu: '',
  408. codeNo: '',
  409. codeDesc: '',
  410. active: '',
  411. functionType: 'A',
  412. userId: this.$store.state.user.name,
  413. createdBy: this.$store.state.user.name,
  414. updateBy: this.$store.state.user.name,
  415. },
  416. detailData: {
  417. site: '',
  418. buNo: '',
  419. codeNo:'',
  420. codeDesc:'',
  421. functionType:'A',
  422. itemNo:'',
  423. itemDesc:'',
  424. itemType:'A',
  425. userId:this.$store.state.user.name
  426. },
  427. columnList: [
  428. {
  429. userId: this.$store.state.user.name,
  430. functionId: 101002002,
  431. serialNumber: '101002002Table1BuDesc',
  432. tableId: "101002002Table1",
  433. tableName: "点检模板表",
  434. columnProp: 'buDesc',
  435. headerAlign: "center",
  436. align: "center",
  437. columnLabel: 'BU',
  438. columnHidden: false,
  439. columnImage: false,
  440. columnSortable: false,
  441. sortLv: 0,
  442. status: true,
  443. fixed: '',
  444. columnWidth: 100,
  445. },
  446. {
  447. userId: this.$store.state.user.name,
  448. functionId: 101002002,
  449. serialNumber: '101002002Table1CodeNo',
  450. tableId: "101002002Table1",
  451. tableName: "点检模板表",
  452. columnProp: 'codeNo',
  453. headerAlign: "center",
  454. align: "center",
  455. columnLabel: '点检模板编码',
  456. columnHidden: false,
  457. columnImage: false,
  458. columnSortable: false,
  459. sortLv: 0,
  460. status: true,
  461. fixed: '',
  462. columnWidth: 120,
  463. },
  464. {
  465. userId: this.$store.state.user.name,
  466. functionId: 101002002,
  467. serialNumber: '101002002Table1CodeDesc',
  468. tableId: "101002002Table1",
  469. tableName: "点检模板表",
  470. columnProp: 'codeDesc',
  471. headerAlign: "center",
  472. align: "left",
  473. columnLabel: '点检模板名称',
  474. columnHidden: false,
  475. columnImage: false,
  476. columnSortable: false,
  477. sortLv: 0,
  478. status: true,
  479. fixed: '',
  480. columnWidth: 200,
  481. },
  482. {
  483. userId: this.$store.state.user.name,
  484. functionId: 101002002,
  485. serialNumber: '101002002Table1Active',
  486. tableId: "101002002Table1",
  487. tableName: "点检模板表",
  488. columnProp: 'active',
  489. headerAlign: "center",
  490. align: "center",
  491. columnLabel: '在用',
  492. columnHidden: false,
  493. columnImage: false,
  494. columnSortable: false,
  495. sortLv: 0,
  496. status: true,
  497. fixed: '',
  498. columnWidth: 100,
  499. },
  500. {
  501. userId: this.$store.state.user.name,
  502. functionId: 101002002,
  503. serialNumber: '101002002Table1IsUse',
  504. tableId: "101002002Table1",
  505. tableName: "点检模板表",
  506. columnProp: 'isUse',
  507. headerAlign: "center",
  508. align: "center",
  509. columnLabel: '是否被用',
  510. columnHidden: false,
  511. columnImage: false,
  512. columnSortable: false,
  513. sortLv: 0,
  514. status: true,
  515. fixed: '',
  516. columnWidth: 100,
  517. },
  518. {
  519. userId: this.$store.state.user.name,
  520. functionId: 101002002,
  521. serialNumber: '101002002Table1CreatedDate',
  522. tableId: "101002002Table1",
  523. tableName: "点检模板表",
  524. columnProp: 'createdDate',
  525. headerAlign: "center",
  526. align: "center",
  527. columnLabel: '创建时间',
  528. columnHidden: false,
  529. columnImage: false,
  530. columnSortable: false,
  531. sortLv: 0,
  532. status: true,
  533. fixed: '',
  534. columnWidth: 170,
  535. },
  536. {
  537. userId: this.$store.state.user.name,
  538. functionId: 101002002,
  539. serialNumber: '101002002Table1CreatedBy',
  540. tableId: "101002002Table1",
  541. tableName: "点检模板表",
  542. columnProp: 'createdBy',
  543. headerAlign: "center",
  544. align: "center",
  545. columnLabel: '创建人',
  546. columnHidden: false,
  547. columnImage: false,
  548. columnSortable: false,
  549. sortLv: 0,
  550. status: true,
  551. fixed: '',
  552. columnWidth: 100,
  553. },
  554. {
  555. userId: this.$store.state.user.name,
  556. functionId: 101002002,
  557. serialNumber: '101002002Table1UpdateDate',
  558. tableId: "101002002Table1",
  559. tableName: "点检模板表",
  560. columnProp: 'updateDate',
  561. headerAlign: "center",
  562. align: "center",
  563. columnLabel: '更新时间',
  564. columnHidden: false,
  565. columnImage: false,
  566. columnSortable: false,
  567. sortLv: 0,
  568. status: true,
  569. fixed: '',
  570. columnWidth: 170,
  571. },
  572. {
  573. userId: this.$store.state.user.name,
  574. functionId: 101002002,
  575. serialNumber: '101002002Table1UpdateBy',
  576. tableId: "101002002Table1",
  577. tableName: "点检模板表",
  578. columnProp: 'updateBy',
  579. headerAlign: "center",
  580. align: "center",
  581. columnLabel: '更新人',
  582. columnHidden: false,
  583. columnImage: false,
  584. columnSortable: false,
  585. sortLv: 0,
  586. status: true,
  587. fixed: '',
  588. columnWidth: 100,
  589. },
  590. ],
  591. detailModelFlag: false,
  592. detailList: [],
  593. chooseTableData: [],
  594. dataListSelections: [],
  595. chooseModalFlag: false,
  596. itemFlag: 'text',
  597. itemData: {
  598. itemNo:'',
  599. valueNo:'',
  600. availableValue:'',
  601. itemType:'A',
  602. createdBy: this.$store.state.user.name
  603. },
  604. dataList: [],
  605. departmentList: [],
  606. // 展示列集
  607. columnDetailList: [
  608. {
  609. userId: this.$store.state.user.name,
  610. functionId: 101002002,
  611. serialNumber: '101002002Table2ItemNo',
  612. tableId: "101002002Table2",
  613. tableName: "点检项目表",
  614. columnProp: 'itemNo',
  615. headerAlign: "center",
  616. align: "left",
  617. columnLabel: '点检项目编码',
  618. columnHidden: false,
  619. columnImage: false,
  620. columnSortable: false,
  621. sortLv: 0,
  622. status: true,
  623. fixed: '',
  624. columnWidth: 80,
  625. },
  626. {
  627. userId: this.$store.state.user.name,
  628. functionId: 101002002,
  629. serialNumber: '101002002Table2ItemDesc',
  630. tableId: "101002002Table2",
  631. tableName: "点检项目表",
  632. columnProp: 'itemDesc',
  633. headerAlign: "center",
  634. align: "left",
  635. columnLabel: '点检项目名称',
  636. columnHidden: false,
  637. columnImage: false,
  638. columnSortable: false,
  639. sortLv: 0,
  640. status: true,
  641. fixed: '',
  642. columnWidth: 107,
  643. },
  644. {
  645. userId: this.$store.state.user.name,
  646. functionId: 101002002,
  647. serialNumber: '101002002Table2ItemRemark',
  648. tableId: "101002002Table2",
  649. tableName: "点检项目表",
  650. columnProp: 'itemRemark',
  651. headerAlign: "center",
  652. align: "left",
  653. columnLabel: '点检方法说明',
  654. columnHidden: false,
  655. columnImage: false,
  656. columnSortable: false,
  657. sortLv: 0,
  658. status: true,
  659. fixed: '',
  660. columnWidth: 417,
  661. },
  662. {
  663. userId: this.$store.state.user.name,
  664. functionId: 101002002,
  665. serialNumber: '101002002Table2ValueType',
  666. tableId: "101002002Table2",
  667. tableName: "点检项目表",
  668. columnProp: 'valueType',
  669. headerAlign: "center",
  670. align: "center",
  671. columnLabel: '检测值类型',
  672. columnHidden: false,
  673. columnImage: false,
  674. columnSortable: false,
  675. sortLv: 0,
  676. status: true,
  677. fixed: '',
  678. columnWidth: 80,
  679. },
  680. {
  681. userId: this.$store.state.user.name,
  682. functionId: 101002002,
  683. serialNumber: '101002002Table2DefaultValue',
  684. tableId: "101002002Table2",
  685. tableName: "点检项目表",
  686. columnProp: 'defaultValue',
  687. headerAlign: "center",
  688. align: "right",
  689. columnLabel: '参照值',
  690. columnHidden: false,
  691. columnImage: false,
  692. columnSortable: false,
  693. sortLv: 0,
  694. status: true,
  695. fixed: '',
  696. columnWidth: 80,
  697. },
  698. {
  699. userId: this.$store.state.user.name,
  700. functionId: 101002002,
  701. serialNumber: '101002002Table2MaxValue',
  702. tableId: "101002002Table2",
  703. tableName: "点检项目表",
  704. columnProp: 'maxValue',
  705. headerAlign: "center",
  706. align: "right",
  707. columnLabel: '最大值',
  708. columnHidden: false,
  709. columnImage: false,
  710. columnSortable: false,
  711. sortLv: 0,
  712. status: true,
  713. fixed: '',
  714. columnWidth: 80,
  715. },
  716. {
  717. userId: this.$store.state.user.name,
  718. functionId: 101002002,
  719. serialNumber: '101002002Table2MinValue',
  720. tableId: "101002002Table2",
  721. tableName: "点检项目表",
  722. columnProp: 'minValue',
  723. headerAlign: "center",
  724. align: "right",
  725. columnLabel: '最小值',
  726. columnHidden: false,
  727. columnImage: false,
  728. columnSortable: false,
  729. sortLv: 0,
  730. status: true,
  731. fixed: '',
  732. columnWidth: 80,
  733. },
  734. {
  735. userId: this.$store.state.user.name,
  736. functionId: 101002002,
  737. serialNumber: '101002002TableValueChooseFlag',
  738. tableId: "101002002Table",
  739. tableName: "common",
  740. columnProp: 'valueChooseFlag',
  741. headerAlign: "center",
  742. align: "center",
  743. columnLabel: '是否值可选',
  744. columnHidden: false,
  745. columnImage: false,
  746. columnSortable: false,
  747. sortLv: 0,
  748. status: true,
  749. fixed: '',
  750. columnWidth: 80,
  751. },
  752. ],
  753. levelList: [],
  754. chooseModalData: {
  755. site: '',
  756. buNo: '',
  757. itemNo: '',
  758. itemDesc: '',
  759. itemType:'A',
  760. valueTypeDb:'',
  761. },
  762. //---------快速添加----------
  763. fastAddFlag: false,
  764. itemList1: [],
  765. itemList2: [],
  766. itemListRow1: {},
  767. itemListRow2: {},
  768. itemSelections1: [],
  769. itemSelections2: [],
  770. rules: {
  771. codeNoType:[
  772. {
  773. required: true,
  774. message: ' ',
  775. trigger: ['blur','change']
  776. }
  777. ],
  778. codeDescType:[
  779. {
  780. required: true,
  781. message: ' ',
  782. trigger: ['blur','change']
  783. }
  784. ],
  785. activeType:[
  786. {
  787. required: true,
  788. message: ' ',
  789. trigger: ['blur','change']
  790. }
  791. ],
  792. bu:[
  793. {
  794. required: true,
  795. message: ' ',
  796. trigger: ['blur','change']
  797. }
  798. ]
  799. },
  800. userBuList: [],
  801. authSearch: false,
  802. authSave: false,
  803. authUpdate: false,
  804. authDelete: false,
  805. menuId: this.$route.meta.menuId,
  806. }
  807. },
  808. mounted () {
  809. this.$nextTick(() => {
  810. this.height = window.innerHeight - 210
  811. })
  812. },
  813. created () {
  814. // 按钮控制
  815. this.getButtonAuthData()
  816. // 获取用户的 site 和 bu
  817. this.getSiteAndBuByUserName()
  818. // 校验用户是否收藏
  819. this.favoriteIsOk()
  820. // 动态列
  821. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  822. this.getTableUserColumn(this.$route.meta.menuId+'table2',2)
  823. if (!this.authSearch) {
  824. // 获取数据列表
  825. this.getDataList()
  826. }
  827. },
  828. methods: {
  829. // 获取用户的bu
  830. getSiteAndBuByUserName () {
  831. let tempData = {
  832. username: this.$store.state.user.name,
  833. }
  834. getSiteAndBuByUserName(tempData).then(({data}) => {
  835. if (data.code === 0) {
  836. this.userBuList = data.rows
  837. }
  838. })
  839. },
  840. // 校验用户是否收藏
  841. favoriteIsOk () {
  842. let userFavorite = {
  843. userId: this.$store.state.user.id,
  844. languageCode: this.$i18n.locale
  845. }
  846. userFavoriteList(userFavorite).then(({data}) => {
  847. for (let i = 0; i < data.list.length; i++) {
  848. if (this.$route.meta.menuId === data.list[i].menuId) {
  849. this.favorite = true
  850. }
  851. }
  852. })
  853. },
  854. // 收藏 OR 取消收藏
  855. favoriteFunction () {
  856. let userFavorite = {
  857. userId: this.$store.state.user.id,
  858. functionId: this.$route.meta.menuId,
  859. }
  860. if (this.favorite) {
  861. removeUserFavorite(userFavorite).then(({data}) => {
  862. this.$message.success(data.msg)
  863. this.favorite = false
  864. })
  865. } else {
  866. // 收藏
  867. saveUserFavorite(userFavorite).then(({data}) => {
  868. this.$message.success(data.msg)
  869. this.favorite = true
  870. })
  871. }
  872. },
  873. // 获取基础数据列表S
  874. getBaseList (val,type) {
  875. this.tagNo = val
  876. this.$nextTick(() => {
  877. let strVal = ''
  878. if (val === 1024) {
  879. strVal = this.detailData.itemNo
  880. }
  881. this.$refs.baseList.init(val, strVal)
  882. })
  883. },
  884. // 列表方法的回调
  885. getBaseData (val) {
  886. if (this.tagNo === 1024) {
  887. this.detailData.itemNo = val.ItemNo
  888. this.detailData.itemDesc = val.ItemDesc
  889. }
  890. },
  891. //导出excel
  892. async createExportData () {
  893. this.searchData.limit = -1
  894. this.searchData.page = 1
  895. await eamPropertiesModelSearch(this.searchData).then(({data}) => {
  896. this.exportList = data.page.list
  897. })
  898. return this.exportList
  899. },
  900. startDownload() {},
  901. finishDownload() {},
  902. fields() {
  903. let json = "{"
  904. this.columnList.forEach((item, index) => {
  905. if (index == this.columnList.length - 1) {
  906. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  907. } else {
  908. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  909. }
  910. })
  911. json += "}"
  912. let s = eval("(" + json + ")")
  913. return s
  914. },
  915. // 获取数据列表
  916. getDataList () {
  917. this.searchData.limit = this.pageSize
  918. this.searchData.page = this.pageIndex
  919. eamPropertiesModelSearch(this.searchData).then(({data}) => {
  920. if (data.code === 0) {
  921. this.dataList = data.page.list
  922. this.pageIndex = data.page.currPage
  923. this.pageSize = data.page.pageSize
  924. this.totalPage = data.page.totalCount
  925. }
  926. })
  927. },
  928. // 每页数
  929. sizeChangeHandle (val) {
  930. this.pageSize = val
  931. this.pageIndex = 1
  932. this.getDataList()
  933. },
  934. // 当前页
  935. currentChangeHandle (val) {
  936. this.pageIndex = val
  937. this.getDataList()
  938. },
  939. addModal () {
  940. this.modalData = {
  941. site: '',
  942. bu: this.userBuList[0].buNo,
  943. flag: '1',
  944. codeNo: '',
  945. codeDesc: '',
  946. active: 'Y',
  947. functionType: 'A',
  948. userId: this.$store.state.user.name,
  949. createdBy: this.$store.state.user.name,
  950. updateBy: this.$store.state.user.name,
  951. }
  952. this.modalDisableFlag = false
  953. this.modalFlag = true
  954. },
  955. updateModal (row) {
  956. this.modalData = {
  957. site: this.$store.state.user.site,
  958. flag: '2',
  959. bu: row.site + '_' + row.buNo,
  960. codeNo: row.codeNo,
  961. codeDesc: row.codeDesc,
  962. active: row.active,
  963. functionType: 'A',
  964. userId: this.$store.state.user.name,
  965. updateBy: this.$store.state.user.name,
  966. }
  967. this.modalDisableFlag = true
  968. this.modalFlag = true
  969. },
  970. // 删除
  971. deletePropertiesModel (row) {
  972. this.$confirm(`是否删除这个点检模板?`, '提示', {
  973. confirmButtonText: '确定',
  974. cancelButtonText: '取消',
  975. type: 'warning'
  976. }).then(() => {
  977. eamPropertiesModelDelete(row).then(({data}) => {
  978. if (data && data.code === 0) {
  979. this.getDataList()
  980. this.$message({
  981. message: '操作成功',
  982. type: 'success',
  983. duration: 1500,
  984. onClose: () => {}
  985. })
  986. } else {
  987. this.$alert(data.msg, '错误', {
  988. confirmButtonText: '确定'
  989. })
  990. }
  991. })
  992. }).catch(() => {
  993. })
  994. },
  995. saveData () {
  996. if (this.modalData.bu === '' || this.modalData.bu == null) {
  997. this.$message.warning('请选择BU!')
  998. return
  999. }
  1000. if (this.modalData.codeNo === '' || this.modalData.codeNo == null) {
  1001. this.$message.warning('请输入点检模板编码!')
  1002. return
  1003. }
  1004. if (this.modalData.codeDesc === '' || this.modalData.codeDesc == null) {
  1005. this.$message.warning('请输入点检模板名称!')
  1006. return
  1007. }
  1008. if (this.modalData.active === '' || this.modalData.active == null) {
  1009. this.$message.warning('选择是否在用!')
  1010. return
  1011. }
  1012. if (this.modalData.flag === '1') {
  1013. eamPropertiesModelSave(this.modalData).then(({data}) => {
  1014. if (data && data.code === 0) {
  1015. this.getDataList()
  1016. this.modalFlag = false
  1017. this.$message({
  1018. message: '操作成功',
  1019. type: 'success',
  1020. duration: 1500,
  1021. onClose: () => {}
  1022. })
  1023. } else {
  1024. this.$alert(data.msg, '错误', {
  1025. confirmButtonText: '确定'
  1026. })
  1027. }
  1028. })
  1029. } else {
  1030. eamPropertiesModelEdit(this.modalData).then(({data}) => {
  1031. if (data && data.code === 0) {
  1032. this.getDataList()
  1033. this.modalFlag = false
  1034. this.$message({
  1035. message: '操作成功',
  1036. type: 'success',
  1037. duration: 1500,
  1038. onClose: () => {}
  1039. })
  1040. } else {
  1041. this.$alert(data.msg, '错误', {
  1042. confirmButtonText: '确定'
  1043. })
  1044. }
  1045. })
  1046. }
  1047. },
  1048. // 打开项目清单
  1049. detailModal (row) {
  1050. this.detailData.site = row.site
  1051. this.detailData.buNo = row.buNo
  1052. this.detailData.codeNo = row.codeNo
  1053. this.detailData.codeDesc = row.codeDesc
  1054. searchModalDetails(this.detailData).then(({data}) => {
  1055. this.detailList = data.rows
  1056. })
  1057. this.detailModelFlag = true
  1058. },
  1059. itemNoBlur () {
  1060. let inData = {
  1061. site: this.$store.state.user.site,
  1062. itemType: 'A',
  1063. itemNo: this.detailData.itemNo
  1064. }
  1065. eamPropertiesItemSearch(inData).then(({data}) => {
  1066. if (data.rows.length > 0) {
  1067. this.detailData.itemDesc = data.rows[0].itemDesc
  1068. }else {
  1069. this.detailData.itemDesc = ''
  1070. }
  1071. })
  1072. },
  1073. deleteModalDetails (row) {
  1074. this.$confirm(`是否删除这个点检项目?`, '提示', {
  1075. confirmButtonText: '确定',
  1076. cancelButtonText: '取消',
  1077. type: 'warning'
  1078. }).then(() => {
  1079. deleteModalDetail(row).then(({data}) => {
  1080. if (data && data.code === 0) {
  1081. searchModalDetails(this.detailData).then(({data}) => {
  1082. this.detailList = data.rows
  1083. })
  1084. this.$message({
  1085. message: '操作成功',
  1086. type: 'success',
  1087. duration: 1500,
  1088. onClose: () => {}
  1089. })
  1090. } else {
  1091. this.$alert(data.msg, '错误', {
  1092. confirmButtonText: '确定'
  1093. })
  1094. }
  1095. })
  1096. }).catch(() => {
  1097. })
  1098. },
  1099. chooseModal (row) {
  1100. this.chooseModalData.site = row.site
  1101. this.chooseModalData.buNo = row.buNo
  1102. this.chooseModalData.itemNo = row.itemNo
  1103. this.chooseModalData.itemDesc = row.itemDesc
  1104. this.chooseModalData.valueTypeDb = row.valueTypeDb
  1105. searchItemAvailable(this.chooseModalData).then(({data}) => {
  1106. this.chooseTableData = data.rows
  1107. })
  1108. this.chooseModalFlag = true
  1109. },
  1110. queryTemplateItem () {
  1111. getItemLists(this.detailData).then(({data}) => {
  1112. this.itemList1 = data.row1
  1113. this.itemList2 = data.row2
  1114. })
  1115. },
  1116. addFastModal () {
  1117. this.itemSelections1 = null
  1118. this.itemSelections2 = null
  1119. getItemLists(this.detailData).then(({data}) => {
  1120. this.itemList1 = data.row1
  1121. this.itemList2 = data.row2
  1122. })
  1123. this.fastAddFlag = true
  1124. },
  1125. // 可选项目
  1126. itemClickRow1 (row) {
  1127. this.$refs.itemTable1.toggleRowSelection(row);
  1128. },
  1129. // 已有项目
  1130. itemClickRow2 (row) {
  1131. this.$refs.itemTable2.toggleRowSelection(row);
  1132. },
  1133. selectFlag () {
  1134. return true
  1135. },
  1136. selectionItem1 (val) {
  1137. this.itemSelections1 = val
  1138. },
  1139. selectionItem2 (val) {
  1140. this.itemSelections2 = val
  1141. },
  1142. addItem () {
  1143. if (this.itemSelections1 == null || this.itemSelections1.length === 0) {
  1144. this.$message.warning('请选择可选项目!')
  1145. return
  1146. }
  1147. let inData = {
  1148. site: this.detailData.site,
  1149. buNo: this.detailData.buNo,
  1150. codeNo: this.detailData.codeNo,
  1151. codeDesc: this.detailData.codeDesc,
  1152. functionType: this.detailData.functionType,
  1153. itemList: this.itemSelections1,
  1154. itemType: this.detailData.itemType,
  1155. userId: this.$store.state.user.name
  1156. }
  1157. saveModalDetails(inData).then(({data}) => {
  1158. if (data && data.code === 0) {
  1159. getItemLists(this.detailData).then(({data}) => {
  1160. this.itemList1 = data.row1
  1161. this.itemList2 = data.row2
  1162. })
  1163. this.itemSelections1 = []
  1164. } else {
  1165. this.$alert(data.msg, '错误', {
  1166. confirmButtonText: '确定'
  1167. })
  1168. }
  1169. })
  1170. },
  1171. deleteItem () {
  1172. if(this.itemSelections2 == null || this.itemSelections2.length === 0){
  1173. this.$message.warning('请选择已有项目!')
  1174. return
  1175. }
  1176. let inData = {
  1177. site: this.detailData.site,
  1178. buNo: this.detailData.buNo,
  1179. codeNo: this.detailData.codeNo,
  1180. codeDesc: this.detailData.codeDesc,
  1181. functionType: this.detailData.functionType,
  1182. itemList: this.itemSelections2,
  1183. itemType: this.detailData.itemType,
  1184. userId: this.$store.state.user.name
  1185. }
  1186. deleteModalDetails(inData).then(({data}) => {
  1187. if (data && data.code === 0) {
  1188. getItemLists(this.detailData).then(({data}) => {
  1189. this.itemList1 = data.row1
  1190. this.itemList2 = data.row2
  1191. })
  1192. this.itemSelections2 = []
  1193. } else {
  1194. this.$alert(data.msg, '错误', {
  1195. confirmButtonText: '确定'
  1196. })
  1197. }
  1198. })
  1199. },
  1200. refreshDetailList () {
  1201. searchModalDetails(this.detailData).then(({data}) => {
  1202. this.detailList = data.rows
  1203. })
  1204. },
  1205. // 动态列开始 获取 用户保存的 格式列
  1206. async getTableUserColumn (tableId, columnId) {
  1207. let queryTableUser = {
  1208. userId: this.$store.state.user.name,
  1209. functionId: this.$route.meta.menuId,
  1210. tableId: tableId,
  1211. status: true,
  1212. languageCode: this.$i18n.locale
  1213. }
  1214. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  1215. if (data.rows.length > 0) {
  1216. //this.columnList1 = []
  1217. switch (columnId) {
  1218. case 1:
  1219. this.columnList = data.rows
  1220. break;
  1221. case 2:
  1222. this.columnDetailList = data.rows
  1223. break;
  1224. // case 3:
  1225. // this.columnList2 = data.rows
  1226. // break;
  1227. // case 4:
  1228. // this.columnList3 = data.rows
  1229. // break;
  1230. }
  1231. } else {
  1232. this.getColumnList(tableId, columnId)
  1233. }
  1234. })
  1235. },
  1236. // 获取 tableDefault 列
  1237. async getColumnList (tableId, columnId) {
  1238. let queryTable = {
  1239. functionId: this.$route.meta.menuId,
  1240. tableId: tableId,
  1241. languageCode: this.$i18n.locale
  1242. }
  1243. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1244. if (!data.rows.length == 0) {
  1245. switch (columnId) {
  1246. case 1:
  1247. this.columnList = data.rows
  1248. break;
  1249. case 2:
  1250. this.columnDetailList = data.rows
  1251. break;
  1252. // case 3:
  1253. // this.columnList2 = data.rows
  1254. // break;
  1255. // case 4:
  1256. // this.columnList3 = data.rows
  1257. // break;
  1258. }
  1259. } else {
  1260. // this.showDefault = true.
  1261. }
  1262. })
  1263. },
  1264. //获取按钮的权限数据
  1265. getButtonAuthData () {
  1266. let searchFlag = this.isAuth(this.menuId+":search")
  1267. let saveFlag = this.isAuth(this.menuId+":save")
  1268. let updateFlag = this.isAuth(this.menuId+":update")
  1269. let deleteFlag = this.isAuth(this.menuId+":delete")
  1270. //处理页面的权限数据
  1271. this.authSearch = !searchFlag
  1272. this.authSave = !saveFlag
  1273. this.authUpdate = !updateFlag
  1274. this.authDelete = !deleteFlag
  1275. },
  1276. }
  1277. }
  1278. </script>
  1279. <style scoped>
  1280. .el-table /deep/ .cell{
  1281. height: auto;
  1282. line-height: 1.5;
  1283. }
  1284. </style>