|  | @@ -0,0 +1,163 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <div class="main">
 | 
	
		
			
				|  |  | +    <el-row>
 | 
	
		
			
				|  |  | +      <el-col :span="4">
 | 
	
		
			
				|  |  | +        <el-tabs
 | 
	
		
			
				|  |  | +          tab-position="left"
 | 
	
		
			
				|  |  | +          @tab-click="loadConfig"
 | 
	
		
			
				|  |  | +          v-model="currentTab"
 | 
	
		
			
				|  |  | +          @tab-remove="deleteConfig"
 | 
	
		
			
				|  |  | +          closable
 | 
	
		
			
				|  |  | +        >
 | 
	
		
			
				|  |  | +          <el-tab-pane v-for="(item,index) in menu" :key="index" :label="item.name" :name="index" />
 | 
	
		
			
				|  |  | +        </el-tabs>
 | 
	
		
			
				|  |  | +      </el-col>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <el-col :span="20">
 | 
	
		
			
				|  |  | +        <el-button type="primary" round @click="handleCreate(true)">新增</el-button>
 | 
	
		
			
				|  |  | +        <el-button v-if="this.thisTab!=-1" type="success" round @click="handleCreate(false)">更新</el-button>
 | 
	
		
			
				|  |  | +        <div id="output"></div>
 | 
	
		
			
				|  |  | +      </el-col>
 | 
	
		
			
				|  |  | +    </el-row>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <el-dialog title="报表" :visible="dialogVisible">
 | 
	
		
			
				|  |  | +      <div>
 | 
	
		
			
				|  |  | +        <el-form ref="registerForm" :model="temp" size="small">
 | 
	
		
			
				|  |  | +          <el-form-item label="菜单名称:">
 | 
	
		
			
				|  |  | +            <el-input v-model="temp.name" />
 | 
	
		
			
				|  |  | +          </el-form-item>
 | 
	
		
			
				|  |  | +        </el-form>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      <div slot="footer">
 | 
	
		
			
				|  |  | +        <el-button @click="dialogVisible = false">取消</el-button>
 | 
	
		
			
				|  |  | +        <el-button type="primary" @click="createMenu">保存</el-button>
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    </el-dialog>
 | 
	
		
			
				|  |  | +  </div>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import $ from "jquery";
 | 
	
		
			
				|  |  | +import "pivottable";
 | 
	
		
			
				|  |  | +import "pivottable/dist/pivot.min.css";
 | 
	
		
			
				|  |  | +import "webpack-jquery-ui";
 | 
	
		
			
				|  |  | +import "pivottable/dist/c3_renderers";
 | 
	
		
			
				|  |  | +import { getPayment } from "@/api/payment";
 | 
	
		
			
				|  |  | +import { getMenu, postMenu, putMenu, deleteMenu } from "@/api/basic";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  name: "Payment",
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      list: [],
 | 
	
		
			
				|  |  | +      root: null,
 | 
	
		
			
				|  |  | +      menu: [],
 | 
	
		
			
				|  |  | +      currentTab: "",
 | 
	
		
			
				|  |  | +      dialogVisible: false,
 | 
	
		
			
				|  |  | +      temp: {
 | 
	
		
			
				|  |  | +        name: "",
 | 
	
		
			
				|  |  | +        code: "",
 | 
	
		
			
				|  |  | +        config: "",
 | 
	
		
			
				|  |  | +        parent: null,
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      thisTab: 0,
 | 
	
		
			
				|  |  | +      //判断是新增还是更新
 | 
	
		
			
				|  |  | +      dialogStart: true,
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  created() {},
 | 
	
		
			
				|  |  | +  mounted() {
 | 
	
		
			
				|  |  | +    this.getRootPayment();
 | 
	
		
			
				|  |  | +    this.getData();
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    getRootPayment() {
 | 
	
		
			
				|  |  | +      getMenu({}).then((res) => {
 | 
	
		
			
				|  |  | +        console.log(res.data);
 | 
	
		
			
				|  |  | +        if (res.data.length > 0) {
 | 
	
		
			
				|  |  | +          console.log("getMenu");
 | 
	
		
			
				|  |  | +          console.log(res.data);
 | 
	
		
			
				|  |  | +          this.menu = res.data;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // getMenuData() {
 | 
	
		
			
				|  |  | +    //   getMenu({
 | 
	
		
			
				|  |  | +    //     parent: this.root.id,
 | 
	
		
			
				|  |  | +    //   }).then((res) => {
 | 
	
		
			
				|  |  | +    //     this.menu = res;
 | 
	
		
			
				|  |  | +    //   });
 | 
	
		
			
				|  |  | +    // },
 | 
	
		
			
				|  |  | +    getData() {
 | 
	
		
			
				|  |  | +      getPayment().then((res) => {
 | 
	
		
			
				|  |  | +        this.list = res.data;
 | 
	
		
			
				|  |  | +        var renderers = $.extend(
 | 
	
		
			
				|  |  | +          $.pivotUtilities.renderers,
 | 
	
		
			
				|  |  | +          $.pivotUtilities.c3_renderers
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +        var config = { renderers: renderers };
 | 
	
		
			
				|  |  | +        this.setPivot(config);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    setPivot(config = {}, overwrite = true) {
 | 
	
		
			
				|  |  | +      this.$nextTick(() => {
 | 
	
		
			
				|  |  | +        $("#output").pivotUI(this.list, config, overwrite);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    loadConfig() {
 | 
	
		
			
				|  |  | +      this.setPivot(JSON.parse(this.menu[this.currentTab].config));
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    handleRemove() {},
 | 
	
		
			
				|  |  | +    saveConfig() {},
 | 
	
		
			
				|  |  | +    handleCreate(state) {
 | 
	
		
			
				|  |  | +      this.dialogVisible = true;
 | 
	
		
			
				|  |  | +      //更改状态
 | 
	
		
			
				|  |  | +      this.dialogStart = state;
 | 
	
		
			
				|  |  | +      if (state) {
 | 
	
		
			
				|  |  | +        console.log("alksjflkasjdfa");
 | 
	
		
			
				|  |  | +        this.temp = {
 | 
	
		
			
				|  |  | +          name: "",
 | 
	
		
			
				|  |  | +          code: "code",
 | 
	
		
			
				|  |  | +          config: "",
 | 
	
		
			
				|  |  | +          parent: this.root.id,
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        this.temp = this.menu[this.thisTab];
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    createMenu(state) {
 | 
	
		
			
				|  |  | +      this.temp.config = $("#output").data("pivotUIOptions");
 | 
	
		
			
				|  |  | +      delete this.temp.config["aggregators"];
 | 
	
		
			
				|  |  | +      delete this.temp.config["renderers"];
 | 
	
		
			
				|  |  | +      this.temp.config = JSON.stringify(this.temp.config);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      if (state) {
 | 
	
		
			
				|  |  | +        console.log(123123);
 | 
	
		
			
				|  |  | +        console.log(this.temp);
 | 
	
		
			
				|  |  | +        this.temp.code = "code";
 | 
	
		
			
				|  |  | +        postMenu(this.temp).then((res) => {
 | 
	
		
			
				|  |  | +          //将新建的菜单添加到变量menu里
 | 
	
		
			
				|  |  | +          this.menu.push(res.data);
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        putMenu(this.temp);
 | 
	
		
			
				|  |  | +        this.dialogVisible = false;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    deleteConfig(name) {
 | 
	
		
			
				|  |  | +      console.log(name);
 | 
	
		
			
				|  |  | +      // eslint-disable-next-line no-unused-vars
 | 
	
		
			
				|  |  | +      deleteMenu(this.menu[name].id).then((res) => {
 | 
	
		
			
				|  |  | +        this.menu.splice(name, 1);
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +<style>
 | 
	
		
			
				|  |  | +.main {
 | 
	
		
			
				|  |  | +  padding: 20px;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</style>
 |