chen пре 3 година
родитељ
комит
0f46e78a32

+ 9 - 1
src/api/dashboard.js

@@ -1,2 +1,10 @@
-import request from '@/utils/request'
+import request from "@/utils/request";
 
+// 获取消息列表
+export function getNoticeList(params) {
+  return request({
+    url: "/notice/list",
+    method: "get",
+    params,
+  });
+}

+ 2 - 1
src/store/getters.js

@@ -9,6 +9,7 @@ const getters = {
   name: state => state.user.name,
   menus: state => state.user.menus,
   customerId: state => state.user.customerId,
-  customerName: state => state.user.customerName
+  customerName: state => state.user.customerName,
+  showMessages: state => state.user.showMessages
 }
 export default getters

+ 136 - 109
src/store/modules/user.js

@@ -1,82 +1,105 @@
-import { login, logout, getInfo, getRouter } from '@/api/user'
-import { getToken, setToken, removeToken, getUserid, setUserid, removeUserid } from '@/utils/auth'
-import { resetRouter } from '@/router'
+import { login, logout, getInfo, getRouter } from "@/api/user";
+import {
+  getToken,
+  setToken,
+  removeToken,
+  getUserid,
+  setUserid,
+  removeUserid,
+} from "@/utils/auth";
+import { resetRouter } from "@/router";
 
 const getDefaultState = () => {
   return {
     token: getToken(), // token
     userid: getUserid(), // 用户id
-    name: '', // 用户名称
-    phone: '', // 用户手机
+    name: "", // 用户名称
+    phone: "", // 用户手机
     menus: "", // 菜单
-    customerId:'',//经销商ID
-    customerName:''//经销商名称
-  }
-}
+    customerId: "", //经销商ID
+    customerName: "", //经销商名称
+    showMessages: null, //
+  };
+};
 
