LockActionItem.tsx 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import './LockActionItem.less';
  2. import { defineComponent } from 'vue';
  3. import { BasicModal, useModalInner } from '/@/components/Modal/index';
  4. import Button from '/@/components/Button/index.vue';
  5. import { BasicForm, useForm } from '/@/components/Form/index';
  6. import headerImg from '/@/assets/images/header.jpg';
  7. import { appStore } from '/@/store/modules/app';
  8. import { userStore } from '/@/store/modules/user';
  9. const prefixCls = 'lock-modal';
  10. export default defineComponent({
  11. name: 'LockModal',
  12. setup(_, { attrs }) {
  13. const [register, { closeModal }] = useModalInner();
  14. const [registerForm, { validateFields, resetFields }] = useForm({
  15. showActionButtonGroup: false,
  16. schemas: [
  17. {
  18. field: 'password',
  19. label: '锁屏密码',
  20. component: 'InputPassword',
  21. required: true,
  22. },
  23. ],
  24. });
  25. async function lock(valid = true) {
  26. let password: string | undefined = '';
  27. try {
  28. if (!valid) {
  29. password = undefined;
  30. } else {
  31. const values = (await validateFields()) as any;
  32. password = values.password;
  33. }
  34. closeModal();
  35. appStore.commitLockInfoState({
  36. isLock: true,
  37. pwd: password,
  38. });
  39. await resetFields();
  40. } catch (error) {}
  41. }
  42. return () => (
  43. <BasicModal footer={null} title="锁定屏幕" {...attrs} class={prefixCls} onRegister={register}>
  44. {() => (
  45. <div class={`${prefixCls}__entry`}>
  46. <div class={`${prefixCls}__header`}>
  47. <img src={headerImg} class={`${prefixCls}__header-img`} />
  48. <p class={`${prefixCls}__header-name`}>{userStore.getUserInfoState.realName}</p>
  49. </div>
  50. <BasicForm onRegister={registerForm} layout="vertical" />
  51. <div class={`${prefixCls}__footer`}>
  52. <Button type="primary" block class="mt-2" onClick={lock}>
  53. {() => '锁屏'}
  54. </Button>
  55. <Button block class="mt-2" onClick={lock.bind(null, false)}>
  56. {() => ' 不设置密码锁屏'}
  57. </Button>
  58. </div>
  59. </div>
  60. )}
  61. </BasicModal>
  62. );
  63. },
  64. });