parent
86d919887c
commit
fa465a2b62
@ -0,0 +1 @@
|
|||||||
|
node_modules
|
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
presets: [
|
||||||
|
'@vue/cli-plugin-babel/preset'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "es5",
|
||||||
|
"module": "esnext",
|
||||||
|
"baseUrl": "./",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"paths": {
|
||||||
|
"@/*": [
|
||||||
|
"src/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lib": [
|
||||||
|
"esnext",
|
||||||
|
"dom",
|
||||||
|
"dom.iterable",
|
||||||
|
"scripthost"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"name": "supermarket-manager",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vue-cli-service serve",
|
||||||
|
"serve": "vue-cli-service serve",
|
||||||
|
"build": "vue-cli-service build"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"axios.js": "1.6.3",
|
||||||
|
"core-js": "^3.8.3",
|
||||||
|
"jquery": "^3.6.4",
|
||||||
|
"js-cookie": "^3.0.1",
|
||||||
|
"qs": "^6.11.1",
|
||||||
|
"vue": "^2.6.14",
|
||||||
|
"vue-router": "^3.5.1",
|
||||||
|
"vue-vibe": "8.2.6",
|
||||||
|
"vuex": "^3.6.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vue/cli-plugin-babel": "~5.0.0",
|
||||||
|
"@vue/cli-plugin-router": "~5.0.0",
|
||||||
|
"@vue/cli-plugin-vuex": "~5.0.0",
|
||||||
|
"@vue/cli-service": "~5.0.0",
|
||||||
|
"element-ui": "^2.15.13",
|
||||||
|
"sass": "^1.32.7",
|
||||||
|
"sass-loader": "^12.0.0",
|
||||||
|
"vue-template-compiler": "^2.6.14",
|
||||||
|
"webpack": "^5.76.2"
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"> 1%",
|
||||||
|
"last 2 versions",
|
||||||
|
"not dead"
|
||||||
|
],
|
||||||
|
"description": "## Project setup ``` npm install ```",
|
||||||
|
"main": "babel.config.js",
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC"
|
||||||
|
}
|
After Width: | Height: | Size: 8.6 KiB |
@ -0,0 +1,23 @@
|
|||||||
|
<!--
|
||||||
|
* @Description:
|
||||||
|
* @Author:
|
||||||
|
* @Date: 09-07 20:58:35
|
||||||
|
-->
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<!-- <link rel="icon" href="<%= BASE_URL %>favicon.ico"> -->
|
||||||
|
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
|
||||||
|
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<noscript>
|
||||||
|
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||||
|
</noscript>
|
||||||
|
<div id="app"></div>
|
||||||
|
<!-- built files will be auto injected -->
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,22 @@
|
|||||||
|
<!--
|
||||||
|
* @Description:
|
||||||
|
* @Author:
|
||||||
|
* @Date: 09-07 20:58:35
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div id="app">
|
||||||
|
<router-view/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import '@/assets/font/font.css'
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body,html {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,37 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/goods_management/goods'
|
||||||
|
|
||||||
|
/*列表显示*/
|
||||||
|
export function queryPageByQo(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQo", data)
|
||||||
|
}
|
||||||
|
/*保存*/
|
||||||
|
export function save(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/save", data)
|
||||||
|
}
|
||||||
|
/*上/下架业务*/
|
||||||
|
export function upOrdown(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/upOrdown", data)
|
||||||
|
}
|
||||||
|
//修改
|
||||||
|
export function update(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/update", data)
|
||||||
|
}
|
||||||
|
/*查询商品信息*/
|
||||||
|
export function queryGoodsById(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/queryGoodsById", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function selected_goodsAll() {
|
||||||
|
return ajaxGet(apiPrefix + "/selected_goodsAll", {})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function selected_storeAll() {
|
||||||
|
return ajaxGet(apiPrefix + "/selected_storeAll", {})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function returnGoods(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/returnGoods", data)
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/goods_management/goods_category'
|
||||||
|
/*保存*/
|
||||||
|
export function save(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/save", data)
|
||||||
|
}
|
||||||
|
/*修改*/
|
||||||
|
export function update(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/update", data)
|
||||||
|
}
|
||||||
|
/*停用*/
|
||||||
|
export function deactivate(sid) {
|
||||||
|
return ajaxPost(apiPrefix + "/deactivate", {cid:sid})
|
||||||
|
}
|
||||||
|
/*列表显示*/
|
||||||
|
export function queryPageByQo(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQo", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getNormalCategoryAll(){
|
||||||
|
return ajaxGet(apiPrefix+"/normalCategoryAll")
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/goods_management/goods_store'
|
||||||
|
|
||||||
|
/*列表显示*/
|
||||||
|
export function queryPageByQo(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQo", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryGoodsStoreById(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/queryGoodsStoreById", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function updateInventory(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/updateInventory", data)
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/goods_management/point_products'
|
||||||
|
|
||||||
|
/*列表显示*/
|
||||||
|
export function queryPageByQo(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQo", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function del(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/del", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryOptionGoods() {
|
||||||
|
return ajaxGet(apiPrefix + "/queryOptionGoods", {})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function savePointGoods(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/savePointGoods", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function queryPointGoodsById(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/queryPointGoodsById", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function updatePointGoods(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/updatePointGoods", data)
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/goods_management/statistic_sale'
|
||||||
|
|
||||||
|
/*列表显示*/
|
||||||
|
export function queryPageByQo(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQo", data)
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
|
||||||
|
const apiPrefix_in = '/inventory_management/detail_store_goods_in'
|
||||||
|
const apiPrefix_out = '/inventory_management/detail_store_goods_out'
|
||||||
|
/**入库模块**/
|
||||||
|
/*入库保存*/
|
||||||
|
export function saveIn(data) {
|
||||||
|
return ajaxPost(apiPrefix_in + "/save", data)
|
||||||
|
}
|
||||||
|
/*入库列表显示*/
|
||||||
|
export function queryPageByQoIn(data) {
|
||||||
|
return ajaxPost(apiPrefix_in + "/queryPageByQo", data)
|
||||||
|
}
|
||||||
|
/*删除入库记录*/
|
||||||
|
export function delIn(data) {
|
||||||
|
return ajaxPost(apiPrefix_in + "/delIn", data)
|
||||||
|
}
|
||||||
|
/*删除出库记录*/
|
||||||
|
export function delOut(data) {
|
||||||
|
return ajaxPost(apiPrefix_out + "/delOut", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryOptionsSuppliers() {
|
||||||
|
return ajaxGet(apiPrefix_in + "/queryOptionsSuppliers", {})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**出库模块**/
|
||||||
|
/*出库列表显示*/
|
||||||
|
export function queryPageByQoOut(data) {
|
||||||
|
return ajaxPost(apiPrefix_out + "/queryPageByQoOut", data)
|
||||||
|
}
|
||||||
|
/*初始化选择框*/
|
||||||
|
export function initOutOptions() {
|
||||||
|
return ajaxGet(apiPrefix_out + "/initOutOptions",{})
|
||||||
|
}
|
||||||
|
/*出库选择商品导致仓库改变*/
|
||||||
|
export function changeOutGoods(data) {
|
||||||
|
return ajaxGet(apiPrefix_out + "/changeOutGoods",data)
|
||||||
|
}
|
||||||
|
/*出库选择仓库导致商品改变*/
|
||||||
|
export function changeOutStore(data) {
|
||||||
|
return ajaxGet(apiPrefix_out + "/changeOutStore",data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function queryOutGoods(data) {
|
||||||
|
return ajaxPost(apiPrefix_out + "/queryOutGoods", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function saveOut(data) {
|
||||||
|
return ajaxPost(apiPrefix_out + "/save", data)
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
|
||||||
|
const apiPrefix = '/inventory_management/detail_store_goods/notice'
|
||||||
|
|
||||||
|
export function queryPageNoticeIn(data) {
|
||||||
|
return ajaxPost(apiPrefix+ "/queryPageNoticeIn", data)
|
||||||
|
}
|
||||||
|
export function queryPageNoticeOut_shelves(data) {
|
||||||
|
return ajaxPost(apiPrefix+ "/queryPageNoticeOut_shelves", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function saveOut_shelves(data) {
|
||||||
|
return ajaxPost(apiPrefix+ "/saveOut_shelves", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryPageNoticeOut_untreated(data) {
|
||||||
|
return ajaxPost(apiPrefix+ "/queryPageNoticeOut_untreated", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function resolveOutUntreatedForm(data) {
|
||||||
|
return ajaxPost(apiPrefix+ "/resolveOutUntreatedForm", data)
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/inventory_management/store/storage_situation'
|
||||||
|
export function queryPageByQo(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQo", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryStoreGoodsByStoreId(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryStoreGoodsByStoreId", data)
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const storeApiPrefix = '/inventory_management/store'
|
||||||
|
|
||||||
|
//获取仓库信息
|
||||||
|
export function storeList(data) {
|
||||||
|
return ajaxPost(storeApiPrefix + "/list", data)
|
||||||
|
}
|
||||||
|
/*保存*/
|
||||||
|
export function save(data) {
|
||||||
|
return ajaxPost(storeApiPrefix + "/save", data)
|
||||||
|
}
|
||||||
|
/*修改*/
|
||||||
|
export function update(data) {
|
||||||
|
return ajaxPost(storeApiPrefix + "/update", data)
|
||||||
|
}
|
||||||
|
/*停用*/
|
||||||
|
export function deactivate(sid) {
|
||||||
|
return ajaxPost(storeApiPrefix + "/deactivate", {sid:sid})
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/inventory_management/supplier'
|
||||||
|
|
||||||
|
//获取供货商信息
|
||||||
|
export function queryPageSupplier(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQo", data)
|
||||||
|
}
|
||||||
|
export function saveSupplier(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/save", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function updateSupplier(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/update", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryByCn(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/queryByCn", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function delSupplier(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/deactivate", data)
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/member_management/member'
|
||||||
|
|
||||||
|
/*列表显示*/
|
||||||
|
export function queryPageByQo(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQo", data)
|
||||||
|
}
|
||||||
|
/*删除操作*/
|
||||||
|
export function delMember(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/delMember", data)
|
||||||
|
}
|
||||||
|
/*保存*/
|
||||||
|
export function save(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/save", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
//修改
|
||||||
|
export function update(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/update", data)
|
||||||
|
}
|
||||||
|
/*查询会员信息*/
|
||||||
|
export function queryMemberById(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/queryMemberById", data)
|
||||||
|
}
|
||||||
|
export function queryMemberByPhone(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/queryMemberByPhone", data)
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
import {ajaxGet} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/personal'
|
||||||
|
|
||||||
|
export function queryInformation() {
|
||||||
|
return ajaxGet(apiPrefix + "/information", {})
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/personnel_management/dept'
|
||||||
|
|
||||||
|
//获取仓库信息
|
||||||
|
export function listByQo(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/list", data)
|
||||||
|
}
|
||||||
|
/*保存*/
|
||||||
|
export function save(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/save", data)
|
||||||
|
}
|
||||||
|
/*修改*/
|
||||||
|
export function update(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/update", data)
|
||||||
|
}
|
||||||
|
/*停用*/
|
||||||
|
export function deactivate(id) {
|
||||||
|
return ajaxPost(apiPrefix + "/deactivate", {id:id})
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/personnel_management/employee'
|
||||||
|
|
||||||
|
//获取仓库信息
|
||||||
|
export function pageByQo(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/list", data)
|
||||||
|
}
|
||||||
|
/*保存*/
|
||||||
|
export function save(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/save", data)
|
||||||
|
}
|
||||||
|
/*修改*/
|
||||||
|
export function update(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/update", data)
|
||||||
|
}
|
||||||
|
/*离职*/
|
||||||
|
export function deactivate(id) {
|
||||||
|
return ajaxPost(apiPrefix + "/deactivate", {id:id})
|
||||||
|
}
|
||||||
|
/*详情*/
|
||||||
|
export function detail(id) {
|
||||||
|
return ajaxGet(apiPrefix + "/detail", {uid:id})
|
||||||
|
}
|
||||||
|
/*修改按钮*/
|
||||||
|
export function editBtnClick(id) {
|
||||||
|
return ajaxGet(apiPrefix + "/editbtn", {uid:id})
|
||||||
|
}
|
||||||
|
/*重置密码*/
|
||||||
|
export function resetPwd(data){
|
||||||
|
return ajaxPost(apiPrefix+"/resetPwd",data)
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
import {ajaxGet, ajaxJson, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/sale_management/exchange_point_products_records'
|
||||||
|
|
||||||
|
export function queryPointProductBymemberId(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/queryPointProductBymemberId", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryMemberByGoodsId(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/queryMemberByGoodsId", data)
|
||||||
|
}
|
||||||
|
export function queryPointProductByGoodsId(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/queryPointProductByGoodsId", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function saveExchangePointProductRecords(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/saveExchangePointProductRecords", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function queryOptionsMemberPhone() {
|
||||||
|
return ajaxGet(apiPrefix + "/queryOptionsMemberPhone", {})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryPageByQoExchangePointProducts(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQoExchangePointProducts", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function delExchangePointProducts(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/delExchangePointProducts", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function queryOptionsPointProducts() {
|
||||||
|
return ajaxGet(apiPrefix + "/queryOptionsPointProducts", {})
|
||||||
|
}
|
||||||
|
export function queryOptionsMember() {
|
||||||
|
return ajaxGet(apiPrefix + "/queryOptionsMember", {})
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
|||||||
|
import {ajaxGet, ajaxJson, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const apiPrefix = '/sale_management/sale_record'
|
||||||
|
/*得到订单号*/
|
||||||
|
export function getCn() {
|
||||||
|
return ajaxGet(apiPrefix + "/getCn", {})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getOptionSaleRecordsGoods() {
|
||||||
|
return ajaxGet(apiPrefix + "/getOptionSaleRecordsGoods", {})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function saveSaleRecords(data) {
|
||||||
|
return ajaxJson(apiPrefix + "/saveSaleRecords", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryPageByQoSaleRecords(data) {
|
||||||
|
return ajaxPost(apiPrefix + "/queryPageByQoSaleRecords", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function delSaleRecords(data) {
|
||||||
|
return ajaxGet(apiPrefix + "/delSaleRecords", data)
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
import {ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const menuApiPrefix = '/system/menu'
|
||||||
|
|
||||||
|
//条件分页获取菜单的信息
|
||||||
|
export function queryPageByQo(data) {
|
||||||
|
return ajaxPost(menuApiPrefix + "/queryPageByQo", data)
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
import {ajaxGet, ajaxPost} from "@/assets/js/common";
|
||||||
|
|
||||||
|
const roleApiPrefix = '/system/role'
|
||||||
|
|
||||||
|
//获取角色全部信息
|
||||||
|
export function roleList(data) {
|
||||||
|
return ajaxPost(roleApiPrefix + "/list", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
//停用角色
|
||||||
|
export function forbiddenRole(id) {
|
||||||
|
return ajaxPost(roleApiPrefix + "/forbiddenRole", {rid: id})
|
||||||
|
}
|
||||||
|
|
||||||
|
//修改角色信息
|
||||||
|
export function edit_role(data) {
|
||||||
|
return ajaxPost(roleApiPrefix + "/edit_role", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建角色
|
||||||
|
export function save_role(data) {
|
||||||
|
return ajaxPost(roleApiPrefix + "/save", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*授权按钮*/
|
||||||
|
export function checkPermissons(rid) {
|
||||||
|
return ajaxGet(roleApiPrefix + "/checkPermissons", {rid: rid})
|
||||||
|
}
|
||||||
|
|
||||||
|
/*保存角色-权限关系*/
|
||||||
|
export function saveRolePermissons(data) {
|
||||||
|
return ajaxPost(roleApiPrefix + "/saveRolePermissons", data)
|
||||||
|
}
|
||||||
|
export function getAllRole(){
|
||||||
|
return ajaxGet(roleApiPrefix +"/all",{})
|
||||||
|
}
|
||||||
|
/*保存角色和员工的关系*/
|
||||||
|
export function saveRoleEmp(data) {
|
||||||
|
return ajaxPost(roleApiPrefix + "/saveRoleEmp", data)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function queryRoleIdsByEid(eid) {
|
||||||
|
return ajaxGet(roleApiPrefix+"/queryRoleIdsByEid",{eid:eid})
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
|
||||||
|
body{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
background-color: #E9EEF3;
|
||||||
|
}
|
||||||
|
#app{
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-header {
|
||||||
|
background-color: #6495ED;
|
||||||
|
color: #333;
|
||||||
|
border-bottom: 1px black solid;
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-aside {
|
||||||
|
background-color: #6495ED;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-main {
|
||||||
|
background-color: #E9EEF3;
|
||||||
|
color: #333;
|
||||||
|
text-align: center;
|
||||||
|
}
|
@ -0,0 +1,123 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: "iconfont"; /* Project id 4215199 */
|
||||||
|
src: url('font.woff2?t=1693416579183') format('woff2'),
|
||||||
|
url('font.woff?t=1693416579183') format('woff'),
|
||||||
|
url('font.ttf?t=1693416579183') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-family: "iconfont" !important;
|
||||||
|
font-size: 16px;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-bottom:before {
|
||||||
|
content: "\e621";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-left:before {
|
||||||
|
content: "\e622";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-top:before {
|
||||||
|
content: "\e623";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-no:before {
|
||||||
|
content: "\e61b";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-refresh:before {
|
||||||
|
content: "\e61c";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-yes:before {
|
||||||
|
content: "\e61d";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-building:before {
|
||||||
|
content: "\e61e";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-team:before {
|
||||||
|
content: "\e61f";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-right:before {
|
||||||
|
content: "\e620";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-find:before {
|
||||||
|
content: "\e610";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-add:before {
|
||||||
|
content: "\e611";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-edit:before {
|
||||||
|
content: "\e612";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-user2:before {
|
||||||
|
content: "\e613";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-delete:before {
|
||||||
|
content: "\e614";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-lock:before {
|
||||||
|
content: "\e615";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-paper:before {
|
||||||
|
content: "\e616";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-setting:before {
|
||||||
|
content: "\e617";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-list:before {
|
||||||
|
content: "\e618";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-home:before {
|
||||||
|
content: "\e619";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-shield:before {
|
||||||
|
content: "\e61a";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-user3:before {
|
||||||
|
content: "\e60f";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-mark1:before {
|
||||||
|
content: "\e609";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-user1:before {
|
||||||
|
content: "\e60a";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-love:before {
|
||||||
|
content: "\e60b";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-mark2:before {
|
||||||
|
content: "\e60c";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-mark3:before {
|
||||||
|
content: "\e60d";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-r-mark4:before {
|
||||||
|
content: "\e60e";
|
||||||
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
@ -0,0 +1,198 @@
|
|||||||
|
{
|
||||||
|
"id": "4215199",
|
||||||
|
"name": "rbicon",
|
||||||
|
"font_family": "iconfont",
|
||||||
|
"css_prefix_text": "icon-",
|
||||||
|
"description": "",
|
||||||
|
"glyphs": [
|
||||||
|
{
|
||||||
|
"icon_id": "37171292",
|
||||||
|
"name": "下",
|
||||||
|
"font_class": "r-bottom",
|
||||||
|
"unicode": "e621",
|
||||||
|
"unicode_decimal": 58913
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "37171293",
|
||||||
|
"name": "左",
|
||||||
|
"font_class": "r-left",
|
||||||
|
"unicode": "e622",
|
||||||
|
"unicode_decimal": 58914
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "37171289",
|
||||||
|
"name": "上",
|
||||||
|
"font_class": "r-top",
|
||||||
|
"unicode": "e623",
|
||||||
|
"unicode_decimal": 58915
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "37009521",
|
||||||
|
"name": "拒绝",
|
||||||
|
"font_class": "r-no",
|
||||||
|
"unicode": "e61b",
|
||||||
|
"unicode_decimal": 58907
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "37009520",
|
||||||
|
"name": "刷新",
|
||||||
|
"font_class": "r-refresh",
|
||||||
|
"unicode": "e61c",
|
||||||
|
"unicode_decimal": 58908
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "37009518",
|
||||||
|
"name": "同意",
|
||||||
|
"font_class": "r-yes",
|
||||||
|
"unicode": "e61d",
|
||||||
|
"unicode_decimal": 58909
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "37009517",
|
||||||
|
"name": "建筑",
|
||||||
|
"font_class": "r-building",
|
||||||
|
"unicode": "e61e",
|
||||||
|
"unicode_decimal": 58910
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "37009519",
|
||||||
|
"name": "团队",
|
||||||
|
"font_class": "r-team",
|
||||||
|
"unicode": "e61f",
|
||||||
|
"unicode_decimal": 58911
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "37009516",
|
||||||
|
"name": "右",
|
||||||
|
"font_class": "r-right",
|
||||||
|
"unicode": "e620",
|
||||||
|
"unicode_decimal": 58912
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984024",
|
||||||
|
"name": "查找",
|
||||||
|
"font_class": "r-find",
|
||||||
|
"unicode": "e610",
|
||||||
|
"unicode_decimal": 58896
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984020",
|
||||||
|
"name": "新增",
|
||||||
|
"font_class": "r-add",
|
||||||
|
"unicode": "e611",
|
||||||
|
"unicode_decimal": 58897
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984023",
|
||||||
|
"name": "修改",
|
||||||
|
"font_class": "r-edit",
|
||||||
|
"unicode": "e612",
|
||||||
|
"unicode_decimal": 58898
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984022",
|
||||||
|
"name": "用户2",
|
||||||
|
"font_class": "r-user2",
|
||||||
|
"unicode": "e613",
|
||||||
|
"unicode_decimal": 58899
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984021",
|
||||||
|
"name": "删除",
|
||||||
|
"font_class": "r-delete",
|
||||||
|
"unicode": "e614",
|
||||||
|
"unicode_decimal": 58900
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984014",
|
||||||
|
"name": "锁",
|
||||||
|
"font_class": "r-lock",
|
||||||
|
"unicode": "e615",
|
||||||
|
"unicode_decimal": 58901
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984016",
|
||||||
|
"name": "草纸",
|
||||||
|
"font_class": "r-paper",
|
||||||
|
"unicode": "e616",
|
||||||
|
"unicode_decimal": 58902
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984015",
|
||||||
|
"name": "齿轮",
|
||||||
|
"font_class": "r-setting",
|
||||||
|
"unicode": "e617",
|
||||||
|
"unicode_decimal": 58903
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984013",
|
||||||
|
"name": "列表",
|
||||||
|
"font_class": "r-list",
|
||||||
|
"unicode": "e618",
|
||||||
|
"unicode_decimal": 58904
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984012",
|
||||||
|
"name": "房子",
|
||||||
|
"font_class": "r-home",
|
||||||
|
"unicode": "e619",
|
||||||
|
"unicode_decimal": 58905
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984011",
|
||||||
|
"name": "盾牌",
|
||||||
|
"font_class": "r-shield",
|
||||||
|
"unicode": "e61a",
|
||||||
|
"unicode_decimal": 58906
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36984025",
|
||||||
|
"name": "用户3",
|
||||||
|
"font_class": "r-user3",
|
||||||
|
"unicode": "e60f",
|
||||||
|
"unicode_decimal": 58895
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36983993",
|
||||||
|
"name": "印章",
|
||||||
|
"font_class": "r-mark1",
|
||||||
|
"unicode": "e609",
|
||||||
|
"unicode_decimal": 58889
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36983994",
|
||||||
|
"name": "用户1",
|
||||||
|
"font_class": "r-user1",
|
||||||
|
"unicode": "e60a",
|
||||||
|
"unicode_decimal": 58890
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36983995",
|
||||||
|
"name": "爱心",
|
||||||
|
"font_class": "r-love",
|
||||||
|
"unicode": "e60b",
|
||||||
|
"unicode_decimal": 58891
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36983996",
|
||||||
|
"name": "水滴",
|
||||||
|
"font_class": "r-mark2",
|
||||||
|
"unicode": "e60c",
|
||||||
|
"unicode_decimal": 58892
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36983997",
|
||||||
|
"name": "波纹",
|
||||||
|
"font_class": "r-mark3",
|
||||||
|
"unicode": "e60d",
|
||||||
|
"unicode_decimal": 58893
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "36983998",
|
||||||
|
"name": "阳光",
|
||||||
|
"font_class": "r-mark4",
|
||||||
|
"unicode": "e60e",
|
||||||
|
"unicode_decimal": 58894
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 708 KiB |
After Width: | Height: | Size: 632 KiB |
After Width: | Height: | Size: 459 KiB |
@ -0,0 +1,26 @@
|
|||||||
|
import Cookies from 'js-cookie'
|
||||||
|
import router from '../../router/index';
|
||||||
|
const TokenKey = 'token'
|
||||||
|
|
||||||
|
export function getToken() {
|
||||||
|
return Cookies.get(TokenKey)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setToken(token) {
|
||||||
|
return Cookies.set(TokenKey, token)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function removeToken() {
|
||||||
|
return Cookies.remove(TokenKey)
|
||||||
|
}
|
||||||
|
export function loginEmp() {
|
||||||
|
let str = Cookies.get("employee")
|
||||||
|
if(str == undefined) {
|
||||||
|
router.push('/')
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return JSON.parse(str)
|
||||||
|
}
|
||||||
|
export function clearCookie(name) {
|
||||||
|
Cookies.remove(name)
|
||||||
|
}
|
@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
* @Description:
|
||||||
|
* @Author:
|
||||||
|
* @Date: 04-07 20:58:35
|
||||||
|
*/
|
||||||
|
import { getToken } from "@/assets/js/auth";
|
||||||
|
import axios from "axios.js";
|
||||||
|
import { Message } from "element-ui";
|
||||||
|
import Cookies from "js-cookie";
|
||||||
|
import qs from 'qs';
|
||||||
|
|
||||||
|
const prefix_url = "http://localhost:9291"
|
||||||
|
|
||||||
|
/*刷新Cooke的存活时间*/
|
||||||
|
function refreshCookies() {
|
||||||
|
var token=getToken()
|
||||||
|
if (token){
|
||||||
|
//刷新cookie
|
||||||
|
axios({
|
||||||
|
url:prefix_url+"/checkedToken",
|
||||||
|
method:"GET",
|
||||||
|
params:{token:token}
|
||||||
|
}).then(res=>{
|
||||||
|
res=res.data
|
||||||
|
|
||||||
|
if (res.code==200){
|
||||||
|
Cookies.set("token", res.data.token, {expires: 1/48})
|
||||||
|
Cookies.set("employee", JSON.stringify(res.data.employee), {expires: 1/48})
|
||||||
|
}
|
||||||
|
|
||||||
|
}).catch((e)=>{
|
||||||
|
console.log(e)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return token;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*post请求*/
|
||||||
|
export function ajaxPost(url, param) {
|
||||||
|
return axios({
|
||||||
|
url: prefix_url + url,
|
||||||
|
method: "POST",
|
||||||
|
headers:{
|
||||||
|
'token': refreshCookies() //设置token 其中K名要和后端协调好
|
||||||
|
},
|
||||||
|
data: qs.stringify(param)
|
||||||
|
}).catch((e) => {
|
||||||
|
|
||||||
|
console.log(e);
|
||||||
|
if (
|
||||||
|
e.response == undefined ||
|
||||||
|
e.response.data == undefined
|
||||||
|
) {
|
||||||
|
popup(e, "error")
|
||||||
|
} else {
|
||||||
|
popup(e.response.data, "error")
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/*json请求*/
|
||||||
|
export function ajaxJson(url, param) {
|
||||||
|
return axios({
|
||||||
|
url: prefix_url + url,
|
||||||
|
method: "POST",
|
||||||
|
headers:{
|
||||||
|
'Content-Type':'application/json',
|
||||||
|
'token': refreshCookies() //设置token 其中K名要和后端协调好
|
||||||
|
},
|
||||||
|
data: param
|
||||||
|
}).catch((e) => {
|
||||||
|
console.log(e);
|
||||||
|
if (
|
||||||
|
e.response == undefined ||
|
||||||
|
e.response.data == undefined
|
||||||
|
) {
|
||||||
|
popup(e, "error")
|
||||||
|
} else {
|
||||||
|
popup(e.response.data, "error")
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/*GET请求*/
|
||||||
|
export function ajaxGet(url, param) {
|
||||||
|
return axios({
|
||||||
|
url: prefix_url + url,
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
'token': refreshCookies() //设置token 其中K名要和后端协调好
|
||||||
|
},
|
||||||
|
params:param
|
||||||
|
}).catch((e) => {
|
||||||
|
console.log(e);
|
||||||
|
if (
|
||||||
|
e.response == undefined ||
|
||||||
|
e.response.data == undefined
|
||||||
|
) {
|
||||||
|
popup(e, "error")
|
||||||
|
} else {
|
||||||
|
popup(e.response.data, "error")
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/*给用户弹出相应的提示*/
|
||||||
|
export function popup(msg, type) {
|
||||||
|
switch (type) {
|
||||||
|
case "warning":
|
||||||
|
Message.warning(msg);
|
||||||
|
break;
|
||||||
|
case "error":
|
||||||
|
Message.error({message: msg, duration: 5000, showClose: true});
|
||||||
|
break;
|
||||||
|
case "info":
|
||||||
|
Message.info(msg);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Message.success(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
require("vue-vibe")
|
@ -0,0 +1,24 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import App from './App.vue'
|
||||||
|
import router from './router'
|
||||||
|
import store from './store'
|
||||||
|
//ElementUI相关
|
||||||
|
import ElementUI from 'element-ui'
|
||||||
|
//ElementUI相关
|
||||||
|
import 'element-ui/lib/theme-chalk/index.css'
|
||||||
|
import '@/assets/css/globel.css'
|
||||||
|
import qs from 'qs';
|
||||||
|
import axios from 'axios.js'
|
||||||
|
Vue.prototype.qs = qs;
|
||||||
|
Vue.prototype.$axios = axios
|
||||||
|
|
||||||
|
//ElementUI相关
|
||||||
|
Vue.use(ElementUI)
|
||||||
|
|
||||||
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
|
new Vue({
|
||||||
|
router,
|
||||||
|
store,
|
||||||
|
render: h => h(App)
|
||||||
|
}).$mount('#app')
|
@ -0,0 +1,151 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import VueRouter from 'vue-router'
|
||||||
|
|
||||||
|
Vue.use(VueRouter)
|
||||||
|
const routes = [
|
||||||
|
{
|
||||||
|
path: '/',
|
||||||
|
name: 'login',
|
||||||
|
component: () => import('../views/Login.vue'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/index',
|
||||||
|
name: 'index',
|
||||||
|
redirect:'/home',
|
||||||
|
component: () => import('../views/index.vue'),
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: '/home',
|
||||||
|
name: '/home',
|
||||||
|
component: () => import('../views/Home.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/personal/edit_pwd',
|
||||||
|
name: '/personal/edit_pwd',
|
||||||
|
component: () => import('../views/personal/Edit_pwd.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/personal/information',
|
||||||
|
name: '/personal/information',
|
||||||
|
component: () => import('../views/personal/Information.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/system/role/list',
|
||||||
|
name: '/system/role/list',
|
||||||
|
component: () => import('../views/system/role/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/system/menu/list',
|
||||||
|
name: '/system/menu/list',
|
||||||
|
component: () => import('../views/system/menu/List.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/inventory_management/store/list',
|
||||||
|
name: '/inventory_management/store/list',
|
||||||
|
component: () => import('../views/inventory_management/store/List.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/inventory_management/detail_store_goods_in/list',
|
||||||
|
name: '/inventory_management/detail_store_goods_in/list',
|
||||||
|
component: () => import('../views/inventory_management/detail_store_goods_in/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/inventory_management/detail_store_goods_out/list',
|
||||||
|
name: '/inventory_management/detail_store_goods_out/list',
|
||||||
|
component: () => import('../views/inventory_management/detail_store_goods_out/List.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/inventory_management/supplier/list',
|
||||||
|
name: '/inventory_management/supplier/list',
|
||||||
|
component: () => import('../views/inventory_management/supplier/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/inventory_management/detail_store_goods_in/notice/list',
|
||||||
|
name: '/inventory_management/detail_store_goods_in/notice/list',
|
||||||
|
component: () => import('../views/inventory_management/detail_store_goods_in/notice/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/inventory_management/detail_store_goods_out/notice/list',
|
||||||
|
name: '/inventory_management/detail_store_goods_out/notice/list',
|
||||||
|
component: () => import('../views/inventory_management/detail_store_goods_out/notice/List.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/inventory_management/store/storage_situation',
|
||||||
|
name: '/inventory_management/store/storage_situation',
|
||||||
|
component: () => import('../views/inventory_management/store/StorageSituation.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/goods_management/goods_category/list',
|
||||||
|
name: '/goods_management/goods_category/list',
|
||||||
|
component: () => import('../views/goods_management/goods_category/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/goods_management/goods/list',
|
||||||
|
name: '/goods_management/goods/list',
|
||||||
|
component: () => import('../views/goods_management/goods/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/goods_management/goods_store/list',
|
||||||
|
name: '/goods_management/goods_store/list',
|
||||||
|
component: () => import('../views/goods_management/goods_store/List.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/goods_management/statistic_sale/list',
|
||||||
|
name: '/goods_management/statistic_sale/list',
|
||||||
|
component: () => import('../views/goods_management/statistic_sale/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/goods_management/point_products/list',
|
||||||
|
name: '/goods_management/point_products/list',
|
||||||
|
component: () => import('../views/goods_management/point_products/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/personnel_management/dept/list',
|
||||||
|
name: '/personnel_management/dept/list',
|
||||||
|
component: () => import('../views/personnel_management/dept/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/personnel_management/employee/list',
|
||||||
|
name: '/personnel_management/employee/list',
|
||||||
|
component: () => import('../views/personnel_management/employee/List.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/member_management/member/list',
|
||||||
|
name: '/member_management/member/list',
|
||||||
|
component: () => import('../views/member_management/member/List.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/sale_management/sale_cmd/list',
|
||||||
|
name: '/sale_management/sale_cmd/list',
|
||||||
|
component: () => import('../views/sale_management/sale_cmd/List.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/sale_management/sale_records/list',
|
||||||
|
name: '/sale_management/sale_records/list',
|
||||||
|
component: () => import('../views/sale_management/sale_records/List.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
path: '/sale_management/exchange_point_products_records/list',
|
||||||
|
name: '/sale_management/exchange_point_products_records/list',
|
||||||
|
component: () => import('../views/sale_management/exchange_point_products_records/List.vue')
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
import 'vue-vibe'
|
||||||
|
const router = new VueRouter({
|
||||||
|
mode: "history",
|
||||||
|
routes
|
||||||
|
})
|
||||||
|
|
||||||
|
export default router
|
@ -0,0 +1,18 @@
|
|||||||
|
import Vue from 'vue'
|
||||||
|
import Vuex from 'vuex'
|
||||||
|
|
||||||
|
Vue.use(Vuex)
|
||||||
|
|
||||||
|
export default new Vuex.Store({
|
||||||
|
state: {
|
||||||
|
BaseApi: "http://localhost:9291"
|
||||||
|
},
|
||||||
|
getters: {
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
},
|
||||||
|
modules: {
|
||||||
|
}
|
||||||
|
})
|
@ -0,0 +1,41 @@
|
|||||||
|
<!--
|
||||||
|
* @Description:
|
||||||
|
* @Author:
|
||||||
|
* @Date: 09-12 00:42:31
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-breadcrumb separator="/">
|
||||||
|
<el-breadcrumb-item>首页</el-breadcrumb-item>
|
||||||
|
</el-breadcrumb><br />
|
||||||
|
|
||||||
|
<div id="home_bg">
|
||||||
|
<h1 style="color: white;font-size: 28px;">欢迎访问超市管理系统</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
#home_bg {
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
overflow-y: auto;
|
||||||
|
height: 80vh;
|
||||||
|
background: url("../assets/img/13.jpg") center top / cover no-repeat;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,144 @@
|
|||||||
|
<template>
|
||||||
|
<div id="login">
|
||||||
|
<div class="loginForm">
|
||||||
|
<el-form :model="loginForm" ref="loginForm" class="demo-ruleForm">
|
||||||
|
<br />
|
||||||
|
<i class="iconfont icon-r-building" style="font-size: 36px">
|
||||||
|
<b style="font-size: 28px"> 超市管理系统 </b> </i><br /><br />
|
||||||
|
<el-form-item prop="username">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="5" style="text-align: right">
|
||||||
|
<i class="iconfont icon-r-user1" style="font-size: 28px; color: grey">
|
||||||
|
</i>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="19" style="text-align: left; padding-left: 10px">
|
||||||
|
<el-input v-model="loginForm.username" placeholder="账号"></el-input>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item prop="password">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="5" style="text-align: right">
|
||||||
|
<i class="iconfont icon-r-lock" style="font-size: 28px; color: grey">
|
||||||
|
</i>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="19" style="text-align: left; padding-left: 10px">
|
||||||
|
<el-input type="password" v-model="loginForm.password" placeholder="密码"></el-input>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" style="text-align: center;padding-left: 45px;">
|
||||||
|
<el-button type="primary" @click="submitForm('loginForm')">
|
||||||
|
登录</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<style>
|
||||||
|
#login {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
overflow-y: hidden;
|
||||||
|
height: 100%;
|
||||||
|
background: url("../assets/img/01.jpg") center top / cover no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loginForm {
|
||||||
|
background-color: white;
|
||||||
|
width: 400px;
|
||||||
|
height: 280px;
|
||||||
|
margin: 150px auto;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 10px;
|
||||||
|
border-color: #555555;
|
||||||
|
border-style: solid;
|
||||||
|
border-radius: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loginForm input {
|
||||||
|
width: 260px;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loginForm button {
|
||||||
|
margin-right: 40px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
import { ajaxPost, popup } from "@/assets/js/common";
|
||||||
|
import Cookies from "js-cookie";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loginForm: {
|
||||||
|
username: "",
|
||||||
|
password: "",
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
username: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "账号不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
password: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "密码不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
min: 6,
|
||||||
|
max: 8,
|
||||||
|
message: "密码长度为5-8位",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submitForm(formName) {
|
||||||
|
this.$refs[formName].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
ajaxPost("/login", this.loginForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
Cookies.set("token", res.data.token, {
|
||||||
|
expires: 1 / 48,
|
||||||
|
});
|
||||||
|
Cookies.set(
|
||||||
|
"employee",
|
||||||
|
JSON.stringify(res.data.employee),
|
||||||
|
{ expires: 1 / 48 }
|
||||||
|
);
|
||||||
|
popup("登录成功,请稍等...");
|
||||||
|
this.$router.push("/index");
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "warning");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
popup("账号或密码格式不正确!", "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
resetForm(formName) {
|
||||||
|
this.$refs[formName].resetFields();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
@ -0,0 +1,353 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-breadcrumb separator="/">
|
||||||
|
<el-breadcrumb-item>首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>商品管理</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>分类管理</el-breadcrumb-item> </el-breadcrumb
|
||||||
|
><br />
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8" style="text-align: left; padding-right: 10px">
|
||||||
|
<el-input placeholder="分类名称" v-model="searchForm.name" />
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-select
|
||||||
|
v-model="searchForm.state"
|
||||||
|
placeholder="状态"
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option label="正常" value="0"></el-option>
|
||||||
|
<el-option label="停用" value="-1"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" style="text-align: left">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitSearchForm"
|
||||||
|
|
||||||
|
>
|
||||||
|
搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="success"
|
||||||
|
@click="newVisable = true"
|
||||||
|
|
||||||
|
>
|
||||||
|
创建分类
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<div class="table">
|
||||||
|
<el-table :data="tableData" style="width: 100%" size="medium">
|
||||||
|
<el-table-column type="index" label-width="100px" label="序号">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="name" label-width="100px" label="名称">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="info"
|
||||||
|
label-width="100px"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
label="描述"
|
||||||
|
>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="state" label-width="100px" label="状态">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-tag type="success" v-if="scope.row.state == '0'"
|
||||||
|
>正常</el-tag
|
||||||
|
>
|
||||||
|
<el-tag type="danger" v-else>停用</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="260" fixed="right">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-button
|
||||||
|
type="success"
|
||||||
|
@click="editbtn(scope.row)"
|
||||||
|
|
||||||
|
>
|
||||||
|
修改</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
@click="forbidden(scope.row.id)"
|
||||||
|
|
||||||
|
>
|
||||||
|
停用</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div style="margin: 10px 0 15px 0">
|
||||||
|
<el-pagination
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:current-page.sync="searchForm.currentPage"
|
||||||
|
:page-sizes="[5, 10, 20, 50]"
|
||||||
|
:page-size="searchForm.pageSize"
|
||||||
|
layout="total,sizes, prev, pager, next,jumper"
|
||||||
|
:total="searchForm.total"
|
||||||
|
>
|
||||||
|
</el-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--创建弹出框-->
|
||||||
|
<el-dialog title="创建商品分类" :visible.sync="newVisable" width="50%">
|
||||||
|
<el-form
|
||||||
|
:model="newForm"
|
||||||
|
:rules="rules"
|
||||||
|
ref="newForm"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item label="名称:" prop="name">
|
||||||
|
<el-input v-model="newForm.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述:">
|
||||||
|
<el-input type="textarea" v-model="newForm.info"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitNewForm('newForm')"
|
||||||
|
|
||||||
|
>
|
||||||
|
提交</el-button
|
||||||
|
>
|
||||||
|
<el-button @click="saveCancel"
|
||||||
|
> 取消</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
<!--修改描述/状态弹出框-->
|
||||||
|
<el-dialog
|
||||||
|
title="分类信息修改"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
width="50%"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
:model="editForm"
|
||||||
|
:rules="rules"
|
||||||
|
ref="editForm"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item label="名称:" prop="name">
|
||||||
|
<el-input v-model="editForm.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述:">
|
||||||
|
<el-input
|
||||||
|
type="textarea"
|
||||||
|
v-model="editForm.info"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态:" prop="state">
|
||||||
|
<el-select
|
||||||
|
v-model="editForm.state"
|
||||||
|
clearable
|
||||||
|
@change="$forceUpdate()"
|
||||||
|
placeholder="请选择状态"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitEditForm('editForm')"
|
||||||
|
|
||||||
|
>
|
||||||
|
提交</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
@click="resetEditForm('editForm')"
|
||||||
|
|
||||||
|
>
|
||||||
|
重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { popup } from "@/assets/js/common";
|
||||||
|
import {
|
||||||
|
deactivate,
|
||||||
|
queryPageByQo,
|
||||||
|
save,
|
||||||
|
update,
|
||||||
|
} from "@/api/goods_management/goods_category/goodsCategoryApi";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
/*搜索*/
|
||||||
|
newVisable: false,
|
||||||
|
dialogVisible: false,
|
||||||
|
options: [
|
||||||
|
{ label: "正常", value: "0" },
|
||||||
|
{ label: "停用", value: "-1" },
|
||||||
|
],
|
||||||
|
/*表格*/
|
||||||
|
tableData: [],
|
||||||
|
searchForm: {
|
||||||
|
total: 0,
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 5,
|
||||||
|
},
|
||||||
|
editForm: {},
|
||||||
|
newForm: {},
|
||||||
|
rules: {
|
||||||
|
name: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "名称不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
state: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "状态不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
queryPageByQo(this.searchForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
console.log(res.data);
|
||||||
|
this.tableData = res.data.records;
|
||||||
|
this.searchForm.total = res.data.total;
|
||||||
|
this.searchForm.pageSize = res.data.size;
|
||||||
|
this.searchForm.currentPage = res.data.current;
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
submitSearchForm() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
/*分页*/
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.searchForm.pageSize = val;
|
||||||
|
this.init();
|
||||||
|
console.log(`每页 ${val} 条`);
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.searchForm.currentPage = val;
|
||||||
|
this.init();
|
||||||
|
console.log(`当前页: ${val}`);
|
||||||
|
},
|
||||||
|
submitNewForm(formName) {
|
||||||
|
this.$refs[formName].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
save(this.newForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("操作成功");
|
||||||
|
this.newForm = {};
|
||||||
|
this.newVisable = false;
|
||||||
|
this.init();
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
saveCancel() {
|
||||||
|
this.newVisable = false;
|
||||||
|
this.$refs["newForm"].resetFields();
|
||||||
|
},
|
||||||
|
/*修改信息业务*/
|
||||||
|
editbtn(row) {
|
||||||
|
this.editForm = { ...row };
|
||||||
|
this.dialogVisible = true;
|
||||||
|
},
|
||||||
|
submitEditForm(formName) {
|
||||||
|
this.$refs[formName].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
update(this.editForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("操作成功");
|
||||||
|
this.editForm = {};
|
||||||
|
this.dialogVisible = false;
|
||||||
|
this.init();
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
resetEditForm(formName) {
|
||||||
|
this.$refs[formName].resetFields();
|
||||||
|
},
|
||||||
|
/*停用业务*/
|
||||||
|
forbidden(sid) {
|
||||||
|
deactivate(sid).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("操作成功");
|
||||||
|
this.searchForm.currentPage = 1;
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
this.init();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.searchForm {
|
||||||
|
height: 134px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table {
|
||||||
|
height: 320px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pageUtils {
|
||||||
|
position: absolute;
|
||||||
|
width: 84%;
|
||||||
|
margin: 2px auto;
|
||||||
|
height: 43px;
|
||||||
|
}
|
||||||
|
.searchForm {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 51px;
|
||||||
|
line-height: 51px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchForm .column {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-right: 2px;
|
||||||
|
line-height: 48px;
|
||||||
|
height: 51px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,204 @@
|
|||||||
|
<template>
|
||||||
|
<el-container>
|
||||||
|
<el-header style="height: 80px">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12" style="margin-top: 20px">
|
||||||
|
<i style="color: white; font-size: 32px" class="iconfont icon-r-building">
|
||||||
|
<b style="font-size: 26px"> 超市管理系统</b></i>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12" style="text-align: right; margin-top: 15px; cursor: pointer">
|
||||||
|
<el-dropdown>
|
||||||
|
<el-avatar :size="50" shape="square" :src="BaseApi + circleUrl"></el-avatar>
|
||||||
|
<b style="
|
||||||
|
font-size: 24px;
|
||||||
|
color: white;
|
||||||
|
margin-top: -10px;
|
||||||
|
">
|
||||||
|
{{ isAdmin ? "管理员 " : "用户 " }}
|
||||||
|
{{ loginName }}</b>
|
||||||
|
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item @click.native="informationBtn">个人资料完善</el-dropdown-item>
|
||||||
|
<el-dropdown-item @click.native="empExit">退出</el-dropdown-item>
|
||||||
|
<el-dropdown-item @click.native="logoutVisable = true">注销</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-header>
|
||||||
|
<!--注销账户-->
|
||||||
|
<el-dialog title="注销账户" :visible.sync="logoutVisable" width="70%">
|
||||||
|
<el-form :model="logoutform" :rules="rules" ref="logoutform" label-width="100px" class="demo-ruleForm">
|
||||||
|
<el-form-item label="内容" prop="content">
|
||||||
|
<el-input v-model="logoutform.content" placeholder="请填写“本人确定注销”"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="logoutSubmit('logoutform')">确 定</el-button>
|
||||||
|
<el-button @click="logoutCel('logoutform')">取 消</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-container>
|
||||||
|
<el-aside width="200px" style="overflow-y: hidden;min-height: 900px;">
|
||||||
|
<el-menu background-color="#6495ED" text-color="white" :router="true" :unique-opened="true"
|
||||||
|
active-text-color="#FFDEAD">
|
||||||
|
<el-submenu v-for="item in menu_catalogs" :key="item.id" :index="item.id + ''">
|
||||||
|
<template slot="title">
|
||||||
|
<i :class="item.icon" style="font-size: 28px; color: white">
|
||||||
|
</i>
|
||||||
|
<b style="font-size: 21px;"> {{ item.label }}</b>
|
||||||
|
</template>
|
||||||
|
<el-menu-item-group>
|
||||||
|
<el-menu-item v-for="c in item.children" :key="c.id" :index="c.purl">
|
||||||
|
<i :class="c.icon" style="font-size: 24px"> </i>
|
||||||
|
<b> {{ c.label }}</b>
|
||||||
|
</el-menu-item>
|
||||||
|
</el-menu-item-group>
|
||||||
|
</el-submenu>
|
||||||
|
</el-menu>
|
||||||
|
</el-aside>
|
||||||
|
<el-main>
|
||||||
|
<router-view />
|
||||||
|
</el-main>
|
||||||
|
</el-container>
|
||||||
|
</el-container>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { clearCookie, loginEmp } from "@/assets/js/auth";
|
||||||
|
import { ajaxGet, ajaxPost, popup } from "@/assets/js/common";
|
||||||
|
import Cookies from "js-cookie";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
BaseApi: this.$store.state.BaseApi,
|
||||||
|
logoutVisable: false,
|
||||||
|
loginName: "",
|
||||||
|
isAdmin: "",
|
||||||
|
logoutform: {},
|
||||||
|
circleUrl: loginEmp().headImg,
|
||||||
|
menu_catalogs: [],
|
||||||
|
rules: {
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "内容不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
this.isAdmin = loginEmp().isAdmin;
|
||||||
|
this.loginName = loginEmp().nickName;
|
||||||
|
ajaxGet("/empMenu", {}).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.menu_catalogs = res.data;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/*个人资料*/
|
||||||
|
informationBtn() {
|
||||||
|
this.$router.push("/personal/information");
|
||||||
|
popup("请完善个人的资料");
|
||||||
|
},
|
||||||
|
/*账户退出*/
|
||||||
|
empExit() {
|
||||||
|
this.$confirm("确定要退出系统?", "警示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
ajaxGet("/exit", this.pwdForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("成功退出系统...");
|
||||||
|
clearCookie("employee");
|
||||||
|
clearCookie("token");
|
||||||
|
this.$router.push("/");
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$message({
|
||||||
|
type: "info",
|
||||||
|
message: "已取消操作",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/*注销账户*/
|
||||||
|
logoutCel(formName) {
|
||||||
|
this.$refs[formName].resetFields();
|
||||||
|
this.logoutform = {};
|
||||||
|
this.logoutVisable = false;
|
||||||
|
},
|
||||||
|
logoutSubmit(formName) {
|
||||||
|
this.$refs[formName].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
ajaxPost("/logout", {
|
||||||
|
content: this.logoutform.content,
|
||||||
|
}).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("注销成功");
|
||||||
|
clearCookie("employee");
|
||||||
|
clearCookie("token");
|
||||||
|
this.logoutVisable = false;
|
||||||
|
this.$router.push("/");
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.avatar {
|
||||||
|
display: inline-block;
|
||||||
|
width: 200px;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.personalFul {
|
||||||
|
background-color: #ffffff;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 999999;
|
||||||
|
top: 58px;
|
||||||
|
right: 20px;
|
||||||
|
width: 151px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* .personalFul ul > li {
|
||||||
|
margin: 1px auto;
|
||||||
|
padding: 0px;
|
||||||
|
height: 20px;
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #6495ED;
|
||||||
|
list-style-type: none;
|
||||||
|
} */
|
||||||
|
|
||||||
|
.personalFul ul>li:hover {
|
||||||
|
background-color: #fc4316;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu-item i {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-submenu__title i {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,265 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-breadcrumb separator="/">
|
||||||
|
<el-breadcrumb-item>首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>库存管理 </el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>仓库管理</el-breadcrumb-item> </el-breadcrumb
|
||||||
|
><br />
|
||||||
|
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8" style="text-align: left;padding-right: 10px;">
|
||||||
|
<el-input placeholder="仓库名称" v-model="searchForm.name"/>
|
||||||
|
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-select v-model="searchForm.state" placeholder="请选择状态" clearable>
|
||||||
|
<el-option label="正常" value="0"></el-option>
|
||||||
|
<el-option label="停用" value="-1"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" style="text-align: left">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="subSearchForm"
|
||||||
|
|
||||||
|
>
|
||||||
|
搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="success"
|
||||||
|
@click="newVisable = true"
|
||||||
|
|
||||||
|
>
|
||||||
|
创建仓库
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
type="index"
|
||||||
|
label="序号"
|
||||||
|
width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="name"
|
||||||
|
label="名称"
|
||||||
|
width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="address"
|
||||||
|
label="地址"
|
||||||
|
width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="info"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
label="描述">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="state"
|
||||||
|
label="状态">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-tag v-if="scope.row.state=='0'" type="success">正常</el-tag>
|
||||||
|
<el-tag v-else type="danger">停用</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column width="260" fixed="right"
|
||||||
|
label="操作">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-button type="success" @click="editStore(scope.row)">
|
||||||
|
|
||||||
|
修改
|
||||||
|
</el-button>
|
||||||
|
<el-button type="danger" @click="forbidden(scope.row.id)">
|
||||||
|
|
||||||
|
停用
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--修改仓库弹出框-->
|
||||||
|
<el-dialog
|
||||||
|
title="仓库信息修改"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
width="50%">
|
||||||
|
<el-form v-model="editForm" label-width="100px" class="demo-ruleForm">
|
||||||
|
<el-form-item label="名称:">
|
||||||
|
<el-input v-model="editForm.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="地址:">
|
||||||
|
<el-input type="text" v-model="editForm.address"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述:">
|
||||||
|
<el-input type="text" v-model="editForm.info"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态:">
|
||||||
|
<el-select v-model="editForm.state"
|
||||||
|
clearable
|
||||||
|
@change="$forceUpdate()"
|
||||||
|
placeholder="请选择状态">
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="submitEditForm" >
|
||||||
|
|
||||||
|
提交
|
||||||
|
</el-button>
|
||||||
|
<el-button @click="editCancel" > 取消</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
<!--创建仓库弹出框-->
|
||||||
|
<el-dialog
|
||||||
|
title="创建仓库"
|
||||||
|
:visible.sync="newVisable"
|
||||||
|
width="50%">
|
||||||
|
<el-form :model="newForm" :rules="rules" ref="newForm" label-width="100px" class="demo-ruleForm">
|
||||||
|
<el-form-item label="名称:" prop="name">
|
||||||
|
<el-input v-model="newForm.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="地址:" prop="address">
|
||||||
|
<el-input type="text" v-model="newForm.address"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述:">
|
||||||
|
<el-input type="text" v-model="newForm.info"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="submitNewForm('newForm')" >
|
||||||
|
提交</el-button>
|
||||||
|
<el-button @click="saveCancel" > 取消</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import {deactivate, save, storeList, update} from "@/api/inventory_management/store/storeApi";
|
||||||
|
import {popup} from "@/assets/js/common";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
newStoreVisable: false,
|
||||||
|
dialogVisible: false,
|
||||||
|
editForm: {},
|
||||||
|
searchForm:{},
|
||||||
|
newVisable: false,
|
||||||
|
newForm:{},
|
||||||
|
options: [
|
||||||
|
{label: '正常', value: '0'},
|
||||||
|
{label: '停用', value: '-1'}
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
name:[
|
||||||
|
{required: true, message: '名称不能为空', trigger: 'blur'},
|
||||||
|
],
|
||||||
|
address:[
|
||||||
|
{required: true, message: '地名不能为空', trigger: 'blur'},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
subSearchForm(){
|
||||||
|
this.init()
|
||||||
|
},
|
||||||
|
init() {
|
||||||
|
storeList(this.searchForm).then(res => {
|
||||||
|
if (res.data.code == 200) {
|
||||||
|
this.tableData = res.data.data
|
||||||
|
} else {
|
||||||
|
popup(res.data.msg, "error")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
},
|
||||||
|
editStore(row) {
|
||||||
|
this.editForm = {...row}
|
||||||
|
this.dialogVisible = true
|
||||||
|
},
|
||||||
|
forbidden(sid) {
|
||||||
|
deactivate(sid).then(res => {
|
||||||
|
res = res.data
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("操作成功")
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error")
|
||||||
|
}
|
||||||
|
this.init()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
submitEditForm() {
|
||||||
|
update(this.editForm).then(res => {
|
||||||
|
res = res.data
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("操作成功")
|
||||||
|
this.init()
|
||||||
|
this.dialogVisible=false
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error")
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
editCancel() {
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.editForm = {}
|
||||||
|
popup("已取消操作", "info")
|
||||||
|
},
|
||||||
|
submitNewForm(formName){
|
||||||
|
this.$refs[formName].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
save(this.newForm).then(res=>{
|
||||||
|
res=res.data
|
||||||
|
if (res.code==200){
|
||||||
|
popup("操作成功")
|
||||||
|
this.newForm={}
|
||||||
|
this.newVisable=false
|
||||||
|
this.init()
|
||||||
|
}else {
|
||||||
|
popup(res.msg, "error")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
saveCancel(){
|
||||||
|
this.newVisable=false
|
||||||
|
this.$refs["newForm"].resetFields()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.search {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 51px;
|
||||||
|
line-height: 51px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search .column {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-right: 2px;
|
||||||
|
line-height: 48px;
|
||||||
|
height: 51px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,154 @@
|
|||||||
|
<!--
|
||||||
|
* @Description:
|
||||||
|
* @Author:
|
||||||
|
* @Date: 09-07 20:58:35
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-breadcrumb separator="/">
|
||||||
|
<el-breadcrumb-item>首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>个人中心 </el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>密码修改</el-breadcrumb-item> </el-breadcrumb
|
||||||
|
><br />
|
||||||
|
<div id="edit_pwd">
|
||||||
|
<el-form
|
||||||
|
:model="pwdForm"
|
||||||
|
:rules="rules"
|
||||||
|
ref="pwdForm"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<i class="iconfont icon-r-lock" style="font-size: 32px">
|
||||||
|
<b style="font-size: 28px">密码修改</b></i
|
||||||
|
>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<el-form-item label="账号">
|
||||||
|
<el-input disabled v-model="pwdForm.username"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="旧密码" prop="oldPwd">
|
||||||
|
<el-input
|
||||||
|
type="password"
|
||||||
|
v-model="pwdForm.oldPwd"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="新密码" prop="newPwd">
|
||||||
|
<el-input
|
||||||
|
type="password"
|
||||||
|
v-model="pwdForm.newPwd"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitForm('pwdForm')"
|
||||||
|
|
||||||
|
>
|
||||||
|
确定</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
@click="resetForm('pwdForm')"
|
||||||
|
|
||||||
|
>
|
||||||
|
重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { loginEmp, removeToken } from "@/assets/js/auth";
|
||||||
|
import Cookies from "js-cookie";
|
||||||
|
import { ajaxPost, popup } from "@/assets/js/common";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pwdForm: {},
|
||||||
|
rules: {
|
||||||
|
newPwd: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "新密码不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
min: 6,
|
||||||
|
max: 8,
|
||||||
|
message: "新密码长度为6-8位",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
oldPwd: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "旧密码不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
min: 6,
|
||||||
|
max: 8,
|
||||||
|
message: "旧密码长度为6-8位",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
this.pwdForm.username = loginEmp().username;
|
||||||
|
},
|
||||||
|
resetForm(formName) {
|
||||||
|
this.$refs[formName].resetFields();
|
||||||
|
},
|
||||||
|
submitForm(formName) {
|
||||||
|
this.$refs[formName].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$confirm("确定修改密码?", "警示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning",
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
ajaxPost("/personal/edit_pwd", this.pwdForm).then(
|
||||||
|
(res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("密码修改成功,请重新登录...");
|
||||||
|
this.pwdForm = {
|
||||||
|
username: this.pwdForm.username,
|
||||||
|
};
|
||||||
|
Cookies.remove("employee");
|
||||||
|
removeToken();
|
||||||
|
this.$router.push("/");
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.$message({
|
||||||
|
type: "info",
|
||||||
|
message: "已取消操作",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
#edit_pwd {
|
||||||
|
width: 50%;
|
||||||
|
margin: 50px auto;
|
||||||
|
background-color: #ffffff;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,275 @@
|
|||||||
|
<template>
|
||||||
|
<div id="information">
|
||||||
|
<el-breadcrumb separator="/">
|
||||||
|
<el-breadcrumb-item>首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>个人中心 </el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>个人资料</el-breadcrumb-item> </el-breadcrumb
|
||||||
|
><br />
|
||||||
|
|
||||||
|
<i class="iconfont icon-r-paper" style="font-size: 32px">
|
||||||
|
<b style="font-size: 28px">完善个人资料</b></i
|
||||||
|
>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<el-form
|
||||||
|
:model="informationForm"
|
||||||
|
:rules="rules"
|
||||||
|
ref="informationForm"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item style="width: 40%">
|
||||||
|
<el-upload
|
||||||
|
class="avatar-uploader"
|
||||||
|
action="http://localhost:9291/personnel_management/employee/uploadImg"
|
||||||
|
:show-file-list="false"
|
||||||
|
:on-success="handleAvatarSuccess"
|
||||||
|
:before-upload="beforeAvatarUpload"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
v-if="imageUrl"
|
||||||
|
:src="BaseApi + imageUrl"
|
||||||
|
class="avatar"
|
||||||
|
/>
|
||||||
|
<i
|
||||||
|
v-else
|
||||||
|
class="el-icon-plus avatar-uploader-icon"
|
||||||
|
></i>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item
|
||||||
|
style="width: 40%"
|
||||||
|
label="电话号码:"
|
||||||
|
prop="username"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
max="11"
|
||||||
|
v-model="informationForm.username"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item
|
||||||
|
style="width: 40%"
|
||||||
|
label="姓名:"
|
||||||
|
prop="nickName"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="informationForm.nickName"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item
|
||||||
|
style="width: 40%"
|
||||||
|
label="身份证号:"
|
||||||
|
prop="idCard"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model="informationForm.idCard"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item style="width: 40%" label="年龄:">
|
||||||
|
<el-input
|
||||||
|
type="number"
|
||||||
|
min="18"
|
||||||
|
max="70"
|
||||||
|
v-model="informationForm.age"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item
|
||||||
|
style="width: 40%"
|
||||||
|
label="所属部门:"
|
||||||
|
>
|
||||||
|
<el-select
|
||||||
|
disabled
|
||||||
|
style="width: 200px"
|
||||||
|
v-model="informationForm.deptId"
|
||||||
|
placeholder="请选择部门"
|
||||||
|
filterable
|
||||||
|
@change="$forceUpdate()"
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item style="width: 40%" label="住址:">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
v-model="informationForm.address"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item style="width: 40%" label="备注:">
|
||||||
|
<el-input
|
||||||
|
type="textarea"
|
||||||
|
cols="50"
|
||||||
|
rows="3"
|
||||||
|
v-model="informationForm.info"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item style="width: 40%" label="性别:">
|
||||||
|
<el-select
|
||||||
|
style="width: 200px"
|
||||||
|
v-model="informationForm.sex"
|
||||||
|
@change="$forceUpdate()"
|
||||||
|
placeholder="请选择性别"
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option label="女" value="0"></el-option>
|
||||||
|
<el-option label="男" value="1"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitInformationForm('informationForm')"
|
||||||
|
|
||||||
|
>
|
||||||
|
提交</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
@click="resetForm('informationForm')"
|
||||||
|
|
||||||
|
>
|
||||||
|
重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { listByQo } from "@/api/personnel_management/department/deptApi";
|
||||||
|
import { popup } from "@/assets/js/common";
|
||||||
|
import { queryInformation } from "@/api/personal/personApi";
|
||||||
|
import { update } from "@/api/personnel_management/employee/empApi";
|
||||||
|
import { loginEmp } from "@/assets/js/auth";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
BaseApi: this.$store.state.BaseApi,
|
||||||
|
loginEid: loginEmp().id,
|
||||||
|
informationForm: {},
|
||||||
|
imageUrl: "",
|
||||||
|
options: [],
|
||||||
|
rules: {
|
||||||
|
username: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "手机号不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
nickName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "姓名不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
idCard: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "身份证号不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
deptAll() {
|
||||||
|
listByQo({}).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.options = res.data;
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
init() {
|
||||||
|
queryInformation().then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.informationForm = { ...res.data };
|
||||||
|
this.imageUrl = this.informationForm.headImg;
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
submitInformationForm(formName) {
|
||||||
|
this.$refs[formName].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
update(this.informationForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("更新成功");
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
this.init();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
resetForm(formName) {
|
||||||
|
this.$refs[formName].resetFields();
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
/*上传头像*/
|
||||||
|
handleAvatarSuccess(res) {
|
||||||
|
this.informationForm.headImg = res.url;
|
||||||
|
this.imageUrl = res.url;
|
||||||
|
},
|
||||||
|
beforeAvatarUpload(file) {
|
||||||
|
const isJPG =
|
||||||
|
file.type === "image/jpeg" || file.type === "image/png";
|
||||||
|
const isLt2M = file.size / 1024 / 1024 < 3;
|
||||||
|
if (!isJPG) {
|
||||||
|
this.$message.error("上传头像图片只能是 JPG或PNG 格式!");
|
||||||
|
}
|
||||||
|
if (!isLt2M) {
|
||||||
|
this.$message.error("上传头像图片大小不能超过 3MB!");
|
||||||
|
}
|
||||||
|
return isJPG && isLt2M;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.imageUrl = "";
|
||||||
|
this.deptAll();
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
@ -0,0 +1,254 @@
|
|||||||
|
<template>
|
||||||
|
<div id="dept_list">
|
||||||
|
<el-breadcrumb separator="/">
|
||||||
|
<el-breadcrumb-item
|
||||||
|
>首页</el-breadcrumb-item
|
||||||
|
>
|
||||||
|
<el-breadcrumb-item
|
||||||
|
>人事管理
|
||||||
|
</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item
|
||||||
|
>部门管理</el-breadcrumb-item
|
||||||
|
> </el-breadcrumb
|
||||||
|
><br />
|
||||||
|
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="7">
|
||||||
|
<el-input placeholder="部门名称" v-model="searchForm.name"/>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="7">
|
||||||
|
<el-select v-model="searchForm.state" placeholder="请选择状态" clearable>
|
||||||
|
<el-option label="正常" value="0"></el-option>
|
||||||
|
<el-option label="停用" value="-1"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" style="text-align: left">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="subSearchForm"
|
||||||
|
|
||||||
|
>
|
||||||
|
搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button type="success" @click="newVisable=true"
|
||||||
|
|
||||||
|
>
|
||||||
|
创建部门
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
type="index"
|
||||||
|
label="序号"
|
||||||
|
width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="name"
|
||||||
|
label="名称"
|
||||||
|
width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="info"
|
||||||
|
label="描述">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="state"
|
||||||
|
label="状态">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-tag v-if="scope.row.state=='0'" type="success" style="font-size: 14px;">
|
||||||
|
<i class="iconfont icon-r-yes" style="font-size: 14px;"> </i> 正常</el-tag>
|
||||||
|
<el-tag v-else type="danger" style="font-size: 14px;">
|
||||||
|
<i class="iconfont icon-r-no" style="font-size: 14px;"> </i> 停用</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="操作" width="260" fixed="right">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-button type="success" @click="edit(scope.row)" >
|
||||||
|
修改</el-button>
|
||||||
|
<el-button type="danger" @click="forbidden(scope.row.id)" >
|
||||||
|
停用</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--修改描述/状态弹出框-->
|
||||||
|
<el-dialog
|
||||||
|
title="部门修改"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
width="50%">
|
||||||
|
<el-form v-model="editForm" label-width="100px" class="demo-ruleForm">
|
||||||
|
<el-form-item label="名称:">
|
||||||
|
<el-input disabled v-model="editForm.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述:">
|
||||||
|
<el-input type="text" v-model="editForm.info"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态:">
|
||||||
|
<el-select v-model="editForm.state"
|
||||||
|
clearable
|
||||||
|
@change="$forceUpdate()"
|
||||||
|
placeholder="请选择状态">
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="submitEditForm" >
|
||||||
|
提交</el-button>
|
||||||
|
<el-button @click="canCelEdit" >
|
||||||
|
关闭</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
<!--创建弹出框-->
|
||||||
|
<el-dialog
|
||||||
|
title="创建部门"
|
||||||
|
:visible.sync="newVisable"
|
||||||
|
width="50%">
|
||||||
|
<el-form :model="newForm" :rules="rules" ref="newForm" label-width="100px" class="demo-ruleForm">
|
||||||
|
<el-form-item label="名称:" prop="name">
|
||||||
|
<el-input v-model="newForm.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述:">
|
||||||
|
<el-input type="text" v-model="newForm.info"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="submitNewForm('newForm')"> 提交</el-button>
|
||||||
|
<el-button @click="resetNewForm('newForm')"> 重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { popup} from "@/assets/js/common";
|
||||||
|
import {deactivate, listByQo, save, update} from "@/api/personnel_management/department/deptApi";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
editForm: {},
|
||||||
|
editRow:{},
|
||||||
|
dialogVisible: false,
|
||||||
|
newVisable:false,
|
||||||
|
newForm:{},
|
||||||
|
searchForm: {},
|
||||||
|
options: [
|
||||||
|
{label: '正常', value: '0'},
|
||||||
|
{label: '停用', value: '-1'}
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
name:[
|
||||||
|
{required: true, message: '名称不能为空', trigger: 'blur'},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
listByQo(this.searchForm).then(res => {
|
||||||
|
if (res.data.code == 200) {
|
||||||
|
this.tableData = res.data.data
|
||||||
|
}else {
|
||||||
|
popup(res.data.msg,"error")
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
forbidden(id) {
|
||||||
|
deactivate(id).then(res => {
|
||||||
|
res = res.data
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("操作成功")
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error")
|
||||||
|
}
|
||||||
|
this.init()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/*弹出修改表单*/
|
||||||
|
edit(row) {
|
||||||
|
this.editForm= {...row}
|
||||||
|
this.dialogVisible = true
|
||||||
|
},
|
||||||
|
/*条件搜索*/
|
||||||
|
subSearchForm() {
|
||||||
|
this.init()
|
||||||
|
},
|
||||||
|
/*对接后端修改接口*/
|
||||||
|
submitEditForm() {
|
||||||
|
update(this.editForm).then(res=>{
|
||||||
|
res=res.data
|
||||||
|
if (res.code==200){
|
||||||
|
popup("操作成功")
|
||||||
|
this.dialogVisible=false
|
||||||
|
this.init()
|
||||||
|
}else {
|
||||||
|
popup(res.msg, "error")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/*修改重置按钮*/
|
||||||
|
canCelEdit(){
|
||||||
|
this.dialogVisible=false
|
||||||
|
this.editForm={}
|
||||||
|
},
|
||||||
|
/*创建新角色*/
|
||||||
|
submitNewForm(formName){
|
||||||
|
this.$refs[formName].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
console.log(this.newForm)
|
||||||
|
save(this.newForm).then(res=>{
|
||||||
|
res=res.data
|
||||||
|
if (res.code==200){
|
||||||
|
popup("操作成功")
|
||||||
|
this.newVisable=false
|
||||||
|
this.newForm={}
|
||||||
|
this.init()
|
||||||
|
}else {
|
||||||
|
popup(res.msg, "error")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
resetNewForm(formname){
|
||||||
|
this.$refs[formname].resetFields()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.search {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 51px;
|
||||||
|
line-height: 51px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search .column {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-right: 2px;
|
||||||
|
line-height: 48px;
|
||||||
|
height: 51px;
|
||||||
|
}
|
||||||
|
</style>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,209 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-breadcrumb separator="/">
|
||||||
|
<el-breadcrumb-item>首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>系统管理</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>菜单管理</el-breadcrumb-item> </el-breadcrumb
|
||||||
|
><br />
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8" style="text-align: left; padding-right: 10px">
|
||||||
|
<el-input placeholder="菜单名称" v-model="searchForm.name" />
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" style="text-align: left">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitSearchForm"
|
||||||
|
|
||||||
|
>
|
||||||
|
搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="info"
|
||||||
|
@click="resetSearchForm"
|
||||||
|
|
||||||
|
>
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
<div class="table">
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%"
|
||||||
|
size="medium"
|
||||||
|
row-key="id"
|
||||||
|
border
|
||||||
|
:tree-props="{ children: 'children' }"
|
||||||
|
>
|
||||||
|
<el-table-column prop="label" label="菜单名"> </el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
width="150"
|
||||||
|
prop="flag"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
label="标识符"
|
||||||
|
>
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-tag type="info">{{
|
||||||
|
scope.row.flag ? scope.row.flag : "暂定"
|
||||||
|
}}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="type" label="类型">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-tag v-if="scope.row.type == 0"
|
||||||
|
>目录</el-tag
|
||||||
|
>
|
||||||
|
<el-tag
|
||||||
|
|
||||||
|
v-else-if="scope.row.type == 1"
|
||||||
|
type="success"
|
||||||
|
>菜单</el-tag
|
||||||
|
>
|
||||||
|
<el-tag v-else type="warning"
|
||||||
|
>按钮</el-tag
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="icon" label="图标">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<i :class="scope.row.icon"></i>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="info"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
label="描述"
|
||||||
|
>
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-tag type="info">{{
|
||||||
|
scope.row.info ? scope.row.info : "无"
|
||||||
|
}}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
prop="component"
|
||||||
|
:show-overflow-tooltip="true"
|
||||||
|
label="组件路径"
|
||||||
|
>
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-tag type="info">{{
|
||||||
|
scope.row.component ? scope.row.component : "暂定"
|
||||||
|
}}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="state" label="状态">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-tag
|
||||||
|
|
||||||
|
type="success"
|
||||||
|
v-if="scope.row.state == 0"
|
||||||
|
>正常</el-tag
|
||||||
|
>
|
||||||
|
<el-tag type="danger" v-else>禁用</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div style="margin: 10px 0 15px 0">
|
||||||
|
<el-pagination
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
:current-page.sync="searchForm.currentPage"
|
||||||
|
:page-sizes="[5, 10, 20, 50]"
|
||||||
|
:page-size="searchForm.pageSize"
|
||||||
|
layout="total,sizes, prev, pager, next,jumper"
|
||||||
|
:total="searchForm.total"
|
||||||
|
>
|
||||||
|
</el-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { queryPageByQo } from "@/api/system/menu/menuApi";
|
||||||
|
import { popup } from "@/assets/js/common";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
/*搜索*/
|
||||||
|
/*表格*/
|
||||||
|
tableData: [],
|
||||||
|
searchForm: {
|
||||||
|
total: 0,
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 5,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
queryPageByQo(this.searchForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
console.log(res.data);
|
||||||
|
this.tableData = res.data.records;
|
||||||
|
this.searchForm.total = res.data.total;
|
||||||
|
this.searchForm.pageSize = res.data.size;
|
||||||
|
this.searchForm.currentPage = res.data.current;
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
submitSearchForm() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
resetSearchForm() {
|
||||||
|
this.searchForm.name = "";
|
||||||
|
},
|
||||||
|
/*分页*/
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.searchForm.pageSize = val;
|
||||||
|
this.init();
|
||||||
|
console.log(`每页 ${val} 条`);
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.searchForm.currentPage = val;
|
||||||
|
this.init();
|
||||||
|
console.log(`当前页: ${val}`);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.searchForm {
|
||||||
|
height: 134px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table {
|
||||||
|
height: 320px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pageUtils {
|
||||||
|
position: absolute;
|
||||||
|
width: 84%;
|
||||||
|
margin: 2px auto;
|
||||||
|
height: 43px;
|
||||||
|
}
|
||||||
|
.searchForm {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 51px;
|
||||||
|
line-height: 51px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.searchForm .column {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-right: 2px;
|
||||||
|
line-height: 48px;
|
||||||
|
height: 51px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,416 @@
|
|||||||
|
<template>
|
||||||
|
<div id="role_list">
|
||||||
|
<el-breadcrumb separator="/">
|
||||||
|
<el-breadcrumb-item>首页</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>系统管理</el-breadcrumb-item>
|
||||||
|
<el-breadcrumb-item>角色管理</el-breadcrumb-item> </el-breadcrumb
|
||||||
|
><br />
|
||||||
|
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8" style="text-align: left; padding-right: 10px">
|
||||||
|
<el-input
|
||||||
|
placeholder="角色名称"
|
||||||
|
v-model="roleSearchForm.name"
|
||||||
|
/>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-select
|
||||||
|
@change="$forceUpdate"
|
||||||
|
v-model="roleSearchForm.state"
|
||||||
|
placeholder="状态"
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option label="正常" value="0"></el-option>
|
||||||
|
<el-option label="停用" value="-1"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" style="text-align: left">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="subSearchForm('ruleForm')"
|
||||||
|
|
||||||
|
>
|
||||||
|
搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="success"
|
||||||
|
@click="newRoleVisable = true"
|
||||||
|
|
||||||
|
>
|
||||||
|
创建角色
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<br />
|
||||||
|
<el-table :data="tableData" style="width: 100%">
|
||||||
|
<el-table-column type="index" label="序号" width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="name" label="名称" width="180">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="info" label="描述"> </el-table-column>
|
||||||
|
<el-table-column prop="state" label="状态">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-tag v-if="scope.row.state == '0'" type="success"
|
||||||
|
>正常</el-tag
|
||||||
|
>
|
||||||
|
<el-tag v-else type="danger">停用</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="420" fixed="right">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-button
|
||||||
|
type="success"
|
||||||
|
@click="editRole(scope.row)"
|
||||||
|
|
||||||
|
>
|
||||||
|
修改</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
v-if="scope.row.state == '0'"
|
||||||
|
type="danger"
|
||||||
|
@click="forbidden(scope.row.id)"
|
||||||
|
|
||||||
|
>
|
||||||
|
停用</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
@click="checkPermissons(scope.row.id)"
|
||||||
|
|
||||||
|
>
|
||||||
|
授权</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--修改描述/状态弹出框-->
|
||||||
|
<el-dialog
|
||||||
|
title="角色信息修改"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
width="50%"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
v-model="editRoleForm"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item label="名称:">
|
||||||
|
<el-input disabled v-model="editRoleForm.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述:">
|
||||||
|
<el-input
|
||||||
|
type="text"
|
||||||
|
v-model="editRoleForm.info"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态:">
|
||||||
|
<el-select
|
||||||
|
v-model="editRoleForm.state"
|
||||||
|
clearable
|
||||||
|
@change="$forceUpdate()"
|
||||||
|
placeholder="请选择状态"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in options"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitEditForm"
|
||||||
|
|
||||||
|
>
|
||||||
|
提交</el-button
|
||||||
|
>
|
||||||
|
<el-button @click="resetEditForm" >
|
||||||
|
重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
<!--创建角色弹出框-->
|
||||||
|
<el-dialog title="创建角色" :visible.sync="newRoleVisable" width="50%">
|
||||||
|
<el-form
|
||||||
|
:model="newRoleForm"
|
||||||
|
:rules="rules"
|
||||||
|
ref="newRoleForm"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item label="名称:" prop="name">
|
||||||
|
<el-input v-model="newRoleForm.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述:">
|
||||||
|
<el-input type="text" v-model="newRoleForm.info"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitNewForm('newRoleForm')"
|
||||||
|
|
||||||
|
>
|
||||||
|
创建角色</el-button
|
||||||
|
>
|
||||||
|
<el-button @click="resetNewForm" >
|
||||||
|
重置</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
<!--职能分配框-->
|
||||||
|
<el-dialog
|
||||||
|
title="权限分配"
|
||||||
|
:visible.sync="distributionFulVisable"
|
||||||
|
width="50%"
|
||||||
|
>
|
||||||
|
<el-form
|
||||||
|
:model="distributionFulForm"
|
||||||
|
label-width="100px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item>
|
||||||
|
<el-input
|
||||||
|
placeholder="输入关键字进行过滤"
|
||||||
|
v-model="filterText"
|
||||||
|
>
|
||||||
|
</el-input>
|
||||||
|
<el-tree
|
||||||
|
:data="fuloptions"
|
||||||
|
class="filter-tree"
|
||||||
|
show-checkbox
|
||||||
|
node-key="value"
|
||||||
|
:default-checked-keys="default_checked_mid"
|
||||||
|
default-expand-all
|
||||||
|
:filter-node-method="filterNode"
|
||||||
|
ref="tree"
|
||||||
|
:props="props"
|
||||||
|
></el-tree>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="submitDistributionFulForm"
|
||||||
|
|
||||||
|
>
|
||||||
|
提交</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
@click="celDistributionFul"
|
||||||
|
> 取消</el-button
|
||||||
|
>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
forbiddenRole,
|
||||||
|
roleList,
|
||||||
|
edit_role,
|
||||||
|
save_role,
|
||||||
|
checkPermissons,
|
||||||
|
saveRolePermissons,
|
||||||
|
} from "@/api/system/role/roleApi";
|
||||||
|
import { ajaxPost, popup } from "@/assets/js/common";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
editRoleForm: {},
|
||||||
|
editRoleRow: {},
|
||||||
|
dialogVisible: false,
|
||||||
|
newRoleVisable: false,
|
||||||
|
distributionFulVisable: false,
|
||||||
|
newRoleForm: {},
|
||||||
|
roleSearchForm: {},
|
||||||
|
distributionFulForm: {},
|
||||||
|
options: [
|
||||||
|
{ label: "正常", value: "0" },
|
||||||
|
{ label: "停用", value: "-1" },
|
||||||
|
],
|
||||||
|
/*职能分配*/
|
||||||
|
props: { multiple: true },
|
||||||
|
fuloptions: [],
|
||||||
|
default_checked_mid: [],
|
||||||
|
filterText: "",
|
||||||
|
rules: {
|
||||||
|
name: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: "名称不能为空",
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
filterText(val) {
|
||||||
|
this.$refs.tree.filter(val);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
filterNode(value, data) {
|
||||||
|
if (!value) return true;
|
||||||
|
return data.label.indexOf(value) !== -1;
|
||||||
|
},
|
||||||
|
init() {
|
||||||
|
roleList(this.roleSearchForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if ((res.code = 200)) {
|
||||||
|
this.tableData = res.data;
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
forbidden(id) {
|
||||||
|
forbiddenRole(id).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.roleSearchForm.state = "0";
|
||||||
|
this.init();
|
||||||
|
popup("操作成功");
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/*弹出修改表单*/
|
||||||
|
editRole(row) {
|
||||||
|
this.editRoleForm = { ...row };
|
||||||
|
this.editRoleRow = { ...row };
|
||||||
|
this.dialogVisible = true;
|
||||||
|
},
|
||||||
|
/*条件搜索*/
|
||||||
|
subSearchForm() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
/*对接后端修改角色接口*/
|
||||||
|
submitEditForm() {
|
||||||
|
if (
|
||||||
|
this.editRoleForm.info == this.editRoleRow.info &&
|
||||||
|
this.editRoleForm.state == this.editRoleRow.state
|
||||||
|
) {
|
||||||
|
popup("您没有更改内容", "warning");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
edit_role(this.editRoleForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("操作成功");
|
||||||
|
this.editRoleForm = {};
|
||||||
|
this.editRoleRow = {};
|
||||||
|
this.dialogVisible = false;
|
||||||
|
this.roleSearchForm.state = "0";
|
||||||
|
this.init();
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/*修改角色重置按钮*/
|
||||||
|
resetEditForm() {
|
||||||
|
this.editRoleForm = { ...this.editRoleRow };
|
||||||
|
},
|
||||||
|
/*创建新角色*/
|
||||||
|
submitNewForm(formName) {
|
||||||
|
this.$refs[formName].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
console.log(this.newRoleForm);
|
||||||
|
save_role(this.newRoleForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("操作成功");
|
||||||
|
this.newRoleForm = {};
|
||||||
|
this.newRoleVisable = false;
|
||||||
|
this.init();
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
resetNewForm() {
|
||||||
|
this.newRoleForm = {};
|
||||||
|
},
|
||||||
|
/*职能分配*/
|
||||||
|
/*授权按钮*/
|
||||||
|
checkPermissons(rid) {
|
||||||
|
this.distributionFulForm.rid = rid;
|
||||||
|
this.default_checked_mid = [];
|
||||||
|
checkPermissons(rid).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
this.fuloptions = res.data.menus;
|
||||||
|
this.default_checked_mid = res.data.menuIds.sort(
|
||||||
|
(x, y) => x - y
|
||||||
|
);
|
||||||
|
console.log(typeof this.default_checked_mid);
|
||||||
|
console.log(this.default_checked_mid);
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.distributionFulVisable = true;
|
||||||
|
},
|
||||||
|
submitDistributionFulForm() {
|
||||||
|
var keys = this.$refs.tree.getCheckedKeys();
|
||||||
|
var v = JSON.stringify(keys).replace("[", "").replace("]", "");
|
||||||
|
this.distributionFulForm.menuIds = v;
|
||||||
|
console.log(this.distributionFulForm.menuIds);
|
||||||
|
saveRolePermissons(this.distributionFulForm).then((res) => {
|
||||||
|
res = res.data;
|
||||||
|
if (res.code == 200) {
|
||||||
|
popup("操作成功");
|
||||||
|
this.distributionFulVisable = false;
|
||||||
|
this.distributionFulForm = {};
|
||||||
|
this.default_checked_mid = [];
|
||||||
|
this.fuloptions = [];
|
||||||
|
} else {
|
||||||
|
popup(res.msg, "error");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.distributionFulVisable = false;
|
||||||
|
},
|
||||||
|
celDistributionFul() {
|
||||||
|
this.default_checked_mid = [];
|
||||||
|
this.fuloptions = [];
|
||||||
|
this.distributionFulForm = {};
|
||||||
|
this.distributionFulVisable = false;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
.search {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: 51px;
|
||||||
|
line-height: 51px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search .column {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 auto;
|
||||||
|
margin-right: 2px;
|
||||||
|
line-height: 48px;
|
||||||
|
height: 51px;
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
const { defineConfig } = require('@vue/cli-service')
|
||||||
|
module.exports = defineConfig({
|
||||||
|
transpileDependencies: true
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
devServer: {
|
||||||
|
host: "localhost",
|
||||||
|
port: 9292,
|
||||||
|
|
||||||
|
client: {
|
||||||
|
overlay: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in new issue