临时工对接
parent
1098659f87
commit
788dc1c25f
@ -0,0 +1,119 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div style="display: flex;margin-bottom: 10px;">
|
||||||
|
<div>
|
||||||
|
</div>
|
||||||
|
<div class="flex" style="margin-left: auto" >
|
||||||
|
<el-date-picker
|
||||||
|
style="margin-right: 10px;width:220px"
|
||||||
|
v-model="date"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期">
|
||||||
|
</el-date-picker>
|
||||||
|
<el-button size="mini" type="primary" @click='init'>查询</el-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="displsy-mod">
|
||||||
|
<el-table :data="list" v-loading="loading" stripe style="width: 100%" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
|
||||||
|
<el-table-column align="center" prop="beisenUserId" label="北森系统id" min-width="100"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="staffName" label="员工名称" min-width="100"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="sex" label="性别" min-width="80"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="mobilePhone" label="手机号码" min-width="120"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="identityCard" label="身份证号" min-width="180"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="email" label="邮箱" min-width="180"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="inputDate" label="操作日期" min-width="100"></el-table-column>
|
||||||
|
<el-table-column align="center" prop="inputDate" label="操作" min-width="100">
|
||||||
|
<template slot-scope='scope'>
|
||||||
|
<el-button type="text" style='color:red' @click='handleDelStaff(scope.row)'>删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div class="block" style="margin-top:15px;">
|
||||||
|
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageInfo.pageNum" :page-sizes="[10,20,30,40,50]" :page-size="pageInfo.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getBeisenUserList,delBeisenUserList } from "../../../api/storeManage.js";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list:[],
|
||||||
|
total: 0, //分页总条数
|
||||||
|
pageInfo: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10
|
||||||
|
},
|
||||||
|
queryFome:{},
|
||||||
|
date:[],
|
||||||
|
loading:false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.init()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleDelStaff(row){
|
||||||
|
this.$confirm("是否将该员工从中控复职?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
cancelButtonClass: "cancelbtnFalses",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
}).then(res=>{
|
||||||
|
delBeisenUserList(row.id).then(res=>{
|
||||||
|
if(res.code == '000000'){
|
||||||
|
this.$message.success({ message: "删除成功!" });
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.pageInfo.pageSize = val
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.pageInfo.pageNum = val
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
init(){
|
||||||
|
let params = {
|
||||||
|
...this.pageInfo
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
if(this.date.length){
|
||||||
|
params.startTime = this.formatTime(this.date[0],"YYYY-MM-DD 00:00:00");
|
||||||
|
params.lastTime = this.formatTime(this.date[1],"YYYY-MM-DD 23:59:59" );
|
||||||
|
}
|
||||||
|
}catch(err){
|
||||||
|
params.startTime = null
|
||||||
|
params.lastTime = null
|
||||||
|
}
|
||||||
|
this.loading = true
|
||||||
|
getBeisenUserList(params).then(res=>{
|
||||||
|
console.log(res)
|
||||||
|
this.loading = false
|
||||||
|
if(res.code == '000000'){
|
||||||
|
res.pageInfo.list.forEach((item) => {
|
||||||
|
if (item.sex == 1) {
|
||||||
|
item.sex = "男";
|
||||||
|
} else if (item.sex == 0) {
|
||||||
|
item.sex = "女";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.list = res.pageInfo.list
|
||||||
|
this.total = res.pageInfo.total
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,123 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-dialog title="录入临时工" :visible.sync="searchDialog" width="600px">
|
||||||
|
<el-form :model="searchForm">
|
||||||
|
<el-form-item label="姓名:" label-width="120px">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-input size="medium" v-model="searchForm.staffName" placeholder="输入要姓名" clearable></el-input>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="手机号:" label-width="120px">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-input size="medium" v-model="searchForm.mobilePhone" placeholder="输入要手机号" clearable></el-input>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="身份证:" label-width="120px">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-input size="medium" v-model="searchForm.identityCard" placeholder="输入要身份证" clearable></el-input>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="邮箱:" label-width="120px">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-input size="medium" v-model="searchForm.email" placeholder="输入要邮箱" clearable></el-input>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="性别:" label-width="120px">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-radio-group v-model="searchForm.sex" fill="#f78989">
|
||||||
|
<el-radio label="0" size="medium" type="primary">男</el-radio>
|
||||||
|
<el-radio label="1" size="medium" type="primary">女</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="结算:" label-width="120px">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-radio-group v-model="searchForm.job" fill="#f78989">
|
||||||
|
<el-radio label="0" size="medium" type="primary">日结</el-radio>
|
||||||
|
<el-radio label="1" size="medium" type="primary">月结</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item
|
||||||
|
label="上传附件:"
|
||||||
|
:rules="[{ required: true, message: '请上传附件!', trigger: 'blur' }]"
|
||||||
|
prop="file"
|
||||||
|
label-width="120px"
|
||||||
|
>
|
||||||
|
<el-upload
|
||||||
|
style="width:400px"
|
||||||
|
action=""
|
||||||
|
v-model="searchForm.fileList"
|
||||||
|
multiple
|
||||||
|
:http-request="uploadFile"
|
||||||
|
list-type="picture"
|
||||||
|
ref="upload"
|
||||||
|
>
|
||||||
|
<el-button size="mini" type="danger ">点击上传人像</el-button>
|
||||||
|
</el-upload>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button size="mini" type="primary" plain @click="searchDialog = false">取 消</el-button>
|
||||||
|
<el-button type="primary" size="mini" :loading="loading" @click="search()">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { addStaffs } from "../../../api/storeManage.js";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading:false,
|
||||||
|
searchForm:{
|
||||||
|
storeId: sessionStorage.getItem("parentId")
|
||||||
|
},
|
||||||
|
searchDialog:false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fileToBase64(file) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.onloadend = function() {
|
||||||
|
const base64Data = reader.result;
|
||||||
|
resolve(base64Data);
|
||||||
|
};
|
||||||
|
reader.onerror = function() {
|
||||||
|
reject(reader.error);
|
||||||
|
};
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
uploadFile(file) {
|
||||||
|
this.fileToBase64(file.file).then(res=>{
|
||||||
|
this.searchForm.facesInformation = res
|
||||||
|
})
|
||||||
|
},
|
||||||
|
search(){
|
||||||
|
this.loading = true
|
||||||
|
addStaffs(this.searchForm).then(res=>{
|
||||||
|
this.loading = false
|
||||||
|
if(res.code == '000000'){
|
||||||
|
this.searchDialog = false
|
||||||
|
this.$message.success({ message: '添加成功' });
|
||||||
|
this.$emit('init')
|
||||||
|
}else{
|
||||||
|
this.$alert(res.message, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
callback: (action) => {},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
show(){
|
||||||
|
this.searchDialog = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped></style>
|
||||||
@ -0,0 +1,89 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-dialog title="北森停用" :visible.sync="dialogVisible" width="600px">
|
||||||
|
<el-form :model="searchForm" :rules="rules" ref='form'>
|
||||||
|
<el-form-item label="停用时间:" label-width="120px" prop="beisenDimissionDate">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="searchForm.beisenDimissionDate"
|
||||||
|
type="date"
|
||||||
|
:picker-options="pickerOptions"
|
||||||
|
style='width:200px'
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button size="mini" type="primary" plain @click="dialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" size="mini" :loading="loading" @click="search">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { delSendBeisenDimission } from "../../../api/storeManage.js";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pickerOptions: {
|
||||||
|
disabledDate(time) {
|
||||||
|
const today = new Date();
|
||||||
|
const selectedDate = new Date(time.getFullYear(), time.getMonth(), time.getDate());
|
||||||
|
return selectedDate.getTime() < today.getTime();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
searchForm:{
|
||||||
|
},
|
||||||
|
rules:{
|
||||||
|
beisenDimissionDate:[
|
||||||
|
{ required: true, message: '请选择结束日期', trigger: 'change' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
dialogVisible:false,
|
||||||
|
mulSelect:[],
|
||||||
|
loading:false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
show(row){
|
||||||
|
this.dialogVisible = true
|
||||||
|
this.searchForm = {}
|
||||||
|
this.mulSelect = row
|
||||||
|
},
|
||||||
|
search(){
|
||||||
|
this.$refs['form'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.loading = true
|
||||||
|
this.mulSelect = this.mulSelect.map(item=>{
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
beisenDimissionDate:this.formatTime(this.searchForm.beisenDimissionDate,"YYYY-MM-DD hh:mm:ss"),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
delSendBeisenDimission(this.mulSelect).then(res=>{
|
||||||
|
this.loading = false
|
||||||
|
if(res.code == '000000'){
|
||||||
|
this.$message.success({ message: "已从北森离职成功!" });
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.$emit('init')
|
||||||
|
}else{
|
||||||
|
this.$alert(res.message, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
callback: (action) => {
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -1,68 +1,171 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-dialog title="请选择结束日期" :visible.sync="dialogVisible" width="600px">
|
<el-dialog title="中控离职" :visible.sync="dialogVisible" width="600px">
|
||||||
<el-form :model="searchForm" :rules="rules" ref='form'>
|
<el-form :model="searchForm" :rules="rules" ref='form'>
|
||||||
<el-form-item label="结束时间:" label-width="120px" prop="endTime">
|
<el-form-item label="结束时间:" label-width="120px" prop="endTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="searchForm.endTime"
|
v-model="searchForm.endTime"
|
||||||
type="datetime"
|
type="datetime"
|
||||||
style='width:200px'
|
:picker-options="pickerOptions"
|
||||||
range-separator="至"
|
style='width:200px'
|
||||||
start-placeholder="开始日期"
|
range-separator="至"
|
||||||
end-placeholder="结束日期">
|
start-placeholder="开始日期"
|
||||||
</el-date-picker>
|
end-placeholder="结束日期">
|
||||||
</el-form-item>
|
</el-date-picker>
|
||||||
</el-form>
|
</el-form-item>
|
||||||
<span slot="footer" class="dialog-footer">
|
<el-form-item label="结束类型:" label-width="120px" prop="leavetype">
|
||||||
<el-button size="mini" type="primary" plain @click="dialogVisible = false">取 消</el-button>
|
<el-select v-model="searchForm.leavetype" placeholder="请选择">
|
||||||
<el-button type="primary" size="mini" :loading="loading" @click="search">确 定</el-button>
|
<el-option
|
||||||
</span>
|
v-for="item in options"
|
||||||
</el-dialog>
|
:key="item.value"
|
||||||
</div>
|
:label="item.label"
|
||||||
</template>
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
<script>
|
</el-select>
|
||||||
import { updataStaffTemporary } from "../../../api/storeManage.js";
|
</el-form-item>
|
||||||
export default {
|
<el-form-item label="离职原因:" label-width="120px">
|
||||||
data() {
|
<el-input
|
||||||
return {
|
type="textarea"
|
||||||
loading:false,
|
:rows="2"
|
||||||
searchForm:{
|
placeholder="请输入离职原因"
|
||||||
endTime:''
|
v-model="searchForm.reason">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button size="mini" type="primary" plain @click="dialogVisible = false">取 消</el-button>
|
||||||
|
<el-button type="primary" size="mini" :loading="loading" @click="search">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import axios from "axios";
|
||||||
|
import { updataStaffTemporary,sendZhongkongDimission,sendZhongkongDimissions } from "../../../api/storeManage.js";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pickerOptions: {
|
||||||
|
onPick: ({ maxDate, minDate }) => {
|
||||||
|
this.choiceDate = minDate.getTime();
|
||||||
|
if (maxDate) {
|
||||||
|
this.choiceDate = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
disabledDate: (time) => {
|
||||||
|
const self = this;
|
||||||
|
const startDay =
|
||||||
|
(new Date(self.choiceDate).getDate() - 1) * 24 * 3600 * 1000;
|
||||||
|
const endDay =
|
||||||
|
(new Date(
|
||||||
|
new Date(self.choiceDate).getFullYear(),
|
||||||
|
new Date(self.choiceDate).getMonth() + 1,
|
||||||
|
0
|
||||||
|
).getDate() -
|
||||||
|
new Date(self.choiceDate).getDate()) *
|
||||||
|
24 *
|
||||||
|
3600 *
|
||||||
|
1000;
|
||||||
|
let minTime = self.choiceDate - startDay;
|
||||||
|
let maxTime = self.choiceDate + endDay;
|
||||||
|
return (
|
||||||
|
time.getTime() > Date.now() ||
|
||||||
|
time.getTime() < minTime ||
|
||||||
|
time.getTime() > maxTime
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
loading:false,
|
||||||
|
options:[
|
||||||
|
{
|
||||||
|
label:"自离",
|
||||||
|
value:0
|
||||||
},
|
},
|
||||||
rules:{
|
{
|
||||||
endTime: [
|
label:"辞退",
|
||||||
{ required: true, message: '请选择结束日期', trigger: 'change' }
|
value:1
|
||||||
],
|
|
||||||
},
|
},
|
||||||
dialogVisible:false,
|
{
|
||||||
}
|
label:"辞职",
|
||||||
|
value:2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
searchForm:{
|
||||||
|
endTime:'',
|
||||||
|
leavetype:""
|
||||||
|
},
|
||||||
|
rules:{
|
||||||
|
endTime: [
|
||||||
|
{ required: true, message: '请选择结束日期', trigger: 'change' }
|
||||||
|
],
|
||||||
|
leavetype: [
|
||||||
|
{ required: true, message: '请选择结束类型', trigger: 'change' }
|
||||||
|
],
|
||||||
|
},
|
||||||
|
dialogVisible:false,
|
||||||
|
accessKey:sessionStorage.getItem("accessKey"),
|
||||||
|
host:sessionStorage.getItem("host"),
|
||||||
|
mulSelect:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
dateOptions (time) {
|
||||||
|
return time.getTime() > Date.now() - 8.64e6
|
||||||
},
|
},
|
||||||
methods: {
|
search(){
|
||||||
search(){
|
this.$refs['form'].validate((valid) => {
|
||||||
this.$refs['form'].validate((valid) => {
|
if (valid) {
|
||||||
if (valid) {
|
let list = []
|
||||||
this.loading = true
|
for(let i =0;i<this.mulSelect.length;i++){
|
||||||
let params = {...this.searchForm}
|
let item = this.mulSelect[i]
|
||||||
params.endTime = this.formatTime(this.searchForm.endTime,"YYYY-MM-DD hh:mm:ss");
|
list.push({
|
||||||
updataStaffTemporary(params).then(res=>{
|
...item,
|
||||||
this.loading = false
|
pin:item.staffNum,
|
||||||
if(res.code == '000000'){
|
leavedate:this.formatTime(this.searchForm.endTime,"YYYY-MM-DD hh:mm"),
|
||||||
this.dialogVisible = false
|
leavetype:this.searchForm.leavetype,
|
||||||
this.$emit('init')
|
reason:this.searchForm.reason,
|
||||||
return this.$message.success({message: "结束成功!"});
|
endTime:this.formatTime(this.searchForm.endTime,"YYYY-MM-DD hh:mm:ss"),
|
||||||
}
|
zhongkongDimissionDate:this.formatTime(this.searchForm.endTime,"YYYY-MM-DD hh:mm:ss")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
this.loading = true
|
||||||
},
|
sendZhongkongDimissions(list).then(res=>{
|
||||||
show(row){
|
this.loading = false
|
||||||
this.dialogVisible = true
|
if(res.code == '000000'){
|
||||||
this.searchForm = {...row}
|
this.dialogVisible = false
|
||||||
}
|
this.$emit('handleZkLeave')
|
||||||
|
}else{
|
||||||
|
this.$alert(res.message, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
callback: (action) => {
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
updataStaff(row){
|
||||||
|
this.loading = true
|
||||||
|
updataStaffTemporary(row).then(res=>{
|
||||||
|
this.loading = false
|
||||||
|
if(res.code == '000000'){
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.$emit('handleZkLeave',row)
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
}
|
show(row){
|
||||||
</script>
|
this.dialogVisible = true
|
||||||
<style scoped>
|
this.searchForm = {}
|
||||||
|
this.mulSelect = row
|
||||||
</style>
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -0,0 +1,137 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-dialog title="推送北森" :visible.sync="searchDialog" width="500px">
|
||||||
|
<el-form :model="form" :rules="rules" ref="ruleForm">
|
||||||
|
<el-form-item label="部门:" label-width="120px" prop="oIdDepartment">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-cascader
|
||||||
|
:options="deptOptions"
|
||||||
|
v-model="form.oIdDepartment"
|
||||||
|
placeholder="请选择部门"
|
||||||
|
:props="{ checkStrictly: true,emitPath:false }"
|
||||||
|
clearable></el-cascader>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button size="mini" type="primary" plain @click="searchDialog = false">取 消</el-button>
|
||||||
|
<el-button type="primary" size="mini" @click="confirm" :loading="configLoing">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import axios from "axios";
|
||||||
|
import { getRegionList,addBeiSen } from "../../../api/storeManage.js";
|
||||||
|
import { handleTree } from "@/utils/index";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pickerOptions: {
|
||||||
|
onPick: ({ maxDate, minDate }) => {
|
||||||
|
this.choiceDate = minDate.getTime();
|
||||||
|
if (maxDate) {
|
||||||
|
this.choiceDate = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
disabledDate: (time) => {
|
||||||
|
const self = this;
|
||||||
|
const startDay =
|
||||||
|
(new Date(self.choiceDate).getDate() - 1) * 24 * 3600 * 1000;
|
||||||
|
const endDay =
|
||||||
|
(new Date(
|
||||||
|
new Date(self.choiceDate).getFullYear(),
|
||||||
|
new Date(self.choiceDate).getMonth() + 1,
|
||||||
|
0
|
||||||
|
).getDate() -
|
||||||
|
new Date(self.choiceDate).getDate()) *
|
||||||
|
24 *
|
||||||
|
3600 *
|
||||||
|
1000;
|
||||||
|
let minTime = self.choiceDate - startDay;
|
||||||
|
let maxTime = self.choiceDate + endDay;
|
||||||
|
return (
|
||||||
|
time.getTime() > Date.now() ||
|
||||||
|
time.getTime() < minTime ||
|
||||||
|
time.getTime() > maxTime
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
configLoing:false,
|
||||||
|
rules:{
|
||||||
|
oIdDepartment:[
|
||||||
|
{ required: true, message: '请选择推送部门', trigger: 'change' }
|
||||||
|
],
|
||||||
|
},
|
||||||
|
form:{
|
||||||
|
},
|
||||||
|
searchDialog:false,
|
||||||
|
deptOptions:[],
|
||||||
|
accessKey:sessionStorage.getItem("accessKey"),
|
||||||
|
host:sessionStorage.getItem("host"),
|
||||||
|
bsToken:'',
|
||||||
|
params:{}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
this.getDept()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
confirm(){
|
||||||
|
this.$refs['ruleForm'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
// let data = { ...this.params,oid:this.form.oIdDepartment }
|
||||||
|
let data = this.params.map(item=>{ return { ...item,oid:this.form.oIdDepartment } })
|
||||||
|
this.configLoing = true
|
||||||
|
addBeiSen(data).then(res=>{
|
||||||
|
this.configLoing = false
|
||||||
|
if(res.code == '000000'){
|
||||||
|
this.$message.success({ message: "推送成功!" });
|
||||||
|
this.searchDialog = false
|
||||||
|
this.$emit('init')
|
||||||
|
}else{
|
||||||
|
this.$alert(res.message, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
callback: (action) => {
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
show(row){
|
||||||
|
this.searchDialog = true
|
||||||
|
this.params = row
|
||||||
|
},
|
||||||
|
replaceRegionListToChildren(treeArray) {
|
||||||
|
if (!Array.isArray(treeArray)) {
|
||||||
|
return treeArray;
|
||||||
|
}
|
||||||
|
return treeArray.map((node) => {
|
||||||
|
const newNode = { ...node,label:node.regionName,value:node.id };
|
||||||
|
if (Array.isArray(newNode.regionListVoList)&&newNode.regionListVoList.length) {
|
||||||
|
newNode.children = this.replaceRegionListToChildren(newNode.regionListVoList);
|
||||||
|
delete newNode.regionListVoList;
|
||||||
|
}
|
||||||
|
return newNode;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getDept(){
|
||||||
|
getRegionList({storeId:sessionStorage.getItem("parentId")}).then(res=>{
|
||||||
|
if(res.code == '000000'){
|
||||||
|
this.deptOptions = this.replaceRegionListToChildren(res.data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
/deep/.el-cascader .el-input .el-input__inner{
|
||||||
|
width:192px !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,137 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-dialog :title="title" :visible.sync="searchDialog" width="500px">
|
||||||
|
<el-form :model="form" :rules="rules" ref="ruleForm">
|
||||||
|
<el-form-item label="设置:" label-width="120px" prop="tag">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-radio v-model="form.tag" label="0">追加权限</el-radio>
|
||||||
|
<el-radio v-model="form.tag" label="1">删除权限</el-radio>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="权限组:" label-width="120px" prop="inlate">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-select v-model="form.levels" multiple filterable placeholder="请设置权限组">
|
||||||
|
<el-option
|
||||||
|
v-for="item in option"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button size="mini" type="primary" plain @click="searchDialog = false">取 消</el-button>
|
||||||
|
<el-button type="primary" size="mini" @click="confirm" :loading="configLoing">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import axios from "axios";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title:"设置权限组",
|
||||||
|
configLoing:false,
|
||||||
|
option:[],
|
||||||
|
form:{},
|
||||||
|
rules:{
|
||||||
|
levels:[
|
||||||
|
{ required: true, message: '请选择选项组', trigger: 'change' }
|
||||||
|
],
|
||||||
|
tag:[
|
||||||
|
{ required: true, message: '请选择追加删除权限', trigger: 'change' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
searchDialog:false,
|
||||||
|
accessKey:sessionStorage.getItem("accessKey"),
|
||||||
|
host:sessionStorage.getItem("host"),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getPrePage(){
|
||||||
|
let data = {
|
||||||
|
number: 100,
|
||||||
|
is_visitor: 0
|
||||||
|
}
|
||||||
|
axios.post(`http://${this.host}/api/v2/level/get/?key=${this.accessKey}`,data).then(res=>{
|
||||||
|
this.configLoing = false
|
||||||
|
if(res.status == 200){
|
||||||
|
if(res.data.ret == 0){
|
||||||
|
this.option = res.data.data.items.map(item=>{
|
||||||
|
return {
|
||||||
|
label:item.name,
|
||||||
|
value:item.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
this.$alert(res.data.msg, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
callback: (action) => {},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
this.$alert(res.msg, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
callback: (action) => {},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
confirm(){
|
||||||
|
this.$refs['ruleForm'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.configLoing = true
|
||||||
|
let data = {
|
||||||
|
...this.form,
|
||||||
|
}
|
||||||
|
axios.post(`http://${this.host}/api/v2/employee/level/?key=${this.accessKey}`,data).then(res=>{
|
||||||
|
this.configLoing = false
|
||||||
|
if(res.status == 200){
|
||||||
|
if(res.data.ret == 0){
|
||||||
|
|
||||||
|
}else{
|
||||||
|
this.$alert(res.data.msg, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
callback: (action) => {},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
this.$alert(res.msg, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
callback: (action) => {},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
show(row){
|
||||||
|
this.searchDialog = true
|
||||||
|
this.form = {pin:row.pin}
|
||||||
|
this.getPrePage()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
/deep/.el-cascader .el-input .el-input__inner{
|
||||||
|
width:192px !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -0,0 +1,257 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-dialog title="推送中控" :visible.sync="searchDialog" width="500px">
|
||||||
|
<el-form :model="form" :rules="rules" ref="ruleForm">
|
||||||
|
<el-form-item label="部门:" label-width="120px" prop="deptnumber">
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-cascader
|
||||||
|
:options="deptOptions"
|
||||||
|
v-model="form.deptnumber"
|
||||||
|
placeholder="请选择部门"
|
||||||
|
:props="{ checkStrictly: true,emitPath:false }"
|
||||||
|
clearable></el-cascader>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="上班签到:" label-width="120px" prop="inlate" filterable>
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-select v-model="form.inlate" filterable placeholder="请选择上班签到类型">
|
||||||
|
<el-option
|
||||||
|
v-for="item in inOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="下班签退:" label-width="120px" prop="outearly" filterable>
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-select v-model="form.outearly" filterable placeholder="请选择下班签退类型">
|
||||||
|
<el-option
|
||||||
|
v-for="item in outOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="雇佣类型:" label-width="120px" prop="hiretype" filterable>
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-select v-model="form.hiretype" filterable placeholder="请选择雇佣类型">
|
||||||
|
<el-option
|
||||||
|
v-for="item in hireOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="人员是否考勤:" label-width="120px" prop="att" filterable>
|
||||||
|
<div class="searchDiv">
|
||||||
|
<el-select v-model="form.att" filterable placeholder="请选择人员是否考勤">
|
||||||
|
<el-option
|
||||||
|
v-for="item in attOption"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button size="mini" type="primary" plain @click="searchDialog = false">取 消</el-button>
|
||||||
|
<el-button type="primary" size="mini" @click="confirm" :loading="configLoing">确 定</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import axios from "axios";
|
||||||
|
import { zhongkongTest,getRegionList } from "../../../api/storeManage.js";
|
||||||
|
import { handleTree } from "@/utils/index";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
configLoing:false,
|
||||||
|
isOne:null,
|
||||||
|
rules:{
|
||||||
|
deptnumber:[
|
||||||
|
{ required: true, message: '请选择推送部门', trigger: 'change' }
|
||||||
|
],
|
||||||
|
inlate: [
|
||||||
|
{ required: true, message: '请选择上班签到类型', trigger: 'change' }
|
||||||
|
],
|
||||||
|
outearly: [
|
||||||
|
{ required: true, message: '请选择下班签退类型', trigger: 'change' }
|
||||||
|
],
|
||||||
|
hiretype: [
|
||||||
|
{ required: true, message: '请选择雇佣类型', trigger: 'change' }
|
||||||
|
],
|
||||||
|
att: [
|
||||||
|
{ required: true, message: '请选择人员是否考勤', trigger: 'change' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
form:{
|
||||||
|
comverifys:15
|
||||||
|
},
|
||||||
|
searchDialog:false,
|
||||||
|
inOptions:[
|
||||||
|
{
|
||||||
|
label:"依据对应时间段",
|
||||||
|
value:'0'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label:"上班必须签到",
|
||||||
|
value:'1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label:"上班不用签到",
|
||||||
|
value:'2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
outOptions:[
|
||||||
|
{
|
||||||
|
label:"依据对应时间段",
|
||||||
|
value:'0'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label:"下班必须签到",
|
||||||
|
value:'1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label:"下班不用签到",
|
||||||
|
value:'2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
hireOptions:[
|
||||||
|
{
|
||||||
|
label:"合同工",
|
||||||
|
value:'0'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label:"兼职",
|
||||||
|
value:'1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label:"临时工",
|
||||||
|
value:'2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
attOption:[
|
||||||
|
{
|
||||||
|
label:"是",
|
||||||
|
value:'0'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label:"否",
|
||||||
|
value:'1'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
deptOptions:[],
|
||||||
|
accessKey:sessionStorage.getItem("accessKey"),
|
||||||
|
host:sessionStorage.getItem("host"),
|
||||||
|
userpin:"",
|
||||||
|
row:[],
|
||||||
|
mulSelect:[]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
this.getDept()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleSendZk(){
|
||||||
|
let data = []
|
||||||
|
for(let i =0;i<this.row.length;i++){
|
||||||
|
data.push({...this.row[i],...this.form})
|
||||||
|
}
|
||||||
|
this.configLoing = true
|
||||||
|
axios.post(`http://${this.host}/api/v2/employee/update/?key=${this.accessKey}`,data).then(res=>{
|
||||||
|
this.configLoing = false
|
||||||
|
if(res.status == 200){
|
||||||
|
if(res.data.ret == 0){
|
||||||
|
this.$message.success({ message: "推送成功!" });
|
||||||
|
this.handleIsOne(this.mulSelect)
|
||||||
|
}else{
|
||||||
|
this.$message.warning({ message: res.data.msg +'---' +res.data.errorlist });
|
||||||
|
let list = []
|
||||||
|
let errList = res.data.errorlist
|
||||||
|
this.mulSelect.forEach(item=>{
|
||||||
|
let index = errList.findIndex(ite=>ite == item.staffNum)
|
||||||
|
if(index == -1){
|
||||||
|
list.push(item)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.mulSelect = list
|
||||||
|
console.log(this.mulSelect)
|
||||||
|
this.handleIsOne(this.mulSelect)
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
this.$alert(res.msg, "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
confirmButtonClass: "confirmbtnFalses",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
callback: (action) => {},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleIsOne(row){
|
||||||
|
let data = {
|
||||||
|
userpin:this.userpin
|
||||||
|
}
|
||||||
|
this.configLoing = true
|
||||||
|
axios.post(`http://${this.host}/api/v2/employee/restore/?key=${this.accessKey}`,data).then(res=>{
|
||||||
|
this.configLoing = false
|
||||||
|
if(res.status == 200){
|
||||||
|
this.searchDialog = false
|
||||||
|
this.form = { comverifys:15 }
|
||||||
|
this.$emit('confirm',row)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
confirm(){
|
||||||
|
this.$refs['ruleForm'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.handleSendZk()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
show(row,mulSelect){
|
||||||
|
this.searchDialog = true
|
||||||
|
this.userpin = row.map(item=>item.pin)
|
||||||
|
this.row = row
|
||||||
|
this.mulSelect = mulSelect
|
||||||
|
},
|
||||||
|
replaceRegionListToChildren(treeArray) {
|
||||||
|
if (!Array.isArray(treeArray)) {
|
||||||
|
return treeArray;
|
||||||
|
}
|
||||||
|
return treeArray.map((node) => {
|
||||||
|
const newNode = { ...node,label:node.regionName,value:node.regionNum };
|
||||||
|
if (Array.isArray(newNode.regionListVoList)&&newNode.regionListVoList.length) {
|
||||||
|
newNode.children = this.replaceRegionListToChildren(newNode.regionListVoList);
|
||||||
|
delete newNode.regionListVoList;
|
||||||
|
}
|
||||||
|
|
||||||
|
return newNode;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getDept(){
|
||||||
|
getRegionList({storeId:sessionStorage.getItem("parentId")}).then(res=>{
|
||||||
|
if(res.code == '000000'){
|
||||||
|
this.deptOptions = this.replaceRegionListToChildren(res.data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
/deep/.el-cascader .el-input .el-input__inner{
|
||||||
|
width:192px !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Reference in New Issue