index.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <template>
  2. <div class="app-wrapper">
  3. <sidebar class="sidebar-container" id="sidebar-containers" />
  4. <div class="main-container">
  5. <navbar />
  6. <app-main id="main-containers" />
  7. </div>
  8. <!--修改密码弹框-->
  9. <Dialog width="496px" customClass="dataStoreInfoDialog" :flag="pwdflag">
  10. <div class="dialog-public-background">
  11. <div class="title">修改密码</div>
  12. <div class="content">
  13. <div class="ruleZf">
  14. 特殊字符:`、!、@、#、$、%、^、&、*、(、)、_、+、{、}、"、:、?、>、&lt;、`、,、.、/、'、;、=、-
  15. </div>
  16. <div class="ruleZf">
  17. 密码规则:长度为8-20个字符,并且必须包含数字、大写字母、小写字母、特殊字符
  18. </div>
  19. <el-form :model="dataForm" :rules="dataRules" ref="dataForm" class="demo-dataForm">
  20. <el-form-item label="旧密码" prop="old">
  21. <el-input size="medium" placeholder="请输入旧密码" show-password v-model="dataForm.old"></el-input>
  22. </el-form-item>
  23. <el-form-item label="新密码" prop="new">
  24. <el-input size="medium" placeholder="请输入新密码" show-password v-model="dataForm.new"></el-input>
  25. </el-form-item>
  26. <el-form-item label="再次确认新密码" prop="again">
  27. <el-input size="medium" placeholder="请再次确认新密码" show-password v-model="dataForm.again"></el-input>
  28. </el-form-item>
  29. </el-form>
  30. </div>
  31. <div class="foot center t30">
  32. <el-button size="medium" type="primary" @click="addSubmit('dataForm')" class="r24">保存</el-button>
  33. <el-button size="medium" @click="resetForm('dataForm')">取消</el-button>
  34. </div>
  35. </div>
  36. </Dialog>
  37. <!--退出弹框-->
  38. <Dialog :flag="outflag">
  39. <div class="airportInfoDialog">
  40. <div class="flx">退出系统</div>
  41. <div class="content">是否确认退出系统?</div>
  42. <div class="foot right t30" style="margin-top: 24px">
  43. <el-button size="medium" class="r25 r26" @click="outQd" type="primary">确定</el-button>
  44. <el-button size="medium" @click="outQx" class="r26">取消</el-button>
  45. </div>
  46. </div>
  47. </Dialog>
  48. <PassengerDialog />
  49. <AbnormalBaggageDialog />
  50. <WarningDialog />
  51. <ErrorDialog />
  52. </div>
  53. </template>
  54. <script>
  55. import { Navbar, Sidebar, AppMain } from './components'
  56. import ResizeMixin from './mixin/ResizeHandler'
  57. import { mapGetters } from 'vuex'
  58. // import { changePassword } from "@/api/newLogin";
  59. // import { removeToken } from "@/utils/auth";
  60. import { modifyData } from '@/api/webApi'
  61. import Dialog from '@/layout/components/Dialog'
  62. import MD5 from 'blueimp-md5'
  63. import PassengerDialog from '@/components/PassengerDialog'
  64. import AbnormalBaggageDialog from '@/components/AbnormalBaggageDialog'
  65. import WarningDialog from '@/components/WarningDialog'
  66. import ErrorDialog from '@/components/ErrorDialog'
  67. export default {
  68. name: 'Layout',
  69. components: {
  70. Navbar,
  71. Sidebar,
  72. AppMain,
  73. Dialog,
  74. PassengerDialog,
  75. AbnormalBaggageDialog,
  76. WarningDialog,
  77. ErrorDialog
  78. },
  79. mixins: [ResizeMixin],
  80. data () {
  81. return {
  82. dataForm: {
  83. //数据项表单
  84. old: '',
  85. new: '',
  86. again: '',
  87. },
  88. // leup: true,
  89. dataRules: {
  90. //数据项表单验证
  91. old: [{ required: true, message: '请输入旧密码', trigger: 'blur' }],
  92. new: [{ required: true, message: '请输入新密码', trigger: 'blur' }],
  93. again: [
  94. { required: true, message: '请再次确认新密码', trigger: 'blur' },
  95. ],
  96. },
  97. }
  98. },
  99. computed: {
  100. ...mapGetters(['pwdflag', 'outflag', 'name']),
  101. },
  102. methods: {
  103. //存储数据项-提交
  104. addSubmit (formName) {
  105. this.$refs[formName].validate(valid => {
  106. if (valid) {
  107. const r = PLATFROM_CONFIG.editRule
  108. const b = r.test(this.dataForm.new)
  109. if (b) {
  110. if (this.dataForm.new !== this.dataForm.again) {
  111. this.$message.error('两次输入的密码不一致,请重新输入')
  112. return false
  113. }
  114. this.editPwd()
  115. }
  116. else {
  117. this.$message.error('请根据密码规则设置密码')
  118. }
  119. } else {
  120. return false
  121. }
  122. })
  123. },
  124. //存储数据项-取消
  125. resetForm (formName) {
  126. this.$store.dispatch('app/togglePwdflag', false)
  127. this.$refs[formName].resetFields()
  128. },
  129. //退出系统-取消
  130. outQx () {
  131. this.$store.dispatch('app/toggleOutflag', false)
  132. },
  133. //退出系统-确定
  134. async outQd () {
  135. const res = await this.$store.dispatch('user/logout')
  136. const that = this
  137. if (res) {
  138. that.$store.dispatch('app/toggleOutflag', false)
  139. this.$message({
  140. type: 'success',
  141. message: '退出登录成功',
  142. duration: 1000,
  143. onClose: () => {
  144. sessionStorage.removeItem('userName')
  145. that.$router.push(`/login`)
  146. },
  147. })
  148. } else {
  149. this.$message.error('退出登录失败')
  150. }
  151. },
  152. // 修改密码
  153. async editPwd () {
  154. try {
  155. const res = await modifyData({
  156. serviceId: SERVICE_ID.changePwd,
  157. dataContent: {
  158. filter: [
  159. {
  160. left: '(',
  161. column: 'user_id',
  162. comparator: '=',
  163. value: sessionStorage.getItem('User_Id'),
  164. right: ')',
  165. connector: 'and',
  166. },
  167. {
  168. left: '(',
  169. column: 'user_pwd',
  170. comparator: '=',
  171. value: MD5(this.dataForm.old),
  172. right: ')',
  173. connector: 'and',
  174. },
  175. ],
  176. Value: {
  177. user_pwd: MD5(this.dataForm.again),
  178. },
  179. },
  180. })
  181. if (res.code == 0 && res.sql.includes('update')) {
  182. this.$message.success(res.message ?? '成功')
  183. this.$store.dispatch('app/togglePwdflag', false)
  184. setTimeout(() => {
  185. this.outQd()
  186. }, 2000)
  187. } else {
  188. this.$message.error(res.message ?? '旧密码输入错误')
  189. }
  190. } catch (error) {
  191. this.$message.error('失败')
  192. }
  193. },
  194. },
  195. }
  196. </script>
  197. <style lang="scss" scoped>
  198. @import "~@/styles/mixin.scss";
  199. @import "~@/styles/variables.scss";
  200. .app-wrapper {
  201. @include clearfix;
  202. position: relative;
  203. height: 100%;
  204. width: 100%;
  205. &.mobile.openSidebar {
  206. position: fixed;
  207. top: 0;
  208. }
  209. }
  210. .drawer-bg {
  211. background: #000;
  212. opacity: 0.3;
  213. width: 100%;
  214. top: 0;
  215. height: 100%;
  216. position: absolute;
  217. z-index: 999;
  218. }
  219. .fixed-header {
  220. position: fixed;
  221. top: 0;
  222. right: 0;
  223. z-index: 9;
  224. width: calc(100% - #{$sideBarWidth});
  225. transition: width 0.28s;
  226. }
  227. .hideSidebar .fixed-header {
  228. width: calc(100% - 54px);
  229. }
  230. .mobile .fixed-header {
  231. width: 100%;
  232. }
  233. .ruleZf {
  234. line-height: 2;
  235. margin-bottom: 22px;
  236. color: #101611;
  237. }
  238. </style>