临时工对接

master
曾嘉俊 2 years ago
parent 1098659f87
commit 788dc1c25f

Binary file not shown.

@ -1701,7 +1701,7 @@ export function updateRegionList(data) {
export function getRegionList(params) {
return service({
url: "/api" + "/regionList",
url: "/api" + "/regionList/get",
method: "get",
params:params,
});
@ -1777,6 +1777,141 @@ export function getStaffTemporary(params) {
});
}
export function zhongkongTest() {
return service({
url: "/api" + `/zhongkongTest`,
method: "get",
});
}
export function getJobContext(data) {
return service({
url: "/api" + `/zhongkongTest/getJobContext`,
method: "post",
data
});
}
export function sendZhongkong(data) {
return service({
url: "/api" + `/zhongkongTest/sendZhongkong`,
method: "post",
data
});
}
export function getBsToken() {
return service({
url: "/api" + `/beiSenTest/getToken`,
method: "get",
});
}
export function updateByBeiSen(data) {
return service({
url: "/api" + `/staffTemporary/updateByBeiSen`,
method: "put",
data
});
}
export function bsJobContentList(data) {
return service({
url: "/api" + `/jobContentList`,
method: "put",
data
});
}
export function sendZhongkongDimission(data) {
return service({
url: "/api" + `/staffTemporary/sendZhongkongDimission`,
method: "post",
data
});
}
export function sendBeisenDimission(data) {
return service({
url: "/api" + `/staffTemporary/sendBeisenDimission`,
method: "post",
data
});
}
export function ruzhiZhongkongDimission(data) {
return service({
url: "/api" + `/staffTemporary/ruzhiZhongkongDimission`,
method: "post",
data
});
}
export function beisenUserList(data) {
return service({
url: "/api" + `/beisenUserList`,
method: "post",
data
});
}
export function getBeisenUserList(params) {
return service({
url: "/api" + `/beisenUserList`,
method: "get",
params
});
}
export function delBeisenUserList(id) {
return service({
url: "/api" + `/beisenUserList/${id}`,
method: "delete",
});
}
export function addStaffs(data) {
return service({
url: "/api" + `/demay/ssm/staff/staffAddByWeChat`,
method: "post",
data
});
}
export function addBeiSen(data) {
return service({
url: "/api" + `/staffTemporary/updateByBeiSen`,
method: "put",
data
});
}
export function delSendBeisenDimission(data) {
return service({
url: "/api" + `/staffTemporary/sendBeisenDimission`,
method: "post",
data
});
}
export function jobSendBeisen(data) {
return service({
url: "/api" + `/staffTemporary/jobSendBeisen`,
method: "post",
data
});
}
export function sendZhongkongDimissions(data) {
return service({
url: "/api" + `/staffTemporary/sendZhongkongDimission`,
method: "post",
data
});
}

