修改花名册bug

dev_xd
haha 2025-01-06 23:33:36 +08:00
parent ffc70cbe29
commit 111be9687a
4 changed files with 143 additions and 124 deletions

View File

@ -7,6 +7,7 @@
"license": "MIT",
"scripts": {
"dev": "vite",
"dev:prod": "vite --mode production",
"build:prod": "vite build",
"build:stage": "vite build --mode staging",
"preview": "vite preview"

View File

@ -199,7 +199,7 @@
</el-col>
<el-col :span="8" class="fitem-no-width">
<el-form-item label="技术负责人电话" prop="techLeaderPhone">
<el-input v-model="form.techLeaderPhone" maxlength="10" show-word-limit placeholder="请输入技术负责人电话" />
<el-input v-model="form.techLeaderPhone" maxlength="11" show-word-limit placeholder="请输入技术负责人电话" />
</el-form-item>
</el-col>
</el-row>

View File

@ -3,12 +3,14 @@
<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 style="width:150px;">
<el-select v-model="queryParams.subDeptId" placeholder="请选择所属单位" @change="doSubDeptChange('query')" clearable
style="width:150px;">
<el-option v-for="(it) 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 style="width:150px;">
<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>
@ -29,8 +31,6 @@
v-for="dict in (queryParams.craftType ? pro_craft_post.filter(d => d.remark == queryParams.craftType) : [])"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
@ -47,7 +47,7 @@
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:edit']">修改</el-button>
</el-col>
<el-col :span="1.5" v-if="false">
<el-col :span="1.5" v-if="false">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">删除</el-button>
</el-col>
@ -67,10 +67,11 @@
</el-row>
<el-table v-loading="loading" :data="proProjectInfoSubdeptsUsersList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="头像" align="center">
<template #default="scope">
<el-image :src="scope.row.user.userPicture" style="height:80px;" :preview-teleported="true" :preview-src-list="[scope.row.user.userPicture]"></el-image>
<el-image :src="scope.row.user.userPicture" style="height:80px;" :preview-teleported="true"
:preview-src-list="[scope.row.user.userPicture]"></el-image>
</template>
</el-table-column>
<el-table-column label="姓名" align="center" prop="userName" />
@ -78,8 +79,8 @@
<el-table-column label="性别" align="center" prop="userSex" width="80" />
<el-table-column label="民族" align="center" prop="info.nation" width="80" />
<el-table-column label="所属单位" align="center" prop="subDeptName" />
<el-table-column label="联系电话" align="center" prop="user.phonenumber" v-if="false"/>
<el-table-column label="联系电话" align="center" prop="user.phonenumber" v-if="false" />
<el-table-column label="班组" align="center" prop="subDeptGroupName" />
<el-table-column label="工种类型" align="center" prop="craftType">
<template #default="scope">
@ -91,22 +92,22 @@
<dict-tag :options="pro_craft_post" :value="scope.row.craftPost" />
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="enterState">
<template #default="scope">
<span v-if="scope.row.useStatus==0" style="color: green;"></span>
<span v-if="scope.row.useStatus == 0" style="color: green;"></span>
<span v-else style="color: red">离场</span>
</template>
</el-table-column>
<el-table-column label="出生日期" align="center" prop="info.birthDayStr" v-if="false"/>
<el-table-column label="籍贯" align="center" prop="info.nativePlace" v-if="false"/>
</el-table-column>
<el-table-column label="出生日期" align="center" prop="info.birthDayStr" v-if="false" />
<el-table-column label="籍贯" align="center" prop="info.nativePlace" v-if="false" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="150">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">删除</el-button>
<el-button link type="primary" icon="Delete" @click="handleEnter(scope.row)" v-if="scope.row.enterState==0"
<el-button link type="primary" icon="Delete" @click="handleEnter(scope.row)" v-if="scope.row.enterState == 0"
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">离场</el-button>
<el-button link type="primary" icon="Delete" @click="handleEnter(scope.row)" v-else
v-hasPermi="['manage:proProjectInfoSubdeptsUsers:remove']">进场</el-button>
@ -124,15 +125,15 @@
</template>
<el-form ref="proProjectInfoSubdeptsUsersRef" :model="form" :rules="rules" label-width="120px"
style="position: relative;">
<el-row v-if="data.phoneState||true">
<el-row v-if="data.phoneState || true">
<el-col :span="12">
<el-form-item label="所属项目">
<el-tag effect="plain">{{ form.projectName }}</el-tag>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所属单位" prop="subDeptId">
<el-form-item label="所属单位11" prop="subDeptId">
<el-select v-model="form.subDeptId" placeholder="请选择所属单位" @change="doSubDeptChange()">
<el-option v-for="(it) in data.subdepts" :key="it.id" :label="it.subDeptName" :value="it.id" />
</el-select>
@ -153,16 +154,16 @@
</el-form-item>
</el-col>
<div style="width: 100%;">
<el-form-item label="联系电话" prop="userPhone">
<el-input v-model="form.userPhone" disabled v-if="data.mode == 'edit'" placeholder="请输入联系电话" minlength="11"
maxlength="11" style="width: 200px;" />
<el-input v-model="form.userPhone" v-else placeholder="请输入联系电话" minlength="11" maxlength="11"
style="width: 200px;" />
<el-button type="primary" v-if="data.mode != 'edit' && false" style="margin-left:10px;"
@click="queryPhone">查询</el-button>
<el-form-item label="联系电话" prop="userPhone">
<el-input v-model="form.userPhone" disabled v-if="data.mode == 'edit'" placeholder="请输入联系电话"
minlength="11" maxlength="11" style="width: 200px;" />
<el-input v-model="form.userPhone" v-else placeholder="请输入联系电话" minlength="11" maxlength="11"
style="width: 200px;" />
<el-button type="primary" v-if="data.mode != 'edit' && false" style="margin-left:10px;"
@click="queryPhone">查询</el-button>
<span style="margin-left:10px;color:#999;">此电话号码将用作登录</span>
</el-form-item>
</div>
</el-form-item>
</div>
<el-col :span="12">
<el-form-item label="班组名称" prop="subDeptGroup">
<el-select v-model="form.subDeptGroup" placeholder="请选择班组" @change="doDeptGroupChange">
@ -261,12 +262,12 @@
</template>
<script setup name="ProProjectInfoSubdeptsUsers">
import { listProProjectInfoSubdeptsUsers, getProProjectInfoSubdeptsUsers,updateEnterState, delProProjectInfoSubdeptsUsers, addProProjectInfoSubdeptsUsers, updateProProjectInfoSubdeptsUsers } from "@/api/manage/proProjectInfoSubdeptsUsers";
import { listProProjectInfoSubdeptsUsers, getProProjectInfoSubdeptsUsers, updateEnterState, delProProjectInfoSubdeptsUsers, addProProjectInfoSubdeptsUsers, updateProProjectInfoSubdeptsUsers } from "@/api/manage/proProjectInfoSubdeptsUsers";
import { listProProjectInfoSubdepts } from "@/api/manage/proProjectInfoSubdepts";
import { listProProjectInfoSubdeptsGroup } from "@/api/manage/proProjectInfoSubdeptsGroup";
import { listUser } from "@/api/system/user";
import useUserStore from '@/store/modules/user'
import dayjs from 'dayjs'
import dayjs from 'dayjs'
const userStore = useUserStore()
const { proxy } = getCurrentInstance();
const { sys_use_status, pro_craft_type, sys_is_del, pro_craft_post, certificate_type, educational_type } = proxy.useDict('sys_use_status', 'pro_craft_type', 'sys_is_del', 'pro_craft_post', 'certificate_type', 'educational_type');
@ -322,7 +323,7 @@ const data = reactive({
{ min: 11, max: 11, message: '请输入有效手机号码', trigger: 'blur' },
{ validator: validatePhone, trigger: 'blur' }],
certificateCode: [{ required: true, trigger: ['blur', 'change'], message: "请输入证件号码" }],
craftPost: [{ required: true, trigger: ['blur', 'change'], message: "请选择工种" }],
craftPost: [{ required: true, trigger: ['blur', 'change'], message: "请选择工种" }],
identificationCard: [{ required: true, trigger: ['blur', 'change'], message: "请上传身份证信息" }],
subDeptGroup: [{ required: true, trigger: ['blur', 'change'], message: "请选择班组" }],
},
@ -336,35 +337,35 @@ const data = reactive({
phoneState: '',
userInfo: null,
mode: '',
editData:null,
editData: null,
});
const { queryParams, form, rules } = toRefs(data);
//
function handleEnter(row){
let ids=[row.id];
if(row.enterState==0){
updateEnterState(ids,1).then(d=>{
row.enterState=1;
function handleEnter(row) {
let ids = [row.id];
if (row.enterState == 0) {
updateEnterState(ids, 1).then(d => {
row.enterState = 1;
});
}else{
updateEnterState(ids,0).then(d=>{
row.enterState=0;
} else {
updateEnterState(ids, 0).then(d => {
row.enterState = 0;
});
}
}
//,
function handleBatchEnterState(state){
if(ids.value.length==0){
function handleBatchEnterState(state) {
if (ids.value.length == 0) {
proxy.$modal.msgWarning("请选择数据!!!");
return;
}
updateEnterState(ids.value,state).then(d=>{
proProjectInfoSubdeptsUsersList.value.forEach(it=>{
if(ids.value.indexOf(it.id)>=0){
it.enterState=state;
updateEnterState(ids.value, state).then(d => {
proProjectInfoSubdeptsUsersList.value.forEach(it => {
if (ids.value.indexOf(it.id) >= 0) {
it.enterState = state;
}
});
});
@ -380,7 +381,7 @@ function doImageUpload() {
//
function queryPhone() {
listUser({ phonenumber: form.value.userPhone }).then(d => {
let userPhone=form.value.userPhone;
let userPhone = form.value.userPhone;
if (d.rows.length > 0) {
let user = d.rows[0];
data.userInfo = user;
@ -391,7 +392,7 @@ function queryPhone() {
showEditUser({});
data.phoneState = "add";
}
form.value.userPhone=userPhone;
form.value.userPhone = userPhone;
});
}
@ -405,6 +406,8 @@ function tryToJson(str) {
/** 查询分包单位工人列表 */
function getList() {
loading.value = true;
queryParams.value.comId = userStore.currentComId;
queryParams.value.projectId = userStore.currentPrjId;
listProProjectInfoSubdeptsUsers(queryParams.value).then(response => {
proProjectInfoSubdeptsUsersList.value = (response.rows || []).map(d => {
@ -489,17 +492,17 @@ function doSubDeptChange(type) {
data.deptGroups = d.rows || [];
if (data.deptGroups.length > 0) {
let dg = data.deptGroups[0];
form.value.groupName = dg.groupName;
form.value.craftTypeName = getCraftType(dg.craftType);
form.value.craftPostName = getCraftPost(dg.craftPost).label;
form.value.craftType = dg.craftType;
form.value.craftPost = dg.craftPost
data.isManager = !dg.craftPost
setTimeout(()=>{
setTimeout(() => {
form.value.subDeptGroup = dg.id;
doDeptGroupChange();
},400);
}, 400);
}
}
@ -561,11 +564,16 @@ function loadSubDepts(cb) {
listProProjectInfoSubdepts({ projectId: userStore.currentPrjId, pageNum: 1, pageSize: 100 }).then(d => {
data.subdepts = d.rows || [];
if (data.subdepts.length > 0) {
let sd = data.subdepts[0];
form.value.subDeptId = "" + sd.id;
doSubDeptChange();
setTimeout(()=>{
let sd = data.subdepts[0];
form.value.subDeptId = sd.id;
doSubDeptChange();
cb && cb();
},400);
}else{
cb && cb();
}
cb && cb();
});
}
@ -575,45 +583,49 @@ function handleAdd() {
proxy.$modal.msgWarning("请切换到项目数据!!!");
return false;
}
reset();
data.editData=null;
data.mode = 'add';
form.value.certificateType = "";
form.value.projectId = userStore.currentPrjId;
form.value.comId=userStore.currentComId;
form.value.projectName = userStore.currentProName;
form.value.nation = data.nationOpts[0];
form.value.sex = data.sexOpts[0];
open.value = true;
title.value = "添加劳务人员信息";
reset();
loadSubDepts(()=> {
data.editData = null;
data.mode = 'add';
form.value.certificateType = "";
form.value.projectId = userStore.currentPrjId;
form.value.comId = userStore.currentComId;
form.value.projectName = userStore.currentProName;
form.value.nation = data.nationOpts[0];
form.value.sex = data.sexOpts[0];
});
}
/** 修改按钮操作 */
function handleUpdate(row) {
function handleUpdate(row) {
reset();
const _id = row.id || ids.value
data.mode = 'edit'
data.editData=row;
data.editData = row;
open.value = true;
title.value = "修改劳务人员信息";
loadSubDepts(()=>{
getProProjectInfoSubdeptsUsers(_id).then(response => {
let obj = JSON.parse(JSON.stringify(response.data));
obj.info = tryToJson(obj.userInfos || "{}");
obj.certificateType=obj.cardType;
obj.certificateCode=obj.cardCode;
obj.sex=obj.userSex;
obj.nation=obj.info.nation;
obj.birthDay=obj.info.birthDay;
obj.nativePlace=obj.info.nativePlace;
obj.address=obj.info.address;
obj.emergencyContact=obj.info.emergencyContact;
obj.contactPhone=obj.info.contactPhone;
obj.bankName=obj.info.bankName;
obj.bankCardNo=obj.info.bankCardNo;
obj.bankOffice=obj.info.bankOffice;
obj.certificatePhoto1=obj.info.certificatePhoto1;
obj.certificatePhoto2=obj.info.certificatePhoto2;
obj.faceImage=obj.userPicture;
obj.educationalType=obj.degreeGrade
debugger
obj.info = tryToJson(obj.userInfos || "{}");
obj.certificateType = obj.cardType;
obj.certificateCode = obj.cardCode;
obj.sex = obj.userSex;
obj.nation = obj.info.nation;
obj.birthDay = obj.info.birthDay;
obj.nativePlace = obj.info.nativePlace;
obj.address = obj.info.address;
obj.emergencyContact = obj.info.emergencyContact;
obj.contactPhone = obj.info.contactPhone;
obj.bankName = obj.info.bankName;
obj.bankCardNo = obj.info.bankCardNo;
obj.bankOffice = obj.info.bankOffice;
obj.certificatePhoto1 = obj.info.certificatePhoto1;
obj.certificatePhoto2 = obj.info.certificatePhoto2;
obj.faceImage = obj.userPicture;
obj.educationalType = obj.degreeGrade
form.value = obj;
form.value.userId = obj.userId;
@ -621,16 +633,16 @@ function handleUpdate(row) {
form.value.projectName = row.projectName;
//showEditUser(obj.user);
data.phoneState = "edit";
open.value = true;
title.value = "修改劳务人员信息";
doImageUpload();
doImageUpload();
//doDeptGroupChange();
setTimeout(() => {
doSubDeptChange();
form.value.craftPost = response.data.craftPost;
}, 400);
});
});
}
function showEditUser(user) {
@ -662,11 +674,11 @@ function showEditUser(user) {
form.value.bankOffice = info.bankOffice;
}
function imgUrl(url){
if(url.indexOf("http://")>=0||url.indexOf("https://")>=0){
function imgUrl(url) {
if (url.indexOf("http://") >= 0 || url.indexOf("https://") >= 0) {
return url;
}
return location.origin+url;
return location.origin + url;
}
/** 提交按钮 */
function submitForm() {
@ -675,40 +687,40 @@ function submitForm() {
debugger
let depts = data.subdepts.filter(d => d.id == form.value.subDeptId);
let groups = data.deptGroups.filter(d => d.id == form.value.subDeptGroup);
let info={
nation:form.value.nation,
birthDay:form.value.birthDay,
nativePlace:form.value.nativePlace,
address:form.value.address,
emergencyContact:form.value.emergencyContact,
contactPhone:form.value.contactPhone,
bankName:form.value.bankName,
bankCardNo:form.value.bankCardNo,
bankOffice:form.value.bankOffice,
certificatePhoto1:form.value.certificatePhoto1,
certificatePhoto2:form.value.certificatePhoto2
};
let postData={
let info = {
nation: form.value.nation,
birthDay: form.value.birthDay,
nativePlace: form.value.nativePlace,
address: form.value.address,
emergencyContact: form.value.emergencyContact,
contactPhone: form.value.contactPhone,
bankName: form.value.bankName,
bankCardNo: form.value.bankCardNo,
bankOffice: form.value.bankOffice,
certificatePhoto1: form.value.certificatePhoto1,
certificatePhoto2: form.value.certificatePhoto2
};
let postData = {
comId: form.value.comId,
projectId: form.value.projectId,
subDeptId:form.value.subDeptId,
subDeptName:depts.length > 0 ? depts[0].subDeptName : '',
subDeptGroup:form.value.subDeptGroup,
subDeptGroupName :groups.length > 0 ? groups[0].groupName : '',
userName:form.value.userName,
cardType:form.value.certificateType,
cardCode:form.value.certificateCode,
userSex:form.value.sex,
userPicture:form.value.faceImage,
userPhone:form.value.userPhone,
degreeGrade:form.value.educationalType,
userInfos:JSON.stringify(info),
craftType:form.value.craftType,
craftPost:form.value.craftPost,
};
subDeptId: form.value.subDeptId,
subDeptName: depts.length > 0 ? depts[0].subDeptName : '',
subDeptGroup: form.value.subDeptGroup,
subDeptGroupName: groups.length > 0 ? groups[0].groupName : '',
userName: form.value.userName,
cardType: form.value.certificateType,
cardCode: form.value.certificateCode,
userSex: form.value.sex,
userPicture: form.value.faceImage,
userPhone: form.value.userPhone,
degreeGrade: form.value.educationalType,
userInfos: JSON.stringify(info),
craftType: form.value.craftType,
craftPost: form.value.craftPost,
};
if (form.value.id != null) {
postData.id=form.value.id;
postData.id = form.value.id;
updateProProjectInfoSubdeptsUsers(postData).then(response => {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
@ -742,9 +754,8 @@ function handleExport() {
...queryParams.value
}, `proProjectInfoSubdeptsUsers_${new Date().getTime()}.xlsx`)
}
loadSubDepts();
getList();
loadSubDepts();
</script>
<style lang="scss">
.pro-project-info-subdepts-users-index {

View File

@ -29,10 +29,17 @@ export default defineConfig(({ mode, command }) => {
host: true,
open: true,
proxy: {
"/prod-api": {
//target: "http://localhost:8080",
target: 'http://62.234.3.186',
changeOrigin: true,
pathRewrite: {
"^/prod-api": "/",
},
},
// https://cn.vitejs.dev/config/#server-proxy
'/dev-api': {
target: 'http://localhost:8080',
//target: 'http://62.234.3.186/prod-api/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
},