123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- <template>
- <div class="admin-authorize-editInfo">
- <el-dialog :title="formData.titleText" v-model="formData.isShowDialog" draggable width="769px">
- <el-form :model="formData.editData"
- :rules="rules"
- ref="formRef"
- v-loading="formData.loading"
- size="default"
- label-width="80px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="文件名" prop="fileName">
- <el-input v-model="formData.editData.fileName" disabled placeholder="上传文件会自动填写文件名"></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="上传人" prop="author">
- <!-- <el-input v-model="formData.editData.author" placeholder="请输入上传人" clearable></el-input> -->
-
- <span v-if="injectedNickName">{{ injectedNickName }}</span>
- <span v-else>暂未获取到上传人昵称</span>
-
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="状态" prop="status">
- <el-select v-model="formData.editData.status" placeholder="请设置文件状态" >
- <el-option v-for="(value, key) in statusType" :key="key" :label="value[1].name" :value="Number(value[1].value)" />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="备注" prop="remark">
- <el-input v-model="formData.editData.remark" placeholder="请输入备注" rows="6" clearable type="textarea"></el-input>
- </el-form-item>
- </el-col>
- </el-row>
- <QRBookUpload v-model="formData.fileValue" ref="uploadFileRef" :file="{fileName:formData.editData.fileName}" @onUpload="onUpload"/>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="onCancel" icon="ele-CircleClose" size="default">取 消</el-button>
- <el-button type="primary" :icon="formData.editIcon" @click="onSubmit" size="default">{{formData.buttonText}}</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
- </template>
-
- <script setup lang="ts">
- import {defineAsyncComponent, reactive, ref, watch, inject, computed} from "vue";
- import {FormRules} from "element-plus";
- import { usePersonalStore } from "/@/stores/personalStore"; // 引入新的 Store
- import {useGlobalCacheStore} from "/@/stores/globalCacheStore";
- import { QRBookFileInfoRequset, QRBookTableInfo } from "/@/api/admin/productionManagement/QRBookDto";
- import { QRBookApi } from "/@/api/admin/productionManagement/qrBookApi";
- import eventBus from "/@/utils/mitt";
- import {}from"@\views\admin\personal\index.vue"
- import { log } from "console";
-
- /** 引入组件 */
- const QRBookUpload = defineAsyncComponent(() => import('./qrbook-upload.vue'))
-
- /** 获取全局缓存 */
- const globalCacheStore = useGlobalCacheStore()
- /** 获取文件状态 */
- const statusType = ref(globalCacheStore.getGlobalStore().get('qrBookFileStatus'))
-
- const personalStore = usePersonalStore();
- // 使用computed确保数据变化时能及时更新
- const injectedNickName = computed(() => personalStore.personalFormNickName);
- // 可以添加watch用于调试,观察数据变化
- watch(injectedNickName, (newValue) => {
- console.log('上传人昵称已更新:', newValue);
- });
- // 打印日志进行调试
- console.log('injectedNickName:', injectedNickName.value);
- /**数据对象 */
- const formData = reactive({
- loading: false,
- titleText:'',
- editIcon:'',
- buttonText:'',
- isShowDialog: false,
- editData:{} as QRBookTableInfo,
- fileValue: null
- })
- /**表单校验*/
- const rules = reactive<FormRules>({
- fileName: [
- { required: true, message: '请输入文件名', trigger: 'blur' },
- ]
- })
-
- /**
- * 表单对象
- */
- const formRef = ref()
-
- const openDialog = (val) => {
- formData.isShowDialog = true
- if(val){
- formData.editData = JSON.parse(JSON.stringify(val))
- formData.titleText = '更新说明书'
- formData.buttonText = '更新'
- formData.editIcon = 'ele-Refresh'
- }else {
- formData.editData = {} as QRBookTableInfo
- formData.titleText = '添加说明书'
- formData.buttonText = '添加'
- formData.editData.status = 1
- formData.editIcon = 'ele-CirclePlus'
- }
- }
-
- const onCancel = () => {
- formData.editData = {} as QRBookTableInfo
- formData.isShowDialog = false
- }
-
- /***监听弹窗关 闭表单验证*/
- watch(() => formData.isShowDialog,(newVal) => {
- if(newVal) formRef.value?.resetFields()
- })
-
- const onUpload = (val) => {
- formData.editData.guid = val.guid
- formData.editData.fileName = val.fileName + val.extension
- formData.editData.extension = val.extension
- }
-
- const uploadFileRef = ref(null);
-
- const onSubmit = () => {
- formRef.value.validate(async (valid: boolean) =>{
- if(!valid) return
-
- formData.loading = true
- let request = JSON.parse(JSON.stringify(formData.editData))
- let res = await new QRBookApi().uploadFile(request as QRBookFileInfoRequset)
- if(res?.data?.value) eventBus.emit('refreshView')
- formData.editData = {} as QRBookTableInfo
- formData.isShowDialog = false
- formData.loading = false
- })
- }
-
- defineExpose({
- openDialog,
- })
- </script>
- <style scoped lang="scss">
-
- </style>
-
|