qrbook-edit.vue 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <template>
  2. <div class="admin-authorize-editInfo">
  3. <el-dialog :title="formData.titleText" v-model="formData.isShowDialog" draggable width="769px">
  4. <el-form :model="formData.editData"
  5. :rules="rules"
  6. ref="formRef"
  7. v-loading="formData.loading"
  8. size="default"
  9. label-width="80px">
  10. <el-row :gutter="35">
  11. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
  12. <el-form-item label="文件名" prop="fileName">
  13. <el-input v-model="formData.editData.fileName" disabled placeholder="上传文件会自动填写文件名"></el-input>
  14. </el-form-item>
  15. </el-col>
  16. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
  17. <el-form-item label="上传人" prop="author">
  18. <!-- <el-input v-model="formData.editData.author" placeholder="请输入上传人" clearable></el-input> -->
  19. <span v-if="injectedNickName">{{ injectedNickName }}</span>
  20. <span v-else>暂未获取到上传人昵称</span>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
  24. <el-form-item label="状态" prop="status">
  25. <el-select v-model="formData.editData.status" placeholder="请设置文件状态" >
  26. <el-option v-for="(value, key) in statusType" :key="key" :label="value[1].name" :value="Number(value[1].value)" />
  27. </el-select>
  28. </el-form-item>
  29. </el-col>
  30. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
  31. <el-form-item label="备注" prop="remark">
  32. <el-input v-model="formData.editData.remark" placeholder="请输入备注" rows="6" clearable type="textarea"></el-input>
  33. </el-form-item>
  34. </el-col>
  35. </el-row>
  36. <QRBookUpload v-model="formData.fileValue" ref="uploadFileRef" :file="{fileName:formData.editData.fileName}" @onUpload="onUpload"/>
  37. </el-form>
  38. <template #footer>
  39. <span class="dialog-footer">
  40. <el-button @click="onCancel" icon="ele-CircleClose" size="default">取 消</el-button>
  41. <el-button type="primary" :icon="formData.editIcon" @click="onSubmit" size="default">{{formData.buttonText}}</el-button>
  42. </span>
  43. </template>
  44. </el-dialog>
  45. </div>
  46. </template>
  47. <script setup lang="ts">
  48. import {defineAsyncComponent, reactive, ref, watch, inject, computed} from "vue";
  49. import {FormRules} from "element-plus";
  50. import { usePersonalStore } from "/@/stores/personalStore"; // 引入新的 Store
  51. import {useGlobalCacheStore} from "/@/stores/globalCacheStore";
  52. import { QRBookFileInfoRequset, QRBookTableInfo } from "/@/api/admin/productionManagement/QRBookDto";
  53. import { QRBookApi } from "/@/api/admin/productionManagement/qrBookApi";
  54. import eventBus from "/@/utils/mitt";
  55. import {}from"@\views\admin\personal\index.vue"
  56. import { log } from "console";
  57. /** 引入组件 */
  58. const QRBookUpload = defineAsyncComponent(() => import('./qrbook-upload.vue'))
  59. /** 获取全局缓存 */
  60. const globalCacheStore = useGlobalCacheStore()
  61. /** 获取文件状态 */
  62. const statusType = ref(globalCacheStore.getGlobalStore().get('qrBookFileStatus'))
  63. const personalStore = usePersonalStore();
  64. // 使用computed确保数据变化时能及时更新
  65. const injectedNickName = computed(() => personalStore.personalFormNickName);
  66. // 可以添加watch用于调试,观察数据变化
  67. watch(injectedNickName, (newValue) => {
  68. console.log('上传人昵称已更新:', newValue);
  69. });
  70. // 打印日志进行调试
  71. console.log('injectedNickName:', injectedNickName.value);
  72. /**数据对象 */
  73. const formData = reactive({
  74. loading: false,
  75. titleText:'',
  76. editIcon:'',
  77. buttonText:'',
  78. isShowDialog: false,
  79. editData:{} as QRBookTableInfo,
  80. fileValue: null
  81. })
  82. /**表单校验*/
  83. const rules = reactive<FormRules>({
  84. fileName: [
  85. { required: true, message: '请输入文件名', trigger: 'blur' },
  86. ]
  87. })
  88. /**
  89. * 表单对象
  90. */
  91. const formRef = ref()
  92. const openDialog = (val) => {
  93. formData.isShowDialog = true
  94. if(val){
  95. formData.editData = JSON.parse(JSON.stringify(val))
  96. formData.titleText = '更新说明书'
  97. formData.buttonText = '更新'
  98. formData.editIcon = 'ele-Refresh'
  99. }else {
  100. formData.editData = {} as QRBookTableInfo
  101. formData.titleText = '添加说明书'
  102. formData.buttonText = '添加'
  103. formData.editData.status = 1
  104. formData.editIcon = 'ele-CirclePlus'
  105. }
  106. }
  107. const onCancel = () => {
  108. formData.editData = {} as QRBookTableInfo
  109. formData.isShowDialog = false
  110. }
  111. /***监听弹窗关 闭表单验证*/
  112. watch(() => formData.isShowDialog,(newVal) => {
  113. if(newVal) formRef.value?.resetFields()
  114. })
  115. const onUpload = (val) => {
  116. formData.editData.guid = val.guid
  117. formData.editData.fileName = val.fileName + val.extension
  118. formData.editData.extension = val.extension
  119. }
  120. const uploadFileRef = ref(null);
  121. const onSubmit = () => {
  122. formRef.value.validate(async (valid: boolean) =>{
  123. if(!valid) return
  124. formData.loading = true
  125. let request = JSON.parse(JSON.stringify(formData.editData))
  126. let res = await new QRBookApi().uploadFile(request as QRBookFileInfoRequset)
  127. if(res?.data?.value) eventBus.emit('refreshView')
  128. formData.editData = {} as QRBookTableInfo
  129. formData.isShowDialog = false
  130. formData.loading = false
  131. })
  132. }
  133. defineExpose({
  134. openDialog,
  135. })
  136. </script>
  137. <style scoped lang="scss">
  138. </style>