UpdateLang.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <template>
  2. <el-dialog
  3. :visible="visible"
  4. width="610px"
  5. :close-on-click-modal="false"
  6. :append-to-body="true"
  7. title="增加语言"
  8. @close="dialogLangClose"
  9. >
  10. <el-transfer
  11. v-model="langs"
  12. :titles="['可选', '已选择']"
  13. :props="{ key: 'code', label: 'name' }"
  14. :data="langList"
  15. />
  16. <div slot="footer">
  17. <el-button @click="dialogLangClose">取消</el-button>
  18. <el-button type="primary" @click="updateLangs">确定</el-button>
  19. </div>
  20. </el-dialog>
  21. </template>
  22. <script>
  23. import { langList } from '@/views/book/courseware/data/common';
  24. export default {
  25. name: 'UpdateLang',
  26. props: {
  27. visible: {
  28. type: Boolean,
  29. required: true,
  30. },
  31. selectedLangs: {
  32. type: Array,
  33. default: () => [],
  34. },
  35. },
  36. data() {
  37. return {
  38. langList: langList.map((item) => ({ ...item, disabled: false })),
  39. langs: [],
  40. };
  41. },
  42. watch: {
  43. selectedLangs: {
  44. handler(val) {
  45. if (!val || !Array.isArray(val)) return;
  46. this.langs = val.map((item) => item.code);
  47. },
  48. immediate: true,
  49. },
  50. },
  51. methods: {
  52. dialogLangClose() {
  53. this.$emit('update:visible', false);
  54. },
  55. updateLangs() {
  56. this.$emit('update-langs', this.langs);
  57. this.dialogLangClose();
  58. },
  59. },
  60. };
  61. </script>
  62. <style lang="scss" scoped></style>