member-list.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648
  1. <template>
  2. <div v-loading="loading">
  3. <div class="white-box">
  4. <!-- 功能搜索 -->
  5. <div class="filter-box">
  6. <filter-user :filter-types="filterTypes" @select-value="handleFilterUser"></filter-user>
  7. </div>
  8. <!-- 列表展示 -->
  9. <el-table ref="wrapper" :data="tableData" stripe style="width: 100%;" @selection-change="handleSelectionChange" :height="tool.getTableHeight()">
  10. <el-table-column :fixed="leftFixed" type="selection" width="55" v-if="tableHeaders"></el-table-column>
  11. <el-table-column v-for="(tableHeader, key) in tableHeaders" :key="key" :label="tableHeader.header" :width="tableHeader.other.width ? tableHeader.other.width : ''" :fixed="tableHeader.index == 'USER_NAME' || tableHeader.index == 'REAL_NAME' ? leftFixed : false">
  12. <template slot-scope="scope">
  13. <template v-if="scope.row[tableHeader.index].other.tag">
  14. <el-tag
  15. :type="scope.row[tableHeader.index].other.tag.type ? scope.row[tableHeader.index].other.tag.type : null"
  16. :size="scope.row[tableHeader.index].other.tag.size ? scope.row[tableHeader.index].other.tag.size : null"
  17. :class="scope.row[tableHeader.index].other.tag.class ? scope.row[tableHeader.index].other.tag.class : null">
  18. {{scope.row[tableHeader.index].value}}
  19. </el-tag>
  20. </template>
  21. <template v-else>
  22. <template v-if="tableHeader.index === 'USER_NAME'">
  23. <el-dropdown v-if="permission.hasPermission(`user/login-to-frontend`)">
  24. <span class="el-dropdown-link">
  25. {{scope.row.USER_NAME.value}} <i class="el-icon-arrow-down el-icon--right"></i>
  26. </span>
  27. <el-dropdown-menu slot="dropdown">
  28. <el-dropdown-item command="login" v-show="scope.row.BTF_URL !== null">
  29. <a :href="`${frontendServer}/#/login-by-backend?${scope.row.BTF_URL}`" target="_blank" style="color:#606266;">{{ $t('member.quickLogon') }}</a>
  30. </el-dropdown-item>
  31. </el-dropdown-menu>
  32. </el-dropdown>
  33. <el-tag type="primary" size="small" class="no-border" v-if="!permission.hasPermission(`user/login-to-frontend`)">{{ scope.row.USER_NAME.value }}</el-tag>
  34. </template>
  35. <template v-else>
  36. <div v-html="scope.row[tableHeader.index].value"></div>
  37. </template>
  38. </template>
  39. </template>
  40. </el-table-column>
  41. <el-table-column :fixed="fixed" :label="$t('common.action')" width="180">
  42. <template slot-scope="{row}">
  43. <el-dropdown size="small" trigger="click">
  44. <el-button type="primary" size="small" @click.stop="">{{ $t('common.action') }}<i class="el-icon-arrow-down el-icon--right"></i></el-button>
  45. <el-dropdown-menu slot="dropdown">
  46. <el-dropdown-item @click.native="handleModifyPassword(row)" v-if="permission.hasPermission(`user/modify-password`)">{{ $t('member.changePassword') }}</el-dropdown-item>
  47. <el-dropdown-item @click.native="handleModifyProfile(row)" v-if="permission.hasPermission(`user/modify-profile`)">{{ $t('member.modifyPersonalData') }}</el-dropdown-item>
  48. <el-dropdown-item @click.native="handleStatusActive(row)" v-if="permission.hasPermission(`user/modify-status`)">{{ $t('member.statusActivation') }}</el-dropdown-item>
  49. <el-dropdown-item @click.native="handleStatusLock(row)" v-if="permission.hasPermission(`user/modify-status`)">{{ $t('member.statusLock') }}</el-dropdown-item>
  50. <el-dropdown-item @click.native="handleIsModifyPassword(row, 1)" v-if="permission.hasPermission(`user/is-modify-password-status`)">{{ $t('member.openPasswordModification') }}</el-dropdown-item>
  51. <el-dropdown-item @click.native="handleIsModifyPassword(row, 0)" v-if="permission.hasPermission(`user/is-modify-password-status`)">{{ $t('member.turnOffPasswordModification') }}</el-dropdown-item>
  52. </el-dropdown-menu>
  53. </el-dropdown>
  54. </template>
  55. </el-table-column>
  56. </el-table>
  57. <!-- 快捷功能 -->
  58. <div class="white-box-footer">
  59. <el-dropdown size="small" trigger="click" v-show="permission.hasPermission(`user/is-dec`)" style="margin: 5px;">
  60. <el-button type="primary" size="small" @click.stop="">
  61. {{ $t('member.stockistManagement') }}<i class="el-icon-arrow-down el-icon--right"></i>
  62. </el-button>
  63. <el-dropdown-menu slot="dropdown">
  64. <el-dropdown-item command="isDec" @click.native="handleIsDecManage(true)">{{ $t('member.setAsStockist') }}</el-dropdown-item>
  65. <el-dropdown-item command="notDec" @click.native="handleIsDecManage(false)">{{ $t('member.cancelStockist') }}</el-dropdown-item>
  66. </el-dropdown-menu>
  67. </el-dropdown>
  68. <el-dropdown size="small" trigger="click" v-show="permission.hasPermission(`user/is-atlas`)" style="margin: 5px;">
  69. <el-button type="primary" size="small" @click.stop="">
  70. {{ $t('member.chartManagement') }}<i class="el-icon-arrow-down el-icon--right"></i>
  71. </el-button>
  72. <el-dropdown-menu slot="dropdown">
  73. <el-dropdown-item command="isAtlas" @click.native="handleIsAtlasManage(true)">{{ $t('member.displayChart') }}</el-dropdown-item>
  74. <el-dropdown-item command="notAtlas" @click.native="handleIsAtlasManage(false)">{{ $t('member.hiddenChart') }}</el-dropdown-item>
  75. </el-dropdown-menu>
  76. </el-dropdown>
  77. <el-dropdown size="small" trigger="click" v-show="permission.hasPermission(`user/is-recharge`)" style="margin: 5px;">
  78. <el-button type="primary" size="small" @click.stop="">
  79. {{ $t('member.rechargeManagement') }}<i class="el-icon-arrow-down el-icon--right"></i>
  80. </el-button>
  81. <el-dropdown-menu slot="dropdown">
  82. <el-dropdown-item command="isAtlas" @click.native="handleIsRechargeManage(true)">{{ $t('member.displayRecharge') }}</el-dropdown-item>
  83. <el-dropdown-item command="notAtlas" @click.native="handleIsRechargeManage(false)">{{ $t('member.hideRecharge') }}</el-dropdown-item>
  84. </el-dropdown-menu>
  85. </el-dropdown>
  86. <el-button type="success" size="small" @click="handleExport" v-show="permission.hasPermission(`user/index-export`)" style="margin: 5px;">{{ $t('member.exportExcel') }}</el-button>
  87. <pagination v-show="totalCount>0" :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
  88. </div>
  89. </div>
  90. <!-- 修改密码 -->
  91. <el-dialog :title="formModifyPassword.typeName" :visible.sync="dialogModifyPasswordVisible" :width="screenWidth">
  92. <el-form ref="form" :model="formModifyPassword" label-width="120px" class="form-dialog" :label-position="labelPosition">
  93. <el-form-item :label="$t('member.type')">
  94. <el-select v-model="formModifyPassword.passwordType" :placeholder="$t('member.selectType')">
  95. <el-option v-for="(item,key) in passwordType" :label="item.label" :value="item.type" :key="key"></el-option>
  96. </el-select>
  97. </el-form-item>
  98. <el-form-item :label="$t('member.password')">
  99. <el-input :placeholder="$t('member.password')" v-model="formModifyPassword.password"></el-input>
  100. </el-form-item>
  101. <el-form-item>
  102. <el-button type="primary" @click="handleModifyPasswordSubmit" :loading="submitPasswordButtonStat">{{ $t('common.confirm') }}</el-button>
  103. </el-form-item>
  104. </el-form>
  105. </el-dialog>
  106. <!-- 修改会员信息 -->
  107. <el-dialog :title="formModifyProfile.typeName" :visible.sync="dialogModifyProfileVisible" :width="screenWidth" :destroy-on-close="true">
  108. <el-form ref="form" :model="formModifyProfile" label-width="150px" :label-position="labelPosition">
  109. <el-form-item :label="$t('member.memberName')">
  110. <el-input v-model="formModifyProfile.realName"></el-input>
  111. </el-form-item>
  112. <el-form-item :label="$t('member.identityNo')">
  113. <el-input v-model="formModifyProfile.idCard"></el-input>
  114. </el-form-item>
  115. <el-form-item :label="$t('transportationConfig.countryName')">
  116. <el-select v-model="formModifyProfile.country" filterable ref="countryId" @change="countryChange" @blur="countryVisibleChange($event)">
  117. <el-option v-for="(item,index) in allCountry" :key="index" :label="item.NAME" :value="item.ID"></el-option>
  118. </el-select>
  119. </el-form-item>
  120. <el-form-item :label="$t('common.language')">
  121. <el-select v-model="formModifyProfile.language">
  122. <el-option v-for="(item,index) in allLanguage" :key="index" :label="item.NAME" :value="item.ID"></el-option>
  123. </el-select>
  124. </el-form-item>
  125. <el-form-item :label="$t('member.phoneNumber')">
  126. <el-input v-model="formModifyProfile.mobile"></el-input>
  127. </el-form-item>
  128. <el-form-item :label="$t('member.bankName')">
  129. <el-select v-model="formModifyProfile.openBank" :placeholder="$t('member.selectBankName')">
  130. <el-option v-for="(item,index) in allOpenBank" :key="index" :label="item.BANK_NAME" :value="item.BANK_CODE"></el-option>
  131. </el-select>
  132. </el-form-item>
  133. <el-form-item :label="$t('member.bankAddress')">
  134. <el-input v-model="formModifyProfile.bankAddress"></el-input>
  135. </el-form-item>
  136. <el-form-item :label="$t('member.bankAccount')">
  137. <el-input v-model="formModifyProfile.bankNo"></el-input>
  138. </el-form-item>
  139. <el-form-item>
  140. <el-button type="primary" @click="handleModifyProfileSubmit" :loading="submitProfileButtonStat">{{ $t('common.confirm') }}</el-button>
  141. </el-form-item>
  142. </el-form>
  143. </el-dialog>
  144. </div>
  145. </template>
  146. <script>
  147. import tool from '@/utils/tool'
  148. import baseInfo from '@/utils/baseInfo'
  149. import FilterUser from '@/components/FilterUser'
  150. import permission from '@/utils/permission'
  151. import Pagination from '@/components/Pagination'
  152. import filterHelper from '@/utils/filterHelper'
  153. import waves from "@/directive/waves";
  154. import {getOperatingSystem, getScreenWidth} from "@/utils"
  155. import region from "@/store/modules/region"
  156. import {
  157. fetchCloseDec, fetchCloseDecGet, fetchCloseLoginGet, fetchMemberExport, fetchMemberList, fetchProfileGet,
  158. updateModifyPassword, updateModifyProfile, updateSetActive, updateSetAsStockist, updateSetChartDisplay, updateSetLock, updateSetModifyPassword, updateSetRechargeDisplay,
  159. } from "@/api/member"
  160. import {getBank} from "@/api/site";
  161. export default {
  162. name: 'memberList',
  163. directives: { waves },
  164. components: {FilterUser, Pagination},
  165. mounted() {
  166. // TODO: 测试接口
  167. // this.getData()
  168. if (permission.hasPermission(`user/close-login`) || permission.hasPermission(`user/close-area-login`) || permission.hasPermission(`user/batch-close-login`)) {
  169. fetchCloseLoginGet().then(response => {
  170. this.apps = response.data.apps
  171. this.closeSwitch = response.data.closeSwitch
  172. if (permission.hasPermission(`user/close-dec`) || permission.hasPermission(`user/close-area-dec`) || permission.hasPermission(`user/batch-close-dec`)) {
  173. fetchCloseDecGet().then(response => {
  174. this.closeDecSwitch = response.data.closeSwitch
  175. this.getData()
  176. }).catch(error => {
  177. this.$message({
  178. message: error,
  179. type: 'warning'
  180. })
  181. })
  182. } else {
  183. this.getData()
  184. }
  185. }).catch(error => {
  186. this.$message({
  187. message: error,
  188. type: 'warning'
  189. })
  190. })
  191. } else {
  192. if (permission.hasPermission(`user/close-dec`) || permission.hasPermission(`user/close-area-dec`) || permission.hasPermission(`user/batch-close-dec`)) {
  193. fetchCloseDecGet().then(response => {
  194. this.closeDecSwitch = response.data.closeSwitch
  195. this.getData()
  196. }).catch(error => {
  197. this.$message({
  198. message: error,
  199. type: 'warning'
  200. })
  201. })
  202. } else {
  203. this.getData()
  204. }
  205. }
  206. },
  207. data() {
  208. return {
  209. tableHeaders: null,
  210. tableData: null,
  211. loading: true,
  212. multipleSelection: [],
  213. currentPage: 1,
  214. totalPages: 1,
  215. totalCount: 1,
  216. pageSize: 20,
  217. frontendServer: process.env.VUE_APP_FRONTEND_WEBSITE,
  218. baseDecLevels: baseInfo.decLevels(),
  219. baseEmpLevels: baseInfo.empLevels(),
  220. tool: tool,
  221. permission: permission,
  222. filterTypes: null,
  223. filterModel: {},
  224. dialogVisible: false,
  225. formCloseLogin: {
  226. userName: null,
  227. typeName: this.$t('member.loginManagement'),
  228. type: null,
  229. isClose: 0,
  230. remark: '',
  231. areaSelected: null,
  232. },
  233. regionDataPlus: region.regionInfo.regionData,
  234. apps: null,
  235. closeSwitch: null,
  236. submitButtonStat: false,
  237. dialogDecVisible: false,
  238. dialogModifyPasswordVisible: false,
  239. dialogModifyProfileVisible: false,
  240. formCloseDec: {
  241. userName: null,
  242. typeName: this.$t('member.entryManage'),
  243. type: null,
  244. isClose: 0,
  245. remark: '',
  246. areaSelected: null,
  247. },
  248. formModifyPassword: {
  249. userId:'',
  250. password: '',
  251. typeName: this.$t('member.changePassword'),
  252. passwordType: 'password',
  253. },
  254. formModifyProfile: {
  255. userId:'',
  256. typeName: this.$t('member.modifyPersonalData'),
  257. nation: '',
  258. realName: '',
  259. idCard: '',
  260. mobile: '',
  261. openBank: '',
  262. bankAddress: '',
  263. bankNo: '',
  264. },
  265. passwordType: [
  266. {
  267. type:"password",
  268. label: this.$t('member.loginPassword'),
  269. },
  270. {
  271. type:"payPassword",
  272. label: this.$t('member.paymentPassword'),
  273. },
  274. ],
  275. allOpenBank:null,
  276. allNation:null,
  277. allCountry: null,
  278. allLanguage: null,
  279. submitDecButtonStat: false,
  280. submitPasswordButtonStat: false,
  281. submitProfileButtonStat: false,
  282. transferPropForm: {
  283. userIds: [],
  284. allowTransfer: true,
  285. transferProp: 100,
  286. withdrawProp: 0,
  287. remark: '',
  288. },
  289. closeUserData: null,
  290. screenWidth: getScreenWidth() > 500 ? '500px' : getScreenWidth() + 'px',
  291. labelPosition: getScreenWidth() >= 500 ? 'right' : 'top',
  292. leftFixed: getScreenWidth() < 500 ? false : 'left',
  293. fixed: getScreenWidth() < 500 ? false : 'right',
  294. // leftFixed: ['Android', 'ios'].includes(getOperatingSystem()) ? false : 'left',
  295. // fixed: ['Android', 'ios'].includes(getOperatingSystem()) ? false : 'right',
  296. originalCountry: '',
  297. }
  298. },
  299. methods: {
  300. countryVisibleChange(event){
  301. },
  302. countryChange(row){
  303. this.$nextTick(() => {
  304. this.$refs.countryId.blur()
  305. this.$confirm( this.$t('member.modifyCountry'), this.$t('common.hint'), {
  306. confirmButtonText: this.$t('common.confirm'),
  307. cancelButtonText: this.$t('common.cancel'),
  308. type: 'warning'
  309. }).then(() => {
  310. // this.$message({
  311. // type: 'success',
  312. // message: '!'
  313. // });
  314. this.getBanks(row)
  315. }).catch(() => {
  316. this.formModifyProfile.country = this.originalCountry
  317. this.getBanks(this.originalCountry)
  318. });
  319. });
  320. },
  321. getBanks(countryId){
  322. getBank( { countryId: countryId, }).then(response => {
  323. this.formModifyProfile.openBank = null
  324. this.allOpenBank = response
  325. }).catch(error => {
  326. this.$message({
  327. message: error,
  328. type: 'warning'
  329. })
  330. })
  331. },
  332. handleSelectionChange(val) {
  333. this.multipleSelection = val
  334. },
  335. handleCurrentChange(page) {
  336. this.getData(page, this.pageSize)
  337. },
  338. handleSizeChange(pageSize) {
  339. this.getData(this.currentPage, pageSize)
  340. },
  341. handleFilterUser(filterData) {
  342. console.log(filterData)
  343. filterHelper.handleFilterUser(this, filterData)
  344. },
  345. handleFilter() {
  346. this.getData()
  347. },
  348. getData(page, pageSize) {
  349. this.loading = true
  350. const paramsData = Object.assign({
  351. page: (page === null || page == undefined) ? 1 : page,
  352. pageSize: (pageSize === null || pageSize == undefined) ? this.pageSize : pageSize
  353. }, this.filterModel)
  354. fetchMemberList(paramsData).then(response => {
  355. this.filterTypes = response.data.filterTypes
  356. this.tableData = response.data.list
  357. this.totalCount = +response.data.totalCount
  358. this.currentPage = page
  359. this.pageSize = pageSize
  360. this.filterTypes = response.data.filterTypes
  361. this.tableHeaders = response.data.columnsShow
  362. this.loading = false
  363. }).catch(error => {
  364. this.$message({
  365. message: error,
  366. type: 'warning'
  367. })
  368. this.loading = false
  369. })
  370. },
  371. handleIsDecManage(isDec) {
  372. if (this.multipleSelection.length < 1) {
  373. this.$message({
  374. message: this.$t('member.selectMemberData'),
  375. type: 'warning'
  376. })
  377. return
  378. }
  379. let isDecTip = isDec === true ? this.$t('member.setAsStockist') : this.$t('member.cancelStockist')
  380. this.$confirm( this.$t('member.sureWant') + `【${isDecTip}】?`, this.$t('common.hint'), {
  381. confirmButtonText: this.$t('common.confirm'),
  382. cancelButtonText: this.$t('common.cancel'),
  383. type: 'warning'
  384. }).then(() => {
  385. let selectedIds = []
  386. for (let val of this.multipleSelection) {
  387. selectedIds.push(val.USER_ID)
  388. }
  389. this.loading = true
  390. updateSetAsStockist( { userIds: selectedIds, isDec: isDec }).then(response => {
  391. this.$message({
  392. message: response.data,
  393. type: 'success'
  394. })
  395. this.loading = false
  396. this.getData(this.currentPage, this.pageSize)
  397. }).catch(error => {
  398. this.$message({
  399. message: error,
  400. type: 'warning'
  401. })
  402. this.loading = false
  403. })
  404. })
  405. },
  406. handleIsAtlasManage(isAtlas) {
  407. if (this.multipleSelection.length < 1) {
  408. this.$message({
  409. message: this.$t('member.selectMemberData'),
  410. type: 'warning'
  411. })
  412. return
  413. }
  414. let isAtlasTip = isAtlas === true ? this.$t('member.displayChart') : this.$t('member.hiddenChart')
  415. this.$confirm(this.$t('member.sureWant') + `【${isAtlasTip}】?`, this.$t('common.hint'), {
  416. confirmButtonText: this.$t('common.confirm'),
  417. cancelButtonText: this.$t('common.cancel'),
  418. type: 'warning'
  419. }).then(() => {
  420. let selectedIds = []
  421. for (let val of this.multipleSelection) {
  422. selectedIds.push(val.USER_ID)
  423. }
  424. this.loading = true
  425. updateSetChartDisplay( { userIds: selectedIds, isAtlas: isAtlas }).then(response => {
  426. this.$message({
  427. message: response.data,
  428. type: 'success'
  429. })
  430. this.loading = false
  431. this.getData(this.currentPage, this.pageSize)
  432. }).catch(error => {
  433. this.loading = false
  434. this.$message({
  435. message: error,
  436. type: 'error'
  437. })
  438. })
  439. })
  440. },
  441. handleIsRechargeManage(isRecharge) {
  442. if (this.multipleSelection.length < 1) {
  443. this.$message({
  444. message: this.$t('member.selectMemberData'),
  445. type: 'warning'
  446. })
  447. return false
  448. }
  449. let isRechargeTip = isRecharge === true ? this.$t('member.displayRecharge') : this.$t('member.hideRecharge')
  450. this.$confirm(this.$t('member.sureWant') + `【${isRechargeTip}】?`, this.$t('common.hint'), {
  451. confirmButtonText: this.$t('common.confirm'),
  452. cancelButtonText: this.$t('common.cancel'),
  453. type: 'warning'
  454. }).then(() => {
  455. let selectedIds = []
  456. for (let val of this.multipleSelection) {
  457. selectedIds.push(val.USER_ID)
  458. }
  459. this.loading = true
  460. updateSetRechargeDisplay( { userIds: selectedIds, isRecharge: isRecharge }).then(response => {
  461. this.$message({
  462. message: response.data,
  463. type: 'success'
  464. })
  465. this.loading = false
  466. this.getData(this.currentPage, this.pageSize)
  467. }).catch(error => {
  468. this.loading = false
  469. this.$message({
  470. message: error,
  471. type: 'warning'
  472. })
  473. })
  474. })
  475. },
  476. handleExport() {
  477. this.$confirm(this.$t('member.exportDataHint'), this.$t('common.hint'), {
  478. confirmButtonText: this.$t('common.confirm'),
  479. cancelButtonText: this.$t('common.cancel'),
  480. type: 'warning'
  481. }).then(() => {
  482. this.loading = true
  483. fetchMemberExport( this.filterModel).then(response => {
  484. this.$message({
  485. message: response.data,
  486. type: 'success'
  487. })
  488. this.loading = false
  489. this.getData(this.currentPage, this.pageSize)
  490. }).catch(error => {
  491. this.loading = false
  492. this.$message({
  493. message: error,
  494. type: 'warning'
  495. })
  496. })
  497. })
  498. },
  499. handleModifyPassword(row){
  500. this.formModifyPassword.userId = row.USER_ID;
  501. this.dialogModifyPasswordVisible = true
  502. },
  503. handleModifyProfile(row){
  504. this.dialogModifyProfileVisible = true
  505. fetchProfileGet( { id: row.USER_ID }).then(response => {
  506. this.formModifyProfile = response.data.userInfo
  507. this.allOpenBank = response.data.allOpenBank
  508. this.allNation = response.data.allNation
  509. this.allCountry = response.data.country
  510. this.allLanguage = response.data.language
  511. this.originalCountry = JSON.parse(JSON.stringify(response.data.userInfo.country))
  512. }).catch(error => {
  513. this.$message({
  514. message: error,
  515. type: 'error'
  516. })
  517. this.loading = false
  518. })
  519. },
  520. handleStatusActive(row) {
  521. this.loading = true
  522. updateSetActive( { userId: row.USER_ID, status: 1 }).then(response => {
  523. this.$message({
  524. message: response.data,
  525. type: 'success'
  526. })
  527. this.loading = false
  528. this.getData(this.currentPage, this.pageSize)
  529. }).catch(error => {
  530. this.$message({
  531. message: error,
  532. type: 'error'
  533. })
  534. this.loading = false
  535. })
  536. },
  537. handleStatusLock(row) {
  538. this.loading = true
  539. updateSetLock( { userId: row.USER_ID, status: 0 }).then(response => {
  540. this.$message({
  541. message: response.data,
  542. type: 'success'
  543. })
  544. this.loading = false
  545. this.getData(this.currentPage, this.pageSize)
  546. }).catch(error => {
  547. this.$message({
  548. message: error,
  549. type: 'error'
  550. })
  551. this.loading = false
  552. })
  553. },
  554. handleIsModifyPassword(row, status){
  555. this.loading = true
  556. updateSetModifyPassword( { userId: row.USER_ID, status: status }).then(response => {
  557. this.$message({
  558. message: response.data,
  559. type: 'success'
  560. })
  561. this.loading = false
  562. this.getData(this.currentPage, this.pageSize)
  563. }).catch(error => {
  564. this.$message({
  565. message: error,
  566. type: 'error'
  567. })
  568. this.loading = false
  569. })
  570. },
  571. handleModifyPasswordSubmit() {
  572. this.submitPasswordButtonStat = true
  573. updateModifyPassword( this.formModifyPassword).then(response => {
  574. this.$message({
  575. message: response.data,
  576. type: 'success'
  577. })
  578. this.submitPasswordButtonStat = false
  579. this.dialogModifyPasswordVisible = false
  580. this.getData(this.currentPage, this.pageSize)
  581. }).catch(error => {
  582. this.$message({
  583. message: error,
  584. type: 'error'
  585. })
  586. this.submitPasswordButtonStat = false
  587. })
  588. },
  589. handleModifyProfileSubmit() {
  590. this.submitProfileButtonStat = true
  591. updateModifyProfile( this.formModifyProfile).then(response => {
  592. this.$message({
  593. message: response.data,
  594. type: 'success'
  595. })
  596. this.submitProfileButtonStat = false
  597. this.dialogModifyProfileVisible = false
  598. this.getData(this.currentPage, this.pageSize)
  599. }).catch(error => {
  600. this.$message({
  601. message: error,
  602. type: 'warning'
  603. })
  604. this.submitProfileButtonStat = false
  605. // this.dialogModifyProfileVisible = false
  606. })
  607. },
  608. }
  609. }
  610. </script>
  611. <style>
  612. .app-main {
  613. padding: 15px;
  614. }
  615. .app-container {
  616. padding: 0;
  617. }
  618. .white-box {
  619. padding: 15px;
  620. }
  621. .form-page {
  622. width: 100%;
  623. }
  624. </style>