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.

444 lines
15 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
1 year ago
3 years ago
1 year ago
3 years ago
3 years ago
1 year ago
3 years ago
2 years ago
3 years ago
3 years ago
  1. <template>
  2. <div class="user-add-or-update">
  3. <el-dialog
  4. width="530px"
  5. :title="!dataForm.id ? buttons.add :buttons.edit"
  6. :close-on-click-modal="false"
  7. :visible.sync="visible"
  8. @close="closeDataDialog">
  9. <!-- 取消 :rules="dataRule"-->
  10. <el-form :inline="true" :model="dataForm" label-position="top" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
  11. <el-form>
  12. <el-form-item :label="buttons.username||'用户账号'" prop="userName">
  13. <el-input v-model="dataForm.userName" style="width: 150px;" placeholder="登录帐号"></el-input>
  14. </el-form-item>
  15. <el-form-item :label="buttons.password||'密码'" prop="password" :class="{ 'is-required': !dataForm.id }">
  16. <el-input v-model="dataForm.password" style="width: 150px;" type="password" ></el-input>
  17. </el-form-item>
  18. <el-form-item :label="buttons.comfirmPassword||'确认密码'" prop="comfirmPassword" :class="{ 'is-required': !dataForm.id }">
  19. <el-input v-model="dataForm.comfirmPassword" style="width: 150px;" type="password"></el-input>
  20. </el-form-item>
  21. </el-form>
  22. <el-form>
  23. <el-form-item :label="buttons.userDisplay||'用户名'" prop="email">
  24. <el-input v-model="dataForm.userDisplay" style="width: 150px;" ></el-input>
  25. </el-form-item>
  26. <el-form-item :label="buttons.email||'邮箱'" prop="email">
  27. <el-input v-model="dataForm.email" style="width: 150px;" ></el-input>
  28. </el-form-item>
  29. <el-form-item :label="buttons.mobile||'手机号'" prop="mobile">
  30. <el-input v-model="dataForm.mobile" style="width: 150px;" placeholder="手机号"></el-input>
  31. </el-form-item>
  32. </el-form>
  33. <el-form>
  34. <el-form-item :label="'工厂'">
  35. <el-select v-model="dataForm.siteID" clearable style="width: 150px;" placeholder="请选择" @change="getBUDepartmentPostList">
  36. <el-option
  37. :label="i.siteID + '-' + i.siteName"
  38. :value="i.siteID"
  39. v-for="i in siteList "
  40. :key="i.siteID">
  41. </el-option>
  42. </el-select>
  43. </el-form-item>
  44. <!-- <el-form-item >-->
  45. <!-- <span slot="label" style="" @click="getBaseList(18)"><a herf="#">{{buttons.site||'工厂'}}</a></span>-->
  46. <!-- <el-input v-model="dataForm.site" style="width: 150px;" placeholder="工厂"></el-input>-->
  47. <!-- </el-form-item>-->
  48. <!-- <el-form-item :label="buttons.language||'语言'" prop="languageDefault">-->
  49. <!-- <el-select filterable v-model="dataForm.languageDefault" clearable style="width: 150px;">-->
  50. <!-- <el-option :label="item.languageName" :value="item.languageCode" v-for="(item,index) in languageList "-->
  51. <!-- :key="index"></el-option>-->
  52. <!-- </el-select>-->
  53. <!-- </el-form-item>-->
  54. <el-form-item :label="'BU'">
  55. <el-select v-model="dataForm.buNo" clearable style="width: 150px;" placeholder="请选择">
  56. <el-option
  57. :label="i.buNo + '-' + i.buDesc"
  58. :value="i.buNo"
  59. v-for="i in buList "
  60. :key="i.buNo">
  61. </el-option>
  62. </el-select>
  63. </el-form-item>
  64. <el-form-item :label="buttons.department||'部门'" prop="department">
  65. <el-select v-model="dataForm.departmentNo" clearable style="width: 150px;" placeholder="请选择">
  66. <el-option
  67. :label="i.departmentNo + '-' + i.departmentName"
  68. :value="i.departmentNo"
  69. v-for="i in departmentList "
  70. :key="i.departmentNo">
  71. </el-option>
  72. </el-select>
  73. </el-form-item>
  74. </el-form>
  75. <el-form>
  76. <el-form-item :label="buttons.post||'岗位'" prop="post">
  77. <el-select v-model="dataForm.postNo" clearable style="width: 150px;" placeholder="请选择">
  78. <el-option
  79. :label="i.postNo + '-' + i.postName"
  80. :value="i.postNo"
  81. v-for="i in postList "
  82. :key="i.postNo">
  83. </el-option>
  84. </el-select>
  85. </el-form-item>
  86. <el-form-item :label="buttons.domainControlAccount||'域控账号'" prop="domainControlAccount">
  87. <el-input v-model="dataForm.domainControlAccount" style="width: 150px;" ></el-input>
  88. </el-form-item>
  89. </el-form>
  90. <el-form>
  91. <el-form-item :label="'ifs账号'" >
  92. <el-input v-model="dataForm.ifsUsername" style="width: 150px;" ></el-input>
  93. </el-form-item>
  94. <el-form-item :label="'ifs密码'" >
  95. <el-input v-model="dataForm.ifsPassword" type="password" style="width: 150px;" ></el-input>
  96. </el-form-item>
  97. </el-form>
  98. <el-form>
  99. <el-form-item label="角色" size="mini" prop="roleIdList">
  100. <el-checkbox-group v-model="dataForm.roleIdList">
  101. <el-checkbox v-for="role in roleList" :key="role.roleId" :label="role.roleId">{{role.roleName}}</el-checkbox>
  102. </el-checkbox-group>
  103. </el-form-item>
  104. <el-form-item label="状态" size="mini" prop="status">
  105. <el-radio-group v-model="dataForm.status">
  106. <el-radio :label="0">{{buttons.disable||'禁用'}}</el-radio>
  107. <el-radio :label="1">{{buttons.normal||'正常'}}</el-radio>
  108. </el-radio-group>
  109. </el-form-item>
  110. </el-form>
  111. </el-form>
  112. <span slot="footer" class="dialog-footer">
  113. <el-button type="primary" @click="dataFormSubmit()">{{buttons.submit||'确定'}}</el-button>
  114. <el-button type="primary" @click="visible = false">{{buttons.close||'取消'}}</el-button>
  115. </span>
  116. </el-dialog>
  117. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  118. </div>
  119. </template>
  120. <script>
  121. import Chooselist from '@/views/modules/common/Chooselist'
  122. import {getFactory} from "@/api/factory";
  123. import {searchSysLanguage} from "@/api/sysLanguage.js"
  124. import {
  125. searchFunctionButtonList,
  126. } from "@/api/sysLanguage.js"
  127. import {getBUList, getDepartmentList, getPostList, getSiteList} from '../../../api/base/site'
  128. export default {
  129. components: {
  130. Chooselist
  131. },
  132. data() {
  133. return {
  134. tagNo:'',
  135. visible: false,
  136. roleList: [],
  137. factorys: [],
  138. languageList: [],
  139. siteList:[],
  140. buList:[],
  141. departmentList:[],
  142. postList:[],
  143. dataForm: {
  144. id: 0,
  145. ifsUsername:'',
  146. ifsPassword:'',
  147. userName: '',
  148. password: '',
  149. comfirmPassword: '',
  150. languageDefault: '',
  151. salt: '',
  152. email: '',
  153. mobile: '',
  154. buNo: '',
  155. buDesc: '',
  156. department:'',
  157. departmentNo:'',
  158. departmentName:'',
  159. post:'',
  160. postNo:'',
  161. postName:'',
  162. roleIdList: [],
  163. status: 1,
  164. site: '',
  165. siteID: '',
  166. bu:'',
  167. siteName:'',
  168. userDisplay: '',
  169. domainControlAccount: ''
  170. },
  171. buttons: {
  172. add: '添加',
  173. edit: '编辑',
  174. username: '用户账号',
  175. userDisplay: '用户名',
  176. email: '邮箱',
  177. mobile: '手机号',
  178. bu:'BU',
  179. department:'部门',
  180. post:'岗位',
  181. status: '状态',
  182. disable: '禁用',
  183. normal: '正常',
  184. password:'密码',
  185. comfirmPassword:'确认密码',
  186. submit: '确定',
  187. close: '取消',
  188. siteID: '工厂',
  189. siteName:'工厂名称',
  190. language: '语言',
  191. domainControlAccount: '域控账号'
  192. },
  193. }
  194. },
  195. methods: {
  196. getSiteList () {
  197. getSiteList().then(({data}) => {
  198. this.siteList = data.rows
  199. // let list = data.rows.map(item=>{
  200. // return {
  201. // site:item.siteID,
  202. // siteName:item.siteName
  203. // }
  204. // })
  205. // console.log(list)
  206. })
  207. },
  208. getBUDepartmentPostList () {
  209. let tempData ={
  210. site:this.dataForm.siteID
  211. }
  212. this.dataForm.buNo = ''
  213. this.dataForm.buDesc = ''
  214. this.dataForm.departmentNo = ''
  215. this.dataForm.departmentName = ''
  216. this.dataForm.postNo = ''
  217. this.dataForm.postName = ''
  218. getBUList(tempData).then(({data}) => {
  219. this.buList = data.rows
  220. this.dataForm.buDesc = data.rows.buDesc
  221. })
  222. getDepartmentList(tempData).then(({data}) => {
  223. this.departmentList = data.rows
  224. this.dataForm.departmentName = data.rows.departmentName
  225. })
  226. getPostList(tempData).then(({data}) => {
  227. this.postList = data.rows
  228. this.dataForm.postName = data.rows.postName
  229. })
  230. },
  231. getBDPList () {
  232. let tempData ={
  233. site:this.dataForm.siteID
  234. }
  235. getBUList(tempData).then(({data}) => {
  236. this.buList = data.rows
  237. this.dataForm.buDesc = data.rows.buDesc
  238. })
  239. getDepartmentList(tempData).then(({data}) => {
  240. this.departmentList = data.rows
  241. this.dataForm.departmentName = data.rows.departmentName
  242. })
  243. getPostList(tempData).then(({data}) => {
  244. this.postList = data.rows
  245. this.dataForm.postName = data.rows.postName
  246. })
  247. },
  248. getFunctionButtonList() {
  249. let queryButton = {
  250. functionId: this.$route.meta.menuId,
  251. tableId: '*',
  252. languageCode: this.$i18n.locale,
  253. objectType: 'button'
  254. }
  255. searchFunctionButtonList(queryButton).then(({data}) => {
  256. if (data.code == 0 && data.data) {
  257. this.buttons = data.data
  258. }
  259. })
  260. },
  261. getBaseData(val){
  262. if (this.tagNo === 18){
  263. this.dataForm.site = val.SiteID
  264. }
  265. },
  266. // 获取基础数据列表
  267. getBaseList(val){
  268. this.tagNo = val
  269. this.$nextTick(() => {
  270. let strVal = "";
  271. if (val === 18){
  272. strVal = this.dataForm.site
  273. }
  274. this.$refs.baseList.init(val,strVal)
  275. })
  276. },
  277. // 获取多语言列表
  278. getLanguageList() {
  279. let queryLanguage = { languageCode: this.$i18n.locale}
  280. searchSysLanguage(queryLanguage).then(({data}) => {
  281. this.languageList = data.rows
  282. })
  283. },
  284. init(id) {
  285. this.dataForm.id = id || 0
  286. // this.factoryList();
  287. this.getLanguageList();
  288. this.$http({
  289. url: this.$http.adornUrl('/sys/role/select'),
  290. method: 'get',
  291. params: this.$http.adornParams()
  292. }).then(({data}) => {
  293. this.roleList = data && data.code === 0 ? data.list : []
  294. }).then(() => {
  295. this.visible = true
  296. this.$nextTick(() => {
  297. this.$refs['dataForm'].resetFields()
  298. })
  299. }).then(() => {
  300. if (this.dataForm.id) {
  301. this.$http({
  302. url: this.$http.adornUrl(`/sys/user/info/${this.dataForm.id}`),
  303. method: 'get',
  304. params: this.$http.adornParams()
  305. }).then(({data}) => {
  306. if (data && data.code === 0) {
  307. this.dataForm.userName = data.user.username
  308. this.dataForm.salt = data.user.salt
  309. this.dataForm.email = data.user.email
  310. this.dataForm.mobile = data.user.mobile
  311. this.dataForm.roleIdList = data.user.roleIdList
  312. this.dataForm.status = data.user.status
  313. this.dataForm.languageDefault = data.user.languageDefault
  314. this.dataForm.userDisplay = data.user.userDisplay
  315. this.dataForm.siteID = data.user.site
  316. this.dataForm.buNo = data.user.buNo
  317. this.dataForm.buDesc = data.user.buDesc
  318. this.dataForm.department = data.user.department
  319. this.dataForm.departmentNo = data.user.departmentNo
  320. this.dataForm.departmentName = data.user.departmentName
  321. this.dataForm.post = data.user.post
  322. this.dataForm.postNo = data.user.postNo
  323. this.dataForm.domainControlAccount = data.user.domainControlAccount
  324. this.dataForm.ifsUsername = data.user.ifsUsername
  325. this.dataForm.ifsPassword = data.user.ifsPassword
  326. this.getBDPList()
  327. }
  328. })
  329. } else {
  330. this.dataForm = {
  331. buNo: '',
  332. buDesc: '',
  333. userName: '',
  334. password: '',
  335. comfirmPassword: '',
  336. languageDefault: '',
  337. salt: '',
  338. email: '',
  339. mobile: '',
  340. bu: '',
  341. department: '',
  342. departmentNo: '',
  343. departmentName: '',
  344. post: '',
  345. postNo: '',
  346. postName: '',
  347. roleIdList: [],
  348. status: 1,
  349. site: '',
  350. siteID: '',
  351. siteName: '',
  352. userDisplay: '',
  353. domainControlAccount: '',
  354. ifsUsername:'',
  355. ifsPassword:'',
  356. }
  357. }
  358. })
  359. },
  360. // 表单提交
  361. dataFormSubmit() {
  362. if (!this.dataForm.userDisplay){
  363. this.$message.warning((this.buttons.userDisplay||'用户名') +"不能为空")
  364. return
  365. }
  366. this.$refs['dataForm'].validate((valid) => {
  367. if (valid) {
  368. this.$http({
  369. url: this.$http.adornUrl(`/sys/user/${!this.dataForm.id ? 'save' : 'update'}`),
  370. method: 'post',
  371. data: this.$http.adornData({
  372. 'userId': this.dataForm.id || undefined,
  373. 'username': this.dataForm.userName,
  374. 'password': this.dataForm.password,
  375. 'salt': this.dataForm.salt,
  376. 'email': this.dataForm.email,
  377. 'mobile': this.dataForm.mobile,
  378. 'status': this.dataForm.status,
  379. 'roleIdList': this.dataForm.roleIdList,
  380. 'languageDefault': this.dataForm.languageDefault,
  381. 'site': this.dataForm.siteID,
  382. 'userDisplay': this.dataForm.userDisplay,
  383. 'buNo': this.dataForm.buNo,
  384. 'departmentNo': this.dataForm.departmentNo,
  385. 'postNo': this.dataForm.postNo,
  386. 'domainControlAccount': this.dataForm.domainControlAccount,
  387. 'ifsUsername': this.dataForm.ifsUsername,
  388. 'ifsPassword': this.dataForm.ifsPassword,
  389. })
  390. }).then(({data}) => {
  391. if (data && data.code === 0) {
  392. this.$message.success( '操作成功')
  393. this.visible = false
  394. this.$emit('refreshDataList')
  395. } else {
  396. this.$message.error(data.msg)
  397. }
  398. })
  399. }
  400. })
  401. },
  402. // 关闭弹窗
  403. closeDataDialog() {
  404. this.$emit('closeModel')
  405. this.dataForm = {
  406. buNo: '',
  407. buDesc: '',
  408. userName: '',
  409. password: '',
  410. comfirmPassword: '',
  411. languageDefault: '',
  412. salt: '',
  413. email: '',
  414. mobile: '',
  415. bu:'',
  416. department:'',
  417. departmentNo:'',
  418. departmentName:'',
  419. post:'',
  420. postNo:'',
  421. postName:'',
  422. roleIdList: [],
  423. status: 1,
  424. site: '',
  425. siteID: '',
  426. siteName:'',
  427. userDisplay: ''
  428. }
  429. }
  430. },
  431. created() {
  432. this.getFunctionButtonList()
  433. this.getSiteList()
  434. }
  435. }
  436. </script>
  437. <style lang="scss" scoped>
  438. </style>