@ -209,35 +209,35 @@ export default {
number: "400",
id:"1001001",
},
{
name: "角色",
icon: "el-icon-user",
route: "/role",
index: "role",
number: "400",
id:"100104",
},
{
name: "权限",
icon: "el-icon-user",
route: "/permissions",
index: "permissions",
number: "400",
id:"100104",
},
// {
// name: "",
// icon: "el-icon-user",
// route: "/role",
// index: "role",
// number: "400",
// id:"100104",
// },
// {
// name: "",
// icon: "el-icon-user",
// route: "/permissions",
// index: "permissions",
// number: "400",
// id:"100104",
// },
{
name: "用户",
icon: "el-icon-user",
route: "/yh",
index: "yh",
route: "/user",
index: "user",
number: "400",
id:"100104",
},
{
name: "区域",
name: "部门",
icon: "el-icon-view",
route: "/qyqyda",
index: "qyqyda",
route: "/dept",
index: "dept",
number: "400",
listShow: true,
},
@ -252,8 +252,8 @@ export default {
{
name: "扫码工作记录",
icon: "el-icon-view",
route: "/lsg",
index: "lsg",
route: "/codeJob",
index: "codeJob",
number: "400",
listShow: true,
},
@ -268,8 +268,16 @@ export default {
{
name: "临时工考勤记录",
icon: "el-icon-view",
route: "/kqjl",
index: "kqjl",
route: "/staffAttendance",
index: "staffAttendance",
number: "400",
listShow: true,
},
{
name: "北森失败记录",
icon: "el-icon-view",
route: "/errList",
index: "errList",
number: "400",
listShow: true,
},

@ -9,7 +9,7 @@
<i :class="[isShow==true?'el-icon-s-unfold':'el-icon-s-fold']"></i>
</div>
<div @click='ruotes' style='cursor: pointer'>
<span class="headertitle">门店业务</span>
<span class="headertitle">临时工业务</span>
<!-- <span class="headertitle">代收业务</span> -->
<span class="text-white ">
{{storeNum}}

@ -80,7 +80,7 @@ import {
phoneLoginNews,
phoneLogindzz,
} from "../api/login.js";
import { storeParaList } from "../api/storeManage.js";
import { storeParaList,zhongkongTest } from "../api/storeManage.js";
import { storeOne } from "../api/eashier";
import { setCookie } from "../utils/utils";
import { partten } from "../../partten/index";
@ -274,6 +274,15 @@ export default {
});
}
},
zhongkongTest(){
zhongkongTest().then(res=>{
if(res.code == '000000'){
console.log(res)
sessionStorage.setItem("accessKey", res.data.key);
sessionStorage.setItem("host", res.data.host);
}
})
},
radioData(v) {
let form = { ...this.form };
form.storeId = v.id;
@ -343,6 +352,7 @@ export default {
sessionStorage.setItem("mobilePhone", res.data.mobilePhone);
sessionStorage.setItem("userInfo", JSON.stringify(res.data));
sessionStorage.setItem("list", JSON.stringify(res.data.list));
this.zhongkongTest()
if (this.hours < 9) {
this.hello = "早上好!";
} else if (this.hours < 12) {

@ -44,98 +44,16 @@
<el-date-picker :disabled="title=='查看'" style="min-width:50px" v-model="form.leaveDate" type="date" format="yyyy-MM-dd" placeholder="选择日期"></el-date-picker>
</div>
</el-form-item>
<el-form-item :prop="form.userState?'roleName':''" label="角色名称" v-if='title==""||title==""'>
<!-- <el-form-item :prop="form.userState?'roleName':''" label="角色名称" v-if='title==""||title==""'>
<el-select filterable default-first-option @change="changeRole" v-model="form.roleName" clearable placeholder="请选择" :disabled="title=='查看'" style="min-width:50px">
<el-option v-for="item in roleLists" :key="item.roleName" :label="item.roleName" :value="item.id"> </el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="qq">
<div class="form-width">
<el-input :disabled="title=='查看'" placeholder="请输入qq" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" v-model="form.qq" autocomplete="on"></el-input>
</div>
</el-form-item>
<el-form-item label="微信">
<div class="form-width">
<el-input :disabled="title=='查看'" placeholder="请输入微信" oninput="this.value=this.value.replace(/[^\w_]/g,'');" v-model="form.wechat" autocomplete="on"></el-input>
</div>
</el-form-item>
<el-form-item label="职务">
<el-select :disabled="title=='查看'" v-model="form.postName" placeholder="请选择" @change="postChange">
<el-option v-for="item in gradeList" :key="item.id" :label="item.postName" :value="item.id">
</el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item label="APP权限">
<el-cascader :disabled="title=='查看'" class="form-width" v-model="form.grade" :options="grade" :emitPath="false" :show-all-levels="false" @change="gradechange"></el-cascader>
</el-form-item>
<el-form-item label="工种">
<el-select :disabled="title=='查看'" v-model="form.wordTypeName" placeholder="请选择" >
<el-option v-for="item in jobList" :key="item.id" :label="item.wordTypeName" :value="item.label">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="部门">
<el-select :disabled="title=='查看'" v-model="form.deptName" 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="员工类型" prop="type">
<el-radio-group :disabled="title=='查看'" v-model="form.type">
<el-radio :label="0">高管</el-radio>
<el-radio :label="1">普工</el-radio>
<el-radio :label="2">收银</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="人气" :label-width="title=='查看'?'':'83px'">
<div class="form-width">
<el-input :disabled="title=='查看'" placeholder="请输入人气" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" v-model="form.popularity" autocomplete="on"></el-input>
</div>
</el-form-item>
<el-form-item label="员工来源">
<el-select :disabled="title=='查看'" filterable default-first-option v-model="form.source" placeholder="请选择">
<el-option style="margin-right:10px" label="校招" :value="0"> </el-option>
<el-option label="社招" :value="1"> </el-option>
<el-option label="介绍" :value="2"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="排班/用户">
<div class="form-width">
<el-checkbox :disabled="title=='查看'" v-model="form.row" label="排班" name="row"></el-checkbox>
<el-checkbox :disabled="title=='查看'" v-model="form.userState" label="用户" name="userState"></el-checkbox>
</div>
</el-form-item>
<el-form-item :prop="form.userState?'roleName':''" label="角色名称">
<el-select filterable default-first-option multiple @change="changeRole" v-model="form.roleName" clearable placeholder="请选择" style="min-width:50px" :disabled="!form.userState&&!title!='查看'">
<el-option v-for="item in roleLists" :key="item.roleName" :label="item.roleName" :value="item.id"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="充值业绩:">
<div class="form-width">
<el-input :disabled="title=='查看'" placeholder="请输入充值业绩" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" v-model="form.rechargeAchi"></el-input>
</div>
</el-form-item>
<el-form-item label="疗程业绩:">
<div class="form-width">
<el-input :disabled="title=='查看'" placeholder="请输入疗程业绩" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" v-model="form.courseAchi"></el-input>
</div>
</el-form-item>
<el-form-item label="收银业绩:">
<div class="form-width">
<el-input :disabled="title=='查看'" placeholder="请输入收银业绩" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" v-model="form.cashAchi"></el-input>
</div>
</el-form-item>
<el-form-item label="擅长">
<div class="form-width">
<el-input :disabled="title=='查看'" placeholder="请输入擅长" v-model="form.goodAt" autocomplete="on" type="textarea" size="medium" :autosize="{ minRows: 2, maxRows: 4}" :maxlength="150" show-word-limit></el-input>
</div>
</el-form-item> -->
<el-table-column align="center" prop="" label="操作人" min-width="100"></el-table-column>
</el-select> -->
<el-form-item label="简介">
<div class="form-width">
<el-input :disabled="title=='查看'" placeholder="请输入简介" v-model="form.briefIntroduction" autocomplete="on" type="textarea" :autosize="{ minRows:2, maxRows:10}" :maxlength="300" show-word-limit></el-input>
</div>
</el-form-item>
<br />
<el-form-item label=" ">
<div>
<el-button size="mini" type="primary" plain @click="handleClose"> </el-button>

@ -1,12 +1,15 @@
<template>
<el-dialog :close-on-click-modal="false" v-dialogDrag width="500px" powerId="form" :title="title+'区域'" :append-to-body="true" :visible.sync="dialogFormVisible" :before-close="handleClose">
<el-dialog :close-on-click-modal="false" v-dialogDrag width="500px" powerId="form" :title="title+'部门'" :append-to-body="true" :visible.sync="dialogFormVisible" :before-close="handleClose">
<div>
<el-form :model="form" ref="form" :rules="rules" label-width="80px">
<div class="form">
<el-form-item label="区域名称" prop="regionName">
<el-form-item label="部门名称" prop="regionName">
<el-input ref="regionName" v-model="form.regionName" @change="handleChange" autocomplete="on" style='width:192px'></el-input>
</el-form-item>
<el-form-item label="区域管理员:" prop="manageId">
<el-form-item label="部门编码" prop="regionNum">
<el-input ref="regionName" v-model="form.regionNum" @change="handleChange" autocomplete="on" style='width:192px'></el-input>
</el-form-item>
<el-form-item label="部门管理员:">
<el-select @change="handleOptChange" v-model="form.manageId" placeholder="请选择">
<el-option
v-for="item in options"
@ -16,7 +19,7 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item label="区域地址:">
<el-form-item label="部门地址:">
<el-input placeholder="请输入详细地址" v-model="form.regionAddress" autocomplete="off" style='width:192px'></el-input>
<el-button type="primary" size="mini" @click="dialogVisible2 = true">
<i style="font-size:20px;" class="el-icon-location-information"></i>
@ -62,10 +65,10 @@ export default {
return {
rules:{
regionName: [
{ required: true, message: '请输入区域名称', trigger: 'change' },
{ required: true, message: '请输入部门名称', trigger: 'change' },
],
manageId: [
{ required: true, message: '请选择管理员', trigger: 'change' },
regionNum: [
{ required: true, message: '请输入部门编码', trigger: 'change' },
],
},
options:[],
@ -128,13 +131,16 @@ export default {
this.$refs.form.clearValidate();
},
//
show(row) {
show(row,parentId) {
parentId = parentId||null
if (row.id ) {
this.title = "修改";
this.form = {...row}
} else {
this.title = "新增";
this.form = {}
this.title =parentId? "新增多级":'新增';
this.form = {
parentId
}
}
this.dialogFormVisible = true;
},
@ -143,7 +149,7 @@ export default {
this.$refs['form'].validate((valid) => {
if (valid) {
this.confirmLoad = true
if (this.title == "新增") {
if (this.title == "新增" || this.title =='新增多级') {
let params = {
...this.form,
storeId:this.rowId

@ -2,36 +2,26 @@
<div>
<div class="header_flex">
<div>
<el-button
size="mini"
type="primary"
@click="handleAddEdit({})"
>添加
<el-button size="mini" type="primary" @click="handleAddEdit({},null)">
添加一级部门
</el-button>
</div>
<div>
<el-input
size="medium"
style="width: 180px"
placeholder="请输入区域名称"
v-model="pageInfo.regionName"
>
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input>
<el-button size="mini" type="primary">确认</el-button
>
<el-button size="mini" type="info" plain @click="init"></el-button>
</div>
</div>
<div class="flex justify-start align-start bg-white padding-bottom">
<div class="flex justify-start align-start bg-white padding-bottom">
<el-table :data="rightList" border style="width: 100%"
v-loading="rightLoad"
:header-cell-style="{
background: 'linear-gradient(#6cb3ff, #1873d4)',
color: '#eeeeee'
}"
>
<el-table-column align="center" prop="regionName" label="区域名称" show-overflow-tooltip ></el-table-column>
default-expand-all row-key="id"
:tree-props="{ children: 'regionListVoList', hasChildren: 'hasChildren' }">
<el-table-column align="center" prop="regionName" label="部门名称" show-overflow-tooltip ></el-table-column>
<el-table-column align="center" prop="id" label="系统唯一ID" show-overflow-tooltip ></el-table-column>
<el-table-column align="center" prop="regionNum" label="部门编码" show-overflow-tooltip ></el-table-column>
<el-table-column align="center" prop="manageName" label="管理员" show-overflow-tooltip ></el-table-column>
<el-table-column align="center" prop="mobilePhone" label="管理员手机" show-overflow-tooltip ></el-table-column>
<el-table-column align="center" prop="regionAddress" label="地址" show-overflow-tooltip ></el-table-column>
@ -43,24 +33,13 @@
</el-table-column>
<el-table-column align="center" prop="courseRows" label="操作">
<template slot-scope='scope'>
<el-button type="text" @click='handleAddEdit({},scope.row.id)'>新增</el-button>
<el-button type="text" @click='handleAddEdit(scope.row)'>修改</el-button>
<el-button type="text" style="color: red;" @click="handleDel(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="block">
<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>
<edit :rowId='rowId' ref="edit" @confirm="confirm" @init='init'/>
<advanced-searchselect ref="advancedSearchselect" @handleSelect="init"/>
</div>
@ -70,7 +49,7 @@
import edit from './components/edit.vue'
import advancedSearchselect from './components/select.vue'
import { storepage,getRegionList,delRegionList } from "../../../api/storeManage.js";
// params
import { handleTree } from "@/utils/index";
export default {
components:{
edit,
@ -99,11 +78,7 @@ export default {
rowId:'',
leftList:[],
rightList:[],
pageInfo: {
pageNum: 1,
pageSize: 10,
},
total:0,
pageInfo: {},
rowForm:{}
}
},
@ -125,9 +100,7 @@ export default {
getRegionList(params).then(res=>{
this.rightLoad = false
if(res.code == '000000'){
console.log(res)
this.rightList = res.pageInfo.list
this.total = res.pageInfo.total
this.rightList = res.data
}
})
},
@ -152,9 +125,8 @@ export default {
handleSelect(){
this.$refs.advancedSearchselect.show()
},
handleAddEdit(row){
console.log('1111')
this.$refs.edit.show(row)
handleAddEdit(row,id){
this.$refs.edit.show(row,id)
},
handleRowClick(row){
this.rowForm = row
@ -166,14 +138,6 @@ export default {
}
return { cursor: 'pointer' }
},
handleSizeChange(size){
this.pageInfo.pageNum = size
this.getRegionList()
},
handleCurrentChange(current){
this.pageInfo.pageSize = current
this.getRegionList()
},
},
}
</script>

@ -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>

@ -2,19 +2,22 @@
<div>
<div class="flex" style="margin-bottom: 10px;">
<div class="block" style="margin-left: auto;">
<el-date-picker size="medium" v-model="days" @change="init" type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
<el-date-picker size="medium" v-model="days" @change="init" type="daterange" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的员工姓名" clearable></el-input>
<el-button size="mini" type="primary" plain @click="init"></el-button>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的员工姓名" @change="init" clearable></el-input>
<el-button size="mini" type="primary" @click="handleSelect"></el-button>
<el-button size="mini" type="success" @click="handleSelectNew" :loading="getNew">获取最新</el-button>
<el-button size="mini" type="primary" @click="handleSendBs" :disabled="!mulSelect.length" :loading="bsLoad">推送北森</el-button>
</div>
</div>
<el-table v-loading="loading" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" border ref="table">
<el-table-column align="center" prop="regionName" label="区域"></el-table-column>
<el-table v-loading="loading" @selection-change="handleSelectTab" @row-click="handleRowClick" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" border ref="table">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column align="center" prop="deptNumber" label="部门编码"></el-table-column>
<el-table-column align="center" prop="deptName" label="部门名称"></el-table-column>
<el-table-column align="center" prop="equipmentNum" label="设备编码"></el-table-column>
<el-table-column align="center" prop="equipmentName" label="设别名称"></el-table-column>
<el-table-column align="center" prop="staffName" label="员工名称"></el-table-column>
<el-table-column align="center" prop="sex" label="性别">
<template slot-scope='scope'>
@ -28,35 +31,20 @@
{{ scope.row.checkTime|timestampToTime }}
</template>
</el-table-column>
<el-table-column align="center" prop="type" label="打卡类型">
<el-table-column align="center" prop="status" label="状态" min-width="100">
<template slot-scope='scope'>
{{ scope.row.type?'下班':'上班' }}
<el-tag :type="scope.row.isBeisen?'':'warning'">{{ scope.row.isBeisen?'已推送北森':'未推送北森' }}</el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="图像">
<template slot-scope='scope'>
<el-image
v-if='scope.row.checkContent'
style="width: 20px; height: 20px"
:src="scope.row.checkContent"
:preview-src-list="[scope.row.checkContent]">
</el-image>
</template>
</el-table-column>
<el-table-column align="center" prop="jobContent" label="工作内容" min-width="100"></el-table-column>
<el-table-column align="center" prop="courseRows" label="操作">
<template slot-scope='scope'>
<el-button type="text" @click="handleShow(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryForm.pageNum" :page-sizes="[10,20,30,40,50]" :page-size="queryForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
<selectForm ref='selectForm' @init='init'></selectForm>
</div>
</template>
<script>
import { jobContentList } from "../../../api/storeManage.js";
import { jobContentList,getJobContext,jobSendBeisen } from "../../../api/storeManage.js";
import selectForm from './select'
import axios from "axios";
export default {
components:{
selectForm
@ -70,7 +58,11 @@ export default {
},
days:[new Date(),new Date()],
total:0,
loading:false
loading:false,
bsToken:"",
mulSelect:[],
bsLoad:false,
getNew:false
};
},
filters:{
@ -90,20 +82,60 @@ export default {
this.init()
},
methods:{
handleSelect(){
this.$refs.selectForm.show()
handleSelectTab(row) {
this.mulSelect = row;
},
handleRowClick(row) {
this.$refs.table.toggleRowSelection(row)
},
handleDel(row){
this.$confirm(`确定删除吗?`, "提示", {
handleSendBs(row){
this.$confirm("是否将该考勤记录推送北森?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
cancelButtonClass: "cancelbtnFalses",
confirmButtonClass: "confirmbtnFalses",
type: "error",
}).then(res=>{
type: "warning",
}).then(() => {
this.bsLoad = true
jobSendBeisen(this.mulSelect).then(res=>{
this.bsLoad = false
if(res.code == '000000'){
this.$message.success({ message: "推送成功!" });
this.init()
}else{
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
})
}
})
});
},
handleSelectNew(){
let params = {}
try{
if(this.days.length){
params.starttime = this.formatTime(this.days[0],"YYYY-MM-DD 00:00:00");
params.endtime = this.formatTime(this.days[1],"YYYY-MM-DD 23:59:59" );
}
}catch(err){
params.starttime = null
params.endtime = null
}
this.getNew = true
getJobContext(params).then(res=>{
this.getNew = false
if(res.code == '000000'){
this.init()
}
})
},
handleSelect(){
this.$refs.selectForm.show()
},
timestampToTime(timestamp) {
const date = new Date(timestamp);
const year = date.getFullYear();
@ -116,7 +148,6 @@ export default {
return formattedTime;
},
init(val){
console.log(val)
val = val?val:{}
this.loading = true
let params = {...this.queryForm,...val,storeId: sessionStorage.getItem("parentId")}
@ -133,6 +164,7 @@ export default {
jobContentList(params).then(res=>{
this.loading = false
if(res.code == '000000'){
console.log(res)
this.list = res.pageInfo.list
this.total = res.pageInfo.total
}

@ -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>

@ -2,6 +2,7 @@
<div>
<div style="display: flex;margin-bottom: 10px;">
<div>
<el-button size="mini" type="success" @click='handleAddStaff'>手工录入</el-button>
</div>
<div class="flex" style="margin-left: auto" >
<el-date-picker
@ -15,85 +16,119 @@
<el-input style="margin-right: 10px;width:150px" placeholder="请输入员工姓名" v-model="queryForm.staffName"></el-input>
<el-button size="mini" type="primary" @click='init'>查询</el-button>
<el-button size="mini" type="primary" @click="handleSelect"></el-button>
<el-button size="mini" type="success" @click="handleSendZK" :disabled="!mulSelect.length">推送中控</el-button>
<el-button size="mini" type="success" @click="handleSendBs" :disabled="!mulSelect.length">推送北森</el-button>
<el-button size="mini" type="warning" @click="handleZkFz" :loading="fzLoading" :disabled="!mulSelect.length">中控复职</el-button>
<el-button size="mini" type="danger" @click='handleLeave' :disabled="!mulSelect.length" :bsLoad='bsLoad'>中控离职</el-button>
<el-button size="mini" type="danger" @click='handleLeaveBs' :disabled="!mulSelect.length">北森停用</el-button>
</div>
</div>
<el-table v-loading="loading" :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" ref="table">
<el-table-column align="center" prop="staffName" label="区域" ></el-table-column>
<el-table-column align="center" min-width="50px" prop="staffName" label="姓名" ></el-table-column>
<el-table-column align="center" prop="sex" min-width="50px" label="性别">
<el-table v-loading="loading" :data="list" @selection-change="handleSelectTab" @row-click="handleRowClick" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }" ref="table">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column align="center" label="北森系统ID" >
<template slot-scope='scope'>
{{ scope.row.sex?'女':'男' }}
{{ scope.row.blackList.beisenUserId?scope.row.blackList.beisenUserId:'--' }}
</template>
</el-table-column>
<el-table-column align="center" min-width="100px" prop="mobilePhone" label="手机号" ></el-table-column>
<el-table-column align="center" label="证件类型">
<el-table-column align="center" prop="staffName" label="姓名" ></el-table-column>
<el-table-column align="center" prop="staffNum" label="人员编号" ></el-table-column>
<el-table-column align="center" prop="sex" label="性别" >
<template slot-scope='scope'>
身份证
{{ scope.row.sex?'女':'男' }}
</template>
</el-table-column>
<el-table-column align="center" prop="identityCard" label="证件号" min-width="135px"></el-table-column>
<el-table-column align="center" prop="type" label="结算">
<el-table-column align="center" prop="mobilePhone" label="手机号" width="100px"></el-table-column>
<el-table-column align="center" prop="identityCard" label="证件号" width="150px"></el-table-column>
<el-table-column align="center" prop="type" label="结算" >
<template slot-scope='scope'>
{{ scope.row.type ==0?'日结':'月结' }}
</template>
</el-table-column>
<el-table-column align="center" prop="state" label="状态">
<el-table-column align="center" prop="state" label="状态" >
<template slot-scope='scope'>
{{ scope.row.state ==0?'正常':'异常' }}
</template>
</el-table-column>
<el-table-column align="center" prop="scanTime" label="扫描时间" min-width="125px">
<el-table-column align="center" prop="scanTime" label="注册时间" width="135px">
<template slot-scope='scope'>
{{ scope.row.scanTime | timestampToTime }}
</template>
</el-table-column>
<el-table-column align="center" label="图像">
<el-table-column align="center" label="图像" >
<template slot-scope='scope'>
<el-image
style="width: 20px; height: 20px"
:src="scope.row.facesInformation"
:preview-src-list="[scope.row.facesInformation]">
</el-image>
</template>
</el-table-column>
<el-table-column align="center" prop="endType" label="结束类型">
<template slot-scope='scope'>
{{ scope.row.endType==1?'人工结束':'系统结束' }}
style="width: 20px; height: 20px"
:src="scope.row.facesInformation"
:preview-src-list="[scope.row.facesInformation]">
</el-image>
</template>
</el-table-column>
<el-table-column align="center" prop="endTime" label="结束时间" min-width="125px"></el-table-column>
<el-table-column align="center" prop="isBeisen" label="推送状态" min-width="110px">
<el-table-column align="center" prop="sendTime" label="推送北森时间" width="135px"></el-table-column>
<el-table-column align="center" prop="beisenDimissionDate" label="操作北森时间" width="135px"></el-table-column>
<el-table-column align="center" prop="sendZhongkongTime" label="推送中控时间" width="135px"></el-table-column>
<el-table-column align="center" prop="zhongkongDimissionDate" label="操作中控时间" width="135px"></el-table-column>
<el-table-column align="center" label="状态" width="350px" fixed="right">
<template slot-scope='scope'>
<el-tag :type="scope.row.isBeisen==1?'':scope.row.isBeisen==2?'success':'warning'">{{ scope.row.isBeisen==1?'系统自动推送':scope.row.isBeisen==2?'人工推送北森':'未推送北森' }}</el-tag>
</template>
</el-table-column>
<el-table-column align="center" prop="sendTime" label="推送北森时间" min-width="125px"></el-table-column>
<el-table-column align="center" prop="sendTime" label="推送中控时间" min-width="125px"></el-table-column>
<el-table-column align="center" label="操作" min-width="130px">
<template slot-scope='scope'>
<el-button type="text" style='color:red' v-if='!scope.row.endTime' @click='handleLeave(scope.row)'>结束</el-button>
<el-button type="text" :disabled="scope.row.sendTime">推送北森</el-button>
<!-- <el-button type="text" :disabled="scope.row.sendTime">推送中控</el-button> -->
<el-tag :type="scope.row.isBeisen==1?'':scope.row.isBeisen==2?'success':'warning'">{{ scope.row.isBeisen==1?'系统自动推送':scope.row.isBeisen==2?'已推送北森':'未推送北森' }}</el-tag>
<el-tag :type="scope.row.sendZhongkongId?'':'warning'">{{ scope.row.sendZhongkongId?'已推送中控':'未推送中控' }}</el-tag>
<el-tag type="danger" v-if='scope.row.beisenDimission'>{{ '已离职北森' }}</el-tag>
<el-tag type="danger" v-if='scope.row.zhongkongDimission'>{{ '已离职中控' }}</el-tag>
</template>
</el-table-column>
<!-- <el-table-column align="center" label="操作" min-width="100px" fixed="right">
<template slot-scope='scope'> -->
<!-- <el-button type="text" style='color:red' v-if='scope.row.sendZhongkongId && !scope.row.zhongkongDimission' @click='handleLeave(scope.row)'>中控离职</el-button> -->
<!-- <el-dropdown>
<span class="el-dropdown-link">更多操作<i class="el-icon-arrow-down el-icon--right"></i></span>
<el-dropdown-menu slot="dropdown" trigger="click">
<el-dropdown-item v-if='scope.row.zhongkongDimission'>
<span @click='handleRecover(scope.row)'>中控复职</span>
</el-dropdown-item>
<el-dropdown-item v-if="!scope.row.state&&!scope.row.sendTime" >
<span @click='handleSendBs(scope.row)' :loading="bsLoad">推送北森</span>
</el-dropdown-item>
<el-dropdown-item v-if="!scope.row.state&&!scope.row.sendZhongkongTime">
<span @click='handleSendZK(scope.row)' :loading="bsLoad">推送中控</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown> -->
<!-- </template>
</el-table-column> -->
</el-table>
<div class="block">
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryForm.pageNum" :page-sizes="[10,20,30,40,50]" :page-size="queryForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
<selectForm ref="select" @init='init'></selectForm>
<leave ref='leave'></leave>
<leave ref='leave' @handleZkLeave='sendZhongkongDimission'></leave>
<sendZK ref='sendZK' @confirm='confirm'></sendZK>
<sendBs ref='sendBs' @init='init'></sendBs>
<sendPre ref='sendPre' @init='init'></sendPre>
<addStaff ref='addStaff' @init='init'></addStaff>
<bsLeave ref='bsLeave' @init='init'></bsLeave>
</div>
</template>
<script>
import addStaff from './addStaff.vue'
import leave from '@/pages/qyMange/lsg/leave'
import selectForm from './select'
import { staffTemporary } from "../../../api/storeManage.js";
import { staffTemporary,sendZhongkong,getBsToken,sendZhongkongDimission,sendBeisenDimission,ruzhiZhongkongDimission,delSendBeisenDimission } from "../../../api/storeManage.js";
import axios from "axios";
import sendZK from '@/pages/qyMange/lsg/sendZK'
import sendBs from '@/pages/qyMange/lsg/sendBs'
import sendPre from '@/pages/qyMange/lsg/sendPre'
import bsLeave from './bsLeave.vue'
export default {
components:{
selectForm,leave
selectForm,leave,sendZK,sendBs,sendPre,addStaff,bsLeave
},
data() {
return {
fzLoading:false,
bsLoad:false,
date:[],
list: [],
queryForm:{
@ -102,7 +137,11 @@
storeId: sessionStorage.getItem("parentId")
},
total:0,
loading:false
loading:false,
row:{},
accessKey:sessionStorage.getItem("accessKey"),
host:sessionStorage.getItem("host"),
mulSelect:[]
};
},
filters:{
@ -122,8 +161,142 @@
this.init()
},
methods:{
handleLeave(row){
this.$refs.leave.show(row)
handleSelectTab(row) {
this.mulSelect = row;
},
handleRowClick(row) {
this.$refs.table.toggleRowSelection(row)
},
handleAddStaff(){
this.$refs.addStaff.show()
},
sendBeisenDimission(row){
let params = {
id:row.id,
}
sendBeisenDimission(params).then(res=>{
if(res.code == '000000'){
this.init()
}
})
},
sendZhongkongDimission(row){
this.init()
},
handleLeaveBs(){
this.$refs.bsLeave.show(this.mulSelect)
},
handleZkFz(){
this.fzLoading = true
ruzhiZhongkongDimission(this.mulSelect).then(res=>{
this.fzLoading = false
if(res.code == '000000'){
this.$message.success({ message: "中控复职成功!" });
this.init()
}else{
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
},
});
}
})
},
// handleRecover(row){
// this.$confirm("?", "", {
// confirmButtonText: "",
// cancelButtonText: "",
// cancelButtonClass: "cancelbtnFalses",
// confirmButtonClass: "confirmbtnFalses",
// type: "warning",
// }).then(() => {
// let data = {
// userpin:[row.staffNum]
// }
// axios.post(`http://${this.host}/api/v2/employee/restore/?key=${this.accessKey}`,data).then(res=>{
// this.configLoing = false
// if(res.status == 200){
// if(res.data.ret == 0){
// this.$message.success({ message: "!" });
// let params = {
// ...row,
// endType:0,
// endTime: this.formatTime(new Date(new Date().getTime() + 24*60*60*1000), "YYYY-MM-DD hh:mm:ss")
// }
// ruzhiZhongkongDimission(params).then(res=>{
// if(res.code == '000000'){
// this.init()
// }
// })
// this.init()
// }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) => {},
// });
// }
// })
// });
// },
handleSendPre(row){
this.$refs.sendPre.show(row)
},
handleSendBs(){
this.$refs.sendBs.show(this.mulSelect)
},
confirm(row){
this.loading = true
sendZhongkong(row).then(res=>{
this.loading = false
if(res.code == '000000'){
this.init()
}
})
},
handleSendZK(){
this.row = this.mulSelect
// let params = {
// pin:row.staffNum, //
// name:row.staffName, //
// mobile:row.mobilePhone, //
// gender:row.sex?'F':'M', //
// email:row.email, //
// identitycard:row.identityCard, //
// hiredday:this.formatTime(new Date(), "YYYY-MM-DD"), //
// enrollpic:row.facesInformation.replace(/^data:image\/\w+;base64,/, ""), //
// }
let params = []
this.mulSelect.forEach(item=>{
params.push({
pin:item.staffNum, //
name:item.staffName, //
mobile:item.mobilePhone, //
gender:item.sex?'F':'M', //
email:item.email, //
identitycard:item.identityCard, //
hiredday:this.formatTime(new Date(), "YYYY-MM-DD"), //
enrollpic:item.facesInformation.replace(/^data:image\/\w+;base64,/, ""), //
})
})
this.$refs.sendZK.show(params,this.mulSelect)
},
handleLeave(){
this.$refs.leave.show(this.mulSelect)
},
init(val){
val = val?val:{}
@ -140,6 +313,7 @@
}
params.staffName = params.staffName||null
staffTemporary(params).then(res=>{
console.log(res)
this.loading = false
if(res.code == '000000'){
this.list = res.pageInfo.list
@ -165,10 +339,17 @@
</script>
<style scoped>
.flex{
display:flex;
align-items: center;
}
.el-dropdown-link {
cursor: pointer;
color: #409EFF;
}
.el-icon-arrow-down {
font-size: 12px;
}
.flex{
display:flex;
align-items: center;
}
/deep/ .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: rgba(255,235,181);
}

@ -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>

@ -2,7 +2,7 @@
<div>
<el-dialog title="搜索" :visible.sync="searchDialog" width="600px">
<el-form :model="searchForm">
<el-form-item label="区域:" label-width="120px">
<!-- <el-form-item label="区域:" label-width="120px">
<div class="searchDiv">
<el-select v-model="searchForm.regionId" filterable placeholder="请选择区域">
<el-option
@ -13,7 +13,7 @@
</el-option>
</el-select>
</div>
</el-form-item>
</el-form-item> -->
<el-form-item label="手机号:" label-width="120px">
<div class="searchDiv">
<el-input oninput="value=value.replace(/[^\d.]/g,'')" size="medium" maxlength="11" v-model="searchForm.mobilePhone" placeholder="输入要查询的手机号" clearable></el-input>
@ -44,23 +44,6 @@
</el-radio-group>
</div>
</el-form-item>
<el-form-item label="结束:" label-width="120px">
<div class="searchDiv">
<el-radio-group v-model="searchForm.endType" 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.isBeisen" fill="#f78989">
<el-radio label="0" size="medium" type="primary">未推送北森</el-radio>
<el-radio label="1" size="medium" type="primary">自动推送北森</el-radio>
<el-radio label="2" size="medium" type="primary">人工推送北森</el-radio>
</el-radio-group>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="searchDialog = false"> </el-button>

@ -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>

@ -10,7 +10,7 @@
<el-input size="medium" class="form-width-ms" v-model="searchForm.staffName" placeholder="输入要查询的员工姓名" clearable></el-input>
<el-input size="medium" class="form-width-ms" v-model="searchForm.mobilePhone" placeholder="输入要查询的联系电话" clearable></el-input>
<el-button size="mini" type="primary" plain @click='handleSelect'>搜索</el-button>
<el-button size="mini" type="info" plain @click="refresh()"></el-button>
<!-- <el-button size="mini" type="info" plain @click="refresh()"></el-button> -->
</div>
</div>
</div>
@ -143,7 +143,7 @@ export default {
},
//
refresh() {
this.$route.go(0)
this.$router.go(0)
},
//
handleClick(tab, event) {

@ -3,6 +3,7 @@
<div class="displsy-mod">
<el-table :data="list" stripe style="width: 100%" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table-column align="center" prop="staffName" label="员工名称" min-width="100"></el-table-column>
<el-table-column align="center" prop="staffNum" label="员工编码" ></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>
@ -64,7 +65,7 @@
this.$refs.jonContent.show({identityCard:row.identityCard})
},
handleRemove(row){
this.$confirm("是否将该员工移黑名单?", "提示", {
this.$confirm("是否将该员工移黑名单?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",

@ -2,17 +2,6 @@
<el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="dialogVisible" width="60%">
<div style='margin-left:auto;display:flex'>
<div style='margin-left:auto;margin-bottom:10px'>
<!-- <el-input style="margin-right: 10px;width:120px" v-model="queryForm.regionName" placeholder="请输入区域名称"></el-input> -->
<!-- <el-input style="margin-right: 10px;width:120px" v-model="queryForm.deptName" placeholder="请输入部门名称"></el-input> -->
<!-- <el-input style="margin-right: 10px;width:120px" v-model="queryForm.equipmentName" placeholder="请输入设备名称"></el-input> -->
<el-select v-model="queryForm.regionId" filterable placeholder="请选择区域">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-date-picker
style="width:220px"
v-model="date"
@ -25,22 +14,10 @@
</div>
</div>
<el-table :data="list" max-height="600" v-loading="listLoading" :element-loading-text="elementLoadingText" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }">
<el-table-column align="center" prop="regionName" label="区域名称">
<template slot-scope='scope'>
{{ scope.row.regionList.regionName }}
</template>
</el-table-column>
<el-table-column align="center" prop="deptNum" label="部门编码"></el-table-column>
<el-table-column align="center" prop="deptNumber" label="部门编码"></el-table-column>
<el-table-column align="center" prop="deptName" label="部门名称"></el-table-column>
<el-table-column align="center" prop="equipmentNum" label="设备编码"></el-table-column>
<el-table-column align="center" prop="equipmentName" label="设备名称"></el-table-column>
<el-table-column align="center" prop="jobContent" label="工作内容"></el-table-column>
<el-table-column align="center" prop="type" label="考勤类型">
<template slot-scope='scope'>
{{ scope.row.type == 1?'下班':'上班' }}
</template>
</el-table-column>
<el-table-column align="center" prop="checkTime" label="考勤时间">
<el-table-column align="center" prop="checkTime" label="签到时间">
<template slot-scope='scope'>
{{ scope.row.checkTime|timestampToTime }}
</template>
@ -111,7 +88,7 @@
})
},
show(row) {
this.queryForm = {...row,...this.queryForm}
this.queryForm = {...this.queryForm,...row}
this.dialogVisible = true
this.init()
},

@ -2,8 +2,6 @@
<el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="dialogVisible" width="60%">
<div style='margin-left:auto;display:flex'>
<div style='margin-left:auto;margin-bottom:10px'>
<!-- <el-input style="margin-right: 10px;width:120px" v-model="queryForm.regionName" placeholder="请输入区域名称"></el-input> -->
<!-- <el-input style="margin-right: 10px;width:120px" v-model="queryForm.deptName" placeholder="请输入部门名称"></el-input> -->
<el-select v-model="queryForm.regionId" filterable placeholder="请选择">
<el-option
v-for="item in options"
@ -24,7 +22,8 @@
</div>
</div>
<el-table :data="list" max-height="600" v-loading="listLoading" :element-loading-text="elementLoadingText" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee', }">
<el-table-column align="center" prop="staffName" label="姓名"></el-table-column>
<el-table-column align="center" prop="staffName" label="员工姓名"></el-table-column>
<el-table-column align="center" prop="staffNum" label="员工编码"></el-table-column>
<el-table-column align="center" prop="mobilePhone" label="手机号"></el-table-column>
<el-table-column align="center" prop="sex" label="性别">
<template slot-scope='scope'>

@ -3,6 +3,7 @@
<div class="displsy-mod">
<el-table :data="list" stripe style="width: 100%" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
<el-table-column align="center" prop="staffName" label="员工名称" ></el-table-column>
<el-table-column align="center" prop="staffNum" label="员工编码" ></el-table-column>
<el-table-column align="center" prop="sex" label="性别" ></el-table-column>
<el-table-column align="center" prop="mobilePhone" label="手机号码" ></el-table-column>
<el-table-column align="center" prop="identityCard" label="身份证号" ></el-table-column>
@ -61,10 +62,11 @@
this.$refs.sendCode.show({identityCard:row.identityCard})
},
handleJon(row){
console.log(row.identityCard)
this.$refs.jonContent.show({identityCard:row.identityCard})
},
handleRemove(row){
this.$confirm("是否将该员工设置黑名单?", "提示", {
this.$confirm("是否将该员工移入黑名单?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",

@ -21,45 +21,36 @@ const router = new VueRouter({
name: "layout",
component: Layout,
children: [
// gzjl
// {
// path: "/gzjl",
// component: () => import("../pages/qyMange/gzjl"),
// meta: {
// title: "扫码工作记录",
// index: "gzjl"
// }
// },
{
path: "/yh",
path: "/user",
component: () => import("../pages/qyMange/baseStaff/baseStaff"),
meta: {
title: "用户",
index: "yh"
index: "user"
}
},
{
path: "/kqjl",
path: "/staffAttendance",
component: () => import("../pages/qyMange/kqjl"),
meta: {
title: "临时工考勤记录",
index: "kqjl"
index: "staffAttendance"
}
},
{
path: "/lsg",
path: "/codeJob",
component: () => import("../pages/qyMange/lsg"),
meta: {
title: "扫码工作记录",
index: "lsg"
index: "codeJob"
}
},
{
path: "/qyqyda",
component: () => import("../pages/qyMange/qyqy"),
path: "/dept",
component: () => import("../pages/qyMange/bm"),
meta: {
title: "区域",
index: "qyqyda"
title: "部门",
index: "dept"
}
},
{
@ -70,6 +61,14 @@ const router = new VueRouter({
index: "qyda"
}
},
{
path: "/errList",
component: () => import("../pages/qyMange/errList"),
meta: {
title: "北森失败记录",
index: "errList"
}
},
{
path: "/qydaAdd",
component: () => import("../pages/storeManage/baseStore/baseStore"),
@ -1010,14 +1009,14 @@ const router = new VueRouter({
index: "reconciliation"
}
},
{
path: "/dept",
component: () => import("../pages/storeManage/dept/index"),
meta: {
title: "部门业绩",
index: "dept"
}
},
// {
// path: "/dept",
// component: () => import("../pages/storeManage/dept/index"),
// meta: {
// title: "部门业绩",
// index: "dept"
// }
// },
{
path: "/giftCards",
component: () => import("../pages/promotion/giftCards/index"),

Loading…
Cancel
Save