Browse Source

汇率管理

QuKatie 3 years ago
parent
commit
ed74435107

+ 283 - 0
src/views/basicData/rateManagement/detailsPage.vue

@@ -0,0 +1,283 @@
+<template>
+  <div class="borderless" v-loading="allloading">
+    <div class="customer-head">
+      <div class="customer-back">
+        <el-button
+          type="danger"
+          style="border: none;background: none;color: red"
+          icon="el-icon-arrow-left"
+          @click="backToList"
+          >返回列表
+        </el-button>
+      </div>
+      <div class="add-customer-btn">
+        <el-button
+          type="primary"
+          size="small"
+          v-if="detailData.status == 1"
+          class="el-button--small-yh "
+          :disabled="form.status > 0"
+          @click.stop="openEdit"
+          >编辑
+        </el-button>
+        <el-button
+          class="el-button--small-yh"
+          type="primary"
+          :disabled="loadingBtn || detailData.status == 1"
+          size="small"
+          @click="editCustomer"
+          >保存数据
+        </el-button>
+      </div>
+    </div>
+    <div class="customer-main">
+      <containerTitle title="基础资料"></containerTitle>
+      <basic-container>
+        <avue-form
+          class="trading-form"
+          ref="form"
+          v-model="form"
+          :option="option"
+        />
+      </basic-container>
+      <containerTitle title="基础明细"></containerTitle>
+      <basic-container>
+        <avue-crud
+          ref="crud"
+          v-model="crudForm"
+          :option="optionList"
+          :data="dataList"
+          :table-loading="loading"
+          :cell-style="cellStyle"
+        >
+        </avue-crud>
+      </basic-container>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getToken } from "@/util/auth";
+import { dateFormat } from "@/util/date";
+import { detail, submit, delItem } from "@/api/salaryManagement/primarySchool";
+import { optionList } from "./js/optionList";
+import reportDialog from "@/components/report-dialog/main";
+export default {
+  name: "detailsPage",
+  data() {
+    return {
+      time: "",
+      crudForm: {},
+      loading: false,
+      allloading: false,
+      loadingBtn: false,
+      form: {},
+      dataList: [],
+      drawer: false,
+      tableHeight: 0,
+      option: {
+        menuBtn: false,
+        labelWidth: 100,
+        column: [
+          {
+            label: "货币名称",
+            prop: "a",
+            span: 6
+          },
+          {
+            label: "汇率类型",
+            prop: "b",
+            type: "select",
+            filterable: true,
+            props: {
+              label: "dictValue",
+              value: "dictValue"
+            },
+            dicData: [
+              {
+                dictValue: "年汇率",
+                dictKey: 0
+              },
+              {
+                dictValue: "月汇率",
+                dictKey: 1
+              },
+              {
+                dictValue: "日汇率",
+                dictKey: 2
+              }
+            ],
+            span: 6
+          },
+          {
+            label: "汇率年度",
+            prop: "c",
+            type: "year",
+            valueFormat: "yyyy",
+            span: 6
+          },
+          {
+            label: "月份",
+            prop: "d",
+            type: "select",
+            filterable: true,
+            dicUrl: "/api/blade-system/dict-biz/dictionary?code=month",
+            props: {
+              label: "dictValue",
+              value: "dictKey"
+            },
+            span: 6,
+            display: false
+          }
+        ]
+      },
+      optionList: optionList
+    };
+  },
+  props: {
+    detailData: {
+      type: Object
+    }
+  },
+  components: {
+    reportDialog
+  },
+  created() {
+    if (this.detailData.id) {
+      this.getDetail(this.detailData.id);
+    }
+    if (this.detailData.status == 1) {
+      this.option.disabled = true;
+    }
+    this.optionList.height = 450;
+  },
+  methods: {
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    getDetail(id) {
+      // detail(id)
+      //   .then(res => {
+      //     this.form = res.data.data;
+      //     this.getItemDetail();
+      //     this.getitemAnnex();
+      //   })
+      //   .finally(() => {
+      //     this.allloading = false;
+      //   });
+    },
+    rowDel(row) {
+      this.$confirm("确定删除数据?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        if (row.id) {
+          delItem(row.id).then(res => {
+            this.$message({
+              type: "success",
+              message: "删除成功!"
+            });
+            this.getItemDetail();
+          });
+        } else {
+          this.$message({
+            type: "success",
+            message: "删除成功!"
+          });
+          this.dataList.splice(row.$index, 1);
+        }
+      });
+    },
+    //修改提交触发
+    editCustomer() {
+      this.$refs["form"].validate((valid, done) => {
+        done();
+        if (valid) {
+          this.loadingBtn = true;
+          submit({
+            ...this.form,
+            salaryType: "小学部",
+            salaryItemList: this.dataList
+          })
+            .then(res => {
+              this.$message.success("保存成功");
+              this.form = res.data.data;
+              this.getItemDetail();
+            })
+            .finally(() => {
+              this.loadingBtn = false;
+            });
+        } else {
+          return false;
+        }
+      });
+    },
+    openEdit() {
+      const data = {
+        moduleName: "xxb",
+        tableName: "primary_school",
+        billId: this.form.id,
+        no: localStorage.getItem("browserID"),
+        billNo: this.form.annual + "-" + this.form.moon
+      };
+      this.checkLock(data).then(res => {
+        if (res.data.code == 200) {
+          this.onLock(data).then(res => {
+            if (res.data.code == 200) {
+              this.detailData.status = 2;
+              this.option = this.$options.data().option;
+            }
+          });
+        }
+      });
+    },
+    //返回列表
+    backToList() {
+      if (this.form.id) {
+        this.unLock({
+          moduleName: "xxb",
+          tableName: "primary_school",
+          billId: this.form.id,
+          billNo: this.form.annual + "-" + this.form.moon
+        });
+      }
+      this.$emit("goBack");
+      this.leaveDetailsKey(this.$route.name);
+    }
+  },
+  watch: {
+    "form.b": function(row) {
+      console.log(row);
+      if (row == "日汇率") {
+        this.findObject(this.option.column, "d").display = true;
+        this.findObject(this.optionList.column, "DAY").hide = false;
+      } else {
+        this.findObject(this.option.column, "d").display = false;
+        this.findObject(this.optionList.column, "DAY").hide = true;
+      }
+    }
+  }
+};
+</script>
+
+<style>
+.headerCellClass {
+  color: #fff !important;
+  background: #a4cf57 !important;
+}
+</style>
+<style lang="scss" scoped>
+.trading-form ::v-deep .el-form-item {
+  margin-bottom: 4px !important;
+}
+::v-deep .el-form-item__error {
+  display: none !important;
+}
+.schoolupload ::v-deep .el-upload-list {
+  display: none;
+}
+.abnormal ::v-deep .el-dialog__body {
+  padding: 10px 20px;
+}
+</style>

