|
@@ -0,0 +1,289 @@
|
|
|
+<template>
|
|
|
+ <div class="cost-all">
|
|
|
+ <div class="cost-box">
|
|
|
+ <div class="cost-haed">
|
|
|
+ <div class="ser-btn">
|
|
|
+ <div class="ser-btn-li">
|
|
|
+ <el-select v-model="value" filterable placeholder="请选择">
|
|
|
+ <el-option
|
|
|
+ v-for="item in options"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="ser-btn-li">
|
|
|
+ <el-button type="primary">导入收款账单</el-button>
|
|
|
+ <el-button type="primary">生成收款账单</el-button>
|
|
|
+ <el-button type="primary">导出客户报表</el-button>
|
|
|
+ <el-button type="primary">导出成本</el-button>
|
|
|
+ <el-button type="primary">保存设置</el-button>
|
|
|
+ <el-button type="primary">一键复制</el-button>
|
|
|
+ <el-button type="primary">成本通知</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="cost-input">
|
|
|
+ <el-form :inline="true" :model="formInline" class="demo-form-inline">
|
|
|
+ <el-form-item label="税率:">
|
|
|
+ <el-input v-model="formInline.user" placeholder="税率"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="货币:">
|
|
|
+ <el-input v-model="formInline.user" placeholder="货币"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="汇率:">
|
|
|
+ <el-input v-model="formInline.user" placeholder="汇率"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <div>
|
|
|
+ <el-form-item label="TBR:">
|
|
|
+ <el-input v-model="formInline.user" placeholder="TBR"><i slot="suffix" style="font-style:normal;margin-right: 10px;">间</i></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="SGR:">
|
|
|
+ <el-input v-model="formInline.user" placeholder="SGR"><i slot="suffix" style="font-style:normal;margin-right: 10px;">间</i></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="JS/ES:">
|
|
|
+ <el-input v-model="formInline.user" placeholder="JS/ES"><i slot="suffix" style="font-style:normal;margin-right: 10px;">间</i></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="SUITE:">
|
|
|
+ <el-input v-model="formInline.user" placeholder="SUITE"><i slot="suffix" style="font-style:normal;margin-right: 10px;">间</i></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <div class="cost-info">
|
|
|
+ <div class="cost-info-li">
|
|
|
+ <label>团 号:</label>
|
|
|
+ <span>9XGYL</span>
|
|
|
+ </div>
|
|
|
+ <div class="cost-info-li">
|
|
|
+ <label>客 户:</label>
|
|
|
+ <span>小熟悉熟悉</span>
|
|
|
+ </div>
|
|
|
+ <div class="cost-info-li">
|
|
|
+ <label>出访国家:</label>
|
|
|
+ <span>新加坡</span>
|
|
|
+ </div>
|
|
|
+ <div class="cost-info-li">
|
|
|
+ <label>起止日期:</label>
|
|
|
+ <span>2023-05-18 ~ 2023-05-27</span>
|
|
|
+ </div>
|
|
|
+ <div class="cost-info-li">
|
|
|
+ <label>天数/人数:</label>
|
|
|
+ <span>10天/6人</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="color: #606266;font-size: 15px;font-weight: 600;">请选择要显示的项:</div>
|
|
|
+ <el-checkbox-group v-model="checkList">
|
|
|
+ <el-checkbox v-for="(item,index) in checkOptions" :key="index" :label="item"></el-checkbox>
|
|
|
+ </el-checkbox-group>
|
|
|
+ <el-table
|
|
|
+ :summary-method="getSummaries"
|
|
|
+ show-summary
|
|
|
+ :data="tableData"
|
|
|
+ :border="true"
|
|
|
+ size="small"
|
|
|
+ row-class-name="row"
|
|
|
+ cell-class-name="column"
|
|
|
+ :highlight-current-row="true"
|
|
|
+ fit
|
|
|
+ >
|
|
|
+ <template v-for="(item, index) in tableLabel" >
|
|
|
+ <el-table-column
|
|
|
+ :key="index"
|
|
|
+ :prop="item.prop"
|
|
|
+ :width="item.width"
|
|
|
+ :label="item.label"
|
|
|
+ v-if="checkList.includes(item.label)">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="item.prop === 'sales'">
|
|
|
+ <el-input
|
|
|
+ :ref="'el-input-' + index"
|
|
|
+ v-model="scope.row[item.prop]"
|
|
|
+ maxlength="100"
|
|
|
+ show-word-limit/>
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.prop === 'id'">
|
|
|
+ <el-input
|
|
|
+ :ref="'el-input-' + index"
|
|
|
+ v-model="scope.row[item.prop]"
|
|
|
+ type="number"
|
|
|
+ min="0"/>
|
|
|
+ </div>
|
|
|
+ <span v-else :title="scope.row[item.prop]">{{ scope.row[item.prop] }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </template>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ checkList: ['DAY','ITIN','VA','VF','VRD','T/G S'],
|
|
|
+ checkOptions:['DAY','DATE','ITIN','VA','VT','VF','VN','VRD','T/G S','T/G N','T/G WH','T/G OF','T/G M','T/G A','T/G TF','T/G EF','C/F M','C/F OF','B','L','D','TBR','SGR','JS/ES','SUITE','ACCO N','T/V','1/L','I/F','EF','B/R/F','TE','T/G T','DRV T','P/C','T/L F','E/C T'],
|
|
|
+ tableLabel: [
|
|
|
+ {label: 'DAY', width: '90', prop: 'id'},
|
|
|
+ {label: 'DATE', width: '', prop: 'date'},
|
|
|
+ {label: 'ITIN', width: '', prop: 'sales'},
|
|
|
+ {label: 'VA', width: '', prop: 'sale'},
|
|
|
+ {label: 'VT', width: '', prop: 'const'},
|
|
|
+ {label: 'VF', width: '', prop: 'profit'},
|
|
|
+ {label: 'VN', total: '', prop: 'profit'},
|
|
|
+ {label: 'VRD', width: '', prop: 'profit'},
|
|
|
+ {label: 'T/G S', width: '', prop: 'profit'},
|
|
|
+ {label: 'T/G N', width: '', prop: 'profit'},
|
|
|
+ {label: 'T/G WH', width: '', prop: 'profit'},
|
|
|
+ {label: 'T/G OF', width: '', prop: 'profit'},
|
|
|
+ {label: 'T/G M', width: '', prop: 'profit'},
|
|
|
+ {label: 'T/G A', width: '', prop: 'profit'},
|
|
|
+ {label: 'T/G TF', width: '', prop: 'profit'}
|
|
|
+ ],
|
|
|
+ statisticsArr: [
|
|
|
+ {label: 'DAY', total: '', individual: ''},
|
|
|
+ {label: 'DATE', total: '', individual: ''},
|
|
|
+ {label: 'ITIN', total: '', individual: ''},
|
|
|
+ {label: 'VA', total: '', individual: ''},
|
|
|
+ {label: 'VT', total: '', individual: ''},
|
|
|
+ {label: 'VF', total: '车费', individual: '车费人均'},
|
|
|
+ {label: 'VN', total: '', individual: ''},
|
|
|
+ {label: 'VRD', total: '', individual: ''},
|
|
|
+ {label: 'T/G S', total: '导游工资', individual: '导游工资人均'},
|
|
|
+ {label: 'T/G N', total: '', individual: ''},
|
|
|
+ {label: 'T/G WH', total: '', individual: ''},
|
|
|
+ {label: 'T/G OF', total: '', individual: ''},
|
|
|
+ {label: 'T/G M', total: '', individual: ''},
|
|
|
+ {label: 'T/G A', total: '', individual: ''},
|
|
|
+ {label: 'T/G TF', total: '', individual: ''}
|
|
|
+
|
|
|
+ ],
|
|
|
+ tableData: [
|
|
|
+ {id: 1, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ {id: 2, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ {id: 3, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ {id: 4, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ // {id: 5, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ // {id: 6, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ // {id: 7, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ // {id: 8, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ // {id: 9, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ // {id: 10, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ // {id: 11, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
|
|
|
+ // {id: 12, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05}
|
|
|
+ ],
|
|
|
+ options: [{
|
|
|
+ value: '选项1',
|
|
|
+ label: '黄金糕'
|
|
|
+ }, {
|
|
|
+ value: '选项2',
|
|
|
+ label: '双皮奶'
|
|
|
+ }, {
|
|
|
+ value: '选项3',
|
|
|
+ label: '蚵仔煎'
|
|
|
+ }, {
|
|
|
+ value: '选项4',
|
|
|
+ label: '龙须面'
|
|
|
+ }, {
|
|
|
+ value: '选项5',
|
|
|
+ label: '北京烤鸭'
|
|
|
+ }],
|
|
|
+ value: '',
|
|
|
+ formInline: {
|
|
|
+ user: '',
|
|
|
+ region: ''
|
|
|
+ }
|
|
|
+ };
|
|
|
+ },
|
|
|
+ watch:{
|
|
|
+ // 此处监听variable变量,当期有变化时执行
|
|
|
+ checkList(item1,item2){
|
|
|
+ console.log(item1)
|
|
|
+ // console.log(item2)
|
|
|
+ // item1为新值,item2为旧值
|
|
|
+ },
|
|
|
+ },
|
|
|
+ methods:{
|
|
|
+ getSummaries(param) {
|
|
|
+ const { columns, data } = param;
|
|
|
+ const sums = [];
|
|
|
+ columns.forEach((column, index) => {
|
|
|
+ if (index === 0) {
|
|
|
+ sums[index] = "总计:";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const values = data.map(item => Number(item[column.property]));
|
|
|
+ if (!values.every(value => isNaN(value))) {
|
|
|
+ sums[index] = values.reduce((prev, curr) => {
|
|
|
+ const value = Number(curr);
|
|
|
+ if (!isNaN(value)) {
|
|
|
+ return prev + curr;
|
|
|
+ } else {
|
|
|
+ return prev;
|
|
|
+ }
|
|
|
+
|
|
|
+ }, 0);
|
|
|
+ sums[index] += ' 元';
|
|
|
+ } else {
|
|
|
+ sums[index] = 'N/A';
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ return sums;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted(){
|
|
|
+ console.log(this.checkList.includes("A"));
|
|
|
+ console.log(this.checkList.includes("1"));
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style>
|
|
|
+ .cost-box {
|
|
|
+ background-color: #fff;
|
|
|
+ padding: 10px;
|
|
|
+ box-shadow: 0 0 5px #0005;
|
|
|
+ border-radius: 10px;
|
|
|
+ }
|
|
|
+ .fade-enter-active,
|
|
|
+ .fade-leave-active {
|
|
|
+ transition: opacity 1;
|
|
|
+ }
|
|
|
+ .fade-enter,
|
|
|
+ .fade-leave-to {
|
|
|
+ opacity: 0;
|
|
|
+ }
|
|
|
+ .cost-haed{
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ .ser-btn{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ .cost-info{
|
|
|
+ display: flex;
|
|
|
+ }
|
|
|
+ .cost-info-li{
|
|
|
+ margin-right: 30px;
|
|
|
+ }
|
|
|
+ .cost-info-li label{
|
|
|
+ color: #606266;
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+ .cost-info-li span{
|
|
|
+ color: #606266;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+ .cost-box .el-checkbox-group{
|
|
|
+ margin: 5px 0;
|
|
|
+ }
|
|
|
+ .cost-box .el-checkbox{
|
|
|
+ width: 100px;
|
|
|
+ margin: 5px 0;
|
|
|
+ }
|
|
|
+</style>
|