临时工对接
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>
|
||||
<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="endTime">
|
||||
<el-date-picker
|
||||
v-model="searchForm.endTime"
|
||||
type="datetime"
|
||||
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 { updataStaffTemporary } from "../../../api/storeManage.js";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loading:false,
|
||||
searchForm:{
|
||||
endTime:''
|
||||
<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="endTime">
|
||||
<el-date-picker
|
||||
v-model="searchForm.endTime"
|
||||
type="datetime"
|
||||
:picker-options="pickerOptions"
|
||||
style='width:200px'
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="结束类型:" label-width="120px" prop="leavetype">
|
||||
<el-select v-model="searchForm.leavetype" 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 label="离职原因:" label-width="120px">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="2"
|
||||
placeholder="请输入离职原因"
|
||||
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: [
|
||||
{ required: true, message: '请选择结束日期', trigger: 'change' }
|
||||
],
|
||||
{
|
||||
label:"辞退",
|
||||
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(){
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
let params = {...this.searchForm}
|
||||
params.endTime = this.formatTime(this.searchForm.endTime,"YYYY-MM-DD hh:mm:ss");
|
||||
updataStaffTemporary(params).then(res=>{
|
||||
this.loading = false
|
||||
if(res.code == '000000'){
|
||||
this.dialogVisible = false
|
||||
this.$emit('init')
|
||||
return this.$message.success({message: "结束成功!"});
|
||||
}
|
||||
search(){
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
let list = []
|
||||
for(let i =0;i<this.mulSelect.length;i++){
|
||||
let item = this.mulSelect[i]
|
||||
list.push({
|
||||
...item,
|
||||
pin:item.staffNum,
|
||||
leavedate:this.formatTime(this.searchForm.endTime,"YYYY-MM-DD hh:mm"),
|
||||
leavetype:this.searchForm.leavetype,
|
||||
reason:this.searchForm.reason,
|
||||
endTime:this.formatTime(this.searchForm.endTime,"YYYY-MM-DD hh:mm:ss"),
|
||||
zhongkongDimissionDate:this.formatTime(this.searchForm.endTime,"YYYY-MM-DD hh:mm:ss")
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
show(row){
|
||||
this.dialogVisible = true
|
||||
this.searchForm = {...row}
|
||||
}
|
||||
this.loading = true
|
||||
sendZhongkongDimissions(list).then(res=>{
|
||||
this.loading = false
|
||||
if(res.code == '000000'){
|
||||
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)
|
||||
}
|
||||
})
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
show(row){
|
||||
this.dialogVisible = true
|
||||
this.searchForm = {}
|
||||
this.mulSelect = row
|
||||
}
|
||||
},
|
||||
}
|
||||
</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