合并分支
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
import request, { download } from '@/utils/request';
|
import request, { download } from '@/utils/request';
|
||||||
import { AxiosPromise } from 'axios';
|
import { AxiosPromise } from 'axios';
|
||||||
|
<<<<<<< HEAD
|
||||||
import {
|
import {
|
||||||
ConstructionUserForm,
|
ConstructionUserForm,
|
||||||
ConstructionUserQuery,
|
ConstructionUserQuery,
|
||||||
@ -28,6 +29,9 @@ export const listConstructionMonth = (query?: ConstructionMonthQuery): AxiosProm
|
|||||||
params: query
|
params: query
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
=======
|
||||||
|
import { ConstructionUserForm, ConstructionUserQuery, ConstructionUserVO } from '@/api/project/constructionUser/types';
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询施工人员列表
|
* 查询施工人员列表
|
||||||
@ -54,28 +58,6 @@ export const getConstructionUser = (id: string | number): AxiosPromise<Construct
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* 人员迁移
|
|
||||||
* @param data
|
|
||||||
*/
|
|
||||||
export const transferConstructionUser = (data: skipType) => {
|
|
||||||
return request({
|
|
||||||
url: '/project/constructionUser/change/project',
|
|
||||||
method: 'put',
|
|
||||||
data: data
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询项目以及项目下的分包公司列表
|
|
||||||
*/
|
|
||||||
export const getProjectContractorList = () => {
|
|
||||||
return request({
|
|
||||||
url: '/project/project/list/project/contractorList',
|
|
||||||
method: 'get'
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增施工人员
|
* 新增施工人员
|
||||||
* @param data
|
* @param data
|
||||||
|
@ -184,6 +184,7 @@ export interface ConstructionUserVO {
|
|||||||
createTime: string;
|
createTime: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
export interface skipType {
|
export interface skipType {
|
||||||
/**
|
/**
|
||||||
* 项目id
|
* 项目id
|
||||||
@ -297,6 +298,8 @@ export interface skipTeamType {
|
|||||||
id: string | number;
|
id: string | number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=======
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
export interface ConstructionUserForm extends BaseEntity {
|
export interface ConstructionUserForm extends BaseEntity {
|
||||||
/**
|
/**
|
||||||
* 主键id
|
* 主键id
|
||||||
|
@ -51,11 +51,6 @@ export interface ContractorForm extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
id?: string | number;
|
id?: string | number;
|
||||||
|
|
||||||
/**
|
|
||||||
* 主键id
|
|
||||||
*/
|
|
||||||
projectId?: string | number;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公司名称
|
* 公司名称
|
||||||
*/
|
*/
|
||||||
|
@ -37,12 +37,12 @@ export interface ProjectVO {
|
|||||||
/**
|
/**
|
||||||
* 项目类型
|
* 项目类型
|
||||||
*/
|
*/
|
||||||
projectType: string;
|
type: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目类型(1光伏 2风电)
|
* 项目类型(1光伏 2风电)
|
||||||
*/
|
*/
|
||||||
projectCategory: number;
|
isType: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除时间
|
* 删除时间
|
||||||
@ -116,18 +116,6 @@ export interface ProjectVO {
|
|||||||
type?: string;
|
type?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface locationType {
|
|
||||||
/**
|
|
||||||
* 经度
|
|
||||||
*/
|
|
||||||
lng: string;
|
|
||||||
// 纬度
|
|
||||||
lat: string;
|
|
||||||
// 逆地理编码地址
|
|
||||||
|
|
||||||
projectSite: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ProjectForm extends BaseEntity {
|
export interface ProjectForm extends BaseEntity {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -159,16 +147,6 @@ export interface ProjectForm extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
picUrl?: string;
|
picUrl?: string;
|
||||||
|
|
||||||
/**
|
|
||||||
* 经度
|
|
||||||
*/
|
|
||||||
lng?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 纬度
|
|
||||||
*/
|
|
||||||
lat?: string;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
@ -177,12 +155,12 @@ export interface ProjectForm extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 项目类型
|
* 项目类型
|
||||||
*/
|
*/
|
||||||
projectType?: string;
|
type?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目类型(1光伏 2风电)
|
* 项目类型(1光伏 2风电)
|
||||||
*/
|
*/
|
||||||
projectCategory?: number;
|
isType?: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除时间
|
* 删除时间
|
||||||
@ -220,14 +198,9 @@ export interface ProjectForm extends BaseEntity {
|
|||||||
onStreamTime?: string;
|
onStreamTime?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 打卡开始时间(09:00,18:00)
|
* 打卡范围(09:00,18:00)
|
||||||
*/
|
*/
|
||||||
playCardStart?: string;
|
punchRange?: string;
|
||||||
|
|
||||||
/**
|
|
||||||
* 打卡结束时间(09:00,18:00)
|
|
||||||
*/
|
|
||||||
playCardEnd?: string;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设计总量
|
* 设计总量
|
||||||
@ -284,12 +257,12 @@ export interface ProjectQuery extends PageQuery {
|
|||||||
/**
|
/**
|
||||||
* 项目类型
|
* 项目类型
|
||||||
*/
|
*/
|
||||||
projectType?: string;
|
type?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目类型(1光伏 2风电)
|
* 项目类型(1光伏 2风电)
|
||||||
*/
|
*/
|
||||||
projectCategory?: number;
|
isType?: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除时间
|
* 删除时间
|
||||||
@ -301,16 +274,6 @@ export interface ProjectQuery extends PageQuery {
|
|||||||
*/
|
*/
|
||||||
projectSite?: string;
|
projectSite?: string;
|
||||||
|
|
||||||
/**
|
|
||||||
* 经度
|
|
||||||
*/
|
|
||||||
lng?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 纬度
|
|
||||||
*/
|
|
||||||
lat?: string;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 负责人
|
* 负责人
|
||||||
*/
|
*/
|
||||||
@ -337,14 +300,9 @@ export interface ProjectQuery extends PageQuery {
|
|||||||
onStreamTime?: string;
|
onStreamTime?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 打卡开始时间(09:00,18:00)
|
* 打卡范围(09:00,18:00)
|
||||||
*/
|
*/
|
||||||
playCardStart?: string;
|
punchRange?: string;
|
||||||
|
|
||||||
/**
|
|
||||||
* 打卡结束时间(09:00,18:00)
|
|
||||||
*/
|
|
||||||
playCardEnd?: string;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设计总量
|
* 设计总量
|
||||||
|
@ -1,136 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="map">
|
|
||||||
<input type="text" placeholder="请输入地址" v-model="searchValue" />
|
|
||||||
<button @click="onSearch">搜索</button>
|
|
||||||
<div id="container" :style="{ 'height': mapProps.height }"></div>
|
|
||||||
|
|
||||||
<div id="my-panel" @listElementClick="selectPostion"></div>
|
|
||||||
<div class="flex justify-end">
|
|
||||||
<el-button type="primary" @click="submit"> 确定 </el-button>
|
|
||||||
<el-button @click="emit('setLocation')">取消</el-button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script setup>
|
|
||||||
import { onMounted, onUnmounted } from 'vue';
|
|
||||||
import AMapLoader from '@amap/amap-jsapi-loader';
|
|
||||||
const { proxy } = getCurrentInstance();
|
|
||||||
//props参数
|
|
||||||
const mapProps = defineProps({
|
|
||||||
height: {
|
|
||||||
type: String,
|
|
||||||
default: '800px'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const emit = defineEmits(['setLocation']);
|
|
||||||
const center = ref([116.397428, 39.90923]);
|
|
||||||
const map = ref(null);
|
|
||||||
const placeSearch = ref(null);
|
|
||||||
const geocoder = ref(null);
|
|
||||||
const searchValue = ref('');
|
|
||||||
const lnglat = ref([]);
|
|
||||||
onMounted(() => {
|
|
||||||
window._AMapSecurityConfig = {
|
|
||||||
securityJsCode: '3f418182f27c907265f69a708c5fa41c'
|
|
||||||
};
|
|
||||||
AMapLoader.load({
|
|
||||||
key: 'ed8d05ca57affee582e2be654bac5baf', // 申请好的Web端开发者Key,首次调用 load 时必填
|
|
||||||
version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
|
|
||||||
plugins: ['AMap.Scale', 'AMap.AutoComplete', 'AMap.PlaceSearch', 'AMap.Geolocation', 'AMap.Geocoder'] //需要使用的的插件列表,如比例尺'AMap.Scale',支持添加多个如:['...','...']
|
|
||||||
})
|
|
||||||
.then((AMap) => {
|
|
||||||
map.value = new AMap.Map('container', {
|
|
||||||
// 设置地图容器id
|
|
||||||
viewMode: '3D', // 是否为3D地图模式
|
|
||||||
zoom: 8, // 初始化地图级别
|
|
||||||
center: center.value // 初始化地图中心点位置
|
|
||||||
});
|
|
||||||
//初始化搜索
|
|
||||||
placeSearch.value = new AMap.PlaceSearch({
|
|
||||||
pageSize: 5, //单页显示结果条数
|
|
||||||
// pageIndex: 1, //页码
|
|
||||||
// city: '010', //兴趣点城市
|
|
||||||
// citylimit: true, //是否强制限制在设置的城市内搜索
|
|
||||||
panel: 'my-panel',
|
|
||||||
map: map.value, //展现结果的地图实例
|
|
||||||
autoFitView: true //是否自动调整地图视野使绘制的 Marker 点都处于视口的可见范围
|
|
||||||
});
|
|
||||||
// 初始化Geocoder
|
|
||||||
geocoder.value = new AMap.Geocoder({
|
|
||||||
radius: 1000 //范围,默认:500
|
|
||||||
});
|
|
||||||
|
|
||||||
// 定位
|
|
||||||
const geolocation = new AMap.Geolocation({
|
|
||||||
enableHighAccuracy: true, //是否使用高精度定位,默认:true
|
|
||||||
timeout: 10000, //超过10秒后停止定位,默认:无穷大
|
|
||||||
maximumAge: 0, //定位结果缓存0毫秒,默认:0
|
|
||||||
convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
|
|
||||||
showButton: true, //显示定位按钮,默认:true
|
|
||||||
buttonPosition: 'LB', //定位按钮停靠位置,默认:'LB',左下角
|
|
||||||
buttonOffset: new AMap.Pixel(10, 20), //定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
|
|
||||||
showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
|
|
||||||
showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
|
|
||||||
panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
|
|
||||||
zoomToAccuracy: true //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
|
|
||||||
});
|
|
||||||
map.value.addControl(geolocation);
|
|
||||||
|
|
||||||
//定位到当前位置
|
|
||||||
geolocation.getCurrentPosition((status, result) => {
|
|
||||||
console.log(status, result);
|
|
||||||
});
|
|
||||||
placeSearch.value.on('selectChanged', (e) => {
|
|
||||||
let { lng, lat } = e.selected.data.location;
|
|
||||||
lnglat.value = [lng, lat];
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.catch((e) => {
|
|
||||||
console.log(e);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
const onSearch = () => {
|
|
||||||
//搜索地址
|
|
||||||
placeSearch.value.search(searchValue.value, (status, result) => {
|
|
||||||
if (result.info !== 'OK') return;
|
|
||||||
let { lng, lat } = result.poiList.pois[0].location;
|
|
||||||
lnglat.value = [lng, lat];
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const submit = () => {
|
|
||||||
if (!lnglat.value.length) {
|
|
||||||
proxy?.$modal.msgWarning('请选择正确地址');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
geocoder.value.getAddress(lnglat.value, function (status, result) {
|
|
||||||
if (status === 'complete' && result.info === 'OK') {
|
|
||||||
// result为对应的地理位置详细信息
|
|
||||||
const position = {
|
|
||||||
lng: lnglat.value[0],
|
|
||||||
lat: lnglat.value[1],
|
|
||||||
projectSite: result.regeocode.formattedAddress
|
|
||||||
};
|
|
||||||
emit('setLocation', position);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
onUnmounted(() => {
|
|
||||||
map.value?.destroy();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
#container {
|
|
||||||
width: 100%;
|
|
||||||
position: relative;
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
#my-panel {
|
|
||||||
position: absolute;
|
|
||||||
top: 103px;
|
|
||||||
z-index: 1;
|
|
||||||
left: 10px;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -175,9 +175,12 @@
|
|||||||
<el-button link type="danger" icon="Avatar" @click="handleJoinBlacklist(scope.row)" v-hasPermi="['project:constructionBlacklist:add']">
|
<el-button link type="danger" icon="Avatar" @click="handleJoinBlacklist(scope.row)" v-hasPermi="['project:constructionBlacklist:add']">
|
||||||
黑名单
|
黑名单
|
||||||
</el-button>
|
</el-button>
|
||||||
|
<<<<<<< HEAD
|
||||||
<!-- <el-button link type="primary" icon="Switch" @click="handleToggle(scope.row)"> 切换人脸 </el-button> -->
|
<!-- <el-button link type="primary" icon="Switch" @click="handleToggle(scope.row)"> 切换人脸 </el-button> -->
|
||||||
<el-button link type="primary" icon="Switch" @click="handleChange(scope.row)"> 人员迁移 </el-button>
|
<el-button link type="primary" icon="Switch" @click="handleChange(scope.row)"> 人员迁移 </el-button>
|
||||||
<el-button link type="primary" icon="ChatLineSquare" @click="handleExit(scope.row)"> 入退场记录 </el-button>
|
<el-button link type="primary" icon="ChatLineSquare" @click="handleExit(scope.row)"> 入退场记录 </el-button>
|
||||||
|
=======
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
<el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['project:constructionUser:remove']">
|
<el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['project:constructionUser:remove']">
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -340,6 +343,7 @@
|
|||||||
<el-dialog title="施工人员详情" v-model="showDetailDrawer" width="800px">
|
<el-dialog title="施工人员详情" v-model="showDetailDrawer" width="800px">
|
||||||
<construction-user-detail :user-id="currentUserId" />
|
<construction-user-detail :user-id="currentUserId" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
<<<<<<< HEAD
|
||||||
<el-dialog :title="skipName + '-人员迁移'" v-model="skip" width="500px">
|
<el-dialog :title="skipName + '-人员迁移'" v-model="skip" width="500px">
|
||||||
<el-form-item label="所属项目" label-width="130px">
|
<el-form-item label="所属项目" label-width="130px">
|
||||||
<el-select v-model="skipObject.projectId" @change="selectProject" placeholder="请选择所属项目" style="width: 240px">
|
<el-select v-model="skipObject.projectId" @change="selectProject" placeholder="请选择所属项目" style="width: 240px">
|
||||||
@ -459,6 +463,8 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-calendar>
|
</el-calendar>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
=======
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -468,6 +474,7 @@ import {
|
|||||||
delConstructionUser,
|
delConstructionUser,
|
||||||
getConstructionUser,
|
getConstructionUser,
|
||||||
listConstructionUser,
|
listConstructionUser,
|
||||||
|
<<<<<<< HEAD
|
||||||
updateConstructionUser,
|
updateConstructionUser,
|
||||||
getProjectContractorList,
|
getProjectContractorList,
|
||||||
transferConstructionUser,
|
transferConstructionUser,
|
||||||
@ -479,15 +486,11 @@ import {
|
|||||||
dowloadConstructionUserTemplate,
|
dowloadConstructionUserTemplate,
|
||||||
importConstructionUserInfo,
|
importConstructionUserInfo,
|
||||||
listConstructionMonth
|
listConstructionMonth
|
||||||
|
=======
|
||||||
|
updateConstructionUser
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
} from '@/api/project/constructionUser';
|
} from '@/api/project/constructionUser';
|
||||||
import {
|
import { ConstructionUserForm, ConstructionUserQuery, ConstructionUserVO } from '@/api/project/constructionUser/types';
|
||||||
ConstructionUserForm,
|
|
||||||
ConstructionUserQuery,
|
|
||||||
ConstructionUserVO,
|
|
||||||
skipType,
|
|
||||||
skipOptionType,
|
|
||||||
skipTeamType
|
|
||||||
} from '@/api/project/constructionUser/types';
|
|
||||||
import { useUserStoreHook } from '@/store/modules/user';
|
import { useUserStoreHook } from '@/store/modules/user';
|
||||||
import { listContractor } from '@/api/project/contractor';
|
import { listContractor } from '@/api/project/contractor';
|
||||||
import { listProjectTeam } from '@/api/project/projectTeam';
|
import { listProjectTeam } from '@/api/project/projectTeam';
|
||||||
@ -525,6 +528,7 @@ const ids = ref<Array<string | number>>([]);
|
|||||||
const single = ref(true);
|
const single = ref(true);
|
||||||
const multiple = ref(true);
|
const multiple = ref(true);
|
||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
|
<<<<<<< HEAD
|
||||||
const skip = ref(false);
|
const skip = ref(false);
|
||||||
const fileStatus = ref(false);
|
const fileStatus = ref(false);
|
||||||
const showFaceDrawer = ref(false);
|
const showFaceDrawer = ref(false);
|
||||||
@ -546,11 +550,18 @@ const queryFormRef = ref<ElFormInstance>();
|
|||||||
const constructionUserFormRef = ref<ElFormInstance>();
|
const constructionUserFormRef = ref<ElFormInstance>();
|
||||||
const skipName = ref('');
|
const skipName = ref('');
|
||||||
const calendarList = ref<Array<AttendanceMonthVO>>([]);
|
const calendarList = ref<Array<AttendanceMonthVO>>([]);
|
||||||
|
=======
|
||||||
|
|
||||||
|
const queryFormRef = ref<ElFormInstance>();
|
||||||
|
const constructionUserFormRef = ref<ElFormInstance>();
|
||||||
|
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
const dialog = reactive<DialogOption>({
|
const dialog = reactive<DialogOption>({
|
||||||
visible: false,
|
visible: false,
|
||||||
title: '',
|
title: '',
|
||||||
id: undefined
|
id: undefined
|
||||||
});
|
});
|
||||||
|
<<<<<<< HEAD
|
||||||
const baseUrl = import.meta.env.VITE_APP_BASE_API;
|
const baseUrl = import.meta.env.VITE_APP_BASE_API;
|
||||||
//人员迁移条件
|
//人员迁移条件
|
||||||
const skipObject: skipType = reactive({
|
const skipObject: skipType = reactive({
|
||||||
@ -561,6 +572,8 @@ const skipObject: skipType = reactive({
|
|||||||
const contractorList = ref<Array<skipTeamType>>([]);
|
const contractorList = ref<Array<skipTeamType>>([]);
|
||||||
//项目列表
|
//项目列表
|
||||||
const skipOptions = ref<Array<skipOptionType>>([]);
|
const skipOptions = ref<Array<skipOptionType>>([]);
|
||||||
|
=======
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
|
|
||||||
const initFormData: ConstructionUserForm = {
|
const initFormData: ConstructionUserForm = {
|
||||||
id: undefined,
|
id: undefined,
|
||||||
@ -721,6 +734,7 @@ const getList = async () => {
|
|||||||
loading.value = false;
|
loading.value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
/** 查看打卡记录详情 */
|
/** 查看打卡记录详情 */
|
||||||
const handleViewPlayCard = async (idx: number, data: any) => {
|
const handleViewPlayCard = async (idx: number, data: any) => {
|
||||||
if (data.type == 'next-month' || data.type == 'prev-month') {
|
if (data.type == 'next-month' || data.type == 'prev-month') {
|
||||||
@ -765,6 +779,8 @@ const setUnits = async () => {
|
|||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
=======
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
const contractorOpt = ref();
|
const contractorOpt = ref();
|
||||||
|
|
||||||
/** 查询当前项目下的分包公司列表 */
|
/** 查询当前项目下的分包公司列表 */
|
||||||
@ -880,6 +896,7 @@ const handleShowDrawer = (row?: ConstructionUserVO) => {
|
|||||||
showDetailDrawer.value = true;
|
showDetailDrawer.value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
//打卡按钮
|
//打卡按钮
|
||||||
const handlePlayCard = async (row: ConstructionUserVO) => {
|
const handlePlayCard = async (row: ConstructionUserVO) => {
|
||||||
const _id = row?.id || ids.value[0];
|
const _id = row?.id || ids.value[0];
|
||||||
@ -941,6 +958,8 @@ const handleUpload = async (row: ConstructionUserVO) => {
|
|||||||
fileStatus.value = true;
|
fileStatus.value = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
=======
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
const submitForm = () => {
|
const submitForm = () => {
|
||||||
constructionUserFormRef.value?.validate(async (valid: boolean) => {
|
constructionUserFormRef.value?.validate(async (valid: boolean) => {
|
||||||
|
@ -122,6 +122,16 @@ const contractorFormRef = ref<ElFormInstance>();
|
|||||||
const userStore = useUserStoreHook();
|
const userStore = useUserStoreHook();
|
||||||
// 从 store 中获取项目列表和当前选中的项目
|
// 从 store 中获取项目列表和当前选中的项目
|
||||||
const currentProject = computed(() => userStore.selectedProject);
|
const currentProject = computed(() => userStore.selectedProject);
|
||||||
|
//监听项目改变
|
||||||
|
// watch(
|
||||||
|
// () => currentProject.value,
|
||||||
|
// (newId, oldId) => {
|
||||||
|
// /* ... */
|
||||||
|
// queryParams.value.projectId=newId.id
|
||||||
|
// // getList()
|
||||||
|
|
||||||
|
// }
|
||||||
|
// )
|
||||||
const dialog = reactive<DialogOption>({
|
const dialog = reactive<DialogOption>({
|
||||||
visible: false,
|
visible: false,
|
||||||
title: ''
|
title: ''
|
||||||
@ -135,8 +145,7 @@ const initFormData: ContractorForm = {
|
|||||||
custodian: undefined,
|
custodian: undefined,
|
||||||
custodianPhone: undefined,
|
custodianPhone: undefined,
|
||||||
fileMap: undefined,
|
fileMap: undefined,
|
||||||
remark: undefined,
|
remark: undefined
|
||||||
projectId: currentProject.value.id
|
|
||||||
};
|
};
|
||||||
const data = reactive<PageData<ContractorForm, ContractorQuery>>({
|
const data = reactive<PageData<ContractorForm, ContractorQuery>>({
|
||||||
form: { ...initFormData },
|
form: { ...initFormData },
|
||||||
@ -163,6 +172,10 @@ const { queryParams, form, rules } = toRefs(data);
|
|||||||
/** 查询分包单位列表 */
|
/** 查询分包单位列表 */
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
|
<<<<<<< HEAD
|
||||||
|
=======
|
||||||
|
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
const res = await listContractor(queryParams.value);
|
const res = await listContractor(queryParams.value);
|
||||||
contractorList.value = res.rows;
|
contractorList.value = res.rows;
|
||||||
total.value = res.total;
|
total.value = res.total;
|
||||||
|
@ -52,14 +52,14 @@
|
|||||||
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
|
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<<<<<<< HEAD
|
||||||
<el-table-column label="项目类型" align="center" prop="projectType" width="120">
|
<el-table-column label="项目类型" align="center" prop="projectType" width="120">
|
||||||
|
=======
|
||||||
|
<el-table-column label="项目类型" align="center" prop="type" />
|
||||||
|
<el-table-column label="项目类别" align="center" prop="isType">
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="project_type" :value="scope.row.projectType" />
|
<dict-tag :options="project_category_type" :value="scope.row.isType" />
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="项目类别" align="center" prop="projectCategory">
|
|
||||||
<template #default="scope">
|
|
||||||
<dict-tag :options="project_category_type" :value="scope.row.projectCategory" />
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="负责人" align="center" prop="principal" />
|
<el-table-column label="负责人" align="center" prop="principal" />
|
||||||
@ -107,8 +107,9 @@
|
|||||||
<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-card>
|
</el-card>
|
||||||
<!-- 添加或修改项目对话框 -->
|
<!-- 添加或修改项目对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="770px" append-to-body>
|
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||||
<el-form ref="projectFormRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="projectFormRef" :model="form" :rules="rules" label-width="100px">
|
||||||
|
<<<<<<< HEAD
|
||||||
<div class="block-box">
|
<div class="block-box">
|
||||||
<div class="">基础信息</div>
|
<div class="">基础信息</div>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
@ -237,6 +238,44 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
=======
|
||||||
|
<el-form-item label="项目名称" prop="projectName">
|
||||||
|
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目简称" prop="shortName">
|
||||||
|
<el-input v-model="form.shortName" placeholder="请输入项目简称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="项目地址" prop="projectSite">
|
||||||
|
<el-input v-model="form.projectSite" placeholder="请输入项目地址" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="负责人" prop="principal">
|
||||||
|
<el-input v-model="form.principal" placeholder="请输入负责人" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="负责人电话" prop="principalPhone">
|
||||||
|
<el-input v-model="form.principalPhone" placeholder="请输入负责人电话" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="实际容量" prop="actual">
|
||||||
|
<el-input v-model="form.actual" placeholder="请输入实际容量" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="计划容量" prop="plan">
|
||||||
|
<el-input v-model="form.plan" placeholder="请输入计划容量" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="开工时间" prop="onStreamTime">
|
||||||
|
<el-date-picker clearable v-model="form.onStreamTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择开工时间" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="打卡范围" prop="punchRange">
|
||||||
|
<el-input v-model="form.punchRange" placeholder="请输入打卡范围" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="设计总量" prop="designTotal">
|
||||||
|
<el-input v-model="form.designTotal" placeholder="请输入设计总量" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="安全协议书" prop="securityAgreement">
|
||||||
|
<file-upload v-model="form.securityAgreement" :limit="1" :file-type="['pdf']" :file-size="50" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
|
</el-form-item>
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
@ -254,6 +293,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
<!-- //选取项目地址弹窗 -->
|
<!-- //选取项目地址弹窗 -->
|
||||||
<el-dialog v-model="amapStatus" :title="form.projectName + '-获取经纬度'" width="80%">
|
<el-dialog v-model="amapStatus" :title="form.projectName + '-获取经纬度'" width="80%">
|
||||||
@ -268,10 +308,13 @@
|
|||||||
@close="polygonStatus = false"
|
@close="polygonStatus = false"
|
||||||
></open-layers-map>
|
></open-layers-map>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
=======
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="Project" lang="ts">
|
<script setup name="Project" lang="ts">
|
||||||
|
<<<<<<< HEAD
|
||||||
import {
|
import {
|
||||||
addProject,
|
addProject,
|
||||||
addProjectFacilities,
|
addProjectFacilities,
|
||||||
@ -288,6 +331,14 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|||||||
const { sys_normal_disable, project_category_type, project_type } = toRefs<any>(
|
const { sys_normal_disable, project_category_type, project_type } = toRefs<any>(
|
||||||
proxy?.useDict('sys_normal_disable', 'project_category_type', 'project_type')
|
proxy?.useDict('sys_normal_disable', 'project_category_type', 'project_type')
|
||||||
);
|
);
|
||||||
|
=======
|
||||||
|
import { addProject, delProject, getProject, listProject, updateProject } from '@/api/project/project';
|
||||||
|
import { ProjectForm, ProjectQuery, ProjectVO } from '@/api/project/project/types';
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
|
const { sys_normal_disable, project_category_type } = toRefs<any>(proxy?.useDict('sys_normal_disable', 'project_category_type'));
|
||||||
|
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
const projectList = ref<ProjectVO[]>([]);
|
const projectList = ref<ProjectVO[]>([]);
|
||||||
const buttonLoading = ref(false);
|
const buttonLoading = ref(false);
|
||||||
const loading = ref(true);
|
const loading = ref(true);
|
||||||
@ -296,7 +347,7 @@ const ids = ref<Array<string | number>>([]);
|
|||||||
const single = ref(true);
|
const single = ref(true);
|
||||||
const multiple = ref(true);
|
const multiple = ref(true);
|
||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
const amapStatus = ref(false);
|
|
||||||
const queryFormRef = ref<ElFormInstance>();
|
const queryFormRef = ref<ElFormInstance>();
|
||||||
const projectFormRef = ref<ElFormInstance>();
|
const projectFormRef = ref<ElFormInstance>();
|
||||||
const polygonStatus = ref(false);
|
const polygonStatus = ref(false);
|
||||||
@ -320,22 +371,19 @@ const initFormData: ProjectForm = {
|
|||||||
status: undefined,
|
status: undefined,
|
||||||
picUrl: undefined,
|
picUrl: undefined,
|
||||||
remark: undefined,
|
remark: undefined,
|
||||||
projectType: undefined,
|
type: undefined,
|
||||||
projectCategory: undefined,
|
isType: undefined,
|
||||||
deletedAt: undefined,
|
deletedAt: undefined,
|
||||||
projectSite: undefined,
|
projectSite: undefined,
|
||||||
principal: undefined,
|
principal: undefined,
|
||||||
principalPhone: undefined,
|
principalPhone: undefined,
|
||||||
actual: undefined,
|
actual: undefined,
|
||||||
lng: undefined,
|
|
||||||
lat: undefined,
|
|
||||||
plan: undefined,
|
plan: undefined,
|
||||||
onStreamTime: undefined,
|
onStreamTime: undefined,
|
||||||
playCardStart: undefined,
|
punchRange: undefined,
|
||||||
playCardEnd: undefined,
|
|
||||||
designTotal: undefined,
|
designTotal: undefined,
|
||||||
securityAgreement: undefined,
|
securityAgreement: undefined,
|
||||||
sort: 0,
|
sort: undefined,
|
||||||
showHidden: undefined,
|
showHidden: undefined,
|
||||||
isDelete: undefined
|
isDelete: undefined
|
||||||
};
|
};
|
||||||
@ -349,19 +397,16 @@ const data = reactive<PageData<ProjectForm, ProjectQuery>>({
|
|||||||
pId: undefined,
|
pId: undefined,
|
||||||
status: undefined,
|
status: undefined,
|
||||||
picUrl: undefined,
|
picUrl: undefined,
|
||||||
projectType: undefined,
|
type: undefined,
|
||||||
projectCategory: undefined,
|
isType: undefined,
|
||||||
deletedAt: undefined,
|
deletedAt: undefined,
|
||||||
projectSite: undefined,
|
projectSite: undefined,
|
||||||
principal: undefined,
|
principal: undefined,
|
||||||
principalPhone: undefined,
|
principalPhone: undefined,
|
||||||
actual: undefined,
|
actual: undefined,
|
||||||
lng: undefined,
|
|
||||||
lat: undefined,
|
|
||||||
plan: undefined,
|
plan: undefined,
|
||||||
onStreamTime: undefined,
|
onStreamTime: undefined,
|
||||||
playCardStart: undefined,
|
punchRange: undefined,
|
||||||
playCardEnd: undefined,
|
|
||||||
designTotal: undefined,
|
designTotal: undefined,
|
||||||
securityAgreement: undefined,
|
securityAgreement: undefined,
|
||||||
sort: undefined,
|
sort: undefined,
|
||||||
@ -370,19 +415,10 @@ const data = reactive<PageData<ProjectForm, ProjectQuery>>({
|
|||||||
params: {}
|
params: {}
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
playCardStart: [{ required: true, message: '打卡开始时间不能为空', trigger: 'blur' }],
|
punchRange: [{ required: true, message: '打卡范围不能为空', trigger: 'blur' }],
|
||||||
playCardEnd: [{ required: true, message: '打卡结束时间不能为空', trigger: 'blur' }],
|
|
||||||
projectName: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }],
|
projectName: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }],
|
||||||
shortName: [{ required: true, message: '项目简称不能为空', trigger: 'blur' }],
|
shortName: [{ required: true, message: '项目简称不能为空', trigger: 'blur' }],
|
||||||
principalPhone: [{ required: true, message: '负责人电话不能为空', trigger: 'blur' }],
|
projectSite: [{ required: true, message: '项目地址不能为空', trigger: 'blur' }]
|
||||||
principal: [{ required: true, message: '负责人不能为空', trigger: 'blur' }],
|
|
||||||
projectType: [{ required: true, message: '项目类型不能为空', trigger: 'blur' }],
|
|
||||||
projectCategory: [{ required: true, message: '项目类别不能为空', trigger: 'blur' }],
|
|
||||||
projectSite: [{ required: true, message: '项目地址不能为空', trigger: 'blur' }],
|
|
||||||
actual: [{ required: true, message: '实际容量不能为空', trigger: 'blur' }],
|
|
||||||
lng: [{ required: true, message: '经度不能为空', trigger: 'blur' }],
|
|
||||||
lat: [{ required: true, message: '纬度不能为空', trigger: 'blur' }],
|
|
||||||
plan: [{ required: true, message: '计划容量不能为空', trigger: 'blur' }]
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -407,6 +443,7 @@ const reset = () => {
|
|||||||
projectFormRef.value?.resetFields();
|
projectFormRef.value?.resetFields();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
// 设置位置信息
|
// 设置位置信息
|
||||||
const setPoi = (location: locationType) => {
|
const setPoi = (location: locationType) => {
|
||||||
if (location) {
|
if (location) {
|
||||||
@ -464,6 +501,8 @@ const setCheckedNodes = (nodeList: any) => {
|
|||||||
// }
|
// }
|
||||||
// loading.value = false;
|
// loading.value = false;
|
||||||
// };
|
// };
|
||||||
|
=======
|
||||||
|
>>>>>>> 7736f4a33624dcddf693271347dd34a922e58575
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
queryParams.value.pageNum = 1;
|
queryParams.value.pageNum = 1;
|
||||||
@ -568,17 +607,3 @@ onMounted(() => {
|
|||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
|
||||||
.block-box {
|
|
||||||
border: 1px solid #9eccfa;
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 10px 20px 0 10px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.block-box > div {
|
|
||||||
color: #409eff;
|
|
||||||
font-weight: 700;
|
|
||||||
font-size: 14px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
Reference in New Issue
Block a user