Commit e0ac9fd3 authored by denghr's avatar denghr

解决冲突

parents 05b6e7de 744f2961
module.exports = {
NODE_ENV: '"development"',
BASE_API: '"http://10.1.37.246:8765"',//'"https://xxfcmgmt.upyuns.com"(正)',//http://10.1.37.192:9527(何), //https://xxtest.upyuns.com(测),10.1.37.246:9527(韩), 10.1.37.244(李斌)10.1.37.248:8765(小威)
BASE_API: '"https://xxtest.upyuns.com"',//'"https://xxfcmgmt.upyuns.com"(正)',//http://10.1.37.192:9527(何), //https://xxtest.upyuns.com(测),10.1.37.246:9527(韩), 10.1.37.244(李斌)10.1.37.248:8765(小威)
APP_ORIGIN: '"https://wallstreetcn.com"'
}
......@@ -3911,7 +3911,8 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
"dev": true,
"optional": true
},
"aproba": {
"version": "1.1.1",
......@@ -3988,6 +3989,7 @@
"resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
"integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
"dev": true,
"optional": true,
"requires": {
"inherits": "~2.0.0"
}
......@@ -3997,6 +3999,7 @@
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
"integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
"dev": true,
"optional": true,
"requires": {
"hoek": "2.x.x"
}
......@@ -4016,7 +4019,8 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz",
"integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=",
"dev": true
"dev": true,
"optional": true
},
"caseless": {
"version": "0.12.0",
......@@ -4036,7 +4040,8 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
"dev": true,
"optional": true
},
"combined-stream": {
"version": "1.0.5",
......@@ -4059,13 +4064,15 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
"dev": true
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
"dev": true,
"optional": true
},
"cryptiles": {
"version": "2.0.5",
......@@ -4148,7 +4155,8 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz",
"integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=",
"dev": true
"dev": true,
"optional": true
},
"forever-agent": {
"version": "0.6.1",
......@@ -4173,13 +4181,15 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
"dev": true,
"optional": true
},
"fstream": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
"dev": true,
"optional": true,
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
......@@ -4240,6 +4250,7 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"optional": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
......@@ -4253,7 +4264,8 @@
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
"dev": true,
"optional": true
},
"har-schema": {
"version": "1.0.5",
......@@ -4297,7 +4309,8 @@
"version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
"dev": true
"dev": true,
"optional": true
},
"http-signature": {
"version": "1.1.1",
......@@ -4316,6 +4329,7 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"optional": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
......@@ -4325,7 +4339,8 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.4",
......@@ -4339,6 +4354,7 @@
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "1.0.1"
}
......@@ -4354,7 +4370,8 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
"dev": true,
"optional": true
},
"isstream": {
"version": "0.1.2",
......@@ -4455,6 +4472,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "1.1.7"
}
......@@ -4471,6 +4489,7 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
......@@ -4550,6 +4569,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
......@@ -4583,7 +4603,8 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
"dev": true,
"optional": true
},
"performance-now": {
"version": "0.2.0",
......@@ -4596,7 +4617,8 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
"dev": true
"dev": true,
"optional": true
},
"punycode": {
"version": "1.4.1",
......@@ -4639,6 +4661,7 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz",
"integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=",
"dev": true,
"optional": true,
"requires": {
"buffer-shims": "~1.0.0",
"core-util-is": "~1.0.0",
......@@ -4685,6 +4708,7 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz",
"integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=",
"dev": true,
"optional": true,
"requires": {
"glob": "^7.0.5"
}
......@@ -4693,7 +4717,8 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
"integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=",
"dev": true
"dev": true,
"optional": true
},
"semver": {
"version": "5.3.0",
......@@ -4758,6 +4783,7 @@
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
......@@ -4769,6 +4795,7 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz",
"integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=",
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.0.1"
}
......@@ -4785,6 +4812,7 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
......@@ -4801,6 +4829,7 @@
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"dev": true,
"optional": true,
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
......@@ -4862,7 +4891,8 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
"dev": true,
"optional": true
},
"uuid": {
"version": "3.0.1",
......@@ -4895,7 +4925,8 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
"dev": true,
"optional": true
}
}
},
......
......@@ -16,3 +16,11 @@ export function saveNewMemberObject(obj) {
});
}
export function staffImport(form) {
return fetch({
url: '/api/admin/postion/admin/excel/import',
method: 'post',
data:form
});
}
......@@ -79,4 +79,40 @@ export function userPosition(obj) {
url: '/api/admin/appUsersManage/user_position?id='+obj.id+'&positionId='+obj.positionId,
method: 'put',
});
}
\ No newline at end of file
}
// 用户身份录入列表
export function staffList(obj) {
return fetch({
url: '/api/admin/postion/admin/page',
method: 'post',
data: obj
});
}
// 身份列表
export function postions(obj) {
return fetch({
url: '/api/admin/postion/admin/postions',
method: 'get',
data: obj
});
}
// 添加员工
export function addEditor(obj) {
return fetch({
url: '/api/admin/postion/admin/add',
method: 'post',
data: obj
});
}
//删除员工
export function deleteStaffs(id) {
return fetch({
url: '/api/admin/postion/admin/' + id,
method: 'delete'
});
}
......@@ -426,6 +426,12 @@ export const asyncRouterMap = [{
component: _import('order/memberOrderInfo/index'),
name: '会员订单管理',
authority: 'memberOrderInfo'
},
{
path: 'orderStatistics',
component: _import('order/orderStatistics/index'),
name: '会员订单统计',
authority: 'orderStatistics'
}
]
},
......@@ -478,7 +484,7 @@ export const asyncRouterMap = [{
{
path: 'memberManagement',
component: _import('userManagement/memberManagement/index'),
name: '会员管理',
name: '会员管理1',
authority: 'memberManagement'
},
{
......@@ -491,7 +497,12 @@ export const asyncRouterMap = [{
path:'imCustomerServiceManger',
component: _import('userManagement/imCustomerServiceManger/cusomterServiceList'),
name:'客服列表',
authority: 'imCustomerServiceManger'
authority: 'imCustomerServiceManger'
},{
path: 'employeesInput',
component: _import('userManagement/employeesInput'),
name: '员工录入',
authority: 'employeesInput'
}
]
},
......@@ -528,6 +539,21 @@ export const asyncRouterMap = [{
}
]
},
{
path: '/summit',
component: Layout,
name: '峰会管理',
icon: 'setting',
authority: 'summit',
children: [
{
path: 'summitList',
component: _import('summit/summitList/index'),
name: '峰会列表',
authority: 'summitList'
}
]
},
{
path: '/cunponManagements',
component: Layout,
......
......@@ -546,6 +546,7 @@
}
},
resetTemp() {
this.membersName = undefined;
this.editCompanyId = undefined;
this.form = {
username: undefined,
......@@ -563,6 +564,7 @@
dataLimit: undefined,//数据权限
members: [],
};
// this.form = {
// username: undefined,
// name: undefined,
......
<template>
<div class="app-container calendar-list-container">
<div class="filter-container">
<el-form ref="queryForm" :model="listQuery" label-width="100px">
<el-row>
<el-col :span="5">
<el-form-item label="统计时间:">
<el-date-picker
v-model="listQuery.time"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="changeTime"
placeholder="请选择统计时间"
></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="统计方式:" class="wayMsg">
<span
v-for="(item,index) in way"
:key="index"
:class="{active:isactive==item.label}"
@click="changeWay(item.label)"
>{{item.label}}</span>
</el-form-item>
</el-col>
<el-col :span="5" style="float:right;text-align:right">
<el-button class="filter-item" type="primary" v-waves @click="handleFilter">导出为Excel</el-button>
</el-col>
</el-row>
</el-form>
<el-table
:key="tableKey"
:data="list"
border
fit
highlight-current-row
style="width: 100%"
>
<el-table-column align="center" label="时间">
<template scope="scope">
<span>{{scope.row.id}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="普通会员购买量">
<template scope="scope">
<span>{{scope.row.no}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="支付金额(普通会员)">
<template scope="scope">
<span>{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="黄金会员购买量">
<template scope="scope">
<span>{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="支付金额(普通会员)">
<template scope="scope">
<span>{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="支付金额(黄金会员)">
<template scope="scope">
<span>{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="钻石会员购买量">
<template scope="scope">
<span>{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="支付金额(钻石会员)">
<template scope="scope">
<span>{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column align="center" label="总支付金额">
<template scope="scope">
<span>{{scope.row.name}}</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
export default {
created() {},
data() {
return {
// 统计时间筛选
listQuery: {
time: "null"
},
//统计方式筛选
way: [
{
label: "全部",
id: "0"
},
{
label: "日统计",
id: "1"
},
{
label: "周统计",
id: "2"
},
{
label: "月统计",
id: "3"
}
],
isactive: "全部"
};
},
methods: {
//统计时间筛选
changeTime() {
console.log("----");
},
//统计方式筛选
changeWay(val) {
this.isactive = val;
},
//导出
handleFilter() {}
}
};
</script>
<style>
.wayMsg span {
margin: 10px;
cursor: pointer;
}
.active {
color: #409eff;
font-weight: bold;
}
</style>
\ No newline at end of file
<template>
<div class="app-container calendar-list-container">
<div class="filter-container">
<el-form :model="listQuery" label-width="100px">
<el-row>
<el-col :span="4">
<el-form-item label="峰会名称">
<el-input v-model.number="listQuery.name" placeholder="请输入手机号"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="开始时间">
<el-date-picker v-model="listQuery.time" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态">
<el-select class="filter-item" v-model="listQuery.status" placeholder="请选员工状态">
<el-option :key="undefined" label="全部" :value="undefined"></el-option>
<el-option
v-for="(item,index) in statusList "
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button>
<el-button
class="filter-item"
type="primary"
v-waves
icon="delete"
@click="cleaningQuery"
>清除搜索条件</el-button>
<el-button
class="filter-item"
type="primary"
v-waves
icon="el-icon-plus"
@click="creatSummit"
>创建峰会</el-button>
</el-form>
<el-table :data="list" border fit highlight-current-row style="width: 100%">
<el-table-column prop="name" label="姓名" width="180" align="center"></el-table-column>
<el-table-column prop="phone" label="手机号" align="center"></el-table-column>
<el-table-column prop="positionName" label="身份" align="center"></el-table-column>
<el-table-column align="center" label="操作" width="400" fixed="right">
<template scope="scope">
<el-button
size="small"
class="el-button el-button--text el-button--small"
@click="soldOut(scope.row)"
>下架</el-button>
<el-button
size="small"
class="el-button el-button--text el-button--small"
@click="information(scope.row)"
>报名信息</el-button>
<el-button
size="small"
class="el-button el-button--text el-button--small"
@click="basics(scope.row)"
>基础信息</el-button>
<el-button
size="small"
class="el-button el-button--text el-button--small"
@click="applyPage(scope.row)"
>报名页面</el-button>
<el-button
size="small"
class="el-button el-button--text el-button--small"
@click="lookPage(scope.row)"
>回顾页面</el-button>
<el-button
size="small"
class="el-button el-button--text el-button--small"
@click="deleteMsg(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog
:title="summitTitle"
:visible.sync="bulkUploadMember"
class="member"
@close="closeAdd"
>
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="标题:" prop="title">
<el-input v-model="ruleForm.title"></el-input>
</el-form-item>
<el-form-item label="封面图:" prop="title">
<el-upload
class="avatar-uploader"
action="https://jsonplaceholder.typicode.com/posts/"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
>
<img v-if="imageUrl" :src="imageUrl" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="峰会时间:" prop="title">
<el-date-picker
v-model="ruleForm.time"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">确定</el-button>
<el-button @click="bulkUploadMember = false">取消</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</div>
</template>
<script>
export default {
created() {},
data() {
return {
imageUrl: "",
//快捷筛选
listQuery: {
name: "",
time: null,
status: null
},
//峰会状态
statusList: [],
// 表格数据
list: [],
summitTitle: "创建峰会",
bulkUploadMember: true,
ruleForm: {
title: "" //标题
}, //创建峰会表单
rules: {
title: [{ required: true, message: "请输入标题", trigger: "blur" }]
} //创建峰会表单验证
};
},
methods: {
//提交峰会
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
alert("submit!");
} else {
console.log("error submit!!");
return false;
}
});
},
handleAvatarSuccess() {},
beforeAvatarUpload() {},
//搜索
handleFilter() {},
//清空搜索条件
cleaningQuery() {},
//创建峰会
creatSummit() {
bulkUploadMember = true;
},
//下架
soldOut() {},
//报名信息
information() {},
//基础信息
basics() {},
//报名信息
applyPage() {},
//回顾页面
lookPage() {},
//删除信息
deleteMsg() {},
//监听峰会弹窗关闭
closeAdd() {}
}
};
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
</style>
\ No newline at end of file
......@@ -17,6 +17,7 @@
<el-date-picker
v-model="item.startTime"
type="date"
:disabled="!item.dis"
@change="changeStartTime(item)"
format="yyyy-MM-dd"
placeholder="选择日期">
......@@ -140,6 +141,8 @@
stock: 0
};
this.list.push(this.t);
this.list[this.list.length-1].dis = 'dis'
console.log(this.list)
},
/**
* 确定
......
<template>
<div class="app-container calendar-list-container">
<div class="filter-container">
<el-form ref="queryForm" :model="listQuery" label-width="100px">
<el-row>
<el-col :span="4">
<el-form-item label="手机号">
<el-input v-model.number="listQuery.phone" placeholder="请输入手机号"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="姓名">
<el-input v-model.number="listQuery.name" placeholder="请输入姓名"></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态">
<el-select class="filter-item" v-model="listQuery.status" placeholder="请选员工状态">
<el-option :key="undefined" label="全部" :value="undefined"></el-option>
<el-option
v-for="(item,index) in statusList "
:key="index"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-button class="filter-item" type="primary" v-waves icon="search" @click="handleFilter">搜索</el-button>
<el-button
class="filter-item"
type="primary"
v-waves
icon="delete"
@click="cleaningQuery"
>清除搜索条件</el-button>
<el-button class="filter-item" type="primary" v-waves @click="addStaff">新增员工</el-button>
<el-button class="filter-item" type="primary" v-waves @click="toLoad">批量导入员工</el-button>
<el-table
:key="tableKey"
:data="list"
v-loading="listLoading"
border
fit
highlight-current-row
style="width: 100%"
>
<el-table-column prop="name" label="姓名" width="180" align="center"></el-table-column>
<el-table-column prop="phone" label="手机号" align="center"></el-table-column>
<el-table-column prop="positionName" label="身份" align="center"></el-table-column>
<el-table-column label="状态" align="center">
<template scope="scope">
<span v-if="scope.row.status == 1">已核销</span>
<span v-else>未核销</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="400" fixed="right">
<template scope="scope">
<el-button
size="small"
class="el-button el-button--text el-button--small"
@click="editorStaff(scope.row)"
>编辑</el-button>
<el-button
size="small"
class="el-button el-button--text el-button--small"
@click="deleteStaff(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="listQuery.page"
:page-sizes="[10,20,30, 50]"
:page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
style="margin-top:20px"
></el-pagination>
<!-- 新增编辑员工 -->
<el-dialog
:title="staffTitle"
:visible.sync="bulkUploadMember"
class="member"
@close="closeAdd"
>
<el-form :model="staffTitleFrom" ref="userMembership" :rules="rules" label-width="100px">
<el-form-item label="员工姓名">
<el-input v-model.number="staffTitleFrom.name" placeholder="请输入姓名"></el-input>
</el-form-item>
<el-form-item label="手机号">
<el-input v-model.number="staffTitleFrom.phone" placeholder="请输入手机号"></el-input>
</el-form-item>
<el-form-item label="员工身份">
<el-select
class="filter-item"
v-model="staffTitleFrom.positionId"
placeholder="请选择员工身份"
style="width:100%"
>
<el-option :key="undefined" label="全部" :value="undefined"></el-option>
<el-option
v-for="(item,index) in postionsList "
:key="index"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<div style="text-align:center">
<el-button type="primary" @click="confirm">确 定</el-button>
<el-button type="primary" @click="bulkUploadMember = false">取消</el-button>
</div>
</el-form>
</el-dialog>
<!--批量导入会员窗口-->
<el-dialog title="导入会员" :visible.sync="tolead">
<el-form :model="fileForm">
<el-form-item label="上传文件" label-width="80px">
<el-button type="primary" icon="el-icon-download">
<a
class="el-icon-download"
href="https://mgmt.dfangche.com/axshare/userposition.xlsx"
>下载模板</a>
</el-button>
<el-upload
ref="uploadExcel"
:limit="limitNum"
action="1111"
:headers="getHeaderWithToken"
accept=".xlsx"
:http-request="upLoad"
:on-remove="handleRemove"
:before-remove="beforeRemove"
:before-upload="beforeUploadFile"
:on-change="fileChange"
:on-exceed="exceedFile"
:file-list="fileList"
>
<el-button size="small" type="primary" icon="el-icon-edit">
上传文件
<i class="el-icon-upload el-icon--right"></i>
</el-button>
<div slot="tip" class="el-upload__tip">只能上传xlsx(Excel2007以上版本)文件,且不超过10M</div>
</el-upload>
<el-button
size="small"
class="filter-item"
type="primary"
@click="cancelNotDeleteForm"
>取消</el-button>
</el-form-item>
</el-form>
</el-dialog>
<!-- 提示 -->
<el-dialog title="上传提示" :visible.sync="uploadHiut">
<p>
上传成功:
<b>{{uploadListHiut.success}}</b>条,上传失败:
<b>{{uploadListHiut.error}}</b>
</p>
<ul class="defeated">
<li v-for="(item,index) in uploadListHiut.uploadList" :key="index">
<p>
失败行数:
<span>{{item.num}}</span>,失败原因:
<span>{{item.msg}}</span>
</p>
</li>
</ul>
</el-dialog>
</div>
</div>
</template>
<script>
import {
staffList,
postions,
addEditor,
deleteStaffs
} from "src/api/admin/userManagement/index";
import { getToken } from "src/utils/auth";
import { mapGetters } from "vuex";
import { staffImport } from "src/api/admin/UserMember/index";
export default {
created() {
this.getList();
this.postionsFn();
},
computed: {
...mapGetters(["elements"]),
/**
* 获取token
*/
getHeaderWithToken() {
return { Authorization: getToken() };
}
},
data() {
return {
activeId: "",
uploadListHiut: {
uploadList: [],
success: "",
error: ""
},
uploadHiut: false,
fileList: [],
BASE_API: process.env.BASE_API,
limitNum: 1,
fileForm: {
file: ""
},
tolead: false,
listQuery: {
name: "",
phone: "",
status: null,
page: 1,
limit: 10
},
total: null,
tableKey: 0,
list: [],
listLoading: true,
statusList: [
{
label: "未核销",
value: "0"
},
{
label: "已核销",
value: "1"
}
],
postionsList: [],
staffTitle: "新增员工",
bulkUploadMember: false,
staffTitleFrom: {
phone: "",
name: "",
positionId: ""
},
rules: {}
};
},
methods: {
//新增,编辑员工弹窗关闭
closeAdd() {
this.staffTitleFrom = {
phone: "",
name: "",
positionId: ""
};
},
upLoad(file) {
var form = new FormData();
// 文件对象
form.append("file", file.file);
staffImport(form).then(res => {
console.log(res);
this.uploadHiut = true;
(this.uploadListHiut = {
uploadList: res.data.data,
success: res.data.success,
error: res.data.error
}),
this.getList();
});
},
//excel上传
handleRemove(file, fileList) {
//console.log(file, fileList);
},
handlePreview(file) {
//console.log(file);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}?`);
},
// 文件超出个数限制时的钩子
exceedFile(files, fileList) {
this.$notify.warning({
title: "警告",
message: `只能选择 ${
this.limitNum
} 个文件,当前共选择了 ${files.length + fileList.length} 个`
});
},
// 文件状态改变时的钩子
fileChange(file, fileList) {
//console.log("change");
//console.log(file);
this.fileForm.file = file.raw;
//console.log(this.fileForm.file);
// console.log(fileList);
},
// 上传文件之前的钩子, 参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传
beforeUploadFile(file) {
//console.log("before upload");
//console.log(file);
let extension = file.name.substring(file.name.lastIndexOf(".") + 1);
let size = file.size / 1024 / 1024;
if (extension !== "xlsx") {
this.$notify.warning({
title: "警告",
message: `只能上传Excel 2007以上版本(即后缀是.xlsx)的文件`
});
}
if (size > 10) {
this.$notify.warning({
title: "警告",
message: `文件大小不得超过10M`
});
}
},
cancelNotDeleteForm() {
this.tolead = false;
this.$refs.uploadExcel.clearFiles();
},
//员工列表
getList() {
staffList(this.listQuery).then(data => {
this.listLoading = true;
if (data.status == 200) {
console.log(data);
this.list = data.data.data;
this.total = data.data.totalCount;
this.listLoading = false;
}
});
},
handleSizeChange(val) {
this.listQuery.limit = val;
this.getList();
},
handleCurrentChange(val) {
this.listQuery.page = val;
this.getList();
},
//搜索
handleFilter() {
this.getList();
},
//清空搜索条件
cleaningQuery() {
this.listQuery.page = 1;
this.listQuery.limit = 10;
this.listQuery.name = "";
this.listQuery.phone = "";
this.listQuery.status = "";
this.getList();
},
//新增员工
addStaff() {
this.staffTitle == "新增员工"
this.bulkUploadMember = true;
},
//批量导入员工
toLoad() {
this.tolead = true;
},
//编辑员工
editorStaff(row) {
this.activeId = row.id;
this.staffTitle = "编辑员工";
this.bulkUploadMember = true;
this.staffTitleFrom = {
phone: row.phone,
name: row.name,
positionId: row.positionId
};
},
//删除员工
deleteStaff(row) {
this.$confirm("确定删除吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
deleteStaffs(row.id).then(data => {
if (data.status == 200) {
this.$notify({
title: "成功",
message: "删除成功",
type: "success",
duration: 2000
});
this.getList();
} else {
this.$notify({
title: "失败",
message: "删除失败",
type: "failed",
duration: 2000
});
}
});
});
},
//确定
confirm(formName) {
if (this.staffTitle == "新增员工") {
addEditor(this.staffTitleFrom).then(data => {
if (data.status == 200) {
this.$notify({
title: "成功",
message: "新增成功",
type: "success",
duration: 2000
});
this.bulkUploadMember = false;
this.getList();
}
});
} else {
this.staffTitleFrom.id = this.activeId;
addEditor(this.staffTitleFrom).then(data => {
if (data.status == 200) {
this.$notify({
title: "成功",
message: "编辑成功",
type: "success",
duration: 2000
});
this.bulkUploadMember = false;
this.getList();
}
});
}
},
//身份列表
postionsFn() {
postions().then(data => {
//console.log(data);
if (data.status == 200) {
this.postionsList = data.data;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
}
}
};
</script>
<style>
.member .el-dialog--small {
width: 500px;
}
.defeated {
padding: 0;
}
.defeated li {
list-style: none;
}
</style>
......@@ -1473,7 +1473,7 @@
*/
handleRet(row) {
this.arrivalPicList = [];
this.arrivalForm.bookRecordId = row.id
this.arrivalForm.bookRecordId = row.id
this.arrivalForm.vehicleId = row.vehicleId
this.arrivalForm.numberPlate = row.numberPlate
this.arrivalForm.arrivalDate = Date();
......
<!--车辆排班 保养弹框-->
<template>
<el-dialog title="安排用车" :visible.sync="anpai" class="user-car">
<el-form :model="form" ref="form" :rules="rules" label-width="140px">
<el-form :model="form" ref="form" :rules="rules" label-width="140px">
<el-form-item label="车牌号">
<span>{{currentItem.item.numberPlate}}</span>
</el-form-item>
......@@ -29,14 +29,23 @@
<span v-if="currentItem.item.vehicleModel.keyword">{{currentItem.item.vehicleModel.keyword}}</span>
</el-form-item>
<el-form-item label="选择时间" prop="times">
<el-date-picker
<!-- <el-date-picker
v-model="form.times"
type="datetimerange"
:picker-options="pickerOptions0"
format="yyyy-MM-dd HH:00:00"
format="yyyy-MM-dd HH:00:00"
value-format="yyyy-MM-dd HH:00:00"
placeholder="选择时间范围">
</el-date-picker>
placeholder="选择时间范围"
></el-date-picker>-->
<el-time-picker
is-range
v-model="form.times"
range-separator="-"
start-placeholder="开始时间"
end-placeholder="结束时间"
placeholder="选择时间范围"
value-format="HH-mm-ss"
></el-time-picker>
</el-form-item>
<el-form-item label="还车分公司" prop="arrivalBranchCompanyName">
<el-autocomplete
......@@ -59,9 +68,8 @@
<el-option label="客户用车" value="9"></el-option>
<el-option label="其他" value="10"></el-option>
<!--<el-option v-for="item in getAllUseType() " :key="item.code" :label="item.val"-->
<!--:value="item.code"></el-option>-->
<!--:value="item.code"></el-option>-->
</el-select>
</el-form-item>
<el-form-item label="保养项目" prop="upkeepIds" v-if="form.bookType==6">
......@@ -72,14 +80,29 @@
<el-form-item label="路线" v-if="form.bookType==5" required>
<el-select class="filter-item" placeholder="请选择路线" v-model="goodId" @change="goodChange">
<el-option :key="undefined" label="无" :value="undefined"></el-option>
<el-option v-for="item in goodList" :key="item.goodId" :label="item.goodName" :value="item.goodId"></el-option>
<el-option
v-for="item in goodList"
:key="item.goodId"
:label="item.goodName"
:value="item.goodId"
></el-option>
</el-select>
<el-select class="filter-item" placeholder="请选择出车公司" v-model="siteId" @change="siteChange">
<el-option :key="undefined" label="无" :value="undefined"></el-option>
<el-option v-for="item in siteList" :key="item.siteId" :label="item.siteName" :value="item.siteId"></el-option>
<el-option
v-for="item in siteList"
:key="item.siteId"
:label="item.siteName"
:value="item.siteId"
></el-option>
</el-select>
<el-select class="filter-item" placeholder="请选择出发时间" v-model="verificationId">
<el-option v-for="item in timeList" :key="item.verificationId" :label="item.time" :value="item.verificationId"></el-option>
<el-option
v-for="item in timeList"
:key="item.verificationId"
:label="item.time"
:value="item.verificationId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="使用人" prop="vehicleUsername">
......@@ -94,14 +117,18 @@
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel()">取消</el-button>
<el-button type="primary" @click="handelOk('form')" v-if="vehicleSchedulManage_btn_add_plan">确 定</el-button>
<el-button
type="primary"
@click="handelOk('form')"
v-if="vehicleSchedulManage_btn_add_plan"
>确 定</el-button>
</div>
</el-dialog>
</template>
<style>
.user-car .el-row{
margin-bottom: 0;
}
.user-car .el-row {
margin-bottom: 0;
}
</style>
<script>
import {mapGetters} from 'vuex';
......@@ -146,13 +173,7 @@
if (!value) {
return callback(new Error('手机号不能为空'));
} else {
const reg = /^[1](([3][0-9])|([4][5,7,9])|([5][0-9])|([6][6])|([7][1,2,3,5,6,7,8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/
console.log(reg.test(value));
if (reg.test(value)) {
callback();
} else {
return callback(new Error('请输入正确的手机号'));
}
return callback(new Error("请输入正确的手机号"));
}
};
return {
......@@ -205,26 +226,83 @@
bookType:{
type: 'string',
required: true,
message: '请选择用途',
trigger: 'change'
message: "请输入使用人姓名",
trigger: "blur"
},
times: {
required: true,
message: '请选择时间',
{
min: 0,
max: 20,
message: "长度小于 20 个字符",
trigger: "blur"
}
],
arrivalBranchCompanyName: {
type: "string",
required: true,
message: "请选择还车公司",
trigger: "change"
},
vehicleSchedulManage_btn_add_plan: false,//申请预定
vehicleUserPhone: {
validator: checkPhone,
trigger: "blur",
required: true
},
bookType: {
type: "string",
required: true,
message: "请选择用途",
trigger: "change"
},
times: {
required: true,
message: "请选择时间"
}
},
vehicleSchedulManage_btn_add_plan: false //申请预定
};
},
created() {
console.log(this.currentItem);
this.vehicleSchedulManage_btn_add_plan = this.elements[
"vehicleSchedulManage:btn_add_plan"
];
getAll().then(response => {
this.allCompaniesArr = response.data;
});
getAllCompany(codeAndBranchCompany => {
this.allCompanies = codeAndBranchCompany;
});
getUpkeepAll().then(response => {
this.upkeepList = response.data;
});
},
computed: {
...mapGetters(["elements"])
},
watch: {
anpai(newValue, oldValue) {
if (!newValue) {
this.$emit("anpaiDialogEvent", false);
}
}
},
mounted() {
this.anpai = true;
},
methods: {
/**
* 还车分公司
*/
handleSelectArrivalCompanyName(item) {
this.form.arrivalBranchCompanyId = item.id;
this.form.arrivalBranchCompanyName = item.name;
console.log(item);
},
created() {
console.log(this.currentItem);
this.vehicleSchedulManage_btn_add_plan = this.elements['vehicleSchedulManage:btn_add_plan'];
getAll()
.then(response => {
this.allCompaniesArr = response.data;
})
getAllCompany(codeAndBranchCompany => {
this.allCompanies = codeAndBranchCompany;
querySearch(queryString, cb) {
let selectArry = [];
this.allCompaniesArr.map(function(item) {
item.value = item.name;
selectArry.push(item);
});
getUpkeepAll().then(response => {
this.upkeepList = response.data
......@@ -238,15 +316,16 @@
'elements',
]),
},
watch: {
anpai(newValue, oldValue){
if(!newValue){
this.$emit("anpaiDialogEvent", false);
}
},
createFilter(queryString) {
return restaurant => {
return restaurant.name.indexOf(queryString.toLowerCase()) != -1;
};
},
mounted() {
this.anpai = true;
/**
* 弹框-取消
* */
cancel() {
this.$emit("anpaiDialogEvent", false);
},
methods: {
goodChange(){
......@@ -349,9 +428,35 @@
}
})
}
})
},
let params = {
vehicleId: this.currentItem.item.id,
bookStartDate:
formatDate(this.form.times[0], "hh:mm:ss"), //预定开始时间
bookEndDate:
formatDate(this.form.times[1], "hh:mm:ss"), //预定结束时间
retCompany: this.form.arrivalBranchCompanyId, //还车分公司
bookType: this.form.bookType, //预定车辆用途类型
vehicleUsername: this.form.vehicleUsername, //使用人姓名
vehicleUserPhone: this.form.vehicleUserPhone, //使用人电话
remark: this.form.remark, //说明
upkeepIds:
this.form.bookType == 6 ? this.form.upkeepIds.join(",") : "" //保养类型
};
bookPlan(params).then(response => {
if (response.status === 200) {
this.$emit("anpaiDialogEvent", true);
} else {
this.$notify({
title: "失败",
message: response.message,
type: "error",
duration: 2000
});
}
});
}
});
}
}
};
</script>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment