update code

dev_xd
lijun 2024-10-18 22:16:54 +08:00
parent 6fa3c1aed7
commit 396c18b2ff
17 changed files with 494 additions and 285 deletions

View File

@ -0,0 +1,14 @@
@echo off
echo.
echo [ Ϣ] ʹ Jar Modules-System ̡
echo.
cd %~dp0
cd ../yanzhu-modules/yanzhu-manage/target
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar yanzhu-modules-manage.jar
cd bin
pause

View File

@ -7,6 +7,7 @@ import com.yanzhu.common.core.annotation.Excel;
import com.yanzhu.common.core.web.domain.BaseEntity;
import java.util.Date;
import java.util.List;
/**
* attendance_ubi_data
@ -104,6 +105,16 @@ public class AttendanceUbiData extends BaseEntity
private String comName;
private List<Long> userIds;
public List<Long> getUserIds() {
return userIds;
}
public void setUserIds(List<Long> userIds) {
this.userIds = userIds;
}
public String getComName() {
return comName;
}

View File

@ -59,4 +59,8 @@ public interface AttendanceUbiDataMapper
* @return
*/
public int deleteAttendanceUbiDataByIds(Long[] ids);
List<AttendanceUbiData> queryStatistics(AttendanceUbiData attendanceUbiData);
List<AttendanceUbiData> queryStatisticsByUserIds(AttendanceUbiData attendanceUbiData);
}

View File

@ -80,6 +80,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deviceNo != null and deviceNo != ''"> and deviceNo = #{deviceNo}</if>
</where>
</select>
<select id="queryStatistics" parameterType="AttendanceUbiData" resultMap="AttendanceUbiDataResult">
select * from (
select ad.`userId`
from attendance_ubi_data ad
where
date(ad.`inTime`)>=date(#{inTime}) and date(ad.`inTime`) &lt; date(#{outTime})
<if test="projectId != null "> and ad.projectId = #{projectId}</if>
<if test="subDeptId != null "> and ad.sub_dept_id = #{subDeptId}</if>
group by ad.`userId`
order by ad.userId) xx
</select>
<select id="queryStatisticsByUserIds" parameterType="AttendanceUbiData" resultMap="AttendanceUbiDataResult">
<include refid="selectAttendanceUbiDataVo"/>
where date(inTime)>=date(#{inTime}) and date(inTime) &lt; date(#{outTime})
<if test="userIds!=null">
and userId in
<foreach item="id" collection="userIds" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</select>
<select id="selectAttendanceUbiDataById" parameterType="Long" resultMap="AttendanceUbiDataResult">
<include refid="selectAttendanceUbiDataVo"/>

View File

@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
@ -40,6 +41,24 @@ public class AttendanceUbiDataController extends BaseController
return getDataTable(list);
}
@RequiresPermissions("manage:attendanceUbiData:list")
@GetMapping("/statistics")
public TableDataInfo statistics(AttendanceUbiData attendanceUbiData){
startPage();
List<AttendanceUbiData> list = attendanceUbiDataService.queryStatistics(attendanceUbiData);
TableDataInfo data=getDataTable(list);
List<AttendanceUbiData> datas= (List<AttendanceUbiData>) data.getRows();
if(datas.size()>0){
List<Long> userIds=new ArrayList<>();
for(AttendanceUbiData ad:datas){
userIds.add(ad.getUserId());
}
attendanceUbiData.setUserIds(userIds);
List<AttendanceUbiData> userDatas=attendanceUbiDataService.queryStatisticsByUserIds(attendanceUbiData);
data.setRows(userDatas);
}
return data;
}
/**
*
*/

View File

@ -59,4 +59,18 @@ public interface IAttendanceUbiDataService
* @return
*/
public int deleteAttendanceUbiDataById(Long id);
/**
*
* @param attendanceUbiData
* @return
*/
List<AttendanceUbiData> queryStatistics(AttendanceUbiData attendanceUbiData);
/**
*
* @param userIds
* @return
*/
List<AttendanceUbiData> queryStatisticsByUserIds(AttendanceUbiData attendanceUbiData);
}

View File

@ -102,4 +102,14 @@ public class AttendanceUbiDataServiceImpl implements IAttendanceUbiDataService
{
return attendanceUbiDataMapper.deleteAttendanceUbiDataById(id);
}
@Override
public List<AttendanceUbiData> queryStatistics(AttendanceUbiData attendanceUbiData) {
return attendanceUbiDataMapper.queryStatistics(attendanceUbiData);
}
@Override
public List<AttendanceUbiData> queryStatisticsByUserIds(AttendanceUbiData attendanceUbiData) {
return attendanceUbiDataMapper.queryStatisticsByUserIds(attendanceUbiData);
}
}

View File

@ -3,6 +3,7 @@
"version": "3.6.3",
"description": "若依管理系统",
"author": "若依",
"type": "module",
"license": "MIT",
"scripts": {
"dev": "vite",
@ -23,7 +24,7 @@
"bpmn-js": "^11.4.1",
"diagram-js": "^11.9.1",
"echarts": "5.5.1",
"element-plus": "2.7.6",
"element-plus": "^2.8.5",
"file-saver": "2.0.5",
"fuse.js": "6.6.2",
"highlight.js": "11.7.0",

View File

@ -42,3 +42,11 @@ export function delAttendanceUbiData(id) {
method: 'delete'
})
}
export function statisticsAttendanceUbiData(query) {
return request({
url: '/manage/attendanceUbiData/statistics',
method: 'get',
params: query
})
}

View File

