| | |
| | | <template> |
| | | <div class="app-container" style="opacity: 1;"> |
| | | <h2>旅游经历表</h2> |
| | | <h2>每日行程</h2> |
| | | <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> |
| | | |
| | | <el-form-item label="时间" > |
| | |
| | | v-hasPermi="['family:note:export']" |
| | | >导入模板下载</el-button> |
| | | </el-col> |
| | | <el-col :span="1.2"> |
| | | <el-col :span="1.5"> |
| | | <el-upload |
| | | action="" |
| | | class="upload-demo" |
| | |
| | | > |
| | | <el-button size="mini" type="primary" |
| | | plain |
| | | icon="el-icon-plus" >导入</el-button> |
| | | icon="el-icon-top">导入</el-button> |
| | | |
| | | </el-upload> |
| | | </el-col> |
| | |
| | | </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="travelPeriod" sortable width="100" /> |
| | | <el-table-column label="持证旅游" prop="certificate" sortable width="100" /> |
| | | <el-table-column label="费用" prop="totalPrice" sortable width="100" /> |
| | | <el-table-column label="公费/自费" prop="self" sortable width="100" > |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <el-dialog :title="title" :visible.sync="openDataScope" width="1000px" append-to-body> |
| | | |
| | | <el-table v-loading="loading" :data="travelpriceList" @selection-change="handleSelectionChange" @row-click="handleCheck" :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"> |
| | | <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="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" |
| | | :total="total" |
| | | :page.sync="queryParams.pageNum" |
| | | :limit.sync="queryParams.pageSize" |
| | | @pagination="getList" |
| | | |
| | | /> |
| | | |
| | | |
| | | </el-dialog> |
| | | |
| | | <pagination |
| | | v-show="total>0" |
| | | :total="total" |
| | |
| | | |
| | | <!-- 添加或修改资产信息配置对话框 --> |
| | | |
| | | <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body> |
| | | <el-dialog :title="title" :visible.sync="open" width="60%" append-to-body> |
| | | <el-form ref="elForm" :model="formDat" :rules="rules" size="medium" label-width="100px"> |
| | | <el-form-item label="台账" prop="type"> |
| | | <el-input v-model="formDat.type" placeholder="请输入内容" clearable :style="{width: '100%'}" ></el-input> |
| | | <h4 class="form-header">行程内容 </h4> |
| | | <el-form-item label="标题" prop="title"> |
| | | <el-input v-model="formDat.title" placeholder="请输入标题" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="时间" prop="happenTime"> |
| | | <el-date-picker |
| | | <el-input |
| | | v-model='formDat.happenTime' |
| | | type='date' |
| | | placeholder='选择日期' |
| | | ></el-date-picker> |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="收入/支出" prop="price"> |
| | | <el-select v-model="formDat.price" placeholder="请选择收入/支出" clearable :style="{width: '100%'}" > |
| | | <el-form-item label="地点" prop="address"> |
| | | <el-input v-model="formDat.address" placeholder="请输入地点" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="人物" prop="people"> |
| | | <el-input v-model="formDat.people" placeholder="请输入人物" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="旅期" prop="travelPeriod"> |
| | | <el-input v-model="formDat.travelPeriod" placeholder="请输入旅期" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="持证旅游" prop="certificate"> |
| | | <el-select v-model="formDat.certificate" placeholder="请选择证件" clearable :style="{width: '80%'}" > |
| | | <el-option label="居民身份证" value="居民身份证"></el-option> |
| | | <el-option label="临时身份证" value="临时身份证"></el-option> |
| | | <el-option label="户口本" value="户口本"></el-option> |
| | | <el-option label="护照" value="护照"></el-option> |
| | | <el-option label="学生证" value="学生证"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="费用" prop="totalPrice"> |
| | | <el-input v-model="formDat.totalPrice" placeholder="请输入总共费用" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> --> |
| | | <el-form-item label="公费/自费" prop="self"> |
| | | <el-select v-model="formDat.self" placeholder="请选择自费/公费" clearable :style="{width: '100%'}" > |
| | | <el-option v-for="(item, index) in typeOptions" :key="index" :label="item.label" :value="item.value" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="金额" prop="balance"> |
| | | <el-input v-model="formDat.balance" placeholder="请输入余额" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="用途" prop="useFor"> |
| | | <el-input v-model="formDat.useFor" placeholder="请输入用途" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="使用人" prop="usePeople"> |
| | | <el-input v-model="formDat.usePeople" placeholder="请输入使用人" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="支付方式" prop="kind"> |
| | | <el-input v-model="formDat.kind" placeholder="请输入支付方式" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="备注" prop="remark"> |
| | | <el-input v-model="formDat.remark" placeholder="请输入备注" clearable :style="{width: '100%'}" ></el-input> |
| | | </el-form-item> |
| | | |
| | | |
| | | <h4 class="form-header">相关图片 </h4> |
| | | <el-upload |
| | |
| | | class="upload-demo" |
| | | multiple |
| | | |
| | | :on-remove="handleRemoveFile" |
| | | :on-remove="handleRemove" |
| | | :http-request="requestUpload" |
| | | :show-file-list="true" |
| | | > |
| | |
| | | </div> |
| | | </template> |
| | | </el-upload> |
| | | |
| | | </el-form> |
| | | <el-form ref="elForm1" :model="formDat1" :rules="rules1" size="medium" label-width="100px"> |
| | | <h4 class="form-header">费用明细 </h4> |
| | | <el-form-item label="内容" prop="content"> |
| | | <el-input v-model="formDat1.content" placeholder="请输入内容" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="住宿费用" prop="stay"> |
| | | <el-input v-model="formDat1.stay" placeholder="请输入住宿费用" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="交通费用" prop="traffic"> |
| | | <el-input v-model="formDat1.traffic" placeholder="请输入交通费用" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="餐费" prop="eat"> |
| | | <el-input v-model="formDat1.eat" placeholder="请输入餐费用" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="购物费用" prop="shopping"> |
| | | <el-input v-model="formDat1.shopping" placeholder="请输入购物费用" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="门票费用" prop="entrance"> |
| | | <el-input v-model="formDat1.entrance" placeholder="请输入门票费用" clearable :style="{width: '100%'}" > |
| | | </el-input> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | | <h4 class="form-header"> </h4> |
| | |
| | | |
| | | |
| | | //在system/note/index.js中导入接口函数 --接好了 |
| | | import {listTravelPrice,listTravelBase,enload,getTravelPriceInfo,delTravelPrice, addTravelPrice, uploadPic} from "@/api/travel/index"; |
| | | import {addTravelBase,listTravelPrice,getTravelBaseInfo,listTravelBase,enload,delTravelBase, uploadPic,updateTravelPrice} from "@/api/travel/index"; |
| | | |
| | | export default { |
| | | name: "Role", |
| | |
| | | total: 0, |
| | | // 家大事记表格数据 |
| | | travelBase: [], |
| | | detailList:[], |
| | | // 弹出层标题 |
| | | title: "", |
| | | // 是否显示弹出层 |
| | |
| | | dsb:true, |
| | | btn:false, |
| | | formDat: { |
| | | type: undefined, |
| | | createTime: undefined, |
| | | useFor: undefined, |
| | | usePeople: undefined, |
| | | kind:undefined, |
| | | people: undefined, |
| | | address: undefined, |
| | | happenTime: undefined, |
| | | title: undefined, |
| | | travelPeriod:undefined, |
| | | certificate: undefined, |
| | | totalPrice: undefined, |
| | | self: undefined, |
| | | remark: undefined, |
| | | url: undefined, |
| | | }, |
| | | formDat1: { |
| | | eat: undefined, |
| | | stay: undefined, |
| | | traffic: undefined, |
| | | entrance: undefined, |
| | | shopping:undefined, |
| | | content: undefined, |
| | | }, |
| | | formDat2: { |
| | | id: undefined, |
| | | detailList: undefined, |
| | | }, |
| | | // 菜单列表 |
| | | menuOptions: [], |
| | |
| | | }, |
| | | // 表单校验 |
| | | rules: { |
| | | usePeople: [{ |
| | | people: [{ |
| | | required: true, |
| | | message: '请输入使用人', |
| | | message: '请输入人物', |
| | | trigger: 'blur' |
| | | }], |
| | | |
| | | useFor: [{ |
| | | address: [{ |
| | | required: true, |
| | | message: '请输入用途', |
| | | message: '请输入地点', |
| | | trigger: 'blur' |
| | | }], |
| | | type: [{ |
| | | title: [{ |
| | | required: true, |
| | | message: '请输入台账内容', |
| | | message: '请输入标题', |
| | | trigger: 'blur' |
| | | }], |
| | | balance: [{ |
| | | travelPeriod: [{ |
| | | required: true, |
| | | message: '请输入金额', |
| | | message: '请输入旅期', |
| | | trigger: 'blur' |
| | | }], |
| | | kind: [{ |
| | | // required: true, |
| | | message: '请输入支付方式', |
| | | certificate: [{ |
| | | required: true, |
| | | message: '请输入证件', |
| | | trigger: 'blur' |
| | | }], |
| | | createTime: [{ |
| | | happenTime: [{ |
| | | required: true, |
| | | message: '请选择日期选择', |
| | | trigger: 'change' |
| | | }], |
| | | price: [{ |
| | | totalPrice: [{ |
| | | required: true, |
| | | message: '请选择事项内容', |
| | | message: '请选择费用', |
| | | trigger: 'blur' |
| | | }], |
| | | self: [{ |
| | | required: true, |
| | | message: '请选择公费/自费', |
| | | trigger: 'change' |
| | | }], |
| | | |
| | | }, |
| | | rules1: { |
| | | stay: [{ |
| | | required: true, |
| | | message: '请输入人物', |
| | | trigger: 'blur' |
| | | }], |
| | | |
| | | content: [{ |
| | | required: true, |
| | | message: '请输入地点', |
| | | trigger: 'blur' |
| | | }], |
| | | traffic: [{ |
| | | required: true, |
| | | message: '请输入标题', |
| | | trigger: 'blur' |
| | | }], |
| | | entrance: [{ |
| | | required: true, |
| | | message: '请输入旅期', |
| | | trigger: 'blur' |
| | | }], |
| | | eat: [{ |
| | | required: true, |
| | | message: '请输入证件', |
| | | trigger: 'blur' |
| | | }], |
| | | shopping: [{ |
| | | required: true, |
| | | message: '请选择日期选择', |
| | | trigger: 'change' |
| | | }], |
| | | |
| | | }, |
| | | typeOptions: [ |
| | | { |
| | | value: '收入', |
| | | label: '收入', |
| | | value: '0', |
| | | label: '自费', |
| | | }, |
| | | { |
| | | value: '支出', |
| | | label: '支出', |
| | | value: '1', |
| | | label: '公费', |
| | | }], |
| | | typeOptions1: [ |
| | | { |
| | |
| | | }; |
| | | }, |
| | | created() { |
| | | |
| | | |
| | | const id = this.$route.params && this.$route.params.id; |
| | | this.getList1(); |
| | | this.getList(id); |
| | | |
| | | }, |
| | |
| | | |
| | | getList(fid) { |
| | | this.loading = true; |
| | | this.queryParams.fid = fid |
| | | this.queryParams.happenStartTime = this.dateRange.length > 0 && this.dateRange[0] |
| | | this.queryParams.happenEndTime = this.dateRange.length > 0 && this.dateRange[1] |
| | | this.queryParams.fid = fid |
| | | console.log(this.queryParams) |
| | | |
| | | // console.log(this.queryParams) |
| | | // listProperty(this.addDateRange(this.queryParams, this.dateRange)).then(response => { |
| | | listTravelBase(this.queryParams).then(response => { |
| | | // alert(123) |
| | | // console.log(response.data) |
| | | this.travelBase = response.data.data; |
| | | console.log(this.travelBase) |
| | | // console.log(this.travelBase) |
| | | this.total = response.data.total; |
| | | this.loading = false; |
| | | } |
| | | ); |
| | | |
| | | }, |
| | | getList1() { |
| | | this.loading = true; |
| | | const id = this.$route.params && this.$route.params.id; |
| | | return new Promise((resolve, reject) => { |
| | | listTravelPrice(this.queryParams).then(response => { |
| | | // console.log(response.data.data); |
| | | const filteredData = response.data.data.find(item => item.id === id); |
| | | this.total = response.data.total; |
| | | this.loading = false; |
| | | const detailList = filteredData.detailList; |
| | | // console.log(detailList); |
| | | resolve(detailList); |
| | | }).catch(error => { |
| | | console.error("请求错误:", error); |
| | | reject(error); |
| | | }); |
| | | }); |
| | | }, |
| | | handleRemove(file) { |
| | | for(let i = 0; i < this.fileList.length; i++) |
| | | { |
| | | if(this.fileList[i].url==file.url) |
| | | this.$delete(this.fileList,i); |
| | | } |
| | | }, |
| | | handleRemoveFile(file) { |
| | | for(let i = 0; i < this.fileListOther.length; i++) |
| | | { |
| | | if(this.fileListOther[i].url==file.url) |
| | |
| | | handleAdd() { |
| | | this.reset(); |
| | | this.open = true; |
| | | this.title = "添加家庭收支台账"; |
| | | this.title = "添加每日行程内容"; |
| | | }, |
| | | |
| | | |
| | |
| | | this.dialogVisible = true; |
| | | }, |
| | | /** 提交按钮(数据权限) */ |
| | | submitDataScope: function() { |
| | | submitDataScope: async function() { |
| | | this.formDat2.detailList = []; |
| | | console.log("调试"); |
| | | console.log(this.formDat2.detailList); |
| | | await this.getList1().then(detailList => { |
| | | this.formDat2.detailList = detailList; |
| | | console.log(this.formDat2.detailList); |
| | | }); |
| | | |
| | | let ul = this.fileList.map(function (elem){ |
| | | return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"") |
| | |
| | | return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"") |
| | | }).join(",") |
| | | this.formDat.url = ul+","+uls |
| | | const fid = this.$route.params && this.$route.params.id; |
| | | this.formDat.feeId = this.$route.params && this.$route.params.id; |
| | | this.formDat1.happenTime = this.formDat.happenTime; |
| | | this.formDat2.detailList.push(this.formDat1); |
| | | this.formDat2.id = this.$route.params && this.$route.params.id; |
| | | const stay = parseFloat(this.formDat1.stay); |
| | | const traffic = parseFloat(this.formDat1.traffic); |
| | | const eat = parseFloat(this.formDat1.eat); |
| | | const shopping = parseFloat(this.formDat1.shopping); |
| | | const entrance = parseFloat(this.formDat1.entrance); |
| | | |
| | | const totalPrice = stay + traffic + eat + shopping + entrance; |
| | | console.log("总费用"); |
| | | console.log(totalPrice); |
| | | this.formDat.totalPrice=totalPrice; |
| | | console.log("111"); |
| | | console.log(this.formDat2) |
| | | |
| | | this.$refs["elForm"].validate(valid => { |
| | | if (valid) { |
| | | |
| | | addEconomy(this.formDat).then(response => { |
| | | addTravelBase(this.formDat).then(response => { |
| | | this.$modal.msgSuccess("新增成功"); |
| | | this.open = false; |
| | | this.getList(); |
| | | this.getList(fid); |
| | | }); |
| | | |
| | | } |
| | | }); |
| | | // 清空formDat对象的数据 |
| | | Object.keys(this.formDat).forEach(key => { |
| | | this.formDat[key] = ''; |
| | | this.$refs["elForm1"].validate(valid => { |
| | | if (valid) { |
| | | |
| | | |
| | | updateTravelPrice(this.formDat2).then(response => { |
| | | this.$modal.msgSuccess("费用新增成功"); |
| | | this.open = false; |
| | | }); |
| | | |
| | | } |
| | | }); |
| | | this.handleRemove(this.fileList[0]); |
| | | this.handleRemoveFile(this.fileListOther[0]); |
| | | }, |
| | | requestUpload(params) |
| | | { |
| | |
| | | |
| | | }, |
| | | /** 删除按钮操作 */ |
| | | handleDelete(row) { |
| | | async handleDelete(row) { |
| | | const Ids = row.id || this.ids; |
| | | this.$modal.confirm('是否确认删除序号为"' + Ids + '"的数据项?').then(function() { |
| | | return delEconomy(Ids); |
| | | }).then(() => { |
| | | this.getList(); |
| | | const id = row.id || this.ids; |
| | | |
| | | try { |
| | | const response = await getTravelBaseInfo(id); |
| | | const baseDate = response.data.totalPrice; |
| | | console.log("112"); |
| | | console.log(baseDate); |
| | | |
| | | const detailList = await this.getList1(); |
| | | this.detailList = detailList; |
| | | console.log(this.detailList); |
| | | |
| | | const targetTotalCost = baseDate; // 目标 totalCost 值 |
| | | let targetId = null; // 目标数据的 id |
| | | |
| | | for (const detail of this.detailList) { |
| | | if (detail.totalCost === targetTotalCost) { |
| | | targetId = detail.id; |
| | | console.log(targetId); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | const detailList2 = this.detailList.filter((detail) => detail.id !== targetId); |
| | | console.log(detailList2); |
| | | const formDat3 = {} |
| | | formDat3.detailList = detailList2 |
| | | const id2 = this.$route.params && this.$route.params.id; |
| | | console.log(id2); |
| | | formDat3.id = id2; |
| | | console.log(formDat3); |
| | | await updateTravelPrice(formDat3); |
| | | this.open = false; |
| | | |
| | | await delTravelBase(Ids); |
| | | const fid = this.queryParams.fid |
| | | this.getList(fid); |
| | | this.$modal.msgSuccess("删除成功"); |
| | | }).catch(() => {}); |
| | | } catch (error) { |
| | | console.error(error); |
| | | } |
| | | }, |
| | | // async handleDelete(row) { |
| | | // const Ids = row.id || this.ids; |
| | | // const id = row.id ||this.ids |
| | | // await getTravelBaseInfo(id).then(async (response) => { |
| | | // const baseDate = response.data.totalPrice; |
| | | // console.log("112"); |
| | | // console.log(baseDate); |
| | | |
| | | // // 获取详细列表 |
| | | // await this.getList1().then((detailList) => { |
| | | // this.detailList = detailList; |
| | | // console.log(this.detailList); |
| | | |
| | | // const targetTotalCost = baseDate; // 目标 totalCost 值 |
| | | // let targetId = null; // 目标数据的 id |
| | | |
| | | // for (const detail of this.detailList) { |
| | | // if (detail.totalCost === targetTotalCost) { |
| | | // targetId = detail.id; |
| | | // console.log(targetId); |
| | | // break; |
| | | // } |
| | | // } |
| | | // const detailList2 = [...this.detailList].filter((detail) => { |
| | | // return detail.id !== targetId; |
| | | // }); |
| | | // console.log(detailList2); |
| | | // const id2 = this.$route.params && this.$route.params.id; |
| | | // console.log(id2); |
| | | // detailList2.id = id2 |
| | | // console.log(typeof detailList2); |
| | | // debugger |
| | | // updateTravelPrice(detailList2).then(response => { |
| | | // this.open = false; |
| | | // }); |
| | | // }); |
| | | // }); |
| | | // this.$modal.confirm('是否确认删除所选数据项?').then(function() { |
| | | // return delTravelBase(Ids); |
| | | |
| | | // }).then(() => { |
| | | // this.getList(fid); |
| | | // this.$modal.msgSuccess("删除成功"); |
| | | // }).catch(() => {}); |
| | | // }, |
| | | /** 导出按钮操作 */ |
| | | handleExport() { |
| | | const Ids = this.ids; |