plm前端
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.

1470 lines
47 KiB

3 years ago
1 year ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 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
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
1 year ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
1 year ago
1 year ago
1 year ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
1 year ago
3 years ago
3 years ago
2 years ago
1 year ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
1 year ago
3 years ago
1 year ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
3 years ago
1 year ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
1 year ago
3 years ago
1 year ago
3 years ago
1 year ago
1 year ago
1 year ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
  1. <template>
  2. <div class="mod-user">
  3. <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
  4. <el-form-item>
  5. <el-input v-model="searchData.userName" placeholder="用户账号" ></el-input>
  6. </el-form-item>
  7. <el-form-item>
  8. <el-input v-model="searchData.userDisplay" placeholder="用户名称" ></el-input>
  9. </el-form-item>
  10. <el-form-item>
  11. <el-input v-model="searchData.domainControlAccount" placeholder="域控账号" ></el-input>
  12. </el-form-item>
  13. <el-form-item>
  14. <el-button @click="getDataList()" type="primary">{{ buttons.search || '查询' }}</el-button>
  15. <el-button v-if="isAuth('sys:user:save')" type="primary" @click="addOrUpdateHandle()">
  16. {{ buttons.add || '新增' }}
  17. </el-button>
  18. <el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
  19. @click="specialAuthorize()"
  20. >{{ buttons.specialCompetencies || '特殊权限' }}
  21. </el-button>
  22. <el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
  23. @click="siteAuthorize()"
  24. > {{ buttons.factoryAuthorization || '工厂授权' }}
  25. </el-button>
  26. <el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
  27. @click="buAuthorize()"
  28. > {{ buttons.buAuthorization || 'BU授权' }}
  29. </el-button>
  30. <el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
  31. @click="projectModel()"
  32. > {{ buttons.projectAuthorization || '项目授权' }}
  33. </el-button>
  34. <el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
  35. @click="FieldListModel()"
  36. > {{ buttons.fieldAuthorization || '字段授权' }}
  37. </el-button>
  38. <el-button v-if="isAuth('sys:user:save')" :disabled="this.showButton" type="primary"
  39. @click="roleAuthorize()"
  40. > {{ buttons.roleAuthorization || '岗位授权' }}
  41. </el-button>
  42. </el-form-item>
  43. </el-form>
  44. <el-table
  45. :data="dataList"
  46. border
  47. :height="height"
  48. v-loading="dataListLoading"
  49. @selection-change="selectionChangeHandle"
  50. highlight-current-row
  51. @current-change="handleCurrentChange"
  52. style="width: 100%;">
  53. <el-table-column
  54. prop="username"
  55. header-align="center"
  56. align="center"
  57. :label="buttons.username||'用户账号'">
  58. </el-table-column>
  59. <el-table-column
  60. prop="userDisplay"
  61. header-align="center"
  62. align="center"
  63. :label="buttons.userDisplay||'用户名'">
  64. </el-table-column>
  65. <el-table-column
  66. prop="buDesc"
  67. header-align="center"
  68. align="center"
  69. :label="'BU'">
  70. </el-table-column>
  71. <el-table-column
  72. prop="departmentName"
  73. header-align="center"
  74. align="center"
  75. :label="'部门'">
  76. </el-table-column>
  77. <el-table-column
  78. prop="postName"
  79. header-align="center"
  80. align="center"
  81. :label="'岗位'">
  82. </el-table-column>
  83. <el-table-column
  84. prop="domainControlAccount"
  85. header-align="center"
  86. align="center"
  87. :label="'域控账号'">
  88. </el-table-column>
  89. <el-table-column
  90. prop="email"
  91. header-align="center"
  92. align="center"
  93. :label="buttons.email||'邮箱'">
  94. </el-table-column>
  95. <el-table-column
  96. prop="mobile"
  97. header-align="center"
  98. align="center"
  99. :label="buttons.mobile||'手机号'">
  100. </el-table-column>
  101. <el-table-column
  102. prop="status"
  103. header-align="center"
  104. align="center"
  105. :label="buttons.status||'状态'">
  106. <template slot-scope="scope">
  107. <el-link v-if="scope.row.status === 0" type="success">{{ buttons.disable || '禁用' }}</el-link>
  108. <el-link v-else type="danger">{{ buttons.normal || '正常' }}</el-link>
  109. </template>
  110. </el-table-column>
  111. <el-table-column
  112. prop="createTime"
  113. header-align="center"
  114. align="center"
  115. width="180"
  116. :label="buttons.createTime||'创建时间'">
  117. </el-table-column>
  118. <el-table-column
  119. fixed="right"
  120. header-align="center"
  121. align="center"
  122. width="150"
  123. :label="buttons.cz||'操作'">
  124. <template slot-scope="scope">
  125. <!-- <a type="text" size="small" @click="generateData(scope.row)">{{ buttons.auth || '审核' }}</a>-->
  126. <a type="text" size="small" @click="permissionList(scope.row)">权限清单</a>
  127. <a v-if="isAuth('sys:user:update')" type="text" size="small"
  128. @click="addOrUpdateHandle(scope.row.userId)">{{ buttons.edit || '修改' }}</a>
  129. <a v-if="isAuth('sys:user:delete')" type="text" size="small"
  130. @click="deleteHandle(scope.row)">{{ buttons.delete || '删除' }}</a>
  131. </template>
  132. </el-table-column>
  133. </el-table>
  134. <el-pagination
  135. @size-change="sizeChangeHandle"
  136. @current-change="currentChangeHandle"
  137. :current-page="pageIndex"
  138. :page-sizes="[20, 50, 100, 200, 500]"
  139. :page-size="pageSize"
  140. :total="totalPage"
  141. layout="total, sizes, prev, pager, next, jumper">
  142. </el-pagination>
  143. <!-- 权限清单 -->
  144. <el-dialog title="权限清单" @close="closeDataDialog" @open="getUserAccessSiteInfoList" :close-on-click-modal="false" v-drag v-if="permissionFlag" width="900px">
  145. <el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
  146. 用户 <el-input v-model="selectUser.username" style="width: 130px" readonly></el-input>
  147. 名称 <el-input v-model="selectUser.userDisplay" style="width: 130px" readonly></el-input>
  148. <el-tabs v-model="activeTable" @tab-click="tabClick" >
  149. <!-- 工厂权限页签 -->
  150. <el-tab-pane label="工厂权限" name="factory_information" style="height: 350px;">
  151. <el-table
  152. :data="userSiteList"
  153. border :height="350">
  154. <el-table-column
  155. prop="siteID"
  156. header-align="center"
  157. align="center"
  158. min-width="50"
  159. label="工厂编码">
  160. </el-table-column>
  161. <el-table-column
  162. prop="siteName"
  163. header-align="center"
  164. align="center"
  165. min-width="100"
  166. label="工厂名称">
  167. </el-table-column>
  168. <el-table-column
  169. prop="address"
  170. header-align="center"
  171. align="center"
  172. min-width="100"
  173. label="地址">
  174. </el-table-column>
  175. </el-table>
  176. </el-tab-pane>
  177. <!-- BU权限页签 -->
  178. <el-tab-pane label="BU权限" name="BU_information" style="height: 350px;">
  179. <el-table
  180. :data="userBUList"
  181. border :height="350">
  182. <el-table-column
  183. prop="site"
  184. header-align="center"
  185. align="center"
  186. min-width="50"
  187. label="工厂编码">
  188. </el-table-column>
  189. <el-table-column
  190. prop="buNo"
  191. header-align="center"
  192. align="center"
  193. min-width="100"
  194. label="部门编码">
  195. </el-table-column>
  196. <el-table-column
  197. prop="buDesc"
  198. header-align="center"
  199. align="center"
  200. min-width="100"
  201. label="部门名称">
  202. </el-table-column>
  203. </el-table>
  204. </el-tab-pane>
  205. <!-- 项目权限页签 -->
  206. <el-tab-pane label="项目权限" name="project_information">
  207. <el-table
  208. :data="userProjectList"
  209. border :height="350">
  210. <el-table-column
  211. prop="site"
  212. header-align="center"
  213. align="center"
  214. min-width="50"
  215. label="工厂编码">
  216. </el-table-column>
  217. <el-table-column
  218. prop="projectId"
  219. header-align="center"
  220. align="center"
  221. min-width="50"
  222. label="项目号">
  223. </el-table-column>
  224. <el-table-column
  225. prop="status"
  226. header-align="center"
  227. align="center"
  228. min-width="100"
  229. label="项目状态">
  230. </el-table-column>
  231. <el-table-column
  232. prop="needDate"
  233. header-align="center"
  234. align="center"
  235. min-width="100"
  236. label="要求完成时间">
  237. </el-table-column>
  238. </el-table>
  239. </el-tab-pane>
  240. <!-- 字段权限页签 -->
  241. <el-tab-pane label="字段权限" name="field_function_information" style="height: 350px;">
  242. <el-table
  243. :data="userFieldList"
  244. border :height="350">
  245. <el-table-column
  246. prop="functionName"
  247. header-align="center"
  248. align="center"
  249. min-width="50"
  250. label="功能名称">
  251. </el-table-column>
  252. <el-table-column
  253. prop="functionGroup"
  254. header-align="center"
  255. align="center"
  256. min-width="100"
  257. label="功能分组">
  258. </el-table-column>
  259. <el-table-column
  260. prop="fieldDesc"
  261. header-align="center"
  262. align="center"
  263. min-width="50"
  264. label="字段名称">
  265. </el-table-column>
  266. </el-table>
  267. </el-tab-pane>
  268. <!-- 特殊权限页签 -->
  269. <el-tab-pane label="特殊权限" name="security_information" style="height: 350px;">
  270. <el-table
  271. :data="securityList"
  272. border
  273. v-loading="dataListLoading" :height="350">
  274. <el-table-column
  275. v-for="(item,index) in columnList" :key="index"
  276. :sortable="item.columnSortable"
  277. :prop="item.columnProp"
  278. :header-align="item.headerAlign"
  279. :show-overflow-tooltip="item.showOverflowTooltip"
  280. :align="item.align"
  281. :fixed="item.fixed==''?false:item.fixed"
  282. :min-width="item.columnWidth"
  283. :label="item.columnLabel">
  284. <template slot-scope="scope">
  285. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  286. <span v-if="item.columnHidden">
  287. <el-checkbox v-model="scope.row[item.columnProp] "></el-checkbox>
  288. </span>
  289. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  290. style="width: 100px; height: 80px"/></span>
  291. </template>
  292. </el-table-column>
  293. </el-table>
  294. </el-tab-pane>
  295. <!-- 角色权限页签 -->
  296. <el-tab-pane label="角色权限" name="role_information" style="height: 350px;">
  297. <el-table
  298. :data="userRoleList"
  299. border :height="350">
  300. <el-table-column
  301. prop="site"
  302. header-align="center"
  303. align="center"
  304. min-width="50"
  305. label="工厂编码">
  306. </el-table-column>
  307. <el-table-column
  308. prop="roleNo"
  309. header-align="center"
  310. align="center"
  311. min-width="100"
  312. label="角色编码">
  313. </el-table-column>
  314. <el-table-column
  315. prop="roleDesc"
  316. header-align="center"
  317. align="center"
  318. min-width="100"
  319. label="角色名称">
  320. </el-table-column>
  321. </el-table>
  322. </el-tab-pane>
  323. </el-tabs>
  324. </el-form>
  325. <el-footer style="height:40px;margin-top: 20px;text-align:center">
  326. <el-button @click="permissionFlag = false" type="primary">关闭</el-button>
  327. </el-footer>
  328. </el-dialog>
  329. <!-- 弹窗, 新增 / 修改 -->
  330. <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @closeModel="closeUpdateModel()" @refreshDataList="getDataList"></add-or-update>
  331. <!-- 审核权限 -->
  332. <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" v-drag :title="inputSearch1"
  333. :visible.sync="setUp.reviewFlag" width="518px">
  334. <template>
  335. <el-transfer v-model="checked" :data="transferData"
  336. :titles="[buttons.allAuth || '所有权限', buttons.currentAuth || '当前权限']"></el-transfer>
  337. </template>
  338. <span slot="footer" class="dialog-footer">
  339. <div style="margin-top: 5px">
  340. <el-button type="primary" :disabled="setUp.saveButton" @click="saveUserRoleFlag()">确定</el-button>
  341. <el-button type="primary" @click="setUp.reviewFlag = false">取消</el-button>
  342. </div>
  343. </span>
  344. </el-dialog>
  345. <!-- 特殊权限 -->
  346. <el-dialog
  347. v-drag
  348. :title="'特殊性权限'"
  349. :visible.sync="specialVisible"
  350. width="820px"
  351. :append-to-body="true">
  352. <el-table
  353. :data="securityList"
  354. border
  355. :height="securityHeight"
  356. v-loading="dataListLoading"
  357. style="width: 100%;">
  358. <el-table-column
  359. v-for="(item,index) in columnList" :key="index"
  360. :sortable="item.columnSortable"
  361. :prop="item.columnProp"
  362. :header-align="item.headerAlign"
  363. :show-overflow-tooltip="item.showOverflowTooltip"
  364. :align="item.align"
  365. :fixed="item.fixed==''?false:item.fixed"
  366. :min-width="item.columnWidth"
  367. :label="item.columnLabel">
  368. <template slot-scope="scope">
  369. <span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
  370. <span v-if="item.columnHidden">
  371. <el-checkbox v-model="scope.row[item.columnProp] "></el-checkbox>
  372. </span>
  373. <span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
  374. style="width: 100px; height: 80px"/></span>
  375. </template>
  376. </el-table-column>
  377. </el-table>
  378. <span slot="footer" class="dialog-footer">
  379. <el-button type="primary" @click="saveUserSecurity()">确定</el-button>
  380. <el-button @click="specialVisible = false" type="primary">取消</el-button>
  381. </span>
  382. </el-dialog>
  383. <!-- 工厂授权 -->
  384. <el-dialog
  385. style="font-size: 12px"
  386. v-drag
  387. :title="'工厂授权'"
  388. :visible.sync="siteVisible"
  389. width="518px"
  390. :append-to-body="true"
  391. @close="closeDataDialog">
  392. <el-transfer class="rq" filterable v-model="selectSitList" :data="siteList" :titles="['未授权工厂', '已授权工厂']"></el-transfer>
  393. <span slot="footer" class="dialog-footer">
  394. <div style="margin-top: 5px">
  395. <el-button type="primary" @click="saveUserAssessSite()">确定</el-button>
  396. <el-button @click="siteVisible = false" type="primary">取消</el-button>
  397. </div>
  398. </span>
  399. </el-dialog>
  400. <!-- BU授权 -->
  401. <el-dialog
  402. style="font-size: 12px"
  403. v-drag
  404. :title="'BU授权'"
  405. :visible.sync="buVisible"
  406. width="518px"
  407. :append-to-body="true">
  408. <el-transfer class="rq" filterable v-model="selectBUList" :props="{
  409. key: 'buNo',
  410. label: 'buDesc'
  411. }" :data="buList" :titles="['未授权BU', '已授权BU']"></el-transfer>
  412. <span slot="footer" class="dialog-footer">
  413. <div style="margin-top: 5px">
  414. <el-button type="primary" @click="saveBuAssessSite()">确定</el-button>
  415. <el-button @click="buVisible = false" type="primary">取消</el-button>
  416. </div>
  417. </span>
  418. </el-dialog>
  419. <!-- 功能清单 -->
  420. <el-dialog
  421. width="600px"
  422. title="功能清单"
  423. :close-on-click-modal="false"
  424. :visible.sync="functionFlag">
  425. <el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
  426. 用户 <el-input v-model="selectUser.username" style="width: 130px" readonly></el-input>
  427. 名称 <el-input v-model="selectUser.userDisplay" style="width: 130px" readonly></el-input>
  428. </el-form>
  429. <el-table
  430. height="300"
  431. :data="functionList"
  432. border
  433. style="width: 100%">
  434. <el-table-column
  435. prop="functionName"
  436. header-align="center"
  437. align="left"
  438. min-width="80"
  439. label="功能名称">
  440. </el-table-column>
  441. <el-table-column
  442. prop="functionGroup"
  443. header-align="center"
  444. align="left"
  445. min-width="100"
  446. label="功能分组">
  447. </el-table-column>
  448. <el-table-column
  449. prop=""
  450. header-align="center"
  451. align="center"
  452. width="60"
  453. label="操作">
  454. <template slot-scope="scope" class="foo_container">
  455. <a type="text" size="small" @click="accessModel(scope.row)">授权</a>
  456. </template>
  457. </el-table-column>
  458. </el-table>
  459. <span slot="footer" class="dialog-footer">
  460. <el-button type="primary" @click="functionFlag = false">关闭</el-button>
  461. </span>
  462. </el-dialog>
  463. <!-- 字段授权 -->
  464. <el-dialog
  465. style="font-size: 12px"
  466. v-drag
  467. :title="'字段授权'"
  468. :visible.sync="fieldFlag"
  469. width="518px"
  470. :append-to-body="true">
  471. <el-transfer v-model="selectFieldList" class="rq" filterable :props="{
  472. key: 'fieldId',
  473. label: 'fieldDesc'
  474. }" :data="fieldList" :titles="['未选择', '已选择']"></el-transfer>
  475. <span slot="footer" class="dialog-footer">
  476. <div style="margin-top: 5px">
  477. <el-button type="primary" @click="saveAccessFieldListByUser()">确定</el-button>
  478. <el-button @click="fieldFlag = false" type="primary">取消</el-button>
  479. </div>
  480. </span>
  481. </el-dialog>
  482. <!-- 岗位授权 -->
  483. <el-dialog
  484. style="font-size: 12px"
  485. v-drag
  486. :title="'岗位授权'"
  487. :visible.sync="roleVisible"
  488. width="518px"
  489. :append-to-body="true">
  490. <el-transfer class="rq" filterable v-model="selectRoleList" :props="{
  491. key: 'roleNo',
  492. label: 'roleDesc'
  493. }" :data="roleList" :titles="['未授权岗位', '已授权岗位']"></el-transfer>
  494. <span slot="footer" class="dialog-footer">
  495. <div style="margin-top: 5px">
  496. <el-button type="primary" @click="saveRoleAssessSite()">确定</el-button>
  497. <el-button @click="roleVisible = false" type="primary">取消</el-button>
  498. </div>
  499. </span>
  500. </el-dialog>
  501. <el-dialog
  502. width="800px"
  503. title="项目权限"
  504. :close-on-click-modal="false"
  505. :visible.sync="projectRoleFlag">
  506. <el-form :inline="true" label-position="top" label-width="100px" >
  507. <el-form-item :label="'项目号'">
  508. <el-input v-model="projectRoleSearchData.projectId" style="width: 120px" ></el-input>
  509. </el-form-item>
  510. <el-form-item :label="'项目名称'">
  511. <el-input v-model="projectRoleSearchData.projectName" style="width: 120px" ></el-input>
  512. </el-form-item>
  513. <el-form-item :label="'查询'" >
  514. <el-select v-model="projectRoleSearchData.searchFlag" clearable style="width: 100px">
  515. <el-option label="全部" value=""></el-option>
  516. <el-option label="允许" value="Y"></el-option>
  517. <el-option label="不允许" value="N"></el-option>
  518. </el-select>
  519. </el-form-item>
  520. <el-form-item :label="'修改'" >
  521. <el-select v-model="projectRoleSearchData.updateFlag" clearable style="width: 100px">
  522. <el-option label="全部" value=""></el-option>
  523. <el-option label="允许" value="Y"></el-option>
  524. <el-option label="不允许" value="N"></el-option>
  525. </el-select>
  526. </el-form-item>
  527. <el-form-item :label="'下载'" >
  528. <el-select v-model="projectRoleSearchData.downFlag" clearable style="width: 100px">
  529. <el-option label="全部" value=""></el-option>
  530. <el-option label="允许" value="Y"></el-option>
  531. <el-option label="不允许" value="N"></el-option>
  532. </el-select>
  533. </el-form-item>
  534. <el-form-item :label="'删除'" >
  535. <el-select v-model="projectRoleSearchData.deleteFlag" clearable style="width: 100px">
  536. <el-option label="全部" value=""></el-option>
  537. <el-option label="允许" value="Y"></el-option>
  538. <el-option label="不允许" value="N"></el-option>
  539. </el-select>
  540. </el-form-item>
  541. <el-form-item :label="' '" >
  542. <el-button type="primary" @click="searchProjectModel()">{{'查询'}}</el-button>
  543. </el-form-item>
  544. </el-form>
  545. <el-table
  546. :data="projectRoleList"
  547. border
  548. :height="400"
  549. v-loading="false"
  550. style="width: 100%;">
  551. <el-table-column
  552. prop="projectId"
  553. header-align="center"
  554. align="center"
  555. min-width="50"
  556. label="项目号">
  557. </el-table-column>
  558. <el-table-column
  559. prop="projectName"
  560. header-align="center"
  561. align="center"
  562. min-width="50"
  563. label="项目名称">
  564. </el-table-column>
  565. <el-table-column
  566. prop="projectDesc"
  567. header-align="center"
  568. align="center"
  569. min-width="100"
  570. label="项目描述">
  571. </el-table-column>
  572. <el-table-column
  573. prop=""
  574. header-align="center"
  575. align="center"
  576. min-width="25"
  577. label="">
  578. <template slot="header" slot-scope="scope">
  579. <el-checkbox :indeterminate="saveCheckAllIndeterminate" v-model="saveCheckAll" true-label="Y" false-label="N" @change="changeSaveCheckAll"></el-checkbox>
  580. </template>
  581. <template slot-scope="scope">
  582. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  583. <el-checkbox v-model="scope.row.checkAll" @change="changeAll(scope.row)"></el-checkbox>
  584. </template>
  585. </el-table-column>
  586. <el-table-column
  587. prop=""
  588. header-align="center"
  589. align="center"
  590. min-width="25"
  591. label="查询">
  592. <template slot-scope="scope">
  593. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  594. <el-checkbox v-model="scope.row.searchCheck" @change="changeCheck(scope.row,1)"></el-checkbox>
  595. </template>
  596. </el-table-column>
  597. <el-table-column
  598. prop=""
  599. header-align="center"
  600. align="center"
  601. min-width="25"
  602. label="修改">
  603. <template slot-scope="scope">
  604. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  605. <el-checkbox v-model="scope.row.updateCheck" @change="changeCheck(scope.row,2)"></el-checkbox>
  606. </template>
  607. </el-table-column>
  608. <el-table-column
  609. prop=""
  610. header-align="center"
  611. align="center"
  612. min-width="25"
  613. label="下载">
  614. <template slot-scope="scope">
  615. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  616. <el-checkbox v-model="scope.row.downCheck" @change="changeCheck(scope.row,3)"></el-checkbox>
  617. </template>
  618. </el-table-column>
  619. <el-table-column
  620. prop=""
  621. header-align="center"
  622. align="center"
  623. min-width="25"
  624. label="删除">
  625. <template slot-scope="scope">
  626. <!-- 如果数据为Y显示勾选框否则不勾选 -->
  627. <el-checkbox v-model="scope.row.deleteCheck" @change="changeCheck(scope.row,4)"></el-checkbox>
  628. </template>
  629. </el-table-column>
  630. </el-table>
  631. <span slot="footer" class="dialog-footer">
  632. <div style="margin-top: 5px">
  633. <el-button type="primary" @click="saveAccessProject()">确定</el-button>
  634. <el-button @click="projectRoleFlag = false" type="primary">取消</el-button>
  635. </div>
  636. </span>
  637. </el-dialog>
  638. </div>
  639. </template>
  640. <script>
  641. import {getUserAccessSiteList, saveUserAccessSiteList} from '@/api/factory/accessSite.js'
  642. import {getSiteList} from '@/api/factory/site.js'
  643. import {searchAccessBuList,searchAccessRoleList,saveAccessBU,saveAccessRole,searchAccessProjectForUser,saveAccessProject, getUserAccessSiteInfoList, getUserAccessBUInfoList, getUserAccessRoleInfoList, getUserAccessProjectInfoList} from '@/api/base/site.js'
  644. import {
  645. searchFieldFunctionList,searchAccessFieldListByUser,saveAccessFieldListByUser,getUserAccessFieldFunctionInfoList
  646. } from "@/api/base/field.js"
  647. import AddOrUpdate from './user-add-or-update'
  648. import {getUserBusinessRoleList, saveUserBusinessRole} from '@/api/auditManagement/auditType.js'
  649. import {
  650. getUserSpecialSecurity,
  651. saveUserSpecialSecurity,
  652. updateUserSpecialSecurity,
  653. } from '@/api/factory/userSpecialSecurity.js'
  654. import {debounce, throttle} from "../../../utils/common";
  655. import {
  656. searchFunctionButtonList,
  657. } from "@/api/sysLanguage.js"
  658. import {
  659. getBUList,
  660. getDepartmentList,
  661. getPostList,
  662. saveAccessSiteForSite,
  663. searchAccessSiteListBySite
  664. } from '../../../api/base/site'
  665. export default {
  666. data() {
  667. return {
  668. searchData:{
  669. userName:'',
  670. domainControlAccount:'',
  671. userDisplay:'',
  672. },
  673. saveCheckAll:'N',
  674. accessSiteVisible: false,
  675. projectRoleFlag: false,
  676. projectRoleList: [],
  677. accessSiteList: [],
  678. showButton: true,
  679. height: 200,
  680. securityHeight: 300,
  681. specialVisible: false,
  682. siteVisible: false,
  683. buVisible: false,
  684. roleVisible: false,
  685. currentData: {},
  686. userId: this.$store.state.user.name,
  687. transferData: [],
  688. checked: [],
  689. selectBUList: [],
  690. buList: [],
  691. selectRoleList: [],
  692. roleList:[],
  693. userSiteList: [],
  694. userBUList:[],
  695. userRoleList:[],
  696. userProjectList:[],
  697. userFieldList:[],
  698. userData: [],
  699. inputSearch1: '审核权限',
  700. //设置
  701. setUp: {
  702. reviewFlag: false,
  703. saveButton: false,
  704. },
  705. dataForm: {
  706. id: 0,
  707. userName: '',
  708. password: '',
  709. comfirmPassword: '',
  710. languageDefault: '',
  711. salt: '',
  712. email: '',
  713. mobile: '',
  714. buNo: '',
  715. buDesc: '',
  716. roleNo: '',
  717. roleDesc: '',
  718. departmentNo:'',
  719. departmentName:'',
  720. postNo:'',
  721. postName:'',
  722. roleIdList: [],
  723. status: 1,
  724. site: '',
  725. siteID: '',
  726. siteName:'',
  727. userDisplay: ''
  728. },
  729. projectRoleSearchData:{
  730. projectId:'',
  731. projectName:'',
  732. searchFlag:'',
  733. updateFlag:'',
  734. downFlag:'',
  735. deleteFlag:'',
  736. site:this.$store.state.user.site,
  737. username:'',
  738. },
  739. // 初始页签
  740. activeTable: 'factory_information',
  741. columnList: [
  742. {
  743. userId: this.$store.state.user.name,
  744. serialNumber: 'security' + this.$route.meta.menuId + 'securitydesc',
  745. tableId: this.$route.meta.menuId + 'security',
  746. tableName: "securityTable",
  747. columnProp: "securitydesc",
  748. headerAlign: "center",
  749. align: "left",
  750. columnLabel: "参数描述",
  751. columnHidden: false,
  752. columnImage: false,
  753. columnWidth: 70,
  754. columnSortable: false,
  755. sortLv: 0,
  756. status: true,
  757. fixed: '',
  758. },
  759. {
  760. userId: this.$store.state.user.name,
  761. serialNumber: 'security' + this.$route.meta.menuId + 'securitydesc',
  762. tableId: this.$route.meta.menuId + 'security',
  763. tableName: "securityTable",
  764. columnProp: "module",
  765. headerAlign: "center",
  766. align: "left",
  767. columnLabel: "模块",
  768. columnHidden: false,
  769. columnImage: false,
  770. columnSortable: false,
  771. columnWidth: 20,
  772. sortLv: 0,
  773. status: true,
  774. fixed: '',
  775. },
  776. {
  777. userId: this.$store.state.user.name,
  778. serialNumber: 'security' + this.$route.meta.menuId + 'securitydesc',
  779. tableId: this.$route.meta.menuId + 'security',
  780. tableName: "securityTable",
  781. columnProp: "itemvalue",
  782. headerAlign: "center",
  783. align: "center",
  784. columnLabel: "参数值",
  785. columnHidden: true,
  786. columnImage: false,
  787. columnSortable: false,
  788. columnWidth: 10,
  789. sortLv: 0,
  790. status: true,
  791. fixed: '',
  792. },
  793. ],
  794. buttons: {
  795. cz: '操作',
  796. search: '查询',
  797. add: '添加',
  798. permissionList: '权限清单',
  799. edit: '编辑',
  800. delete: '删除',
  801. specialCompetencies: '特殊权限',
  802. factoryAuthorization: '工厂授权',
  803. buAuthorization: 'BU授权',
  804. roleAuthorization: '岗位授权',
  805. projectAuthorization: '项目授权',
  806. createTime: '创建时间',
  807. username: '用户账号',
  808. userDisplay: '用户名',
  809. email: '邮箱',
  810. mobile: '手机号',
  811. status: '状态',
  812. disable: '禁用',
  813. normal: '正常',
  814. auth: '审核',
  815. allAuth: '所有权限',
  816. currentAuth: '当前权限',
  817. fieldAuthorization:'字段授权',
  818. role:'授权',
  819. },
  820. dataList: [],
  821. securityList: [],
  822. selectSpecialList: [],
  823. siteList: [],
  824. selectSitList: [],
  825. selectUser: {},
  826. pageIndex: 1,
  827. pageSize: 20,
  828. totalPage: 0,
  829. dataListLoading: false,
  830. dataListSelections: [],
  831. addOrUpdateVisible: false,
  832. functionFlag:false,
  833. functionList:[],
  834. rowFunctionId:'',
  835. selectFieldList:[],
  836. fieldList:[],
  837. fieldFlag:false,
  838. permissionFlag:false,
  839. }
  840. },
  841. components: {
  842. AddOrUpdate
  843. },
  844. computed:{
  845. saveCheckAllIndeterminate(){
  846. if (this.projectRoleList.every(item => item.checkAll === true)){
  847. this.saveCheckAll = 'Y'
  848. return false
  849. }else if (this.projectRoleList.every(item => item.checkAll === false)){
  850. this.saveCheckAll = 'N'
  851. return false
  852. }else {
  853. this.saveCheckAll = 'N'
  854. return true
  855. }
  856. },
  857. },
  858. activated() {
  859. this.getDataList()
  860. },
  861. mounted() {
  862. this.$nextTick(() => {
  863. this.securityHeight = window.innerHeight - 300;
  864. this.height = window.innerHeight - 200;
  865. })
  866. },
  867. methods: {
  868. changeSaveCheckAll(val){
  869. for (let i = 0; i < this.projectRoleList.length; i++) {
  870. let row = this.projectRoleList[i]
  871. row.checkAll = (val === 'Y')
  872. this.changeAll(row)
  873. }
  874. },
  875. // 获取button的词典
  876. getFunctionButtonList() {
  877. let queryButton = {
  878. functionId: this.$route.meta.menuId,
  879. tableId: '*',
  880. languageCode: this.$i18n.locale,
  881. objectType: 'button'
  882. }
  883. searchFunctionButtonList(queryButton).then(({data}) => {
  884. if (data.code == 0 && data.data) {
  885. this.buttons = data.data
  886. }
  887. })
  888. },
  889. /**
  890. * 列表表格选择替换
  891. * @param tab
  892. * @param event
  893. */
  894. tabClick (tab, event) {
  895. // 刷新列表数据
  896. this.refreshCurrentTabTable()
  897. },
  898. refreshCurrentTabTable() {
  899. if (this.activeTable === 'factory_information') {
  900. this.getUserAccessSiteInfoList()
  901. }
  902. if (this.activeTable === 'BU_information') {
  903. this.getUserAccessBUInfoList()
  904. }
  905. if (this.activeTable === 'project_information'){
  906. this.getUserAccessProjectInfoList()
  907. }
  908. if (this.activeTable === 'field_function_information'){
  909. this.getUserAccessFieldFunctionInfoList()
  910. }
  911. if (this.activeTable === 'security_information'){
  912. this.getUserSpecialSecurity()
  913. }
  914. if (this.activeTable === 'role_information'){
  915. this.getUserAccessRoleInfoList()
  916. }
  917. },
  918. // 特殊权限
  919. specialAuthorize() {
  920. this.specialVisible = true
  921. this.searchUserSpecialSecurity()
  922. },
  923. // 获取特殊权限
  924. searchUserSpecialSecurity() {
  925. saveUserSpecialSecurity({userid: this.selectUser.username}).then(({data}) => {
  926. if (data.code === 0) {
  927. getUserSpecialSecurity(this.selectUser.username).then(({data}) => {
  928. if (data.code === 0) {
  929. this.securityList = data.dataList.map(item => {
  930. item.itemvalue = item.itemvalue == 'Y' ? true : false;
  931. return item;
  932. })
  933. }
  934. })
  935. }
  936. })
  937. },
  938. // 保存用户权限
  939. saveUserSecurity() {
  940. let securityList = JSON.parse(JSON.stringify(this.securityList)).map(item => {
  941. item.itemvalue = item.itemvalue === true ? 'Y' : 'N';
  942. return item;
  943. })
  944. updateUserSpecialSecurity(securityList).then(({data}) => {
  945. if (data.code === 0) {
  946. this.$message.success(data.msg)
  947. this.specialVisible = false
  948. } else {
  949. this.$message.success(data.msg)
  950. }
  951. })
  952. },
  953. // 授权工厂
  954. siteAuthorize() {
  955. this.siteVisible = true
  956. this.searchSiteList()
  957. },
  958. buAuthorize() {
  959. this.buVisible = true
  960. this.searchBuList()
  961. },
  962. roleAuthorize() {
  963. this.roleVisible = true
  964. this.searchRoleList()
  965. },
  966. //授权项目start
  967. projectModel(){
  968. this.projectRoleSearchData={
  969. projectId:'',
  970. projectName:'',
  971. searchFlag:'',
  972. updateFlag:'',
  973. downFlag:'',
  974. deleteFlag:'',
  975. site:this.$store.state.user.site,
  976. username:this.selectUser.username,
  977. }
  978. this.searchProjectModel();
  979. this.projectRoleFlag=true
  980. },
  981. searchProjectModel(){
  982. searchAccessProjectForUser(this.projectRoleSearchData).then(({data}) => {
  983. this.projectRoleList=data.rows
  984. })
  985. },
  986. changeAll(row){
  987. if(row.checkAll){
  988. row.searchCheck=true;
  989. row.updateCheck=true;
  990. row.downCheck=true;
  991. row.deleteCheck=true;
  992. row.searchFlag='Y'
  993. row.updateFlag='Y'
  994. row.downFlag='Y'
  995. row.deleteFlag='Y'
  996. }else {
  997. row.searchCheck=false;
  998. row.updateCheck=false;
  999. row.downCheck=false;
  1000. row.deleteCheck=false;
  1001. row.searchFlag='N'
  1002. row.updateFlag='N'
  1003. row.downFlag='N'
  1004. row.deleteFlag='N'
  1005. }
  1006. },
  1007. changeCheck(row,type){
  1008. if(type==1){
  1009. if(row.searchCheck){
  1010. row.searchFlag='Y'
  1011. }else {
  1012. row.searchFlag='N'
  1013. }
  1014. }
  1015. if(type==2){
  1016. if(row.updateCheck){
  1017. row.updateFlag='Y'
  1018. }else {
  1019. row.updateFlag='N'
  1020. }
  1021. }
  1022. if(type==3){
  1023. if(row.downCheck){
  1024. row.downFlag='Y'
  1025. }else {
  1026. row.downFlag='N'
  1027. }
  1028. }
  1029. if(type==4){
  1030. if(row.deleteCheck){
  1031. row.deleteFlag='Y'
  1032. }else {
  1033. row.deleteFlag='N'
  1034. }
  1035. }
  1036. if(row.searchCheck&&row.updateCheck&&row.downCheck&&row.deleteCheck){
  1037. row.checkAll=true
  1038. }else{
  1039. row.checkAll=false
  1040. }
  1041. this.$forceUpdate();
  1042. },
  1043. saveAccessProject(){
  1044. let inData={
  1045. site:this.$store.state.user.site,
  1046. username:this.selectUser.username,
  1047. accessProjectList:this.projectRoleList
  1048. }
  1049. saveAccessProject(inData).then(({data}) => {
  1050. if (data && data.code === 0) {
  1051. this.$message.success( '操作成功')
  1052. this.projectRoleFlag = false
  1053. } else {
  1054. this.$message.error(data.msg)
  1055. }
  1056. })
  1057. },
  1058. //授权项目end
  1059. // 保存选中的授权工厂
  1060. saveUserAssessSite() {
  1061. let flag=true
  1062. if( this.selectSitList.length==0){
  1063. this.$message.warning("至少授权一个工厂")
  1064. return false;
  1065. }
  1066. for (let i = 0; i < this.selectSitList.length ; i++) {
  1067. if(this.selectSitList[i]===this.selectUser.site){
  1068. flag=false
  1069. }
  1070. }
  1071. if(flag){
  1072. this.$message.warning("默认工厂不能取消授权")
  1073. return false;
  1074. }
  1075. let accessSiteList = this.selectSitList.map(item => {
  1076. let itemSite = {
  1077. userid: this.selectUser.username,
  1078. site: item
  1079. }
  1080. return itemSite;
  1081. })
  1082. let accessSite = {
  1083. userid: this.selectUser.username,
  1084. accessSiteList: accessSiteList
  1085. }
  1086. saveUserAccessSiteList(accessSite).then(({data}) => {
  1087. if (data.code === 0) {
  1088. this.$message.success(data.msg)
  1089. this.siteList = []
  1090. this.selectSitList = []
  1091. this.siteVisible = false
  1092. } else {
  1093. this.$message.warning(data.msg)
  1094. }
  1095. })
  1096. },
  1097. saveBuAssessSite(){
  1098. if(this.selectBUList.length==0){
  1099. this.$message.warning("请选择BU")
  1100. return false;
  1101. }
  1102. let inList=[];
  1103. for (let i = 0; i < this.selectBUList.length; i++) {
  1104. let inData={
  1105. site:this.$store.state.user.site,
  1106. username:this.selectUser.username,
  1107. buNo:this.selectBUList[i]
  1108. }
  1109. inList.push(inData)
  1110. }
  1111. saveAccessBU(inList).then(({data}) => {
  1112. if (data && data.code === 0) {
  1113. this.$message.success( '操作成功')
  1114. this.buVisible = false
  1115. } else {
  1116. this.$message.error(data.msg)
  1117. }
  1118. })
  1119. },
  1120. saveRoleAssessSite(){
  1121. if(this.selectRoleList.length==0){
  1122. this.$message.warning("请选择角色")
  1123. return false;
  1124. }
  1125. let inList=[];
  1126. for (let i = 0; i < this.selectRoleList.length; i++) {
  1127. let inData={
  1128. site:this.$store.state.user.site,
  1129. username:this.selectUser.username,
  1130. roleNo:this.selectRoleList[i]
  1131. }
  1132. inList.push(inData)
  1133. }
  1134. saveAccessRole(inList).then(({data}) => {
  1135. if (data && data.code === 0) {
  1136. this.$message.success( '操作成功')
  1137. this.roleVisible = false
  1138. } else {
  1139. this.$message.error(data.msg)
  1140. }
  1141. })
  1142. },
  1143. // 获取用户已授权的工厂列表
  1144. searchUserAccessSiteList() {
  1145. getUserAccessSiteList({userid: this.selectUser.username}).then(({data}) => {
  1146. this.selectSitList = data.dataList
  1147. })
  1148. },
  1149. // 获取所有可用工厂
  1150. searchSiteList() {
  1151. this.siteList=[]
  1152. getSiteList({active: 'Y'}).then(({data}) => {
  1153. if (data.code == 0) {
  1154. this.siteList = data.dataList
  1155. this.searchUserAccessSiteList()
  1156. }
  1157. })
  1158. },
  1159. searchBuList(){
  1160. searchAccessBuList({site:this.$store.state.user.site,
  1161. username: this.selectUser.username,
  1162. active:'Y'}).then(({data}) => {
  1163. this.selectBUList = data.selectBUList
  1164. this.buList=data.buList
  1165. })
  1166. },
  1167. searchRoleList(){
  1168. searchAccessRoleList({site:this.$store.state.user.site,
  1169. username: this.selectUser.username,
  1170. active:'Y'}).then(({data}) => {
  1171. this.selectRoleList = data.selectRoleList
  1172. this.roleList=data.roleList
  1173. })
  1174. },
  1175. // 选中行
  1176. handleCurrentChange(val) {
  1177. this.selectUser =JSON.parse(JSON.stringify(val))
  1178. this.showButton = false
  1179. },
  1180. saveUserRoleFlag() {
  1181. let saveList = []
  1182. let currentList = this.checked
  1183. // 当前未选择记录
  1184. if (currentList.length == 0) {
  1185. this.$confirm("当前未选择记录,是否继续?", '删除提示', {
  1186. confirmButtonText: '确定',
  1187. cancelButtonText: '取消',
  1188. }).then(() => {
  1189. let data = {
  1190. userId: this.currentData.userId,
  1191. }
  1192. saveList.push(data);
  1193. this.saveUserBusinessRole(saveList)
  1194. }).catch(() => {
  1195. return
  1196. })
  1197. } else {
  1198. for (let i = 0; i < currentList.length; i++) {
  1199. let data = {
  1200. userId: this.currentData.userId,
  1201. roleItemNo: currentList[i],
  1202. selectFlag: 'Y',
  1203. }
  1204. saveList.push(data);
  1205. }
  1206. this.saveUserBusinessRole(saveList)
  1207. }
  1208. },
  1209. saveUserBusinessRole(saveList) {
  1210. saveUserBusinessRole(saveList).then(({data}) => {
  1211. this.$alert(data.msg, '操作提示', {
  1212. confirmButtonText: '确定',
  1213. callback: action => {
  1214. if (data.code == 0) {
  1215. this.setUp.reviewFlag = false
  1216. }
  1217. this.setUp.saveButton = false
  1218. }
  1219. });
  1220. })
  1221. },
  1222. generateData(row) {
  1223. this.currentData = row
  1224. let queryData = {
  1225. active: 'Y',
  1226. userId: this.currentData.userId,
  1227. }
  1228. getUserBusinessRoleList(queryData).then(({data}) => {
  1229. let rows1Data = data.map.rows1
  1230. let rows2Data = data.map.rows2
  1231. let forData = []
  1232. let checkedList = []
  1233. for (let i = 0; i < rows1Data.length; i++) {
  1234. forData.push({
  1235. key: rows1Data[i].roleItemNo,
  1236. label: rows1Data[i].roleDesc,
  1237. });
  1238. }
  1239. for (let j = 0; j < rows2Data.length; j++) {
  1240. checkedList.push(rows2Data[j].roleItemNo)
  1241. }
  1242. this.transferData = forData;
  1243. this.checked = checkedList
  1244. this.setUp.reviewFlag = true
  1245. })
  1246. },
  1247. closeUpdateModel(){
  1248. this.addOrUpdateVisible=false;
  1249. },
  1250. // 获取数据列表
  1251. // getDataList: throttle(function () {
  1252. getDataList () {
  1253. this.selectUser={
  1254. username:'',
  1255. userDisplay:'',
  1256. }
  1257. this.dataListLoading = true
  1258. this.$http({
  1259. url: this.$http.adornUrl('/sys/user/list'),
  1260. method: 'get',
  1261. params: this.$http.adornParams({
  1262. 'page': this.pageIndex,
  1263. 'limit': this.pageSize,
  1264. 'username': this.searchData.userName,
  1265. 'userDisplay': this.searchData.userDisplay,
  1266. 'domainControlAccount': this.searchData.domainControlAccount,
  1267. })
  1268. }).then(({data}) => {
  1269. if (data && data.code === 0) {
  1270. this.dataList = data.page.list
  1271. this.totalPage = data.page.totalCount
  1272. } else {
  1273. this.dataList = []
  1274. this.totalPage = 0
  1275. }
  1276. this.dataListLoading = false
  1277. })
  1278. },
  1279. // }, 1000),
  1280. // 每页数
  1281. sizeChangeHandle(val) {
  1282. this.pageSize = val
  1283. this.pageIndex = 1
  1284. this.getDataList()
  1285. },
  1286. // 当前页
  1287. currentChangeHandle(val) {
  1288. this.pageIndex = val
  1289. this.getDataList()
  1290. },
  1291. // 多选
  1292. selectionChangeHandle(val) {
  1293. this.dataListSelections = val
  1294. },
  1295. // 权限清单模态框
  1296. permissionList(row) {
  1297. this.activeTable = 'factory_information'
  1298. this.userData = row
  1299. this.permissionFlag = true
  1300. },
  1301. // 获取用户工厂权限信息
  1302. getUserAccessSiteInfoList () {
  1303. getUserAccessSiteInfoList(this.userData).then(({data}) => {
  1304. if (data && data.code === 0) {
  1305. this.userSiteList = data.rows
  1306. } else {
  1307. this.$alert(data.msg, '错误', {
  1308. confirmButtonText: '确定'
  1309. })
  1310. }
  1311. })
  1312. },
  1313. // 获取用户BU权限信息
  1314. getUserAccessBUInfoList () {
  1315. getUserAccessBUInfoList(this.userData).then(({data}) => {
  1316. if (data && data.code === 0) {
  1317. this.userBUList = data.rows
  1318. } else {
  1319. this.$alert(data.msg, '错误', {
  1320. confirmButtonText: '确定'
  1321. })
  1322. }
  1323. })
  1324. },
  1325. // 获取用户角色权限信息
  1326. getUserAccessRoleInfoList () {
  1327. getUserAccessRoleInfoList(this.userData).then(({data}) => {
  1328. if (data && data.code === 0) {
  1329. this.userRoleList = data.rows
  1330. } else {
  1331. this.$alert(data.msg, '错误', {
  1332. confirmButtonText: '确定'
  1333. })
  1334. }
  1335. })
  1336. },
  1337. // 获取用户项目权限信息
  1338. getUserAccessProjectInfoList () {
  1339. getUserAccessProjectInfoList(this.userData).then(({data}) => {
  1340. if (data && data.code === 0) {
  1341. this.userProjectList = data.rows
  1342. } else {
  1343. this.$alert(data.msg, '错误', {
  1344. confirmButtonText: '确定'
  1345. })
  1346. }
  1347. })
  1348. },
  1349. // 获取用户字段权限信息
  1350. getUserAccessFieldFunctionInfoList () {
  1351. getUserAccessFieldFunctionInfoList(this.userData).then(({data}) => {
  1352. if (data && data.code === 0) {
  1353. this.userFieldList = data.rows
  1354. } else {
  1355. this.$alert(data.msg, '错误', {
  1356. confirmButtonText: '确定'
  1357. })
  1358. }
  1359. })
  1360. },
  1361. // 新增 / 修改
  1362. addOrUpdateHandle(id) {
  1363. this.addOrUpdateVisible = true
  1364. this.$nextTick(() => {
  1365. this.$refs.addOrUpdate.init(id)
  1366. })
  1367. },
  1368. // 删除
  1369. deleteHandle(row) {
  1370. this.$confirm(`确定要删除 [用户账号 : ${row.username} , 用户名 : ${row.userDisplay}] ?`, '提示', {
  1371. confirmButtonText: '确定',
  1372. cancelButtonText: '取消',
  1373. type: 'warning'
  1374. }).then(() => {
  1375. this.$http({
  1376. url: this.$http.adornUrl('/sys/user/delete'),
  1377. method: 'post',
  1378. data: this.$http.adornData([row.userId], false)
  1379. }).then(({data}) => {
  1380. if (data && data.code === 0) {
  1381. this.$message.success('操作成功')
  1382. this.getDataList()
  1383. } else {
  1384. this.$message.error(data.msg)
  1385. }
  1386. })
  1387. }).catch(() => {
  1388. })
  1389. },
  1390. FieldListModel(){
  1391. searchFieldFunctionList().then(({data}) => {
  1392. this.functionList=data.rows
  1393. });
  1394. this.functionFlag=true;
  1395. },
  1396. accessModel(row){
  1397. this.rowFunctionId=row.functionId;
  1398. searchAccessFieldListByUser({functionId:row.functionId,
  1399. username: this.selectUser.username,
  1400. }).then(({data}) => {
  1401. this.selectFieldList = data.accessFieldList
  1402. this.fieldList=data.fieldList
  1403. })
  1404. this.fieldFlag=true;
  1405. },
  1406. saveAccessFieldListByUser(){
  1407. let inList=[];
  1408. for (let i = 0; i < this.selectFieldList.length; i++) {
  1409. let inData={
  1410. username: this.selectUser.username,
  1411. fieldId:this.selectFieldList[i]
  1412. }
  1413. inList.push(inData)
  1414. }
  1415. let saveData={
  1416. username: this.selectUser.username,
  1417. functionId:this.rowFunctionId,
  1418. accessFieldList:inList,
  1419. }
  1420. saveAccessFieldListByUser(saveData).then(({data}) => {
  1421. if (data && data.code === 0) {
  1422. this.$message.success( '操作成功')
  1423. this.fieldFlag = false
  1424. } else {
  1425. this.$message.error(data.msg)
  1426. }
  1427. })
  1428. },
  1429. closeDataDialog() {
  1430. this.userSiteList=[];
  1431. this.userBUList=[];
  1432. this.userProjectList=[];
  1433. this.userFieldList=[];
  1434. this.siteList=[];
  1435. this.selectSitList=[];
  1436. this.userRoleList=[];
  1437. },
  1438. },
  1439. created() {
  1440. this.getFunctionButtonList()
  1441. }
  1442. }
  1443. </script>
  1444. <style>
  1445. .el-dialog__title {
  1446. line-height: 24px;
  1447. font-size: 16px;
  1448. color: #303133;
  1449. }
  1450. </style>