-const state = getDefaultState()
+const state = getDefaultState();
 
 const mutations = {
   RESET_STATE: (state) => {
-    Object.assign(state, getDefaultState())
+    Object.assign(state, getDefaultState());
   },
   SET_USERID: (state, userid) => {
-    state.userid = userid
+    state.userid = userid;
   },
   SET_TOKEN: (state, token) => {
-    state.token = token
+    state.token = token;
   },
   SET_NAME: (state, name) => {
-    state.name = name
+    state.name = name;
   },
   SET_PHONE: (state, phone) => {
-    state.phone = phone
+    state.phone = phone;
   },
   SET_MENUS: (state, menus) => {
-    state.menus = menus
+    state.menus = menus;
   },
   SET_CUSTOMERID: (state, customerId) => {
-    state.customerId = customerId
+    state.customerId = customerId;
   },
   SET_CUSTOMERNAME: (state, customerName) => {
-    state.customerName = customerName
-  }
-}
+    state.customerName = customerName;
+  },
+  showMessage: (state, value) => {
+    if (value == "yes") {
+      state.showMessages = true;
+    } else {
+      state.showMessages = false;
+    }
+  },
+};
 
 const actions = {
   // user login
   login({ commit }, userInfo) {
-    const { username, password, code, codeValue } = userInfo
+    const { username, password, code, codeValue } = userInfo;
     return new Promise((resolve, reject) => {
-      login({ userName: username.trim(), password: password, code: code, codeValue: codeValue }).then(response => {
-        const { data } = response
-        commit('SET_TOKEN', data.token)
-        commit('SET_USERID', data.adminUserId)
-        setToken(data.token)
-        setUserid(data.adminUserId)
-        resolve()
-      }).catch(error => {
-        reject(error)
+      login({
+        userName: username.trim(),
+        password: password,
+        code: code,
+        codeValue: codeValue,
       })
-    })
+        .then((response) => {
+          const { data } = response;
+          commit("SET_TOKEN", data.token);
+          commit("SET_USERID", data.adminUserId);
+          setToken(data.token);
+          setUserid(data.adminUserId);
+          resolve();
+        })
+        .catch((error) => {
+          reject(error);
+        });
+    });
   },
 
   // get user info
   getInfo({ commit, state }) {
     return new Promise((resolve, reject) => {
       console.log(state);
-      getInfo(state.userid).then(response => {
-        const { data } = response
-        console.log(1111111,data);
+      getInfo(state.userid)
+        .then((response) => {
+          const { data } = response;
+          console.log(1111111, data);
 
-        if (!data) {
-          return reject('Verification failed, please Login again.')
-        }
-        console.log(data);
-        const { nickName, userName ,customerId,customerName} = data
-        
-        // 模拟请求数据
-        // const menus = [
+          if (!data) {
+            return reject("Verification failed, please Login again.");
+          }
+          console.log(data);
+          const { nickName, userName, customerId, customerName } = data;
+
+          // 模拟请求数据
+          // const menus = [
           // {
           //   'path': '/example',
           //   'component': 'Layout',
@@ -98,90 +121,94 @@ const actions = {
           //     }
           //   ]
           // },
-        // ]
-        // menus.push({ path: '*', redirect: '/404', hidden: true })
-        commit('SET_CUSTOMERID',customerId)
-        commit('SET_CUSTOMERNAME',customerName)
-        commit('SET_NAME', nickName)
-        commit('SET_PHONE', userName)
-        // commit("SET_MENUS", menus) // 触发vuex SET_MENUS 保存路由表到vuex
+          // ]
+          // menus.push({ path: '*', redirect: '/404', hidden: true })
+          commit("SET_CUSTOMERID", customerId);
+          commit("SET_CUSTOMERNAME", customerName);
+          commit("SET_NAME", nickName);
+          commit("SET_PHONE", userName);
+          // commit("SET_MENUS", menus) // 触发vuex SET_MENUS 保存路由表到vuex
 
-        localStorage.setItem("supply_user", JSON.stringify(data));
+          localStorage.setItem("supply_user", JSON.stringify(data));
 
-        resolve(data)
-      }).catch(error => {
-        reject(error)
-      })
-    })
+          resolve(data);
+        })
+        .catch((error) => {
+          reject(error);
+        });
+    });
   },
 
   getRouter({ commit, state }) {
     return new Promise((resolve, reject) => {
-      getRouter({adminUserId: state.userid}).then(response => {
-        const menus = response.data;
-        // 模拟请求数据
-        // const menus = [
-        //   {
-        //     'path': '/example',
-        //     'component': 'Layout',
-        //     'redirect': '/example/table',
-        //     'name': 'Example',
-        //     'meta': { 'title': 'Example', 'icon': 'el-icon-s-help' },
-        //     'children': [
-        //       {
-        //         'path': 'table',
-        //         'name': 'Table',
-        //         'component': 'table/index',
-        //         'meta': { 'title': 'Table', 'icon': 'table' }
-        //       },
-        //       {
-        //         'path': 'tree',
-        //         'name': 'Tree',
-        //         'component': 'tree/index',
-        //         'meta': { 'title': 'Tree', 'icon': 'tree' }
-        //       }
-        //     ]
-        //   },
-        // ]
-        // menus.push({ path: '*', redirect: '/404', hidden: true })
-        commit("SET_MENUS", menus)
-        resolve()
-      }).catch(error => {
-        reject(error)
-      })
-    })
+      getRouter({ adminUserId: state.userid })
+        .then((response) => {
+          const menus = response.data;
+          // 模拟请求数据
+          // const menus = [
+          //   {
+          //     'path': '/example',
+          //     'component': 'Layout',
+          //     'redirect': '/example/table',
+          //     'name': 'Example',
+          //     'meta': { 'title': 'Example', 'icon': 'el-icon-s-help' },
+          //     'children': [
+          //       {
+          //         'path': 'table',
+          //         'name': 'Table',
+          //         'component': 'table/index',
+          //         'meta': { 'title': 'Table', 'icon': 'table' }
+          //       },
+          //       {
+          //         'path': 'tree',
+          //         'name': 'Tree',
+          //         'component': 'tree/index',
+          //         'meta': { 'title': 'Tree', 'icon': 'tree' }
+          //       }
+          //     ]
+          //   },
+          // ]
+          // menus.push({ path: '*', redirect: '/404', hidden: true })
+          commit("SET_MENUS", menus);
+          resolve();
+        })
+        .catch((error) => {
+          reject(error);
+        });
+    });
   },
 
   // user logout
   logout({ commit, state }) {
     return new Promise((resolve, reject) => {
-      logout(state.token).then(() => {
-        removeToken() // must remove  token  first
-        removeUserid()
-        resetRouter()
-        commit('RESET_STATE')
-        resolve()
-      }).catch(error => {
-        reject(error)
-      })
-    })
+      logout(state.token)
+        .then(() => {
+          removeToken(); // must remove  token  first
+          removeUserid();
+          resetRouter();
+          commit("RESET_STATE");
+          resolve();
+        })
+        .catch((error) => {
+          reject(error);
+        });
+    });
   },
 
   // remove token
   resetToken({ commit }) {
-    return new Promise(resolve => {
-      removeToken() // must remove  token  first
-      removeUserid()
-      commit('RESET_STATE')
-      resolve()
-    })
-  }
-}
+    return new Promise((resolve) => {
+      removeToken(); // must remove  token  first
+      removeUserid();
+      commit("RESET_STATE");
+      resolve();
+    });
+  },
+};
 
 export default {
   namespaced: true,
   state,
   mutations,
-  actions
-}
-
+  actions,
+};

