From 0ac51e607710e00d7842c5e902935d62ca310028 Mon Sep 17 00:00:00 2001
From: linwenling <3256558519@qq.com>
Date: 星期一, 05 六月 2023 16:20:23 +0800
Subject: [PATCH] 新增旅游费用

---
 ruoyi-ui/src/api/travel/index.js    |  111 ++++
 ruoyi-ui/src/views/travel/Info.vue  |  721 ++++++++++++++++++++++++++
 ruoyi-ui/src/views/travel/edit.vue  |    0 
 ruoyi-ui/src/views/travel/index.vue |  713 ++++++++++++++++++++++++++
 ruoyi-ui/src/router/index.js        |   32 +
 5 files changed, 1,577 insertions(+), 0 deletions(-)

diff --git a/ruoyi-ui/src/api/travel/index.js b/ruoyi-ui/src/api/travel/index.js
new file mode 100644
index 0000000..c9b1d5a
--- /dev/null
+++ b/ruoyi-ui/src/api/travel/index.js
@@ -0,0 +1,111 @@
+import request from '@/utils/request'
+
+//Economy
+
+// 鏌ヨ鏃呰璐圭敤淇℃伅
+export function listTravelPrice(query) {
+  return request({
+    url: '/zTravelPrice/all',
+    method: 'get',
+    params: query
+  })
+}
+
+
+// 鏍规嵁id鏌ヨ鎵�鏈夋敹鏀彴璐︿俊鎭�
+export function getTravelPriceInfo(id) {
+  return request({
+    url: '/zTravelPrice/' + id,
+    method: 'get',
+
+  })
+}
+
+//鏂板鏀舵敮鍙拌处
+export function addTravelPrice(data)
+{
+  return request({
+    url: '/zTravelPrice',
+    method: 'post',
+    data: data
+  })
+}
+
+// 鍒犻櫎瀹跺涵璁惧
+export function delTravelPrice(Ids) {
+  return request({
+    url: '/zTravelPrice/' + Ids,
+    method: 'delete'
+  })
+}
+
+//淇敼瀹跺涵璁惧
+export function updateTravelPrice(data) {
+  return request({
+    url: '/zTravelPrice',
+    method: 'put',
+    data: data
+  })
+}
+//涓婁紶鏂囦欢
+export function uploadPic(data) {
+  return request({
+    url: '/common/upload',
+    method: 'post',
+    data: data
+  })
+}
+//涓嬭浇鏂囦欢
+export function download(data) {
+  return request({
+    url: '/common/downLoadFile',
+    method: 'get',
+    params: data,
+    responseType: 'blob'
+  })
+}
+
+//瀵煎叆鏁版嵁
+// export function download(data) {
+//   return request({
+//     url: '/zfEquipment/importData',
+//     method: 'post',
+//     params: data,
+//     responseType: 'blob'
+//   })
+// }
+export function listTravelBase(query) {
+    return request({
+      url: '/zTravelBase/all',
+      method: 'get',
+      params: query
+    })
+  }
+  
+  
+  // 鏍规嵁id鏌ヨ鎵�鏈夋敹鏀彴璐︿俊鎭�
+  export function getTravelBaseInfo(id) {
+    return request({
+      url: '/zTravelBase/' + id,
+      method: 'get',
+  
+    })
+  }
+  
+  //鏂板鏀舵敮鍙拌处
+  export function addTravelBase(data)
+  {
+    return request({
+      url: '/zTravelBase',
+      method: 'post',
+      data: data
+    })
+  }
+  
+  // 鍒犻櫎瀹跺涵璁惧
+  export function delTravelBase(Ids) {
+    return request({
+      url: '/zTravelBase/' + Ids,
+      method: 'delete'
+    })
+  }
\ No newline at end of file
diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js
index 1c99ad5..1e976c2 100644
--- a/ruoyi-ui/src/router/index.js
+++ b/ruoyi-ui/src/router/index.js
@@ -346,6 +346,38 @@
       }
     ]
   },
+  //淇敼鏃呮父
+  {
+    path: '/self/travel',
+    component: Layout,
+    permissions: ['person:travel:edit'],
+
+    hidden: true,
+    children: [
+      {
+        path: 'edit/:id(\\d+)',
+        component: () => import('@/views/travel/edit'),
+        name: 'edit',
+        meta: { title: '缂栬緫'}
+      }
+    ]
+  },
+  //鏌ョ湅鏃呮父璇︽儏
+  {
+    path: '/self/travel',
+    component: Layout,
+    permissions: ['person:travel:info'],
+
+    hidden: true,
+    children: [
+      {
+        path: 'show/:id(\\d+)',
+        component: () => import('@/views/travel/Info'),
+        name: 'show',
+        meta: { title: '鏌ョ湅璇︽儏'}
+      }
+    ]
+  },
   {
     path: '/system/role-auth',
     component: Layout,
diff --git a/ruoyi-ui/src/views/travel/Info.vue b/ruoyi-ui/src/views/travel/Info.vue
new file mode 100644
index 0000000..e36e4dc
--- /dev/null
+++ b/ruoyi-ui/src/views/travel/Info.vue
@@ -0,0 +1,721 @@
+<template>
+    <div class="app-container" style="opacity: 1;">
+      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+  
+        <el-form-item label="鏃堕棿" >
+          <el-date-picker
+            v-model="dateRange"
+            style="width: 240px;"
+            value-format="yyyy-MM-dd HH-MM"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="鎬诲ぉ鏁�" prop="usePeople" >
+          <el-input
+            v-model="queryParams.usePeople"
+            placeholder="璇疯緭鍏ヤ娇鐢ㄤ汉"
+            clearable
+            style="width: 240px"
+            @keyup.enter.native="handleQuery"
+          />
+        </el-form-item>
+
+        <el-form-item>
+          <el-button  size="mini" @click="handleQuery" style=" width: 65px; height: 32px;background: #FFDDE3;border-radius:6px 6px 6px 6px;opacity:1;">鎼滅储</el-button>
+          <el-button  size="mini" @click="resetQuery" style=" width: 65px;height: 32px; background: #FFDDE3; border-radius:6px 6px 6px 6px;opacity: 1;">閲嶇疆</el-button>
+        </el-form-item>
+      </el-form>
+  
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['system:role:add']"
+          >鏂板</el-button>
+        </el-col>
+  
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['system:role:remove']"
+          >鍒犻櫎</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExport"
+            v-hasPermi="['family:note:export']"
+          >瀵煎嚭</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExportTemplate"
+            v-hasPermi="['family:note:export']"
+          >瀵煎叆妯℃澘涓嬭浇</el-button>
+        </el-col>
+        <el-col :span="1.2">
+          <el-upload
+            action=""
+            class="upload-demo"
+            :show-file-list="false"
+            :http-request="handleEnport"
+          >
+            <el-button size="mini"   type="primary"
+                       plain
+                       icon="el-icon-plus" >瀵煎叆</el-button>
+  
+          </el-upload>
+        </el-col>
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row>
+      <!-- 搴忓彿銆佸熀閲�/鍙拌处銆佹椂闂淬�佹敹鍏�/鏀嚭銆佺敤閫斻�佷娇鐢ㄤ汉銆佺幇閲�/鑷姩鎵e垝銆佷綑棰濄�佺數瀛愭枃浠躲�佸娉� 鎿嶄綔-->
+      <!-- 杩欓噷鏈変釜familyList鏁扮粍 鏄湪data()涓畾涔夌殑 -->
+      <el-table v-loading="loading" :data="travelpriceList"  @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="startTime" sortable width="100" align="center">
+          <template slot-scope="scope">{{scope.row.startTime? scope.row.startTime: '鈥斺�斺�斺��'}}</template>
+        </el-table-column>
+        <el-table-column label="姝�" prop="endTime" sortable width="100" align="center">
+          <template slot-scope="scope">{{scope.row.endTime? scope.row.endTime: '鈥斺�斺�斺��'}}</template>
+        </el-table-column>
+        <el-table-column label="鎬诲ぉ鏁�" prop="totalDay" sortable width="100" />
+        <el-table-column label="鏍囬" prop="title" sortable width="100" />
+        
+        <el-table-column label="鎬婚噾棰�" prop="totalCost" sortable width="100" />
+        <el-table-column label="椁愯垂" prop="eat" sortable width="100" />
+        <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="鎿嶄綔" 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:economy:info']"
+            >淇敼</el-button>
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @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>
+            <el-button
+              size="mini"
+              type="text"
+              @click="handleShow(scope.row)"
+            >鏌ョ湅鏄庣粏</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <el-dialog :title="title" :visible.sync="openDataScope" width="1000px"  append-to-body>
+
+        <el-table v-loading="loading" :data="travelpriceList[detailList]" @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"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+        style="background: #FEF7FC;"
+      />
+  
+      <!-- 娣诲姞鎴栦慨鏀硅祫浜т俊鎭厤缃璇濇 -->
+
+      <el-dialog :title="title" :visible.sync="open" width="800px" 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>
+          </el-form-item>
+  
+          <el-form-item label="鏃堕棿" prop="happenTime">
+            <el-date-picker
+              v-model='formDat.happenTime'
+              type='date'
+              placeholder='閫夋嫨鏃ユ湡'
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item label="鏀跺叆/鏀嚭" prop="price">
+            <el-select v-model="formDat.price" 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
+            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: 126px; height: 126px"
+                fit="cover"
+                :preview-src-list="[file.url]"
+              >
+              <span class="el-upload-list__item-actions">
+            <span
+              class="el-upload-list__item-preview"
+              @click="handlePictureCardPreview(file)"
+            >
+              <i class="el-icon-zoom-in"></i>
+            </span>
+  
+            <span
+              v-if="!disabled"
+              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
+  
+            :on-remove="handleRemove"
+            :http-request="requestUpload"
+            :show-file-list="true"
+          >
+            <el-button type="primary">涓婁紶</el-button>
+            <template #tip>
+              <div class="el-upload__tip">
+              </div>
+            </template>
+          </el-upload>
+  
+        </el-form>
+        <h4 class="form-header"> </h4>
+  
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="submitDataScope">纭� 瀹�</el-button>
+          <el-button @click="cancelData">鍙� 娑�</el-button>
+        </div>
+      </el-dialog>
+  
+      <!-- 鍒嗛厤瑙掕壊鏁版嵁鏉冮檺瀵硅瘽妗� -->
+      <el-dialog :title="title" :visible.sync="openDataScope" width="500px" append-to-body>
+  
+      </el-dialog>
+  
+    </div>
+  </template>
+  
+  <script>
+  import { listRole, getRole, delRole, addRole, updateRole, dataScope, changeRoleStatus, deptTreeSelect } from "@/api/system/role";
+  import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu";
+  
+  
+  
+  //鍦╯ystem/note/index.js涓鍏ユ帴鍙e嚱鏁�  --鎺ュソ浜�
+  import {listTravelPrice,enload,getTravelPriceInfo,delTravelPrice, addTravelPrice, uploadPic} from "@/api/travel/index";
+  
+  export default {
+    name: "Role",
+    dicts: ['sys_normal_disable'],
+    data() {
+      return {
+        // 閬僵灞�
+        disabled: false,
+        loading: true,
+        formData:[],
+        // 閫変腑鏁扮粍
+        ids: [],
+        // 闈炲崟涓鐢�
+        single: true,
+        // 闈炲涓鐢�
+        multiple: true,
+        // 鏄剧ず鎼滅储鏉′欢
+        showSearch: true,
+        // 鎬绘潯鏁�
+        total: 0,
+        // 瀹跺ぇ浜嬭琛ㄦ牸鏁版嵁
+        travelpriceList: [],
+        // 寮瑰嚭灞傛爣棰�
+        title: "",
+        // 鏄惁鏄剧ず寮瑰嚭灞�
+        open: false,
+        // 鏄惁鏄剧ず寮瑰嚭灞傦紙鏁版嵁鏉冮檺锛�
+        openDataScope: false,
+        menuExpand: false,
+        menuNodeAll: false,
+        deptExpand: true,
+        deptNodeAll: false,
+        // 鏃ユ湡鑼冨洿
+        dateRange: [],
+        // 鏁版嵁鑼冨洿閫夐」
+        fot:[".jpg",".jif"],
+        fileList:[
+        ],
+        fileListOther:[
+  
+        ],
+        dsb:true,
+        btn:false,
+        formDat: {
+          type: undefined,
+          createTime: undefined,
+          useFor: undefined,
+          usePeople: undefined,
+          kind:undefined,
+          remark: undefined,
+          url: undefined,
+        },
+        // 鑿滃崟鍒楄〃
+        menuOptions: [],
+        // 閮ㄩ棬鍒楄〃
+        deptOptions: [],
+        // 鏌ヨ鍙傛暟
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          type:undefined,
+          useFor:undefined,
+          usePeople:undefined,
+          createTime:undefined,
+  
+        },
+        // 琛ㄥ崟鍙傛暟
+        form: {},
+        defaultProps: {
+          children: "children",
+          label: "label"
+        },
+        // 琛ㄥ崟鏍¢獙
+        rules: {
+          usePeople: [{
+            required: true,
+            message: '璇疯緭鍏ヤ娇鐢ㄤ汉',
+            trigger: 'blur'
+          }],
+  
+          useFor: [{
+            required: true,
+            message: '璇疯緭鍏ョ敤閫�',
+            trigger: 'blur'
+          }],
+          type: [{
+            required: true,
+            message: '璇疯緭鍏ュ彴璐﹀唴瀹�',
+            trigger: 'blur'
+          }],
+          balance: [{
+            required: true,
+            message: '璇疯緭鍏ラ噾棰�',
+            trigger: 'blur'
+          }],
+          kind: [{
+            // required: true,
+            message: '璇疯緭鍏ユ敮浠樻柟寮�',
+            trigger: 'blur'
+          }],
+          createTime: [{
+            required: true,
+            message: '璇烽�夋嫨鏃ユ湡閫夋嫨',
+            trigger: 'change'
+          }],
+          price: [{
+            required: true,
+            message: '璇烽�夋嫨浜嬮」鍐呭',
+            trigger: 'blur'
+          }],
+        },
+        typeOptions: [
+          {
+            value: '鏀跺叆',
+            label: '鏀跺叆',
+          },
+          {
+            value: '鏀嚭',
+            label: '鏀嚭',
+          }],
+        typeOptions1: [
+          {
+            value: '0',
+            label: '鐜伴噾',
+          },
+          {
+            value: '1',
+            label: '鑷姩鎵e垝',
+          }
+        ],
+      };
+    },
+    created() {
+      this.getList();
+  
+    },
+    methods: {
+  
+      //鍩洪噾/鍙拌处鐨勯�夋嫨
+      getSrc1(type) {
+        if (type === 0) {
+          return '鍩洪噾'
+        }else {
+          return '鍙拌处'
+        }
+      },
+  
+      getSrc2(kind) {
+        if (kind == 0) {
+          return '鐜伴噾'
+        }else  {
+          return '鑷姩鎵e垝'
+        }
+      },
+  
+      // 鍙栨秷鎸夐挳
+      cancelData() {
+        this.open = false;
+        this.reset();
+      },
+  
+      //闅旇鍙樿壊
+      tableRowClassName({ row, rowIndex }) {
+        if (rowIndex % 2 == 0) {
+          return "statistics-warning-row1";
+        } else {
+          return "statistics-warning-row";
+        }
+      },
+  
+      /** 鏌ヨ瑙掕壊鍒楄〃 */
+      //鍒楄〃鏄剧ず瀹跺ぇ浜嬭
+  
+  
+      getList() {
+        this.loading = true;
+        this.queryParams.happenStartTime = this.dateRange.length > 0 && this.dateRange[0]
+        this.queryParams.happenEndTime = this.dateRange.length > 0 && this.dateRange[1]
+        // console.log(this.queryParams)
+        //  listProperty(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+  
+          listTravelPrice(this.queryParams).then(response => {
+            //  alert(123)
+            //   console.log(response.data)
+            this.travelpriceList = response.data.data;
+  
+            this.total = response.data.total;
+            this.loading = false;
+          }
+        );
+      },
+      handleRemove(file) {
+        for(let i = 0; i < this.fileListOther.length; i++)
+        {
+          if(this.fileListOther[i].url==file.url)
+            this.$delete(this.fileListOther,i);
+        }
+      },
+
+      // 鍙栨秷鎸夐挳
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      getRowId(row)
+      {
+        return row.id
+      },
+      // 鍙栨秷鎸夐挳锛堟暟鎹潈闄愶級
+      cancelDataScope() {
+        this.openDataScope = false;
+        this.reset();
+      },
+      // 琛ㄥ崟閲嶇疆
+      reset() {
+        if (this.$refs.menu != undefined) {
+          this.$refs.menu.setCheckedKeys([]);
+        }
+        this.menuExpand = false,
+          this.menuNodeAll = false,
+          this.deptExpand = true,
+          this.deptNodeAll = false,
+          this.form = {
+            roleId: undefined,
+            roleName: undefined,
+            roleKey: undefined,
+            roleSort: 0,
+            status: "0",
+            menuIds: [],
+            deptIds: [],
+            menuCheckStrictly: true,
+            deptCheckStrictly: true,
+            remark: undefined
+          };
+        this.resetForm("form");
+      },
+      /** 鎼滅储鎸夐挳鎿嶄綔 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 閲嶇疆鎸夐挳鎿嶄綔 */
+      resetQuery() {
+        this.dateRange = [];
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 澶氶�夋閫変腑鏁版嵁
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        console.log(this.ids)
+        this.single = selection.length!=1
+        this.multiple = !selection.length
+      },
+  
+      /** 鏂板鎸夐挳鎿嶄綔 */
+      handleAdd() {
+        this.reset();
+        this.open = true;
+        this.title = "娣诲姞瀹跺涵鏀舵敮鍙拌处";
+      },
+  
+  
+      /** 鏌ョ湅璇︾粏淇℃伅 */
+      handleCheck(row){
+        const id = row.id;
+        this.$router.push("/familymodel/economy/economyInfo/" + id);
+      },
+      /** 淇敼鎸夐挳鎿嶄綔 */
+      handleUpdate(row) {
+        const id = row.id;
+        let jd = true
+  
+        this.$router.push({
+          path:"/familymodel/economy/economyInfo/" + id,
+          query:{
+            detail:jd
+          }
+        });
+      },
+  
+  
+      handlePictureCardPreview(file) {
+        this.dialogImageUrl = file.url;
+        this.dialogVisible = true;
+      },
+      /** 鎻愪氦鎸夐挳锛堟暟鎹潈闄愶級 */
+      submitDataScope: function() {
+  
+        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.formDat.url = ul+","+uls
+        this.$refs["elForm"].validate(valid => {
+          if (valid) {
+  
+            addEconomy(this.formDat).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        });
+      },
+      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})
+  
+          }
+        })
+  
+      },
+      /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+      handleDelete(row) {
+        const Ids = row.id || this.ids;
+        this.$modal.confirm('鏄惁纭鍒犻櫎搴忓彿涓�"' + Ids + '"鐨勬暟鎹」锛�').then(function() {
+          return delEconomy(Ids);
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        }).catch(() => {});
+      },
+      /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+      handleExport() {
+        const Ids = this.ids;
+  
+        if(Ids.length==0)
+        {
+        this.download('/zfEconomy/export', {
+          ...this.queryParams
+        }, `zfEconomy_${new Date().getTime()}.xlsx`)
+        }else
+        {
+          this.download('/zfEconomy/export1/'+Ids, {
+          }, `zfEconomy_${new Date().getTime()}.xlsx`)
+        }
+      }
+    ,
+    handleExportTemplate(){
+        this.download('/zfEconomy/model', {
+  
+        }, `zfEconomy_${new Date().getTime()}.xlsx`)
+    },
+    /** 瀵煎叆鎿嶄綔*/
+    handleEnport(params){
+      var file = params.file;
+      var formData = new FormData();
+      formData.append('excelImport', file);
+      let _this = this
+      alert(file)
+      enload(formData).then(response => {
+        _this.getList();
+        Message({ message: "瀵煎叆鎴愬姛", type: 'warning' })
+  
+      }).catch(err)
+      {
+        Message({ message: "瀵煎叆澶辫触", type: 'error' })
+      }
+  
+    }
+    },
+ 
+  //  寮圭獥
+  handleShow(scope){
+
+    this.openDataScope = true
+    this.getList()
+                        }
+
+  };
+  </script>
+  
+  <style>
+  .el-table__row.statistics-warning-row {
+    background: #E0EEFE;
+  
+  }
+  .el-table__row.statistics-warning-row1 {
+    background: #FFEFF2;
+  
+  }
+  </style>
+  
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/travel/edit.vue b/ruoyi-ui/src/views/travel/edit.vue
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/ruoyi-ui/src/views/travel/edit.vue
diff --git a/ruoyi-ui/src/views/travel/index.vue b/ruoyi-ui/src/views/travel/index.vue
new file mode 100644
index 0000000..24e9536
--- /dev/null
+++ b/ruoyi-ui/src/views/travel/index.vue
@@ -0,0 +1,713 @@
+<template>
+    <div class="app-container" style="opacity: 1;">
+      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+  
+        <el-form-item label="鏃堕棿" >
+          <el-date-picker
+            v-model="dateRange"
+            style="width: 240px;"
+            value-format="yyyy-MM-dd HH-MM"
+            type="daterange"
+            range-separator="-"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item label="鎬诲ぉ鏁�" prop="usePeople" >
+          <el-input
+            v-model="queryParams.usePeople"
+            placeholder="璇疯緭鍏ヤ娇鐢ㄤ汉"
+            clearable
+            style="width: 240px"
+            @keyup.enter.native="handleQuery"
+          />
+        </el-form-item>
+
+        <el-form-item>
+          <el-button  size="mini" @click="handleQuery" style=" width: 65px; height: 32px;background: #FFDDE3;border-radius:6px 6px 6px 6px;opacity:1;">鎼滅储</el-button>
+          <el-button  size="mini" @click="resetQuery" style=" width: 65px;height: 32px; background: #FFDDE3; border-radius:6px 6px 6px 6px;opacity: 1;">閲嶇疆</el-button>
+        </el-form-item>
+      </el-form>
+  
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            type="primary"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['system:role:add']"
+          >鏂板</el-button>
+        </el-col>
+  
+        <el-col :span="1.5">
+          <el-button
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['system:role:remove']"
+          >鍒犻櫎</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExport"
+            v-hasPermi="['family:note:export']"
+          >瀵煎嚭</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExportTemplate"
+            v-hasPermi="['family:note:export']"
+          >瀵煎叆妯℃澘涓嬭浇</el-button>
+        </el-col>
+        <el-col :span="1.2">
+          <el-upload
+            action=""
+            class="upload-demo"
+            :show-file-list="false"
+            :http-request="handleEnport"
+          >
+            <el-button size="mini"   type="primary"
+                       plain
+                       icon="el-icon-plus" >瀵煎叆</el-button>
+  
+          </el-upload>
+        </el-col>
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row>
+      <!-- 搴忓彿銆佸熀閲�/鍙拌处銆佹椂闂淬�佹敹鍏�/鏀嚭銆佺敤閫斻�佷娇鐢ㄤ汉銆佺幇閲�/鑷姩鎵e垝銆佷綑棰濄�佺數瀛愭枃浠躲�佸娉� 鎿嶄綔-->
+      <!-- 杩欓噷鏈変釜familyList鏁扮粍 鏄湪data()涓畾涔夌殑 -->
+      <el-table v-loading="loading" :data="travelpriceList"  @selection-change="handleSelectionChange" @row-click="handleShow" :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="startTime" sortable width="100" align="center">
+          <template slot-scope="scope">{{scope.row.startTime? scope.row.startTime: '鈥斺�斺�斺��'}}</template>
+        </el-table-column>
+        <el-table-column label="姝�" prop="endTime" sortable width="100" align="center">
+          <template slot-scope="scope">{{scope.row.endTime? scope.row.endTime: '鈥斺�斺�斺��'}}</template>
+        </el-table-column>
+        <el-table-column label="鎬诲ぉ鏁�" prop="totalDay" sortable width="100" />
+        <el-table-column label="鏍囬" prop="title" sortable width="100" />
+        
+        <el-table-column label="鎬婚噾棰�" prop="totalCost" sortable width="100" />
+        <el-table-column label="椁愯垂" prop="eat" sortable width="100" />
+        <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="鎿嶄綔" 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:economy:info']"
+            >淇敼</el-button>
+            <el-button
+              size="mini"
+              type="text"
+              icon="el-icon-delete"
+              @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>
+      </el-table>
+
+      <el-dialog :title="title" :visible.sync="openDataScope" width="1500px" append-to-body >
+       <div style="background-color: #FEF7FC;">
+        <el-table v-loading="loading" :data="travelpriceList[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">
+          <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"
+          style="background: #FEF7FC;"
+        />
+      </div>
+
+    </el-dialog>
+             
+      <pagination
+        v-show="total>0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+        style="background: #FEF7FC;"
+      />
+  
+      <!-- 娣诲姞鎴栦慨鏀硅祫浜т俊鎭厤缃璇濇 -->
+
+      <el-dialog :title="title" :visible.sync="open" width="800px" 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>
+          </el-form-item>
+  
+          <el-form-item label="鏃堕棿" prop="happenTime">
+            <el-date-picker
+              v-model='formDat.happenTime'
+              type='date'
+              placeholder='閫夋嫨鏃ユ湡'
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item label="鏀跺叆/鏀嚭" prop="price">
+            <el-select v-model="formDat.price" 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
+            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: 126px; height: 126px"
+                fit="cover"
+                :preview-src-list="[file.url]"
+              >
+              <span class="el-upload-list__item-actions">
+            <span
+              class="el-upload-list__item-preview"
+              @click="handlePictureCardPreview(file)"
+            >
+              <i class="el-icon-zoom-in"></i>
+            </span>
+  
+            <span
+              v-if="!disabled"
+              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
+  
+            :on-remove="handleRemove"
+            :http-request="requestUpload"
+            :show-file-list="true"
+          >
+            <el-button type="primary">涓婁紶</el-button>
+            <template #tip>
+              <div class="el-upload__tip">
+              </div>
+            </template>
+          </el-upload>
+  
+        </el-form>
+        <h4 class="form-header"> </h4>
+  
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="submitDataScope">纭� 瀹�</el-button>
+          <el-button @click="cancelData">鍙� 娑�</el-button>
+        </div>
+      </el-dialog>
+  
+
+    </div>
+  </template>
+  
+  <script>
+  import { listRole, getRole, delRole, addRole, updateRole, dataScope, changeRoleStatus, deptTreeSelect } from "@/api/system/role";
+  import { treeselect as menuTreeselect, roleMenuTreeselect } from "@/api/system/menu";
+  
+  
+  
+  //鍦╯ystem/note/index.js涓鍏ユ帴鍙e嚱鏁�  --鎺ュソ浜�
+  import {listTravelPrice,enload,delTravelPrice, addTravelPrice, uploadPic} from "@/api/travel/index";
+  
+  export default {
+    name: "Role",
+    dicts: ['sys_normal_disable'],
+    data() {
+      return {
+        // 閬僵灞�
+        disabled: false,
+        loading: true,
+        formData:[],
+        detailList:[],
+        // 閫変腑鏁扮粍
+        ids: [],
+        // 闈炲崟涓鐢�
+        single: true,
+        // 闈炲涓鐢�
+        multiple: true,
+        // 鏄剧ず鎼滅储鏉′欢
+        showSearch: true,
+        // 鎬绘潯鏁�
+        total: 0,
+        // 瀹跺ぇ浜嬭琛ㄦ牸鏁版嵁
+        travelpriceList: [],
+        // 寮瑰嚭灞傛爣棰�
+        title: "",
+        // 鏄惁鏄剧ず寮瑰嚭灞�
+        open: false,
+        // 鏄惁鏄剧ず寮瑰嚭灞傦紙鏁版嵁鏉冮檺锛�
+        openDataScope: false,
+        menuExpand: false,
+        menuNodeAll: false,
+        deptExpand: true,
+        deptNodeAll: false,
+        // 鏃ユ湡鑼冨洿
+        dateRange: [],
+        // 鏁版嵁鑼冨洿閫夐」
+        fot:[".jpg",".jif"],
+        fileList:[
+        ],
+        fileListOther:[
+  
+        ],
+        dsb:true,
+        btn:false,
+        formDat: {
+          type: undefined,
+          createTime: undefined,
+          useFor: undefined,
+          usePeople: undefined,
+          kind:undefined,
+          remark: undefined,
+          url: undefined,
+          detailList:undefined,
+        },
+        // 鑿滃崟鍒楄〃
+        menuOptions: [],
+        // 閮ㄩ棬鍒楄〃
+        deptOptions: [],
+        // 鏌ヨ鍙傛暟
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          type:undefined,
+          useFor:undefined,
+          usePeople:undefined,
+          createTime:undefined,
+  
+        },
+        // 琛ㄥ崟鍙傛暟
+        form: {},
+        defaultProps: {
+          children: "children",
+          label: "label"
+        },
+        // 琛ㄥ崟鏍¢獙
+        rules: {
+          usePeople: [{
+            required: true,
+            message: '璇疯緭鍏ヤ娇鐢ㄤ汉',
+            trigger: 'blur'
+          }],
+  
+          useFor: [{
+            required: true,
+            message: '璇疯緭鍏ョ敤閫�',
+            trigger: 'blur'
+          }],
+          type: [{
+            required: true,
+            message: '璇疯緭鍏ュ彴璐﹀唴瀹�',
+            trigger: 'blur'
+          }],
+          balance: [{
+            required: true,
+            message: '璇疯緭鍏ラ噾棰�',
+            trigger: 'blur'
+          }],
+          kind: [{
+            // required: true,
+            message: '璇疯緭鍏ユ敮浠樻柟寮�',
+            trigger: 'blur'
+          }],
+          createTime: [{
+            required: true,
+            message: '璇烽�夋嫨鏃ユ湡閫夋嫨',
+            trigger: 'change'
+          }],
+          price: [{
+            required: true,
+            message: '璇烽�夋嫨浜嬮」鍐呭',
+            trigger: 'blur'
+          }],
+        },
+        typeOptions: [
+          {
+            value: '鏀跺叆',
+            label: '鏀跺叆',
+          },
+          {
+            value: '鏀嚭',
+            label: '鏀嚭',
+          }],
+        typeOptions1: [
+          {
+            value: '0',
+            label: '鐜伴噾',
+          },
+          {
+            value: '1',
+            label: '鑷姩鎵e垝',
+          }
+        ],
+      };
+    },
+    created() {
+      this.getList();
+  
+    },
+    methods: {
+  
+      //鍩洪噾/鍙拌处鐨勯�夋嫨
+      getSrc1(type) {
+        if (type === 0) {
+          return '鍩洪噾'
+        }else {
+          return '鍙拌处'
+        }
+      },
+  
+      getSrc2(kind) {
+        if (kind == 0) {
+          return '鐜伴噾'
+        }else  {
+          return '鑷姩鎵e垝'
+        }
+      },
+  
+      // 鍙栨秷鎸夐挳
+      cancelData() {
+        this.open = false;
+        this.reset();
+      },
+  
+      //闅旇鍙樿壊
+      tableRowClassName({ row, rowIndex }) {
+        if (rowIndex % 2 == 0) {
+          return "statistics-warning-row1";
+        } else {
+          return "statistics-warning-row";
+        }
+      },
+  
+      /** 鏌ヨ瑙掕壊鍒楄〃 */
+      //鍒楄〃鏄剧ず瀹跺ぇ浜嬭
+  
+  
+      getList() {
+        this.loading = true;
+        this.queryParams.happenStartTime = this.dateRange.length > 0 && this.dateRange[0]
+        this.queryParams.happenEndTime = this.dateRange.length > 0 && this.dateRange[1]
+        // console.log(this.queryParams)
+        //  listProperty(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+  
+          listTravelPrice(this.queryParams).then(response => {
+            //  alert(123)
+            //   console.log(response.data)
+            this.travelpriceList = response.data.data;
+            
+            this.total = response.data.total;
+            this.loading = false;
+          }
+        );
+      },
+      handleRemove(file) {
+        for(let i = 0; i < this.fileListOther.length; i++)
+        {
+          if(this.fileListOther[i].url==file.url)
+            this.$delete(this.fileListOther,i);
+        }
+      },
+
+      // 鍙栨秷鎸夐挳
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      getRowId(row)
+      {
+        return row.id
+      },
+      // 鍙栨秷鎸夐挳锛堟暟鎹潈闄愶級
+      cancelDataScope() {
+        this.openDataScope = false;
+        this.reset();
+      },
+      // 琛ㄥ崟閲嶇疆
+      reset() {
+        if (this.$refs.menu != undefined) {
+          this.$refs.menu.setCheckedKeys([]);
+        }
+        this.menuExpand = false,
+          this.menuNodeAll = false,
+          this.deptExpand = true,
+          this.deptNodeAll = false,
+          this.form = {
+            roleId: undefined,
+            roleName: undefined,
+            roleKey: undefined,
+            roleSort: 0,
+            status: "0",
+            menuIds: [],
+            deptIds: [],
+            menuCheckStrictly: true,
+            deptCheckStrictly: true,
+            remark: undefined
+          };
+        this.resetForm("form");
+      },
+      /** 鎼滅储鎸夐挳鎿嶄綔 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 閲嶇疆鎸夐挳鎿嶄綔 */
+      resetQuery() {
+        this.dateRange = [];
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 澶氶�夋閫変腑鏁版嵁
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.id)
+        console.log(this.ids)
+        this.single = selection.length!=1
+        this.multiple = !selection.length
+      },
+  
+      /** 鏂板鎸夐挳鎿嶄綔 */
+      handleAdd() {
+        this.reset();
+        this.open = true;
+        this.title = "娣诲姞瀹跺涵鏀舵敮鍙拌处";
+      },
+  
+      //  寮圭獥
+      handleShow(row){
+      const id = row.id;
+      this.openDataScope = true
+      this.getList()
+      this.title = "灞曠ず璇︽儏";
+      
+     },
+    
+      /** 鏌ョ湅璇︾粏淇℃伅 */
+      handleCheck(row){
+        const id = row.id;
+        this.$router.push("/self/travel/Info/" + id);
+      },
+      /** 淇敼鎸夐挳鎿嶄綔 */
+      handleUpdate(row) {
+        const id = row.id;
+        let jd = true
+  
+        this.$router.push({
+          path:"/self/travel/Info/" + id,
+          query:{
+            detail:jd
+          }
+        });
+      },
+  
+  
+      handlePictureCardPreview(file) {
+        this.dialogImageUrl = file.url;
+        this.dialogVisible = true;
+      },
+      /** 鎻愪氦鎸夐挳锛堟暟鎹潈闄愶級 */
+      submitDataScope: function() {
+  
+        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.formDat.url = ul+","+uls
+        this.$refs["elForm"].validate(valid => {
+          if (valid) {
+  
+            addEconomy(this.formDat).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            });
+          }
+        });
+      },
+      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})
+  
+          }
+        })
+  
+      },
+      /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+      handleDelete(row) {
+        const Ids = row.id || this.ids;
+        this.$modal.confirm('鏄惁纭鍒犻櫎搴忓彿涓�"' + Ids + '"鐨勬暟鎹」锛�').then(function() {
+          return delEconomy(Ids);
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        }).catch(() => {});
+      },
+      /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+      handleExport() {
+        const Ids = this.ids;
+  
+        if(Ids.length==0)
+        {
+        this.download('/zfEconomy/export', {
+          ...this.queryParams
+        }, `zfEconomy_${new Date().getTime()}.xlsx`)
+        }else
+        {
+          this.download('/zfEconomy/export1/'+Ids, {
+          }, `zfEconomy_${new Date().getTime()}.xlsx`)
+        }
+      }
+    ,
+    handleExportTemplate(){
+        this.download('/zfEconomy/model', {
+  
+        }, `zfEconomy_${new Date().getTime()}.xlsx`)
+    },
+    /** 瀵煎叆鎿嶄綔*/
+    handleEnport(params){
+      var file = params.file;
+      var formData = new FormData();
+      formData.append('excelImport', file);
+      let _this = this
+      alert(file)
+      enload(formData).then(response => {
+        _this.getList();
+        Message({ message: "瀵煎叆鎴愬姛", type: 'warning' })
+  
+      }).catch(err)
+      {
+        Message({ message: "瀵煎叆澶辫触", type: 'error' })
+      }
+  
+    }
+    },
+  };
+ 
+
+  </script>
+  
+  <style>
+  .el-table__row.statistics-warning-row {
+    background: #E0EEFE;
+  
+  }
+  .el-table__row.statistics-warning-row1 {
+    background: #FFEFF2;
+  
+  }
+  </style>
+  
\ No newline at end of file

--
Gitblit v1.9.1