This commit is contained in:
zmj 2024-03-09 14:59:26 +08:00
parent 8f3b76ad38
commit 838b9fd21d
27 changed files with 509 additions and 449 deletions

View File

@ -1,9 +1,8 @@
<template>
<el-upload
accept="doc, docx, xls, xlsx, ppt, pptx, pdf, txt, zip, rar, tar, jpg, png, gif, jpeg, webp, wmv, avi, mpg, mpeg, 3gp, mov, mp4, flv, f4v, rmvb, mkv"
class="upload-demo" :show-file-list="false" aria-hidden="true" :headers="{ Token: userStore?.token }"
:action="base_url + '/upload/file'" :on-success="handleAvatarSuccess" ref="upload">
:action="base_url + '/upload/file'" :on-success="handleAvatarSuccess" ref="upload" :limit="5" multiple>
<el-button type="primary">
上传
</el-button>
@ -11,7 +10,7 @@
<div>
<div v-for="(item, index) in annex" style="margin-left: 5px;display: block;">
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{
item.name }}</a>
item.name }}</a>
<span style="cursor: pointer;margin-left: 5px;" @click="delFile(index)">x</span>
</div>
</div>

View File

@ -21,6 +21,8 @@ import { apiSupervisionMaterialEntryLists } from '@/api/supervision_material_ent
import { apiSupervisionParticipatingUnitsQualificationsLists } from '@/api/supervision_participating_units_qualifications'
import { apiCostApprovedProjectLists } from '@/api/cost_approved_project'
import { apiCostProjectLists } from '@/api/cost_project'
import { apiTaskTypeLists } from '@/api/task_type'
export const supervision_project:Iconfig = {
@ -283,7 +285,6 @@ export const cost_approved_projects:Iconfig = {
{ end_date: "合同计划结束日期" },
{ project_money: "工程总投资" },
{ business_nature_text: "业务性质" },
{ industry_nature: "行业性质" },
{ dept: "签订部门" },
{ fund_sources_text: "资金来源" },
{ project_director: "项目总监" },
@ -324,6 +325,29 @@ export const cost_project:Iconfig = {
]
}
export const task_type:Iconfig = {
fetchFn: apiTaskTypeLists,
dictData:"superior_category",
serchList: [
{
label: '任务名称',
value: "unit_name"
},
{
label:"上级类别",
value:'superior_sort',
select:'superior_category'
},
],
tableList: [
{ dataid: "标识" },
{ num: "任务编号" },
{ name: "任务名称" },
{ level: "任务级次" },
{ remarks: "备注" },
]
}

View File

@ -18,8 +18,6 @@
{{ formData.current_check_user }}
</el-descriptions-item>
<el-descriptions-item label="抄送人" label-align="left" align="left" label-class-name="my-label">
{{ showFlow() }}
{{ showDel() }}
{{ formData.copy_user }}
</el-descriptions-item>
</el-descriptions>
@ -34,13 +32,11 @@
<div class="steps-cls">
<el-steps direction="vertical" :active="formData.record.length" :align-center="true" :space="50"
style="margin-top: 20px">
<el-step :title="item.check_time + ' ' + item.title" v-for="(item, index) in formData.record"
:key="index" />
<el-step :title="item.check_time + ' ' + item.title"
v-for="(item, index) in formData.record" :key="index" />
</el-steps>
</div>
</el-descriptions-item>
<div>
<el-descriptions-item label="操作" label-align="left" align="left"
v-if="formData?.current_check_user_ids?.includes(String(userInfo.id)) && formData.check_status != 3 || formData?.check_status == 0 && formData.create_user == userInfo.id">

View File

@ -31,18 +31,18 @@
<el-input v-model="formData.person" clearable placeholder="请输入登记人" />
</el-form-item>
<el-form-item label="备注" prop="tips">
<el-input v-model="formData.tips" clearable placeholder="请输入备注" />
<el-input v-model="formData.tips" clearable placeholder="请输入备注" type="textarea" />
</el-form-item>
<el-form-item label="多行文本框1" prop="fd_1">
<el-input class="flex-1" v-model="formData.fd_1" type="textarea" rows="4" clearable
<el-input class="flex-1" v-model="formData.fd_1" type="textarea" clearable
placeholder="请输入多行文本框1" />
</el-form-item>
<el-form-item label="多行文本框2" prop="fd_2">
<el-input class="flex-1" v-model="formData.fd_2" type="textarea" rows="4" clearable
<el-input class="flex-1" v-model="formData.fd_2" type="textarea" clearable
placeholder="请输入多行文本框2" />
</el-form-item>
<el-form-item label="多行文本框3" prop="fd_3">
<el-input class="flex-1" v-model="formData.fd_3" type="textarea" rows="4" clearable
<el-input class="flex-1" v-model="formData.fd_3" type="textarea" clearable
placeholder="请输入多行文本框3" />
</el-form-item>
<el-dialog v-model="showDialog" title="选择项目" width="70%">

View File

@ -68,7 +68,12 @@
<el-table-column label="合同计划结束日期" prop="end_date" show-overflow-tooltip />
<el-table-column label="工程总投资" prop="project_money" show-overflow-tooltip />
<el-table-column label="业务性质" prop="business_nature_text" show-overflow-tooltip />
<el-table-column label="行业性质" prop="industry_nature" show-overflow-tooltip />
<el-table-column label="行业性质" prop="industry_nature" show-overflow-tooltip>
<template #default="{ row }">
<dict-value :options="dictData.cost_consultation_industry_nature"
:value="row.industry_nature" />
</template>
</el-table-column>
<el-table-column label="签订部门" prop="dept" show-overflow-tooltip />
<el-table-column label="资金来源" prop="fund_sources_text" show-overflow-tooltip />
<el-table-column label="建设区域" prop="const_area_text" show-overflow-tooltip />
@ -86,12 +91,12 @@
</el-button>
<el-button v-perms="['cost_project.cost_approved_project/edit']" type='warning' link>
<router-link :to="{
path: '/cost_consultation/cost_consultation_project/cost_project',
query: {
contractId: row.id,
contractName: row.contract_name
}
}">
path: '/cost_consultation/cost_consultation_project/cost_project',
query: {
contractId: row.id,
contractName: row.contract_name
}
}">
生成项目
</router-link>
</el-button>
@ -180,4 +185,3 @@ const handleCreation = async (id: number | any[]) => {
}
getLists()
</script>

