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.

1084 lines
35 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
  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.itemNo" style="width: 120px"></el-input>
  21. </el-form-item>
  22. <el-form-item :label="'点检项目名称'">
  23. <el-input v-model="searchData.itemDesc" style="width: 120px"></el-input>
  24. </el-form-item>
  25. <el-form-item :label="' '">
  26. <el-button v-if="!authSearch" type="primary" @click="getDataList()">查询</el-button>
  27. <el-button v-if="!authSave" type="primary" @click="addModal()">新增</el-button>
  28. <download-excel
  29. :fields="fields()"
  30. :data="exportData"
  31. type="xls"
  32. :name="exportName"
  33. :header="exportHeader"
  34. :footer="exportFooter"
  35. :fetch="createExportData"
  36. :before-generate="startDownload"
  37. :before-finish="finishDownload"
  38. worksheet="导出信息"
  39. class="el-button el-button--primary el-button--medium">
  40. {{ "导出" }}
  41. </download-excel>
  42. </el-form-item>
  43. </el-form>
  44. <el-table
  45. :height="height"
  46. :data="dataList"
  47. border
  48. style="width: 100%;">
  49. <el-table-column
  50. v-for="(item,index) in columnList" :key="index"
  51. :sortable="item.columnSortable"
  52. :prop="item.columnProp"
  53. :header-align="item.headerAlign"
  54. :show-overflow-tooltip="item.showOverflowTooltip"
  55. :align="item.align"
  56. :fixed="item.fixed==''?false:item.fixed"
  57. :min-width="item.columnWidth"
  58. :label="item.columnLabel">
  59. <template slot-scope="scope">
  60. <span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
  61. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span>
  62. </template>
  63. </el-table-column>
  64. <el-table-column
  65. fixed="right"
  66. header-align="center"
  67. align="center"
  68. width="160"
  69. label="操作">
  70. <template slot-scope="scope">
  71. <a v-if="!authUpdate" type="text" size="small" @click="updateModal(scope.row)">修改</a>
  72. <a type="text" size="small" v-if="scope.row.valueChooseFlag === 'Y' && !authChoose" @click="chooseModal(scope.row)">可选值</a>
  73. <a v-if="!authDelete" type="text" size="small" @click="deleteEamPropertiesItem(scope.row)">删除</a>
  74. </template>
  75. </el-table-column>
  76. </el-table>
  77. <!-- 分页栏 -->
  78. <el-pagination
  79. @size-change="sizeChangeHandle"
  80. @current-change="currentChangeHandle"
  81. :current-page="pageIndex"
  82. :page-sizes="[20, 50, 100, 200, 500]"
  83. :page-size="pageSize"
  84. :total="totalPage"
  85. layout="total, sizes, prev, pager, next, jumper">
  86. </el-pagination>
  87. <el-dialog title="点检项目" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px">
  88. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  89. <el-form-item label="BU" prop="bu" :rules="rules.bu">
  90. <el-select v-model="modalData.bu" placeholder="请选择" :disabled="modalDisableFlag" style="width: 230px">
  91. <el-option
  92. v-for = "i in userBuList"
  93. :key = "i.buNo"
  94. :label = "i.sitename"
  95. :value = "i.buNo">
  96. <span style="float: left;width: 100px">{{ i.sitename }}</span>
  97. <span style="float: right; color: #8492a6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; font-size: 11px;width: 60px">
  98. {{ i.buDesc }}
  99. </span>
  100. </el-option>
  101. </el-select>
  102. </el-form-item>
  103. <el-form-item :label="'检测值类型'" prop="valueTypeDb" :rules="rules.valueTypeDbType">
  104. <el-select filterable v-model="modalData.valueTypeDb" style="width: 140px">
  105. <el-option label="文本" value="T"></el-option>
  106. <el-option label="数字" value="N"></el-option>
  107. </el-select>
  108. </el-form-item>
  109. </el-form>
  110. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  111. <el-form-item label="点检项目编码:" prop="itemNo" :rules="rules.itemNoType">
  112. <el-input v-model="modalData.itemNo" :disabled="modalDisableFlag" style="width: 140px"></el-input>
  113. </el-form-item>
  114. <el-form-item label="点检项目名称:" prop="itemDesc" :rules="rules.itemDescType">
  115. <el-input v-model="modalData.itemDesc" style="width: 230px"></el-input>
  116. </el-form-item>
  117. </el-form>
  118. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  119. <el-form-item label="参照值:">
  120. <el-input v-model="modalData.defaultValue" style="width: 119px"></el-input>
  121. </el-form-item>
  122. <el-form-item label="最大值:">
  123. <el-input v-model="modalData.maxValue" type="number" style="width: 119px"></el-input>
  124. </el-form-item>
  125. <el-form-item label="最小值:">
  126. <el-input v-model="modalData.minValue" type="number" style="width: 118px"></el-input>
  127. </el-form-item>
  128. </el-form>
  129. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  130. <el-form-item :label="'是否值可选'" prop="valueChooseFlag" :rules="rules.valueChooseFlagType">
  131. <el-select v-model="modalData.valueChooseFlag" style="width: 120px">
  132. <el-option label="是" value="Y"></el-option>
  133. <el-option label="否" value="N"></el-option>
  134. </el-select>
  135. </el-form-item>
  136. <el-form-item style="font-size: small;vertical-align: -18px;margin-left: 15px;">
  137. <input type="checkbox" value="Y" name="addWorkOrderRule" v-model="modalData.imageFlag" style="vertical-align: -2px"/> 图片是否必填
  138. </el-form-item>
  139. <el-form-item style="font-size: small;vertical-align: -18px;margin-left: 15px;">
  140. <input type="checkbox" value="Y" name="produceControlRule" v-model="modalData.produceControlFlag" style="vertical-align: -2px"/> 是否生产管控
  141. </el-form-item>
  142. </el-form>
  143. <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
  144. <el-form-item label="点检方法说明:">
  145. <el-input v-model="modalData.itemRemark" style="width: 384px"></el-input>
  146. </el-form-item>
  147. </el-form>
  148. <el-footer style="height:40px;margin-top: 20px;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="chooseModalFlag" width="430px">
  154. <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
  155. <el-form-item label="点检项目名称:">
  156. <el-input v-model="chooseModalData.itemDesc" disabled style="width: 120px"></el-input>
  157. </el-form-item>
  158. <el-form-item :label="'检测值类型'">
  159. <el-select filterable v-model="chooseModalData.valueTypeDb" disabled style="width: 120px">
  160. <el-option label="文本" value="T"></el-option>
  161. <el-option label="数字" value="N"></el-option>
  162. </el-select>
  163. </el-form-item>
  164. <el-form-item :label="' '">
  165. <el-button type="primary" @click="addChooseModal()">新增</el-button>
  166. </el-form-item>
  167. </el-form>
  168. <el-table
  169. :height="300"
  170. :data="chooseTableData"
  171. border
  172. style="width: 100%">
  173. <el-table-column
  174. prop="availableValue"
  175. header-align="center"
  176. align="left"
  177. min-width="200"
  178. label="属性值">
  179. </el-table-column>
  180. <el-table-column
  181. prop=""
  182. header-align="center"
  183. align="center"
  184. min-width="100"
  185. label="操作">
  186. <template slot-scope="scope">
  187. <a type="text" size="small" @click="updateChooseModal(scope.row)">修改</a>
  188. <a type="text" size="small" @click="deleteItemAvailable(scope.row)">删除</a>
  189. </template>
  190. </el-table-column>
  191. </el-table>
  192. </el-dialog>
  193. <el-dialog title="可选值维护" :close-on-click-modal="false" v-drag :visible.sync="itemModalFlag" width="215px" >
  194. <el-form :inline="true" label-position="top" style="margin-left: 22px;margin-top: -5px;" @submit.native.prevent>
  195. <el-form-item :label="'可选值:'">
  196. <el-input v-model="itemData.availableValue" :type="itemFlag" style="width: 130px;"></el-input>
  197. </el-form-item>
  198. </el-form>
  199. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  200. <el-button type="primary" @click="saveItemAvailable()">保存</el-button>
  201. <el-button type="primary" @click="itemModalFlag = false">关闭</el-button>
  202. </el-footer>
  203. </el-dialog>
  204. </div>
  205. </template>
  206. <script>
  207. import {
  208. eamPropertiesItemSearch,
  209. eamPropertiesItemSave,
  210. eamPropertiesItemEdit,
  211. eamPropertiesItemDelete,
  212. searchItemAvailable,
  213. saveItemAvailable,
  214. deleteItemAvailable,
  215. getSiteAndBuByUserName
  216. } from "@/api/eam/eam.js"
  217. import {getTableDefaultListLanguage, getTableUserListLanguage} from "@/api/table.js"
  218. import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
  219. export default {
  220. watch: {
  221. searchData: {
  222. deep: true,
  223. handler: function (newV, oldV) {
  224. this.searchData.itemNo = this.searchData.itemNo.toUpperCase()
  225. }
  226. },
  227. itemData: {
  228. deep: true,
  229. handler: function (newV, oldV) {
  230. this.itemData.itemNo = this.itemData.itemNo.toUpperCase()
  231. }
  232. },
  233. modalData: {
  234. deep: true,
  235. handler: function (newV, oldV) {
  236. this.modalData.itemNo = this.modalData.itemNo.toUpperCase()
  237. }
  238. },
  239. chooseModalData: {
  240. deep: true,
  241. handler: function (newV, oldV) {
  242. this.chooseModalData.itemNo = this.chooseModalData.itemNo.toUpperCase()
  243. }
  244. }
  245. },
  246. data () {
  247. return {
  248. // 是否收藏
  249. favorite: false,
  250. // 导出 start
  251. exportData: [],
  252. exportName: "点检项目" + this.dayjs().format('YYYYMMDDHHmmss'),
  253. exportHeader: ["点检项目"],
  254. exportFooter: [],
  255. exportList: [],
  256. // 导出 end
  257. searchData: {
  258. site: '',
  259. userName: this.$store.state.user.name,
  260. itemNo: '',
  261. itemDesc: '',
  262. buDesc: '',
  263. itemType:'A',
  264. page: 1,
  265. limit: 10,
  266. },
  267. height: 200,
  268. pageIndex: 1,
  269. pageSize: 20,
  270. totalPage: 0,
  271. dataList: [],
  272. chooseTableData: [],
  273. dataListSelections: [],
  274. modalFlag: false,
  275. modalDisableFlag: false,
  276. chooseModalFlag: false,
  277. itemModalFlag: false,
  278. itemFlag: 'text',
  279. itemData: {
  280. site: '',
  281. buNo: '',
  282. itemNo: '',
  283. valueNo: '',
  284. availableValue: '',
  285. itemType: 'A',
  286. createdBy: this.$store.state.user.name
  287. },
  288. modalData: {
  289. site: '',
  290. bu: '',
  291. flag: '',
  292. itemNo: '',
  293. itemDesc: '',
  294. valueTypeDb: '',
  295. defaultValue: '',
  296. valueChooseFlag: '',
  297. createdBy: this.$store.state.user.name,
  298. maxValue: '',
  299. minValue: '',
  300. itemRemark: '',
  301. itemType: 'A',
  302. updateBy: this.$store.state.user.name,
  303. imageFlag: '',
  304. produceControlFlag: ''
  305. },
  306. departmentList: [],
  307. // 展示列集
  308. columnList: [
  309. {
  310. userId: this.$store.state.user.name,
  311. functionId: 101002001,
  312. serialNumber: '101002001Table1BuDesc',
  313. tableId: "101002001Table1",
  314. tableName: "点检项目表",
  315. columnProp: 'buDesc',
  316. headerAlign: "center",
  317. align: "center",
  318. columnLabel: 'BU',
  319. columnHidden: false,
  320. columnImage: false,
  321. columnSortable: false,
  322. sortLv: 0,
  323. status: true,
  324. fixed: '',
  325. columnWidth: 100,
  326. },
  327. {
  328. userId: this.$store.state.user.name,
  329. functionId: 101002001,
  330. serialNumber: '101002001Table1ItemNo',
  331. tableId: "101002001Table1",
  332. tableName: "点检项目表",
  333. columnProp: 'itemNo',
  334. headerAlign: "center",
  335. align: "center",
  336. columnLabel: '点检项目编码',
  337. columnHidden: false,
  338. columnImage: false,
  339. columnSortable: false,
  340. sortLv: 0,
  341. status: true,
  342. fixed: '',
  343. columnWidth: 120
  344. },
  345. {
  346. userId: this.$store.state.user.name,
  347. functionId: 101002001,
  348. serialNumber: '101002001Table1ItemDesc',
  349. tableId: "101002001Table1",
  350. tableName: "点检项目表",
  351. columnProp: 'itemDesc',
  352. headerAlign: "center",
  353. align: "left",
  354. columnLabel: '点检项目名称',
  355. columnHidden: false,
  356. columnImage: false,
  357. columnSortable: false,
  358. sortLv: 0,
  359. status: true,
  360. fixed: '',
  361. columnWidth: 150,
  362. },
  363. {
  364. userId: this.$store.state.user.name,
  365. functionId: 101002001,
  366. serialNumber: '101002001Table1ItemRemark',
  367. tableId: "101002001Table1",
  368. tableName: "点检项目表",
  369. columnProp: 'itemRemark',
  370. headerAlign: "center",
  371. align: "left",
  372. columnLabel: '点检方法说明',
  373. columnHidden: false,
  374. columnImage: false,
  375. columnSortable: false,
  376. sortLv: 0,
  377. status: true,
  378. fixed: '',
  379. columnWidth: 400,
  380. },
  381. {
  382. userId: this.$store.state.user.name,
  383. functionId: 101002001,
  384. serialNumber: '101002001Table1ValueType',
  385. tableId: "101002001Table1",
  386. tableName: "点检项目表",
  387. columnProp: 'valueType',
  388. headerAlign: "center",
  389. align: "center",
  390. columnLabel: '检测值类型',
  391. columnHidden: false,
  392. columnImage: false,
  393. columnSortable: false,
  394. sortLv: 0,
  395. status: true,
  396. fixed: '',
  397. columnWidth: 100,
  398. },
  399. {
  400. userId: this.$store.state.user.name,
  401. functionId: 101002001,
  402. serialNumber: '101002001Table1DefaultValue',
  403. tableId: "101002001Table1",
  404. tableName: "点检项目表",
  405. columnProp: 'defaultValue',
  406. headerAlign: "center",
  407. align: "right",
  408. columnLabel: '参照值',
  409. columnHidden: false,
  410. columnImage: false,
  411. columnSortable: false,
  412. sortLv: 0,
  413. status: true,
  414. fixed: '',
  415. columnWidth: 100,
  416. },
  417. {
  418. userId: this.$store.state.user.name,
  419. functionId: 101002001,
  420. serialNumber: '101002001Table1MaxValue',
  421. tableId: "101002001Table1",
  422. tableName: "点检项目表",
  423. columnProp: 'maxValue',
  424. headerAlign: "center",
  425. align: "right",
  426. columnLabel: '最大值',
  427. columnHidden: false,
  428. columnImage: false,
  429. columnSortable: false,
  430. sortLv: 0,
  431. status: true,
  432. fixed: '',
  433. columnWidth: 100,
  434. },
  435. {
  436. userId: this.$store.state.user.name,
  437. functionId: 101002001,
  438. serialNumber: '101002001Table1MinValue',
  439. tableId: "101002001Table1",
  440. tableName: "点检项目表",
  441. columnProp: 'minValue',
  442. headerAlign: "center",
  443. align: "right",
  444. columnLabel: '最小值',
  445. columnHidden: false,
  446. columnImage: false,
  447. columnSortable: false,
  448. sortLv: 0,
  449. status: true,
  450. fixed: '',
  451. columnWidth: 100,
  452. },
  453. {
  454. userId: this.$store.state.user.name,
  455. functionId: 101002001,
  456. serialNumber: '101002001Table1ValueChooseFlag',
  457. tableId: "101002001Table1",
  458. tableName: "点检项目表",
  459. columnProp: 'valueChooseFlag',
  460. headerAlign: "center",
  461. align: "center",
  462. columnLabel: '是否值可选',
  463. columnHidden: false,
  464. columnImage: false,
  465. columnSortable: false,
  466. sortLv: 0,
  467. status: true,
  468. fixed: '',
  469. columnWidth: 100,
  470. },
  471. {
  472. userId: this.$store.state.user.name,
  473. functionId: 101002001,
  474. serialNumber: '101002001Table1ImageFlag',
  475. tableId: "101002001Table1",
  476. tableName: "点检项目表",
  477. columnProp: 'imageFlag',
  478. headerAlign: "center",
  479. align: "center",
  480. columnLabel: '是否图片必填',
  481. columnHidden: false,
  482. columnImage: false,
  483. columnSortable: false,
  484. sortLv: 0,
  485. status: true,
  486. fixed: '',
  487. columnWidth: 100,
  488. },
  489. {
  490. userId: this.$store.state.user.name,
  491. functionId: 101002001,
  492. serialNumber: '101002001Table1ProduceControlFlag',
  493. tableId: "101002001Table1",
  494. tableName: "点检项目表",
  495. columnProp: 'produceControlFlag',
  496. headerAlign: "center",
  497. align: "center",
  498. columnLabel: '生产管控',
  499. columnHidden: false,
  500. columnImage: false,
  501. columnSortable: false,
  502. sortLv: 0,
  503. status: true,
  504. fixed: '',
  505. columnWidth: 100,
  506. },
  507. {
  508. userId: this.$store.state.user.name,
  509. functionId: 101002001,
  510. serialNumber: '101002001Table1CreatedDate',
  511. tableId: "101002001Table1",
  512. tableName: "点检项目表",
  513. columnProp: 'createdDate',
  514. headerAlign: "center",
  515. align: "center",
  516. columnLabel: '创建时间',
  517. columnHidden: false,
  518. columnImage: false,
  519. columnSortable: false,
  520. sortLv: 0,
  521. status: true,
  522. fixed: '',
  523. columnWidth: 170,
  524. },
  525. {
  526. userId: this.$store.state.user.name,
  527. functionId: 101002001,
  528. serialNumber: '101002001Table1CreatedBy',
  529. tableId: "101002001Table1",
  530. tableName: "点检项目表",
  531. columnProp: 'createdBy',
  532. headerAlign: "center",
  533. align: "center",
  534. columnLabel: '创建人',
  535. columnHidden: false,
  536. columnImage: false,
  537. columnSortable: false,
  538. sortLv: 0,
  539. status: true,
  540. fixed: '',
  541. columnWidth: 100,
  542. },
  543. {
  544. userId: this.$store.state.user.name,
  545. functionId: 101002001,
  546. serialNumber: '101002001Table1UpdateDate',
  547. tableId: "101002001Table1",
  548. tableName: "点检项目表",
  549. columnProp: 'updateDate',
  550. headerAlign: "center",
  551. align: "center",
  552. columnLabel: '更新时间',
  553. columnHidden: false,
  554. columnImage: false,
  555. columnSortable: false,
  556. sortLv: 0,
  557. status: true,
  558. fixed: '',
  559. columnWidth: 170,
  560. },
  561. {
  562. userId: this.$store.state.user.name,
  563. functionId: 101002001,
  564. serialNumber: '101002001Table1UpdateBy',
  565. tableId: "101002001Table1",
  566. tableName: "点检项目表",
  567. columnProp: 'updateBy',
  568. headerAlign: "center",
  569. align: "center",
  570. columnLabel: '更新人',
  571. columnHidden: false,
  572. columnImage: false,
  573. columnSortable: false,
  574. sortLv: 0,
  575. status: true,
  576. fixed: '',
  577. columnWidth: 100,
  578. },
  579. ],
  580. levelList: [],
  581. chooseModalData: {
  582. site: '',
  583. buNo: '',
  584. itemNo: '',
  585. itemDesc: '',
  586. itemType: 'A',
  587. valueTypeDb: '',
  588. },
  589. rules: {
  590. itemNoType: [
  591. {
  592. required: true,
  593. message: ' ',
  594. trigger: ['blur','change']
  595. }
  596. ],
  597. itemDescType: [
  598. {
  599. required: true,
  600. message: ' ',
  601. trigger: ['blur','change']
  602. }
  603. ],
  604. valueTypeDbType: [
  605. {
  606. required: true,
  607. message: ' ',
  608. trigger: ['blur','change']
  609. }
  610. ],
  611. valueChooseFlagType: [
  612. {
  613. required: true,
  614. message: ' ',
  615. trigger: ['blur','change']
  616. }
  617. ],
  618. bu: [
  619. {
  620. required: true,
  621. message: ' ',
  622. trigger: ['blur','change']
  623. }
  624. ]
  625. },
  626. userBuList: [],
  627. authSearch: false,
  628. authSave: false,
  629. authUpdate: false,
  630. authDelete: false,
  631. authChoose: false,
  632. menuId: this.$route.meta.menuId,
  633. }
  634. },
  635. mounted () {
  636. this.$nextTick(() => {
  637. this.height = window.innerHeight - 180
  638. })
  639. },
  640. created () {
  641. // 按钮控制
  642. this.getButtonAuthData()
  643. // 获取用户的 site 和 bu
  644. this.getSiteAndBuByUserName()
  645. // 校验用户是否收藏
  646. this.favoriteIsOk()
  647. // 动态列
  648. this.getTableUserColumn(this.$route.meta.menuId+'table1',1)
  649. if (!this.authSearch) {
  650. // 获取数据列表
  651. this.getDataList()
  652. }
  653. },
  654. methods: {
  655. // 获取用户的bu
  656. getSiteAndBuByUserName () {
  657. let tempData = {
  658. username: this.$store.state.user.name,
  659. }
  660. getSiteAndBuByUserName(tempData).then(({data}) => {
  661. if (data.code === 0) {
  662. this.userBuList = data.rows
  663. }
  664. })
  665. },
  666. // 每页数
  667. sizeChangeHandle (val) {
  668. this.pageSize = val
  669. this.pageIndex = 1
  670. this.getDataList()
  671. },
  672. // 当前页
  673. currentChangeHandle (val) {
  674. this.pageIndex = val
  675. this.getDataList()
  676. },
  677. // 校验用户是否收藏
  678. favoriteIsOk () {
  679. let userFavorite = {
  680. userId: this.$store.state.user.id,
  681. languageCode: this.$i18n.locale
  682. }
  683. userFavoriteList(userFavorite).then(({data}) => {
  684. for (let i = 0; i < data.list.length; i++) {
  685. if (this.$route.meta.menuId === data.list[i].menuId) {
  686. this.favorite = true
  687. }
  688. }
  689. })
  690. },
  691. // 收藏 OR 取消收藏
  692. favoriteFunction () {
  693. let userFavorite = {
  694. userId: this.$store.state.user.id,
  695. functionId: this.$route.meta.menuId,
  696. }
  697. if (this.favorite) {
  698. removeUserFavorite(userFavorite).then(({data}) => {
  699. this.$message.success(data.msg)
  700. this.favorite = false
  701. })
  702. } else {
  703. // 收藏
  704. saveUserFavorite(userFavorite).then(({data}) => {
  705. this.$message.success(data.msg)
  706. this.favorite = true
  707. })
  708. }
  709. },
  710. // 导出excel
  711. async createExportData () {
  712. this.searchData.limit = -1
  713. this.searchData.page = 1
  714. await eamPropertiesItemSearch(this.searchData).then(({data}) => {
  715. this.exportList = data.rows
  716. })
  717. return this.exportList
  718. },
  719. startDownload() {},
  720. finishDownload() {},
  721. fields() {
  722. let json = "{"
  723. this.columnList.forEach((item, index) => {
  724. if (index == this.columnList.length - 1) {
  725. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\""
  726. } else {
  727. json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + ","
  728. }
  729. })
  730. json += "}"
  731. let s = eval("(" + json + ")")
  732. return s
  733. },
  734. // 获取数据列表
  735. getDataList () {
  736. this.searchData.limit = this.pageSize
  737. this.searchData.page = this.pageIndex
  738. eamPropertiesItemSearch(this.searchData).then(({data}) => {
  739. if (data.code === 0) {
  740. this.dataList = data.page.list
  741. this.pageIndex = data.page.currPage
  742. this.pageSize = data.page.pageSize
  743. this.totalPage = data.page.totalCount
  744. }
  745. })
  746. },
  747. addModal () {
  748. this.modalData = {
  749. bu: this.userBuList[0].buNo,
  750. site: '',
  751. flag: '1',
  752. itemNo: '',
  753. itemDesc: '',
  754. valueTypeDb: 'T',
  755. defaultValue: '',
  756. valueChooseFlag: 'N',
  757. createdBy: this.$store.state.user.name,
  758. maxValue: '',
  759. minValue: '',
  760. itemRemark: '',
  761. itemType: 'A',
  762. updateBy: this.$store.state.user.name,
  763. imageFlag: '',
  764. produceControlFlag: ''
  765. }
  766. this.modalDisableFlag = false
  767. this.modalFlag = true
  768. },
  769. chooseModal (row) {
  770. this.chooseModalData.site = row.site
  771. this.chooseModalData.buNo = row.buNo
  772. this.chooseModalData.itemNo = row.itemNo
  773. this.chooseModalData.itemDesc = row.itemDesc
  774. this.chooseModalData.valueTypeDb = row.valueTypeDb
  775. searchItemAvailable(this.chooseModalData).then(({data}) => {
  776. this.chooseTableData = data.rows
  777. })
  778. this.chooseModalFlag = true
  779. },
  780. updateModal (row) {
  781. this.modalData = {
  782. flag: '2',
  783. site: row.site,
  784. bu: row.site + '_' + row.buNo,
  785. itemNo: row.itemNo,
  786. itemDesc: row.itemDesc,
  787. valueTypeDb: row.valueTypeDb,
  788. defaultValue: row.defaultValue,
  789. valueChooseFlag: row.valueChooseFlag,
  790. createdBy: this.$store.state.user.name,
  791. maxValue: row.maxValue,
  792. minValue: row.minValue,
  793. itemRemark: row.itemRemark,
  794. itemType: 'A',
  795. updateBy: this.$store.state.user.name,
  796. imageFlag: row.imageFlag,
  797. produceControlFlag: row.produceControlFlag
  798. }
  799. this.modalDisableFlag = true
  800. this.modalFlag = true
  801. },
  802. // 删除
  803. deleteEamPropertiesItem (row) {
  804. this.$confirm(`是否删除这个点检项目?`, '提示', {
  805. confirmButtonText: '确定',
  806. cancelButtonText: '取消',
  807. type: 'warning'
  808. }).then(() => {
  809. eamPropertiesItemDelete(row).then(({data}) => {
  810. if (data && data.code === '0') {
  811. this.getDataList()
  812. this.$message({
  813. message: '操作成功',
  814. type: 'success',
  815. duration: 1500,
  816. onClose: () => {}
  817. })
  818. } else {
  819. this.$alert(data.msg, '错误', {
  820. confirmButtonText: '确定'
  821. })
  822. }
  823. })
  824. }).catch(() => {
  825. })
  826. },
  827. saveData () {
  828. if (this.modalData.bu === '' || this.modalData.bu == null) {
  829. this.$message.warning('请选择BU!')
  830. return
  831. }
  832. if (this.modalData.itemNo === '' || this.modalData.itemNo == null) {
  833. this.$message.warning('请输入点检项目编码!')
  834. return
  835. }
  836. if (this.modalData.itemDesc === '' || this.modalData.itemDesc == null) {
  837. this.$message.warning('请输入点检项目名称!')
  838. return
  839. }
  840. let obj1 = document.getElementsByName('addWorkOrderRule')
  841. let obj2 = document.getElementsByName('produceControlRule')
  842. let Rule1 = ''
  843. let Rule2 = ''
  844. for (let i = 0; i < obj1.length; i++) {
  845. if (obj1[i].checked) {
  846. Rule1 += obj1[i].value + ','
  847. }
  848. }
  849. for (let i = 0; i < obj2.length; i++) {
  850. if (obj2[i].checked) {
  851. Rule2 += obj2[i].value + ','
  852. }
  853. }
  854. Rule1 = Rule1.substring(0,Rule1.length-1)
  855. Rule2 = Rule2.substring(0,Rule2.length-1)
  856. this.modalData.imageFlag = Rule1
  857. this.modalData.produceControlFlag = Rule2
  858. if (this.modalData.flag === '1') {
  859. eamPropertiesItemSave(this.modalData).then(({data}) => {
  860. if (data && data.code === '0') {
  861. this.getDataList()
  862. this.modalFlag = false
  863. this.$message({
  864. message: '操作成功',
  865. type: 'success',
  866. duration: 1500,
  867. onClose: () => {}
  868. })
  869. } else {
  870. this.$alert(data.msg, '错误', {
  871. confirmButtonText: '确定'
  872. })
  873. }
  874. })
  875. } else {
  876. eamPropertiesItemEdit(this.modalData).then(({data}) => {
  877. if (data && data.code === '0') {
  878. this.getDataList()
  879. this.modalFlag = false
  880. this.$message({
  881. message: '操作成功',
  882. type: 'success',
  883. duration: 1500,
  884. onClose: () => {}
  885. })
  886. } else {
  887. this.$alert(data.msg, '错误', {
  888. confirmButtonText: '确定'
  889. })
  890. }
  891. })
  892. }
  893. },
  894. addChooseModal () {
  895. this.itemFlag = this.chooseModalData.valueTypeDb === 'T' ? 'text' : 'number'
  896. this.itemData = {
  897. site: this.chooseModalData.site,
  898. buNo: this.chooseModalData.buNo,
  899. itemNo: this.chooseModalData.itemNo,
  900. valueNo: 0,
  901. availableValue: '',
  902. itemType: 'A',
  903. createdBy: this.$store.state.user.name
  904. }
  905. this.itemModalFlag = true
  906. },
  907. updateChooseModal (row) {
  908. this.itemFlag = this.chooseModalData.valueTypeDb === 'T' ? 'text' : 'number'
  909. this.itemData = {
  910. site: row.site,
  911. buNo: row.buNo,
  912. itemNo: this.chooseModalData.itemNo,
  913. valueNo: row.valueNo,
  914. availableValue: row.availableValue,
  915. itemType: 'A',
  916. createdBy: row.createdBy
  917. }
  918. this.itemModalFlag = true
  919. },
  920. saveItemAvailable () {
  921. if (this.itemData.availableValue === '' || this.itemData.availableValue == null) {
  922. this.$message.warning('请输入可选值!')
  923. return
  924. }
  925. saveItemAvailable(this.itemData).then(({data}) => {
  926. if (data && data.code === 0) {
  927. searchItemAvailable(this.chooseModalData).then(({data}) => {
  928. this.chooseTableData = data.rows
  929. })
  930. this.itemModalFlag = false
  931. this.$message({
  932. message: '操作成功',
  933. type: 'success',
  934. duration: 1500,
  935. onClose: () => {}
  936. })
  937. } else {
  938. this.$alert(data.msg, '错误', {
  939. confirmButtonText: '确定'
  940. })
  941. }
  942. })
  943. },
  944. deleteItemAvailable (row) {
  945. this.$confirm(`是否删除这个可选值?`, '提示', {
  946. confirmButtonText: '确定',
  947. cancelButtonText: '取消',
  948. type: 'warning'
  949. }).then(() => {
  950. deleteItemAvailable(row).then(({data}) => {
  951. if (data && data.code === 0) {
  952. searchItemAvailable(this.chooseModalData).then(({data}) => {
  953. this.chooseTableData = data.rows
  954. })
  955. this.$message({
  956. message: '操作成功',
  957. type: 'success',
  958. duration: 1500,
  959. onClose: () => {}
  960. })
  961. } else {
  962. this.$alert(data.msg, '错误', {
  963. confirmButtonText: '确定'
  964. })
  965. }
  966. })
  967. }).catch(() => {
  968. })
  969. },
  970. // 动态列开始 获取 用户保存的 格式列
  971. async getTableUserColumn(tableId, columnId) {
  972. let queryTableUser = {
  973. userId: this.$store.state.user.name,
  974. functionId: this.$route.meta.menuId,
  975. tableId: tableId,
  976. status: true,
  977. languageCode: this.$i18n.locale
  978. }
  979. await getTableUserListLanguage(queryTableUser).then(({data}) => {
  980. if (data.rows.length > 0) {
  981. //this.columnList1 = []
  982. switch (columnId) {
  983. case 1:
  984. this.columnList = data.rows
  985. break;
  986. // case 2:
  987. // this.detailColumnList = data.rows
  988. // break;
  989. // case 3:
  990. // this.columnList2 = data.rows
  991. // break;
  992. // case 4:
  993. // this.columnList3 = data.rows
  994. // break;
  995. }
  996. } else {
  997. this.getColumnList(tableId, columnId)
  998. }
  999. })
  1000. },
  1001. // 获取 tableDefault 列
  1002. async getColumnList (tableId, columnId) {
  1003. let queryTable = {
  1004. functionId: this.$route.meta.menuId,
  1005. tableId: tableId,
  1006. languageCode: this.$i18n.locale
  1007. }
  1008. await getTableDefaultListLanguage(queryTable).then(({data}) => {
  1009. if (!data.rows.length == 0) {
  1010. switch (columnId) {
  1011. case 1:
  1012. this.columnList = data.rows
  1013. break;
  1014. // case 2:
  1015. // this.detailColumnList = data.rows
  1016. // break;
  1017. // case 3:
  1018. // this.columnList2 = data.rows
  1019. // break;
  1020. // case 4:
  1021. // this.columnList3 = data.rows
  1022. // break;
  1023. }
  1024. } else {
  1025. // this.showDefault = true.
  1026. }
  1027. })
  1028. },
  1029. //获取按钮的权限数据
  1030. getButtonAuthData () {
  1031. let searchFlag = this.isAuth(this.menuId+":search")
  1032. let saveFlag = this.isAuth(this.menuId+":save")
  1033. let updateFlag = this.isAuth(this.menuId+":update")
  1034. let deleteFlag = this.isAuth(this.menuId+":delete")
  1035. let chooseFlag = this.isAuth(this.menuId+":choose")
  1036. //处理页面的权限数据
  1037. this.authSearch = !searchFlag
  1038. this.authSave = !saveFlag
  1039. this.authUpdate = !updateFlag
  1040. this.authDelete = !deleteFlag
  1041. this.authChoose = !chooseFlag
  1042. },
  1043. }
  1044. }
  1045. </script>
  1046. <style scoped lang="scss">
  1047. .register_btn {
  1048. position: absolute;
  1049. right: 0;
  1050. }
  1051. .el-table /deep/ .cell{
  1052. height: auto;
  1053. line-height: 1.5;
  1054. }
  1055. </style>