+ 251 - 10
src/views/dashboard/index.vue

@@ -1,30 +1,271 @@
 <template>
   <div class="dashboard-container">
-
     <el-row :gutter="10" class="top-container">
       <el-col :xs="24" :sm="12" :lg="12">
         <div class="today-content">欢迎登入供应链管理系统</div>
       </el-col>
     </el-row>
+
+    <!-- 弹窗 -->
+    <el-dialog
+      title="消息"
+      :visible.sync="showMessages"
+      width="50%"
+      :show-close="false"
+      :close-on-click-modal="false"
+    >
+      <el-radio-group v-model="type" @change="checkFn" size="">
+        <el-radio-button label="1">系统通知</el-radio-button>
+        <el-radio-button label="2">文件下发</el-radio-button>
+        <el-radio-button label="3">返利确认单</el-radio-button>
+      </el-radio-group>
+      <br />
+      <br />
+      <!-- 系统通知 -->
+      <div v-show="type == '1'">
+        <el-table
+          v-loading="listLoading"
+          :data="dataList"
+          element-loading-text="Loading"
+          border
+          fit
+          highlight-current-row
+          stripe
+        >
+          <el-table-column
+            align="center"
+            type="index"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="标题"
+            prop="title"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="来源"
+            prop="source"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="时间"
+            prop="issueTime"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label=""
+            min-width="160"
+            show-overflow-tooltip
+          >
+            <template slot-scope="">
+              <el-button type="text" class="textColor">查看</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <!-- 文件下发 -->
+      <div v-show="type == '2'">
+        <el-table
+          v-loading="listLoading"
+          :data="dataList"
+          element-loading-text="Loading"
+          border
+          fit
+          highlight-current-row
+          stripe
+        >
+          <el-table-column
+            align="center"
+            type="index"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="标题"
+            prop="title"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="来源"
+            prop="source"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="时间"
+            prop="issueTime"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label=""
+            min-width="160"
+            show-overflow-tooltip
+          >
+            <template slot-scope="">
+              <el-button type="text" class="textColor">下载</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <!-- 返利确认单 -->
+      <div v-show="type == '3'">
+        <el-table
+          v-loading="listLoading"
+          :data="dataList"
+          element-loading-text="Loading"
+          border
+          fit
+          highlight-current-row
+          stripe
+        >
+          <el-table-column
+            align="center"
+            type="index"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="经销商名称"
+            prop=""
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="确认人"
+            prop="customerName"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label="确认时间"
+            prop="customerName"
+            min-width="160"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            label=""
+            min-width="160"
+            show-overflow-tooltip
+          >
+            <template slot-scope="">
+              <el-button type="text" class="textColor">复核</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
+      <br />
+      <br />
+      <!-- 分页 -->
+      <div class="fr">
+        <el-pagination
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-sizes="[10, 20, 30, 50]"
+          :page-size="10"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="listTotal"
+        >
+        </el-pagination>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="closeFn">关闭</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
-import { mapGetters } from 'vuex'
-import { getInfo, getOrder, getGoodsRank  } from '@/api/dashboard'
-import { dateFormat } from '@/utils/util'
+import { getNoticeList } from "@/api/dashboard";
+import { mapGetters } from "vuex";
+import { getInfo, getOrder, getGoodsRank } from "@/api/dashboard";
+import { dateFormat } from "@/utils/util";
 
 export default {
-  name: 'Dashboard',
+  name: "Dashboard",
+  created() {
+    this.getDataList({
+      pageSize: this.pageSize,
+      pageNum: this.currentPage,
+      type: this.type,
+    });
+  },
+  computed: {
+    ...mapGetters(["showMessages"]),
+  },
   data() {
     return {
-
-    }
-  }
-}
+      type: "1",
+      currentPage: 1, // 当前页码
+      pageSize: 10, // 每页数量
+      listTotal: 0, // 列表总数
+      dataList: [],
+      listLoading: false, // 列表加载loading
+    };
+  },
+  methods: {
+    // 更改每页数量
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = 1;
+      this.getDataList({
+        pageSize: this.pageSize,
+        pageNum: this.currentPage,
+        type: this.type,
+      });
+    },
+    // 更改当前页
+    handleCurrentChange(val) {
+      this.currentPage = val;
+      this.getDataList({
+        pageSize: this.pageSize,
+        pageNum: this.currentPage,
+        type: this.type,
+      });
+    },
+    //获取列表数据
+    async getDataList(data) {
+      const res = await getNoticeList(data);
+      console.log(res);
+      this.dataList = res.data.records;
+      this.listTotal = res.data.total;
+    },
+    //选择
+    checkFn(v) {
+      this.type = v;
+      this.getDataList({
+        pageSize: this.pageSize,
+        pageNum: this.currentPage,
+        type: this.type,
+      });
+    },
+    //关闭
+    closeFn() {
+      this.$store.commit("user/showMessage", "no");
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
-
 .dashboard {
   &-container {
     background: #f5f5f5;

+ 23 - 1
src/views/finance/components/receivable_list-add.vue

@@ -325,6 +325,25 @@ export default {
 
     //新增
     async addFn() {
+      let aaa = this.dataList.map((v) => {
+        if (v.afterTaxAmount == "") {
+          this.$message.error("请输入不含税金额");
+          return 1;
+        }
+        if (v.tax == "") {
+          this.$message.error("请输入税额");
+          return 1;
+        }
+        if (v.totalAmount == "") {
+          this.$message.error("请输入总金额");
+          return 1;
+        }
+      });
+
+      let bbb = aaa.indexOf(1);
+      if (bbb != -1) {
+        return;
+      }
       this.dataList.forEach((v) => {
         let res = this.customerList.filter((i) => i.id == v.customerId);
         console.log(res);
@@ -334,7 +353,7 @@ export default {
         v.customerWalletId = res2[0].customerWalletId;
         v.walletId = res2[0].walletRebateId;
       });
-      console.log(this.dataList);
+
       await getFinanceOtherReceAdd({
         items: this.dataList,
         ...this.searchForm,
@@ -387,4 +406,7 @@ export default {
 .selectStyle {
   width: 100%;
 }
+.mar {
+  margin-top: 20px;
+}
 </style>

+ 46 - 7
src/views/finance/rebate_list.vue

@@ -90,6 +90,7 @@
               prop="examineStatus"
               min-width="160"
               show-overflow-tooltip
+              v-if="!isCustomer"
             >
               <template slot-scope="scope">
                 <el-tag v-show="scope.row.examineStatus == 'SAVE'">保存</el-tag>
@@ -128,6 +129,15 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="isCustomer"
+              align="center"
+              label="标题备注"
+              prop="policyDocNo"
+              min-width="160"
+              show-overflow-tooltip
+            ></el-table-column>
+            <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="经销商编码"
               prop="customerNumber"
@@ -135,6 +145,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="经销商名称"
               prop="customerName"
@@ -151,21 +162,22 @@
             <el-table-column
               align="center"
               label="总返利金额"
-              prop=""
+              prop="amount"
               min-width="160"
               show-overflow-tooltip
             >
-              <template slot-scope="scope">
-                {{ Math.abs(scope.row.amount) + scope.row.withholdAmount }}
-              </template>
             </el-table-column>
             <el-table-column
               align="center"
               label="返利金额"
-              prop="amount"
+              prop=""
               min-width="160"
               show-overflow-tooltip
-            ></el-table-column>
+            >
+              <template slot-scope="scope">
+                {{ scope.row.withholdAmount != 0 ? 0 : 0 }}
+              </template>
+            </el-table-column>
             <el-table-column
               align="center"
               label="暂扣返利"
@@ -181,6 +193,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="折让编号"
               prop="allowanceCode"
@@ -188,6 +201,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="折让账号"
               prop="allowanceAccount"
@@ -195,6 +209,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="已办理折让金额"
               prop="handledAllowanceAmount"
@@ -202,6 +217,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="折让对应收款单号"
               prop="allowanceOrderNo"
@@ -209,6 +225,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="政策文件流水号"
               prop="policyFileNo"
@@ -216,6 +233,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="政策文号"
               prop="policyDocNo"
@@ -223,6 +241,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="政策年份"
               prop="policyYear"
@@ -230,6 +249,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="政策月份"
               prop="policyMonth"
@@ -237,6 +257,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="政策归属部门"
               prop="policyOrg"
@@ -245,12 +266,14 @@
             ></el-table-column>
             <el-table-column
               align="center"
+              v-if="!isCustomer"
               label="客户区域"
               prop="customerArea"
               min-width="160"
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="客户属性"
               prop="customerAttr"
@@ -259,12 +282,14 @@
             ></el-table-column>
             <el-table-column
               align="center"
+              v-if="!isCustomer"
               label="奖励实际归属客户"
               prop="rewardActualCustomers"
               min-width="160"
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="备注1"
               prop="remark1"
@@ -272,6 +297,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="备注2"
               prop="remark2"
@@ -279,6 +305,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="制单人"
               prop="createBy"
@@ -286,6 +313,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="制单时间"
               prop="createTime"
@@ -293,6 +321,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="审核人"
               prop="examineBy"
@@ -300,6 +329,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="审核时间"
               prop="examineTime"
@@ -307,6 +337,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="确认人"
               prop="customerName"
@@ -314,6 +345,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="确认时间"
               prop="customerConfirmTime"
@@ -321,6 +353,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="复核人"
               prop="secondExamineBy"
@@ -328,6 +361,7 @@
               show-overflow-tooltip
             ></el-table-column>
             <el-table-column
+              v-if="!isCustomer"
               align="center"
               label="复核时间"
               prop="secondExamineTime"
@@ -345,6 +379,7 @@
                 <el-button
                   type="text"
                   class="textColor"
+                  v-if="!isCustomer"
                   @click="editFn(scope.row.rebateOrderId)"
                   >编辑</el-button
                 >
@@ -396,7 +431,11 @@
                 <el-button
                   type="text"
                   class="textColor"
-                  v-if="isCustomer && scope.row.examineStatus == 'OK_ONE'"
+                  v-if="
+                    isCustomer &&
+                    scope.row.examineStatus == 'OK_ONE' &&
+                    scope.row.withholdAmount == 0
+                  "
                   @click="confirmFn(scope.row.rebateOrderId)"
                   >确认</el-button
                 >

+ 10 - 2
src/views/finance/wallet.vue

@@ -1,5 +1,9 @@
-<template >
+<template>
   <div class="app-container">
+    <div class="sty" v-show="this.$route.query.id">
+      <el-page-header @back="goBack"> </el-page-header>
+    </div>
+
     <el-row>
       <el-col :xs="24" :sm="12" :lg="12">
         <div class="styl">现金钱包</div>
@@ -226,6 +230,10 @@ export default {
     ...mapGetters(["customerId"]),
   },
   methods: {
+    //返回
+    goBack() {
+      this.$router.push("/finance/balance_sum");
+    },
     //取消
     async cancelFn() {
       this.dialogForm = false;
@@ -281,4 +289,4 @@ export default {
 .styl {
   padding-top: 14px;
 }
-</style>
+</style>

+ 119 - 84
src/views/login/index.vue

@@ -1,21 +1,26 @@
 <template>
   <div class="login-container">
-    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left">
-
+    <el-form
+      ref="loginForm"
+      :model="loginForm"
+      :rules="loginRules"
+      class="login-form"
+      auto-complete="on"
+      label-position="left"
+    >
       <!-- <div class="title-container">
         <img src="@/assets/login/title.png" alt="">
       </div> -->
       <div class="image-container">
-        <img src="@/assets/login/image.png" alt="">
+        <img src="@/assets/login/image.png" alt="" />
       </div>
       <div class="right-container">
         <div class="empty-height" />
         <div class="form-container">
-
           <div class="title">供应链管理系统</div>
-<!--      <div class="logo">-->
-<!--        <img src="@/assets/login/logo.png" alt="">-->
-<!--      </div>-->
+          <!--      <div class="logo">-->
+          <!--        <img src="@/assets/login/logo.png" alt="">-->
+          <!--      </div>-->
 
           <el-form-item prop="username">
             <span class="svg-container">
@@ -48,7 +53,9 @@
               @keyup.enter.native="handleLogin"
             />
             <span class="show-pwd" @click="showPwd">
-              <svg-icon :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'" />
+              <svg-icon
+                :icon-class="passwordType === 'password' ? 'eye' : 'eye-open'"
+              />
             </span>
           </el-form-item>
 
@@ -66,13 +73,20 @@
               auto-complete="off"
               @keyup.enter.native="handleLogin"
             />
-            <div class="code" @click="getCode"><img :src="'data:image/jpeg;base64,' + codeImage" alt=""></div>
+            <div class="code" @click="getCode">
+              <img :src="'data:image/jpeg;base64,' + codeImage" alt="" />
+            </div>
           </el-form-item>
 
           <el-checkbox v-model="isRemenberPw">记住密码</el-checkbox>
 
           <div class="button-container">
-            <el-button :loading="loading" type="primary" @click.native.prevent="handleLogin">登录</el-button>
+            <el-button
+              :loading="loading"
+              type="primary"
+              @click.native.prevent="handleLogin"
+              >登录</el-button
+            >
           </div>
         </div>
       </div>
@@ -81,69 +95,75 @@
 </template>
 
 <script>
-import { validUsername } from '@/utils/validate'
-import Cookies from 'js-cookie'
-import { getCode } from '@/api/user'
+import { validUsername } from "@/utils/validate";
+import Cookies from "js-cookie";
+import { getCode } from "@/api/user";
 
 export default {
-  name: 'Login',
+  name: "Login",
   data() {
     const validateUsername = (rule, value, callback) => {
       if (value.length <= 0) {
-        callback(new Error('请输入用户名'))
+        callback(new Error("请输入用户名"));
       } else {
-        callback()
+        callback();
       }
-    }
+    };
     const validatePassword = (rule, value, callback) => {
       if (value.length <= 0) {
-        callback(new Error('请输入密码'))
+        callback(new Error("请输入密码"));
       } else {
-        callback()
+        callback();
       }
-    }
+    };
     const validateCode = (rule, value, callback) => {
       if (value.length <= 0) {
-        callback(new Error('请输入验证码'))
+        callback(new Error("请输入验证码"));
       } else {
-        callback()
+        callback();
       }
-    }
+    };
     return {
       loginForm: {
-        username: '',
-        password: '',
-        code: '',
-        codeValue: ''
+        username: "",
+        password: "",
+        code: "",
+        codeValue: "",
       },
       loginRules: {
-        username: [{ required: true, trigger: 'change', validator: validateUsername }],
-        password: [{ required: true, trigger: 'change', validator: validatePassword }],
-        codeValue: [{ required: true, trigger: 'change', validator: validateCode }],
+        username: [
+          { required: true, trigger: "change", validator: validateUsername },
+        ],
+        password: [
+          { required: true, trigger: "change", validator: validatePassword },
+        ],
+        codeValue: [
+          { required: true, trigger: "change", validator: validateCode },
+        ],
       },
       loading: false,
-      passwordType: 'password',
+      passwordType: "password",
       redirect: undefined,
       isRemenberPw: false,
-      codeImage: '',
-    }
+      codeImage: "",
+    };
   },
   watch: {
     $route: {
-      handler: function(route) {
-        this.redirect = route.query && route.query.redirect
+      handler: function (route) {
+        this.redirect = route.query && route.query.redirect;
       },
-      immediate: true
-    }
+      immediate: true,
+    },
   },
   created() {
     // 获取缓存信息
-    if(localStorage.getItem("supply_login")) {
+    if (localStorage.getItem("supply_login")) {
       let storageData = JSON.parse(localStorage.getItem("supply_login"));
       this.loginForm.username = storageData.username;
       this.isRemenberPw = storageData.isRemenberPw;
     }
-    if(this.isRemenberPw) {
+    if (this.isRemenberPw) {
       this.getCookie();
     }
 
@@ -152,57 +172,63 @@ export default {
   methods: {
     // 获取验证码
     getCode() {
-      getCode().then(res => {
+      getCode().then((res) => {
         console.log(res);
         this.loginForm.code = res.data.code;
         this.codeImage = res.data.pic;
-      })
+      });
     },
 
     // 显示隐藏密码
     showPwd() {
-      if (this.passwordType === 'password') {
-        this.passwordType = ''
+      if (this.passwordType === "password") {
+        this.passwordType = "";
       } else {
-        this.passwordType = 'password'
+        this.passwordType = "password";
       }
       this.$nextTick(() => {
-        this.$refs.password.focus()
-      })
+        this.$refs.password.focus();
+      });
     },
 
     // 登录
     handleLogin() {
       console.log(this.loginForm);
-      this.$refs.loginForm.validate(valid => {
+      this.$refs.loginForm.validate((valid) => {
         if (valid) {
-          this.loading = true
-          this.$store.dispatch('user/login', this.loginForm).then(() => {
-            console.log(this.redirect);
-            this.$router.push({ path: this.redirect || '/' })
-            this.saveUnAndPw();
-            this.loading = false
-          }).catch(() => {
-            this.getCode();
-            this.loginForm.codeValue = '';
-            this.loading = false
-          })
+          this.loading = true;
+          this.$store
+            .dispatch("user/login", this.loginForm)
+            .then(() => {
+              console.log(this.redirect);
+
+              this.$router.push({ path: this.redirect || "/" });
+              this.$store.commit("user/showMessage", "yes");
+              this.saveUnAndPw();
+
+              this.loading = false;
+            })
+            .catch(() => {
+              this.getCode();
+              this.loginForm.codeValue = "";
+              this.loading = false;
+            });
         } else {
-          console.log('error submit!!')
-          return false
+          console.log("error submit!!");
+          return false;
         }
-      })
+      });
     },
 
     // 处理账号密码的储存
     saveUnAndPw() {
       let storageData = {
         username: this.loginForm.username,
-        isRemenberPw: this.isRemenberPw
-      }
+        isRemenberPw: this.isRemenberPw,
+      };
       localStorage.setItem("supply_login", JSON.stringify(storageData));
 
-      if(this.isRemenberPw) {
+      if (this.isRemenberPw) {
         this.setCookie(this.loginForm.username, this.loginForm.password, 7);
       }
     },
@@ -212,20 +238,30 @@ export default {
       var exdate = new Date(); //获取时间
       exdate.setTime(exdate.getTime() + 24 * 60 * 60 * 1000 * exdays); //保存的天数
       //字符串拼接cookie
-      window.document.cookie = "supply_username" + "=" + c_name + ";path=/;expires=" + exdate.toGMTString();
-      window.document.cookie = "supply_password" + "=" + c_pwd + ";path=/;expires=" + exdate.toGMTString();
+      window.document.cookie =
+        "supply_username" +
+        "=" +
+        c_name +
+        ";path=/;expires=" +
+        exdate.toGMTString();
+      window.document.cookie =
+        "supply_password" +
+        "=" +
+        c_pwd +
+        ";path=/;expires=" +
+        exdate.toGMTString();
     },
 
     //读取cookie
-    getCookie: function() {
+    getCookie: function () {
       if (document.cookie.length > 0) {
-        var arr = document.cookie.split('; '); //这里显示的格式需要切割一下自己可输出看下
+        var arr = document.cookie.split("; "); //这里显示的格式需要切割一下自己可输出看下
         for (var i = 0; i < arr.length; i++) {
-          var arr2 = arr[i].split('='); //再次切割
+          var arr2 = arr[i].split("="); //再次切割
           //判断查找相对应的值
-          if (arr2[0] == 'supply_username') {
+          if (arr2[0] == "supply_username") {
             this.loginForm.username = arr2[1]; //保存到保存数据的地方
-          } else if (arr2[0] == 'supply_password') {
+          } else if (arr2[0] == "supply_password") {
             this.loginForm.password = arr2[1];
           }
         }
@@ -233,20 +269,19 @@ export default {
     },
 
     //清除cookie
-    clearCookie: function() {
+    clearCookie: function () {
       this.setCookie("", "", -1); //修改2值都为空,天数为负1天就好了
-    }
-
-  }
-}
+    },
+  },
+};
 </script>
 
 <style lang="scss">
 /* 修复input 背景不协调 和光标变色 */
 /* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */
 
-$bg:#283443;
-$light_gray:#fff;
+$bg: #283443;
+$light_gray: #fff;
 $cursor: #fff;
 $back: #333;
 
@@ -258,7 +293,7 @@ $back: #333;
 
 /* reset element-ui css */
 .login-container {
-  background: url('~@/assets/login/background.png') center center;
+  background: url("~@/assets/login/background.png") center center;
   background-size: cover;
   .el-input {
     display: inline-block;
@@ -302,9 +337,9 @@ $back: #333;
 </style>
 
 <style lang="scss" scoped>
-$bg:#2d3a4b;
-$dark_gray:#889aa4;
-$light_gray:#eee;
+$bg: #2d3a4b;
+$dark_gray: #889aa4;
+$light_gray: #eee;
 
 .login-container {
   min-height: 100%;
@@ -365,7 +400,7 @@ $light_gray:#eee;
 
   .svg-container {
     padding: 6px 5px 6px 5px;
-    color: #33AEF7;
+    color: #33aef7;
     vertical-align: middle;
     width: 30px;
     display: inline-block;
@@ -409,7 +444,7 @@ $light_gray:#eee;
       height: 45px;
       border-radius: 45px;
       background: #33aef7;
-      box-shadow: 2px 3px 8px 0px rgba(5,155,245,0.75);
+      box-shadow: 2px 3px 8px 0px rgba(5, 155, 245, 0.75);
     }
   }
 }