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.

1448 lines
46 KiB

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