1.剩余施工管理模块 施工汇报对接增删改查功能 2.项目工种 项目合同 对接增删改查功能
This commit is contained in:
parent
26bb3b0f69
commit
0e5e582b78
26
src/api/build/build_report.ts
Normal file
26
src/api/build/build_report.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
//施工汇报表列表
|
||||
export function buildreportLists(params: any) {
|
||||
return request.get({ url: '/build.build_report/lists', params })
|
||||
}
|
||||
|
||||
// 添加施工计划
|
||||
export function buildreportAdd(params: any) {
|
||||
return request.post({ url: '/build.build_report/add', params })
|
||||
}
|
||||
|
||||
// 编辑施工计划
|
||||
export function buildreportEdit(params: any) {
|
||||
return request.post({ url: '/build.build_report/edit', params })
|
||||
}
|
||||
|
||||
// 删除施工计划
|
||||
export function buildreportDelete(params: any) {
|
||||
return request.post({ url: '/build.build_report/delete', params })
|
||||
}
|
||||
|
||||
// 施工计划详情
|
||||
export function buildreportDetail(params: any) {
|
||||
return request.get({ url: '/build.build_report/detail', params })
|
||||
}
|
5
src/api/build/build_report_detail.ts
Normal file
5
src/api/build/build_report_detail.ts
Normal file
@ -0,0 +1,5 @@
|
||||
import request from '@/utils/request'
|
||||
// 人工明细列表
|
||||
export function buildreportDetaillists(params: any) {
|
||||
return request.get({ url: '/build.build_report_detail/lists', params })
|
||||
}
|
27
src/api/project_insurance_management.ts
Normal file
27
src/api/project_insurance_management.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 保险管理列表
|
||||
export function insurancemanagementLists(params: any) {
|
||||
return request.get({ url: '/project.project_insurance_management//lists', params })
|
||||
}
|
||||
|
||||
// 添加保险管理
|
||||
export function insurancemanagementAdd(params: any) {
|
||||
return request.post({ url: '/project.project_insurance_management//add', params })
|
||||
}
|
||||
|
||||
// 编辑保险管理
|
||||
export function insurancemanagementEdit(params: any) {
|
||||
return request.post({ url: '/project.project_insurance_management//edit', params })
|
||||
}
|
||||
|
||||
// 删除保险管理
|
||||
export function insurancemanagementDelete(params: any) {
|
||||
return request.post({ url: '/project.project_insurance_management//delete', params })
|
||||
}
|
||||
|
||||
// 保险管理详情
|
||||
export function insurancemanagementDetail(params: any) {
|
||||
return request.get({ url: '/project.project_insurance_management//detail', params })
|
||||
}
|
||||
|
32
src/api/project_job_type.ts
Normal file
32
src/api/project_job_type.ts
Normal file
@ -0,0 +1,32 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 工种记录列表
|
||||
export function projectjobtypeLists(params: any) {
|
||||
return request.get({ url: '/project.project_job_type/lists', params })
|
||||
}
|
||||
|
||||
// 添加工种记录
|
||||
export function projectjobtypeAdd(params: any) {
|
||||
return request.post({ url: '/project.project_job_type/add', params })
|
||||
}
|
||||
|
||||
// 编辑工种记录
|
||||
export function projectjobtypeEdit(params: any) {
|
||||
return request.post({ url: '/project.project_job_type/edit', params })
|
||||
}
|
||||
|
||||
// 删除工种记录
|
||||
export function projectjobtypeDelete(params: any) {
|
||||
return request.post({ url: '/project.project_job_type/delete', params })
|
||||
}
|
||||
|
||||
// 工种记录详情
|
||||
export function projectjobtypeDetail(params: any) {
|
||||
return request.get({ url: '/project.project_job_type/detail', params })
|
||||
}
|
||||
|
||||
|
||||
// 工种列表
|
||||
export function projectjobtypeAll(params: any) {
|
||||
return request.get({ url: '/project.project_job_type/all', params })
|
||||
}
|
28
src/api/project_labor_contract.ts
Normal file
28
src/api/project_labor_contract.ts
Normal file
@ -0,0 +1,28 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 劳动合同列表
|
||||
export function projectlaborcontractLists(params: any) {
|
||||
return request.get({ url: '/project.project_labor_contract/lists', params })
|
||||
}
|
||||
|
||||
// 添加劳动合同
|
||||
export function projectlaborcontractAdd(params: any) {
|
||||
return request.post({ url: '/project.project_labor_contract/add', params })
|
||||
}
|
||||
|
||||
// 编辑劳动合同
|
||||
export function projectlaborcontractEdit(params: any) {
|
||||
return request.post({ url: '/project.project_labor_contract/edit', params })
|
||||
}
|
||||
|
||||
// 删除劳动合同
|
||||
export function projectlaborcontractDelete(params: any) {
|
||||
return request.post({ url: '/project.project_labor_contract/delete', params })
|
||||
}
|
||||
|
||||
// 劳动合同详情
|
||||
export function projectlaborcontractDetail(params: any) {
|
||||
return request.get({ url: '/project.project_labor_contract/detail', params })
|
||||
}
|
||||
|
||||
|
@ -24,3 +24,8 @@ export function projectpersonnelDelete(params: any) {
|
||||
export function projectpersonnelDetail(params: any) {
|
||||
return request.get({ url: '/project.project_personnel/detail', params })
|
||||
}
|
||||
|
||||
//获取某个项目下的所有人员
|
||||
export function personneToProject(params: any) {
|
||||
return request.get({ url: '/project.project_personnel/listToProject', params })
|
||||
}
|
77
src/components/acceptance/index.vue
Normal file
77
src/components/acceptance/index.vue
Normal file
@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="客户名称" prop="name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入客户名称" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @cell-click="handleCurrentChange">
|
||||
<el-table-column label="序号" type="index" />
|
||||
<el-table-column label="收票银行" prop="account_name" show-overflow-tooltip />
|
||||
<el-table-column label="收票账户编码" prop="account" show-overflow-tooltip />
|
||||
<el-table-column label="收票日期" prop="receipt_date" show-overflow-tooltip />
|
||||
<el-table-column label="票据编号" prop="bill_sn" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="汇票类型" prop="invoice_amount" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.bill_type" :value="row.bill_type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="汇票承兑银行" prop="draft_acceptance_bank" show-overflow-tooltip />
|
||||
<el-table-column label="汇票到期日期" prop="bill_due_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="收款金额大写" prop="receipt_amount_daxie" show-overflow-tooltip />
|
||||
<el-table-column label="收款金额(元)" prop="receipt_amount" show-overflow-tooltip />
|
||||
<el-table-column label="支出金额" prop="tax" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="余额" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
|
||||
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { usePaging } from "@/hooks/usePaging"
|
||||
import { useDictData } from "@/hooks/useDictOptions"
|
||||
import { acceptancebillLists } from '@/api/acceptance'
|
||||
import { defineEmits } from "vue"
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
|
||||
});
|
||||
|
||||
const { dictData } = useDictData('bill_type ')
|
||||
// 选中数据
|
||||
const emits = defineEmits(["customEvent"]);
|
||||
|
||||
// 选中数据子父传递
|
||||
const handleCurrentChange = (value: any) => {
|
||||
emits("customEvent", value);
|
||||
};
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: acceptancebillLists,
|
||||
params: queryParams,
|
||||
});
|
||||
|
||||
getLists();
|
||||
</script>
|
76
src/components/build_plan/index.vue
Normal file
76
src/components/build_plan/index.vue
Normal file
@ -0,0 +1,76 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="工序步骤" prop="process_step">
|
||||
<el-input class="w-[280px]" v-model="queryParams.process_step" clearable placeholder="请输入工序步骤" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @cell-click="handleCurrentChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="作业编码" prop="zy_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="分项工程" prop="subentry_engineering" show-overflow-tooltip />
|
||||
<el-table-column label="工序步骤号" prop="process_step_no" show-overflow-tooltip />
|
||||
<el-table-column label="工序步骤" prop="process_step" show-overflow-tooltip />
|
||||
<el-table-column label="质量控制点" prop="quality_control_points" show-overflow-tooltip />
|
||||
<el-table-column label="图例说明" prop="file" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.file && row.file.length > 0">
|
||||
<div v-for="(item, i) in row.file " :key='i'>
|
||||
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { usePaging } from "@/hooks/usePaging"
|
||||
import { useDictData } from "@/hooks/useDictOptions"
|
||||
import { buildplanLists } from '@/api/build/build_plan'
|
||||
|
||||
import { defineEmits } from "vue"
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
process_step: ''
|
||||
});
|
||||
|
||||
|
||||
// 选中数据
|
||||
const emits = defineEmits(["customEvent"]);
|
||||
|
||||
// 选中数据子父传递
|
||||
const handleCurrentChange = (value: any) => {
|
||||
emits("customEvent", value);
|
||||
};
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: buildplanLists,
|
||||
params: queryParams,
|
||||
});
|
||||
|
||||
getLists();
|
||||
</script>
|
@ -25,7 +25,18 @@
|
||||
<el-table-column label="重要程度" prop="importance_text" show-overflow-tooltip />
|
||||
<el-table-column label="记录时间" prop="recording_time" show-overflow-tooltip />
|
||||
<el-table-column label="需求内容" prop="demand_content" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.annex && row.annex.length > 0">
|
||||
<div v-for="(item, i) in row.annex " :key='i'>
|
||||
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
|
@ -1,31 +1,16 @@
|
||||
<template>
|
||||
<div class="material-select">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
width="830px"
|
||||
custom-class="body-padding"
|
||||
:title="`选择${tipsText}`"
|
||||
@confirm="handleConfirm"
|
||||
@close="handleClose"
|
||||
>
|
||||
<popup ref="popupRef" width="830px" custom-class="body-padding" :title="`选择${tipsText}`" @confirm="handleConfirm" @close="handleClose">
|
||||
<template v-if="!hiddenUpload" #trigger>
|
||||
<div class="material-select__trigger clearfix" @click.stop>
|
||||
<draggable class="draggable" v-model="fileList" animation="300" item-key="id">
|
||||
<template v-slot:item="{ element, index }">
|
||||
<div
|
||||
class="material-preview"
|
||||
:class="{
|
||||
'is-disabled': disabled,
|
||||
'is-one': limit == 1
|
||||
}"
|
||||
@click="showPopup(index)"
|
||||
>
|
||||
<div class="material-preview" :class="{
|
||||
'is-disabled': disabled,
|
||||
'is-one': limit == 1
|
||||
}" @click="showPopup(index)">
|
||||
<del-wrap @close="deleteImg(index)">
|
||||
<file-item
|
||||
:uri="excludeDomain ? getImageUrl(element) : element"
|
||||
:file-size="size"
|
||||
:type="type"
|
||||
></file-item>
|
||||
<file-item :uri="excludeDomain ? getImageUrl(element) : element" :file-size="size" :type="type"></file-item>
|
||||
</del-wrap>
|
||||
<div class="operation-btns text-xs text-center">
|
||||
<span>修改</span>
|
||||
@ -35,24 +20,16 @@
|
||||
</div>
|
||||
</template>
|
||||
</draggable>
|
||||
<div
|
||||
class="material-upload"
|
||||
@click="showPopup(-1)"
|
||||
v-show="showUpload"
|
||||
:class="{
|
||||
'is-disabled': disabled,
|
||||
'is-one': limit == 1,
|
||||
[uploadClass]: true
|
||||
}"
|
||||
>
|
||||
<div class="material-upload" @click="showPopup(-1)" v-show="showUpload" :class="{
|
||||
'is-disabled': disabled,
|
||||
'is-one': limit == 1,
|
||||
[uploadClass]: true
|
||||
}">
|
||||
<slot name="upload">
|
||||
<div
|
||||
class="upload-btn"
|
||||
:style="{
|
||||
width: size,
|
||||
height: size
|
||||
}"
|
||||
>
|
||||
<div class="upload-btn" :style="{
|
||||
width: size,
|
||||
height: size
|
||||
}">
|
||||
<icon :size="25" name="el-icon-Plus" />
|
||||
<span>添加</span>
|
||||
</div>
|
||||
@ -62,13 +39,7 @@
|
||||
</template>
|
||||
<el-scrollbar>
|
||||
<div class="material-wrap">
|
||||
<material
|
||||
ref="materialRef"
|
||||
:type="type"
|
||||
:file-size="fileSize"
|
||||
:limit="meterialLimit"
|
||||
@change="selectChange"
|
||||
/>
|
||||
<material ref="materialRef" :type="type" :file-size="fileSize" :limit="meterialLimit" @change="selectChange" />
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</popup>
|
||||
@ -258,6 +229,7 @@ export default defineComponent({
|
||||
|
||||
<style scoped lang="scss">
|
||||
.material-select {
|
||||
|
||||
.material-upload,
|
||||
.material-preview {
|
||||
position: relative;
|
||||
@ -267,17 +239,21 @@ export default defineComponent({
|
||||
margin-bottom: 8px;
|
||||
box-sizing: border-box;
|
||||
float: left;
|
||||
|
||||
&.is-disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
&.is-one {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
.operation-btns {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.operation-btns {
|
||||
display: none;
|
||||
position: absolute;
|
||||
@ -289,12 +265,14 @@ export default defineComponent({
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
}
|
||||
|
||||
.material-upload {
|
||||
:deep(.upload-btn) {
|
||||
@apply text-tx-secondary box-border rounded border-br border-dashed border flex flex-col justify-center items-center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.material-wrap {
|
||||
min-width: 720px;
|
||||
height: 430px;
|
||||
|
@ -43,7 +43,7 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
|
||||
console.log(props.project_id)
|
||||
// console.log(props.project_id)
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
project_id: props.project_id,
|
||||
|
@ -80,11 +80,16 @@ import { apiProjectLists } from '@/api/project'
|
||||
|
||||
import { defineEmits } from "vue"
|
||||
import { timeFormat } from '@/utils/util'
|
||||
|
||||
const props = defineProps({
|
||||
customer_id: {
|
||||
type: String
|
||||
}
|
||||
})
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
custom_name: '',
|
||||
project_type: ""
|
||||
project_type: "",
|
||||
customer_id: props.customer_id
|
||||
});
|
||||
const { dictData } = useDictData('project_type,project_content,bidding_method,relationship,information_sources,construction_funds_sources,construction_financial_status,construction_recognition,my_construction_recognition,strategic_significance,industry,unit_nature')
|
||||
|
||||
|
107
src/components/project_personnel/index.vue
Normal file
107
src/components/project_personnel/index.vue
Normal file
@ -0,0 +1,107 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="查询" prop="name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @cell-click="handleCurrentChange">
|
||||
<el-table-column label="序号" property="name" />
|
||||
<el-table-column label="项目编码" property="project_code" />
|
||||
<el-table-column label="项目名称" property="project_name" />
|
||||
<el-table-column label="姓名" property="name" />
|
||||
<el-table-column label="身份证号" property="idcard" />
|
||||
<el-table-column label="手机号" property="mobile" />
|
||||
<el-table-column label="身份证正面" property="idcard_front">
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.file && row.idcard_front.length > 0">
|
||||
|
||||
<el-link :href="row.idcard_front" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="身份证反面" property="idcard_backend">
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.file && row.idcard_backend.length > 0">
|
||||
|
||||
<el-link :href="row.idcard_backend" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="银行卡照片" property="bank_card">
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.file && row.bank_card.length > 0">
|
||||
|
||||
<el-link :href="row.bank_card" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="银行卡号" property="bank_no" />
|
||||
<el-table-column label="开户银行" property="deposit_bank" />
|
||||
<el-table-column label="备注" property="master_name" />
|
||||
</el-table>
|
||||
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { usePaging } from "@/hooks/usePaging"
|
||||
import { useDictData } from "@/hooks/useDictOptions"
|
||||
import { personneToProject } from '@/api/project_personnel'
|
||||
import { defineEmits } from "vue"
|
||||
const props = defineProps({
|
||||
project_id: {
|
||||
type: String
|
||||
}
|
||||
})
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
project_id: props.project_id,
|
||||
});
|
||||
|
||||
|
||||
// 选中数据
|
||||
const emits = defineEmits(["customEvent"]);
|
||||
|
||||
// 选中数据子父传递
|
||||
const handleCurrentChange = (value: any) => {
|
||||
emits("customEvent", value);
|
||||
};
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: personneToProject,
|
||||
params: queryParams,
|
||||
});
|
||||
|
||||
getLists();
|
||||
</script>
|
@ -43,7 +43,18 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="招标项目概况" prop="bidding_project_overview" show-overflow-tooltip />
|
||||
<el-table-column label="项目简介" prop="project_introduction" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.annex && row.annex.length > 0">
|
||||
<div v-for="(item, i) in row.annex " :key='i'>
|
||||
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="技术协议偏差" prop="technical_protocol_deviation" show-overflow-tooltip />
|
||||
<el-table-column label="协议偏差处理方案" prop="protocol_deviation_handling_plan" show-overflow-tooltip />
|
||||
<el-table-column label="技术审查附件" prop="technical_review_annex" show-overflow-tooltip />
|
||||
|
@ -1,10 +1,15 @@
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="项目计划详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<popup ref="popupRef" title="施工汇报详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="作业编码">
|
||||
{{ formData.zy_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称">
|
||||
{{ formData.project_name }}
|
||||
@ -16,19 +21,46 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="分项工程">
|
||||
{{ formData.subentry_engineering }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工序步骤">
|
||||
{{ formData.process_step }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划开始日期">
|
||||
{{ formData.start_time }}
|
||||
{{ formData.plan_start_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划结束日期">
|
||||
{{ formData.deliver_time }}
|
||||
{{ formData.plan_end_date
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="负责人">
|
||||
{{ formData.project_manager_name }}
|
||||
<el-form-item label="班组长">
|
||||
{{ formData.project_member_name
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="作业量">
|
||||
{{ formData.workload }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="施工人员">
|
||||
{{ formData.work_user }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="施工内容">
|
||||
{{ formData.work_content }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
@ -6,86 +6,90 @@
|
||||
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
|
||||
|
||||
<el-row :gutter="10">
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project_id" @click="showDialog2 = true">
|
||||
<el-form-item label="作业编码" prop="plan_id" @click="showDialog2 = true">
|
||||
<el-input v-model="zy_code" clearable placeholder="请输入作业编码" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-form-item label="项目编码" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_code" clearable placeholder="请输入项目编码" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工序步骤号" prop="process_step_no" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.process_step_no" clearable placeholder="请输入工序步骤号" />
|
||||
<el-form-item label="工序步骤号" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="process_step_no" clearable placeholder="请输入工序步骤号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工序步骤" prop="process_step" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.process_step" clearable placeholder="请输入工序步骤" />
|
||||
<el-form-item label="工序步骤" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="process_step" clearable placeholder="请输入工序步骤" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="图例说明">
|
||||
<material-picker v-model="formData.annex" />
|
||||
<material-picker v-model="process_file" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="质量控制点" prop="quality_control_points" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.quality_control_points" clearable placeholder="请输入质量控制点" />
|
||||
<el-form-item label="质量控制点" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="quality_control_points" clearable placeholder="请输入质量控制点" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="计划开始日期" prop="start_time" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.start_time" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择计划开始日期">
|
||||
<el-form-item label="计划开始日期" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="plan_start_date" 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="计划结束日期" prop="deliver_time" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.deliver_time" clearable type="date" value-format="YYYY-MM-DD " placeholder="选择计划结束日期">
|
||||
<el-form-item label="计划结束日期" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="plan_end_date" 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="班组长" prop="remark" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入班组长" />
|
||||
<el-form-item label="班组长" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_member_name" clearable placeholder="请输入班组长" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="施工内容" prop="remark">
|
||||
<el-input v-model="formData.remark" type="textarea" clearable placeholder="请输入施工内容" />
|
||||
<el-form-item label="施工内容" prop="plan_id">
|
||||
<el-input v-model="work_content" clearable placeholder="请输入施工内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="作业量" prop="remark" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.remark" type="number" clearable placeholder="请输入作业量" />
|
||||
<el-form-item label="作业量" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="workload" type="number" clearable placeholder="请输入作业量" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="剩余作业量" prop="remark" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="剩余作业量" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入剩余作业量" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="填报人" prop="remark">
|
||||
<el-form-item label="填报人" prop="plan_id">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入填报人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="填报日期" prop="deliver_time" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="填报日期" prop="plan_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.deliver_time" clearable type="date" value-format="YYYY-MM-DD " placeholder="选择填报日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div>
|
||||
<div class="tit" style="margin:10px 0">
|
||||
人工明细
|
||||
</div>
|
||||
<el-row>
|
||||
@ -97,85 +101,75 @@
|
||||
<el-button @click="handleDelete(row)" size="small">-</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="一级科目" prop="name1">
|
||||
<el-table-column label="姓名" prop="name1">
|
||||
<template #default="{ row, column, $index }">
|
||||
<el-input v-model="row.name1" @click="subjectmu(row, column, $index)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="二级科目" prop="name2">
|
||||
<template #default="{ row }"> <el-input v-model="row.name2" /> </template></el-table-column>
|
||||
<el-table-column label="1月" prop="month1">
|
||||
<template #default="{ row }"> <el-input v-model="row.month1" type="number" /> </template></el-table-column>
|
||||
<el-table-column label="身份证号" prop="name2">
|
||||
<template #default="{ row }"> <el-input v-model="row.name2" readonly /> </template></el-table-column>
|
||||
<el-table-column label="工种" prop="name3">
|
||||
<template #default="{ row }"> <el-input v-model="row.name3" /> </template></el-table-column>
|
||||
|
||||
<el-table-column label="2月" prop="month2">
|
||||
<el-table-column label="今日完工量" prop="work_num">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month2" type="number" />
|
||||
<el-input v-model="row.work_num" type="number" @input="amouttol" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="3月" prop="month3">
|
||||
<template #default="{ row }"> <el-input v-model="row.month3" type="number" /> </template></el-table-column>
|
||||
<el-table-column label="备注" prop="remark">
|
||||
<template #default="{ row }"> <el-input v-model="row.remark" /> </template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column label="4月" prop="month4">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month4" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="5月" prop="month5">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month5" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="6月" prop="month6">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month6" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="7月" prop="month7">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month7" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="8月" prop="month8">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month8" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="9月" prop="month9">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month9" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="10月" prop="month10">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month10" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="11月" prop="month11">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month11" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="12月" prop="month12">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.month12" type="number" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- 其他列 -->
|
||||
</el-table>
|
||||
</el-row>
|
||||
|
||||
<div class="tit" style="margin:10px 0">
|
||||
完工量情况
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<el-dialog v-model="showDialog" title="选择项目成员" width="70%">
|
||||
<customDialog @customEvent="customEvent"></customDialog>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="今日完工量" prop="remark">
|
||||
<el-input v-model="today_workload" type="num" readonly clearable placeholder="请输入今日完工量" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="单位" prop="unit">
|
||||
<el-input v-model="unit" readonly clearable placeholder="请输入单位" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="单价" prop="remark">
|
||||
<el-input v-model="price" readonly clearable placeholder="请输入单价" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="金额" prop="remark">
|
||||
<el-input v-model="amount" readonly clearable placeholder="请输入金额" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="现场照片" prop="file">
|
||||
<material-picker v-model="formData.file" :limit="100" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-dialog v-model="showDialog" title="选择项目人员" width="70%">
|
||||
<customDialog @customEvent="customEvent" :project_id="project_id"></customDialog>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
<el-dialog v-model="showDialog2" title="选择项目" width="70%">
|
||||
<projectDialog @customEvent="customEvent2"></projectDialog>
|
||||
<buildplanDialog @customEvent="customEvent2"></buildplanDialog>
|
||||
</el-dialog>
|
||||
<personnelselector ref="personnel" @confirm="submituser" type="1"></personnelselector>
|
||||
</el-form>
|
||||
@ -185,12 +179,12 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectEdit">
|
||||
import customDialog from '@/components/project-member/index.vue'
|
||||
import customDialog from '@/components/project_personnel/index.vue'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import salescontractDialog from '@/components/salescontract/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { apiProjectplanAdd, apiProjectplanEdit, apiProjectplanDetail } from '@/api/project_plan'
|
||||
import buildplanDialog from '@/components/build_plan/index.vue'
|
||||
|
||||
import { buildreportAdd, buildreportEdit, buildreportDetail } from '@/api/build/build_report'
|
||||
|
||||
import { toChinesNum } from "@/utils/util";
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
@ -199,14 +193,27 @@ import { isEmail, isIdCard, isPhone } from '@/utils/validate'
|
||||
import { deptAll } from '@/api/org/department'
|
||||
import { getAll } from '@/api/org/organization'
|
||||
import type { PropType } from 'vue'
|
||||
|
||||
|
||||
import feedback from '@/utils/feedback'
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const custom_name = ref('')
|
||||
const manage_name = ref('')
|
||||
const personnel = ref<any>()
|
||||
const plan_start_date = ref('')
|
||||
const plan_end_date = ref('')
|
||||
const project_member_name = ref('')
|
||||
const workload = ref('')
|
||||
const work_content = ref('')
|
||||
const process_step_no = ref('')
|
||||
const process_step = ref('')
|
||||
const amount = ref(0)
|
||||
const unit = ref('')
|
||||
const today_workload = ref('')
|
||||
const zy_code = ref('')
|
||||
const price = ref(0)
|
||||
|
||||
const project_id = ref(0)
|
||||
const quality_control_points = ref('')
|
||||
const process_file = ref([])
|
||||
const personnel = ref<any>()
|
||||
const num = ref(0)
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
@ -220,27 +227,39 @@ const mode = ref('add')
|
||||
const showDialog = ref(false)
|
||||
const showDialog2 = ref(false)
|
||||
const formDataannex = reactive([])
|
||||
|
||||
const customEvent2 = (e: any) => {
|
||||
formData.project_id = e.id;
|
||||
project_name.value = e.name;
|
||||
formData.plan_id = e.id;
|
||||
project_id.value = e.project_id
|
||||
zy_code.value = e.zy_code
|
||||
project_name.value = e.project_name;
|
||||
project_code.value = e.project_code;
|
||||
custom_name.value = e.custom_name;
|
||||
plan_start_date.value = e.plan_start_date
|
||||
plan_end_date.value = e.plan_end_date
|
||||
project_member_name.value = e.project_member_name
|
||||
workload.value = e.workload
|
||||
work_content.value = e.work_content
|
||||
process_step_no.value = e.process_step_no
|
||||
process_step.value = e.process_step
|
||||
quality_control_points.value = e.quality_control_points
|
||||
|
||||
showDialog2.value = false;
|
||||
};
|
||||
const customEvent = (e: any) => {
|
||||
|
||||
showDialog2.value = false;
|
||||
tableData.value[num.value].name1 = e.name
|
||||
tableData.value[num.value].name2 = e.idcard
|
||||
tableData.value[num.value].name3 = e.work_type_text
|
||||
tableData.value[num.value].person_id = e.id
|
||||
showDialog.value = false;
|
||||
};
|
||||
const tableData = ref([
|
||||
// 表格数据
|
||||
{ name1: "", name2: "", month1: ' ', month2: ' ', month3: ' ', month4: ' ', month5: ' ', month6: ' ', month7: ' ', month8: ' ', month9: ' ', month10: ' ', month11: ' ', month12: ' ', },
|
||||
{},
|
||||
]);
|
||||
|
||||
const handleAdd = (row) => {
|
||||
// 在 row 后面插入一行数据
|
||||
const index = tableData.value.indexOf(row);
|
||||
tableData.value.splice(index + 1, 0, { name1: "", name2: "", month1: ' ', month2: ' ', month3: ' ', month4: ' ', month5: ' ', month6: ' ', month7: ' ', month8: ' ', month9: ' ', month10: ' ', month11: ' ', month12: ' ', });
|
||||
tableData.value.splice(index + 1, 0, {});
|
||||
};
|
||||
|
||||
const handleDelete = (row) => {
|
||||
@ -250,20 +269,14 @@ const handleDelete = (row) => {
|
||||
};
|
||||
|
||||
|
||||
//打开弹窗
|
||||
//计算
|
||||
const amouttol = (e) => {
|
||||
|
||||
const userclick = () => {
|
||||
// console.log(personnel.value, '1111111')
|
||||
personnel.value.open()
|
||||
today_workload.value = tableData.value.reduce((total, item) => {
|
||||
|
||||
return total + parseInt(item.work_num);
|
||||
}, 0);
|
||||
}
|
||||
//确认
|
||||
const submituser = (e: any) => {
|
||||
formData.project_manage = e.id;
|
||||
manage_name.value = e.name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//监听输入
|
||||
const amountinput = (e) => {
|
||||
@ -274,23 +287,16 @@ const amountinput = (e) => {
|
||||
}
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑项目计划表' : '新增项目计划表'
|
||||
return mode.value == 'edit' ? '编辑施工汇报表' : '新增施工汇报表'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
org_id: "",
|
||||
dept_id: "",
|
||||
project_id: 0,
|
||||
declare_time: '',
|
||||
project_manage: '',
|
||||
project_approval_date: "",
|
||||
start_time: "",
|
||||
deliver_time: "",
|
||||
remark: "",
|
||||
annex: "",
|
||||
process_approval: '{"current_step":"1","action":"1","submit_step":"2","check_user":"2","check_opinions":"dgfdsfds","copy_user":"3,4"}'
|
||||
plan_id: '',
|
||||
file: '',
|
||||
remark: '',
|
||||
person_detail: '',
|
||||
})
|
||||
|
||||
|
||||
@ -299,37 +305,13 @@ const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
//获取所有组织
|
||||
const getlist = () => {
|
||||
getAll().then((res) => {
|
||||
Object.assign(list1, res)
|
||||
if (res.length > 0) {
|
||||
formData.org_id = res[0].id
|
||||
deptAll({ 'org_id': res[0].id }).then((res) => {
|
||||
if (res.length > 0) {
|
||||
Object.assign(list2, res)
|
||||
formData.dept_id = res[0].id
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
const deptrmt = (e) => {
|
||||
getlist1(e)
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
})
|
||||
}
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
if (data.file && data.file.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
const arry1 = data.file.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
@ -346,20 +328,23 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
custom_name.value = data.custom_name
|
||||
zy_code.value = data.zy_code
|
||||
project_name.value = data.project_name
|
||||
project_code.value = data.project_code
|
||||
manage_name.value = data.project_manager_name
|
||||
plan_start_date.value = data.plan_start_date
|
||||
plan_end_date.value = data.plan_end_date
|
||||
project_member_name.value = data.project_member_name
|
||||
workload.value = data.workload
|
||||
work_content.value = data.work_content
|
||||
process_step_no.value = data.process_step_no
|
||||
process_step.value = data.process_step
|
||||
quality_control_points.value = data.quality_control_points
|
||||
|
||||
if (data && data.contract_name) {
|
||||
contract_name.value = data.contract_name;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiProjectplanDetail({
|
||||
const data = await buildreportDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
@ -369,27 +354,43 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
formData.file = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
|
||||
if (tableData.value.length > 0) {
|
||||
formData.person_detail = JSON.stringify(tableData.value.map(({ name1, name2, name3, ...rest }) => rest))
|
||||
}
|
||||
if (formData.file.length > 0) {
|
||||
formData.file = JSON.stringify(formData.file)
|
||||
}
|
||||
|
||||
await formRef.value?.validate()
|
||||
|
||||
const data = { ...formData }
|
||||
mode.value == 'edit'
|
||||
? await apiProjectplanEdit(data)
|
||||
: await apiProjectplanAdd(data)
|
||||
? await buildreportEdit(data)
|
||||
: await buildreportAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
//项目人员
|
||||
const subjectmu = (row, i, a) => {
|
||||
// console.log(row, i, a)
|
||||
if (project_id.value) {
|
||||
num.value = a
|
||||
showDialog.value = true
|
||||
} else {
|
||||
feedback.msgError('请先选择施工计划')
|
||||
}
|
||||
|
||||
}
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
|
||||
|
||||
getlist()
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -33,41 +33,38 @@
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="处理流程" prop="sort" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="施工汇报单号" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="作业编码" prop="zy_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="节点名称" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="是否末节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="一级节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="二级节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="三级节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="四级节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="五级节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="六级节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="七级节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="八级节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="九级节点" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="计划开始日期" prop="start_time" show-overflow-tooltip />
|
||||
<el-table-column label="计划结束日期" prop="deliver_time" show-overflow-tooltip />
|
||||
<el-table-column label="负责人" prop="project_manager_name" show-overflow-tooltip />
|
||||
<el-table-column label="预算工时" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="工时单价" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="预算工时费" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="实际开始日期" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="实际结束日期" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="实际工时" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="实际工时费" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="权重" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="工时进度" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="输出资料" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="权重" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="排序号" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="关键里程碑" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="分项工程" prop="subentry_engineering" show-overflow-tooltip />
|
||||
<el-table-column label="工序步骤" prop="process_step" show-overflow-tooltip />
|
||||
<el-table-column label="质量控制点" prop="quality_control_points" show-overflow-tooltip />
|
||||
<el-table-column label="图例说明" prop="file" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.file && row.file.length > 0">
|
||||
<div v-for="(item, i) in row.file " :key='i'>
|
||||
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="工序步骤号" prop="process_step_no" show-overflow-tooltip />
|
||||
<el-table-column label="班组长" prop="project_member_name" show-overflow-tooltip />
|
||||
<el-table-column label="施工人员" prop="work_user" show-overflow-tooltip />
|
||||
<el-table-column label="施工内容" prop="work_content" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="操作" width="150" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_plan/edit']" type="primary" link @click="handleEdit(row)">
|
||||
<!-- <el-button v-perms="['project.project_plan/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
<el-button v-perms="['project.project_plan/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
@ -91,10 +88,9 @@
|
||||
<script lang="ts" setup name="projectLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiProjectplanLists, apiProjectplanDelete, apiProjectplanDetail } from '@/api/project_plan'
|
||||
import { buildreportLists, buildreportDelete, buildreportDetail } from '@/api/build/build_report'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
const protype = reactive([])
|
||||
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
@ -138,7 +134,7 @@ const handleSelectionChange = (val: any[]) => {
|
||||
const { dictData } = useDictData('')
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiProjectplanLists,
|
||||
fetchFun: buildreportLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
@ -153,7 +149,7 @@ const handleAdd = async () => {
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
console.log(data.id)
|
||||
let res = await apiProjectplanDetail({ id: data.id })
|
||||
let res = await buildreportDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
@ -163,11 +159,11 @@ const handleEdit = async (data: any) => {
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apiProjectplanDelete({ id })
|
||||
await buildreportDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await apiProjectplanDetail({ id: data.id })
|
||||
let res = await buildreportDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
|
91
src/views/build/build_report_detail/index.vue
Normal file
91
src/views/build/build_report_detail/index.vue
Normal file
@ -0,0 +1,91 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="index" label="序号" width="55" />
|
||||
<el-table-column label="施工汇报单号" prop="zy_code" show-overflow-tooltip />
|
||||
<el-table-column label="作业编码" prop="zy_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="分项工程" prop="subentry_engineering" show-overflow-tooltip />
|
||||
<el-table-column label="工序步骤" prop="process_step" show-overflow-tooltip />
|
||||
<el-table-column label="日期" prop="sort" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="user_name" show-overflow-tooltip />
|
||||
<el-table-column label="身份证号" prop="user_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="工种" prop="user_work_type" show-overflow-tooltip />
|
||||
<el-table-column label="今日完工量" prop="work_num" show-overflow-tooltip />
|
||||
<el-table-column label="单价" prop="price" show-overflow-tooltip />
|
||||
<el-table-column label="金额" prop="amount" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
|
||||
|
||||
</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" />
|
||||
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { buildreportDetaillists } from '@/api/build/build_report_detail'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
const protype = reactive([])
|
||||
import feedback from '@/utils/feedback'
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
deliver_time: '',
|
||||
start_time: '',
|
||||
declare_time: ''
|
||||
})
|
||||
//查询
|
||||
const dateclick = (e: any) => {
|
||||
queryParams.start_time = e[0]
|
||||
queryParams.deliver_time = e[1]
|
||||
}
|
||||
|
||||
//重置
|
||||
const reset = () => {
|
||||
Object.assign(queryParams, {
|
||||
project_approval_date: '',
|
||||
start_date: '',
|
||||
delivery_date: '',
|
||||
})
|
||||
|
||||
getLists()
|
||||
}
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('')
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: buildreportDetaillists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
@ -37,7 +37,18 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="方案内容" prop="solution_content" show-overflow-tooltip />
|
||||
<el-table-column label="客户反馈" prop="customer_feedback" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.annex && row.annex.length > 0">
|
||||
<div v-for="(item, i) in row.annex " :key='i'>
|
||||
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['custom.customer_demand_solution/edit']" type="primary" link @click="handleEdit(row)">
|
||||
|
@ -123,20 +123,16 @@ const formData = reactive({
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -287,20 +287,16 @@ const formRules = reactive<any>({
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -136,20 +136,16 @@ const formData = reactive({
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -281,20 +281,16 @@ const formRules = reactive<any>({
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -7,20 +7,17 @@
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="客户名称" prop="field101">
|
||||
<el-input v-model="formData.field101" placeholder="点击选择客户" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field101" placeholder="点击选择客户" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="日期" prop="field102">
|
||||
<el-date-picker v-model="formData.field102" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
|
||||
:style="{ width: '100%' }" placeholder="请选择日期" clearable></el-date-picker>
|
||||
<el-date-picker v-model="formData.field102" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '100%' }" placeholder="请选择日期" clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同编号" prop="field103">
|
||||
<el-input v-model="formData.field103" placeholder="点击选择销售i/项目合同" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field103" placeholder="点击选择销售/项目合同" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@ -32,15 +29,13 @@
|
||||
<el-col :span="12">
|
||||
<el-form-item label="期次" prop="field105">
|
||||
<el-select v-model="formData.field105" placeholder="请选择期次" clearable :style="{ width: '100%' }">
|
||||
<el-option v-for="(item, index) in field105Options" :key="index" :label="item.label"
|
||||
:value="item.value" :disabled="item.disabled"></el-option>
|
||||
<el-option v-for="(item, index) in field105Options" :key="index" :label="item.label" :value="item.value" :disabled="item.disabled"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收款性质" prop="field106">
|
||||
<el-input v-model="formData.field106" placeholder="请输入收款性质" clearable
|
||||
:style="{ width: '100%' }">
|
||||
<el-input v-model="formData.field106" placeholder="请输入收款性质" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -58,30 +53,25 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开票状态" prop="field109">
|
||||
<el-input v-model="formData.field109" placeholder="请输入开票状态" clearable
|
||||
:style="{ width: '100%' }">
|
||||
<el-input v-model="formData.field109" placeholder="请输入开票状态" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="付款方式" prop="field110">
|
||||
<el-select v-model="formData.field110" placeholder="请选择付款方式" clearable
|
||||
:style="{ width: '100%' }">
|
||||
<el-option v-for="(item, index) in field110Options" :key="index" :label="item.label"
|
||||
:value="item.value" :disabled="item.disabled"></el-option>
|
||||
<el-select v-model="formData.field110" placeholder="请选择付款方式" clearable :style="{ width: '100%' }">
|
||||
<el-option v-for="(item, index) in field110Options" :key="index" :label="item.label" :value="item.value" :disabled="item.disabled"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="累计回数" prop="field111">
|
||||
<el-input v-model="formData.field111" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field111" placeholder="系统自动填写" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="款项说明" prop="field112">
|
||||
<el-input v-model="formData.field112" placeholder="请输入款项说明" clearable
|
||||
:style="{ width: '100%' }">
|
||||
<el-input v-model="formData.field112" placeholder="请输入款项说明" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -99,8 +89,7 @@
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件" prop="field115">
|
||||
<el-upload ref="field115" :file-list="field115fileList" :action="field115Action"
|
||||
:before-upload="field115BeforeUpload">
|
||||
<el-upload ref="field115" :file-list="field115fileList" :action="field115Action" :before-upload="field115BeforeUpload">
|
||||
<el-button size="small" type="primary" icon="el-icon-upload">点击上传</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
@ -113,35 +102,29 @@
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="账户编码" prop="field116">
|
||||
<el-input v-model="formData.field116" placeholder="点击选择收款账户" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field116" placeholder="点击选择收款账户" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="开户银行" prop="field117">
|
||||
<el-input v-model="formData.field117" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field117" placeholder="系统自动填写" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="账号" prop="field118">
|
||||
<el-input v-model="formData.field118" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field118" placeholder="系统自动填写" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="是否计息" prop="field119">
|
||||
<el-radio-group v-model="formData.field119" size="medium">
|
||||
<el-radio v-for="(item, index) in field119Options" :key="index" :label="item.value"
|
||||
:disabled="item.disabled">{{ item.label }}</el-radio>
|
||||
<el-radio v-for="(item, index) in field119Options" :key="index" :label="item.value" :disabled="item.disabled">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="开始计息日期" prop="field120">
|
||||
<el-time-picker v-model="formData.field120" format="HH:mm:ss" value-format="HH:mm:ss"
|
||||
:picker-options='{ "selectableRange": "00:00:00-23:59:59" }' :style="{ width: '100%' }"
|
||||
placeholder="请选择开始计息日期" clearable></el-time-picker>
|
||||
<el-time-picker v-model="formData.field120" format="HH:mm:ss" value-format="HH:mm:ss" :picker-options='{ "selectableRange": "00:00:00-23:59:59" }' :style="{ width: '100%' }" placeholder="请选择开始计息日期" clearable></el-time-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
|
@ -3,26 +3,21 @@
|
||||
<el-card>
|
||||
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="120px" label-position="left">
|
||||
<el-form-item label="客户名称" prop="field101">
|
||||
<el-input v-model="formData.field101" placeholder="点击选择客户" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field101" placeholder="点击选择客户" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同编号" prop="field102">
|
||||
<el-input v-model="formData.field102" placeholder="点击选择户销售合同" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field102" placeholder="选择销售合同" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同名称" prop="field103">
|
||||
<el-input v-model="formData.field103" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field103" placeholder="系统自动填写" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="期次" prop="field106">
|
||||
<el-select v-model="formData.field106" placeholder="请选择期次" clearable :style="{ width: '100%' }">
|
||||
<el-option v-for="(item, index) in field106Options" :key="index" :label="item.label"
|
||||
:value="item.value" :disabled="item.disabled"></el-option>
|
||||
<el-option v-for="(item, index) in field106Options" :key="index" :label="item.label" :value="item.value" :disabled="item.disabled"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="计划回款日期" prop="field107">
|
||||
<el-date-picker v-model="formData.field107" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
|
||||
:style="{ width: '100%' }" placeholder="请选择计划回款日期" clearable></el-date-picker>
|
||||
<el-date-picker v-model="formData.field107" format="yyyy-MM-dd" value-format="yyyy-MM-dd" :style="{ width: '100%' }" placeholder="请选择计划回款日期" clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="金额" prop="field108">
|
||||
<el-input v-model="formData.field108" placeholder="请输入金额" clearable :style="{ width: '100%' }">
|
||||
@ -30,21 +25,18 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="是否回款" prop="field109">
|
||||
<el-radio-group v-model="formData.field109" size="medium">
|
||||
<el-radio v-for="(item, index) in field109Options" :key="index" :label="item.value"
|
||||
:disabled="item.disabled">{{ item.label }}</el-radio>
|
||||
<el-radio v-for="(item, index) in field109Options" :key="index" :label="item.value" :disabled="item.disabled">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="回款责任人" prop="field110">
|
||||
<el-input v-model="formData.field110" placeholder="点击指定责任人" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
<el-input v-model="formData.field110" placeholder="点击指定责任人" :disabled='true' clearable :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="field111">
|
||||
<el-input v-model="formData.field111" placeholder="请输入备注" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" prop="field112">
|
||||
<el-upload ref="field112" :file-list="field112fileList" :action="field112Action"
|
||||
:before-upload="field112BeforeUpload">
|
||||
<el-upload ref="field112" :file-list="field112fileList" :action="field112Action" :before-upload="field112BeforeUpload">
|
||||
<el-button size="small" type="primary" icon="el-icon-upload">点击上传</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
@ -1,13 +1,26 @@
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="行政付款详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<popup ref="popupRef" title="承兑汇票详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="160px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同编号">
|
||||
{{ formData.contract.contract_no }}
|
||||
{{ formData.contract.contract_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称">
|
||||
{{ formData.project.name
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号">
|
||||
{{ formData.project.project_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -19,44 +32,54 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<!-- <el-col :span="12">
|
||||
<el-form-item label="供应商名称">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="客户名称">
|
||||
{{ formData.custom.name
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请日期">
|
||||
{{ formData.apply_date
|
||||
<el-form-item label="收票日期">
|
||||
{{ formData.receipt_date
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请人">
|
||||
{{ formData.applier }}
|
||||
<el-form-item label="票据编号">
|
||||
{{ formData.bill_sn }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同金额">
|
||||
{{ formData.amount_daxie }}
|
||||
<el-form-item label="收票银行">
|
||||
{{ formData.acceptance_bank_no }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="付款方式">
|
||||
<dict-value :options="dictData.pay_type" :value="formData.pay_type" />
|
||||
<el-form-item label="合同类型">
|
||||
<dict-value :options="dictData.contract_type" :value="formData.contract_type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="汇票类型">
|
||||
<dict-value :options="dictData.bill_type" :value="formData.bill_type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="本次支付金额">
|
||||
{{ formData.payment_amount }}
|
||||
<el-form-item label="收款金额">
|
||||
{{ formData.receipt_amount }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收款金额大写
|
||||
">
|
||||
{{ formData.receipt_amount_daxie }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收款银行">
|
||||
{{ formData.deposit_bank }}
|
||||
<el-form-item label="汇票承兑银行">
|
||||
{{ formData.draft_acceptance_bank }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -71,12 +94,15 @@
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件">
|
||||
<div>
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" 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>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -123,20 +149,16 @@ const formData = reactive({
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -8,43 +8,43 @@
|
||||
<el-row :gutter="10">
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="组织" prop="org_id">
|
||||
<el-form-item label="组织" prop="org_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-select v-model="formData.org_id" clearable placeholder="请选择组织" @change="deptrmt">
|
||||
<el-option v-for="(item, index) in list1" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select> </el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="请选择部门" prop="dept_id">
|
||||
<el-form-item label="请选择部门" prop="dept_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-select v-model="formData.dept_id" clearable placeholder="请选择部门">
|
||||
<el-option v-for="(item, index) in list2" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select></el-form-item> </el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="customer_id" @click="showDialog = true">
|
||||
<el-form-item label="客户名称" prop="customer_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" @click="showDialog = true">
|
||||
<el-input v-model="customer_name" readonly clearable placeholder="请输入客户名称" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="reimburser">
|
||||
<el-form-item label="项目名称" prop="project_id" @click="showDialog1 = true">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="reimburser">
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-input v-model="project_code" clearable placeholder="请输入项目编码" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同名称" prop="reimburser">
|
||||
<el-input v-model="contract_name" clearable placeholder="请输入合同名称" />
|
||||
<el-form-item label="合同名称" prop="reimburser" @click="showDialog2 = true">
|
||||
<el-input v-model="contract_name" readonly clearable placeholder="请输入合同名称" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同编码" prop="reimburser">
|
||||
<el-input v-model="contract_no" clearable placeholder="请输入合同编码" />
|
||||
<el-input v-model="contract_no" readonly clearable placeholder="请输入合同编码" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -55,33 +55,33 @@
|
||||
</el-select>
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收票日期" prop="invoice_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.invoice_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择收票日期">
|
||||
<el-form-item label="收票日期" prop="receipt_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.receipt_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择收票日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="票据编号" prop="bill_sn">
|
||||
<el-form-item label="票据编号" prop="bill_sn" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.bill_sn" clearable placeholder="请输入票据编号" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收票银行" prop="reimburser">
|
||||
<el-input v-model="formData.reimburser" clearable placeholder="请输入收票银行" />
|
||||
<el-form-item label="收票银行" prop="bank_account_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="acceptance_bank" clearable placeholder="请输入收票银行" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收票账户编码" prop="reimburser">
|
||||
<el-input v-model="formData.reimburser" clearable placeholder="请输入收票账户编码" />
|
||||
<el-form-item label="收票账户编码" prop="bank_account_id">
|
||||
<el-input v-model="acceptance_bank_no" clearable placeholder="请输入收票账户编码" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="汇票类型" prop="bill_type">
|
||||
<el-form-item label="汇票类型" prop="bill_type" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-radio-group v-model="formData.bill_type" placeholder="请选择汇票类型">
|
||||
<el-radio v-for="(item, index) in dictData.bill_type" :key="index" :label="parseInt(item.value)">
|
||||
{{ item.name }}
|
||||
@ -93,13 +93,13 @@
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="汇票承兑银行" prop="draft_acceptance_bank">
|
||||
<el-input v-model="formData.draft_acceptance_bank" readonly clearable placeholder="请输入汇票承兑银行" />
|
||||
<el-form-item label="汇票承兑银行" prop="draft_acceptance_bank" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.draft_acceptance_bank" clearable placeholder="请输入汇票承兑银行" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="汇票到期日期" prop="bill_due_date">
|
||||
<el-form-item label="汇票到期日期" prop="bill_due_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.bill_due_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择汇票到期日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
@ -107,13 +107,13 @@
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收款金额" prop="receipt_amount">
|
||||
<el-form-item label="收款金额" prop="receipt_amount" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.receipt_amount" clearable placeholder="请输入收款金额" @input="amountinput" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收款金额大写" prop="receipt_amount_daxie">
|
||||
<el-form-item label="收款金额大写" prop="receipt_amount_daxie" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.receipt_amount_daxie" readonly clearable placeholder="请输入收款金额大写" />
|
||||
|
||||
</el-form-item>
|
||||
@ -149,17 +149,20 @@
|
||||
|
||||
|
||||
<el-dialog v-model="showDialog1" title="选择项目" width="70%">
|
||||
<projectDialog @customEvent="customEvent1"></projectDialog>
|
||||
<projectDialog @customEvent="customEvent1" :customer_id="formData.customer_id"></projectDialog>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog2" title="选择合同" width="70%">
|
||||
<proontractDialog @customEvent="customEvent2"></proontractDialog>
|
||||
<el-dialog v-model="showDialog2" title="选择销售合同" width="70%">
|
||||
<salescontract @customEvent="customEvent2" contract_type="2"></salescontract>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog" title="选择客户" width="70%">
|
||||
<customDialog @customEvent="customEvent"></customDialog>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog3" title="选择银行" width="70%">
|
||||
<bankaccountDialog @customEvent="customEvent3"></bankaccountDialog>
|
||||
</el-dialog>
|
||||
</el-form>
|
||||
</popup>
|
||||
|
||||
@ -171,7 +174,8 @@ import customDialog from '@/components/custom-dialog/index.vue'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import proontractDialog from '@/components/proontract/index.vue'
|
||||
import bankaccountDialog from '@/components/bankaccount/index.vue'
|
||||
import salescontractDialog from '@/components/salescontract/index.vue'
|
||||
import { acceptancebillAdd, acceptancebillEdit, acceptancebillDetail } from '@/api/acceptance'
|
||||
import { toChinesNum } from "@/utils/util";
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
@ -192,6 +196,9 @@ const contract_no = ref('')
|
||||
const customer_name = ref('')
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const contract_type = ref('')
|
||||
const acceptance_bank_no = ref('')
|
||||
const acceptance_bank = ref('')
|
||||
const list1 = reactive([])
|
||||
const list2 = reactive([])
|
||||
|
||||
@ -237,7 +244,7 @@ const showDialog = ref(false)
|
||||
const showDialog1 = ref(false)
|
||||
const showDialog2 = ref(false)
|
||||
|
||||
|
||||
const showDialog3 = ref(false)
|
||||
|
||||
|
||||
|
||||
@ -249,10 +256,25 @@ const customEvent = (e: any) => {
|
||||
};
|
||||
|
||||
const customEvent1 = (e: any) => {
|
||||
formData.contract_id = e.id;
|
||||
project_name.value = e.name;
|
||||
project_code.value = e.project_code;
|
||||
showDialog1.value = false;
|
||||
};
|
||||
const customEvent2 = (e: any) => {
|
||||
formData.project_id = e.id
|
||||
contract_name.value = e.contract_name;
|
||||
contract_no.value = e.contract_code;
|
||||
contract_type.value = e.contract_type;
|
||||
|
||||
showDialog2.value = false;
|
||||
};
|
||||
|
||||
const customEvent3 = (e: any) => {
|
||||
|
||||
|
||||
showDialog3.value = false;
|
||||
};
|
||||
|
||||
//获取所有组织
|
||||
const getlist = () => {
|
||||
@ -294,7 +316,7 @@ const formData = reactive({
|
||||
customer_id: 0,
|
||||
project_id: 0,
|
||||
contract_id: 0,
|
||||
invoice_type: "",
|
||||
receipt_date: "",
|
||||
bill_sn: "",
|
||||
bank_account_id: 0,
|
||||
bill_type: 0,
|
||||
@ -317,21 +339,17 @@ const formRules = reactive<any>({
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -341,9 +359,19 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
contract_name.value = data.contract.contract_name;
|
||||
contract_no.value = data.contract.contract_code;
|
||||
project_name.value = data.project.name;
|
||||
project_code.value = data.project.project_code;
|
||||
contract_type.value = data.contract.contract_type;
|
||||
customer_name.value = data.custom.name
|
||||
if (formData.reimbursement_amount) {
|
||||
toChinesNum(formData.reimbursement_amount)
|
||||
acceptance_bank_no.value = data.bankAccount.account_sn
|
||||
acceptance_bank.value = data.bankAccount.deposit_bank
|
||||
if (data.reimbursement_amount) {
|
||||
toChinesNum(data.reimbursement_amount)
|
||||
}
|
||||
|
||||
|
||||
@ -361,7 +389,7 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = formDataannex.map((item: any) => item.uri).toString()
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
|
||||
|
||||
|
@ -2,16 +2,22 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="提交人" prop="commitor">
|
||||
<el-input class="w-[280px]" v-model="queryParams.commitor" clearable placeholder="请输入提交人" />
|
||||
<el-form-item label="票据编号" prop="bill_sn">
|
||||
<el-input class="w-[280px]" v-model="queryParams.bill_sn" clearable placeholder="请输入票据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="报销id" prop="expense_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.expense_id" clearable placeholder="请输入报销id" />
|
||||
<el-form-item label="客户" prop="customer_id">
|
||||
<el-select class="w-[280px]" v-model="queryParams.customer_id" clearable placeholder="请选择客户">
|
||||
<el-option v-for="(item, index) in customerlist" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="发票类型" prop="cost_subject_id">
|
||||
<el-select class="w-[280px]" v-model="queryParams.cost_subject_id" clearable placeholder="请选择费用科目id">
|
||||
|
||||
<el-option v-for="(item, index) in dictData.invoice_type" :key="index" :label="item.name" :value="item.value" />
|
||||
<el-form-item label="合同" prop="contract">
|
||||
<el-select class="w-[280px]" v-model="queryParams.contract_id" clearable placeholder="请选择合同">
|
||||
<el-option v-for="(item, index) in contractlist" :key="index" :label="item.contract_name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票类型" prop="bill_type">
|
||||
<el-select class="w-[280px]" v-model="queryParams.bill_type" clearable placeholder="请选择汇票类型">
|
||||
<el-option v-for="(item, index) in dictData.bill_type" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@ -37,19 +43,24 @@
|
||||
<el-table-column label="序号" type="index" show-overflow-tooltip />
|
||||
<el-table-column label="处理流程" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="流程步骤" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="组织名称" prop="approve_no" show-overflow-tooltip />
|
||||
<el-table-column label="客户名称" prop="contract_no" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="contract_name" show-overflow-tooltip />
|
||||
<el-table-column label="合同编号" prop="supplier_name" show-overflow-tooltip />
|
||||
<el-table-column label="收票日期" prop="apply_date" show-overflow-tooltip />
|
||||
<el-table-column label="票据编号" prop="applier" show-overflow-tooltip />
|
||||
<el-table-column label="收票银行" prop="payment_amount" show-overflow-tooltip />
|
||||
<el-table-column label="汇票类型" prop="invoice_amount" show-overflow-tooltip />
|
||||
<el-table-column label="汇票到期日期" prop="amount_excluding_tax" show-overflow-tooltip />
|
||||
<el-table-column label="收款金额(元)" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="支出金额" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="兑现金额" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="余额" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="组织名称" prop="org_name" show-overflow-tooltip />
|
||||
<el-table-column label="部门名称" prop="dept_name" show-overflow-tooltip />
|
||||
<el-table-column label="客户名称" prop="customer_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
|
||||
<el-table-column label="收票日期" prop="receipt_date" show-overflow-tooltip />
|
||||
<el-table-column label="票据编号" prop="bill_sn" show-overflow-tooltip />
|
||||
<el-table-column label="收票银行" prop="account_name" show-overflow-tooltip />
|
||||
<el-table-column label="汇票类型" prop="bill_type" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.bill_type" :value="row.bill_type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="汇票到期日期" prop="bill_due_date" show-overflow-tooltip />
|
||||
<el-table-column label="收款金额(元)" prop="receipt_amount" show-overflow-tooltip />
|
||||
<el-table-column label="支出金额" prop="pay_amount" show-overflow-tooltip />
|
||||
<el-table-column label="兑现金额" prop="cash_amount" show-overflow-tooltip />
|
||||
<el-table-column label="余额" prop="balance" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="操作" width="150" fixed="right">
|
||||
@ -82,7 +93,8 @@ import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { acceptancebillLists, acceptancebillDelete, acceptancebillDetail } from '@/api/acceptance'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
|
||||
import { apiCustomLists } from '@/api/custom'
|
||||
import { apiProcurementContractLists } from '@/api/procurement_contract'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
@ -91,13 +103,14 @@ const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDtail = ref(false)
|
||||
|
||||
const contractlist = ref([])
|
||||
const customerlist = ref([])
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
commitor: '',
|
||||
expense_id: '',
|
||||
invoice_type: '',
|
||||
|
||||
bill_type: '',
|
||||
customer_id: '',
|
||||
contract_id: '',
|
||||
bill_sn: ''
|
||||
})
|
||||
|
||||
|
||||
@ -142,6 +155,7 @@ const handleDelete = async (id: number | any[]) => {
|
||||
await acceptancebillDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
//详情
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await acceptancebillDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
@ -149,7 +163,29 @@ const handledetail = async (data: any) => {
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
//获取客户信息列表
|
||||
const customerList = () => {
|
||||
apiCustomLists({
|
||||
page_no: 1,
|
||||
page_size: 9999,
|
||||
|
||||
}).then((res) => {
|
||||
customerlist.value = res.lists
|
||||
})
|
||||
}
|
||||
|
||||
//获取合同列表
|
||||
const contractList = () => {
|
||||
apiProcurementContractLists({
|
||||
page_no: 1,
|
||||
page_size: 9999,
|
||||
all: 1
|
||||
}).then((res) => {
|
||||
contractlist.value = res.lists
|
||||
})
|
||||
}
|
||||
customerList()
|
||||
contractList()
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
@ -1,25 +1,26 @@
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="行政付款详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<popup ref="popupRef" title="汇票兑现详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="160px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同编号">
|
||||
{{ formData.contract.contract_no }}
|
||||
<el-form-item label="组织名称">
|
||||
{{ formData.org.name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同名称">
|
||||
{{ formData.contract.contract_name
|
||||
<el-form-item label="部门名称">
|
||||
{{ formData.org.name
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
<!-- <el-col :span="12">
|
||||
<el-form-item label="供应商名称">
|
||||
{{ formData.custom.name
|
||||
@ -27,40 +28,51 @@
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请日期">
|
||||
{{ formData.apply_date
|
||||
<el-form-item label="票据编号">
|
||||
{{ formData.acceptance.bill_sn
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请人">
|
||||
{{ formData.applier }}
|
||||
<el-form-item label="汇票类型">
|
||||
<dict-value :options="dictData.bill_type" :value="formData.acceptance.bill_type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同金额">
|
||||
<el-form-item label="汇票承兑银行">
|
||||
{{ formData.acceptance.draft_acceptance_bank }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收票账户编码">
|
||||
{{ formData.bankAccount.account }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收票账户">
|
||||
{{ formData.bankAccount.account_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="兑现日期">
|
||||
{{ formData.maturity_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="兑现金额">
|
||||
{{ formData.amount }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="兑现金额大写">
|
||||
{{ formData.amount_daxie }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="付款方式">
|
||||
<dict-value :options="dictData.pay_type" :value="formData.pay_type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="本次支付金额">
|
||||
{{ formData.payment_amount }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收款银行">
|
||||
{{ formData.deposit_bank }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注">
|
||||
{{ formData.remark
|
||||
@ -70,14 +82,13 @@
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件">
|
||||
<div>
|
||||
<div v-for="(item, index) in formDataannex" 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>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" 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>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div v-else>暂无文件</div>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
@ -122,21 +133,17 @@ const formData = reactive({
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -9,19 +9,19 @@
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="组织" prop="org_id">
|
||||
<el-select v-model="formData.org_id" clearable placeholder="请选择组织" @change="deptrmt">
|
||||
<el-select v-model="formData.org_id" clearable placeholder="请选择组织" @change="deptrmt" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-option v-for="(item, index) in list1" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select> </el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="请选择部门" prop="dept_id">
|
||||
<el-select v-model="formData.dept_id" clearable placeholder="请选择部门">
|
||||
<el-select v-model="formData.dept_id" clearable placeholder="请选择部门" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-option v-for="(item, index) in list2" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select></el-form-item> </el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="票据编号" prop="bill_sn">
|
||||
<el-input v-model="formData.bill_sn" clearable placeholder="请输入票据编号" />
|
||||
<el-form-item label="票据编号" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" @click="showDialog = true">
|
||||
<el-input v-model="bill_sn" clearable readonly placeholder="请输入票据编号" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -29,8 +29,8 @@
|
||||
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="汇票类型" prop="bill_type">
|
||||
<el-radio-group v-model="formData.bill_type" placeholder="请选择汇票类型">
|
||||
<el-form-item label="汇票类型" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-radio-group v-model="bill_type" readonly placeholder="请选择汇票类型">
|
||||
<el-radio v-for="(item, index) in dictData.bill_type" :key="index" :label="parseInt(item.value)">
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
@ -41,34 +41,34 @@
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="汇票承兑银行" prop="draft_acceptance_bank">
|
||||
<el-input v-model="formData.draft_acceptance_bank" readonly clearable placeholder="请输入汇票承兑银行" />
|
||||
<el-form-item label="汇票承兑银行" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="draft_acceptance_bank" readonly clearable placeholder="请输入汇票承兑银行" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="汇票到期日期" prop="bill_due_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.bill_due_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择汇票到期日期">
|
||||
<el-form-item label="汇票到期日期" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" readonly v-model="bill_due_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择汇票到期日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收票账户编码" prop="reimburser">
|
||||
<el-input v-model="formData.reimburser" clearable placeholder="请输入收票账户编码" />
|
||||
<el-form-item label="收票账户编码" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="bank_account_no" readonly clearable placeholder="请输入收票账户编码" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收票银行" prop="reimburser">
|
||||
<el-input v-model="formData.reimburser" clearable placeholder="请输入收票银行" />
|
||||
<el-form-item label="收票银行" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="bank_account" readonly clearable placeholder="请输入收票银行" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="兑现日期" prop="maturity_date">
|
||||
<el-form-item label="兑现日期" prop="maturity_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.maturity_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择兑现日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
@ -76,13 +76,13 @@
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="兑现金额" prop="amount">
|
||||
<el-form-item label="兑现金额" prop="amount" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.amount" clearable placeholder="请输入兑现金额" @input="amountinput" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="兑现金额大写" prop="amount_daxie">
|
||||
<el-form-item label="兑现金额大写" prop="amount_daxie" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.amount_daxie" readonly clearable placeholder="请输入兑现金额大写" />
|
||||
|
||||
</el-form-item>
|
||||
@ -117,16 +117,8 @@
|
||||
|
||||
|
||||
|
||||
<el-dialog v-model="showDialog1" title="选择项目" width="70%">
|
||||
<projectDialog @customEvent="customEvent1"></projectDialog>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog2" title="选择合同" width="70%">
|
||||
<proontractDialog @customEvent="customEvent2"></proontractDialog>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog" title="选择客户" width="70%">
|
||||
<customDialog @customEvent="customEvent"></customDialog>
|
||||
<el-dialog v-model="showDialog" title="选择汇票" width="70%">
|
||||
<acceptanceDialog @customEvent="customEvent"></acceptanceDialog>
|
||||
</el-dialog>
|
||||
|
||||
</el-form>
|
||||
@ -136,11 +128,10 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectEdit">
|
||||
import customDialog from '@/components/custom-dialog/index.vue'
|
||||
import acceptanceDialog from '@/components/acceptance/index.vue'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import proontractDialog from '@/components/proontract/index.vue'
|
||||
|
||||
import { redemptionbillAdd, redemptionbillEdit, redemptionbillDetail } from '@/api/redemption_bill'
|
||||
import { toChinesNum } from "@/utils/util";
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
@ -156,11 +147,14 @@ const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
const active = ref(0)
|
||||
const formDataannex = reactive([])
|
||||
const contract_name = ref('')
|
||||
const contract_no = ref('')
|
||||
|
||||
const customer_name = ref('')
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const bill_sn = ref('')
|
||||
const bill_type = ref('')
|
||||
const bill_due_date = ref('')
|
||||
const bank_account = ref('')
|
||||
const bank_account_no = ref('')
|
||||
const draft_acceptance_bank = ref('')
|
||||
const list1 = reactive([])
|
||||
const list2 = reactive([])
|
||||
|
||||
@ -203,8 +197,7 @@ const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const amount_daxie = ref('')
|
||||
const showDialog = ref(false)
|
||||
const showDialog1 = ref(false)
|
||||
const showDialog2 = ref(false)
|
||||
|
||||
|
||||
|
||||
|
||||
@ -212,14 +205,16 @@ const showDialog2 = ref(false)
|
||||
|
||||
|
||||
const customEvent = (e: any) => {
|
||||
formData.customer_id = e.id;
|
||||
customer_name.value = e.name;
|
||||
formData.acceptance_bill_id = e.id;
|
||||
bill_sn.value = e.bill_sn
|
||||
bill_due_date.value = e.bill_due_date
|
||||
draft_acceptance_bank.value = e.draft_acceptance_bank
|
||||
bill_type.value = e.bill_type
|
||||
bank_account.value = e.account_name
|
||||
bank_account_no.value = e.account
|
||||
showDialog.value = false;
|
||||
};
|
||||
|
||||
const customEvent1 = (e: any) => {
|
||||
showDialog1.value = false;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -260,7 +255,7 @@ const formData = reactive({
|
||||
id: '',
|
||||
org_id: '',
|
||||
dept_id: '',
|
||||
supplier_id: 1,
|
||||
acceptance_bill_id: 1,
|
||||
maturity_date: "",
|
||||
amount: "",
|
||||
amount_daxie: "",
|
||||
@ -278,21 +273,17 @@ const formRules = reactive<any>({
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -302,9 +293,18 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
customer_name.value = data.custom.name
|
||||
if (formData.reimbursement_amount) {
|
||||
toChinesNum(formData.reimbursement_amount)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
// customer_name.value = data.custom.name
|
||||
bill_sn.value = data.acceptance.bill_sn
|
||||
bill_due_date.value = data.acceptance.bill_due_date
|
||||
draft_acceptance_bank.value = data.acceptance.draft_acceptance_bank
|
||||
bill_type.value = data.acceptance.bill_type
|
||||
bank_account.value = data.bankAccount.deposit_bank
|
||||
bank_account_no.value = data.bankAccount.account_sn
|
||||
if (data.amount) {
|
||||
toChinesNum(data.amount)
|
||||
}
|
||||
|
||||
|
||||
@ -322,7 +322,7 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = formDataannex.map((item: any) => item.uri).toString()
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
|
||||
|
||||
|
@ -5,13 +5,19 @@
|
||||
<el-form-item label="票据编号" prop="bill_sn">
|
||||
<el-input class="w-[280px]" v-model="queryParams.bill_sn" clearable placeholder="请输入票据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户id" prop="customer_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.customer_id" clearable placeholder="请输入客户id" />
|
||||
<el-form-item label="客户" prop="customer_id">
|
||||
<el-select class="w-[280px]" v-model="queryParams.contract_id" clearable placeholder="请选择客户">
|
||||
<el-option v-for="(item, index) in customerlist" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="销售合同id" prop="contract_id">
|
||||
<el-select class="w-[280px]" v-model="queryParams.contract_id" clearable placeholder="请选择销售合同id">
|
||||
|
||||
<el-option v-for="(item, index) in dictData.invoice_type" :key="index" :label="item.name" :value="item.value" />
|
||||
<el-form-item label="合同" prop="contract">
|
||||
<el-select class="w-[280px]" v-model="queryParams.customer_id" clearable placeholder="请选择合同">
|
||||
<el-option v-for="(item, index) in contractlist" :key="index" :label="item.contract_name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票类型" prop="bill_type">
|
||||
<el-select class="w-[280px]" v-model="queryParams.bill_type" clearable placeholder="请选择汇票类型">
|
||||
<el-option v-for="(item, index) in dictData.bill_type" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@ -37,17 +43,20 @@
|
||||
<el-table-column label="序号" type="index" show-overflow-tooltip />
|
||||
<el-table-column label="处理流程" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="流程步骤" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="组织名称" prop="approve_no" show-overflow-tooltip />
|
||||
<el-table-column label="票据编号" prop="applier" show-overflow-tooltip />
|
||||
<el-table-column label="收票银行" prop="payment_amount" show-overflow-tooltip />
|
||||
<el-table-column label="汇票类型" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="汇票承兑银行" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="汇票到期日期" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="收票账户编码" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="收票银行" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="兑现日期" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="兑现金额" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="兑现金额大写" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="组织名称" prop="org_name" show-overflow-tooltip />
|
||||
<el-table-column label="票据编号" prop="bill_sn" show-overflow-tooltip />
|
||||
<el-table-column label="汇票类型" prop="bill_type" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.bill_type" :value="row.bill_type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="汇票承兑银行" prop="draft_acceptance_bank" show-overflow-tooltip />
|
||||
<el-table-column label="汇票到期日期" prop="bill_due_date" show-overflow-tooltip />
|
||||
<el-table-column label="收票账户编码" prop="account" show-overflow-tooltip />
|
||||
<el-table-column label="收票银行" prop="account_name" show-overflow-tooltip />
|
||||
<el-table-column label="兑现日期" prop="maturity_date" show-overflow-tooltip />
|
||||
<el-table-column label="兑现金额" prop="amount" show-overflow-tooltip />
|
||||
<el-table-column label="兑现金额大写" prop="amount_daxie" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
|
||||
@ -81,7 +90,8 @@ import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { redemptionbillLists, redemptionbillDelete, redemptionbillDetail } from '@/api/redemption_bill'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
|
||||
import { apiCustomLists } from '@/api/custom'
|
||||
import { apiProcurementContractLists } from '@/api/procurement_contract'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
@ -90,13 +100,14 @@ const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDtail = ref(false)
|
||||
|
||||
const contractlist = ref([])
|
||||
const customerlist = ref([])
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
bill_sn: '',
|
||||
bill_type: '',
|
||||
customer_id: '',
|
||||
invoice_type: '',
|
||||
|
||||
contract_id: '',
|
||||
bill_sn: '',
|
||||
})
|
||||
|
||||
|
||||
@ -141,6 +152,7 @@ const handleDelete = async (id: number | any[]) => {
|
||||
await redemptionbillDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
//详情
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await redemptionbillDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
@ -149,7 +161,29 @@ const handledetail = async (data: any) => {
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
//获取客户信息列表
|
||||
const customerList = () => {
|
||||
apiCustomLists({
|
||||
page_no: 1,
|
||||
page_size: 9999,
|
||||
|
||||
}).then((res) => {
|
||||
customerlist.value = res.lists
|
||||
})
|
||||
}
|
||||
|
||||
//获取合同列表
|
||||
const contractList = () => {
|
||||
apiProcurementContractLists({
|
||||
page_no: 1,
|
||||
page_size: 9999,
|
||||
all: 1
|
||||
}).then((res) => {
|
||||
contractlist.value = res.lists
|
||||
})
|
||||
}
|
||||
customerList()
|
||||
contractList()
|
||||
getLists()
|
||||
</script>
|
||||
|
||||
|
@ -1,10 +1,33 @@
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="行政付款详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<popup ref="popupRef" title="汇票转出详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="160px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="组织名称">
|
||||
{{ formData.org.name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="部门名称">
|
||||
{{ formData.org.name
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商名称">
|
||||
{{ formData.supplier_name
|
||||
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同编号">
|
||||
{{ formData.contract.contract_no }}
|
||||
@ -12,55 +35,86 @@
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称">
|
||||
{{ formData.project.name
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号">
|
||||
{{ formData.project.project_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同名称">
|
||||
{{ formData.contract.contract_name
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<!-- <el-col :span="12">
|
||||
<el-form-item label="供应商名称">
|
||||
{{ formData.custom.name
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请日期">
|
||||
{{ formData.apply_date
|
||||
}}
|
||||
<el-form-item label="合同类型">
|
||||
<dict-value :options="dictData.contract_type" :value="formData.contract.contract_type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请人">
|
||||
{{ formData.applier }}
|
||||
<el-form-item label="票据编号">
|
||||
{{ formData.acceptance.bill_sn
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="汇票类型">
|
||||
<dict-value :options="dictData.bill_type" :value="formData.acceptance.bill_type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同金额">
|
||||
<el-form-item label="汇票承兑银行">
|
||||
{{ formData.acceptance.draft_acceptance_bank }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收票账户编码">
|
||||
{{ formData.bankAccount.account }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收票账户">
|
||||
{{ formData.bankAccount.account_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="汇票到期日期">
|
||||
{{ formData.acceptance.bill_due_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="付款日期">
|
||||
{{ formData.payment_date }}
|
||||
</el-form-item>
|
||||
</el-col> <el-col :span="12">
|
||||
<el-form-item label="金额">
|
||||
{{ formData.amount }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="金额大写">
|
||||
{{ formData.amount_daxie }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="付款方式">
|
||||
<dict-value :options="dictData.pay_type" :value="formData.pay_type" />
|
||||
<el-form-item label="备注">
|
||||
{{ formData.remark
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="本次支付金额">
|
||||
{{ formData.payment_amount }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="收款银行">
|
||||
{{ formData.deposit_bank }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注">
|
||||
{{ formData.remark
|
||||
@ -71,12 +125,13 @@
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件">
|
||||
<div>
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" 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>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无文件</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -122,24 +177,22 @@ const formData = reactive({
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
Object.assign(formData, data)
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
|
@ -8,42 +8,30 @@
|
||||
<el-row :gutter="10">
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="组织" prop="org_id">
|
||||
<el-form-item label="组织" prop="org_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-select v-model="formData.org_id" clearable placeholder="请选择组织" @change="deptrmt">
|
||||
<el-option v-for="(item, index) in list1" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select> </el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="请选择部门" prop="dept_id">
|
||||
<el-form-item label="请选择部门" prop="dept_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-select v-model="formData.dept_id" clearable placeholder="请选择部门">
|
||||
<el-option v-for="(item, index) in list2" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select></el-form-item> </el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商名称" prop="customer_id">
|
||||
<el-form-item label="供应商名称" prop="supplier_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="customer_name" clearable placeholder="请输入供应商名称" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商编码" prop="customer_id">
|
||||
<el-form-item label="供应商编码" prop="supplier_id">
|
||||
<el-input v-model="customer_name" clearable placeholder="请输入供应商编码 " />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="reimburser">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="reimburser">
|
||||
<el-input v-model="project_code" clearable placeholder="请输入项目编码" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同名称" prop="reimburser">
|
||||
<el-form-item label="合同名称" prop="reimburser" @click="showDialog2 = true">
|
||||
<el-input v-model="contract_name" clearable placeholder="请输入合同名称" />
|
||||
|
||||
</el-form-item>
|
||||
@ -60,30 +48,43 @@
|
||||
<el-option v-for="(item, index) in dictData.contract_type" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="reimburser">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="reimburser">
|
||||
<el-input v-model="project_code" clearable placeholder="请输入项目编码" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="票据编号" prop="bill_sn">
|
||||
<el-input v-model="formData.bill_sn" clearable placeholder="请输入票据编号" />
|
||||
<el-form-item label="票据编号" prop="bill_sn" @click="showDialog1 = true">
|
||||
<el-input v-model="bill_sn" readonly clearable placeholder="请输入票据编号" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户银行" prop="reimburser">
|
||||
<el-input v-model="formData.reimburser" clearable placeholder="请输入开户银行" />
|
||||
<el-form-item label="开户银行" prop="reimburser" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="bank_account" clearable placeholder="请输入开户银行" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账户编码" prop="reimburser">
|
||||
<el-input v-model="formData.reimburser" clearable placeholder="请输入账户编码" />
|
||||
<el-form-item label="账户编码" prop="reimburser" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="bank_account_no" clearable placeholder="请输入账户编码" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="汇票类型" prop="bill_type">
|
||||
<el-radio-group v-model="formData.bill_type" placeholder="请选择汇票类型">
|
||||
<el-form-item label="汇票类型" prop="bill_type" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-radio-group v-model="bill_type" placeholder="请选择汇票类型">
|
||||
<el-radio v-for="(item, index) in dictData.bill_type" :key="index" :label="parseInt(item.value)">
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
@ -94,14 +95,14 @@
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="汇票承兑银行" prop="draft_acceptance_bank">
|
||||
<el-input v-model="formData.draft_acceptance_bank" readonly clearable placeholder="请输入汇票承兑银行" />
|
||||
<el-form-item label="汇票承兑银行" prop="draft_acceptance_bank" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="draft_acceptance_bank" readonly clearable placeholder="请输入汇票承兑银行" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="汇票到期日期" prop="bill_due_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.bill_due_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择汇票到期日期">
|
||||
<el-form-item label="汇票到期日期" prop="bill_due_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="bill_due_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择汇票到期日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -114,13 +115,13 @@
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="金额" prop="amount">
|
||||
<el-form-item label="金额" prop="amount" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.amount" clearable placeholder="请输入金额" @input="amountinput" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="金额大写" prop="amount_daxie">
|
||||
<el-form-item label="金额大写" prop="amount_daxie" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.amount_daxie" readonly clearable placeholder="请输入金额大写" />
|
||||
|
||||
</el-form-item>
|
||||
@ -155,16 +156,16 @@
|
||||
|
||||
|
||||
|
||||
<el-dialog v-model="showDialog1" title="选择项目" width="70%">
|
||||
<projectDialog @customEvent="customEvent1"></projectDialog>
|
||||
<el-dialog v-model="showDialog1" title="选择汇票" width="70%">
|
||||
<acceptanceDialog @customEvent="customEvent1"></acceptanceDialog>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog2" title="选择合同" width="70%">
|
||||
<proontractDialog @customEvent="customEvent2"></proontractDialog>
|
||||
<subcontractDialog @customEvent="customEvent2"></subcontractDialog>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog" title="选择客户" width="70%">
|
||||
<customDialog @customEvent="customEvent"></customDialog>
|
||||
<el-dialog v-model="showDialog" title="选择供应商" width="70%">
|
||||
<supplierDialog @customEvent="customEvent"></supplierDialog>
|
||||
</el-dialog>
|
||||
|
||||
</el-form>
|
||||
@ -174,11 +175,11 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectEdit">
|
||||
import customDialog from '@/components/custom-dialog/index.vue'
|
||||
import supplierDialog from '@/components/supplier/index.vue'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import proontractDialog from '@/components/proontract/index.vue'
|
||||
import acceptanceDialog from '@/components/acceptance/index.vue'
|
||||
import subcontractDialog from '@/components/procurementsubcontracting_selector/index.vue'
|
||||
import { transferbillAdd, transferbillEdit, transferbillDetail } from '@/api/transfer_bill'
|
||||
import { toChinesNum } from "@/utils/util";
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
@ -199,9 +200,15 @@ const contract_no = ref('')
|
||||
const customer_name = ref('')
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const contract_type = ref('')
|
||||
const bill_sn = ref('')
|
||||
const bill_type = ref('')
|
||||
const bill_due_date = ref('')
|
||||
const bank_account = ref('')
|
||||
const bank_account_no = ref('')
|
||||
const draft_acceptance_bank = ref('')
|
||||
const list1 = reactive([])
|
||||
const list2 = reactive([])
|
||||
|
||||
const userInfo = userStore.userInfo
|
||||
console.log(userInfo, '222222')
|
||||
// 上传文件
|
||||
@ -258,6 +265,14 @@ const customEvent = (e: any) => {
|
||||
const customEvent1 = (e: any) => {
|
||||
showDialog1.value = false;
|
||||
};
|
||||
const customEvent2 = (e: any) => {
|
||||
contract_name.value = e.contract_name;
|
||||
contract_no.value = e.contract_no;
|
||||
project_name.value = e.project_name;
|
||||
project_code.value = e.project_code;
|
||||
contract_type.value = e.contract_type;
|
||||
showDialog2.value = false;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -319,23 +334,21 @@ const formRules = reactive<any>({
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
@ -343,8 +356,23 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
}
|
||||
customer_name.value = data.custom.name
|
||||
if (formData.reimbursement_amount) {
|
||||
toChinesNum(formData.reimbursement_amount)
|
||||
contract_name.value = data.contract.contract_name;
|
||||
contract_no.value = data.contract.contract_no;
|
||||
project_name.value = data.project.name;
|
||||
project_code.value = data.project.project_code;
|
||||
contract_type.value = data.contract.contract_type;
|
||||
bill_sn.value = data.acceptance.bill_sn
|
||||
bill_due_date.value = data.acceptance.bill_due_date
|
||||
draft_acceptance_bank.value = data.acceptance.draft_acceptance_bank
|
||||
bill_type.value = data.acceptance.bill_type
|
||||
bank_account.value = data.bankAccount.deposit_bank
|
||||
bank_account_no.value = data.bankAccount.account_sn
|
||||
|
||||
|
||||
|
||||
// bill_sn.value = data.acceptance.bill_sn
|
||||
if (data.amount) {
|
||||
toChinesNum(data.amount)
|
||||
}
|
||||
|
||||
|
||||
@ -362,7 +390,7 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = formDataannex.map((item: any) => item.uri).toString()
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
|
||||
|
||||
|
@ -5,13 +5,19 @@
|
||||
<el-form-item label="票据编号" prop="bill_sn">
|
||||
<el-input class="w-[280px]" v-model="queryParams.bill_sn" clearable placeholder="请输入票据编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户id" prop="customer_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.customer_id" clearable placeholder="请输入客户id" />
|
||||
<el-form-item label="客户" prop="customer_id">
|
||||
<el-select class="w-[280px]" v-model="queryParams.customer_id" clearable placeholder="请选择客户">
|
||||
<el-option v-for="(item, index) in customerlist" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="销售合同id" prop="contract_id">
|
||||
<el-select class="w-[280px]" v-model="queryParams.contract_id" clearable placeholder="请选择销售合同id">
|
||||
|
||||
<el-option v-for="(item, index) in dictData.invoice_type" :key="index" :label="item.name" :value="item.value" />
|
||||
<el-form-item label="合同" prop="contract">
|
||||
<el-select class="w-[280px]" v-model="queryParams.contract_id" clearable placeholder="请选择合同">
|
||||
<el-option v-for="(item, index) in contractlist" :key="index" :label="item.contract_name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票类型" prop="bill_type">
|
||||
<el-select class="w-[280px]" v-model="queryParams.bill_type" clearable placeholder="请选择汇票类型">
|
||||
<el-option v-for="(item, index) in dictData.bill_type" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@ -40,14 +46,18 @@
|
||||
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="contract_name" show-overflow-tooltip />
|
||||
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
|
||||
<el-table-column label="收票日期" prop="apply_date" show-overflow-tooltip />
|
||||
<el-table-column label="票据编号" prop="applier" show-overflow-tooltip />
|
||||
<el-table-column label="开户银行" prop="payment_amount" show-overflow-tooltip />
|
||||
<el-table-column label="账户编码" prop="invoice_amount" show-overflow-tooltip />
|
||||
<el-table-column label="收票日期" prop="receipt_date" show-overflow-tooltip />
|
||||
<el-table-column label="票据编号" prop="bill_sn" show-overflow-tooltip />
|
||||
<el-table-column label="开户银行" prop="account_name" show-overflow-tooltip />
|
||||
<el-table-column label="账户编码" prop="account" show-overflow-tooltip />
|
||||
<el-table-column label="汇票到期日期" prop="amount_excluding_tax" show-overflow-tooltip />
|
||||
<el-table-column label="汇票类型" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="汇票承兑银行" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="汇票到期日期" prop="tax" show-overflow-tooltip />
|
||||
<el-table-column label="汇票类型" prop="invoice_amount" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.bill_type" :value="row.bill_type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="汇票承兑银行" prop="draft_acceptance_bank" show-overflow-tooltip />
|
||||
<el-table-column label="汇票到期日期" prop="bill_due_date" show-overflow-tooltip />
|
||||
<el-table-column label="付款日期" prop="payment_date" show-overflow-tooltip />
|
||||
<el-table-column label="余额" prop="amount" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
@ -82,7 +92,8 @@ import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { transferbillLists, transferbillDelete, transferbillDetail } from '@/api/transfer_bill'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
|
||||
import { apiCustomLists } from '@/api/custom'
|
||||
import { apiProcurementContractLists } from '@/api/procurement_contract'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
@ -91,13 +102,14 @@ const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDtail = ref(false)
|
||||
|
||||
const contractlist = ref([])
|
||||
const customerlist = ref([])
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
bill_sn: '',
|
||||
customer_id: '',
|
||||
invoice_type: '',
|
||||
|
||||
contract_id: '',
|
||||
bill_type: ''
|
||||
})
|
||||
|
||||
|
||||
@ -142,6 +154,7 @@ const handleDelete = async (id: number | any[]) => {
|
||||
await transferbillDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
//详情
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await transferbillDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
@ -150,7 +163,29 @@ const handledetail = async (data: any) => {
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
//获取客户信息列表
|
||||
const customerList = () => {
|
||||
apiCustomLists({
|
||||
page_no: 1,
|
||||
page_size: 9999,
|
||||
|
||||
}).then((res) => {
|
||||
customerlist.value = res.lists
|
||||
})
|
||||
}
|
||||
|
||||
//获取合同列表
|
||||
const contractList = () => {
|
||||
apiProcurementContractLists({
|
||||
page_no: 1,
|
||||
page_size: 9999,
|
||||
all: 1
|
||||
}).then((res) => {
|
||||
contractlist.value = res.lists
|
||||
})
|
||||
}
|
||||
customerList()
|
||||
contractList()
|
||||
getLists()
|
||||
</script>
|
||||
|
||||
|
@ -123,20 +123,16 @@ const formData = reactive({
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -533,7 +533,7 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = formDataannex.map((item: any) => item.uri).toString()
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
if (tablist1.length > 0) {
|
||||
const arr1 = tablist1.map(({ name1, name2, ...rest }) => rest)
|
||||
|
186
src/views/project_insurance_management/detail.vue
Normal file
186
src/views/project_insurance_management/detail.vue
Normal file
@ -0,0 +1,186 @@
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="保险管理详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称">
|
||||
{{ formData.project_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号">
|
||||
{{ formData.project_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名">
|
||||
{{ formData.person_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号">
|
||||
{{ formData.person_idcard }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="投保日期">
|
||||
{{ formData.insurance_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="到期日期">
|
||||
{{ formData.due_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="保费(元)">
|
||||
{{ formData.insurance }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="投保金额(万元)">
|
||||
{{ formData.insured_amount }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="保险公司">
|
||||
{{ formData.insurance_company }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="保单明细">
|
||||
{{ formData.insurance_detail }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发票编号">
|
||||
{{ formData.invoice_no
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="经办人">
|
||||
{{ formData.handler
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同附件">
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" 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>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无附件</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="customdetail">
|
||||
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiCustomDetail } from '@/api/custom'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const formDataannex = reactive([])
|
||||
|
||||
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
areaOptions: [],
|
||||
});
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiCustomDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
popupRef.value?.close()
|
||||
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
console.log('1111111')
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.tit {
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
266
src/views/project_insurance_management/edit.vue
Normal file
266
src/views/project_insurance_management/edit.vue
Normal file
@ -0,0 +1,266 @@
|
||||
<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" inline>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-input v-model="project_code" clearable placeholder="请输入项目编码" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" prop="project_person_id" @click="showDialog1 = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="person_name" clearable placeholder="请选择项目人员" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="身份证号" prop="project_person_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="idcard" clearable placeholder="系统自动填写" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="投保日期" prop="insurance_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.insurance_date" 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="到期日期" prop="due_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.due_date" 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="保险种类" prop="type">
|
||||
<el-input v-model="formData.type" clearable placeholder="请输入保险种类" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保单号" prop="insurance_no">
|
||||
<el-input v-model="formData.insurance_no" clearable placeholder="请输入保单号" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保费(元)" prop="insurance">
|
||||
<el-input v-model="formData.insurance" clearable type="number" placeholder="请输入保费(元)" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="投保金额(万元)" prop="insured_amount">
|
||||
<el-input v-model="formData.insured_amount" clearable type="number" placeholder="请输入投保金额(万元)" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保险公司" prop="insurance_company">
|
||||
<el-input v-model="formData.insurance_company" clearable placeholder="请输入保险公司" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="保单明细" prop="insurance_detail">
|
||||
<el-input v-model="formData.insurance_detail" clearable placeholder="请输入保单明细" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="发票编号" prop="invoice_no">
|
||||
<el-input v-model="formData.invoice_no" clearable placeholder="请输入发票编号" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经办人" prop="handler">
|
||||
<el-input v-model="formData.handler" clearable placeholder="请输入经办人" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同附件" prop="field127">
|
||||
<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_four" ref="upload">
|
||||
<el-button type="primary">
|
||||
上传
|
||||
</el-button>
|
||||
</el-upload>
|
||||
<div>
|
||||
<div v-for="(item, index) in formDataannex" 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>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</popup>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
<projectDialog @customEvent="customEvent"></projectDialog>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="showDialog1" title="选择项目人员" width="70%">
|
||||
<customDialog @customEvent="customEvent1" :project_id="formData.project_id"></customDialog>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="procurementContractEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { insurancemanagementAdd, insurancemanagementEdit, insurancemanagementDetail } from '@/api/project_insurance_management'
|
||||
import customDialog from '@/components/project_personnel/index.vue'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
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 person_name = ref('')
|
||||
const idcard = ref('')
|
||||
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
const formDataannex = reactive([])
|
||||
import feedback from '@/utils/feedback'
|
||||
const userInfo = userStore.userInfo
|
||||
//获取值
|
||||
const customEvent = (e) => {
|
||||
formData.project_id = e.id
|
||||
project_name.value = e.name
|
||||
project_code.value = e.project_code
|
||||
showDialog.value = false
|
||||
|
||||
}
|
||||
const customEvent1 = (e) => {
|
||||
formData.project_person_id = e.id
|
||||
idcard.value = e.idcard
|
||||
person_name.value = e.name
|
||||
showDialog1.value = false
|
||||
|
||||
}
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑保险管理' : '新增保险管理'
|
||||
})
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four = (
|
||||
response,
|
||||
uploadFile
|
||||
) => {
|
||||
if (response.code == 0) {
|
||||
ElMessage.error(response.msg);
|
||||
return;
|
||||
}
|
||||
formDataannex.push(
|
||||
{ uri: response.data.uri, name: response.data.name }
|
||||
|
||||
|
||||
);
|
||||
};
|
||||
// 删除上传的文件
|
||||
const delFileFn = (index: number) => {
|
||||
formDataannex.splice(index, 1)
|
||||
}
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
project_id: '',
|
||||
project_person_id: '',
|
||||
insurance_date: '',
|
||||
due_date: '',
|
||||
type: '',
|
||||
insurance_no: '',
|
||||
insurance: '',
|
||||
insured_amount: '',
|
||||
insurance_company: '',
|
||||
insurance_detail: '',
|
||||
invoice_no: '',
|
||||
handler: '',
|
||||
annex: '',
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
project_name.value = data.project_name
|
||||
project_code.value = data.project_code
|
||||
idcard.value = data.person_idcard
|
||||
person_name.value = data.person_name
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await insurancemanagementDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await insurancemanagementEdit(data)
|
||||
: await insurancemanagementAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
formData.handler = userInfo.name
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
177
src/views/project_insurance_management/index.vue
Normal file
177
src/views/project_insurance_management/index.vue
Normal file
@ -0,0 +1,177 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
|
||||
<el-form-item label="保单号" prop="insurance_no">
|
||||
<el-input v-model="queryParams.insurance_no" clearable placeholder="请输入保单号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="保险种类" prop="type">
|
||||
<el-input v-model="queryParams.type" clearable placeholder="请输入保险种类" />
|
||||
</el-form-item>
|
||||
<el-form-item label="保险公司" prop="insurance_company">
|
||||
<el-input v-model="queryParams.insurance_company" clearable placeholder="请输入保险公司" />
|
||||
</el-form-item>
|
||||
<el-form-item label="发票编号" prop="invoice_no">
|
||||
<el-input v-model="queryParams.invoice_no" clearable placeholder="请输入发票编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="经办人" prop="handler">
|
||||
<el-input v-model="queryParams.handler" clearable placeholder="请输入经办人" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project.project_insurance_management/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_insurance_management/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="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="person_name" show-overflow-tooltip />
|
||||
<el-table-column label="身份证号" prop="person_idcard" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="投保日期" prop="insurance_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="到期日期" prop="due_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="保险种类" prop="type" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="保单号" prop="insurance_no" show-overflow-tooltip />
|
||||
<el-table-column label="保费(元)" prop="insurance" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="投保金额(万元)" prop="insured_amount" show-overflow-tooltip />
|
||||
<el-table-column label="保险公司" prop="insurance_company" show-overflow-tooltip />
|
||||
<el-table-column label="保单明细" prop="insurance_detail" show-overflow-tooltip />
|
||||
<el-table-column label="发票编号" prop="invoice_no" show-overflow-tooltip />
|
||||
<el-table-column label="经办人" prop="handler" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.annex && row.annex.length > 0">
|
||||
<div v-for="(item, i) in row.annex " :key='i'>
|
||||
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="人员标识" prop="per_daily_living" show-overflow-tooltip /> -->
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_insurance_management/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_insurance_management/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_insurance_management/detail']" link @click="handledetail(row)">
|
||||
详情
|
||||
</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" />
|
||||
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { insurancemanagementLists, insurancemanagementDelete, insurancemanagementDetail } from '@/api/project_insurance_management'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
const protype = reactive([])
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDtail = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
type: '',
|
||||
insurance_no: '',
|
||||
insurance_company: '',
|
||||
invoice_no: '',
|
||||
handler: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: insurancemanagementLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
console.log(data.id)
|
||||
let res = await insurancemanagementDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await insurancemanagementDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await insurancemanagementDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
144
src/views/project_job_type/detail.vue
Normal file
144
src/views/project_job_type/detail.vue
Normal file
@ -0,0 +1,144 @@
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="项目日志详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称">
|
||||
{{ formData.project_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号">
|
||||
{{ formData.project_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="类型">
|
||||
<dict-value :options="dictData.follow_type" :value="formData.follow_type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主题">
|
||||
{{ formData.theme }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人">
|
||||
{{ formData.contacts }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="日志详情">
|
||||
{{ formData.content }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="执行人">
|
||||
{{ formData.executor }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="下次回访日期">
|
||||
{{ formData.next_follow_up_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="日期">
|
||||
{{ formData.date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="customdetail">
|
||||
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiCustomDetail } from '@/api/custom'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
areaOptions: [],
|
||||
});
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiCustomDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
popupRef.value?.close()
|
||||
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
console.log('1111111')
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.tit {
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
123
src/views/project_job_type/edit.vue
Normal file
123
src/views/project_job_type/edit.vue
Normal file
@ -0,0 +1,123 @@
|
||||
<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-row>
|
||||
|
||||
<el-col :span="24" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="工种名称" prop="type_name">
|
||||
<el-input v-model="formData.type_name" clearable placeholder="请输入工种名称" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="24" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="工种单价" prop="type_unit_price">
|
||||
<el-input v-model="formData.type_unit_price" clearable placeholder="请输入工种单价" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="24" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="每日生活费" prop="per_daily_living">
|
||||
<el-input v-model="formData.per_daily_living" clearable placeholder="请输入每日生活费" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
</popup>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="procurementContractEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { projectjobtypeAdd, projectjobtypeEdit, projectjobtypeDetail } from '@/api/project_job_type'
|
||||
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
const showDialog = ref(false)
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const formDataannex = reactive([])
|
||||
import feedback from '@/utils/feedback'
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑工种' : '新增工种'
|
||||
})
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
per_daily_living: '',
|
||||
type_unit_price: '',
|
||||
type_name: ''
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
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]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await projectjobtypeDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await projectjobtypeEdit(data)
|
||||
: await projectjobtypeAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
133
src/views/project_job_type/index.vue
Normal file
133
src/views/project_job_type/index.vue
Normal file
@ -0,0 +1,133 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="工种名称" prop="type_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.type_name" clearable placeholder="请输入工种名称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project.project/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project/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="type_name" show-overflow-tooltip />
|
||||
<el-table-column label="工种单价" prop="type_unit_price" show-overflow-tooltip />
|
||||
<el-table-column label="每日生活费" prop="per_daily_living" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<!-- <el-button v-perms="['project.project/detail']" link @click="handledetail(row)">
|
||||
详情
|
||||
</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" />
|
||||
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { projectjobtypeLists, projectjobtypeDelete, projectjobtypeDetail } from '@/api/project_labor_contract'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
const protype = reactive([])
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDtail = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
type_name: ''
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('follow_type')
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: projectjobtypeLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
console.log(data.id)
|
||||
let res = await projectjobtypeDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await projectjobtypeDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await projectjobtypeDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
193
src/views/project_labor_contract/detail.vue
Normal file
193
src/views/project_labor_contract/detail.vue
Normal file
@ -0,0 +1,193 @@
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="劳动合同详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称">
|
||||
{{ formData.project_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号">
|
||||
{{ formData.project_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名">
|
||||
{{ formData.person_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号">
|
||||
{{ formData.person_idcard }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同状态">
|
||||
<dict-value :options="dictData.labor_contract_status" :value="formData.contract_status" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同类别">
|
||||
<dict-value :options="dictData.labor_contract_type" :value="formData.contract_type" /> </el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同名称">
|
||||
<dict-value :options="dictData.labor_contract_name" :value="formData.contract_name" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="合同签定日期">
|
||||
{{ formData.signing_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="试用期起始日期">
|
||||
{{ formData.trial_start_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="试用期结束日期">
|
||||
{{ formData.trial_end_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="起始时间">
|
||||
{{ formData.start_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="结束时间">
|
||||
{{ formData.end_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="解除时间">
|
||||
{{ formData.release_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注">
|
||||
{{ formData.remark
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同附件">
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" 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>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无附件</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="customdetail">
|
||||
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiCustomDetail } from '@/api/custom'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const formDataannex = reactive([])
|
||||
|
||||
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
areaOptions: [],
|
||||
});
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiCustomDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
popupRef.value?.close()
|
||||
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
console.log('1111111')
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.tit {
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
271
src/views/project_labor_contract/edit.vue
Normal file
271
src/views/project_labor_contract/edit.vue
Normal file
@ -0,0 +1,271 @@
|
||||
<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" inline>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-input v-model="project_code" clearable placeholder="请输入项目编码" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" prop="project_person_id" @click="showDialog1 = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="person_name" clearable placeholder="请选择项目人员" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="身份证号" prop="project_person_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="idcard" clearable placeholder="系统自动填写" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同类型" prop="contract_type" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-select class="flex-1" v-model="formData.contract_type" clearable placeholder="请选择合同类型">
|
||||
<el-option v-for="(item, index) in dictData.labor_contract_type" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同状态" prop="contract_status" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-select class="flex-1" v-model="formData.contract_status" clearable placeholder="请选择合同状态">
|
||||
<el-option v-for="(item, index) in dictData.labor_contract_status" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item> </el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同名称" prop="contract_title" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-select class="flex-1" v-model="formData.contract_title" clearable placeholder="请选择合同名称">
|
||||
<el-option v-for="(item, index) in dictData.labor_contract_name" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同签定日期" prop="signing_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.signing_date" 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="试用期起始日期" prop="trial_start_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.trial_start_date" 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="试用期结束日期" prop="per_daily_living">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.plan_start_date" 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="起始时间" prop="start_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.start_date" 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="终止时间" prop="end_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.end_date" 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="解除时间" prop="release_time">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.release_time" 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="解除原因" prop="release_reason">
|
||||
<el-input v-model="formData.release_reason" clearable placeholder="请输入合同名称" />
|
||||
</el-form-item> </el-col><el-col :span="8">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入合同名称" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同附件" prop="field127">
|
||||
<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_four" ref="upload">
|
||||
<el-button type="primary">
|
||||
上传
|
||||
</el-button>
|
||||
</el-upload>
|
||||
<div>
|
||||
<div v-for="(item, index) in formDataannex" 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>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</popup>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
<projectDialog @customEvent="customEvent"></projectDialog>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="showDialog1" title="选择项目人员" width="70%">
|
||||
<customDialog @customEvent="customEvent1" :project_id="formData.project_id"></customDialog>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="procurementContractEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { projectlaborcontractAdd, projectlaborcontractEdit, projectlaborcontractDetail } from '@/api/project_labor_contract'
|
||||
import customDialog from '@/components/project_personnel/index.vue'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
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 person_name = ref('')
|
||||
const idcard = ref('')
|
||||
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
const formDataannex = reactive([])
|
||||
import feedback from '@/utils/feedback'
|
||||
|
||||
//获取值
|
||||
const customEvent = (e) => {
|
||||
formData.project_id = e.id
|
||||
project_name.value = e.name
|
||||
project_code.value = e.project_code
|
||||
showDialog.value = false
|
||||
|
||||
}
|
||||
const customEvent1 = (e) => {
|
||||
formData.project_person_id = e.id
|
||||
idcard.value = e.idcard
|
||||
person_name.value = e.name
|
||||
showDialog1.value = false
|
||||
|
||||
}
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑劳动合同' : '新增劳动合同'
|
||||
})
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four = (
|
||||
response,
|
||||
uploadFile
|
||||
) => {
|
||||
if (response.code == 0) {
|
||||
ElMessage.error(response.msg);
|
||||
return;
|
||||
}
|
||||
formDataannex.push(
|
||||
{ uri: response.data.uri, name: response.data.name }
|
||||
|
||||
|
||||
);
|
||||
};
|
||||
// 删除上传的文件
|
||||
const delFileFn = (index: number) => {
|
||||
formDataannex.splice(index, 1)
|
||||
}
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
project_id: '',
|
||||
project_person_id: '',
|
||||
contract_status: '',
|
||||
contract_type: '',
|
||||
contract_title: '',
|
||||
signing_date: '',
|
||||
trial_start_date: '',
|
||||
trial_end_date: '',
|
||||
start_date: '',
|
||||
end_date: '',
|
||||
release_time: '',
|
||||
release_reason: '',
|
||||
remark: '',
|
||||
annex: '',
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
project_name.value = data.project_name
|
||||
project_code.value = data.project_code
|
||||
idcard.value = data.person_idcard
|
||||
person_name.value = data.person_name
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await projectlaborcontractDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await projectlaborcontractEdit(data)
|
||||
: await projectlaborcontractAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
178
src/views/project_labor_contract/index.vue
Normal file
178
src/views/project_labor_contract/index.vue
Normal file
@ -0,0 +1,178 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
|
||||
<el-form-item label="合同类型" prop="contract_type">
|
||||
<el-select class="w-[280px]" v-model="queryParams.contract_type" clearable placeholder="请选择合同类型">
|
||||
<el-option v-for="(item, index) in dictData.labor_contract_type" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="合同状态" prop="contract_status">
|
||||
<el-select class="w-[280px]" v-model="queryParams.contract_status" clearable placeholder="请选择合同状态">
|
||||
<el-option v-for="(item, index) in dictData.labor_contract_status" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同名称" prop="contract_title">
|
||||
<el-select class="w-[280px]" v-model="queryParams.contract_title" clearable placeholder="请选择合同名称">
|
||||
<el-option v-for="(item, index) in dictData.labor_contract_name" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project.project/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project/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="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="person_name" show-overflow-tooltip />
|
||||
<el-table-column label="身份证号" prop="person_idcard" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="合同状态" prop="per_daily_living" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.labor_contract_status" :value="row.contract_status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合同类别" prop="per_daily_living" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.labor_contract_type" :value="row.contract_type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合同名称" prop="per_daily_living" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.labor_contract_name" :value="row.contract_name" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合同签定日期" prop="signing_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="试用期起始日期" prop="trial_start_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="试用期结束日期" prop="trial_end_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="起始时间" prop="start_date" show-overflow-tooltip />
|
||||
<el-table-column label="结束时间" prop="end_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="解除时间" prop="release_time" show-overflow-tooltip />
|
||||
|
||||
|
||||
<!-- <el-table-column label="人员标识" prop="per_daily_living" show-overflow-tooltip /> -->
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project/detail']" link @click="handledetail(row)">
|
||||
详情
|
||||
</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" />
|
||||
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { projectlaborcontractLists, projectlaborcontractDelete, projectlaborcontractDetail } from '@/api/project_labor_contract'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
const protype = reactive([])
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDtail = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
contract_status: '',
|
||||
contract_type: '',
|
||||
contract_title: ''
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: projectlaborcontractLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
console.log(data.id)
|
||||
let res = await projectlaborcontractDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await projectlaborcontractDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await projectlaborcontractDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
@ -123,7 +123,12 @@ import { deptAll } from '@/api/org/department'
|
||||
import { getAll } from '@/api/org/organization'
|
||||
import type { PropType } from 'vue'
|
||||
|
||||
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
|
||||
|
@ -287,20 +287,16 @@ const formRules = reactive<any>({
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -181,7 +181,7 @@
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog2" title="选择银行账户" width="70%">
|
||||
<bankaccountDialog @customEvent="customEvent"></bankaccountDialog>
|
||||
<bankaccountDialog @customEvent="customEvent2"></bankaccountDialog>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="showDialog3" title="选择待回款计划" width="70%">
|
||||
<pendingDialog @customEvent="customEvent3"></pendingDialog>
|
||||
|
@ -275,20 +275,16 @@ const formRules = reactive<any>({
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -134,7 +134,7 @@
|
||||
|
||||
|
||||
<el-dialog v-model="showDialog2" title="选择银行账户" width="70%">
|
||||
<bankaccountDialog @customEvent="customEvent"></bankaccountDialog>
|
||||
<bankaccountDialog @customEvent="customEvent2"></bankaccountDialog>
|
||||
</el-dialog>
|
||||
</el-form>
|
||||
</popup>
|
||||
@ -280,20 +280,16 @@ const formRules = reactive<any>({
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
|
||||
}
|
||||
const arry1 = data.return_desc.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -149,7 +149,7 @@
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-model="showDialog2" title="选择银行账户" width="70%">
|
||||
<bankaccountDialog @customEvent="customEvent"></bankaccountDialog>
|
||||
<bankaccountDialog @customEvent="customEvent2"></bankaccountDialog>
|
||||
</el-dialog>
|
||||
</el-form>
|
||||
</popup>
|
||||
@ -199,6 +199,10 @@ const handleAvatarSuccess_four = (
|
||||
|
||||
);
|
||||
};
|
||||
// 删除上传的文件
|
||||
const delFileFn = (index: number) => {
|
||||
formDataannex.splice(index, 1)
|
||||
}
|
||||
//验证
|
||||
const checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
|
||||
|
||||
@ -224,10 +228,7 @@ const userEmail = (rule: any, value: string, callback: (arg0: Error | undefined)
|
||||
}
|
||||
|
||||
};
|
||||
// 删除上传的文件
|
||||
const delFileFn = (index: number) => {
|
||||
formDataannex.splice(index, 1)
|
||||
}
|
||||
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
@ -281,7 +282,7 @@ const formData = reactive({
|
||||
refund_type: 0,
|
||||
reason: "",
|
||||
remark: "",
|
||||
annexs: "",
|
||||
annex: "",
|
||||
bank_account_id: 0,
|
||||
is_calculate_interest: '',
|
||||
interest_calculation_start_date: ""
|
||||
@ -296,21 +297,17 @@ const formRules = reactive<any>({
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.return_desc && data.return_desc.length > 0) {
|
||||
if (data.return_desc.includes(",")) {
|
||||
const arry1 = data.return_desc.split(',').map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
} else {
|
||||
const arry1 = [{ name: `文件1`, uri: data.return_desc }]
|
||||
Object.assign(formDataannex, arry1)
|
||||
console.log(formDataannex)
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -340,7 +337,7 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.return_desc = formDataannex.map((item: any) => item.uri).toString()
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
console.log(formRef.value?.validate(), '22222222')
|
||||
await formRef.value?.validate()
|
||||
|
Loading…
x
Reference in New Issue
Block a user