产值计划
This commit is contained in:
@ -143,3 +143,13 @@ export const getDictList = (query: any): AxiosPromise<any[]> => {
|
|||||||
params: query
|
params: query
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* 获取到物资状态为已完成的版本
|
||||||
|
*/
|
||||||
|
export const obtainTheVersion = (query: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/cailiaoshebei/mrpBase/obtainTheVersion',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
});
|
||||||
|
};
|
||||||
|
@ -98,3 +98,26 @@ export const getMonthInfo = (query): AxiosPromise<MonthPlanVO> => {
|
|||||||
params: query
|
params: query
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* 修改采购完工产值对甲
|
||||||
|
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
export const purchaseValueAup = (query) => {
|
||||||
|
return request({
|
||||||
|
url: '/out/monthPlan/purchaseValueAup',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
});
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* 采购完工产值对甲
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
export const purchaseValueA = (query) => {
|
||||||
|
return request({
|
||||||
|
url: '/out/monthPlan/purchaseValueA',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
});
|
||||||
|
};
|
24
src/api/out/purchase/index.ts
Normal file
24
src/api/out/purchase/index.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
/**
|
||||||
|
* 修改采购完工产值对甲
|
||||||
|
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
export const purchaseValueAup = (query) => {
|
||||||
|
return request({
|
||||||
|
url: '/out/monthPlan/purchaseValueAup',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
});
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* 采购完工产值对甲
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
export const purchaseValueA = (query) => {
|
||||||
|
return request({
|
||||||
|
url: '/out/monthPlan/purchaseValueA',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
});
|
||||||
|
};
|
@ -61,3 +61,13 @@ export const delConstructionSchedulePlan = (id: string | number | Array<string |
|
|||||||
method: 'delete'
|
method: 'delete'
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* 获取项目结构
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
export const getProjectStructure = (id: string | number | Array<string | number>) => {
|
||||||
|
return request({
|
||||||
|
url: '/project/project/projectStructure/' + id,
|
||||||
|
method: 'get'
|
||||||
|
});
|
||||||
|
};
|
||||||
|
@ -6,43 +6,20 @@
|
|||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5" :offset="0"
|
<el-col :span="1.5" :offset="0"><el-button type="primary"
|
||||||
><el-button
|
v-hasPermi="['cailiaoshebei:materialbatchdemandplan:add']" size="default" @click="handleAdd"
|
||||||
type="primary"
|
icon="FolderAdd" plain>新增</el-button></el-col>
|
||||||
v-hasPermi="['cailiaoshebei:materialbatchdemandplan:add']"
|
<el-col :span="1.5" :offset="0"><el-button type="danger" size="default"
|
||||||
size="default"
|
v-hasPermi="['cailiaoshebei:materialbatchdemandplan:remove']" @click="handleDeleteBatch"
|
||||||
@click="handleAdd"
|
icon="FolderDelete" plain>删除</el-button></el-col>
|
||||||
icon="FolderAdd"
|
|
||||||
plain
|
|
||||||
>新增</el-button
|
|
||||||
></el-col
|
|
||||||
>
|
|
||||||
<el-col :span="1.5" :offset="0"
|
|
||||||
><el-button
|
|
||||||
type="danger"
|
|
||||||
size="default"
|
|
||||||
v-hasPermi="['cailiaoshebei:materialbatchdemandplan:remove']"
|
|
||||||
@click="handleDeleteBatch"
|
|
||||||
icon="FolderDelete"
|
|
||||||
plain
|
|
||||||
>删除</el-button
|
|
||||||
></el-col
|
|
||||||
>
|
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-input v-model="batchNumber" placeholder="请输入批次号" @input="searchBatchList" prefix-icon="Search" clearable />
|
<el-input v-model="batchNumber" placeholder="请输入批次号" @input="searchBatchList" prefix-icon="Search"
|
||||||
<el-tree
|
clearable />
|
||||||
ref="batchTreeRef"
|
<el-tree ref="batchTreeRef" class="mt-2" node-key="id" :data="batchOptions"
|
||||||
class="mt-2"
|
:props="{ label: 'planCode', children: 'children' }" :expand-on-click-node="false" highlight-current
|
||||||
node-key="id"
|
default-expand-all @node-click="handleNodeClick">
|
||||||
:data="batchOptions"
|
|
||||||
:props="{ label: 'planCode', children: 'children' }"
|
|
||||||
:expand-on-click-node="false"
|
|
||||||
highlight-current
|
|
||||||
default-expand-all
|
|
||||||
@node-click="handleNodeClick"
|
|
||||||
>
|
|
||||||
<template #default="{ node, data }">
|
<template #default="{ node, data }">
|
||||||
<div class="custom-tree-node">
|
<div class="custom-tree-node">
|
||||||
{{ node.label }}
|
{{ node.label }}
|
||||||
@ -50,14 +27,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-tree>
|
</el-tree>
|
||||||
<pagination
|
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.batchData.pageNum"
|
||||||
v-show="total > 0"
|
v-model:limit="queryParams.batchData.pageSize" @pagination="getList" layout="prev, pager, next,jumper" />
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.batchData.pageNum"
|
|
||||||
v-model:limit="queryParams.batchData.pageSize"
|
|
||||||
@pagination="getList"
|
|
||||||
layout="prev, pager, next,jumper"
|
|
||||||
/>
|
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="19">
|
<el-col :span="19">
|
||||||
@ -65,14 +36,12 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5" v-if="form.mrpBaseBo.status == 'draft'">
|
<el-col :span="1.5" v-if="form.mrpBaseBo.status == 'draft'">
|
||||||
<el-button type="primary" plain icon="Edit" @click="handleUpdata" v-hasPermi="['cailiaoshebei:materialbatchdemandplan:edit']"
|
<el-button type="primary" plain icon="Edit" @click="handleUpdata"
|
||||||
>修改</el-button
|
v-hasPermi="['cailiaoshebei:materialbatchdemandplan:edit']">修改</el-button>
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button plain type="warning" icon="Finished" @click="handleAudit()" v-hasPermi="['cailiaoshebei:materialbatchdemandplan:query']"
|
<el-button plain type="warning" icon="Finished" @click="handleAudit()"
|
||||||
>审核</el-button
|
v-hasPermi="['cailiaoshebei:materialbatchdemandplan:query']">审核</el-button>
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
@ -90,19 +59,14 @@
|
|||||||
<el-table-column label="需求到货时间" align="center" prop="arrivalTime" width="250" />
|
<el-table-column label="需求到货时间" align="center" prop="arrivalTime" width="250" />
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
<el-table-column label="备注" align="center" prop="remark" />
|
||||||
</el-table>
|
</el-table>
|
||||||
<pagination
|
<pagination v-show="mainTotal > 0" :total="mainTotal" v-model:page="queryParams.mainData.pageNum"
|
||||||
v-show="mainTotal > 0"
|
v-model:limit="queryParams.mainData.pageSize" @pagination="getMainList" />
|
||||||
:total="mainTotal"
|
|
||||||
v-model:page="queryParams.mainData.pageNum"
|
|
||||||
v-model:limit="queryParams.mainData.pageSize"
|
|
||||||
@pagination="getMainList"
|
|
||||||
/>
|
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<!-- 添加或修改物资-材料设备对话框 -->
|
<!-- 添加或修改物资-材料设备对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="1250px" append-to-body>
|
<el-dialog draggable :title="dialog.title" v-model="dialog.visible" width="1300px" append-to-body>
|
||||||
<el-form :model="form" ref="cailiaoshebeiFormRef" :rules="rules" label-width="80px" :inline="false">
|
<el-form :model="form" ref="cailiaoshebeiFormRef" :rules="rules" label-width="80px" :inline="false">
|
||||||
<el-divider>基础信息</el-divider>
|
<el-divider>基础信息</el-divider>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
@ -113,7 +77,8 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8" :offset="0">
|
<el-col :span="8" :offset="0">
|
||||||
<el-form-item label="编制日期" prop="mrpBaseBo.preparedDate">
|
<el-form-item label="编制日期" prop="mrpBaseBo.preparedDate">
|
||||||
<el-date-picker v-model="form.mrpBaseBo.preparedDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择编制日期" />
|
<el-date-picker v-model="form.mrpBaseBo.preparedDate" type="date" value-format="YYYY-MM-DD"
|
||||||
|
placeholder="请选择编制日期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8" :offset="0">
|
<el-col :span="8" :offset="0">
|
||||||
@ -125,10 +90,21 @@
|
|||||||
|
|
||||||
<el-divider>主要信息</el-divider>
|
<el-divider>主要信息</el-divider>
|
||||||
<el-table :data="form.planList">
|
<el-table :data="form.planList">
|
||||||
|
<el-table-column prop="name" align="center" label="版本号 " width="150">
|
||||||
|
|
||||||
|
<template #default="scope">
|
||||||
|
<el-select v-model="scope.row.versions" placeholder="请选择"
|
||||||
|
@change="(val) => selectNameVersion(val, scope.row)">
|
||||||
|
|
||||||
|
<el-option v-for="item in versionList" :key="item.versions" :label="item.versions"
|
||||||
|
:value="item.versions" />
|
||||||
|
</el-select>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="name" align="center" label="物资名称">
|
<el-table-column prop="name" align="center" label="物资名称">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <el-input v-model="scope.row.name" placeholder="请输入物资" /> -->
|
<el-select :disabled="!scope.row.versions" v-model="scope.row.suppliespriceId" placeholder="请选择"
|
||||||
<el-select v-model="scope.row.suppliespriceId" placeholder="请选择" @change="(val) => selectName(val, scope.row)">
|
@change="(val) => selectName(val, scope.row)">
|
||||||
<el-option v-for="item in nameList" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in nameList" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
@ -155,7 +131,8 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="arrivalTime" align="center" label="需求到货时间">
|
<el-table-column prop="arrivalTime" align="center" label="需求到货时间">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-date-picker v-model="scope.row.arrivalTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择" style="width: 140px" />
|
<el-date-picker v-model="scope.row.arrivalTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择"
|
||||||
|
style="width: 140px" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="remark" align="center" label="备注" width="150">
|
<el-table-column prop="remark" align="center" label="备注" width="150">
|
||||||
@ -188,7 +165,7 @@ import {
|
|||||||
listBatch,
|
listBatch,
|
||||||
getBatch,
|
getBatch,
|
||||||
delBatch,
|
delBatch,
|
||||||
listSelectCailiaoshebei,
|
listSelectCailiaoshebei, obtainTheVersion,
|
||||||
getDictList
|
getDictList
|
||||||
} from '@/api/materials/batchPlan';
|
} from '@/api/materials/batchPlan';
|
||||||
import { CailiaoshebeiVO, CailiaoshebeiQuery, CailiaoshebeiForm } from '@/api/materials/batchPlan/types';
|
import { CailiaoshebeiVO, CailiaoshebeiQuery, CailiaoshebeiForm } from '@/api/materials/batchPlan/types';
|
||||||
@ -271,6 +248,7 @@ const data = reactive({
|
|||||||
const batchNumber = ref('');
|
const batchNumber = ref('');
|
||||||
const { queryParams, form, rules } = toRefs(data);
|
const { queryParams, form, rules } = toRefs(data);
|
||||||
const nameList = ref([]);
|
const nameList = ref([]);
|
||||||
|
const versionList = ref([]);
|
||||||
/** 查询物资-材料设备列表 */
|
/** 查询物资-材料设备列表 */
|
||||||
const getList = async (type?: string) => {
|
const getList = async (type?: string) => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
@ -480,15 +458,26 @@ const handleAudit = async () => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const getNameList = () => {
|
const getNameList = (versions) => {
|
||||||
getDictList({ projectId: currentProject.value?.id }).then((res) => {
|
getDictList({ projectId: currentProject.value?.id, versions }).then((res) => {
|
||||||
nameList.value = res.data;
|
nameList.value = res.data;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
// 获取版本号
|
||||||
|
const getVersion = () => {
|
||||||
|
obtainTheVersion({ projectId: currentProject.value?.id }).then((res) => {
|
||||||
|
versionList.value = res.data;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const selectNameVersion = (val, row) => {
|
||||||
|
row.suppliespriceId = undefined;
|
||||||
|
getNameList(val);
|
||||||
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
getList();
|
||||||
getNameList();
|
// getNameList();
|
||||||
|
getVersion();
|
||||||
});
|
});
|
||||||
|
|
||||||
//监听项目id刷新数据
|
//监听项目id刷新数据
|
||||||
|
@ -1,135 +1,119 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="p-2">
|
<div class="p-2">
|
||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<el-card shadow="hover">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-card shadow="hover">
|
||||||
<el-form-item label="上报日期" prop="reportDate">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-date-picker clearable v-model="queryParams.reportDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择上报日期" />
|
<el-form-item label="上报日期" prop="reportDate">
|
||||||
</el-form-item>
|
<el-date-picker clearable v-model="queryParams.reportDate" type="date" value-format="YYYY-MM-DD"
|
||||||
<el-form-item>
|
placeholder="请选择上报日期" />
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
</el-form-item>
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
</el-form>
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
</el-card>
|
</el-form-item>
|
||||||
</div>
|
</el-form>
|
||||||
</transition>
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['out:constructionValue:add']">新增</el-button>
|
<el-button type="primary" plain icon="Plus" @click="handleAdd"
|
||||||
</el-col>
|
v-hasPermi="['out:constructionValue:add']">新增</el-button>
|
||||||
<el-col :span="1.5">
|
</el-col>
|
||||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['out:constructionValue:remove']"
|
<el-col :span="1.5">
|
||||||
>删除</el-button
|
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||||
>
|
v-hasPermi="['out:constructionValue:remove']">删除</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="constructionValueList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="constructionValueList" @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="主键ID" align="center" prop="id" v-if="true" /> -->
|
<!-- <el-table-column label="主键ID" align="center" prop="id" v-if="true" /> -->
|
||||||
<el-table-column label="上报日期" align="center" prop="reportDate" width="180">
|
<el-table-column label="上报日期" align="center" prop="reportDate" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.reportDate, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.reportDate, '{y}-{m}-{d}') }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="项目子项" align="center" prop="subProjectName" />
|
<el-table-column label="项目子项" align="center" prop="subProjectName" />
|
||||||
<el-table-column label="分部工程" align="center" prop="categoryName" />
|
<el-table-column label="分部工程" align="center" prop="categoryName" />
|
||||||
<el-table-column label="分项工程" align="center" prop="progressCategoryName" />
|
<el-table-column label="分项工程" align="center" prop="progressCategoryName" />
|
||||||
<el-table-column label="人工填报数量" align="center" prop="artificialNum" />
|
<el-table-column label="人工填报数量" align="center" prop="artificialNum" />
|
||||||
<el-table-column label="无人机识别数量" align="center" prop="uavNum" />
|
<el-table-column label="无人机识别数量" align="center" prop="uavNum" />
|
||||||
<el-table-column label="确认数量" align="center" prop="confirmNum" />
|
<el-table-column label="确认数量" align="center" prop="confirmNum" />
|
||||||
<el-table-column label="产值" align="center" prop="outValue" />
|
<el-table-column label="产值" align="center" prop="outValue" />
|
||||||
<el-table-column label="流程状态" align="center" prop="status">
|
<el-table-column label="流程状态" align="center" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="wf_business_status" :value="scope.row.auditStatus" />
|
<dict-tag :options="wf_business_status" :value="scope.row.auditStatus" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="210">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="210">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['out:constructionValue:edit']">修改</el-button>
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['out:constructionValue:remove']"
|
v-hasPermi="['out:constructionValue:edit']">修改</el-button>
|
||||||
>删除</el-button
|
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
|
||||||
>
|
v-hasPermi="['out:constructionValue:remove']">删除</el-button>
|
||||||
<el-button link type="primary" icon="Finished" @click="handleAudit(scope.row)" v-hasPermi="['out:constructionValue:remove']"
|
<el-button link type="primary" icon="Finished" @click="handleAudit(scope.row)"
|
||||||
>审核</el-button
|
v-hasPermi="['out:constructionValue:remove']">审核</el-button>
|
||||||
>
|
</template>
|
||||||
</template>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table>
|
||||||
</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"
|
||||||
</el-card>
|
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||||
<!-- 添加或修改施工产值对话框 -->
|
</el-card>
|
||||||
<el-dialog draggable :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<!-- 添加或修改施工产值对话框 -->
|
||||||
<el-form ref="constructionValueFormRef" :model="form" :rules="rules" label-width="120px">
|
<el-dialog draggable :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||||
<el-form-item label="方阵" prop="matrixId" v-if="!form.id">
|
<el-form ref="constructionValueFormRef" :model="form" :rules="rules" label-width="120px">
|
||||||
<el-cascader
|
<el-form-item label="方阵" prop="matrixId" v-if="!form.id">
|
||||||
:options="matrixOptions"
|
<el-cascader :options="matrixOptions" placeholder="请选择"
|
||||||
placeholder="请选择"
|
:props="{ value: 'matrixId', label: 'name', emitPath: false }" v-model="form.matrixId"
|
||||||
:props="{ value: 'matrixId', label: 'name', emitPath: false }"
|
@clear="resetCascader(1)" @change="handleChange" clearable />
|
||||||
v-model="form.matrixId"
|
</el-form-item>
|
||||||
@clear="resetCascader(1)"
|
<el-form-item label="分项工程" prop="progressCategoryId" v-if="!form.id">
|
||||||
@change="handleChange"
|
<el-cascader :options="progressCategoryList" v-model="form.progressCategoryId" @clear="resetCascader()"
|
||||||
clearable
|
:disabled="!form.matrixId" @change="selectTime"
|
||||||
/>
|
:props="{ expandTrigger: 'hover', value: 'id', label: 'name', emitPath: false }" placeholder="请选择分项工程"
|
||||||
</el-form-item>
|
clearable>
|
||||||
<el-form-item label="分项工程" prop="progressCategoryId" v-if="!form.id">
|
</el-cascader>
|
||||||
<el-cascader
|
</el-form-item>
|
||||||
:options="progressCategoryList"
|
<el-form-item label="计划日期" prop="reportDateId" v-if="!form.id">
|
||||||
v-model="form.progressCategoryId"
|
<el-cascader :options="progressTimeList" v-model="form.reportDateId" :disabled="!form.progressCategoryId"
|
||||||
@clear="resetCascader()"
|
:props="{ expandTrigger: 'hover', value: 'id', label: 'date', emitPath: false }" placeholder="请选择计划日期"
|
||||||
:disabled="!form.matrixId"
|
@change="submitTime" clearable>
|
||||||
@change="selectTime"
|
</el-cascader>
|
||||||
:props="{ expandTrigger: 'hover', value: 'id', label: 'name', emitPath: false }"
|
</el-form-item>
|
||||||
placeholder="请选择分项工程"
|
<el-form-item label="人工填报数量" prop="artificialNum">
|
||||||
clearable
|
<el-input v-model="form.artificialNum" placeholder="请输入人工填报数量" disabled />
|
||||||
>
|
</el-form-item>
|
||||||
</el-cascader>
|
<el-form-item label="无人机识别数量" prop="uavNum">
|
||||||
</el-form-item>
|
<el-input v-model="form.uavNum" placeholder="请输入无人机识别数量" disabled />
|
||||||
<el-form-item label="计划日期" prop="reportDateId" v-if="!form.id">
|
</el-form-item>
|
||||||
<el-cascader
|
<el-form-item label="上报日期" prop="planDate">
|
||||||
:options="progressTimeList"
|
<el-date-picker v-model="form.planDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择上报日期" />
|
||||||
v-model="form.reportDateId"
|
</el-form-item>
|
||||||
:disabled="!form.progressCategoryId"
|
<el-form-item label="确认数量" prop="confirmNum">
|
||||||
:props="{ expandTrigger: 'hover', value: 'id', label: 'date', emitPath: false }"
|
<el-input v-model="form.confirmNum" placeholder="请输入确认数量" />
|
||||||
placeholder="请选择计划日期"
|
</el-form-item>
|
||||||
@change="submitTime"
|
<!-- <el-form-item label="产值" prop="outValue">
|
||||||
clearable
|
|
||||||
>
|
|
||||||
</el-cascader>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="人工填报数量" prop="artificialNum">
|
|
||||||
<el-input v-model="form.artificialNum" placeholder="请输入人工填报数量" disabled />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="无人机识别数量" prop="uavNum">
|
|
||||||
<el-input v-model="form.uavNum" placeholder="请输入无人机识别数量" disabled />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="上报日期" prop="planDate">
|
|
||||||
<el-date-picker v-model="form.planDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择上报日期" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="确认数量" prop="confirmNum">
|
|
||||||
<el-input v-model="form.confirmNum" placeholder="请输入确认数量" />
|
|
||||||
</el-form-item>
|
|
||||||
<!-- <el-form-item label="产值" prop="outValue">
|
|
||||||
<el-input v-model="form.outValue" disabled />
|
<el-input v-model="form.outValue" disabled />
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="ConstructionValue" lang="ts">
|
<script setup name="ConstructionValue" lang="ts">
|
||||||
import {
|
import {
|
||||||
@ -292,7 +276,7 @@ const handleAdd = async () => {
|
|||||||
const handleChange = async (value: number) => {
|
const handleChange = async (value: number) => {
|
||||||
queryParams.value.matrixId = value;
|
queryParams.value.matrixId = value;
|
||||||
const res = await listProgressCategory(queryParams.value);
|
const res = await listProgressCategory(queryParams.value);
|
||||||
const data = proxy?.handleTree<ProgressCategoryVO>(res.data, 'id', 'pid');
|
const data = proxy?.handleTree<ProgressCategoryVO>(res.data, 'id', 'parentId');
|
||||||
if (data) {
|
if (data) {
|
||||||
progressCategoryList.value = data;
|
progressCategoryList.value = data;
|
||||||
console.log('🚀 ~ handleChange ~ progressCategoryList.value :', progressCategoryList.value);
|
console.log('🚀 ~ handleChange ~ progressCategoryList.value :', progressCategoryList.value);
|
||||||
|
180
src/views/out/purchase/comm/purchPage.vue
Normal file
180
src/views/out/purchase/comm/purchPage.vue
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-2">
|
||||||
|
<el-card shadow="never">
|
||||||
|
<template #header>
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
<el-table v-loading="loading" :data="monthPlanList" @selection-change="handleSelectionChange">
|
||||||
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
<el-table-column label="名称" align="center" prop="name" />
|
||||||
|
<el-table-column label="规格" align="center" prop="specification" />
|
||||||
|
<el-table-column label="单位" align="center" prop="unit" />
|
||||||
|
<el-table-column label="接收数量" align="center" prop="acceptedQuantity" />
|
||||||
|
<el-table-column label="价格" align="center" prop="unitPrice">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="备注" align="center" prop="remark">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center" prop="remark" v-if="queryParams.type == '1'">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-card>
|
||||||
|
<!-- 添加或修改月度产值计划对话框 -->
|
||||||
|
<el-dialog draggable :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||||
|
<el-form ref="monthPlanFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
|
<el-form-item label="金额" prop="unitPrice">
|
||||||
|
<el-input v-model="form.unitPrice" placeholder="请输入金额" type="number" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup name="MonthPlan" lang="ts">
|
||||||
|
import { purchaseValueA, purchaseValueAup } from '@/api/out/purchase';
|
||||||
|
import { MonthPlanVO } from '@/api/out/monthPlan/types';
|
||||||
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
|
|
||||||
|
import { useUserStoreHook } from '@/store/modules/user';
|
||||||
|
// 获取用户 store
|
||||||
|
const userStore = useUserStoreHook();
|
||||||
|
// 从 store 中获取项目列表和当前选中的项目
|
||||||
|
const currentProject = computed(() => userStore.selectedProject);
|
||||||
|
const monthPlanList = ref<MonthPlanVO[]>([]);
|
||||||
|
const buttonLoading = ref(false);
|
||||||
|
const loading = ref(true);
|
||||||
|
const showSearch = ref(true);
|
||||||
|
const ids = ref<Array<string | number>>([]);
|
||||||
|
const single = ref(true);
|
||||||
|
const multiple = ref(true);
|
||||||
|
const total = ref(0);
|
||||||
|
|
||||||
|
const queryFormRef = ref<ElFormInstance>();
|
||||||
|
const monthPlanFormRef = ref<ElFormInstance>();
|
||||||
|
|
||||||
|
const dialog = reactive<DialogOption>({
|
||||||
|
visible: false,
|
||||||
|
title: ''
|
||||||
|
});
|
||||||
|
|
||||||
|
const initFormData = {
|
||||||
|
id: undefined,
|
||||||
|
projectId: currentProject.value?.id,
|
||||||
|
planValue: undefined,
|
||||||
|
completeValue: undefined,
|
||||||
|
differenceValue: undefined,
|
||||||
|
planMonth: undefined,
|
||||||
|
isDesign: true,
|
||||||
|
type: '1',
|
||||||
|
valueType: undefined,
|
||||||
|
planAuditStatus: undefined,
|
||||||
|
completeAuditStatus: undefined,
|
||||||
|
unitPrice: undefined,
|
||||||
|
};
|
||||||
|
const data = reactive({
|
||||||
|
form: { ...initFormData },
|
||||||
|
queryParams: {
|
||||||
|
projectId: currentProject.value?.id,
|
||||||
|
planValue: undefined,
|
||||||
|
completeValue: undefined,
|
||||||
|
differenceValue: undefined,
|
||||||
|
planMonth: undefined,
|
||||||
|
valueType: undefined,
|
||||||
|
planAuditStatus: undefined,
|
||||||
|
completeAuditStatus: undefined,
|
||||||
|
type: '1',
|
||||||
|
params: {}
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
unitPrice: [{ required: true, message: '金额不能为空', trigger: 'change' }]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const { queryParams, form, rules } = toRefs(data);
|
||||||
|
/** 查询月度产值计划列表 */
|
||||||
|
const getList = async (type?) => {
|
||||||
|
if (type) {
|
||||||
|
queryParams.value.type = type;
|
||||||
|
}
|
||||||
|
loading.value = true;
|
||||||
|
const res = await purchaseValueA({ projectId: currentProject.value?.id, type: queryParams.value.type });
|
||||||
|
monthPlanList.value = res.rows;
|
||||||
|
total.value = res.total;
|
||||||
|
loading.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 取消按钮 */
|
||||||
|
const cancel = () => {
|
||||||
|
reset();
|
||||||
|
dialog.visible = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 表单重置 */
|
||||||
|
const reset = () => {
|
||||||
|
form.value = { ...initFormData };
|
||||||
|
monthPlanFormRef.value?.resetFields();
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 多选框选中数据 */
|
||||||
|
const handleSelectionChange = (selection: MonthPlanVO[]) => {
|
||||||
|
ids.value = selection.map((item) => item.id);
|
||||||
|
single.value = selection.length != 1;
|
||||||
|
multiple.value = !selection.length;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
const handleUpdate = async (row?: MonthPlanVO) => {
|
||||||
|
reset();
|
||||||
|
Object.assign(form.value, row);
|
||||||
|
dialog.visible = true;
|
||||||
|
dialog.title = '修改采购完工产值';
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 提交按钮 */
|
||||||
|
const submitForm = () => {
|
||||||
|
form.value.projectId = currentProject.value?.id;
|
||||||
|
monthPlanFormRef.value?.validate(async (valid: boolean) => {
|
||||||
|
if (valid) {
|
||||||
|
buttonLoading.value = true;
|
||||||
|
form.value.isDesign = true;
|
||||||
|
|
||||||
|
if (form.value.id) {
|
||||||
|
await purchaseValueAup(form.value).finally(() => (buttonLoading.value = false));
|
||||||
|
}
|
||||||
|
proxy?.$modal.msgSuccess('操作成功');
|
||||||
|
dialog.visible = false;
|
||||||
|
await getList();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getList();
|
||||||
|
});
|
||||||
|
|
||||||
|
//监听项目id刷新数据
|
||||||
|
const listeningProject = watch(
|
||||||
|
() => currentProject.value?.id,
|
||||||
|
(nid, oid) => {
|
||||||
|
queryParams.value.projectId = nid;
|
||||||
|
form.value.projectId = nid;
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
listeningProject();
|
||||||
|
});
|
||||||
|
defineExpose({
|
||||||
|
getList
|
||||||
|
});
|
||||||
|
</script>
|
28
src/views/out/purchase/index.vue
Normal file
28
src/views/out/purchase/index.vue
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-2">
|
||||||
|
<el-tabs v-model="activeName" class="demo-tabs" type="border-card" @tab-click="handleClick">
|
||||||
|
<el-tab-pane label="对甲" name="1">
|
||||||
|
<purchPage ref="purchPageRef1"></purchPage>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="对乙" name="2">
|
||||||
|
<purchPage ref="purchPageRef2"></purchPage>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup name="MonthPlan" lang="ts">
|
||||||
|
import { ref, watch, computed } from 'vue';
|
||||||
|
import purchPage from './comm/purchPage.vue';
|
||||||
|
import { on } from 'events';
|
||||||
|
// 引用子组件
|
||||||
|
const activeName = ref('1');
|
||||||
|
const purchPageRef1 = ref<InstanceType<typeof purchPage> | null>(null);
|
||||||
|
const purchPageRef2 = ref<InstanceType<typeof purchPage> | null>(null);
|
||||||
|
const handleClick = (val) => {
|
||||||
|
purchPageRef1.value.getList(val.props.name); //子组件方法
|
||||||
|
};
|
||||||
|
onMounted(() => {
|
||||||
|
purchPageRef1.value?.getList('1'); //初始加载
|
||||||
|
});
|
||||||
|
</script>
|
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="p-2">
|
<div class="p-2">
|
||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||||
|
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
@ -9,7 +10,8 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="status">
|
<el-form-item label="状态" prop="status">
|
||||||
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
|
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
|
||||||
<el-option v-for="dict in project_construction_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in project_construction_status" :key="dict.value" :label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@ -25,7 +27,8 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" plain icon="Plus" @click="handleAdd()" v-hasPermi="['progress:constructionSchedulePlan:add']">新增</el-button>
|
<el-button type="primary" plain icon="Plus" @click="handleAdd()"
|
||||||
|
v-hasPermi="['progress:constructionSchedulePlan:add']">新增</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
|
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
|
||||||
@ -33,17 +36,12 @@
|
|||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
<el-table
|
<el-table ref="constructionSchedulePlanTableRef" v-loading="loading" :data="constructionSchedulePlanList"
|
||||||
ref="constructionSchedulePlanTableRef"
|
row-key="id" :default-expand-all="isExpandAll"
|
||||||
v-loading="loading"
|
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
|
||||||
:data="constructionSchedulePlanList"
|
|
||||||
row-key="id"
|
|
||||||
:default-expand-all="isExpandAll"
|
|
||||||
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
|
||||||
>
|
|
||||||
<!-- <el-table-column label="序号" type="id" /> -->
|
<!-- <el-table-column label="序号" type="id" /> -->
|
||||||
<el-table-column label="节点名称" prop="nodeName" />
|
<el-table-column label="节点名称" prop="nodeName" />
|
||||||
<el-table-column label="对应项目结构" align="center" prop="projectStructure" />
|
<el-table-column label="对应项目结构" align="center" prop="projectStructureName" />
|
||||||
<el-table-column label="预计开始时间" align="center" prop="planStartDate" width="180">
|
<el-table-column label="预计开始时间" align="center" prop="planStartDate" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ parseTime(scope.row.planStartDate, '{y}-{m}-{d}') }}</span>
|
<span>{{ parseTime(scope.row.planStartDate, '{y}-{m}-{d}') }}</span>
|
||||||
@ -73,19 +71,16 @@
|
|||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tooltip content="修改" placement="top">
|
<el-tooltip content="修改" placement="top">
|
||||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['progress:constructionSchedulePlan:edit']" />
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||||
|
v-hasPermi="['progress:constructionSchedulePlan:edit']" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="新增" placement="top">
|
<el-tooltip content="新增" placement="top">
|
||||||
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['progress:constructionSchedulePlan:add']" />
|
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)"
|
||||||
|
v-hasPermi="['progress:constructionSchedulePlan:add']" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="删除" placement="top">
|
<el-tooltip content="删除" placement="top">
|
||||||
<el-button
|
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
|
||||||
link
|
v-hasPermi="['progress:constructionSchedulePlan:remove']" />
|
||||||
type="primary"
|
|
||||||
icon="Delete"
|
|
||||||
@click="handleDelete(scope.row)"
|
|
||||||
v-hasPermi="['progress:constructionSchedulePlan:remove']"
|
|
||||||
/>
|
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -95,48 +90,39 @@
|
|||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||||
<el-form ref="constructionSchedulePlanFormRef" :model="form" :rules="rules" label-width="110px">
|
<el-form ref="constructionSchedulePlanFormRef" :model="form" :rules="rules" label-width="110px">
|
||||||
<el-form-item label="父节点" prop="parentId">
|
<el-form-item label="父节点" prop="parentId">
|
||||||
<el-tree-select
|
<el-tree-select v-model="form.parentId" :data="constructionSchedulePlanOptions"
|
||||||
v-model="form.parentId"
|
:props="{ value: 'id', label: 'nodeName', children: 'children' }" value-key="id" placeholder="请选择父节点"
|
||||||
:data="constructionSchedulePlanOptions"
|
check-strictly />
|
||||||
:props="{ value: 'id', label: 'nodeName', children: 'children' }"
|
|
||||||
value-key="id"
|
|
||||||
placeholder="请选择父节点"
|
|
||||||
check-strictly
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="节点名称" prop="nodeName">
|
<el-form-item label="节点名称" prop="nodeName">
|
||||||
<el-input v-model="form.nodeName" placeholder="请输入节点名称" />
|
<el-input v-model="form.nodeName" placeholder="请输入节点名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="对应项目结构" prop="projectStructure">
|
<el-form-item label="对应项目结构" prop="projectStructure">
|
||||||
<el-input v-model="form.projectStructure" placeholder="请输入对应项目结构" />
|
<el-tree-select v-model="form.projectStructure" :data="ProjectStructureList" @node-click="handleCheckChange"
|
||||||
|
:props="{ value: 'id', label: 'name', children: 'children' }" value-key="id" placeholder="请选择项目结构"
|
||||||
|
check-strictly />
|
||||||
|
<!-- <el-input v-model="form.projectStructure" placeholder="请输入对应项目结构" /> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="预计开始时间" prop="planStartDate">
|
<el-form-item label="预计开始时间" prop="planStartDate">
|
||||||
<el-date-picker clearable v-model="form.planStartDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择预计开始时间" />
|
<el-date-picker clearable v-model="form.planStartDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
placeholder="选择预计开始时间" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="预计结束时间" prop="planEndDate">
|
<el-form-item label="预计结束时间" prop="planEndDate">
|
||||||
<el-date-picker clearable v-model="form.planEndDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择预计结束时间" />
|
<el-date-picker clearable v-model="form.planEndDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
placeholder="选择预计结束时间" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实际开始时间" prop="practicalStartDate">
|
<el-form-item label="实际开始时间" prop="practicalStartDate">
|
||||||
<el-date-picker
|
<el-date-picker clearable v-model="form.practicalStartDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
clearable
|
placeholder="选择实际开始时间" />
|
||||||
v-model="form.practicalStartDate"
|
|
||||||
type="datetime"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
placeholder="选择实际开始时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="实际结束时间" prop="practicalEndDate">
|
<el-form-item label="实际结束时间" prop="practicalEndDate">
|
||||||
<el-date-picker
|
<el-date-picker clearable v-model="form.practicalEndDate" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
clearable
|
placeholder="选择实际结束时间" />
|
||||||
v-model="form.practicalEndDate"
|
|
||||||
type="datetime"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
placeholder="选择实际结束时间"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="status">
|
<el-form-item label="状态" prop="status">
|
||||||
<el-select v-model="form.status" placeholder="请选择状态">
|
<el-select v-model="form.status" placeholder="请选择状态">
|
||||||
<el-option v-for="dict in project_construction_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in project_construction_status" :key="dict.value" :label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
@ -159,7 +145,7 @@ import {
|
|||||||
getConstructionSchedulePlan,
|
getConstructionSchedulePlan,
|
||||||
delConstructionSchedulePlan,
|
delConstructionSchedulePlan,
|
||||||
addConstructionSchedulePlan,
|
addConstructionSchedulePlan,
|
||||||
updateConstructionSchedulePlan
|
updateConstructionSchedulePlan, getProjectStructure
|
||||||
} from '@/api/progress/constructionSchedulePlan';
|
} from '@/api/progress/constructionSchedulePlan';
|
||||||
import {
|
import {
|
||||||
ConstructionSchedulePlanVO,
|
ConstructionSchedulePlanVO,
|
||||||
@ -181,6 +167,7 @@ const currentProject = computed(() => userStore.selectedProject);
|
|||||||
const { project_construction_status } = toRefs<any>(proxy?.useDict('project_construction_status'));
|
const { project_construction_status } = toRefs<any>(proxy?.useDict('project_construction_status'));
|
||||||
|
|
||||||
const constructionSchedulePlanList = ref<ConstructionSchedulePlanVO[]>([]);
|
const constructionSchedulePlanList = ref<ConstructionSchedulePlanVO[]>([]);
|
||||||
|
const ProjectStructureList = ref([]);
|
||||||
const constructionSchedulePlanOptions = ref<ConstructionSchedulePlanOption[]>([]);
|
const constructionSchedulePlanOptions = ref<ConstructionSchedulePlanOption[]>([]);
|
||||||
const buttonLoading = ref(false);
|
const buttonLoading = ref(false);
|
||||||
const showSearch = ref(true);
|
const showSearch = ref(true);
|
||||||
@ -196,7 +183,7 @@ const dialog = reactive<DialogOption>({
|
|||||||
title: ''
|
title: ''
|
||||||
});
|
});
|
||||||
|
|
||||||
const initFormData: ConstructionSchedulePlanForm = {
|
const initFormData = {
|
||||||
id: undefined,
|
id: undefined,
|
||||||
projectId: currentProject.value?.id,
|
projectId: currentProject.value?.id,
|
||||||
parentId: undefined,
|
parentId: undefined,
|
||||||
@ -207,7 +194,9 @@ const initFormData: ConstructionSchedulePlanForm = {
|
|||||||
practicalStartDate: undefined,
|
practicalStartDate: undefined,
|
||||||
practicalEndDate: undefined,
|
practicalEndDate: undefined,
|
||||||
status: undefined,
|
status: undefined,
|
||||||
remark: undefined
|
remark: undefined,
|
||||||
|
projectStructureName: undefined
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const data = reactive<PageData<ConstructionSchedulePlanForm, ConstructionSchedulePlanQuery>>({
|
const data = reactive<PageData<ConstructionSchedulePlanForm, ConstructionSchedulePlanQuery>>({
|
||||||
@ -236,13 +225,21 @@ const getList = async () => {
|
|||||||
loading.value = true;
|
loading.value = true;
|
||||||
const res = await listConstructionSchedulePlan(queryParams.value);
|
const res = await listConstructionSchedulePlan(queryParams.value);
|
||||||
const data = proxy?.handleTree<ConstructionSchedulePlanVO>(res.data, 'id', 'parentId');
|
const data = proxy?.handleTree<ConstructionSchedulePlanVO>(res.data, 'id', 'parentId');
|
||||||
console.log('🚀 ~ getList ~ data:', data);
|
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
constructionSchedulePlanList.value = data;
|
constructionSchedulePlanList.value = data;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/** 查询施工进度计划列表 */
|
||||||
|
const getProjectStructureList = async () => {
|
||||||
|
const res = await getProjectStructure(currentProject.value?.id);
|
||||||
|
ProjectStructureList.value = [res.data];
|
||||||
|
console.log(ProjectStructureList.value);
|
||||||
|
};
|
||||||
|
/** 查询施工进度计划列表 */
|
||||||
|
const handleCheckChange = (val) => {
|
||||||
|
form.value.projectStructureName = val.name;
|
||||||
|
};
|
||||||
|
|
||||||
/** 查询施工进度计划下拉树结构 */
|
/** 查询施工进度计划下拉树结构 */
|
||||||
const getTreeselect = async () => {
|
const getTreeselect = async () => {
|
||||||
@ -343,6 +340,7 @@ const handleDelete = async (row: ConstructionSchedulePlanVO) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
getProjectStructureList();
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="p-2">
|
<div class="p-2">
|
||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||||
|
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
<div v-show="showSearch" class="mb-[10px]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
@ -8,11 +9,13 @@
|
|||||||
<el-input v-model="queryParams.deptName" placeholder="请输入部门名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.deptName" placeholder="请输入部门名称" clearable @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="类别编码" prop="deptCategory">
|
<el-form-item label="类别编码" prop="deptCategory">
|
||||||
<el-input v-model="queryParams.deptCategory" placeholder="请输入类别编码" clearable style="width: 240px" @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.deptCategory" placeholder="请输入类别编码" clearable style="width: 240px"
|
||||||
|
@keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="状态" prop="status">
|
<el-form-item label="状态" prop="status">
|
||||||
<el-select v-model="queryParams.status" placeholder="部门状态" clearable>
|
<el-select v-model="queryParams.status" placeholder="部门状态" clearable>
|
||||||
<el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label"
|
||||||
|
:value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
@ -28,7 +31,8 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button v-hasPermi="['system:dept:add']" type="primary" plain icon="Plus" @click="handleAdd()">新增 </el-button>
|
<el-button v-hasPermi="['system:dept:add']" type="primary" plain icon="Plus" @click="handleAdd()">新增
|
||||||
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
|
<el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button>
|
||||||
@ -37,14 +41,8 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table
|
<el-table ref="deptTableRef" v-loading="loading" :data="deptList" row-key="deptId"
|
||||||
ref="deptTableRef"
|
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }" :default-expand-all="isExpandAll">
|
||||||
v-loading="loading"
|
|
||||||
:data="deptList"
|
|
||||||
row-key="deptId"
|
|
||||||
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
|
||||||
:default-expand-all="isExpandAll"
|
|
||||||
>
|
|
||||||
<el-table-column prop="deptName" label="部门名称" width="260"></el-table-column>
|
<el-table-column prop="deptName" label="部门名称" width="260"></el-table-column>
|
||||||
<el-table-column prop="deptCategory" align="center" label="类别编码" width="200"></el-table-column>
|
<el-table-column prop="deptCategory" align="center" label="类别编码" width="200"></el-table-column>
|
||||||
<el-table-column prop="deptType" align="center" label="部门类型" width="200">
|
<el-table-column prop="deptType" align="center" label="部门类型" width="200">
|
||||||
@ -66,13 +64,16 @@
|
|||||||
<el-table-column fixed="right" align="center" label="操作">
|
<el-table-column fixed="right" align="center" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tooltip content="修改" placement="top">
|
<el-tooltip content="修改" placement="top">
|
||||||
<el-button v-hasPermi="['system:dept:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)" />
|
<el-button v-hasPermi="['system:dept:edit']" link type="primary" icon="Edit"
|
||||||
|
@click="handleUpdate(scope.row)" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="新增" placement="top" v-if="scope.row.deptType != '2' && scope.row.deptType != '4'">
|
<el-tooltip content="新增" placement="top" v-if="scope.row.deptType != '2' && scope.row.deptType != '5'">
|
||||||
<el-button v-hasPermi="['system:dept:add']" link type="primary" icon="Plus" @click="handleAdd(scope.row)" />
|
<el-button v-hasPermi="['system:dept:add']" link type="primary" icon="Plus"
|
||||||
|
@click="handleAdd(scope.row)" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="删除" placement="top">
|
<el-tooltip content="删除" placement="top">
|
||||||
<el-button v-hasPermi="['system:dept:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)" />
|
<el-button v-hasPermi="['system:dept:remove']" link type="primary" icon="Delete"
|
||||||
|
@click="handleDelete(scope.row)" />
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -84,14 +85,9 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col v-if="form.parentId !== 0" :span="24">
|
<el-col v-if="form.parentId !== 0" :span="24">
|
||||||
<el-form-item label="上级部门" prop="parentId">
|
<el-form-item label="上级部门" prop="parentId">
|
||||||
<el-tree-select
|
<el-tree-select v-model="form.parentId" :data="deptOptions"
|
||||||
v-model="form.parentId"
|
:props="{ value: 'deptId', label: 'deptName', children: 'children' }" value-key="deptId"
|
||||||
:data="deptOptions"
|
placeholder="选择上级部门" check-strictly />
|
||||||
:props="{ value: 'deptId', label: 'deptName', children: 'children' }"
|
|
||||||
value-key="deptId"
|
|
||||||
placeholder="选择上级部门"
|
|
||||||
check-strictly
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@ -112,7 +108,8 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="负责人" prop="leader">
|
<el-form-item label="负责人" prop="leader">
|
||||||
<el-select v-model="form.leader" placeholder="请选择负责人">
|
<el-select v-model="form.leader" placeholder="请选择负责人">
|
||||||
<el-option v-for="item in deptUserList" :key="item.userId" :label="item.userName" :value="item.userId" />
|
<el-option v-for="item in deptUserList" :key="item.userId" :label="item.userName"
|
||||||
|
:value="item.userId" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -129,7 +126,8 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="部门状态">
|
<el-form-item label="部门状态">
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.status">
|
||||||
<el-radio v-for="dict in sys_normal_disable" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
|
<el-radio v-for="dict in sys_normal_disable" :key="dict.value" :value="dict.value">{{ dict.label
|
||||||
|
}}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -140,14 +138,14 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" v-if="form.deptType == '3'">
|
<el-col :span="12" v-if="form.deptType == '4'">
|
||||||
<el-form-item label="所属项目" prop="projectId">
|
<el-form-item label="所属项目" prop="projectId">
|
||||||
<el-select v-model="form.projectId" placeholder="请选择所属项目">
|
<el-select v-model="form.projectId" placeholder="请选择所属项目">
|
||||||
<el-option v-for="item in projectList" :key="item.id" :label="item.projectName" :value="item.id" />
|
<el-option v-for="item in projectList" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" v-if="form.deptType == '4'">
|
<el-col :span="12" v-if="form.deptType == '5'">
|
||||||
<el-form-item label="分包单位" prop="contractorId">
|
<el-form-item label="分包单位" prop="contractorId">
|
||||||
<el-select v-model="form.contractorId" placeholder="请选择分包单位">
|
<el-select v-model="form.contractorId" placeholder="请选择分包单位">
|
||||||
<el-option v-for="item in contractorList" :key="item.id" :label="item.name" :value="item.id" />
|
<el-option v-for="item in contractorList" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
@ -339,10 +337,10 @@ const handleUpdate = async (row: DeptVO) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const changeProject = async (val: any) => {
|
const changeProject = async (val: any) => {
|
||||||
if (val == '3' && (!projectList.value || !projectList.value.length)) {
|
if (val == '4' && (!projectList.value || !projectList.value.length)) {
|
||||||
const res = await getDeptList();
|
const res = await getDeptList();
|
||||||
projectList.value = res.data;
|
projectList.value = res.data;
|
||||||
} else if (val == '4' && (!contractorList.value || !contractorList.value.length)) {
|
} else if (val == '5' && (!contractorList.value || !contractorList.value.length)) {
|
||||||
const res = await optionProjectSelect(form.value.rowProjectId);
|
const res = await optionProjectSelect(form.value.rowProjectId);
|
||||||
contractorList.value = res;
|
contractorList.value = res;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user