@ -0,0 +1 @@
<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5630"><path d="M638.296 461L751.304 348a39.36 39.36 0 0 0 0-55.664L708.16 249.2a39.36 39.36 0 0 0-55.656 0L539.504 362.192 426.488 249.184a39.36 39.36 0 0 0-55.664 0.008l-43.136 43.128a39.352 39.352 0 0 0 0 55.664l113.008 113.008-113.008 113.016a39.352 39.352 0 0 0 0 55.664l43.136 43.152a39.384 39.384 0 0 0 55.664 0l113.008-113.016 113 113.016a39.392 39.392 0 0 0 55.672 0l43.144-43.152a39.376 39.376 0 0 0 0-55.672L638.296 461z" fill="#E22D2D" p-id="5631"></path><path d="M680.336 692.336a47.12 47.12 0 0 1-33.496-13.856L539.504 571.12l-107.36 107.36c-8.944 8.936-20.832 13.856-33.488 13.856s-24.544-4.92-33.488-13.856l-43.144-43.152a47.04 47.04 0 0 1-13.872-33.496c0-12.648 4.928-24.544 13.872-33.488l107.352-107.36-107.344-107.344a47.04 47.04 0 0 1-13.872-33.488c0-12.656 4.928-24.544 13.872-33.496l43.136-43.128a47.024 47.024 0 0 1 33.496-13.872c12.648 0 24.536 4.928 33.48 13.864l107.36 107.36 107.344-107.336c8.936-8.944 20.832-13.864 33.488-13.864s24.544 4.92 33.488 13.864l43.152 43.136a47.416 47.416 0 0 1 0 66.976L649.608 461l107.36 107.344a47.408 47.408 0 0 1 0 66.984l-43.144 43.152a47.088 47.088 0 0 1-33.488 13.856z m-140.832-143.84L658.16 667.168c11.84 11.832 32.512 11.832 44.36 0l43.144-43.152a31.416 31.416 0 0 0 0-44.36L626.984 461l118.664-118.656a31.408 31.408 0 0 0 0-44.352l-43.152-43.136c-11.832-11.84-32.512-11.84-44.344 0L539.504 373.504 420.832 254.84c-11.848-11.848-32.504-11.848-44.352 0.008l-43.136 43.128a31.144 31.144 0 0 0-9.184 22.176c0 8.376 3.264 16.248 9.184 22.168l118.664 118.664-118.664 118.68a31.12 31.12 0 0 0-9.184 22.168c0 8.384 3.264 16.256 9.184 22.176l43.136 43.152c11.84 11.832 32.504 11.832 44.352 0l118.672-118.664z" fill="#AF3737" p-id="5632"></path></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1 @@
<svg class="icon" style="width: 1.427734375em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1462 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3756"><path d="M1211.65168072 141.21142578c15.15642473 0 27.76323626 5.00034897 37.89106111 15.0081093C1259.59287778 166.37561011 1264.60735221 179.03186035 1264.60735221 194.181222c0 14.85979388-5.06391242 27.36772796-15.27648926 37.5238037l-635.69405708 635.63755601C603.47366774 877.63284745 590.90216949 882.78857422 575.99999999 882.78857422c-14.88804405 0-27.47366775-5.15572678-37.66505678-15.45305559L220.48791502 549.67211914C210.29652601 539.36772796 205.21142577 526.85979388 205.21142577 512c0-15.15642473 5.00034897-27.81267425 15.11404838-37.96168763C230.38973556 464.03055277 243.01067253 459.03020379 258.15297181 459.03020379c14.92335732 0 27.4877932 5.00034897 37.68624386 15.30473943L575.99999999 754.92654838l597.97956159-598.41744552C1184.1780137 146.21883713 1196.75657431 141.21142578 1211.65168072 141.21142578" p-id="3757"></path></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,46 @@
<template>
<div v-if="mode==0">
{{ getInfo(row,it) }}
</div>
<div v-else>
<svg class="icon icon-success" v-if="getInfo(row,it)" style="width: 1.427734375em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1462 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3756"><path d="M1211.65168072 141.21142578c15.15642473 0 27.76323626 5.00034897 37.89106111 15.0081093C1259.59287778 166.37561011 1264.60735221 179.03186035 1264.60735221 194.181222c0 14.85979388-5.06391242 27.36772796-15.27648926 37.5238037l-635.69405708 635.63755601C603.47366774 877.63284745 590.90216949 882.78857422 575.99999999 882.78857422c-14.88804405 0-27.47366775-5.15572678-37.66505678-15.45305559L220.48791502 549.67211914C210.29652601 539.36772796 205.21142577 526.85979388 205.21142577 512c0-15.15642473 5.00034897-27.81267425 15.11404838-37.96168763C230.38973556 464.03055277 243.01067253 459.03020379 258.15297181 459.03020379c14.92335732 0 27.4877932 5.00034897 37.68624386 15.30473943L575.99999999 754.92654838l597.97956159-598.41744552C1184.1780137 146.21883713 1196.75657431 141.21142578 1211.65168072 141.21142578" p-id="3757"></path></svg>
<svg class="icon icon-error" v-else style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5630"><path d="M638.296 461L751.304 348a39.36 39.36 0 0 0 0-55.664L708.16 249.2a39.36 39.36 0 0 0-55.656 0L539.504 362.192 426.488 249.184a39.36 39.36 0 0 0-55.664 0.008l-43.136 43.128a39.352 39.352 0 0 0 0 55.664l113.008 113.008-113.008 113.016a39.352 39.352 0 0 0 0 55.664l43.136 43.152a39.384 39.384 0 0 0 55.664 0l113.008-113.016 113 113.016a39.392 39.392 0 0 0 55.672 0l43.144-43.152a39.376 39.376 0 0 0 0-55.672L638.296 461z" fill="#E22D2D" p-id="5631"></path><path d="M680.336 692.336a47.12 47.12 0 0 1-33.496-13.856L539.504 571.12l-107.36 107.36c-8.944 8.936-20.832 13.856-33.488 13.856s-24.544-4.92-33.488-13.856l-43.144-43.152a47.04 47.04 0 0 1-13.872-33.496c0-12.648 4.928-24.544 13.872-33.488l107.352-107.36-107.344-107.344a47.04 47.04 0 0 1-13.872-33.488c0-12.656 4.928-24.544 13.872-33.496l43.136-43.128a47.024 47.024 0 0 1 33.496-13.872c12.648 0 24.536 4.928 33.48 13.864l107.36 107.36 107.344-107.336c8.936-8.944 20.832-13.864 33.488-13.864s24.544 4.92 33.488 13.864l43.152 43.136a47.416 47.416 0 0 1 0 66.976L649.608 461l107.36 107.344a47.408 47.408 0 0 1 0 66.984l-43.144 43.152a47.088 47.088 0 0 1-33.488 13.856z m-140.832-143.84L658.16 667.168c11.84 11.832 32.512 11.832 44.36 0l43.144-43.152a31.416 31.416 0 0 0 0-44.36L626.984 461l118.664-118.656a31.408 31.408 0 0 0 0-44.352l-43.152-43.136c-11.832-11.84-32.512-11.84-44.344 0L539.504 373.504 420.832 254.84c-11.848-11.848-32.504-11.848-44.352 0.008l-43.136 43.128a31.144 31.144 0 0 0-9.184 22.176c0 8.376 3.264 16.248 9.184 22.168l118.664 118.664-118.664 118.68a31.12 31.12 0 0 0-9.184 22.168c0 8.384 3.264 16.256 9.184 22.176l43.136 43.152c11.84 11.832 32.504 11.832 44.352 0l118.672-118.664z" fill="#AF3737" p-id="5632"></path></svg>
</div>
</template>
<script setup>
const { proxy } = getCurrentInstance();
const props = defineProps({
row: {
type: Object,
default: null,
},
it:{
type:[Number,String]
},
mode:{
type:String
}
});
function getInfo(row,it){
let obj=row[it]
if(!obj){
return "";
}
let inTime=obj.in?proxy.$dt(obj.in).format("HH:mm:ss"):""
let outTime=obj.out?proxy.$dt(obj.out).format("HH:mm:ss"):""
return inTime+" - "+ outTime;
}
</script>
<style lang="scss" scoped>
.icon-success{
height:24px !important;
width:24px !important;
fill:#409eff !important;
}
.icon-error{
height:24px !important;
width:24px !important;
}
</style>

