ruoyi-ui/src/assets/images/删除2.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/assets/images/弹窗 1.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/views/travel/Info.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/views/travel/edit.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/views/travel/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-ui/src/views/travel/travelInfo.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-ui/src/assets/images/ɾ³ý2.png
ruoyi-ui/src/assets/images/µ¯´° 1.png
ruoyi-ui/src/views/travel/Info.vue
@@ -1,5 +1,6 @@ <template> <div class="app-container" style="opacity: 1;"> <h2>æ æ¸¸ç»å表</h2> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> <el-form-item label="æ¶é´" > @@ -87,23 +88,45 @@ </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> <!-- åºå·ãåºé/å°è´¦ãæ¶é´ãæ¶å ¥/æ¯åºãç¨éã使ç¨äººãç°é/èªå¨æ£åãä½é¢ãçµåæä»¶ã夿³¨ æä½--> <!-- è¿éæä¸ªfamilyListæ°ç» æ¯å¨data()ä¸å®ä¹ç --> <el-table v-loading="loading" :data="travelBase" @selection-change="handleSelectionChange" @row-click="handleCheck" :row-class-name="tableRowClassName" style="background: #FFEFF2; border-radius: 14px 14px 14px 14px;"> <el-table-column type="selection" width="55" align="center" /> <el-table-column label="åºå·" sortable type="index" :index="(queryParams.pageNum-1)*queryParams.pageSize+1" width="120"/> <el-table-column label="æ¶é´" prop="address" sortable width="100" /> <el-table-column label="æ¶é´" prop="happenTime" sortable width="100" align="center"> <template slot-scope="scope">{{scope.row.happenTime? scope.row.happenTime: 'ââââ'}}</template> </el-table-column> <el-table-column label="å°ç¹" prop="address" sortable width="100" /> <el-table-column label="人ç©" prop="people" sortable width="100" /> <el-table-column label="æ é¢" prop="title" sortable width="100" /> <el-table-column label="æ æ" prop="travel_period" sortable width="100" /> <el-table-column label="æ æ" prop="travelPeriod" sortable width="100" /> <el-table-column label="æè¯æ 游" prop="certificate" sortable width="100" /> <el-table-column label="è´¹ç¨" prop="total_price" sortable width="100" /> <el-table-column label="å ¬è´¹/èªè´¹" prop="self" sortable width="100" /> <el-table-column label="çµåæä»¶" prop="remark" sortable width="100" /> <el-table-column label="è´¹ç¨" prop="totalPrice" sortable width="100" /> <el-table-column label="å ¬è´¹/èªè´¹" prop="self" sortable width="100" > <template slot-scope="scope">{{scope.row.self==0?'å ¬è´¹':'èªè´¹'}}</template> </el-table-column> <el-table-column label="çµåæä»¶" prop="url" width="160" > <template slot-scope="scope" > <img class="el-upload-list__item-thumbnail" src="../../assets/images/deviceLis.png" alt="" style="width: 35px; height: 35px;" fit="cover" v-if="scope.row.url !== ','" > <img class="el-upload-list__item-thumbnail" src="../../assets/images/deviceA.png" alt="" style="width: 35px; height: 35px;" fit="cover" v-if="scope.row.url === ','" > </template> </el-table-column> <el-table-column label="夿³¨" prop="remark" sortable width="100" /> @@ -123,9 +146,6 @@ @click="handleDelete(scope.row)" v-hasPermi="['system:role:remove']" >å é¤</el-button> <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['familymodel:economy:info']"> <el-button size="mini" type="text" icon="el-icon-d-arrow-right" @click="handleCheck(scope.row)">æ¥ç详æ </el-button> </el-dropdown> </template> </el-table-column> @@ -578,7 +598,7 @@ /** æ¥ç详ç»ä¿¡æ¯ */ handleCheck(row){ const id = row.id; this.$router.push("/familymodel/economy/economyInfo/" + id); this.$router.push("/self/travel/travelInfo/" + id); }, /** ä¿®æ¹æé®æä½ */ handleUpdate(row) { @@ -586,7 +606,7 @@ let jd = true this.$router.push({ path:"/familymodel/economy/economyInfo/" + id, path:"/self/travel/travelInfo/" + id, query:{ detail:jd } ruoyi-ui/src/views/travel/edit.vue
@@ -0,0 +1,292 @@ <template> <div class="app-container"> <div class="form-header mt"> <h4 class="dt h4">æ æ¸¸è´¹ç¨è¯¦ç»è®°å½ </h4> </div> <el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px"> <el-form-item label="å¼å§æ¶é´" prop="startTime"> <el-input v-model="formData.startTime" placeholder="请è¾å ¥æ é¢" clearable :style="{width: '100%'}" :disabled="dsb"></el-input> </el-form-item> <el-form-item label="ç»ææ¶é´" prop="endTime"> <el-input v-model="formData.endTime" placeholder="请è¾å ¥äººç©" clearable :style="{width: '100%'}" :disabled="dsb"> </el-input> </el-form-item> <el-form-item label="æ é¢" prop="title"> <el-input v-model="formData.title" placeholder="请è¾å ¥äººç©" clearable :style="{width: '100%'}" :disabled="dsb"> </el-input> </el-form-item> <el-form-item size="large"> <el-button v-if="isShow" type="primary" @click="submitForm" :disabled="dsb">ä¿®æ¹</el-button> </el-form-item> </el-form> <el-dialog :visible.sync="dialogVisible"> <img w-full :src="dialogImageUrl" style="width: 700px; height: 700px" alt="Preview Image" /> </el-dialog> </div> </template> <script> import {addRole, updateRole} from "@/api/system/role"; import {blobValidate} from "@/utils/ruoyi"; import errorCode from "@/utils/errorCode"; import {Message} from "element-ui"; import { getTravelPriceInfo,updateTravelPrice, uploadPic, download} from "@/api/travel/index"; export default { components: {}, props: [], data() { return { cdi:"æ æ¸¸è´¹ç¨ä¿¡æ¯", udi:"æ æ¸¸è´¹ç¨ä¿®æ¹", fot:[".jpg",".jif","png"], fileList:[ ], fileListOther:[ ], dsb:true, btn:false, isShow:true, travelpriceList: [], formData: { id: undefined, title: undefined, startTime:undefined, endTime:undefined, url: undefined, }, dialogImageUrl: '', dialogVisible: false, disabled: false, rules: { title: [{ required: true, message: '请è¾å ¥å¤§äºæ é¢', trigger: 'blur' }], familyId: [{ required: true, message: '请è¾å ¥å®¶åºå·', trigger: 'blur' }], people: [{ required: true, message: '请è¾å ¥äººç©', trigger: 'blur' }], address: [{ required: true, message: '请è¾å ¥å°ç¹', trigger: 'blur' }], remark: [{ // required: true, message: '请è¾å ¥å¤æ³¨', trigger: 'blur' }], }, typeOptions: [], } }, computed: {}, watch: {}, created() { const id = this.$route.params && this.$route.params.id; let jd; if(this.$route.query.detail!=undefined) { jd = this.$route.query.detail this.btn= jd this.dsb = !jd this.isShow=true document.title = "ä¿®æ¹æ è¡è´¹ç¨è¯¦ç»ä¿¡æ¯"; this.$route.meta.title = "ä¿®æ¹æ è¡è´¹ç¨è¯¦ç»ä¿¡æ¯";//å表çåç§° } else{ document.title = "æ è¡è´¹ç¨è¯¦ç»ä¿¡æ¯"; this.$route.meta.title = "æ è¡è´¹ç¨è¯¦ç»ä¿¡æ¯";//å表çåç§° this.isShow=true } let _this = this if (id) { this.loading = true; getTravelPriceInfo(id).then((response) => { this.formData = response.data; let paths = response.data.url.split(","); for(let i = 0; i < paths.length; i++) { if(paths[i]!="") { let pth = paths[i].substr(paths[i].length - 4, paths[i].length) if (_this.fot.includes(pth) === true) _this.fileList.push({name:paths[i],url: process.env.VUE_APP_BASE_TRUE_API+paths[i]}) else { // alert(paths[i]) let nms = paths[i].split("\/") let nm = nms[nms.length - 1] _this.fileListOther.push({name:nm, url: process.env.VUE_APP_BASE_TRUE_API+paths[i]}) } } } this.loading = false; }); this.getCateInfor() } }, mounted() {}, methods: { submitForm() { let ul = this.fileList.map(function (elem){ return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"") }).join(",") let uls = this.fileListOther.map(function (elem){ return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"") }).join(",") this.formData.url = ul+","+uls this.$refs['elForm'].validate(valid => { if (valid) { if (this.formData.id != undefined) { updateTravelPrice(this.formData).then(response => { this.$modal.msgSuccess("ä¿®æ¹æå"); // this.open = false; this.btn=false }); } else { this.$modal.msgSuccess("ä¿®æ¹å¤±è´¥"); } } }) }, resetForm() { this.$refs['elForm'].resetFields() }, handlePreview(file) { let formData = {'path':"/"+file.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")}; let lens = formData.path.split(".") let suffix = lens[lens.length-1] download(formData).then(async (response) => { const isLogin = await blobValidate(response); let nt = new Date().getTime() let filename = 'familyevent_'+nt+'.'+suffix const blob = new Blob([response]) saveAs(blob, filename) }) }, handleRemoveFile(file) { for(let i = 0; i < this.fileListOther.length; i++) { if(this.fileListOther[i].url==file.url) this.$delete(this.fileListOther,i); } }, handleRemove(file) { for(let i = 0; i < this.fileList.length; i++) { if(this.fileList[i].url==file.url) this.$delete(this.fileList,i); } }, handleFileCardPreview(file){ this.dialogFileUrl = file.url; const Base64 = require('js-base64').Base64 this.desurl = process.env.VUE_APP_BASE_OTHER_API+'onlinePreview?url='+encodeURIComponent(Base64.encode(this.dialogFileUrl)); myWindow=window.open(this.desurl,'','width=1200,height=800,top=150,left=300'); }, handlePictureCardPreview(file) { this.dialogImageUrl = file.url; this.dialogVisible = true; }, handleDownload(url) { var formData = {'path':"/"+url.replace(process.env.VUE_APP_BASE_TRUE_API,"")}; let lens = formData.path.split(".") let suffix = lens[lens.length-1] download(formData).then(async (response) => { const isLogin = await blobValidate(response); let nt = new Date().getTime() let filename = 'familyevent_'+nt+'.'+suffix const blob = new Blob([response]) saveAs(blob, filename) }) }, handleEdit() { this.dsb = false // this.btn = true this.isShow=false }, requestUpload(params) { var file = params.file; var formData = new FormData(); formData.append('uploadFile', file); let _this = this uploadPic(formData).then(response => { let pth = response.data.originalFilename.substr(response.data.originalFilename.length-4, response.data.originalFilename.length) if(_this.fot.includes(pth) === true) { _this.fileList.push({name:response.data.fileName, "url":response.data.url}) } else{ _this.fileListOther.push({name:response.data.fileName, url:response.data.url}) } }) }, /** å¯¼åºæé®æä½ */ handleExport() { this.download('/zfEvent/export', { ...this.queryParams }, `zfEvent_${new Date().getTime()}.xlsx`) } } } </script> <style scoped> .app-container{ background-color: #FEF7FC; } .mt { position: relative; } .dt{ display: block; } .pt{ right: 10px; top:-3px; display: block; position: absolute; } </style> ruoyi-ui/src/views/travel/index.vue
@@ -107,11 +107,12 @@ <el-table-column label="ä½å®¿" prop="stay" sortable width="100" /> <el-table-column label="交é" prop="traffic" sortable width="100" /> <el-table-column label="é¨ç¥¨" prop="entrance" sortable width="100" /> <el-table-column label="è´ç©" prop="shopping" sortable width="100" /> <el-table-column label="è´ç©" prop="shopping" sortable width="80" /> <el-table-column label="æä½" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope" v-if="scope.row.roleId !== 1"> <el-button size="mini" type="text" @@ -122,13 +123,15 @@ <el-button size="mini" type="text" icon="el-icon-delete" class="button_delete" @click="handleDelete(scope.row)" v-hasPermi="['system:role:remove']" >å é¤</el-button> > <sapn v-html="'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'"></sapn></el-button> <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['familymodel:economy:info']"> <el-button size="mini" type="text" icon="el-icon-d-arrow-right" @click="handleCheck(scope.row)">æ¥ç详æ </el-button> </el-dropdown> <el-button class="button" size="mini" type="text" @click="handleShow"> <sapn v-html="'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'"></sapn> </el-button> </template> </el-table-column> </el-table> @@ -136,36 +139,19 @@ <el-dialog :title="title" :visible.sync="openDataScope" width="1500px" append-to-body > <div style="background-color: #FEF7FC;"> <el-table v-loading="loading" :data="detailList" @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" > <el-table-column type="selection" width="55" align="center" /> <el-table-column label="åºå·" sortable type="index" :index="(queryParams.pageNum-1)*queryParams.pageSize+1" width="120"/> <el-table-column label="æ¶é´" prop="happenTime" sortable width="100" align="center"> <el-table-column type="selection" width="50" align="center" /> <el-table-column label="åºå·" sortable type="index" :index="(queryParams.pageNum-1)*queryParams.pageSize+1" width="150"/> <el-table-column label="æ¶é´" prop="happenTime" sortable width="150" align="center"> <template slot-scope="scope">{{scope.row.happenTime? scope.row.happenTime: 'ââââ'}}</template> </el-table-column> <el-table-column label="å 容" prop="content" sortable :show-overflow-tooltip="true" width="150" /> <el-table-column label="æ»éé¢" prop="totalcost" sortable :show-overflow-tooltip="true" width="150" /> <el-table-column label="é¤è´¹" prop="eat" sortable :show-overflow-tooltip="true" width="150" /> <el-table-column label="ä½å®¿" prop="stay" sortable :show-overflow-tooltip="true" width="150" /> <el-table-column label="å 容" prop="content" sortable :show-overflow-tooltip="true" width="160" /> <el-table-column label="æ»éé¢" prop="totalCost" sortable :show-overflow-tooltip="true" width="160" /> <el-table-column label="é¤è´¹" prop="eat" sortable :show-overflow-tooltip="true" width="160" /> <el-table-column label="ä½å®¿" prop="stay" sortable :show-overflow-tooltip="true" width="160" /> <el-table-column label="交é" prop="traffic" sortable :show-overflow-tooltip="true" width="150" /> <el-table-column label="é¨ç¥¨" prop="entrance" sortable :show-overflow-tooltip="true" width="150" /> <el-table-column label="è´ç©" prop="shopping" sortable :show-overflow-tooltip="true" width="150" /> <el-table-column label="æä½" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope" v-if="scope.row.roleId !== 1"> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['familymodel:property:info']" >ä¿®æ¹</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:role:remove']" >å é¤</el-button> </template> </el-table-column> </el-table> <pagination v-show="total>0" @@ -305,7 +291,7 @@ //å¨system/note/index.jsä¸å¯¼å ¥æ¥å£å½æ° --æ¥å¥½äº import {listTravelPrice,enload,delTravelPrice, addTravelPrice, uploadPic} from "@/api/travel/index"; import {listTravelPrice,enload,getTravelPriceInfo,delTravelPrice, addTravelPrice, uploadPic} from "@/api/travel/index"; export default { name: "Role", @@ -592,14 +578,15 @@ /** ä¿®æ¹æé®æä½ */ handleUpdate(row) { const id = row.id; let jd = true // let jd = true this.$router.push({ path:"/self/travel/edit/" + id, query:{ detail:jd } }); // this.$router.push({ // path:"/self/travel/edit/" + id, // query:{ // detail:jd // } // }); this.$router.push("/self/travel/edit/" + id); }, @@ -714,4 +701,13 @@ background: #FFEFF2; } .button { background: center no-repeat url('../../assets/images/å¼¹çª 1.png') ; /* margin-left: 66vw; */ } .button_delete { background: center no-repeat url('../../assets/images/å é¤2.png') ; /* margin-left: 66vw; */ } </style> ruoyi-ui/src/views/travel/travelInfo.vue
New file @@ -0,0 +1,410 @@ <template> <div class="app-container"> <div class="form-header mt"> <h4 class="dt h4">æ æ¸¸ç»å详ç»ä¿¡æ¯ </h4> </div> <el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px"> <el-form-item label="åçæ¶é´" prop="happenTime"> <el-input v-model="formData.happenTime" placeholder="请è¾å ¥åçæ¶é´" clearable :style="{width: '100%'}" :disabled="dsb"> </el-input> </el-form-item> <el-form-item label="å°ç¹" prop="address"> <el-input v-model="formData.address" placeholder="请è¾å ¥å°ç¹" clearable :style="{width: '100%'}" :disabled="dsb"> </el-input> </el-form-item> <el-form-item label="人ç©" prop="people"> <el-input v-model="formData.people" placeholder="请è¾å ¥äººç©" clearable :style="{width: '100%'}" :disabled="dsb"> </el-input> </el-form-item> <el-form-item label="æ é¢" prop="title"> <el-input v-model="formData.title" placeholder="请è¾å ¥æ é¢" clearable :style="{width: '100%'}" :disabled="dsb"></el-input> </el-form-item> <el-form-item label="æ æ" prop="travelPeriod"> <el-input v-model="formData.travelPeriod" placeholder="请è¾å ¥æ é¢" clearable :style="{width: '100%'}" :disabled="dsb"></el-input> </el-form-item> <el-form-item label="æè¯æ 游" prop="certificate"> <el-input v-model="formData.certificate" placeholder="请è¾å ¥æ é¢" clearable :style="{width: '100%'}" :disabled="dsb"></el-input> </el-form-item> <el-form-item label="è´¹ç¨" prop="totalPrice"> <el-input v-model="formData.totalPrice" placeholder="请è¾å ¥æ é¢" clearable :style="{width: '100%'}" :disabled="dsb"></el-input> </el-form-item> <el-form-item label="æ¯å¦å ¬è´¹æ 游" prop="self"> <el-select v-model="formData.self=== 1 ? 'èªè´¹':'å ¬è´¹'" placeholder="è¯·éæ©ä¿æ´/æ¶çº³" clearable :style="{width: '100%'}" :disabled="dsb" ></el-select> </el-form-item> <el-form-item label="夿³¨" prop="remark"> <el-input v-model="formData.remark" placeholder="请è¾å ¥å¤æ³¨" clearable :style="{width: '100%'}" :disabled="dsb"></el-input> </el-form-item> <h4 class="form-header">çµåæä»¶ </h4> <el-upload action="#" list-type="picture-card" multiple :http-request="requestUpload" :file-list="fileList" > <i slot="default" class="el-icon-plus"></i> <div slot="file" slot-scope="{file}"> <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" style="width: 147px; height: 147px" fit="cover" :preview-src-list="[file.url]" > <span class="el-upload-list__item-actions"> <span v-if="isShow" class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)" > <i class="el-icon-zoom-in"></i> </span> <span v-if="isShow" class="el-upload-list__item-delete" @click="handleDownload(file.url)" > <i class="el-icon-download"></i> </span> <span v-if="isShow" class="el-upload-list__item-delete" @click="handleRemove(file)" > <i class="el-icon-delete"></i> </span> </span> </div> </el-upload> <h4 class="form-header">å ¶ä»éä»¶ </h4> <el-upload action="" :file-list="fileListOther" class="upload-demo" multiple list-type="picture-card" :on-preview="handleFileCardPreview" :on-remove="handleRemove" :http-request="requestUpload" :show-file-list="true" > <i slot="default" class="el-icon-plus"></i> <div slot="file" slot-scope="{file}"> <img class="el-upload-list__item-thumbnail" src="../../assets/401_images/401.gif" alt="" style="width: 147px; height: 147px" fit="cover" > <span class="el-upload-list__item-actions"> <span v-if="isShow" class="el-upload-list__item-preview" @click="handleFileCardPreview(file)" > <i class="el-icon-zoom-in"></i> </span> <span v-if="isShow" @click="handleRemove(file)" class="el-upload-list__item-delete" > <i class="el-icon-download"></i> </span> <span v-if="isShow" class="el-upload-list__item-delete" @click="handleRemoveFile(file)" > <i class="el-icon-delete"></i> </span> </span> </div> </el-upload> <el-form-item size="large"> <el-button v-if="isShow" type="primary" @click="submitForm" :disabled="dsb">ä¿®æ¹</el-button> </el-form-item> </el-form> <el-dialog :visible.sync="dialogVisible"> <img w-full :src="dialogImageUrl" style="width: 700px; height: 700px" alt="Preview Image" /> </el-dialog> </div> </template> <script> import {addRole, updateRole} from "@/api/system/role"; import {blobValidate} from "@/utils/ruoyi"; import errorCode from "@/utils/errorCode"; import {Message} from "element-ui"; import { getTravelBaseInfo, updateTravelBase, uploadPic, download} from "@/api/travel/index"; export default { components: {}, props: [], data() { return { cdi:"å®¶åºå¤§äºè®°ä¿¡æ¯", udi:"å®¶åºå¤§äºè®°ä¿®æ¹", fot:[".jpg",".jif","png"], fileList:[ ], fileListOther:[ ], dsb:true, btn:false, isShow:true, doctorList: [], formData: { id: undefined, title: undefined, people: undefined, address: undefined, remark: undefined, url: undefined, }, dialogImageUrl: '', dialogVisible: false, disabled: false, rules: { title: [{ required: true, message: '请è¾å ¥å¤§äºæ é¢', trigger: 'blur' }], familyId: [{ required: true, message: '请è¾å ¥å®¶åºå·', trigger: 'blur' }], people: [{ required: true, message: '请è¾å ¥äººç©', trigger: 'blur' }], address: [{ required: true, message: '请è¾å ¥å°ç¹', trigger: 'blur' }], remark: [{ // required: true, message: '请è¾å ¥å¤æ³¨', trigger: 'blur' }], }, typeOptions: [], } }, computed: {}, watch: {}, created() { const id = this.$route.params && this.$route.params.id; let jd; if(this.$route.query.detail!=undefined) { jd = this.$route.query.detail this.btn= jd this.dsb = !jd this.isShow=true document.title = "ä¿®æ¹æ 游ç»å详ç»ä¿¡æ¯"; this.$route.meta.title = "ä¿®æ¹æ 游ç»å详ç»ä¿¡æ¯";//å表çåç§° } else{ document.title = "æ æ¸¸ç»å详ç»ä¿¡æ¯"; this.$route.meta.title = "æ æ¸¸ç»å详ç»ä¿¡æ¯";//å表çåç§° this.isShow=true } let _this = this if (id) { this.loading = true; getTravelBaseInfo(id).then((response) => { this.formData = response.data; let paths = response.data.url.split(","); for(let i = 0; i < paths.length; i++) { if(paths[i]!="") { let pth = paths[i].substr(paths[i].length - 4, paths[i].length) if (_this.fot.includes(pth) === true) _this.fileList.push({name:paths[i],url: process.env.VUE_APP_BASE_TRUE_API+paths[i]}) else { // alert(paths[i]) let nms = paths[i].split("\/") let nm = nms[nms.length - 1] _this.fileListOther.push({name:nm, url: process.env.VUE_APP_BASE_TRUE_API+paths[i]}) } } } this.loading = false; }); this.getCateInfor() } }, mounted() {}, methods: { submitForm() { let ul = this.fileList.map(function (elem){ return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"") }).join(",") let uls = this.fileListOther.map(function (elem){ return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"") }).join(",") this.formData.url = ul+","+uls this.$refs['elForm'].validate(valid => { if (valid) { if (this.formData.id != undefined) { updateTravelBase(this.formData).then(response => { this.$modal.msgSuccess("ä¿®æ¹æå"); // this.open = false; this.btn=false }); } else { this.$modal.msgSuccess("ä¿®æ¹å¤±è´¥"); } } }) }, resetForm() { this.$refs['elForm'].resetFields() }, handlePreview(file) { let formData = {'path':"/"+file.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")}; let lens = formData.path.split(".") let suffix = lens[lens.length-1] download(formData).then(async (response) => { const isLogin = await blobValidate(response); let nt = new Date().getTime() let filename = 'familyevent_'+nt+'.'+suffix const blob = new Blob([response]) saveAs(blob, filename) }) }, handleRemoveFile(file) { for(let i = 0; i < this.fileListOther.length; i++) { if(this.fileListOther[i].url==file.url) this.$delete(this.fileListOther,i); } }, handleRemove(file) { for(let i = 0; i < this.fileList.length; i++) { if(this.fileList[i].url==file.url) this.$delete(this.fileList,i); } }, handleFileCardPreview(file){ this.dialogFileUrl = file.url; const Base64 = require('js-base64').Base64 this.desurl = process.env.VUE_APP_BASE_OTHER_API+'onlinePreview?url='+encodeURIComponent(Base64.encode(this.dialogFileUrl)); myWindow=window.open(this.desurl,'','width=1200,height=800,top=150,left=300'); }, handlePictureCardPreview(file) { this.dialogImageUrl = file.url; this.dialogVisible = true; }, handleDownload(url) { var formData = {'path':"/"+url.replace(process.env.VUE_APP_BASE_TRUE_API,"")}; let lens = formData.path.split(".") let suffix = lens[lens.length-1] download(formData).then(async (response) => { const isLogin = await blobValidate(response); let nt = new Date().getTime() let filename = 'familyevent_'+nt+'.'+suffix const blob = new Blob([response]) saveAs(blob, filename) }) }, handleEdit() { this.dsb = false // this.btn = true this.isShow=false }, requestUpload(params) { var file = params.file; var formData = new FormData(); formData.append('uploadFile', file); let _this = this uploadPic(formData).then(response => { let pth = response.data.originalFilename.substr(response.data.originalFilename.length-4, response.data.originalFilename.length) if(_this.fot.includes(pth) === true) { _this.fileList.push({name:response.data.fileName, "url":response.data.url}) } else{ _this.fileListOther.push({name:response.data.fileName, url:response.data.url}) } }) }, /** å¯¼åºæé®æä½ */ handleExport() { this.download('/zfEvent/export', { ...this.queryParams }, `zfEvent_${new Date().getTime()}.xlsx`) } } } </script> <style scoped> .app-container{ background-color: #FEF7FC; } .mt { position: relative; } .dt{ display: block; } .pt{ right: 10px; top:-3px; display: block; position: absolute; } </style>