+ 232 - 0
src/views/basicData/rateManagement/index.vue

@@ -0,0 +1,232 @@
+<template>
+  <div>
+    <basic-container v-show="isShow" class="page-crad">
+      <avue-crud
+        ref="crud"
+        :option="option"
+        :data="dataList"
+        :before-open="beforeOpen"
+        :page.sync="page"
+        :search.sync="search"
+        @search-change="searchChange"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+        @refresh-change="refreshChange"
+        @on-load="onLoad"
+        :table-loading="loading"
+        @saveColumn="saveColumn"
+        @resetColumn="resetColumn"
+        @selection-change="selectionChange"
+        :cell-style="cellStyle"
+        @search-criteria-switch="searchCriteriaSwitch"
+      >
+        <template slot-scope="{ row }" slot="updateUser">
+          <span>{{ row.updateUserName }}</span>
+        </template>
+        <template slot-scope="{ row, index }" slot="menu">
+          <el-button type="text" size="small" @click.stop="editOpen(row, 1)">
+            查看
+          </el-button>
+          <!-- <el-button type="text" size="small" @click.stop="editOpen(row, 1)">
+            编辑
+          </el-button> -->
+          <el-button
+            type="text"
+            size="small"
+            @click.stop="rowDel(row, index)"
+            :disabled="row.status > 0"
+          >
+            删除
+          </el-button>
+        </template>
+      </avue-crud>
+    </basic-container>
+    <detailPage
+      v-if="!isShow"
+      ref="detail"
+      @goBack="goBack"
+      @copyOrder="copyOrder"
+      :detailData="detailData"
+    ></detailPage>
+  </div>
+</template>
+
+<script>
+import detailPage from "./detailsPage";
+import { getList, remove } from "@/api/salaryManagement/primarySchool";
+export default {
+  name: "index",
+  components: {
+    detailPage
+  },
+  data() {
+    return {
+      selectionList: [],
+      form: {},
+      dataList: [],
+      loading: false,
+      isShow: true,
+      detailData: {},
+      page: {
+        pageSize: 10,
+        currentPage: 1
+      },
+      option: {
+        searchShow: true,
+        searchMenuSpan: 16,
+        align: "center",
+        searchSpan: 8,
+        border: true,
+        index: true,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        menuWidth: 120,
+        tip: false,
+        selection: true,
+        searchIcon: true,
+        searchIndex: 2,
+        addBtnText: "新单",
+        stripe: true,
+        column: [
+          {
+            label: "货币代码",
+            prop: "A",
+            overHidden: true,
+            search:true
+          },
+          {
+            label: "名称",
+            prop: "B",
+            overHidden: true
+          },
+          {
+            label: "符号",
+            prop: "C",
+            overHidden: true
+          },
+          {
+            label: "本位币",
+            prop: "D",
+            overHidden: true
+          },
+          {
+            label: "默认汇率",
+            prop: "E",
+            overHidden: true
+          },
+          {
+            label: "备注",
+            prop: "remarks",
+            overHidden: true
+          }
+        ]
+      }
+    };
+  },
+  created() {
+    this.option.height = window.innerHeight - 210;
+  },
+  activated() {
+    if (this.$route.query.check) {
+      this.isShow = true;
+      setTimeout(() => {
+        this.editOpen({ id: this.$route.query.check.billId }, 1);
+      }, 100);
+    }
+  },
+  methods: {
+    searchCriteriaSwitch(type) {
+      if (type) {
+        this.option.height = this.option.height - 46;
+      } else {
+        this.option.height = this.option.height + 46;
+      }
+      this.$refs.crud.getTableHeight();
+    },
+    cellStyle() {
+      return "padding:0;height:40px;";
+    },
+    selectionChange(list) {
+      this.selectionList = list;
+    },
+    //点击搜索按钮触发
+    searchChange(params, done) {
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.search);
+    },
+    currentChange(val) {
+      this.page.currentPage = val;
+    },
+    sizeChange(val) {
+      this.page.currentPage = 1;
+      this.page.pageSize = val;
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      params.salaryType = "小学部";
+      getList(
+        page.currentPage,
+        page.pageSize,
+        Object.assign(params, this.search)
+      )
+        .then(res => {
+          this.dataList = res.data.data.records ? res.data.data.records : [];
+          this.page.total = res.data.data.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    //新增跳转页面
+    beforeOpen() {
+      this.isShow = false;
+    },
+    editOpen(row, status) {
+      this.detailData = {
+        id: row.id,
+        status: status
+      };
+      this.isShow = false;
+    },
+    rowDel(row, index, done) {
+      this.$confirm("确定删除数据?", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        remove(row.id).then(res => {
+          if (res.data.code == 200) {
+            this.$message({
+              type: "success",
+              message: "删除成功!"
+            });
+            this.onLoad(this.page, this.search);
+          }
+        });
+      });
+    },
+    goBack() {
+      if (this.$route.query.check) {
+        this.$router.$avueRouter.closeTag(this.$route.fullPath);
+        this.$router.push({
+          path: "/salaryManagement/primarySchool/index"
+        });
+      }
+      this.detailData = this.$options.data().detailData;
+      this.onLoad(this.page, this.search);
+      this.isShow = true;
+    }
+  }
+};
+</script>
+
+<style scoped>
+.page-crad ::v-deep .basic-container__card {
+  height: 94.2vh;
+}
+</style>

+ 77 - 0
src/views/basicData/rateManagement/js/optionList.js

@@ -0,0 +1,77 @@
+import {
+  validatenumord,
+  cardid
+} from "@/util/validate";
+const validateDecimal = (rule, value, callback) => {
+  if (value != "") {
+    if (validatenumord(value, 1)) {
+      callback(new Error("请输入数字"));
+    } else {
+      callback();
+    }
+  } else {
+    callback();
+  }
+};
+const validateNumber = (rule, value, callback) => {
+  if (value != "") {
+    if (cardid(value)[0]) {
+      callback(new Error(cardid(value)[1]));
+    } else {
+      callback();
+    }
+  } else {
+    callback();
+  }
+};
+export const optionList = {
+  searchMenuSpan: 18,
+  addBtn: false,
+  border: true,
+  align: "center",
+  index: true,
+  viewBtn: false,
+  editBtn: false,
+  delBtn: false,
+  menu:false,
+  stripe: true,
+  dialogFullscreen: true,
+  column: [{
+    label: "年",
+    prop: "A",
+    width: 150,
+    overHidden: true,
+  }, {
+    label: "月",
+    prop: "B",
+    width: 150,
+    overHidden: true,
+  },{
+    label: "日",
+    prop: "DAY",
+    width: 150,
+    overHidden: true,
+    hide:true,
+    showColumn:false,
+  }, {
+    label: "应收汇率",
+    prop: "C",
+    width: 150,
+    overHidden: true,
+  }, {
+    label: "应付汇率",
+    prop: "D",
+    width: 150,
+    overHidden: true,
+  }, {
+    label: "实付汇率",
+    prop: "E",
+    width: 150,
+    overHidden: true,
+  }, {
+    label: "实付汇率",
+    prop: "F",
+    width: 150,
+    overHidden: true,
+  }]
+}