View File

@ -0,0 +1,187 @@
<template>
<div class="app-container attendance-ubi-data-statistics">
<el-form :model="queryParams" ref="queryRef" :inline="true" label-width="90px">
<el-form-item label="项目" prop="projectId">
<el-select :disabled="data.currentProId != ''" style="width:150px;" v-model="queryParams.projectId"
placeholder="请选择项目" clearable @change="() => { handleQuery(); projectChange(); }">
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="所属单位" prop="subDeptId">
<el-select v-model="queryParams.subDeptId" style="width:150px;" placeholder="请选择所属单位" clearable
@change="() => { handleQuery(); }">
<el-option v-for="(it, idx) in data.subdepts" :key="it.id" :label="it.subDeptName" :value="it.id" />
</el-select>
</el-form-item>
<el-form-item label="显示方式" prop="showType">
<el-select v-model="queryParams.showType" style="width:150px;" placeholder="请选择显示方式">
<el-option label="按考勤时间显示" value="0" />
<el-option label="按是否考勤显示" value="1" />
</el-select>
</el-form-item>
<el-form-item label="月份" prop="inTime">
<el-date-picker v-model="queryParams.inTime" type="month" placeholder="选择月份" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
<el-table v-loading="data.loading" :data="data.attendanceUbiDataList" class="data-list" :key="data.elkey">
<el-table-column label="姓名" align="center" prop="userName" />
<el-table-column label="项目" align="center" prop="projectName" />
<el-table-column label="单位" align="center" prop="subDeptName" />
<el-table-column label="班组" align="center" prop="subDeptGroupName" />
<el-table-column label="工种类型" align="center" prop="craftType">
<template #default="scope">
<dict-tag :options="pro_craft_type" :value="scope.row.craftType" class="dict-tag" />
</template>
</el-table-column>
<el-table-column label="工种岗位" align="center" prop="craftPost">
<template #default="scope">
<dict-tag :options="pro_craft_post" :value="scope.row.craftPost" class="dict-tag" />
</template>
</el-table-column>
<template v-for="(it,idx) in data.tdDays" :key="idx+'-'+it" >
<el-table-column :label="it" align="center" :prop="it">
<template v-slot:default="scope">
<attItem :row="scope.row" :it="it" :mode="queryParams.showType"/>
</template>
</el-table-column>
</template>
</el-table>
<pagination v-show="data.total > 0" :total="data.total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" />
</div>
</template>
<script setup>
import { findMyProjectList } from "@/api/publics";
import { listProProjectInfoSubdepts } from "@/api/manage/proProjectInfoSubdepts";
import {statisticsAttendanceUbiData} from '@/api/manage/attendanceUbiData.js'
import useUserStore from '@/store/modules/user'
import attItem from './item.vue'
const { proxy } = getCurrentInstance();
const { pro_craft_type, pro_craft_post } = proxy.useDict( 'pro_craft_type', 'pro_craft_post');
const userStore = useUserStore()
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
inTime: '',
projectId: '',
subDeptId: '',
showType: '0'
},
rules: {
},
projects: [],
subdepts: [],
currentProId: '',
attendanceUbiDataList: [],
loading: false,
total: 0,
tdDays:[],
elkey:0,
});
const { queryParams, form, rules } = toRefs(data);
/*项目改变事件 */
function projectChange() {
listProProjectInfoSubdepts({ projectId: queryParams.value.projectId, pageNum: 1, pageSize: 100 }).then(d => {
data.subdepts = d.rows || [];
});
}
/** 查询项目列表 */
function getProjectList() {
findMyProjectList({ pageNum: 1, pageSize: 100 }).then(response => {
data.projects = response.rows;
if (userStore.currentProId) {
queryParams.value.projectId = userStore.currentProId
data.currentProId = userStore.currentProId;
projectChange();
}
});
}
function getList() {
let queryData={
pageNum:queryParams.value.pageNum,
pageSize:queryParams.value.pageSize,
projectId:queryParams.value.projectId,
subDeptId:queryParams.value.subDeptId
}
let dt1=proxy.$dt(queryParams.value.inTime);
let dt2=dt1.month(dt1.month()+1);
queryData.inTime=dt1.format("YYYY-MM-01");
queryData.outTime=dt2.format("YYYY-MM-01");
dt1=proxy.$dt(dt1.format("YYYY-MM-01"));
data.tdDays=[];
for(let i=1;i<=dt1.daysInMonth();i++){
if(i<10){
data.tdDays.push(""+i);
}else{
data.tdDays.push(""+i);
}
}
data.loading=true;
statisticsAttendanceUbiData(queryData).then(d=>{
data.loading=false;
data.total=d.total||0;
let tmps=d.rows||[];
let obj={};
tmps.forEach(it=>{
let userId=it.userId;
if(!obj[userId]){
obj[userId]={
...it
}
}
let day="";
if(it.inTime){
day=""+proxy.$dt(it.inTime).format("D");
}
if(it.outTime && !day){
day=""+proxy.$dt(it.outTime).format("D");
}
obj[userId][day]={
in:it.inTime,
out:it.outTime
};
});
let retDatas=[];
for(let k in obj){
retDatas.push(obj[k]);
}
data.attendanceUbiDataList=retDatas;
data.elkey++;
});
}
/*查询数据*/
function handleQuery() {
queryParams.value.pageNum = 1;
getList();
}
/*重置*/
function resetQuery() {
proxy.resetForm("queryRef");
handleQuery();
}
queryParams.value.inTime = proxy.$dt(new Date()).format("YYYY-MM-DD");
getProjectList();
handleQuery();
</script>
<style lang="scss"></style>