View File

@ -273,7 +273,7 @@ const formData = reactive({
generalize: '',
note: '',
remark: '',
annex: '',
annex: [],
})
//
const getlist = () => {
@ -385,17 +385,11 @@ const setFormData = async (data: Record<any, any>) => {
formData.province = Number(formData.province)
formData.city = Number(formData.city)
formData.depar = Number(formData.depar)
formData.contract_name = data.contract.contract_name
getCityList();
deptrmt(formData.org_id)
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiCostProjectDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
@ -453,6 +447,5 @@ getProvinceList();
defineExpose({
open,
setFormData,
getDetail
})
</script>

View File

@ -43,7 +43,7 @@
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="关联合同" prop="contract_id" show-overflow-tooltip />
<el-table-column label="关联合同" prop="contract.contract_name" show-overflow-tooltip />
<el-table-column label="咨询类型" prop="types" show-overflow-tooltip>
<template #default="{ row }">
<dict-value :options="dictData.consultation_type" :value="row.types" />
@ -59,7 +59,6 @@
<el-table-column label="计划开始日期" prop="starting" show-overflow-tooltip />
<el-table-column label="计划结束日期" prop="endtime" show-overflow-tooltip />
<el-table-column label="计划工期(天)" prop="jhgq" show-overflow-tooltip />
<el-table-column label="项目所属部门" prop="depar" show-overflow-tooltip />
<el-table-column label="项目负责人" prop="principal" show-overflow-tooltip />
<el-table-column label="项目相关人员" prop="person" show-overflow-tooltip />
<el-table-column label="项目总投资(万元)" prop="invest" show-overflow-tooltip />

View File

@ -31,7 +31,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="委托单位" prop="wt_unit">
<el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" />
<el-input v-model="formData.wt_unit" clearable placeholder="请输入委托单位" readonly />
</el-form-item>
</el-col>
<el-col :span="8">
@ -185,6 +185,7 @@ const customEvent = (e: any) => {
formData.project_id = e.id
formData.project_name = e.project_name
formData.project_num = e.project_num
formData.wt_unit = e.aunit
showDialog.value = false
}

View File

@ -6,7 +6,7 @@
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
</el-form-item>
<el-form-item label="项目名称" prop="project">
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目编号" prop="project_num">
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
@ -88,7 +88,7 @@ const showEdit = ref(false)
//
const queryParams = reactive({
num: '',
project: '',
project_name: '',
project_num: '',
datas: '',
})
@ -135,4 +135,3 @@ const handleDelete = async (id: number | any[]) => {
getLists()
</script>

View File

@ -62,6 +62,12 @@ import Popup from '@/components/popup/index.vue'
import { apiManageInfoReportAdd, apiManageInfoReportEdit, apiManageInfoReportDetail } from '@/api/manage_info_report'
import { manage_project } from "@/components/dialogTable/dialogTableConfig"
import type { PropType } from 'vue'
import { timeFormat } from '@/utils/util'
import useUserStore from "@/stores/modules/user";
const userStore = useUserStore().userInfo;
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -75,7 +81,6 @@ const mode = ref('add')
const showDialog = ref(false)
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑项目管理--项目信息上报' : '新增项目管理--项目信息上报'
@ -96,7 +101,6 @@ const formData = reactive({
id: '',
project_id: '',
project_name: "",
create_time: "",
abstract: '',
happen_date: '',
severity: '',
@ -105,7 +109,8 @@ const formData = reactive({
opinions: '',
giver: '',
annex: [],
create_user: '',
create_user: userStore.account,
create_time: timeFormat('', 'yyyy-mm-dd hh:MM:ss'),
})
const customEvent = (e: any) => {
@ -115,6 +120,11 @@ const customEvent = (e: any) => {
}
// (function () {
// console.log('');
// })();
//
const formRules = reactive<any>({
project_id: [{

View File

@ -43,6 +43,11 @@ import Popup from '@/components/popup/index.vue'
import { apiManageMeteredPaymentAdd, apiManageMeteredPaymentEdit, apiManageMeteredPaymentDetail } from '@/api/manage_metered_payment'
import { manage_project } from "@/components/dialogTable/dialogTableConfig"
import type { PropType } from 'vue'
import { timeFormat } from '@/utils/util'
import useUserStore from "@/stores/modules/user";
const userStore = useUserStore().userInfo;
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -70,8 +75,8 @@ const formData = reactive({
month_amount: '',
month_pay: '',
remark: '',
create_user: '',
create_time: "",
create_user: userStore.account,
create_time: timeFormat('', 'yyyy-mm-dd hh:MM:ss'),
})
const customEvent = (e: any) => {

View File

@ -188,8 +188,15 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiManageProjectAdd, apiManageProjectEdit, apiManageProjectDetail } from '@/api/manage_project'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
import { timeFormat } from '@/utils/util'
import useUserStore from "@/stores/modules/user";
const userStore = useUserStore().userInfo;
// create_user: userStore.account,
// create_time: timeFormat('', 'yyyy-mm-dd hh:MM:ss'),
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -245,8 +252,8 @@ const formData = reactive({
contract: '',
part_a_unit: '',
annex: [],
create_user: '',
create_time: "",
create_user: userStore.account,
create_time: timeFormat('', 'yyyy-mm-dd hh:MM:ss'),
})

View File

@ -3,25 +3,37 @@
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-row>
<el-col :span="8">
<el-form-item label="单据编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单据编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item>
<el-form-item label="项目名称" prop="project">
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item>
<el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
</el-form-item>
<el-form-item label="登记人" prop="djr">
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
</el-form-item>
<el-form-item label="登记日期" prop="djrq">
<el-date-picker class="flex-1 !flex" v-model="formData.djrq" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="项目名称" prop="project">
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project_num" clearable placeholder="请输入项目编号" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记人" prop="djr">
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记日期" prop="djrq">
<el-date-picker class="flex-1 !flex" v-model="formData.djrq" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<dialogTable :config="cost_project" @customEvent="customEvent">
</dialogTable>
@ -35,7 +47,7 @@
<el-table :data="formData.project_change_visa_content">
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
<template #default="{ row }">
<el-button @click="handleAdd(row)">+</el-button>
<el-button @click="handleAdd()">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
</template>
</el-table-column>

View File

@ -6,7 +6,7 @@
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
</el-form-item>
<el-form-item label="项目名称" prop="project">
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目编号" prop="project_num">
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
@ -21,14 +21,15 @@
</el-form>
</el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['project_process_management.project_change_visa/add']" type="primary" @click="handleAdd">
<el-button v-perms="['project_process_management.project_change_visa/add']" type="primary"
@click="handleAdd">
<template #icon>
<icon name="el-icon-Plus" />
</template>
新增
</el-button>
<el-button v-perms="['project_process_management.project_change_visa/delete']" :disabled="!selectData.length"
@click="handleDelete(selectData)">
<el-button v-perms="['project_process_management.project_change_visa/delete']"
:disabled="!selectData.length" @click="handleDelete(selectData)">
删除
</el-button>
<div class="mt-4">
@ -61,8 +62,8 @@
<el-table-column label="登记日期" prop="djrq" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button v-perms="['project_process_management.project_change_visa/edit']" type="primary" link
@click="handleEdit(row)">
<el-button v-perms="['project_process_management.project_change_visa/edit']" type="primary"
link @click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['project_process_management.project_change_visa/delete']" type="danger"
@ -97,7 +98,7 @@ const showEdit = ref(false)
//
const queryParams = reactive({
num: '',
project: '',
project_name: '',
project_num: '',
})
@ -143,4 +144,3 @@ const handleDelete = async (id: number | any[]) => {
getLists()
</script>

View File

@ -27,13 +27,12 @@
<el-input class="w-[280px]" v-model="queryParams.reviewer" clearable placeholder="请输入审核人" />
</el-form-item>
<el-form-item label="施工单位申报值" prop="declared_value">
<el-input class="w-[280px]" v-model="queryParams.declared_value" clearable placeholder="请输入施工单位申报值" />
<el-input class="w-[280px]" v-model="queryParams.declared_value" clearable
placeholder="请输入施工单位申报值" />
</el-form-item>
<el-form-item label="咨询单位测算值" prop="calculated_value">
<el-input class="w-[280px]" v-model="queryParams.calculated_value" clearable placeholder="请输入咨询单位测算值" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input class="w-[280px]" v-model="queryParams.remark" clearable placeholder="请输入备注" />
<el-input class="w-[280px]" v-model="queryParams.calculated_value" clearable
placeholder="请输入咨询单位测算值" />
</el-form-item>
<el-form-item>
@ -45,13 +44,13 @@
</el-form>
</el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['project_process_management.project_change_visa_content/add']" type="primary"
<!-- <el-button v-perms="['project_process_management.project_change_visa_content/add']" type="primary"
@click="handleAdd">
<template #icon>
<icon name="el-icon-Plus" />
</template>
新增
</el-button>
新增
</el-button> -->
<el-button v-perms="['project_process_management.project_change_visa_content/delete']"
:disabled="!selectData.length" @click="handleDelete(selectData)">
删除
@ -163,4 +162,3 @@ const handleDelete = async (id: number | any[]) => {
getLists()
</script>

View File

@ -6,7 +6,7 @@
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
</el-form-item>
<el-form-item label="项目名称" prop="project">
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目编号" prop="project_num">
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
@ -80,7 +80,8 @@
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button v-perms="['project_commission/edit']" type="primary" link @click="handleEdit(row)">
<el-button v-perms="['project_commission/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['project_commission/delete']" type="danger" link
@ -115,7 +116,7 @@ const showEdit = ref(false)
//
const queryParams = reactive({
num: '',
project: '',
project_name: '',
project_num: '',
})
@ -161,4 +162,3 @@ const handleDelete = async (id: number | any[]) => {
getLists()
</script>

View File

@ -1,57 +1,55 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
<!-- <el-form-item label="主表标识" prop="project_commission_dataid">
<el-input v-model="formData.project_commission_dataid" clearable placeholder="请输入主表标识" />
</el-form-item> -->
<el-form-item label="工程师" prop="engineer">
<el-input v-model="formData.engineer" clearable placeholder="请输入工程师" @click="userclick" />
</el-form-item>
<!-- <el-form-item label="工程师id" prop="engineer_id">
<el-input v-model="formData.engineer_id" clearable placeholder="请输入工程师id" />
</el-form-item> -->
<el-form-item label="任务名称" prop="task_name">
<el-input v-model="formData.task_name" clearable placeholder="请输入任务名称" />
</el-form-item>
<el-form-item label="任务类型" prop="task_type">
<el-select class="flex-1" v-model="formData.task_type" clearable placeholder="请选择任务类型">
<el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="专业类型" prop="professional_type">
<el-select class="flex-1" v-model="formData.professional_type" clearable placeholder="请选择专业类型">
<el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="造价金额" prop="zj_amount">
<el-input v-model="formData.zj_amount" clearable placeholder="请输入造价金额" />
</el-form-item>
<el-form-item label="收款金额" prop="sk_amount">
<el-input v-model="formData.sk_amount" clearable placeholder="请输入收款金额" />
</el-form-item>
<el-form-item label="提成比例(%" prop="tc_rate">
<el-input v-model="formData.tc_rate" clearable placeholder="请输入提成比例(%" />
</el-form-item>
<el-form-item label="应提成金额" prop="tc_amount">
<el-input v-model="formData.tc_amount" clearable placeholder="请输入应提成金额" />
</el-form-item>
<el-form-item label="本次支付金额" prop="pay_amount">
<el-input v-model="formData.pay_amount" clearable placeholder="请输入本次支付金额" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
<el-form-item label="其他增减费用" prop="other_fee">
<el-input v-model="formData.other_fee" clearable placeholder="请输入其他增减费用" />
</el-form-item>
<div v-if="showDialog3">
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
</el-form>
</popup>
</div>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
<el-form-item label="工程师" prop="engineer">
<el-input v-model="formData.engineer" clearable placeholder="请输入工程师" @click="userclick" />
</el-form-item>
<el-form-item label="任务名称" prop="task_name">
<el-input v-model="formData.task_name" clearable placeholder="请输入任务名称" />
</el-form-item>
<el-form-item label="任务类型" prop="task_type">
<el-select class="flex-1" v-model="formData.task_type" clearable placeholder="请选择任务类型">
<el-option v-for="(item, index) in dictData.task_type" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="专业类型" prop="professional_type">
<el-select class="flex-1" v-model="formData.professional_type" clearable placeholder="请选择专业类型">
<el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="造价金额" prop="zj_amount">
<el-input v-model="formData.zj_amount" clearable placeholder="请输入造价金额" type="number" />
</el-form-item>
<el-form-item label="收款金额" prop="sk_amount">
<el-input v-model="formData.sk_amount" clearable placeholder="请输入收款金额" type="number" />
</el-form-item>
<el-form-item label="提成比例(%" prop="tc_rate">
<el-input v-model="formData.tc_rate" clearable placeholder="请输入提成比例(%" type="number" />
</el-form-item>
<el-form-item label="应提成金额" prop="tc_amount">
<el-input v-model="formData.tc_amount" clearable placeholder="请输入应提成金额" type="number" />
</el-form-item>
<el-form-item label="本次支付金额" prop="pay_amount">
<el-input v-model="formData.pay_amount" clearable placeholder="请输入本次支付金额" type="number" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
</el-form-item>
<el-form-item label="其他增减费用" prop="other_fee">
<el-input v-model="formData.other_fee" clearable placeholder="请输入其他增减费用" />
</el-form-item>
<div v-if="showDialog3">
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
</el-form>
</popup>
</div>
</template>
<script lang="ts" setup name="projectCommissionDetailEdit">
@ -61,10 +59,10 @@ import { apiProjectCommissionDetailAdd, apiProjectCommissionDetailEdit, } from '
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
@ -76,40 +74,40 @@ const personnel = ref<any>()
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑提成明细' : '新增提成明细'
return mode.value == 'edit' ? '编辑提成明细' : '新增提成明细'
})
//
const formData = reactive({
id: '',
project_commission_dataid: '',
engineer: '',
engineer_id: '',
task_name: '',
task_type: '',
professional_type: '',
zj_amount: '',
sk_amount: '',
tc_rate: '',
tc_amount: '',
pay_amount: '',
remark: '',
other_fee: '',
id: '',
project_commission_dataid: '',
engineer: '',
engineer_id: '',
task_name: '',
task_type: '',
professional_type: '',
zj_amount: '',
sk_amount: '',
tc_rate: '',
tc_amount: '',
pay_amount: '',
remark: '',
other_fee: '',
})
//
const userclick = async (e: any) => {
showDialog3.value = true
await nextTick()
personnel.value.open()
showDialog3.value = true
await nextTick()
personnel.value.open()
}
//
const submituser = (e: any) => {
formData.engineer = e.name
formData.engineer_id = e.id
showDialog3.value = false
formData.engineer = e.name
formData.engineer_id = e.id
showDialog3.value = false
}
//
@ -120,51 +118,51 @@ const formRules = reactive<any>({
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
}
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiProjectCommissionDetailDetail({
id: row.id
})
setFormData(data)
const data = await apiProjectCommissionDetailDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? await apiProjectCommissionDetailEdit(data)
: await apiProjectCommissionDetailAdd(data)
popupRef.value?.close()
emit('success')
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? await apiProjectCommissionDetailEdit(data)
: await apiProjectCommissionDetailAdd(data)
popupRef.value?.close()
emit('success')
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
emit('close')
}
defineExpose({
open,
setFormData,
getDetail
open,
setFormData,
getDetail
})
</script>

View File

@ -24,13 +24,13 @@
<el-row>
<el-col :span="8">
<el-form-item label="登记人" prop="djr">
<el-input v-model="formData.djr" clearable placeholder="请输入登记人" />
<el-input v-model="formData.djr" disabled clearable placeholder="请输入登记人" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记日期" prop="djrq">
<el-date-picker class="flex-1 !flex" v-model="formData.djrq" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
value-format="YYYY-MM-DD" disabled placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
@ -205,6 +205,13 @@ import Popup from '@/components/popup/index.vue'
import { apiProjectProgressPaymentAdd, apiProjectProgressPaymentEdit, apiProjectProgressPaymentDetail } from '@/api/project_progress_payment'
import type { PropType } from 'vue'
import { cost_project } from "@/components/dialogTable/dialogTableConfig"
import { timeFormat } from '@/utils/util'
import useUserStore from "@/stores/modules/user";
const userStore = useUserStore().userInfo;
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -238,8 +245,8 @@ const formData = reactive({
project_id: '',
project_name: "",
project_num: '',
djr: '',
djrq: '',
djr: userStore.account,
djrq: timeFormat('', 'yyyy-mm-dd'),
sbhj: '',
shhj: '',
ljhj: '',
@ -276,12 +283,19 @@ const formData = reactive({
watch(
() => formData.project_progress_payment_detail,
(value) => {
formData.sbhj = 0
formData.shhj = 0
formData.ljhj = 0
value.forEach(item => {
item.jdsbzj_xiaoji = Number(item.declared_cost_tj) + Number(item.declared_cost_az) + Number(item.declared_cost_other)
item.jdshzj_xiaoji = Number(item.audit_cost_tj) + Number(item.audit_cost_az) + Number(item.audit_cost_other)
item.payment_rate = item.dcntract_payment_rate
item.deduction_amount = jdsbzj_xiaoji - jdshzj_xiaoji
item.ljwc_funds
item.deduction_amount = item.jdsbzj_xiaoji - item.jdshzj_xiaoji
item.ljwc_funds = item.jdshzj_xiaoji
item.current_payable_funds = (Number(item.ljwc_funds) * Number(item.payment_rate)) || 0
formData.sbhj += item.jdsbzj_xiaoji
formData.shhj += item.jdshzj_xiaoji
formData.ljhj += item.current_payable_funds
})
},
{

View File

@ -42,13 +42,13 @@
</el-date-picker>
</el-form-item>
<el-form-item label="踏勘内容" prop="content">
<el-input v-model="formData.content" clearable placeholder="请输入踏勘内容" />
<el-input v-model="formData.content" clearable placeholder="请输入踏勘内容" type="textarea" />
</el-form-item>
<el-form-item label="核实结果" prop="result">
<el-input v-model="formData.result" clearable placeholder="请输入核实结果" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" clearable placeholder="请输入" />
<el-input v-model="formData.remark" clearable placeholder="请输入" type="textarea" />
</el-form-item>
<el-form-item label="附件">
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"

View File

@ -6,7 +6,7 @@
<el-input class="w-[280px]" v-model="queryParams.num" clearable placeholder="请输入单据编号" />
</el-form-item>
<el-form-item label="项目名称" prop="project">
<el-input class="w-[280px]" v-model="queryParams.project" clearable placeholder="请输入项目名称" />
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
</el-form-item>
<el-form-item label="项目编号" prop="project_num">
<el-input class="w-[280px]" v-model="queryParams.project_num" clearable placeholder="请输入项目编号" />
@ -51,8 +51,8 @@
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button v-perms="['project_process_management.project_survey_signature/edit']" type="primary"
link @click="handleEdit(row)">
<el-button v-perms="['project_process_management.project_survey_signature/edit']"
type="primary" link @click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['project_process_management.project_survey_signature/delete']"
@ -87,7 +87,7 @@ const showEdit = ref(false)
//
const queryParams = reactive({
num: '',
project: '',
project_name: '',
project_num: '',
})
@ -133,4 +133,3 @@ const handleDelete = async (id: number | any[]) => {
getLists()
</script>

View File

@ -1,13 +1,14 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-row>
<el-col :span="8">
<el-col>
<el-form-item label="项目类型" prop="contract_no">
<el-input v-model="formData.name" clearable placeholder="请输入项目类型" />
</el-form-item> </el-col>
</el-form-item>
</el-col>
</el-row>
</el-form>
@ -20,10 +21,7 @@
<script lang="ts" setup name="procurementContractEdit">
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiProjecttypeAdd, apiProjecttypeEdit, apiProjecttypDetail } from '@/api/projecttype'
import { timeFormat } from '@/utils/util'
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -35,10 +33,6 @@ const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
const popupRef = shallowRef<InstanceType<typeof Popup>>()
const mode = ref('add')
// const showDialog = ref(false)
// const showDialog1 = ref(false)
// const project_name = ref('')
// const project_code = ref('')
//
const popupTitle = computed(() => {

View File

@ -3,47 +3,60 @@
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="单据编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item>
<el-form-item label="项目名称" prop="project_id">
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item>
<el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project_num" clearable readonly />
</el-form-item>
<el-form-item label="项目负责人" prop="head">
<el-input v-model="formData.head" clearable placeholder="请输入项目负责人" />
</el-form-item>
<el-form-item label="登记日期" prop="apptime">
<el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label="附件">
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item>
<el-row>
<el-col :span="8">
<el-form-item label="单据编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="系统自动生成" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目名称" prop="project_name">
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目编号" prop="project_num">
<el-input v-model="formData.project_num" clearable readonly />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目负责人" prop="head">
<el-input v-model="formData.head" clearable placeholder="请输入项目负责人" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="登记日期" prop="apptime">
<el-date-picker class="flex-1 !flex" v-model="formData.apptime" clearable type="date"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="附件">
<annexUpload :annex="formData.annex" @handleAvatarSuccess="handleAvatarSuccess_four"
@delFile="delFileFn" />
</el-form-item>
</el-col>
</el-row>
<el-dialog v-model="showDialog" title="选择项目" width="70%">
<dialogTable :config="cost_project" :query="{ task_allocation: 1 }" @customEvent="customEvent">
</dialogTable>
</el-dialog>
<el-dialog v-model="showDialog1" title="选择任务" width="70%">
<task_type @customEvent="customEvent1"></task_type>
<dialogTable :config="task_type" @customEvent="customEvent1">
</dialogTable>
</el-dialog>
<div v-if="showDialog3">
<personnelselector ref="personnel" @confirm="submituser" type="1">
</personnelselector>
</div>
<div style="margin-bottom: 30px;">任务明细</div>
<div style="margin-bottom: 30px;">
<el-table :data="formData.task_detail">
<el-table-column label="序号" v-if="mode == 'add'" width="150px">
<template #default="{ row }">
<el-button @click="handleAdd(row)">+</el-button>
<el-button @click="handleAdd()">+</el-button>
<el-button @click="handleDelete(row)">-</el-button>
</template>
</el-table-column>
@ -193,8 +206,14 @@
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import { apiTaskAllocationAdd, apiTaskAllocationEdit, } from '@/api/task_allocation'
import { cost_project } from "@/components/dialogTable/dialogTableConfig"
import { cost_project, task_type } from "@/components/dialogTable/dialogTableConfig"
import type { PropType } from 'vue'
import { timeFormat } from '@/utils/util'
import useUserStore from "@/stores/modules/user";
const userStore = useUserStore().userInfo;
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
@ -232,8 +251,8 @@ const formData = reactive({
project_id: '',
project_name: "",
project_num: '',
head: '',
apptime: '',
head: userStore.account,
apptime: timeFormat('', 'yyyy-mm-dd'),
annex: [],
task_detail: [{
task_name: '',
@ -352,7 +371,7 @@ const setFormData = async (data: Record<any, any>) => {
}
formData.project_name = formData.projectInfo?.project_name || ""
formData.project_num = formData.projectInfo?.project_num || ""
formData.project_id = formData.projectInfo?.project_id || ""
formData.project_id = formData.projectInfo?.id || ""
formData.head = formData.projectInfo?.principal || ""
}

View File

@ -1,6 +1,7 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="60%" @confirm="handleSubmit" @close="handleClose">
<popup ref="popupRef" :title="popupTitle" :async="true" width="60%" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="100px" :rules="formRules">
<el-row>
@ -19,7 +20,8 @@
</el-col>
<el-col :span="8">
<el-form-item label="专业类型" prop="professional_type">
<el-select class="flex-1" v-model="formData.professional_type" clearable placeholder="请选择专业类型">
<el-select class="flex-1" v-model="formData.professional_type" clearable
placeholder="请选择专业类型">
<el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name"
:value="item.value" />
</el-select>

View File

@ -1,6 +1,6 @@
<template>
<div>
<el-card class="!border-none mb-4" shadow="never">
<!-- <el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item>
@ -10,21 +10,11 @@
:page-size="pager.size" />
</el-form-item>
</el-form>
</el-card>
</el-card> -->
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
<!-- <el-button v-perms="['task_detail/add']" type="primary" @click="handleAdd">
<template #icon>
<icon name="el-icon-Plus" />
</template>
新增
</el-button>
<el-button v-perms="['task_detail/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
删除
</el-button> -->
<div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="主表标识" prop="taskAllocation.dataid" show-overflow-tooltip />
<el-table-column label="任务名称" prop="taskTypeInfo.name" show-overflow-tooltip />
<el-table-column label="工序" prop="process" show-overflow-tooltip />
<el-table-column label="任务类型" prop="task_type_id">
@ -59,7 +49,8 @@
<el-button v-perms="['task_detail/edit']" type="primary" link @click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['task_detail/delete']" type="danger" link @click="handleDelete(row.id)">
<el-button v-perms="['task_detail/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
</template>
@ -133,4 +124,3 @@ const handleDelete = async (id: number | any[]) => {
getLists()
</script>

View File

@ -15,7 +15,7 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="项目名称" prop="project_id">
<el-form-item label="项目名称" prop="project_name">
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" readonly
@click="showDialog = true" />
</el-form-item>
@ -49,7 +49,6 @@
</el-col>
<el-col :span="8">
<el-form-item label="专业类型" prop="zType">
<!-- <el-input v-model="formData.zType" clearable placeholder="请输入专业类型" /> -->
<el-select class="flex-1" v-model="formData.zType" clearable placeholder="请选择专业类型">
<el-option v-for="(item, index) in dictData.major_type" :key="index" :label="item.name"
:value="parseInt(item.value)" />
@ -99,7 +98,6 @@
</el-col>
<el-col :span="8">
<el-form-item label="登记日期" prop="apptime">
<!-- <el-input v-model="formData.apptime" clearable placeholder="请输入登记日期" /> -->
<el-date-picker v-model="formData.apptime" clearable type="date" value-format="YYYY-MM-DD"
class="!flex flex-1" placeholder="请选择日期">
</el-date-picker>
@ -139,7 +137,6 @@
</el-col>
<el-col :span="8">
<el-form-item label="编制要求" prop="ask">
<!-- <el-input v-model="formData.ask" clearable placeholder="请输入编制要求" /> -->
<el-select class="flex-1" v-model="formData.ask" clearable placeholder="请选择建筑结构类型">
<el-option v-for="(item, index) in dictData.preparation_requirements " :key="index"
:label="item.name" :value="parseInt(item.value)" />
@ -150,7 +147,6 @@
<el-row>
<el-col :span="8">
<el-form-item label="造价依据" prop="according">
<!-- <el-input v-model="formData.according" clearable placeholder="请输入造价依据" /> -->
<el-select class="flex-1" v-model="formData.according" clearable placeholder="请选择造价依据">
<el-option v-for="(item, index) in dictData.cost_sentence " :key="index"
:label="item.name" :value="parseInt(item.value)" />
@ -159,7 +155,6 @@
</el-col>
<el-col :span="8">
<el-form-item label="材料补差" prop="clbc">
<!-- <el-input v-model="formData.clbc" clearable placeholder="请输入材料补差" /> -->
<el-select class="flex-1" v-model="formData.clbc" clearable placeholder="请选择材料补差">
<el-option v-for="(item, index) in dictData.material_compensation " :key="index"
:label="item.name" :value="parseInt(item.value)" />
@ -209,7 +204,6 @@
<el-row>
<el-col :span="8">
<el-form-item label="开工日期" prop="kaigong">
<!-- <el-input v-model="formData.kaigong" clearable placeholder="请输入开工日期" /> -->
<el-date-picker v-model="formData.kaigong" clearable type="date" class="!flex flex-1"
value-format="YYYY-MM-DD" placeholder="请选择日期">
</el-date-picker>
@ -217,7 +211,6 @@
</el-col>
<el-col :span="8">
<el-form-item label="竣工日期" prop="jungong">
<!-- <el-input v-model="formData.jungong" clearable placeholder="请输入竣工日期" /> -->
<el-date-picker v-model="formData.jungong" clearable type="date" value-format="YYYY-MM-DD"
class="!flex flex-1" placeholder="请选择日期">
</el-date-picker>
@ -417,13 +410,11 @@ const setFormData = async (data: Record<any, any>) => {
formData.project_name = formData.projectInfo?.project_name
formData.project_num = formData.projectInfo.project_num
}
let toStringList = ['rtype', 'zType', 'examine', 'type', 'ask', 'according', 'clbc']
toStringList.forEach(element => {
formData[element] = Number(formData[element])
});
const getDetail = async (row: Record<string, any>) => {
const data = await apiTaskHandlingThreeLevelReviewDetail({
id: row.id
})
setFormData(data)
}
@ -454,6 +445,5 @@ const handleClose = () => {
defineExpose({
open,
setFormData,
getDetail
})
</script>

View File

@ -1,40 +1,40 @@
<template>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="标识" prop="dataid">
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="所属项目" prop="cost_project_id">
<el-select v-model="formData.cost_project_id" remote filterable :remote-method="queryCostProject"
:loading="loading" class="flex-1">
<el-option v-for="(item, index) in optionsData.projectList" :key="index" :label="item.projectinfo"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="任务编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="请输入任务编号" />
</el-form-item>
<el-form-item label="任务名称" prop="name">
<el-input v-model="formData.name" clearable placeholder="请输入任务名称" />
</el-form-item>
<el-form-item label="上级类别" prop="superior_sort">
<!-- <el-input v-model="formData.superior_sort" clearable placeholder="请输入上级类别" /> -->
<el-select class="flex-1" v-model="formData.superior_sort" clearable placeholder="请选择上级类别">
<el-option v-for="(item, index) in dictData.superior_category" :key="index" :label="item.name"
:value="parseInt(item.value)" />
</el-select>
</el-form-item>
<el-form-item label="任务级次" prop="level">
<el-input v-model="formData.level" clearable placeholder="请输入任务级次" />
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="formData.remarks" clearable placeholder="请输入备注" />
</el-form-item>
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
@close="handleClose">
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
<el-form-item label="标识" prop="dataid">
<el-input v-model="formData.dataid" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="所属项目" prop="cost_project_id">
<el-select v-model="formData.cost_project_id" remote filterable :remote-method="queryCostProject"
:loading="loading" class="flex-1">
<el-option v-for="(item, index) in optionsData.projectList" :key="index"
:label="item.projectinfo" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="任务编号" prop="num">
<el-input v-model="formData.num" clearable placeholder="请输入任务编号" />
</el-form-item>
<el-form-item label="任务名称" prop="name">
<el-input v-model="formData.name" clearable placeholder="请输入任务名称" />
</el-form-item>
<el-form-item label="上级类别" prop="superior_sort">
<el-select class="flex-1" v-model="formData.superior_sort" clearable placeholder="请选择上级类别">
<el-option v-for="(item, index) in dictData.superior_category" :key="index" :label="item.name"
:value="parseInt(item.value)" />
</el-select>
</el-form-item>
<el-form-item label="任务级次" prop="level">
<el-input v-model="formData.level" clearable placeholder="请输入任务级次" />
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="formData.remarks" clearable placeholder="请输入备注" type="textarea" />
</el-form-item>
</el-form>
</popup>
</div>
</el-form>
</popup>
</div>
</template>
<script lang="ts" setup name="taskTypeEdit">
@ -45,10 +45,10 @@ import { useDictOptions } from "@/hooks/useDictOptions"
import type { PropType } from 'vue'
import { apiCostProjectDatas } from "@/api/cost_project";
defineProps({
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
dictData: {
type: Object as PropType<Record<string, any[]>>,
default: () => ({})
}
})
const emit = defineEmits(['success', 'close'])
const formRef = shallowRef<FormInstance>()
@ -58,19 +58,19 @@ const mode = ref('add')
//
const popupTitle = computed(() => {
return mode.value == 'edit' ? '编辑任务类型' : '新增任务类型'
return mode.value == 'edit' ? '编辑任务类型' : '新增任务类型'
})
//
const formData = reactive({
id: '',
dataid: '',
cost_project_id: '',
num: '',
name: '',
superior_sort: '',
level: '',
remarks: '',
id: '',
dataid: '',
cost_project_id: '',
num: '',
name: '',
superior_sort: '',
level: '',
remarks: '',
})
@ -82,73 +82,73 @@ const formRules = reactive<any>({
const { optionsData } = useDictOptions<{
projectList: any[]
projectList: any[]
}>({
projectList: {
api: apiCostProjectDatas,
}
projectList: {
api: apiCostProjectDatas,
}
})
const loading = ref(false)
const queryCostProject = async (query: string) => {
loading.value = true
const projectList = await apiCostProjectDatas({
name: query ?? ''
})
optionsData.projectList = projectList
loading.value = false
loading.value = true
const projectList = await apiCostProjectDatas({
name: query ?? ''
})
optionsData.projectList = projectList
loading.value = false
}
//
const setFormData = async (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key]
}
}
}
formData.superior_sort = Number(formData.superior_sort)
formData.superior_sort = Number(formData.superior_sort)
}
const getDetail = async (row: Record<string, any>) => {
const data = await apiTaskTypeDetail({
id: row.id
})
setFormData(data)
const data = await apiTaskTypeDetail({
id: row.id
})
setFormData(data)
}
//
const handleSubmit = async () => {
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? await apiTaskTypeEdit(data)
: await apiTaskTypeAdd(data)
popupRef.value?.close()
emit('success')
await formRef.value?.validate()
const data = { ...formData, }
mode.value == 'edit'
? await apiTaskTypeEdit(data)
: await apiTaskTypeAdd(data)
popupRef.value?.close()
emit('success')
}
//
const open = (type = 'add') => {
mode.value = type
popupRef.value?.open()
mode.value = type
popupRef.value?.open()
}
//
const handleClose = () => {
emit('close')
emit('close')
}
defineExpose({
open,
setFormData,
getDetail
open,
setFormData,
getDetail
})
</script>

View File

@ -1,71 +1,79 @@
<template>
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="所属项目" prop="cost_project_id">
<el-select v-model="queryParams.cost_project_id" remote filterable :remote-method="queryCostProject"
:loading="loading" class="flex-1">
<el-option v-for="(item, index) in optionsData.projectList" :key="index" :label="item.projectinfo"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="任务名称" prop="unit_name">
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入任务名称" />
</el-form-item>
<el-form-item label="上级类别" prop="qualification_grade">
<el-select class="flex-1" v-model="queryParams.superior_sort" clearable placeholder="请选择上级类别">
<el-option v-for="(item, index) in dictData.superior_category" :key="index" :label="item.name"
:value="parseInt(item.value)" />
</el-select>
</el-form-item>
<el-form-item label="时间段">
<el-date-picker v-model="queryTime" type="daterange" unlink-panels range-separator="-" start-placeholder="开始时间"
end-placeholder="结束时间" @change="changeTime" value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
<export-data class="ml-2.5" :fetch-fun="apiTaskTypeLists" :params="queryParams" :page-size="pager.size" />
</el-form-item>
</el-form>
</el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['task.task_type/add']" type="primary" @click="handleAdd">
<template #icon>
<icon name="el-icon-Plus" />
</template>
新增
</el-button>
<el-button v-perms="['task.task_type/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
删除
</el-button>
<div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="标识" prop="dataid" show-overflow-tooltip />
<el-table-column label="任务编号" prop="num" show-overflow-tooltip />
<el-table-column label="任务名称" prop="name" show-overflow-tooltip />
<el-table-column label="上级类别" prop="superior_sort" show-overflow-tooltip />
<el-table-column label="任务级次" prop="level" show-overflow-tooltip />
<el-table-column label="备注" prop="remarks" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button v-perms="['task.task_type/edit']" type="primary" link @click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['task.task_type/delete']" type="danger" link @click="handleDelete(row.id)">
<div>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="所属项目" prop="cost_project_id">
<el-select v-model="queryParams.cost_project_id" remote filterable :remote-method="queryCostProject"
:loading="loading" class="flex-1">
<el-option v-for="(item, index) in optionsData.projectList" :key="index"
:label="item.projectinfo" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="任务名称" prop="unit_name">
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入任务名称" />
</el-form-item>
<el-form-item label="上级类别" prop="qualification_grade">
<el-select class="flex-1" v-model="queryParams.superior_sort" clearable placeholder="请选择上级类别">
<el-option v-for="(item, index) in dictData.superior_category" :key="index" :label="item.name"
:value="parseInt(item.value)" />
</el-select>
</el-form-item>
<el-form-item label="时间段">
<el-date-picker v-model="queryTime" type="daterange" unlink-panels range-separator="-"
start-placeholder="开始时间" end-placeholder="结束时间" @change="changeTime"
value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
<export-data class="ml-2.5" :fetch-fun="apiTaskTypeLists" :params="queryParams"
:page-size="pager.size" />
</el-form-item>
</el-form>
</el-card>
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
<el-button v-perms="['task.task_type/add']" type="primary" @click="handleAdd">
<template #icon>
<icon name="el-icon-Plus" />
</template>
新增
</el-button>
<el-button v-perms="['task.task_type/delete']" :disabled="!selectData.length"
@click="handleDelete(selectData)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
</div>
</el-button>
<div class="mt-4">
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="标识" prop="dataid" show-overflow-tooltip />
<el-table-column label="任务编号" prop="num" show-overflow-tooltip />
<el-table-column label="任务名称" prop="name" show-overflow-tooltip />
<el-table-column label="上级类别" prop="superior_sort" show-overflow-tooltip>
<template #default="{ row }">
<dict-value :options="dictData.superior_category" :value="row.superior_sort" />
</template>
</el-table-column>
<el-table-column label="任务级次" prop="level" show-overflow-tooltip />
<el-table-column label="备注" prop="remarks" show-overflow-tooltip />
<el-table-column label="操作" width="120" fixed="right">
<template #default="{ row }">
<el-button v-perms="['task.task_type/edit']" type="primary" link @click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['task.task_type/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex justify-end mt-4">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
</div>
</template>
<script lang="ts" setup name="taskTypeLists">
@ -83,42 +91,42 @@ const showEdit = ref(false)
const loading = ref(false)
const queryCostProject = async (query: string) => {
loading.value = true
const projectList = await apiCostProjectDatas({
name: query ?? ''
})
optionsData.projectList = projectList
loading.value = false
loading.value = true
const projectList = await apiCostProjectDatas({
name: query ?? ''
})
optionsData.projectList = projectList
loading.value = false
}
const { optionsData } = useDictOptions<{
projectList: any[]
projectList: any[]
}>({
projectList: {
api: apiCostProjectDatas,
}
projectList: {
api: apiCostProjectDatas,
}
})
//
const queryParams = reactive({
name: "",
superior_sort: "",
cost_project_id: "",
start_time: "",
end_time: ""
name: "",
superior_sort: "",
cost_project_id: "",
start_time: "",
end_time: ""
})
const queryTime = ref('')
const changeTime = () => {
queryParams.start_time = queryTime.value[0]
queryParams.end_time = queryTime.value[1]
queryParams.start_time = queryTime.value[0]
queryParams.end_time = queryTime.value[1]
}
//
const selectData = ref<any[]>([])
//
const handleSelectionChange = (val: any[]) => {
selectData.value = val.map(({ id }) => id)
selectData.value = val.map(({ id }) => id)
}
//
@ -126,32 +134,31 @@ const { dictData } = useDictData('superior_category')
//
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiTaskTypeLists,
params: queryParams
fetchFun: apiTaskTypeLists,
params: queryParams
})
//
const handleAdd = async () => {
showEdit.value = true
await nextTick()
editRef.value?.open('add')
showEdit.value = true
await nextTick()
editRef.value?.open('add')
}
//
const handleEdit = async (data: any) => {
showEdit.value = true
await nextTick()
editRef.value?.open('edit')
editRef.value?.setFormData(data)
showEdit.value = true
await nextTick()
editRef.value?.open('edit')
editRef.value?.setFormData(data)
}
//
const handleDelete = async (id: number | any[]) => {
await feedback.confirm('确定要删除?')
await apiTaskTypeDelete({ id })
getLists()
await feedback.confirm('确定要删除?')
await apiTaskTypeDelete({ id })
getLists()
}
getLists()
</script>