delListModal.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @cancel="resetFields"
  5. @register="register"
  6. title="删除员工"
  7. @ok="handleOk"
  8. >
  9. <div class="pt-3px pr-3px">
  10. <BasicForm @register="registerForm">
  11. <template #tips>
  12. <div>请将员工的数据迁移后,再删除员工(删除员工后,权益将进行解绑)</div>
  13. </template>
  14. </BasicForm>
  15. </div>
  16. </BasicModal>
  17. </template>
  18. <script lang="ts">
  19. import { defineComponent, ref, unref } from 'vue';
  20. import { delApi } from '/@/api/staff/list';
  21. import { BasicModal, useModalInner } from '/@/components/Modal';
  22. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  23. import { useI18n } from '/@/hooks/web/useI18n';
  24. import { useMessage } from '/@/hooks/web/useMessage';
  25. const { t } = useI18n();
  26. export default defineComponent({
  27. components: { BasicModal, BasicForm },
  28. props: {
  29. userData: { type: Object },
  30. },
  31. emits: ['reload'],
  32. setup(_, context) {
  33. const modelRef = ref({
  34. toUserId: 0,
  35. userId: 0,
  36. });
  37. const options = ref([]);
  38. const { createMessage } = useMessage();
  39. const schemas: FormSchema[] = [
  40. {
  41. field: 'toUserPhone',
  42. component: 'Select',
  43. label: '选择迁移的员工',
  44. required: true,
  45. itemProps: {
  46. validateTrigger: 'blur',
  47. },
  48. colProps: {
  49. span: 22,
  50. },
  51. componentProps: {
  52. options: options.value,
  53. },
  54. },
  55. {
  56. field: 'tips',
  57. component: 'Select',
  58. slot: 'tips',
  59. label: ' ',
  60. },
  61. ];
  62. const [registerForm, { validate, resetFields, updateSchema }] = useForm({
  63. labelWidth: 120,
  64. schemas,
  65. showActionButtonGroup: false,
  66. actionColOptions: {
  67. span: 24,
  68. },
  69. });
  70. const [register, { closeModal }] = useModalInner((data) => {
  71. data && onDataReceive(data);
  72. });
  73. function onDataReceive(data) {
  74. data = unref(data);
  75. modelRef.value.userId = data.id;
  76. console.log('onDataReceive', data);
  77. // 方式1;
  78. if (data.option) {
  79. options.value = data.option.map((ele) => {
  80. ele.label = ele.nickName;
  81. ele.value = ele.phone;
  82. return ele;
  83. });
  84. updateSchema({
  85. field: 'toUserPhone',
  86. component: 'Select',
  87. label: '选择迁移的员工',
  88. required: true,
  89. itemProps: {
  90. validateTrigger: 'blur',
  91. },
  92. colProps: {
  93. span: 22,
  94. },
  95. componentProps: {
  96. options: data.option,
  97. onChange: function (value, item) {
  98. modelRef.value.toUserId = item.id;
  99. console.log('onChange', value, item);
  100. },
  101. },
  102. });
  103. }
  104. }
  105. async function handleOk() {
  106. let data = await validate();
  107. let res = await delApi({
  108. toUserPhone: data.toUserPhone,
  109. userId: modelRef.value.userId,
  110. toUserId: modelRef.value.toUserId,
  111. });
  112. context && context.emit('reload', res);
  113. createMessage.success(t('common.optSuccess'));
  114. closeModal();
  115. resetFields();
  116. }
  117. return { options, register, registerForm, model: modelRef, handleOk, resetFields };
  118. },
  119. });
  120. </script>