View File

@ -2,17 +2,17 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="公司" prop="comId" v-if="1 == 2">
<el-input v-model="queryParams.comId" placeholder="请输入公司主键" clearable @keyup.enter="handleQuery" />
<el-input v-model="queryParams.comId" placeholder="请输入公司主键" clearable @keyup.enter="handleQuery"/>
</el-form-item>
<el-form-item label="项目" prop="projectId">
<el-select :disabled="data.currentProId != ''" v-model="queryParams.projectId" placeholder="请选择项目" clearable
<el-select :disabled="data.currentProId != ''" v-model="queryParams.projectId" placeholder="请选择项目" clearable style="width:150px;"
@change="handleQuery">
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="考勤厂商" prop="vendorsCode">
<el-select v-model="queryParams.vendorsCode" placeholder="请选择厂商" clearable @change="handleQuery">
<el-select v-model="queryParams.vendorsCode" placeholder="请选择厂商" clearable @change="handleQuery" style="width:150px;">
<el-option v-for="dict in attendance_vendors" :key="dict.value" :label="dict.label" :value="dict.value">
</el-option>
</el-select>

View File

@ -2,40 +2,21 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="项目名称" prop="projectName" v-if="!userStore.currentProId">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名称"
clearable
@keyup.enter="handleQuery"
/>
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="单位类型" prop="subDeptType">
<el-select v-model="queryParams.subDeptType" placeholder="请选择参建单位类型" clearable>
<el-option
v-for="dict in sub_dept_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-select v-model="queryParams.subDeptType" placeholder="请选择参建单位类型" clearable style="width:150px;">
<el-option v-for="dict in sub_dept_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="进场状态" prop="useStatus">
<el-select v-model="queryParams.useStatus" placeholder="请选择进场状态" clearable>
<el-option
v-for="dict in sys_use_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
<el-select v-model="queryParams.useStatus" placeholder="请选择进场状态" clearable style="width:150px;">
<el-option v-for="dict in sys_use_status" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="单位名称" prop="subDeptName">
<el-input
v-model="queryParams.subDeptName"
placeholder="请输入参建单位名称"
clearable
@keyup.enter="handleQuery"
/>
<el-input v-model="queryParams.subDeptName" placeholder="请输入参建单位名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
@ -45,42 +26,20 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['manage:proProjectInfoSubdepts:add']"
>新增</el-button>
<el-button type="primary" plain icon="Plus" @click="handleAdd"
v-hasPermi="['manage:proProjectInfoSubdepts:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['manage:proProjectInfoSubdepts:edit']"
>修改</el-button>
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
v-hasPermi="['manage:proProjectInfoSubdepts:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['manage:proProjectInfoSubdepts:remove']"
>删除</el-button>
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
v-hasPermi="['manage:proProjectInfoSubdepts:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['manage:proProjectInfoSubdepts:export']"
>导出</el-button>
<el-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['manage:proProjectInfoSubdepts:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -91,12 +50,12 @@
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="单位类型" align="center" prop="subDeptType">
<template #default="scope">
<dict-tag :options="sub_dept_type" :value="scope.row.subDeptType"/>
<dict-tag :options="sub_dept_type" :value="scope.row.subDeptType" />
</template>
</el-table-column>
<el-table-column label="单位名称" align="center" prop="subDeptName" />
<el-table-column label="信用代码" align="center" prop="subDeptCode" />
<el-table-column label="入场二维码" align="center" prop="qrCode" width="100" >
<el-table-column label="入场二维码" align="center" prop="qrCode" width="100">
<template #default="scope">
<image-preview v-if="scope.row.qrCode" :src="scope.row.qrCode" :width="50" :height="50" />
<span v-if="!scope.row.qrCode">-</span>
@ -104,7 +63,7 @@
</el-table-column>
<el-table-column label="进场状态" align="center" prop="useStatus">
<template #default="scope">
<dict-tag :options="sys_use_status" :value="scope.row.useStatus"/>
<dict-tag :options="sys_use_status" :value="scope.row.useStatus" />
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="120">
@ -112,92 +71,72 @@
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="审批状态" align="center" prop="approveStatus" >
<el-table-column label="审批状态" align="center" prop="approveStatus">
<template #default="scope">
<dict-tag :options="sys_approve_status" :value="scope.row.approveStatus"/>
<dict-tag :options="sys_approve_status" :value="scope.row.approveStatus" />
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="150" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:proProjectInfoSubdepts:edit']"></el-button>
<el-button v-if="scope.row.useStatus=='1'" link type="primary" icon="Setting" @click="handleUseStatus(scope.row)" v-hasPermi="['manage:proProjectInfoSubdepts:remove']"></el-button>
<el-button v-if="scope.row.useStatus=='2'" link type="primary" icon="Setting" @click="handleUseStatus(scope.row)" v-hasPermi="['manage:proProjectInfoSubdepts:remove']"></el-button>
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:proProjectInfoSubdepts:edit']">修改</el-button>
<el-button v-if="scope.row.useStatus == '1'" link type="primary" icon="Setting"
@click="handleUseStatus(scope.row)" v-hasPermi="['manage:proProjectInfoSubdepts:remove']">离场</el-button>
<el-button v-if="scope.row.useStatus == '2'" link type="primary" icon="Setting"
@click="handleUseStatus(scope.row)" v-hasPermi="['manage:proProjectInfoSubdepts:remove']">进场</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
@pagination="getList" />
<!-- 添加或修改分包单位对话框 -->
<el-dialog :title="title" v-model="open" width="680px" append-to-body modal-class="SubdeptsDlg">
<el-form ref="proProjectInfoSubdeptsRef" :model="form" :rules="rules" label-width="88px">
<el-tabs
v-model="activeTabs"
type="card"
class="demo-tabs"
>
<el-tabs v-model="activeTabs" type="card" class="demo-tabs">
<el-tab-pane label="基本信息" name="base">
<el-form-item label="项目名称" v-if="form.projectId">
<el-tag effect="plain">{{ form.projectName }}</el-tag>
</el-form-item>
<el-form-item label="单位类型" prop="subDeptType">
<el-select v-model="form.subDeptType" placeholder="请选择单位类型" style="width:100%">
<el-option
v-for="dict in sub_dept_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
<el-option v-for="dict in sub_dept_type" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="单位名称" prop="subDeptName">
<el-input v-model="form.subDeptName" placeholder="请输入单位名称" maxlength="64" show-word-limit/>
<el-input v-model="form.subDeptName" placeholder="请输入单位名称" maxlength="64" show-word-limit />
</el-form-item>
<el-form-item label="信用代码" prop="subDeptCode">
<el-input v-model="form.subDeptCode" placeholder="请输入信用代码" maxlength="64" show-word-limit/>
<el-input v-model="form.subDeptCode" placeholder="请输入信用代码" maxlength="64" show-word-limit />
</el-form-item>
<el-form-item label="进场时间" prop="useDates">
<el-date-picker
v-model="form.useDates"
type="date"
placeholder="请选择进场时间"
style="width:100%"
/>
<el-date-picker v-model="form.useDates" type="date" placeholder="请选择进场时间" style="width:100%" />
</el-form-item>
<el-form-item label="进场状态" prop="useStatus">
<el-select v-model="form.useStatus" placeholder="请选择进场状态" style="width:100%">
<el-option
v-for="dict in sys_use_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="承包范围" prop="contractInfos" v-if="form.subDeptType=='4' || form.subDeptType=='5'">
<el-input v-model="form.contractInfos" maxlength="2000" show-word-limit type="textarea" rows="4" placeholder="请输入承包范围" />
<el-select v-model="form.useStatus" placeholder="请选择进场状态" style="width:100%">
<el-option v-for="dict in sys_use_status" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="承包范围" prop="contractInfos" v-if="form.subDeptType == '4' || form.subDeptType == '5'">
<el-input v-model="form.contractInfos" maxlength="2000" show-word-limit type="textarea" rows="4"
placeholder="请输入承包范围" />
</el-form-item>
</el-tab-pane>
<el-tab-pane label="单位信息" name="infos">
<el-form-item label="经营范围">
<el-input v-model="form.subDeptInfos.busScope" maxlength="2000" show-word-limit type="textarea" rows="3" placeholder="请输入经营范围" />
<el-input v-model="form.subDeptInfos.busScope" maxlength="2000" show-word-limit type="textarea" rows="3"
placeholder="请输入经营范围" />
</el-form-item>
<el-form-item label="注册日期">
<el-date-picker
v-model="form.subDeptInfos.signDate"
type="date"
placeholder="请选择注册日期"
style="width:100%"
/>
<el-date-picker v-model="form.subDeptInfos.signDate" type="date" placeholder="请选择注册日期"
style="width:100%" />
</el-form-item>
<el-form-item label="公司地址">
<el-input v-model="form.subDeptInfos.address" maxlength="200" show-word-limit type="textarea" rows="2" placeholder="请输入公司地址" />
<el-input v-model="form.subDeptInfos.address" maxlength="200" show-word-limit type="textarea" rows="2"
placeholder="请输入公司地址" />
</el-form-item>
<el-form-item label="营业执照" prop="businessLicensePath">
<image-upload v-model="form.businessLicensePath" :limit="1" />
@ -212,10 +151,12 @@
<el-input v-model="form.subDeptInfos.legalPerson" maxlength="10" show-word-limit placeholder="请输入法定代表人" />
</el-form-item>
<el-form-item label="法人身份证">
<el-input v-model="form.subDeptInfos.legalPersonCard" maxlength="18" show-word-limit placeholder="请输入法人身份证" />
<el-input v-model="form.subDeptInfos.legalPersonCard" maxlength="18" show-word-limit
placeholder="请输入法人身份证" />
</el-form-item>
<el-form-item label="获得奖项">
<el-input v-model="form.subDeptInfos.awards" maxlength="999" show-word-limit type="textarea" rows="3" placeholder="请输入获得奖项" />
<el-input v-model="form.subDeptInfos.awards" maxlength="999" show-word-limit type="textarea" rows="3"
placeholder="请输入获得奖项" />
</el-form-item>
<el-form-item label="企业评分">
<el-input v-model="form.subDeptInfos.mark" maxlength="10" show-word-limit placeholder="请输入企业评分" />
@ -228,29 +169,29 @@
<el-input v-model="form.subDeptInfos.bankNumber" maxlength="32" show-word-limit placeholder="请输入银行卡号" />
</el-form-item>
</el-tab-pane>
<el-tab-pane label="委托人信息" name="leader" v-if="form.subDeptType=='4' || form.subDeptType=='5'">
<el-tab-pane label="委托人信息" name="leader" v-if="form.subDeptType == '4' || form.subDeptType == '5'">
<el-form-item label="单位委托书" prop="subDeptLeaderPowerPath">
<image-upload v-model="form.subDeptLeaderPowerPath" :limit="1" />
</el-form-item>
<el-form-item label="委托人姓名" prop="subDeptLeaderName">
<el-input v-model="form.subDeptLeaderName" placeholder="请输入委托人姓名" maxlength="10" show-word-limit/>
<el-input v-model="form.subDeptLeaderName" placeholder="请输入委托人姓名" maxlength="10" show-word-limit />
</el-form-item>
<el-form-item label="身份证号码" prop="subDeptLeaderCode">
<el-input v-model="form.subDeptLeaderCode" placeholder="请输入委托人身份证号码" maxlength="18" show-word-limit/>
<el-input v-model="form.subDeptLeaderCode" placeholder="请输入委托人身份证号码" maxlength="18" show-word-limit />
</el-form-item>
<el-form-item label="委托人电话" prop="subDeptLeaderPhone">
<el-input v-model="form.subDeptLeaderPhone" placeholder="请输入委托人电话" maxlength="11" show-word-limit/>
<el-input v-model="form.subDeptLeaderPhone" placeholder="请输入委托人电话" maxlength="11" show-word-limit />
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="身份证正面">
<image-upload v-model="form.leaderCardImgPos" :limit="1" />
</el-form-item>
<image-upload v-model="form.leaderCardImgPos" :limit="1" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证反面">
<image-upload v-model="form.leaderCardImgInv" :limit="1" />
</el-form-item>
<image-upload v-model="form.leaderCardImgInv" :limit="1" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="委托人照片">
@ -290,7 +231,7 @@ const activeTabs = ref("base");
const data = reactive({
form: {
subDeptInfos:{}
subDeptInfos: {}
},
queryParams: {
pageNum: 1,
@ -358,7 +299,7 @@ function reset() {
updateBy: null,
updateTime: null,
remark: null,
subDeptInfos:{}
subDeptInfos: {}
};
proxy.resetForm("proProjectInfoSubdeptsRef");
}
@ -384,7 +325,7 @@ function handleSelectionChange(selection) {
/** 新增按钮操作 */
function handleAdd() {
if(!userStore.currentProId){
if (!userStore.currentProId) {
proxy.$modal.msgWarning("请切换到项目数据!!!");
return false;
}
@ -434,23 +375,23 @@ function submitForm() {
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value
proxy.$modal.confirm('是否确认删除分包单位编号为"' + _ids + '"的数据项?').then(function() {
proxy.$modal.confirm('是否确认删除分包单位编号为"' + _ids + '"的数据项?').then(function () {
return delProProjectInfoSubdepts(_ids);
}).then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
}).catch(() => {});
}).catch(() => { });
}
/** 进场/退场操作 */
function handleUseStatus(row) {
let state = row.useStatus=='1'?"离场":"进场";
proxy.$modal.confirm('是否确认修改单位状态为"' + state + '"').then(function() {
return updateProProjectInfoSubdeptsEntity({'id':row.id,'useStatus':row.useStatus=='1'?"2":"1"});
let state = row.useStatus == '1' ? "离场" : "进场";
proxy.$modal.confirm('是否确认修改单位状态为"' + state + '"').then(function () {
return updateProProjectInfoSubdeptsEntity({ 'id': row.id, 'useStatus': row.useStatus == '1' ? "2" : "1" });
}).then(() => {
getList();
proxy.$modal.msgSuccess("修改成功");
}).catch(() => {});
}).catch(() => { });
}
/** 导出按钮操作 */
@ -463,12 +404,13 @@ function handleExport() {
getList();
</script>
<style lang="scss" scope>
.el-divider__text{
.el-divider__text {
color: #409eff;
font-weight: 800;
}
.SubdeptsDlg{
.el-dialog__body{
.SubdeptsDlg {
.el-dialog__body {
margin-top: -25px;
overflow: auto;
max-height: 680px;

View File

@ -2,57 +2,27 @@
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="项目名称" prop="projectName" v-if="!userStore.currentProId">
<el-input
v-model="queryParams.projectName"
placeholder="请输入项目名称"
clearable
@keyup.enter="handleQuery"
/>
<el-input v-model="queryParams.projectName" placeholder="请输入项目名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="单位名称" prop="subDeptName">
<el-input
v-model="queryParams.subDeptName"
placeholder="请输入单位名称"
clearable
@keyup.enter="handleQuery"
/>
<el-input v-model="queryParams.subDeptName" placeholder="请输入单位名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="单位类型" prop="subDeptType">
<el-select v-model="queryParams.subDeptType" placeholder="请选择单位类型" clearable>
<el-option
v-for="dict in sub_dept_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-select v-model="queryParams.subDeptType" placeholder="请选择单位类型" clearable style="width:150px;">
<el-option v-for="dict in sub_dept_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="班组名称" prop="groupName">
<el-input
v-model="queryParams.groupName"
placeholder="请输入班组名称"
clearable
@keyup.enter="handleQuery"
/>
<el-input v-model="queryParams.groupName" placeholder="请输入班组名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工种类型" prop="craftType">
<el-select v-model="queryParams.craftType" placeholder="请选择工种类型" clearable>
<el-option
v-for="dict in pro_craft_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-select v-model="queryParams.craftType" placeholder="请选择工种类型" clearable style="width:150px;">
<el-option v-for="dict in pro_craft_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="工种岗位" prop="craftPost">
<el-select v-model="queryParams.craftPost" placeholder="请选择工种岗位" clearable>
<el-option
v-for="dict in pro_craft_post"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
<el-select v-model="queryParams.craftPost" placeholder="请选择工种岗位" clearable style="width:150px;">
<el-option v-for="dict in pro_craft_post" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
@ -63,42 +33,20 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['manage:proProjectInfoSubdeptsGroup:add']"
>新增</el-button>
<el-button type="primary" plain icon="Plus" @click="handleAdd"
v-hasPermi="['manage:proProjectInfoSubdeptsGroup:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['manage:proProjectInfoSubdeptsGroup:edit']"
>修改</el-button>
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
v-hasPermi="['manage:proProjectInfoSubdeptsGroup:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['manage:proProjectInfoSubdeptsGroup:remove']"
>删除</el-button>
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
v-hasPermi="['manage:proProjectInfoSubdeptsGroup:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['manage:proProjectInfoSubdeptsGroup:export']"
>导出</el-button>
<el-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['manage:proProjectInfoSubdeptsGroup:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@ -110,18 +58,18 @@
<el-table-column label="单位名称" align="center" prop="subDeptName" />
<el-table-column label="单位类型" align="center" prop="subDeptType">
<template #default="scope">
<dict-tag :options="sub_dept_type" :value="scope.row.subDeptType"/>
<dict-tag :options="sub_dept_type" :value="scope.row.subDeptType" />
</template>
</el-table-column>
<el-table-column label="班组名称" align="center" prop="groupName" />
<el-table-column label="工种类型" align="center" prop="craftType">
<template #default="scope">
<dict-tag :options="pro_craft_type" :value="scope.row.craftType"/>
<dict-tag :options="pro_craft_type" :value="scope.row.craftType" />
</template>
</el-table-column>
<el-table-column label="工种岗位" align="center" prop="craftPost">
<template #default="scope">
<dict-tag :options="pro_craft_post" :value="scope.row.craftPost"/>
<dict-tag :options="pro_craft_post" :value="scope.row.craftPost" />
</template>
</el-table-column>
<el-table-column label="班组长" align="center" prop="groupLeaderName" />
@ -130,92 +78,72 @@
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="审批状态" align="center" prop="approveStatus" >
<el-table-column label="审批状态" align="center" prop="approveStatus">
<template #default="scope">
<dict-tag :options="sys_approve_status" :value="scope.row.approveStatus"/>
<dict-tag :options="sys_approve_status" :value="scope.row.approveStatus" />
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" width="120" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:proProjectInfoSubdeptsGroup:edit']"></el-button>
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:proProjectInfoSubdeptsGroup:edit']">修改</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
@pagination="getList" />
<!-- 添加或修改单位班组对话框 -->
<el-dialog :title="title" v-model="open" width="680px" append-to-body modal-class="SubdeptsGroupDlg">
<el-form ref="proProjectInfoSubdeptsGroupRef" :model="form" :rules="rules" label-width="88px">
<el-tabs
v-model="activeTabs"
type="card"
class="demo-tabs"
>
<el-tabs v-model="activeTabs" type="card" class="demo-tabs">
<el-tab-pane label="基本信息" name="base">
<el-form-item label="项目名称" v-if="form.projectId">
<el-tag effect="plain">{{ form.projectName }}</el-tag>
</el-form-item>
<el-form-item label="所属单位" prop="subDeptId">
<el-select v-model="form.subDeptId" placeholder="请选择所属单位" style="width:100%">
<el-option
v-for="dept in subDeptOptions"
:key="dept.id"
:label="dept.subDeptName"
:value="dept.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="工种类型" prop="craftType">
<el-select v-model="form.craftType" placeholder="请选择工种类型" style="width:100%">
<el-option
v-for="dict in pro_craft_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="工种岗位" prop="craftPost">
<el-select v-model="form.craftPost" placeholder="请选择工种岗位" style="width:100%">
<el-option
v-for="dict in pro_craft_post"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="班组名称" prop="groupName">
<el-input v-model="form.groupName" placeholder="请输入班组名称" maxlength="32" show-word-limit/>
</el-form-item>
<el-tag effect="plain">{{ form.projectName }}</el-tag>
</el-form-item>
<el-form-item label="所属单位" prop="subDeptId">
<el-select v-model="form.subDeptId" placeholder="请选择所属单位" style="width:100%">
<el-option v-for="dept in subDeptOptions" :key="dept.id" :label="dept.subDeptName"
:value="dept.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="工种类型" prop="craftType">
<el-select v-model="form.craftType" placeholder="请选择工种类型" style="width:100%">
<el-option v-for="dict in pro_craft_type" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="工种岗位" prop="craftPost">
<el-select v-model="form.craftPost" placeholder="请选择工种岗位" style="width:100%">
<el-option v-for="dict in pro_craft_post" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="班组名称" prop="groupName">
<el-input v-model="form.groupName" placeholder="请输入班组名称" maxlength="32" show-word-limit />
</el-form-item>
</el-tab-pane>
<el-tab-pane label="班组长信息" name="groupLeader">
<el-form-item label="班组长姓名" prop="groupLeaderName">
<el-input v-model="form.groupLeaderName" placeholder="请输入班组长姓名" maxlength="10" show-word-limit/>
</el-form-item>
<el-form-item label="身份证号码" prop="groupLeaderCode">
<el-input v-model="form.groupLeaderCode" placeholder="请输入班组长身份证号码" maxlength="18" show-word-limit/>
</el-form-item>
<el-form-item label="班组长电话" prop="groupLeaderPhone">
<el-input v-model="form.groupLeaderPhone" placeholder="请输入班组长电话" maxlength="11" show-word-limit/>
</el-form-item>
<el-row>
<el-tab-pane label="班组长信息" name="groupLeader">
<el-form-item label="班组长姓名" prop="groupLeaderName">
<el-input v-model="form.groupLeaderName" placeholder="请输入班组长姓名" maxlength="10" show-word-limit />
</el-form-item>
<el-form-item label="身份证号码" prop="groupLeaderCode">
<el-input v-model="form.groupLeaderCode" placeholder="请输入班组长身份证号码" maxlength="18" show-word-limit />
</el-form-item>
<el-form-item label="班组长电话" prop="groupLeaderPhone">
<el-input v-model="form.groupLeaderPhone" placeholder="请输入班组长电话" maxlength="11" show-word-limit />
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="身份证正面">
<image-upload v-model="form.grouLeaderCardImgPos" :limit="1" />
</el-form-item>
<image-upload v-model="form.grouLeaderCardImgPos" :limit="1" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证反面">
<image-upload v-model="form.grouLeaderCardImgInv" :limit="1" />
</el-form-item>
<image-upload v-model="form.grouLeaderCardImgInv" :limit="1" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="班组长照片">
@ -345,7 +273,7 @@ function handleSelectionChange(selection) {
/** 新增按钮操作 */
function handleAdd() {
if(!userStore.currentProId){
if (!userStore.currentProId) {
proxy.$modal.msgWarning("请切换到项目数据!!!");
return false;
}
@ -395,12 +323,12 @@ function submitForm() {
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value;
proxy.$modal.confirm('是否确认删除单位班组编号为"' + _ids + '"的数据项?').then(function() {
proxy.$modal.confirm('是否确认删除单位班组编号为"' + _ids + '"的数据项?').then(function () {
return delProProjectInfoSubdeptsGroup(_ids);
}).then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");
}).catch(() => {});
}).catch(() => { });
}
/** 导出按钮操作 */
@ -412,7 +340,7 @@ function handleExport() {
/** 初始化 */
function initSubDeptOptions(value) {
findAllProjectInfoSubdepts({'projectId':value}).then(res => {
findAllProjectInfoSubdepts({ 'projectId': value }).then(res => {
subDeptOptions.value = res.data;
})
}
@ -420,12 +348,13 @@ function initSubDeptOptions(value) {
getList();
</script>
<style lang="scss" scope>
.el-divider__text{
.el-divider__text {
color: #409eff;
font-weight: 800;
}
.SubdeptsDlg{
.el-dialog__body{
.SubdeptsDlg {
.el-dialog__body {
margin-top: -25px;
overflow: auto;
max-height: 680px;

View File

@ -3,12 +3,12 @@
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="所属单位" prop="subDeptId">
<el-select v-model="queryParams.subDeptId" placeholder="请选择所属单位" @change="doSubDeptChange('query')" clearable>
<el-select v-model="queryParams.subDeptId" placeholder="请选择所属单位" @change="doSubDeptChange('query')" clearable style="width:150px;">
<el-option v-for="(it, idx) in data.subdepts" :key="it.id" :label="it.subDeptName" :value="it.id" />
</el-select>
</el-form-item>
<el-form-item label="班组" prop="subDeptName">
<el-select v-model="queryParams.subDeptGroup" placeholder="请选择班组" @change="doDeptGroupChange" clearable>
<el-select v-model="queryParams.subDeptGroup" placeholder="请选择班组" @change="doDeptGroupChange" clearable style="width:150px;">
<el-option v-for="(it, idx) in data.queryDeptGroups" :key="idx" :label="it.groupName" :value="it.id" />
</el-select>
</el-form-item>
@ -19,12 +19,12 @@
<el-input v-model="queryParams.userPhone" placeholder="请输入联系电话" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工种类型" prop="craftType">
<el-select v-model="queryParams.craftType" placeholder="请选择工种类型" clearable>
<el-select v-model="queryParams.craftType" placeholder="请选择工种类型" clearable style="width:150px;">
<el-option v-for="dict in pro_craft_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="工种岗位" prop="craftPost">
<el-select v-model="queryParams.craftPost" placeholder="请选择工种岗位" clearable>
<el-select v-model="queryParams.craftPost" placeholder="请选择工种岗位" clearable style="width:150px;">
<el-option
v-for="dict in (queryParams.craftType ? pro_craft_post.filter(d => d.remark == queryParams.craftType) : [])"
:key="dict.value" :label="dict.label" :value="dict.value" />