add
This commit is contained in:
parent
263eb68548
commit
32cacae8d7
@ -1,26 +1,41 @@
|
||||
import request from '@/utils/request'
|
||||
import request from "@/utils/request";
|
||||
|
||||
// 考勤记录表列表
|
||||
export function attendancedetailLists(params: any) {
|
||||
return request.get({ url: '/project.project_attendance_detail/lists', params })
|
||||
return request.get({
|
||||
url: "/project.project_attendance_detail/lists",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加考勤记录
|
||||
export function attendancedetailAdd(params: any) {
|
||||
return request.post({ url: '/project.project_attendance_detail/add', params })
|
||||
return request.post({
|
||||
url: "/project.project_attendance_detail/add",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 编辑考勤记录
|
||||
export function attendancedetailEdit(params: any) {
|
||||
return request.post({ url: '/project.project_attendance_detail/edit', params })
|
||||
return request.post({
|
||||
url: "/project.project_attendance_detail/edit",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 删除考勤记录
|
||||
export function attendancedetailDelete(params: any) {
|
||||
return request.post({ url: '/project.project_attendance_detail/delete', params })
|
||||
return request.post({
|
||||
url: "/project.project_attendance_detail/delete",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
||||
// 考勤记录详情
|
||||
export function attendancedetailDetail(params: any) {
|
||||
return request.get({ url: '/project.project_attendance_detail/detail', params })
|
||||
return request.get({
|
||||
url: "/project.project_attendance_detail/detail",
|
||||
params,
|
||||
});
|
||||
}
|
||||
|
@ -1,8 +1,11 @@
|
||||
import request from '@/utils/request'
|
||||
import request from "@/utils/request";
|
||||
|
||||
// 工资明细列表列表
|
||||
export function projectsalaryDetailLists(params: any) {
|
||||
return request.get({ url: '/project.project_salary_detail/lists', params })
|
||||
return request.get({ url: "/project.project_salary_detail/lists", params });
|
||||
}
|
||||
|
||||
|
||||
// 工资明细列表列表
|
||||
export function projectsalaryDetailDelete(params: any) {
|
||||
return request.post({ url: "/project.project_salary_detail/delete", params });
|
||||
}
|
||||
|
16
src/components/annexLink/index.vue
Normal file
16
src/components/annexLink/index.vue
Normal file
@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<el-link type="primary" v-for="(item, index) in annex" :key="index" :href="item.uri" target="_blank" class="mr-5">{{
|
||||
item.name
|
||||
}}</el-link>
|
||||
<span v-if="!annex.length">暂无附件</span>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { defineProps } from 'vue'
|
||||
|
||||
defineProps({
|
||||
annex: Array
|
||||
})
|
||||
|
||||
|
||||
|
||||
</script>
|
@ -8,9 +8,9 @@
|
||||
label-class-name="my-label">
|
||||
|
||||
{{ formData[item.value] ??
|
||||
(item.value.includes('.') ?
|
||||
(formData[item.value.split('.')[0]])[item.value.split('.')[1]] :
|
||||
'')
|
||||
(item.value.includes('.') ?
|
||||
(formData[item.value.split('.')[0]])[item.value.split('.')[1]] :
|
||||
'')
|
||||
}}
|
||||
|
||||
</el-descriptions-item>
|
||||
|
@ -6,15 +6,14 @@
|
||||
<el-radio-button :label="1">全部人员</el-radio-button>
|
||||
<el-radio-button :label="2">按部门筛选</el-radio-button>
|
||||
<el-radio-button :label="3">按岗位筛选</el-radio-button>
|
||||
<el-button class="ml-[200px]" v-show="isCollapse != 1 && (!isshow || !isshow1)"
|
||||
@click="(isshow = true), (isshow1 = true)">返回</el-button>
|
||||
</el-radio-group>
|
||||
|
||||
|
||||
<div v-if="type == 1">
|
||||
<div v-if="isCollapse == 1" style="margin-bottom: 20px">
|
||||
<div style="margin-top: 20px">
|
||||
<el-radio-group v-model="radionum">
|
||||
<el-radio :label="item" v-for="(item, i) in uesrlist" :key="i"
|
||||
style="margin-bottom: 20px;">
|
||||
<el-radio :label="item" v-for="(item, i) in uesrlist" :key="i" style="margin-bottom: 40px;">
|
||||
<div class="radio-con">
|
||||
<div class="radioa">
|
||||
<img :src="item.avatar" alt="" />
|
||||
@ -34,6 +33,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="isCollapse == 2">
|
||||
<!-- 返回上一级别 -->
|
||||
<div v-if="isshow">
|
||||
<div class="lad" v-for="(item, i) in deparmetlist" :key="i">
|
||||
<div class="lad">{{ i }}</div>
|
||||
@ -322,6 +322,7 @@ defineExpose({
|
||||
.radio-con {
|
||||
display: flex;
|
||||
width: 500px;
|
||||
align-items: center;
|
||||
|
||||
.radioa {
|
||||
img {
|
||||
|
@ -9,7 +9,7 @@
|
||||
</el-upload>
|
||||
|
||||
<div v-for="(item, index) in formData[value]" class="ml-5 flex ">
|
||||
<el-link :href="item.uri" type="primary"> {{ item.name }}</el-link>
|
||||
<el-link :href="item.uri" type="primary" target="_blank"> {{ item.name }}</el-link>
|
||||
<span class="ml-2 cursor-pointer" @click="delFile(index)">x</span>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -22,8 +22,10 @@
|
||||
<el-table-column label="客户名称" prop="custom_name" align="center" show-overflow-tooltip />
|
||||
<el-table-column label="签订日期" prop="contract_date" align="center" show-overflow-tooltip />
|
||||
<el-table-column label="合同金额" prop="contract_amount" align="center" show-overflow-tooltip />
|
||||
<el-table-column label="已回款金额" prop="has_refund_amount" align="center" show-overflow-tooltip />
|
||||
<el-table-column label="已开票金额" prop="has_invoice_amount" align="center" show-overflow-tooltip />
|
||||
<el-table-column label="已回款金额" prop="has_refund_amount" align="center"
|
||||
:render-header="pager.calcWidth" />
|
||||
<el-table-column label="已开票金额" prop="has_invoice_amount" align="center"
|
||||
:render-header="pager.calcWidth" />
|
||||
<el-table-column label="开票未回款金额" prop="has_invoice_not_refund_amount" align="center" width="140px"
|
||||
show-overflow-tooltip />
|
||||
<el-table-column label="回款未开票金额" prop="has_refund_not_invoice_amount" align="center" width="140px"
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="160px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
@ -11,7 +10,8 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同编号" prop="contract_num">
|
||||
<el-input v-model="formData.contract_num" clearable placeholder="请输入合同编号" />
|
||||
<el-input v-model="formData.contract_num" clearable placeholder="请输入合同编号"
|
||||
@input="formData.contract_num = formData.contract_num.replace(/[\u4e00-\u9fa5]/g, '')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@ -54,10 +54,9 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="业务性质" prop="business_nature">
|
||||
<el-select class="flex-1" v-model="formData.business_nature" clearable
|
||||
placeholder="请选择业务性质">
|
||||
<el-option v-for="(item, index) in dictData.cost_consultation_business_nature"
|
||||
:key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
<el-select class="flex-1" v-model="formData.business_nature" clearable placeholder="请选择业务性质">
|
||||
<el-option v-for="(item, index) in dictData.cost_consultation_business_nature" :key="index"
|
||||
:label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -66,10 +65,9 @@
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="行业性质" prop="industry_nature">
|
||||
<el-select class="flex-1" v-model="formData.industry_nature" clearable
|
||||
placeholder="请选择行业性质">
|
||||
<el-option v-for="(item, index) in dictData.cost_consultation_industry_nature"
|
||||
:key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
<el-select class="flex-1" v-model="formData.industry_nature" clearable placeholder="请选择行业性质">
|
||||
<el-option v-for="(item, index) in dictData.cost_consultation_industry_nature" :key="index"
|
||||
:label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -98,13 +96,12 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工程规模及概况" prop="project_scale">
|
||||
<el-input v-model="formData.project_scale" clearable placeholder="请输入工程规模及概况"
|
||||
type="textarea" />
|
||||
<el-input v-model="formData.project_scale" clearable placeholder="请输入工程规模及概况" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="签订金额(元)" prop="money">
|
||||
<el-input v-model="formData.money" clearable placeholder="请输入签订金额(元)" />
|
||||
<el-input v-model="formData.money" clearable placeholder="请输入签订金额(元)" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -112,7 +109,7 @@
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同服务工期" prop="contract_service">
|
||||
<el-input v-model="formData.contract_service" clearable placeholder="请输入合同服务工期" />
|
||||
<el-input v-model="formData.contract_service" clearable placeholder="请输入合同服务工期" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@ -140,8 +137,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同履约金(元)" prop="performance">
|
||||
<el-input v-model="formData.performance" clearable placeholder="请输入合同履约金(元)"
|
||||
type="number" />
|
||||
<el-input v-model="formData.performance" clearable placeholder="请输入合同履约金(元)" type="number" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@ -276,7 +272,8 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="邮寄编号" prop="number">
|
||||
<el-input v-model="formData.number" clearable placeholder="请输入邮寄编号" />
|
||||
<el-input v-model="formData.number" clearable placeholder="请输入邮寄编号"
|
||||
@input="formData.number = formData.number.replace(/[\u4e00-\u9fa5]/g, '')" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
@ -198,7 +198,8 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
<dialogTable :config="cost_approved_projects" @customEvent="customEvent"></dialogTable>
|
||||
<dialogTable :config="cost_approved_projects" @customEvent="customEvent" :query="{ status: 1 }">
|
||||
</dialogTable>
|
||||
</el-dialog>
|
||||
<div v-if="showDialog1">
|
||||
<personnelselector ref="personnel" @confirm="submituser" :type="persoleType">
|
||||
|
@ -7,12 +7,11 @@
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="客户名称" label-align="left" align="left"
|
||||
label-class-name="my-label">{{ formData.custom_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="需求主题" label-align="left" align="left"
|
||||
label-class-name="my-label">
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="需求主题" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.theme }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="客户需求提供人" label-align="left" align="left"
|
||||
@ -23,43 +22,34 @@
|
||||
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="重要程度" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.importance_text }}</el-descriptions-item>
|
||||
<el-descriptions-item label="重要程度" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.importance_text }}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="记录时间" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.recording_time
|
||||
<el-descriptions-item label="记录时间" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.recording_time
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="需求内容" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.demand_content
|
||||
<el-descriptions-item label="需求内容" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.demand_content
|
||||
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="添加人" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.add_user_name
|
||||
<el-descriptions-item label="添加人" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.add_user_name
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="创建日期" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.create_time
|
||||
<el-descriptions-item label="创建日期" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.create_time
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="更新人" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.update_user_name
|
||||
<el-descriptions-item label="更新人" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.update_user_name
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="更新日期" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.update_time
|
||||
<el-descriptions-item label="更新日期" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.update_time
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="附件" label-align="left" align="left"
|
||||
label-class-name="my-label">
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex"
|
||||
style="margin-left: 5px;display: block;">
|
||||
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start"
|
||||
:href="item.uri" target="_blank">文件{{ index + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无附件
|
||||
</div>
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<el-link v-for="(item, index) in formData.annex" :href="item.uri" target="_blank"
|
||||
type="primary" class="mr-5">文件{{ index + 1 }}</el-link>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-tab-pane>
|
||||
@ -87,8 +77,7 @@
|
||||
<div style="margin: 10px 0;">
|
||||
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size"
|
||||
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total" @size-change="handleSizeChange1"
|
||||
@current-change="handleCurrentChange1" />
|
||||
:total="total" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="项目概算" name="third">
|
||||
@ -117,8 +106,7 @@
|
||||
<div style="margin: 10px 0;">
|
||||
<el-pagination v-model:current-page="pager2.page_no" v-model:page-size="pager2.page_size"
|
||||
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total1" @size-change="handleSizeChange2"
|
||||
@current-change="handleCurrentChange2" />
|
||||
:total="total1" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="竞争对手" name="fourth">
|
||||
@ -148,8 +136,7 @@
|
||||
<div style="margin: 10px 0;">
|
||||
<el-pagination v-model:current-page="pager3.page_no" v-model:page-size="pager3.page_size"
|
||||
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total2" @size-change="handleSizeChange3"
|
||||
@current-change="handleCurrentChange3" />
|
||||
:total="total2" @size-change="handleSizeChange3" @current-change="handleCurrentChange3" />
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
@ -135,7 +135,7 @@
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收款开户银行" prop="payee_bank"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.payee_bank" clearable placeholder="请输入收款账号" />
|
||||
<el-input v-model="formData.payee_bank" clearable placeholder="请输入开户银行" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@ -386,7 +386,6 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData }
|
||||
mode.value == 'edit'
|
||||
|
@ -74,11 +74,7 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="附件">
|
||||
<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>
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -119,7 +115,6 @@ defineProps({
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const formDataannex = reactive([])
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
@ -137,17 +132,6 @@ 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)
|
||||
|
||||
}
|
||||
getbidDocumentExaminationFlows()
|
||||
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
<el-col :span="8">
|
||||
<el-form-item label="合同类型" prop="contract_cate">
|
||||
<el-select v-model="formData.contract_cate" placeholder="请选择" @change="resetFormData"
|
||||
class="flex-1 !flex">
|
||||
class="flex-1 ">
|
||||
<el-option label="采购合同" :value="1"></el-option>
|
||||
<el-option label="分包合同" :value="2"></el-option>
|
||||
</el-select>
|
||||
|
@ -2,9 +2,25 @@
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="考勤记录" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData">
|
||||
<div style="margin-bottom: 30px;font-size: 16px;">{{ formData.attendance_code }}</div>
|
||||
<div style="margin-bottom: 30px;font-size: 16px;">{{ formData.attendance_date }}</div>
|
||||
<el-card class="mb-2">
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left">
|
||||
{{ formData.project_name }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编号" label-align="left" align="left">
|
||||
{{ formData.project_code }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="考勤日期" label-align="left" align="left">
|
||||
{{ formData.attendance_date }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="出勤人数" label-align="left" align="left">
|
||||
{{ formData.attendance_num }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="附件" label-align="left" align="left">
|
||||
<annexLink :annex="formData.file"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<el-card class="mt-2">
|
||||
<el-table :data="formData.attendance_detail">
|
||||
<el-table-column label="姓名" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="idcard" show-overflow-tooltip />
|
||||
@ -63,20 +79,6 @@ 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>) => {
|
||||
@ -107,9 +109,6 @@ const handleClose = () => {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
@ -122,8 +121,4 @@ defineExpose({
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
:deep(.my-label) {
|
||||
width: 150px;
|
||||
}
|
||||
</style>
|
||||
|
@ -1,70 +1,56 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="85vw" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="85vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="80px" :rules="formRules">
|
||||
<el-row>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" :disabled="project" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="考勤日期" prop="attendance_date">
|
||||
<el-date-picker class="flex-1 !flex" clearable v-model="formData.attendance_date"
|
||||
type="date" value-format="YYYY-MM-DD" placeholder="选择考勤日期">
|
||||
<el-date-picker class="flex-1 !flex" clearable v-model="formData.attendance_date" type="date"
|
||||
value-format="YYYY-MM-DD" placeholder="选择考勤日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="出勤人数" prop="type">
|
||||
<el-input v-model="renshu" clearable disabled placeholder="系统自动填写"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="附件">
|
||||
<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>
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="tit" style="font-size: 16px;font-weight: bold;margin-bottom: 10px;">考勤记录清单</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<el-table :data="formData.attendance_detail" width="100%">
|
||||
<template #empty>
|
||||
暂无数据,点击添加
|
||||
<el-button @click="handleAdd" size="small">+</el-button>
|
||||
|
||||
</template>
|
||||
|
||||
<el-table-column label="序号">
|
||||
<template #default="{ row }">
|
||||
<el-button @click="handleAdd(row)" size="small">+</el-button>
|
||||
<el-button @click="handleAdd" size="small">+</el-button>
|
||||
<el-button @click="handleDelete(row)" size="small">-</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -84,23 +70,15 @@
|
||||
placeholder="自动填写" />
|
||||
</template></el-table-column>
|
||||
|
||||
<el-table-column label="上班时间" prop="brand">
|
||||
|
||||
<el-table-column label="上班时间" prop="brand" width="200">
|
||||
<template #default="{ row }">
|
||||
<!-- <el-date-picker clearable v-model="row.work_start_time" type="date"
|
||||
value-format="YYYY-MM-DD" placeholder="请选择" style="width: 100px;">
|
||||
</el-date-picker> -->
|
||||
<el-time-select v-model="row.work_start_time" start="06:30" step="00:15" end="23:30"
|
||||
placeholder="请选择" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="下班时间" prop="parameter_description">
|
||||
|
||||
<el-table-column label="下班时间" prop="parameter_description" width="200">
|
||||
<template #default="{ row }">
|
||||
<!-- <el-date-picker clearable v-model="row.work_end_time" type="date" value-format="YYYY-MM-DD"
|
||||
placeholder="请选择" style="width: 100px;">
|
||||
</el-date-picker> -->
|
||||
<el-time-select v-model="row.work_end_time" start="06:30" step="00:15" end="23:30"
|
||||
placeholder="请选择" />
|
||||
</template></el-table-column>
|
||||
@ -141,7 +119,6 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="remark">
|
||||
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.remark" />
|
||||
</template>
|
||||
@ -169,14 +146,16 @@ import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { attendanceRecordAdd, attendanceRecordEdit, attendanceRecordDetail } from '@/api/project_attendance_record'
|
||||
import { attendancedetailDelete, attendancedetailLists } from '@/api/project_attendance_detail'
|
||||
import projectPersonnel from '@/components/project_personnel/index.vue'
|
||||
import type { PropType } from 'vue'
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
import { watch } from "vue"
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
|
||||
import { cloneDeep } from 'lodash'
|
||||
|
||||
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
|
||||
let props = defineProps({
|
||||
project: Object
|
||||
})
|
||||
@ -187,7 +166,7 @@ const formData = reactive({
|
||||
attendance_date: '',
|
||||
remark: '',
|
||||
file: '',
|
||||
attendance_detail: [{}],
|
||||
attendance_detail: [],
|
||||
|
||||
})
|
||||
|
||||
@ -206,10 +185,13 @@ const formDataannex = reactive([])
|
||||
const userInfo = userStore.userInfo
|
||||
|
||||
const handleAdd = (row: any) => {
|
||||
const index = formData.attendance_detail.indexOf(row);
|
||||
formData.attendance_detail.splice(index + 1, 0, {});
|
||||
// const index = formData.attendance_detail.indexOf(row);
|
||||
// formData.attendance_detail.splice(index + 1, 0, {});
|
||||
formData.attendance_detail.push({})
|
||||
};
|
||||
const handleDelete = (row: any) => {
|
||||
const handleDelete = async (row: any) => {
|
||||
console.log(row.id)
|
||||
if (row.id) await attendancedetailDelete({ id: row.id });
|
||||
const index = formData.attendance_detail.indexOf(row);
|
||||
formData.attendance_detail.splice(index, 1);
|
||||
};
|
||||
@ -244,25 +226,6 @@ const customEvent1 = (e) => {
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
// 表单验证
|
||||
@ -275,18 +238,6 @@ let renshu = computed(() => {
|
||||
|
||||
// 获取详情
|
||||
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
|
||||
@ -295,8 +246,10 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
project_name.value = data.project_name
|
||||
project_code.value = data.project_code
|
||||
idcard.value = data.person_idcard
|
||||
person_name.value = data.person_name
|
||||
|
||||
// let res = await attendancedetailLists({})
|
||||
// formData.attendance_detail = res.lists
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -310,15 +263,12 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = formDataannex.map((item: any) => item.uri)
|
||||
}
|
||||
await formRef.value?.validate()
|
||||
formData.attendance_detail.forEach(item => {
|
||||
const data = cloneDeep({ ...formData, })
|
||||
data.attendance_detail.forEach(item => {
|
||||
item.work_start_time = item.work_start_time ? formData.attendance_date + ` ${item.work_start_time}` : ""
|
||||
item.work_end_time = item.work_end_time ? formData.attendance_date + ` ${item.work_end_time}` : ""
|
||||
})
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await attendanceRecordEdit(data)
|
||||
: await attendanceRecordAdd(data)
|
||||
|
@ -29,17 +29,17 @@
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="日记工单号" prop="attendance_code" show-overflow-tooltip />
|
||||
<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="attendance_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目编码" prop="project_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="日期" prop="attendance_date" show-overflow-tooltip />
|
||||
<el-table-column label="出勤人数" prop="cqrs" show-overflow-tooltip />
|
||||
<el-table-column label="记工数量" prop="work_record_num_total" show-overflow-tooltip />
|
||||
<el-table-column label="日工资合计" prop="daily_salary_total" show-overflow-tooltip />
|
||||
<el-table-column label="日生活费合计" prop="daily_living_total" show-overflow-tooltip />
|
||||
<el-table-column label="日补贴合计" prop="daily_subsidy_total" show-overflow-tooltip />
|
||||
<el-table-column label="日其它合计" prop="daily_other_total" show-overflow-tooltip />
|
||||
<el-table-column label="日收入合计" prop="daily_income_total" show-overflow-tooltip />
|
||||
<el-table-column label="日工资合计" prop="daily_salary_total" show-overflow-tooltip width="100" />
|
||||
<el-table-column label="日生活费合计" prop="daily_living_total" show-overflow-tooltip width="120" />
|
||||
<el-table-column label="日补贴合计" prop="daily_subsidy_total" show-overflow-tooltip width="100" />
|
||||
<el-table-column label="日其它合计" prop="daily_other_total" show-overflow-tooltip width="100" />
|
||||
<el-table-column label="日收入合计" prop="daily_income_total" show-overflow-tooltip width="100" />
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
|
||||
<template #default="{ row }">
|
||||
|
@ -6,28 +6,22 @@
|
||||
<el-descriptions :column="3" title="成本调整详情" border>
|
||||
<el-descriptions-item :label="item.lable" label-align="left" align="left" label-class-name="my-label"
|
||||
v-for="(item, index) in descriptionList" :key="index">
|
||||
|
||||
<span v-if="item.lable != '附件'"> {{ item.value.length > 1 ? formData[item.value[0]][item.value[1]] :
|
||||
formData[item.value[0]]
|
||||
}}</span>
|
||||
<span v-else> <el-link class="m-2" v-for="item in formData.annex" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</el-link>
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="附件">
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
</el-card>
|
||||
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
|
||||
:submitApi="apiproject_cost_adjustmentApprove" :id="formData?.id" @off="handleClose">
|
||||
</flowProcess>
|
||||
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
|
||||
<!-- import { apiproject_cost_adjustmentApprove, apiproject_cost_adjustmentFlows } from '@/api/flowSet'
|
||||
// 获取审批流程
|
||||
const flows = ref([])
|
||||
const getbidDocumentExaminationFlows = async () => {
|
||||
if (formData?.approve_id) return
|
||||
let res = await apiproject_cost_adjustmentFlows()
|
||||
flows.value = res
|
||||
} -->
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
@ -52,10 +46,6 @@ const descriptionList = reactive([
|
||||
lable: "调整金额",
|
||||
value: ['adjust_amount']
|
||||
},
|
||||
{
|
||||
lable: "附件",
|
||||
value: ['annex']
|
||||
},
|
||||
{
|
||||
lable: "备注",
|
||||
value: ['remark']
|
||||
|
@ -1,16 +1,14 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="formData.project_name" readonly clearable placeholder="点击选择项目"
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="调整日期" prop="adjust_date">
|
||||
<!-- <el-input v-model="formData.adjust_date" clearable placeholder="请输入调整日期" /> -->
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.adjust_date" clearable
|
||||
value-format="YYYY-MM-DD " placeholder="选择日期">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.adjust_date" clearable value-format="YYYY-MM-DD "
|
||||
placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="调整金额" prop="adjust_amount">
|
||||
@ -20,22 +18,7 @@
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="附件">
|
||||
<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 formData.annex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
|
@ -2,8 +2,8 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="项目id" prop="project_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||
<el-form-item label="所属项目" prop="project_id">
|
||||
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
@ -24,20 +24,12 @@
|
||||
</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_name" show-overflow-tooltip />
|
||||
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="调整日期" prop="adjust_date" show-overflow-tooltip />
|
||||
<el-table-column label="调整金额" prop="adjust_amount" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip align="center">
|
||||
<template #default="{ row }">
|
||||
<el-link style="margin-right: 4px;" type="primary" :href="item.uri"
|
||||
v-for="(item, index) in row.annex">文件{{
|
||||
index + 1 }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<el-table-column label="操作" width="200" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_cost_adjustment/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
@ -72,6 +64,8 @@ import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
import { apiProjectSearch } from '@/api/project'
|
||||
|
||||
|
||||
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
|
@ -1,60 +1,56 @@
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="人工预算详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-descriptions :column="2" border>
|
||||
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="费用预算单号" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.cost_budget_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
<el-card>
|
||||
<template #header>
|
||||
项目信息
|
||||
</template>
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="费用预算单号" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.cost_budget_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
|
||||
<el-card>
|
||||
<template #header>
|
||||
费用预算清单
|
||||
</template>
|
||||
<div>
|
||||
<el-table :data="tableData" stripe style="width: 100%">
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="费用预算单号" prop="cost_budget_code" show-overflow-tooltip />
|
||||
<el-table-column label="一级科目" prop="first_level_subject" show-overflow-tooltip />
|
||||
<el-table-column label="二级科目" prop="second_level_subject" show-overflow-tooltip />
|
||||
<el-table-column label="三级科目" prop="third_level_subject" show-overflow-tooltip />
|
||||
<el-table-column label="是否差旅科目" prop="is_travel_text" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="unit" show-overflow-tooltip />
|
||||
<el-table-column label="预算金额" prop="amount" show-overflow-tooltip />
|
||||
<el-table-column label="编制标准" prop="standard" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</div>
|
||||
<div style="margin: 10px 0;">
|
||||
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size"
|
||||
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
|
||||
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<div v-if="formData.annex && formData.annex.length > 0">
|
||||
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
|
||||
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">文件{{ index + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无附件
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<div>
|
||||
<el-table :data="tableData" stripe style="width: 100%">
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="费用预算单号" prop="cost_budget_code" show-overflow-tooltip />
|
||||
<el-table-column label="一级科目" prop="first_level_subject" show-overflow-tooltip />
|
||||
<el-table-column label="二级科目" prop="second_level_subject" show-overflow-tooltip />
|
||||
<el-table-column label="三级科目" prop="third_level_subject" show-overflow-tooltip />
|
||||
<el-table-column label="是否差旅科目" prop="is_travel_text" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="unit" show-overflow-tooltip />
|
||||
<el-table-column label="预算金额" prop="amount" show-overflow-tooltip />
|
||||
<el-table-column label="编制标准" prop="standard" show-overflow-tooltip />
|
||||
</el-table>
|
||||
</div>
|
||||
<div style="margin: 10px 0;">
|
||||
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size"
|
||||
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
|
||||
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
|
||||
</div>
|
||||
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
|
||||
:submitApi="apiproject_cost_budgetApprove" :id="formData?.id" @off="handleClose">
|
||||
</flowProcess>
|
||||
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
|
||||
<!-- import { apiproject_cost_budgetApprove, apiproject_cost_budgetFlows } from '@/api/flowSet'
|
||||
// 获取审批流程
|
||||
const flows = ref([])
|
||||
const getbidDocumentExaminationFlows = async () => {
|
||||
if (formData?.approve_id) return
|
||||
let res = await apiproject_cost_budgetFlows()
|
||||
flows.value = res
|
||||
} -->
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -1,75 +1,58 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="85vw" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="85vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<div
|
||||
style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
|
||||
|
||||
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
|
||||
<el-select class="w-[180px]" 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-select class="w-[180px]" v-model="formData.org_id" clearable placeholder="请选择组织"
|
||||
@change="deptrmt">
|
||||
<el-select class="w-[180px]" 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>
|
||||
</div>
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" @click="showDialog = true"
|
||||
:disabled="project" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="remark">
|
||||
<el-input v-model="formData.project_code" disabled clearable placeholder="系统自动输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件">
|
||||
<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 formData.annex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目"
|
||||
@click="showDialog = true" :disabled="project" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编码" prop="remark">
|
||||
<el-input v-model="formData.project_code" disabled clearable placeholder="系统自动输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textaera" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="附件" prop="remark">
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-col :span="24">
|
||||
<div style="margin-bottom: 30px;">费用预算清单</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<el-table :data="formData.cost_budget_detail">
|
||||
<template #empty>
|
||||
暂无数据,点击添加
|
||||
<el-button @click="handleAdd" size="small">+</el-button>
|
||||
</template>
|
||||
<el-table-column label="序号">
|
||||
<template #default="{ row }">
|
||||
<el-button @click="handleAdd(row)" size="small">+</el-button>
|
||||
<el-button @click="handleAdd" size="small">+</el-button>
|
||||
<el-button @click="handleDelete(row)" size="small">-</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="一级科目">
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.first_level_subject" @click="openDialog1(scope)"
|
||||
readonly placeholder="点击选择" />
|
||||
<el-input v-model="scope.row.first_level_subject" @click="openDialog1(scope)" readonly
|
||||
placeholder="点击选择" />
|
||||
</template>
|
||||
<!-- <template #default="scope">
|
||||
<div style="display: flex; align-items: center">
|
||||
<el-icon @click="openDialog1(scope)">
|
||||
<timer />
|
||||
</el-icon>
|
||||
</div>
|
||||
</template> -->
|
||||
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="单位">
|
||||
@ -118,7 +101,7 @@ import projectcostTemLists from '@/components/projectcostTemLists/index.vue'
|
||||
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
import { apiProjectCostBudgetDetailLists } from "@/api/project_cost_budget_detail.ts"
|
||||
import { apiProjectCostBudgetDetailLists, apiProjectCostBudgetDetailDelete } from "@/api/project_cost_budget_detail.ts"
|
||||
|
||||
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
@ -214,17 +197,7 @@ const formRules = reactive<any>({
|
||||
}]
|
||||
})
|
||||
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four = (response: any) => {
|
||||
formData.annex ||= []
|
||||
// @ts-ignore
|
||||
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||
};
|
||||
|
||||
// 删除上传的文件
|
||||
const delFileFn = (index: number) => {
|
||||
formData.annex.splice(index, 1)
|
||||
}
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
@ -306,9 +279,9 @@ const handleAdd = (row: any) => {
|
||||
formData.cost_budget_detail.splice(index + 1, 0, {});
|
||||
};
|
||||
|
||||
const handleDelete = (row: any) => {
|
||||
const handleDelete = async (row: any) => {
|
||||
if (row.id) await apiProjectCostBudgetDetailDelete({ id: row.id })
|
||||
// 删除 row
|
||||
if (formData.cost_budget_detail.length <= 1) return
|
||||
const index = formData.cost_budget_detail.indexOf(row);
|
||||
formData.cost_budget_detail.splice(index, 1);
|
||||
};
|
||||
|
@ -2,13 +2,9 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
|
||||
<el-form-item label="费用预算单号" prop="cost_budget_code">
|
||||
<el-input class="w-[280px]" v-model="queryParams.cost_budget_code" clearable placeholder="请输入费用预算单号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="annex">
|
||||
<el-input class="w-[280px]" v-model="queryParams.annex" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
@ -33,14 +29,7 @@
|
||||
<el-table-column label="费用预算单号" prop="cost_budget_code" show-overflow-tooltip />
|
||||
<el-table-column label="金额" prop="total_amount" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip align="center">
|
||||
<template #default="{ row }">
|
||||
<el-link style="margin-right: 4px;" type="primary" :href="item.uri"
|
||||
v-for="(item, index) in row.annex">文件{{
|
||||
index + 1 }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<el-table-column label="操作" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_cost_budget/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="700px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<el-form-item label="项目名称" prop="cost_budget_id">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择" @click="showDialog = true" />
|
||||
</el-form-item>
|
||||
@ -19,7 +19,7 @@
|
||||
<el-input v-model="formData.standard" clearable placeholder="请输入编制标准" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入" />
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
|
@ -2,12 +2,10 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="项目id" prop="project_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||
</el-form-item>
|
||||
<el-form-item label="费用预算id" prop="cost_budget_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.cost_budget_id" clearable placeholder="请输入费用预算id" />
|
||||
<el-form-item label="所属项目" prop="project_id">
|
||||
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
@ -28,8 +26,8 @@
|
||||
<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_name" show-overflow-tooltip />
|
||||
<el-table-column label="费用预算单号" prop="cost_budget_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="费用预算单号" prop="cost_budget_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="一级科目" prop="first_level_subject" show-overflow-tooltip />
|
||||
<el-table-column label="二级科目" prop="second_level_subject" show-overflow-tooltip />
|
||||
<el-table-column label="三级科目" prop="third_level_subject" show-overflow-tooltip />
|
||||
@ -66,6 +64,7 @@ import { apiProjectCostBudgetDetailLists, apiProjectCostBudgetDetailDelete, apiP
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import { apiProjectSearch } from '@/api/project'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
|
@ -31,8 +31,8 @@
|
||||
<el-col :span="8">
|
||||
<el-form-item label="单位" prop="unit">
|
||||
<el-input v-model="formData.unit" clearable placeholder="请输入单位" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="差旅科目" prop="is_travel">
|
||||
|
@ -1,61 +1,57 @@
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="人工预算详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-descriptions :column="2" border>
|
||||
<el-card>
|
||||
<template #header>
|
||||
基本信息
|
||||
</template>
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="机具预算单号" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.equipment_budget_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
<el-card>
|
||||
<template #header>
|
||||
机器预算清单
|
||||
</template>
|
||||
<div class="mt-5">
|
||||
<el-table :data="tableData" stripe style="width: 100%">
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="机具预算单号" prop="equipment_budget_code" show-overflow-tooltip />
|
||||
<el-table-column label="机具类别" prop="type" show-overflow-tooltip />
|
||||
<el-table-column label="机具名称" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="规格型号" prop="spec" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="unit" show-overflow-tooltip />
|
||||
<el-table-column label="数量" prop="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 style="margin: 10px 0;">
|
||||
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size"
|
||||
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
|
||||
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="机具预算单号" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.equipment_budget_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<div v-if="formData.annex && formData.annex.length > 0">
|
||||
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
|
||||
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">文件{{ index + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无附件
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<div>
|
||||
<el-table :data="tableData" stripe style="width: 100%">
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="机具预算单号" prop="equipment_budget_code" show-overflow-tooltip />
|
||||
<el-table-column label="机具类别" prop="type" show-overflow-tooltip />
|
||||
<el-table-column label="机具名称" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="规格型号" prop="spec" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="unit" show-overflow-tooltip />
|
||||
<el-table-column label="数量" prop="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 style="margin: 10px 0;">
|
||||
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size"
|
||||
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total"
|
||||
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
|
||||
</div>
|
||||
<flowProcess v-if="!formData?.approve_id || formData.approve_check_status == 4" :flows="flows"
|
||||
:submitApi="apiproject_equipment_budgetApprove" :id="formData?.id" @off="handleClose">
|
||||
</flowProcess>
|
||||
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
|
||||
<!-- import { apiproject_equipment_budgetApprove, apiproject_equipment_budgetFlows } from '@/api/flowSet'
|
||||
// 获取审批流程
|
||||
const flows = ref([])
|
||||
const getbidDocumentExaminationFlows = async () => {
|
||||
if (formData?.approve_id) return
|
||||
let res = await apiproject_equipment_budgetFlows()
|
||||
flows.value = res
|
||||
} -->
|
||||
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -1,56 +1,46 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="85vw" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="85vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<div
|
||||
style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
|
||||
|
||||
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
|
||||
<el-select class="w-[180px]" 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-select class="w-[180px]" v-model="formData.org_id" clearable placeholder="请选择组织"
|
||||
@change="deptrmt">
|
||||
<el-select class="w-[180px]" 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>
|
||||
</div>
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" :disabled="project"
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="remark">
|
||||
<el-input v-model="formData.project_code" disabled clearable placeholder="系统自动输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件">
|
||||
<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 formData.annex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称" prop="project_name">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" :disabled="project"
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编码" prop="remark">
|
||||
<el-input v-model="formData.project_code" disabled clearable placeholder="系统自动输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="附件">
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-col :span="24">
|
||||
<div style="margin-bottom: 30px;">机器预算清单</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<el-table :data="formData.equipment_budget_detail">
|
||||
<template #empty>
|
||||
暂无数据,点击添加
|
||||
<el-button @click="handleAdd" size="small">+</el-button>
|
||||
</template>
|
||||
<el-table-column label="序号">
|
||||
<template #default="{ row }">
|
||||
<el-button @click="handleAdd(row)" size="small">+</el-button>
|
||||
@ -81,14 +71,9 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="单位">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.unit" type="number" />
|
||||
<el-input v-model="row.unit" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="金额">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.price" type="number" />
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="备注" prop="remark">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.remark" />
|
||||
@ -117,7 +102,7 @@ import useUserStore from "@/stores/modules/user";
|
||||
import { deptAll } from '@/api/org/department'
|
||||
import { getAll } from '@/api/org/organization'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { apiProjectEquipmentBudgetDetailLists } from "@/api/project_equipment_budget_detail.ts"
|
||||
import { apiProjectEquipmentBudgetDetailLists, apiProjectEquipmentBudgetDetailDelete } from "@/api/project_equipment_budget_detail.ts"
|
||||
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
@ -134,17 +119,6 @@ const mode = ref('add')
|
||||
|
||||
|
||||
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four = (response: any) => {
|
||||
formData.annex ||= []
|
||||
// @ts-ignore
|
||||
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||
};
|
||||
|
||||
// 删除上传的文件
|
||||
const delFileFn = (index: number) => {
|
||||
formData.annex.splice(index, 1)
|
||||
}
|
||||
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
@ -284,9 +258,9 @@ const handleAdd = (row: any) => {
|
||||
formData.equipment_budget_detail.splice(index + 1, 0, {});
|
||||
};
|
||||
|
||||
const handleDelete = (row: any) => {
|
||||
const handleDelete = async (row: any) => {
|
||||
if (row.id) await apiProjectEquipmentBudgetDetailDelete({ id: row.id })
|
||||
// 删除 row
|
||||
if (formData.equipment_budget_detail.length <= 1) return
|
||||
const index = formData.equipment_budget_detail.indexOf(row);
|
||||
formData.equipment_budget_detail.splice(index, 1);
|
||||
};
|
||||
|
@ -2,8 +2,8 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="项目id" prop="project_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||
<el-form-item label="所属项目" prop="project_id">
|
||||
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
|
||||
</el-form-item>
|
||||
<el-form-item label="机具预算单号" prop="equipment_budget_code">
|
||||
<el-input class="w-[280px]" v-model="queryParams.equipment_budget_code" clearable
|
||||
@ -33,14 +33,7 @@
|
||||
<el-table-column label="机具预算单号" prop="equipment_budget_code" show-overflow-tooltip />
|
||||
<el-table-column label="金额" prop="total_amount" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip align="center">
|
||||
<template #default="{ row }">
|
||||
<el-link style="margin-right: 4px;" type="primary" :href="item.uri"
|
||||
v-for="(item, index) in row.annex">文件{{
|
||||
index + 1 }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<el-table-column label="操作" width="170" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_equipment_budget/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
@ -75,6 +68,8 @@ import { apiProjectEquipmentBudgetLists, apiProjectEquipmentBudgetDelete, apiPro
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
import { apiProjectSearch } from '@/api/project'
|
||||
|
||||
|
||||
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
|
@ -2,13 +2,10 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="项目id" prop="project_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||
</el-form-item>
|
||||
<el-form-item label="机具预算id" prop="equipment_budget_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.equipment_budget_id" clearable
|
||||
placeholder="请输入机具预算id" />
|
||||
<el-form-item label="所属项目" prop="project_id">
|
||||
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="机具类别" prop="type">
|
||||
<el-input class="w-[280px]" v-model="queryParams.type" clearable placeholder="请输入机具类别" />
|
||||
</el-form-item>
|
||||
@ -35,8 +32,8 @@
|
||||
<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_name" show-overflow-tooltip />
|
||||
<el-table-column label="机具预算单号" prop="equipment_budget_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="机具预算单号" prop="equipment_budget_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="机具类别" prop="type" show-overflow-tooltip />
|
||||
<el-table-column label="机具名称" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="规格型号" prop="spec" show-overflow-tooltip />
|
||||
@ -74,6 +71,7 @@ import { apiProjectEquipmentBudgetDetailLists, apiProjectEquipmentBudgetDetailDe
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import { apiProjectSearch } from '@/api/project'
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
|
@ -4,79 +4,71 @@
|
||||
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{
|
||||
formData.custom_name }}</el-descriptions-item>
|
||||
formData.custom_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="执行人" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.executor }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.contacts
|
||||
}}</el-descriptions-item>
|
||||
formData.contacts
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系方式" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.contact_information
|
||||
formData.contact_information
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="项目角色" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_role
|
||||
formData.project_role
|
||||
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="职位" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.position
|
||||
formData.position
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="日期" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.follow_date
|
||||
formData.follow_date
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="主题" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.theme
|
||||
formData.theme
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="行动描述" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.action_description
|
||||
formData.action_description
|
||||
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目把握度" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_assurance_text
|
||||
formData.project_assurance_text
|
||||
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="状态" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.follow_status_text
|
||||
formData.follow_status_text
|
||||
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="阶段" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.follow_stage_text
|
||||
formData.follow_stage_text
|
||||
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.notes
|
||||
formData.notes
|
||||
|
||||
}}</el-descriptions-item><el-descriptions-item label="下次回访日期" label-align="left" align="left"
|
||||
}}</el-descriptions-item><el-descriptions-item label="下次回访日期" label-align="left" align="left"
|
||||
label-class-name="my-label"> {{ formData.next_follow_up_date
|
||||
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<div v-if="formData.file && formData.file.length > 0">
|
||||
<div v-for="(item, index) in formData.file" style="margin-left: 5px;display: block;">
|
||||
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item"
|
||||
target="_blank">文件{{ index + 1 }}查看</el-link>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无附件</div>
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
<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-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id"
|
||||
@ -15,7 +15,7 @@
|
||||
</el-form-item> </el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" prop="project_person_id" @click="showDialog1 = true"
|
||||
<el-form-item label="姓名" @click="showDialog1 = true"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="person_name" clearable placeholder="请选择项目人员" />
|
||||
</el-form-item> </el-col>
|
||||
@ -44,7 +44,8 @@
|
||||
</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-input v-model="formData.insurance_no" clearable placeholder="请输入保单号"
|
||||
@input="formData.insurance_no = formData.insurance_no.replace(/[\u4e00-\u9fa5]/g, '')" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保费(元)" prop="insurance">
|
||||
@ -61,11 +62,13 @@
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="保单明细" prop="insurance_detail">
|
||||
<el-input v-model="formData.insurance_detail" clearable placeholder="请输入保单明细" />
|
||||
<el-input v-model="formData.insurance_detail" clearable
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" 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-input v-model="formData.invoice_no" clearable placeholder="请输入发票编号"
|
||||
@input="formData.invoice_no = formData.invoice_no.replace(/[\u4e00-\u9fa5]/g, '')" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经办人" prop="handler">
|
||||
@ -76,7 +79,7 @@
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同附件">
|
||||
<uplaodAnnex :formData="formData"></uplaodAnnex>
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -221,6 +224,10 @@ const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
const checkCode = (e) => {
|
||||
console.log(e)
|
||||
e = 12412121
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
|
@ -4,25 +4,17 @@
|
||||
<el-descriptions :column="2" border>
|
||||
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="人工预算单号" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.labor_budget_code }}</el-descriptions-item>
|
||||
formData.labor_budget_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<div v-if="formData.annex && formData.annex.length > 0">
|
||||
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
|
||||
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">文件{{ index + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无附件
|
||||
</div>
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
@ -11,22 +11,30 @@
|
||||
<el-option v-for="(item, index) in list1" :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</div>
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" :disabled="project"
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="remark">
|
||||
<el-input v-model="formData.project_code" disabled clearable placeholder="系统自动输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择项目" :disabled="project"
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编码" prop="remark">
|
||||
<el-input v-model="formData.project_code" disabled clearable placeholder="系统自动输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="附件">
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件">
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
@ -96,7 +104,7 @@ import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
import { deptAll } from '@/api/org/department'
|
||||
import { getAll } from '@/api/org/organization'
|
||||
import { apiProjectLaborBudgetDetailLists } from "@/api/project_labor_budget_detail.ts"
|
||||
import { apiProjectLaborBudgetDetailLists, apiProjectLaborBudgetDetailDelete } from "@/api/project_labor_budget_detail.ts"
|
||||
|
||||
|
||||
|
||||
@ -267,9 +275,9 @@ const handleAdd = (row: any) => {
|
||||
formData.labor_budget_detail.splice(index + 1, 0, {});
|
||||
};
|
||||
|
||||
const handleDelete = (row: any) => {
|
||||
const handleDelete = async (row: any) => {
|
||||
if (row.id) await apiProjectLaborBudgetDetailDelete({ id: row.id })
|
||||
// 删除 row
|
||||
if (formData.labor_budget_detail.length <= 1) return
|
||||
const index = formData.labor_budget_detail.indexOf(row);
|
||||
formData.labor_budget_detail.splice(index, 1);
|
||||
};
|
||||
|
@ -2,8 +2,8 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="项目id" prop="project_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||
<el-form-item label="所属项目" prop="project_id">
|
||||
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
|
||||
</el-form-item>
|
||||
<el-form-item label="人工预算单号" prop="labor_budget_code">
|
||||
<el-input class="w-[280px]" v-model="queryParams.labor_budget_code" clearable placeholder="请输入人工预算单号" />
|
||||
@ -28,21 +28,13 @@
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<!-- <el-table-column label="项目id" prop="project_id" show-overflow-tooltip /> -->
|
||||
<el-table-column label="人工预算单号" prop="labor_budget_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="labor_budget_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目编码" prop="project_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="数量" prop="total_num" show-overflow-tooltip />
|
||||
<el-table-column label="金额" prop="total_amount" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip align="center">
|
||||
<template #default="{ row }">
|
||||
<el-link style="margin-right: 4px;" type="primary" :href="item.uri"
|
||||
v-for="(item, index) in row.annex">文件{{
|
||||
index + 1 }}</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<el-table-column label="操作" width="200" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_labor_budget/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
@ -76,6 +68,8 @@ import { apiProjectLaborBudgetLists, apiProjectLaborBudgetDelete, apiProjectLabo
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
import { apiProjectSearch } from '@/api/project'
|
||||
|
||||
|
||||
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
|
@ -2,11 +2,8 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="项目id" prop="project_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请选择项目" />
|
||||
</el-form-item>
|
||||
<el-form-item label="人工预算id" prop="labor_budget_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.labor_budget_id" clearable placeholder="请输入人工预算id" />
|
||||
<el-form-item label="所属项目" prop="project_id">
|
||||
<selectRemote :formData="queryParams" model="project_id" :api="apiProjectSearch" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
@ -64,6 +61,8 @@ import { apiProjectLaborBudgetDetailLists, apiProjectLaborBudgetDetailDelete } f
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import { apiProjectSearch } from '@/api/project'
|
||||
|
||||
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
|
@ -89,10 +89,11 @@
|
||||
</el-date-picker>
|
||||
</el-form-item> </el-col><el-col :span="8">
|
||||
<el-form-item label="解除原因" prop="release_reason">
|
||||
<el-input class="w-[220px]" v-model="formData.release_reason" clearable placeholder="请输入合同名称" />
|
||||
<el-input class="w-[220px]" v-model="formData.release_reason" clearable placeholder="请输入解除原因" />
|
||||
</el-form-item> </el-col><el-col :span="8">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input class="w-[220px]" v-model="formData.remark" clearable placeholder="请输入合同名称" />
|
||||
<el-input class="w-[220px]" v-model="formData.remark" clearable placeholder="请输入备注"
|
||||
type="textarea" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同附件">
|
||||
|
@ -10,9 +10,15 @@
|
||||
<span v-if="item.lable != '附件'"> {{ item.value.length > 1 ? formData[item.value[0]][item.value[1]] :
|
||||
formData[item.value[0]]
|
||||
}}</span>
|
||||
<span v-else> <el-link class="m-2" v-for="item in formData.annex" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</el-link>
|
||||
</span>
|
||||
<!-- <span v-else>
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</span> -->
|
||||
</el-descriptions-item>
|
||||
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
@ -20,14 +26,6 @@
|
||||
:submitApi="apiproject_loan_applyApprove" :id="formData?.id" @off="handleClose">
|
||||
</flowProcess>
|
||||
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
|
||||
<!-- import { apiproject_loan_applyApprove, apiproject_loan_applyFlows } from '@/api/flowSet'
|
||||
// 获取审批流程
|
||||
const flows = ref([])
|
||||
const getbidDocumentExaminationFlows = async () => {
|
||||
if (formData?.approve_id) return
|
||||
let res = await apiproject_loan_applyFlows()
|
||||
flows.value = res
|
||||
} -->
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
@ -84,10 +82,6 @@ const descriptionList = reactive([
|
||||
lable: "开户账号",
|
||||
value: ['bank_account', 'account']
|
||||
},
|
||||
{
|
||||
lable: "附件",
|
||||
value: ['annex']
|
||||
},
|
||||
{
|
||||
lable: "备注",
|
||||
value: ['remark']
|
||||
|
@ -1,11 +1,8 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="700px" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="700px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<!-- <el-form-item label="借款单号" prop="loan_apply_code">
|
||||
<el-input v-model="formData.loan_apply_code" clearable placeholder="请输入借款单号" />
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择" readonly
|
||||
@click="showDialog = true" />
|
||||
@ -14,13 +11,12 @@
|
||||
<el-input v-model="formData.apply_user" clearable placeholder="请输入借款人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="借款申请日期" prop="loan_date">
|
||||
<!-- <el-input v-model="formData.loan_date" clearable placeholder="请输入借款申请日期" /> -->
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.loan_date" clearable
|
||||
value-format="YYYY-MM-DD " placeholder="选择日期">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.loan_date" clearable value-format="YYYY-MM-DD "
|
||||
placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="借款金额" prop="loan_amount">
|
||||
<el-input v-model="formData.loan_amount" clearable placeholder="请输入借款金额" />
|
||||
<el-input v-model="formData.loan_amount" clearable placeholder="请输入借款金额" type="number" />
|
||||
</el-form-item>
|
||||
<el-form-item label="收款人姓名" prop="payee_name">
|
||||
<el-input v-model="formData.payee_name" clearable placeholder="请输入收款人姓名" />
|
||||
@ -36,22 +32,7 @@
|
||||
</el-form-item>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件">
|
||||
<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 formData.annex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-form-item label="账户编码" prop="bank_account_id">
|
||||
@ -138,12 +119,7 @@ const formData = reactive({
|
||||
// }
|
||||
})
|
||||
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four = (response: any) => {
|
||||
formData.annex ||= []
|
||||
// @ts-ignore
|
||||
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||
};
|
||||
|
||||
const customEvent = (e: any) => {
|
||||
formData.project_id = e.id
|
||||
formData.project_name = e.name
|
||||
|
@ -31,8 +31,8 @@
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="借款单号" prop="loan_apply_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="借款单号" prop="loan_apply_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="借款人" prop="apply_user" show-overflow-tooltip />
|
||||
<el-table-column label="借款申请日期" prop="loan_date" show-overflow-tooltip />
|
||||
<el-table-column label="借款金额" prop="loan_amount" show-overflow-tooltip />
|
||||
@ -40,7 +40,7 @@
|
||||
<el-table-column label="收款银行" prop="payee_bank" show-overflow-tooltip />
|
||||
<el-table-column label="收款账号" prop="payee_account" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<el-table-column label="操作" width="200" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project_loan_apply/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
|
@ -38,13 +38,10 @@
|
||||
:value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="执行人" prop="executor">
|
||||
<el-input v-model="formData.executor" clearable placeholder="请输入排序号" />
|
||||
<el-input v-model="formData.executor" clearable placeholder="请输入执行人" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="下次回访日期" prop="next_follow_up_date">
|
||||
|
@ -145,13 +145,12 @@ import { getAll } from '@/api/org/organization'
|
||||
import type { PropType } from 'vue'
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
const protype = reactive([])
|
||||
const protype = ref()
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
const active = ref(0)
|
||||
const formDataannex = reactive([])
|
||||
const list1 = reactive([])
|
||||
const list2 = reactive([])
|
||||
|
||||
const contract_name = ref('')
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
@ -316,6 +315,15 @@ const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
//获取项目类型
|
||||
const list = () => {
|
||||
getAllProjectTypes().then((res) => {
|
||||
protype.value = res
|
||||
})
|
||||
}
|
||||
|
||||
list()
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
|
@ -4,18 +4,18 @@
|
||||
<el-descriptions :column="2" border>
|
||||
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="材料预算单号" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.material_budget_code }}</el-descriptions-item>
|
||||
formData.material_budget_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
|
||||
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<div v-if="formData.annex.length > 0">
|
||||
<!-- <div v-if="formData.annex.length > 0">
|
||||
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
|
||||
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item"
|
||||
target="_blank">文件{{ index + 1 }}查看</el-link>
|
||||
@ -24,7 +24,8 @@
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无附件
|
||||
</div>
|
||||
</div> -->
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
@ -32,10 +32,9 @@
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="预算单号" prop="material_budget_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="material_budget_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目编码" prop="project_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="预算总数量" prop="total_num" show-overflow-tooltip />
|
||||
<el-table-column label="申请总数量" prop="total_apply_num" show-overflow-tooltip />
|
||||
<el-table-column label="剩余预算数量" prop="total_residual_num" show-overflow-tooltip />
|
||||
|
@ -42,9 +42,9 @@
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="预算单号" prop="material_budget_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="material_budget_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目编码" prop="project_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="类型" prop="budget_type" show-overflow-tooltip />
|
||||
<el-table-column label="材料大类" prop="material_first_level" show-overflow-tooltip />
|
||||
<el-table-column label="材料中类" prop="material_second_level" show-overflow-tooltip />
|
||||
@ -57,7 +57,7 @@
|
||||
<el-table-column label="单位" prop="material_unit" show-overflow-tooltip />
|
||||
<el-table-column label="申请数量" prop="apply_num" show-overflow-tooltip />
|
||||
<el-table-column label="预算数量" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="剩余预算数量" prop="residual_num" show-overflow-tooltip />
|
||||
<el-table-column label="剩余预算数量" prop="residual_num" show-overflow-tooltip width="120" />
|
||||
<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 />
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="项目名称" prop="project_id"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
@ -13,8 +12,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="project_id"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="custom_name" disabled @click="showDialog = true" clearable
|
||||
placeholder="系统自动填写" />
|
||||
<el-input v-model="custom_name" disabled @click="showDialog = true" clearable placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
<el-form-item label="技术人员" prop="technician_ids">
|
||||
<!-- <el-input v-model="technician" clearable placeholder="请输入技术人员" @click="userone('1')" /> -->
|
||||
@ -70,23 +68,19 @@
|
||||
</el-radio-group>
|
||||
|
||||
<div v-if="isCollapse == 1" style="margin-bottom: 20px">
|
||||
<!-- <el-input v-model="content" clearable placeholder="搜索人员" /> -->
|
||||
<div style="margin-top: 20px">
|
||||
<el-checkbox-group v-model="radiolist">
|
||||
<el-checkbox :label="item" v-for="(item, i) in uesrlist" :key="i"
|
||||
style="margin-bottom: 20px;">
|
||||
<div class="radio-con">
|
||||
<el-checkbox :label="item" v-for="(item, i) in uesrlist" :key="i" style="margin-bottom: 40px;">
|
||||
<div class="radio-con flex items-center">
|
||||
<div class="radioa">
|
||||
<img :src="item.avatar" alt="" />
|
||||
</div>
|
||||
<div class="radiob">
|
||||
<div class="radiob_a">{{ item.name }}</div>
|
||||
<div class="radiob_b">
|
||||
<!-- {{ item.org_name }}/{{ item.dept_name }}/{{ item.job_name }} -->
|
||||
<text v-if="item.org_name.length > 0">{{ item.org_name }}</text>
|
||||
<text v-if="item.dept_name.length > 0">/{{ item.dept_name }}</text>
|
||||
<text v-if="item.job_name.length > 0">/{{ item.job_name }}</text>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -106,14 +100,10 @@
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
|
||||
|
||||
<!-- <el-input v-model="content" clearable placeholder="搜索人员" style="margin-bottom: 20px;" /> -->
|
||||
|
||||
<el-checkbox-group v-model="radiolist">
|
||||
<el-checkbox :label="item" v-for="(item, i) in deparmetlist1" :key="i"
|
||||
style="margin-bottom: 20px;">
|
||||
<div class="radio-con">
|
||||
style="margin-bottom: 200px;">
|
||||
<div class="radio-con flex items-center">
|
||||
<div class="radioa">
|
||||
<img :src="item.avatar" alt="" />
|
||||
</div>
|
||||
@ -133,8 +123,8 @@
|
||||
</div>
|
||||
<div v-if="isCollapse == 3">
|
||||
<div class="lad " v-if="isshow1">
|
||||
<div class="flex " v-for="(item, j) in jobslist" :key="j"
|
||||
style="justify-content: space-between;" @click="gwclck(item)">
|
||||
<div class="flex " v-for="(item, j) in jobslist" :key="j" style="justify-content: space-between;"
|
||||
@click="gwclck(item)">
|
||||
<div>{{ item.name }}</div>
|
||||
<div class="Collapsebj">{{ item.admin_num }}</div>
|
||||
</div>
|
||||
@ -142,8 +132,7 @@
|
||||
<div v-else>
|
||||
<!-- <el-input v-model="content" clearable placeholder="搜索人员" style="margin-bottom: 20px;" /> -->
|
||||
<el-checkbox-group v-model="radiolist">
|
||||
<el-checkbox :label="item" v-for="(item, i) in jobslist1" :key="i"
|
||||
style="margin-bottom: 20px;">
|
||||
<el-checkbox :label="item" v-for="(item, i) in jobslist1" :key="i" style="margin-bottom: 20px;">
|
||||
<div class="radio-con">
|
||||
<div class="radioa">
|
||||
<img :src="item.avatar" alt="" />
|
||||
|
@ -8,9 +8,9 @@
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="工资付款单号" prop="payment_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="payment_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目编码" prop="project_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="日期" prop="apply_date" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="person_name" show-overflow-tooltip />
|
||||
<el-table-column label="身份证号" prop="person_idcard" show-overflow-tooltip />
|
||||
@ -18,12 +18,17 @@
|
||||
<el-table-column label="总收入" prop="total_income" show-overflow-tooltip />
|
||||
<el-table-column label="总支出" prop="total_pay_out" show-overflow-tooltip />
|
||||
<el-table-column label="未发放" prop="balance" show-overflow-tooltip />
|
||||
<el-table-column label="本次申请付款金额" prop="apply_amount" show-overflow-tooltip />
|
||||
<el-table-column label="本次申请付款金额" prop="apply_amount" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<!-- <el-table-column label="银行卡号" prop="handler" show-overflow-tooltip />
|
||||
<el-table-column label="开户银行" prop="remark" show-overflow-tooltip /> -->
|
||||
|
||||
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_salary_payment/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
@ -37,7 +42,7 @@
|
||||
<script lang="ts" setup name="projectLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { projectsalaryDetailLists } from '@/api/project_salary_detail'
|
||||
import { projectsalaryDetailLists, projectsalaryDetailDelete } from '@/api/project_salary_detail'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
const protype = reactive([])
|
||||
@ -78,6 +83,12 @@ const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await projectsalaryDetailDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
|
||||
|
||||
getLists()
|
||||
|
@ -19,15 +19,11 @@
|
||||
{{ formData.project_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="付款类型">
|
||||
{{ formData.payment_type }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="付款类型">
|
||||
{{ formData.payment_type }}
|
||||
@ -44,24 +40,11 @@
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<!-- <el-form-item label="合计金额大写">
|
||||
{{ formData.total_amount_uppercase
|
||||
}}
|
||||
</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 label="附件" v-if="formData.annex.length">
|
||||
<el-link class="mr-5" type="primary" :href="item.uri"
|
||||
v-for="(item, index) in formData.annex" :key="index">{{ item.name
|
||||
}}</el-link>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -73,7 +56,7 @@
|
||||
<el-table-column label="序号" type="index" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="person_name" show-overflow-tooltip />
|
||||
<el-table-column label="工种" prop="person_work_type_text" show-overflow-tooltip />
|
||||
<el-table-column label="银行卡号" prop="person_bank_no" show-overflow-tooltip />
|
||||
<el-table-column label="银行卡号" prop="person_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="总收入" prop="total_income" show-overflow-tooltip />
|
||||
<el-table-column label="总支出" prop="total_pay_out" show-overflow-tooltip />
|
||||
<el-table-column label="未发放" prop="balance" show-overflow-tooltip />
|
||||
@ -92,6 +75,8 @@
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiCustomDetail } from '@/api/custom'
|
||||
import { projectsalaryDetailLists } from '@/api/project_salary_detail'
|
||||
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
@ -123,19 +108,8 @@ 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)
|
||||
|
||||
|
||||
}
|
||||
|
||||
let res = await projectsalaryDetailLists({ payment_salary_id: data.id })
|
||||
formData.payment_detail = res.lists
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,10 @@
|
||||
<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="auto" :rules="formRules" inline>
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="140px" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="项目编码">
|
||||
<el-input v-model="project_code" clearable placeholder="请选择项目编码" @click="showDialog = true"
|
||||
:disabled="project" />
|
||||
</el-form-item> </el-col>
|
||||
@ -14,7 +12,7 @@
|
||||
<el-form-item label="项目名称">
|
||||
<el-input v-model="project_name" clearable placeholder="系统自动填写" disabled />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="付款类型" prop="payment_type">
|
||||
<el-radio-group v-model="formData.payment_type" placeholder="请选择付款类型">
|
||||
<el-radio v-for="( item, index ) in dictData.salary_payment_type " :key="index"
|
||||
@ -44,18 +42,22 @@
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同附件">
|
||||
<el-form-item label="附件">
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="margin-bottom: 30px;">工资支付明细</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<el-table :data="paymentlist">
|
||||
|
||||
<template #empty>
|
||||
暂无数据,点击添加
|
||||
<el-button @click="handleAdd(row)" size="small">+</el-button>
|
||||
</template>
|
||||
|
||||
<el-table-column label="序号">
|
||||
<template #default="{ row }">
|
||||
|
||||
<el-button @click="handleAdd(row)" size="small">+</el-button>
|
||||
<el-button @click="handleDelete(row)" size="small">-</el-button>
|
||||
</template>
|
||||
@ -81,13 +83,11 @@
|
||||
</template></el-table-column>
|
||||
|
||||
<el-table-column label="总支出" prop="pay_out">
|
||||
<template #default="{ row }"> <el-input v-model="row.pay_out" placeholder="系统自动获取"
|
||||
disabled />
|
||||
<template #default="{ row }"> <el-input v-model="row.pay_out" placeholder="系统自动获取" disabled />
|
||||
</template></el-table-column>
|
||||
|
||||
<el-table-column label="未发放" prop="balance">
|
||||
<template #default="{ row }"> <el-input v-model="row.balance" placeholder="系统自动获取"
|
||||
disabled />
|
||||
<template #default="{ row }"> <el-input v-model="row.balance" placeholder="系统自动获取" disabled />
|
||||
</template></el-table-column>
|
||||
|
||||
<el-table-column label="本次申请付款金额" prop="apply_amount">
|
||||
@ -123,7 +123,7 @@ import { projectsalarypaymentAdd, projectsalarypaymentEdit, projectsalarypayment
|
||||
import customDialog from '@/components/project_personnel/index.vue'
|
||||
import feedback from '@/utils/feedback'
|
||||
import { watch } from "vue"
|
||||
import { projectsalaryDetailLists } from "@/api/project_salary_detail.ts"
|
||||
import { projectsalaryDetailLists, projectsalaryDetailDelete } from "@/api/project_salary_detail.ts"
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
|
||||
|
||||
@ -142,7 +142,6 @@ const project_code = ref('')
|
||||
const person_name = ref('')
|
||||
const idcard = ref('')
|
||||
const num = ref(0)
|
||||
const formDataannex = reactive([])
|
||||
const paymentlist = reactive([{}])
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
@ -195,12 +194,14 @@ const paymentdetail = (row, index) => {
|
||||
|
||||
}
|
||||
const handleAdd = (row: any) => {
|
||||
|
||||
// 在 row 后面插入一行数据
|
||||
const index = paymentlist.indexOf(row);
|
||||
paymentlist.splice(index + 1, 0, {});
|
||||
};
|
||||
|
||||
const handleDelete = (row: any) => {
|
||||
const handleDelete = async (row: any) => {
|
||||
if (row.id) await projectsalaryDetailDelete({ id: row.id })
|
||||
// 删除 row
|
||||
const index = paymentlist.indexOf(row);
|
||||
paymentlist.splice(index, 1);
|
||||
@ -231,17 +232,7 @@ 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
|
||||
@ -271,9 +262,7 @@ const handleSubmit = async () => {
|
||||
const arr1 = paymentlist.map(({ name, bank_no, work_type_text, ...rest }) => rest)
|
||||
formData.payment_detail = arr1
|
||||
}
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = formDataannex.map((item: any) => item.uri)
|
||||
}
|
||||
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
|
@ -41,27 +41,12 @@
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="工资付款单号" prop="payment_code" show-overflow-tooltip />
|
||||
<el-table-column label="工资付款单号" prop="payment_code" :render-header="pager.calcWidth" />
|
||||
<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="payment_type" show-overflow-tooltip />
|
||||
<el-table-column label="申请日期" prop="apply_date" show-overflow-tooltip />
|
||||
<el-table-column label="合计金额" prop="total_amount" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" 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 }">
|
||||
@ -73,8 +58,7 @@
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_salary_payment/detail']" link
|
||||
@click="handledetail(row)">
|
||||
<el-button v-perms="['project.project_salary_payment/detail']" link @click="handledetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
<el-input v-model="formData.settlement_amount_uppercase" readonly disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
<el-form-item label="结算差异" prop="remaining_amount">
|
||||
<el-input v-model="formData.remaining_amount" readonly disabled placeholder="系统自动计算" />
|
||||
<el-input v-model="formData.remaining_amount" placeholder="请输入结算差异" />
|
||||
</el-form-item>
|
||||
<el-form-item label="结算日期" prop="settlement_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.settlement_date" clearable type="date"
|
||||
@ -175,7 +175,7 @@ const checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
|
||||
const amountinput = (e) => {
|
||||
if (e && e > 0) {
|
||||
|
||||
formData.remaining_amount = e
|
||||
// formData.remaining_amount = e
|
||||
formData.settlement_amount_uppercase = toChinesNum(e)
|
||||
}
|
||||
}
|
||||
|
@ -28,9 +28,9 @@
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="结算单号" prop="settlement_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />
|
||||
<el-table-column label="结算单号" prop="settlement_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="合同名称" prop="contract_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="合同编号" prop="contract_code" show-overflow-tooltip />
|
||||
<el-table-column label="结算日期" prop="settlement_date" show-overflow-tooltip />
|
||||
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
|
||||
|
@ -63,16 +63,7 @@
|
||||
</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>
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
@ -15,8 +15,8 @@
|
||||
<el-form-item label="结算金额大写" prop="settlement_amount_uppercase">
|
||||
<el-input v-model="formData.settlement_amount_uppercase" readonly disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
<el-form-item label="结算差异" prop="remaining_amount">
|
||||
<el-input v-model="formData.remaining_amount" placeholder="请输入" />
|
||||
<el-form-item label="结算差异">
|
||||
<el-input v-model="formData.settlement_difference" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="结算日期" prop="settlement_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.settlement_date" clearable type="date"
|
||||
@ -35,8 +35,11 @@
|
||||
<projectTable @customEvent="customEvent"></projectTable>
|
||||
</el-dialog>
|
||||
<div v-if="showDialog1">
|
||||
<el-dialog v-model="showDialog1" title="选择合同" width="70%">
|
||||
<contractTable @customEvent="customEvent1" :project_id="formData.project_id"></contractTable>
|
||||
<el-dialog v-model="showDialog1" title="选择分包合同" width="70%">
|
||||
<!-- <contractTable @customEvent="customEvent1" :project_id="formData.project_id"></contractTable> -->
|
||||
<dialogTable :config="subcontracting_contract" :query="{ project_id: project?.id || '' }"
|
||||
@customEvent="customEvent1">
|
||||
</dialogTable>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</div>
|
||||
@ -48,7 +51,9 @@ import Popup from '@/components/popup/index.vue'
|
||||
import { deptAll } from '@/api/org/department'
|
||||
import { getAll } from '@/api/org/organization'
|
||||
import projectTable from "@/components/project/index.vue"
|
||||
import contractTable from "@/components/procurement/index.vue"
|
||||
import { subcontracting_contract } from "@/components/dialogTable/dialogTableConfig"
|
||||
import { computed } from "vue"
|
||||
|
||||
|
||||
import { subcontractsettlementAdd, subcontractsettlementEdit, subcontractsettlementDetail } from '@/api/project_subcontract_settlement'
|
||||
import { timeFormat, toChinesNum } from '@/utils/util'
|
||||
@ -70,7 +75,6 @@ const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const custom_name
|
||||
= ref('')
|
||||
const formDataannex = reactive([])
|
||||
import configs from "@/config"
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
@ -93,24 +97,8 @@ const customEvent1 = (e: any) => {
|
||||
showDialog1.value = false;
|
||||
};
|
||||
|
||||
const getlista = () => {
|
||||
getAll().then((res) => {
|
||||
// orglist = res.data
|
||||
|
||||
Object.assign(orglist, res)
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
const area_change = (e: any) => {
|
||||
formData.org_id = e
|
||||
let data = { 'org_id': e }
|
||||
deptAll(data).then((res) => {
|
||||
|
||||
Object.assign(jobs, res)
|
||||
|
||||
})
|
||||
}
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑分包结算' : '新增分包结算'
|
||||
@ -126,6 +114,7 @@ const formData = reactive({
|
||||
settlement_amount_uppercase: '',
|
||||
remaining_amount: '',
|
||||
settlement_date: '',
|
||||
settlement_difference: "",
|
||||
remark: '',
|
||||
annex: [],
|
||||
approve_detail: {
|
||||
@ -138,12 +127,8 @@ const formData = reactive({
|
||||
|
||||
|
||||
//监听输入
|
||||
const amountinput = (e) => {
|
||||
if (e && e > 0) {
|
||||
|
||||
// formData.remaining_amount = e
|
||||
formData.settlement_amount_uppercase = toChinesNum(e)
|
||||
}
|
||||
const amountinput = () => {
|
||||
formData.settlement_amount_uppercase = toChinesNum(formData.settlement_amount)
|
||||
}
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
@ -153,9 +138,6 @@ const formRules = reactive<any>({
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
deptAll({ 'org_id': data.org_id }).then((res) => {
|
||||
Object.assign(jobs, res)
|
||||
})
|
||||
|
||||
project_name.value = data.project_name
|
||||
custom_name.value = data.custom_name
|
||||
@ -169,6 +151,7 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
|
||||
//@ts-ignore
|
||||
formData.recording_time = timeFormat(formData.recording_time, 'YYYY-MM-DD ')
|
||||
amountinput()
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
@ -202,7 +185,6 @@ const handleClose = () => {
|
||||
}
|
||||
|
||||
|
||||
getlista()
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
|
@ -28,10 +28,10 @@
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />、
|
||||
<el-table-column label="结算单号" prop="settlement_code" show-overflow-tooltip />
|
||||
<el-table-column label="供应商名称" prop="supplier_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="settlement_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="供应商名称" prop="supplier_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="合同编号" prop="contract_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="结算日期" prop="settlement_date" show-overflow-tooltip />
|
||||
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
|
||||
<el-table-column label="洽商金额" prop="negotiation_amount" show-overflow-tooltip />
|
||||
@ -41,12 +41,14 @@
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
|
||||
<template #default="{ row }">
|
||||
<!-- <el-button v-perms="['project.project_subcontract_settlement/edit']" type="primary" link @click="handleEdit(row)">
|
||||
<el-button v-perms="['project.project_subcontract_settlement/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button> -->
|
||||
<!-- <el-button v-perms="['project.project_subcontract_settlement/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_subcontract_settlement/delete']" type="danger" link
|
||||
@click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button> -->
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_subcontract_settlement/detail']" link
|
||||
@click="handledetail(row)">
|
||||
详情
|
||||
|
@ -4,26 +4,18 @@
|
||||
<el-descriptions :column="2" border>
|
||||
|
||||
<el-descriptions-item label="项目名称" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
formData.project_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="项目编码" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
formData.project_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="分包预算单号" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.subpackage_budget_code }}</el-descriptions-item>
|
||||
formData.subpackage_budget_code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
|
||||
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<div v-if="formData.annex && formData.annex.length > 0">
|
||||
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
|
||||
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item"
|
||||
target="_blank">文件{{ index + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无附件
|
||||
</div>
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
|
@ -1,16 +1,13 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<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>
|
||||
<div
|
||||
style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
|
||||
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
|
||||
|
||||
<el-select class="w-[180px]" 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-select class="w-[180px]" v-model="formData.org_id" clearable placeholder="请选择组织"
|
||||
@change="deptrmt">
|
||||
<el-select class="w-[180px]" 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>
|
||||
</div>
|
||||
@ -33,23 +30,7 @@
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件">
|
||||
<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>
|
||||
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
@ -128,7 +109,7 @@
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { subpackagdetailLists } from '@/api/project_subpackage_budget_detail'
|
||||
import { subpackagdetailLists, subpackagdetailDelete } from '@/api/project_subpackage_budget_detail'
|
||||
import prodctTable from '@/components/product/index.vue'
|
||||
import { subpackagebudgetAdd, subpackagebudgetEdit, subpackagebudgetDetail } from '@/api/project_subpackage_budget'
|
||||
let props = defineProps({
|
||||
@ -191,26 +172,6 @@ const customEvent1 = (e) => {
|
||||
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 subtractji1 = (row: any, index: any) => {
|
||||
@ -273,7 +234,8 @@ const handleAdd = (row: any) => {
|
||||
tableData.value.splice(index + 1, 0, {});
|
||||
};
|
||||
|
||||
const handleDelete = (row: any) => {
|
||||
const handleDelete = async (row: any) => {
|
||||
if (row.id) await subpackagdetailDelete({ id: row.id })
|
||||
// 删除 row
|
||||
const index = tableData.value.indexOf(row);
|
||||
tableData.value.splice(index, 1);
|
||||
@ -289,16 +251,7 @@ 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)
|
||||
}
|
||||
budgetDetailLists(data.id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.org_id)
|
||||
@ -325,7 +278,6 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
formData.annex = formDataannex.map((item: any) => item.uri)
|
||||
if (tableData.value.length > 0) {
|
||||
formData.subpackage_budget_detail = tableData.value.map((item: any) => ({
|
||||
'id': item.id,
|
||||
|
@ -15,19 +15,13 @@
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="预算单号" prop="subpackage_budget_code" show-overflow-tooltip />
|
||||
<el-table-column label="预算单号" prop="subpackage_budget_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="预算总工作量" prop="total_num" show-overflow-tooltip />
|
||||
<el-table-column label="剩余预算工作量" prop="residue_num" show-overflow-tooltip />
|
||||
<el-table-column label="预算总金额" prop="total_amount" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" 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)">
|
||||
编辑
|
||||
|
@ -31,23 +31,20 @@
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="预算单号" prop="subpackage_budget_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="subpackage_budget_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目编码" prop="project_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="工作类型" prop="work_type" show-overflow-tooltip />
|
||||
<el-table-column label="工作内容" prop="work_content" show-overflow-tooltip />
|
||||
<el-table-column label="项目特征" prop="project_features" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="unit" show-overflow-tooltip />
|
||||
<el-table-column label="预算总工作量" prop="num" show-overflow-tooltip />
|
||||
<el-table-column label="预算总工作量" prop="num" show-overflow-tooltip width="120" />
|
||||
<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-column label="已分包工作量" prop="has_subcontract_num" show-overflow-tooltip />
|
||||
<el-table-column label="剩余预算工作量" prop="residue_num" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="已分包工作量" prop="has_subcontract_num" show-overflow-tooltip width="120" />
|
||||
<el-table-column label="剩余预算工作量" prop="residue_num" show-overflow-tooltip width="140" />
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
|
@ -1,23 +1,17 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
|
||||
<div
|
||||
style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
|
||||
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
|
||||
<el-select class="w-[180px]" 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-select class="w-[180px]" v-model="formData.org_id" clearable placeholder="请选择组织"
|
||||
@change="deptrmt">
|
||||
<el-select class="w-[180px]" 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>
|
||||
</div>
|
||||
|
||||
|
||||
<el-row>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project_id" @click="showDialog2 = true"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
@ -51,10 +45,7 @@
|
||||
<el-input v-model="project_rate" clearable disabled placeholder="请输入项目利润率(%)" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
</el-row>
|
||||
|
||||
<br />
|
||||
<el-row>
|
||||
<el-table :data="tableData" :summary-method="getSummaries" show-summary>
|
||||
@ -67,35 +58,21 @@
|
||||
<div>{{ row.text }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="预算成本" prop="cost">
|
||||
|
||||
<template #default="{ row, $index }">
|
||||
<el-input v-model="row.cost" @input="costinput(row, $index)" /> </template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column label="成本占比" prop="rate" width="156">
|
||||
|
||||
<template #default="{ row }">
|
||||
{{ row.rate }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
</el-table>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</el-row>
|
||||
|
||||
<el-row style="margin: 20px 0;">
|
||||
|
||||
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" type="textarea" clearable placeholder="请输入备注" />
|
||||
@ -111,33 +88,15 @@
|
||||
<el-col :span="8">
|
||||
<el-form-item label="预算日期" prop="budget_date"
|
||||
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker v-model="formData.budget_date" clearable type="date"
|
||||
value-format="YYYY-MM-DD " placeholder="选择预算日期">
|
||||
<el-date-picker v-model="formData.budget_date" clearable type="date" value-format="YYYY-MM-DD "
|
||||
placeholder="选择预算日期">
|
||||
</el-date-picker>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
|
||||
<el-form-item label="预算清单">
|
||||
<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>
|
||||
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@ -222,20 +181,7 @@ const custom_name = ref('')
|
||||
const manage_name = ref('')
|
||||
const userInfo = userStore.userInfo
|
||||
const personnel = ref<any>()
|
||||
// 上传文件
|
||||
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 checkPhone = (rule: any, value: any, callback: (arg0: Error) => any) => {
|
||||
|
||||
@ -261,10 +207,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[]>>,
|
||||
@ -361,6 +304,15 @@ interface SummaryMethodProps<T = Product> {
|
||||
data: T[]
|
||||
}
|
||||
const getSummaries = (param: SummaryMethodProps) => {
|
||||
updateCost();
|
||||
if (formData && formData.contract_amount && project_amount.value) {
|
||||
project_amount.value = Number(formData.contract_amount) - Number(project_amount.value);
|
||||
project_rate.value = (Number(project_amount.value) / Number(formData.contract_amount)).toFixed(2) + '%';
|
||||
}
|
||||
if (project_amount.value) {
|
||||
project_amount.value = Number(formData.contract_amount) - Number(project_amount.value);
|
||||
project_rate.value = (Number(project_amount.value) / Number(formData.contract_amount)).toFixed(2) + '%';
|
||||
}
|
||||
const { columns, data } = param
|
||||
const sums: string[] = []
|
||||
columns.map((column, index) => {
|
||||
@ -518,9 +470,7 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.budget_list = formDataannex.map((item: any) => item.uri)
|
||||
}
|
||||
|
||||
|
||||
await formRef.value?.validate()
|
||||
|
||||
|
@ -32,37 +32,22 @@
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" width="55" />
|
||||
<el-table-column label="预算单号" prop="total_budget_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="total_budget_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目编码" prop="project_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目经理" prop="project_manager" show-overflow-tooltip />
|
||||
<el-table-column label="预算日期" prop="budget_date" show-overflow-tooltip />
|
||||
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
|
||||
<el-table-column label="总成本" prop="total_cost" show-overflow-tooltip />
|
||||
<el-table-column label="项目利润" prop="profit" show-overflow-tooltip />
|
||||
<el-table-column label="项目利润率" prop="profit_rate" show-overflow-tooltip />
|
||||
<el-table-column label="材料预算成本" prop="cl_cost" show-overflow-tooltip />
|
||||
<el-table-column label="分包预算成本" prop="fb_cost" show-overflow-tooltip />
|
||||
<el-table-column label="人工预算成本" prop="rg_cost" show-overflow-tooltip />
|
||||
<el-table-column label="费用预算成本" prop="fy_cost" show-overflow-tooltip />
|
||||
<el-table-column label="机具预算成本" prop="jj_cost" show-overflow-tooltip />
|
||||
<el-table-column label="项目利润率" prop="profit_rate" show-overflow-tooltip width="100" />
|
||||
<el-table-column label="材料预算成本" prop="cl_cost" show-overflow-tooltip width="120" />
|
||||
<el-table-column label="分包预算成本" prop="fb_cost" show-overflow-tooltip width="120" />
|
||||
<el-table-column label="人工预算成本" prop="rg_cost" show-overflow-tooltip width="120" />
|
||||
<el-table-column label="费用预算成本" prop="fy_cost" show-overflow-tooltip width="120" />
|
||||
<el-table-column label="机具预算成本" prop="jj_cost" show-overflow-tooltip width="120" />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="预算清单" show-overflow-tooltip>
|
||||
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.budget_list && row.budget_list.length > 0">
|
||||
<div v-for="(item, i) in row.budget_list " :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="150" fixed="right">
|
||||
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_manager_apiprojectbudget/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
@ -76,7 +61,6 @@
|
||||
@click="handledetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -118,10 +118,7 @@ const formData: any = reactive({
|
||||
"payee_account": "121",
|
||||
"remark": "212",
|
||||
"annex": [
|
||||
{
|
||||
"uri": "https:\/\/ceshi-engineering.lihaink.cn\/uploads\/files\/20240205\/20240205112036d89cc6685.jpg",
|
||||
"name": "20210719150601_4401e.jpg"
|
||||
}
|
||||
|
||||
],
|
||||
"bank_account_id": 8,
|
||||
"trip_apply_code": "项目出差-20240201-116911",
|
||||
|
@ -1,88 +1,110 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="85vw" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="85vw" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
|
||||
<!-- <el-form-item label="项目名称" prop="project_name">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择" readonle
|
||||
@click="showDialog4 = true" />
|
||||
</el-form-item> -->
|
||||
<el-form-item label="出差申请单号" prop="trip_apply_id">
|
||||
<el-input v-model="formData.trip_apply_code" clearable placeholder="点击选择" readonle
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="报销类型" prop="reimbursement_type">
|
||||
<el-checkbox-group v-model="formData.reimbursement_type" placeholder="报销类型">
|
||||
<el-checkbox v-for="(item, index) in dictData.reimbursement_type" :key="index"
|
||||
:label="item.value">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="借款单号" prop="loan_apply_id" v-if="formData.reimbursement_type.includes('1')">
|
||||
<el-input v-model="formData.loan_apply_code" clearable placeholder="点击选择" readonly
|
||||
@click="showDialog1 = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="冲抵借款金额" prop="offset_loan_amount" v-if="formData.reimbursement_type.includes('1')">
|
||||
<el-input v-model="formData.offset_loan_amount" clearable placeholder="请输入冲抵借款金额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="报销人" prop="apply_user">
|
||||
<el-input v-model="formData.apply_user" clearable placeholder="请输入报销人" />
|
||||
</el-form-item>
|
||||
<el-form-item label="报销日期" prop="apply_date">
|
||||
<!-- <el-input v-model="formData.apply_date" clearable placeholder="请输入报销日期" /> -->
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.apply_date" clearable
|
||||
value-format="YYYY-MM-DD " placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="收款人姓名" prop="payee_name">
|
||||
<el-input v-model="formData.payee_name" clearable placeholder="请输入收款人姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="收款银行" prop="payee_bank">
|
||||
<el-input v-model="formData.payee_bank" clearable placeholder="请输入收款银行" />
|
||||
</el-form-item>
|
||||
<el-form-item label="收款账号" prop="payee_account">
|
||||
<el-input v-model="formData.payee_account" clearable placeholder="请输入收款账号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="附件">
|
||||
<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 formData.annex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="账户编码" prop="bank_account_id">
|
||||
<el-input v-model="formData.bank_account.account_sn" clearable placeholder="点击选择银行" readonly
|
||||
@click="showDialog2 = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="开户银行" prop="bank_account_id">
|
||||
<el-input v-model="formData.bank_account.deposit_bank" clearable readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="开户名称" prop="bank_account_id">
|
||||
<el-input v-model="formData.bank_account.account_name" clearable readonly />
|
||||
</el-form-item>
|
||||
<el-form-item label="开户账号" prop="bank_account_id">
|
||||
<el-input v-model="formData.bank_account.account" clearable readonly />
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="出差申请单号" prop="trip_apply_code">
|
||||
<el-input v-model="formData.trip_apply_code" clearable placeholder="点击选择" readonle
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="报销类型" prop="reimbursement_type">
|
||||
<el-checkbox-group v-model="formData.reimbursement_type" placeholder="报销类型">
|
||||
<el-checkbox v-for="(item, index) in dictData.reimbursement_type" :key="index"
|
||||
:label="item.value">
|
||||
{{ item.name }}
|
||||
</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" v-if="formData.reimbursement_type.includes('1')">
|
||||
<el-form-item label="借款单号">
|
||||
<el-input v-model="formData.loan_apply_code" clearable placeholder="点击选择" readonly
|
||||
@click="showDialog1 = true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" v-if="formData.reimbursement_type.includes('1')">
|
||||
<el-form-item label="冲抵借款金额" prop="offset_loan_amount">
|
||||
<el-input v-model="formData.offset_loan_amount" clearable placeholder="请输入冲抵借款金额" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="报销人" prop="apply_user">
|
||||
<el-input v-model="formData.apply_user" clearable placeholder="请输入报销人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="报销日期" prop="apply_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.apply_date" clearable
|
||||
value-format="YYYY-MM-DD " placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="收款人姓名" prop="payee_name">
|
||||
<el-input v-model="formData.payee_name" clearable placeholder="请输入收款人姓名" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="收款银行" prop="payee_bank">
|
||||
<el-input v-model="formData.payee_bank" clearable placeholder="请输入收款银行" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="收款账号" prop="payee_account">
|
||||
<el-input v-model="formData.payee_account" clearable placeholder="请输入收款账号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账户编码" prop="bank_account_id">
|
||||
<el-input v-model="formData.bank_account.account_sn" clearable placeholder="点击选择银行" readonly
|
||||
@click="showDialog2 = true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="开户银行" prop="bank_account_id">
|
||||
<el-input v-model="formData.bank_account.deposit_bank" clearable readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户名称" prop="bank_account_id">
|
||||
<el-input v-model="formData.bank_account.account_name" clearable readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户账号" prop="bank_account_id">
|
||||
<el-input v-model="formData.bank_account.account" clearable readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="附件">
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-col :span="24">
|
||||
<div style="margin-bottom: 30px;">报销明细</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<el-table :data="formData.reimbursement_detail">
|
||||
<template #empty>
|
||||
暂无数据,点击添加
|
||||
<el-button @click="handleAdd(row)" size="small">+</el-button>
|
||||
</template>
|
||||
<el-table-column label="序号">
|
||||
<template #default="{ row }">
|
||||
<el-button @click="handleAdd(row)" size="small">+</el-button>
|
||||
@ -92,8 +114,8 @@
|
||||
<el-table-column label="一级科目">
|
||||
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.first_level_subject" @click="openDialog1(scope)"
|
||||
readonly placeholder="点击选择" />
|
||||
<el-input v-model="scope.row.first_level_subject" @click="openDialog1(scope)" readonly
|
||||
placeholder="点击选择" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
@ -137,6 +159,10 @@
|
||||
<div style="margin-bottom: 30px;">发票明细</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<el-table :data="formData.invoice_detail">
|
||||
<template #empty>
|
||||
暂无数据,点击添加
|
||||
<el-button @click="handleAdd1(row)" size="small">+</el-button>
|
||||
</template>
|
||||
<el-table-column label="序号">
|
||||
|
||||
<template #default="{ row }">
|
||||
@ -250,8 +276,8 @@ import bankaccount from "@/components/bankaccount/index.vue"
|
||||
import projectcostTemLists from '@/components/projectcostTemLists/index.vue'
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
import { apiProjectTravelReimbursementDetailLists } from "@/api/project_travel_reimbursement_detail.ts"
|
||||
import { apiProjectTravelReimbursementInvoiceDetailLists } from "@/api/project_travel_reimbursement_invoice_detail.ts"
|
||||
import { apiProjectTravelReimbursementDetailLists, apiProjectTravelReimbursementDetailDelete } from "@/api/project_travel_reimbursement_detail.ts"
|
||||
import { apiProjectTravelReimbursementInvoiceDetailLists, apiProjectTravelReimbursementInvoiceDetailDelete } from "@/api/project_travel_reimbursement_invoice_detail.ts"
|
||||
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
@ -381,7 +407,7 @@ const delFileFn = (index: number) => {
|
||||
const invoiceIndex = ref(0)
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four1 = (response: any) => {
|
||||
// @ts-ignore
|
||||
if (!Array.isArray(formData.invoice_detail[invoiceIndex.value].annex)) formData.invoice_detail[invoiceIndex.value].annex = [];
|
||||
response.code != 0 ? formData.invoice_detail[invoiceIndex.value].annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||
};
|
||||
|
||||
@ -459,9 +485,9 @@ const handleAdd = (row: any) => {
|
||||
formData.reimbursement_detail.splice(index + 1, 0, {});
|
||||
};
|
||||
|
||||
const handleDelete = (row: any) => {
|
||||
const handleDelete = async (row: any) => {
|
||||
if (row.id) await apiProjectTravelReimbursementDetailDelete({ id: row.id })
|
||||
// 删除 row
|
||||
if (formData.reimbursement_detail.length <= 1) return
|
||||
const index = formData.reimbursement_detail.indexOf(row);
|
||||
formData.reimbursement_detail.splice(index, 1);
|
||||
};
|
||||
@ -482,9 +508,8 @@ const handleAdd1 = (row: any) => {
|
||||
);
|
||||
};
|
||||
|
||||
const handleDelete1 = (row: any) => {
|
||||
// 删除 row
|
||||
if (formData.invoice_detail.annex <= 1) return
|
||||
const handleDelete1 = async (row: any) => {
|
||||
if (row.id) await apiProjectTravelReimbursementInvoiceDetailDelete({ id: row.id })
|
||||
const index = formData.invoice_detail.indexOf(row);
|
||||
formData.invoice_detail.splice(index, 1);
|
||||
};
|
||||
|
@ -30,18 +30,18 @@
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="出差申请单编号" prop="trip_reimbursement_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="出差申请单编号" prop="trip_reimbursement_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="报销类型" prop="reimbursement_type" show-overflow-tooltip />
|
||||
<el-table-column label="借款单编号" prop="loan_apply_code" show-overflow-tooltip />
|
||||
<el-table-column label="借款单编号" prop="loan_apply_code" show-overflow-tooltip width="100" />
|
||||
<el-table-column label="借款金额" prop="loan_amount" show-overflow-tooltip />
|
||||
<el-table-column label="报销金额" prop="total_amount" show-overflow-tooltip />
|
||||
<el-table-column label="冲抵借款金额" prop="offset_loan_amount" show-overflow-tooltip />
|
||||
<el-table-column label="冲抵借款金额" prop="offset_loan_amount" show-overflow-tooltip width="120" />
|
||||
<el-table-column label="付款金额" prop="pay_amount" show-overflow-tooltip />
|
||||
<el-table-column label="报销人" prop="apply_user" show-overflow-tooltip />
|
||||
<el-table-column label="报销日期" prop="apply_date" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<el-table-column label="操作" width="200" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_travel_reimbursement/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
|
@ -1,17 +1,5 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="差旅报销单id" prop="travel_reimbursement_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.travel_reimbursement_id" clearable
|
||||
placeholder="请输入差旅报销单id" />
|
||||
</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_travel_reimbursement_detail/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
@ -26,9 +14,9 @@
|
||||
<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_name" show-overflow-tooltip />
|
||||
<el-table-column label="出差申请单" prop="trip_apply_code" show-overflow-tooltip />
|
||||
<el-table-column label="差旅报销单" prop="trip_reimbursement_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="出差申请单" prop="trip_apply_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="差旅报销单" prop="trip_reimbursement_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="一级科目" prop="first_level_subject" show-overflow-tooltip />
|
||||
<el-table-column label="交通" prop="traffic_fee" show-overflow-tooltip />
|
||||
<el-table-column label="住宿" prop="stay_fee" show-overflow-tooltip />
|
||||
|
@ -1,7 +1,6 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="110px" :rules="formRules">
|
||||
<el-form-item label="差旅报销单号" prop="travel_reimbursement_id">
|
||||
<el-input v-model="formData.trip_reimbursement_code" clearable placeholder="点击选则"
|
||||
@ -9,8 +8,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="发票类型" prop="invoice_type">
|
||||
<el-select v-model="formData.invoice_type" placeholder="请选择" class="flex-1">
|
||||
<el-option :label="item.name" :value="item.value"
|
||||
v-for="item in dictData.invoice_type"></el-option>
|
||||
<el-option :label="item.name" :value="item.value" v-for="item in dictData.invoice_type"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="发票号" prop="invoice_sn">
|
||||
@ -23,8 +21,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="发票形式" prop="invoice_form">
|
||||
<el-select v-model="formData.invoice_form" placeholder="请选择" class="flex-1">
|
||||
<el-option :label="item.name" :value="item.value"
|
||||
v-for="item in dictData.invoice_form"></el-option>
|
||||
<el-option :label="item.name" :value="item.value" v-for="item in dictData.invoice_form"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="发票金额" prop="invoice_amount">
|
||||
@ -34,22 +31,7 @@
|
||||
<el-input v-model="tax_amount" clearable disabled placeholder="请输入发票税额" />
|
||||
</el-form-item>
|
||||
<el-form-item label="附件">
|
||||
<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 formData.annex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
<el-form-item label="发票备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入发票备注" />
|
||||
@ -115,15 +97,7 @@ let tax_amount = computed(() => {
|
||||
})
|
||||
|
||||
// let formData.tax_rate
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four = (response: any) => {
|
||||
// @ts-ignore
|
||||
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||
};
|
||||
// 删除上传的文件
|
||||
const delFileFn = (index: number) => {
|
||||
formData.annex.splice(index, 1)
|
||||
}
|
||||
|
||||
const customEvent = (e: any) => {
|
||||
formData.travel_reimbursement_id = e.id
|
||||
formData.trip_reimbursement_code = e.trip_reimbursement_code
|
||||
|
@ -10,8 +10,8 @@
|
||||
<span v-if="item.lable != '附件'"> {{ item.value.length > 1 ? formData[item.value[0]][item.value[1]] :
|
||||
formData[item.value[0]]
|
||||
}}</span>
|
||||
<span v-else> <el-link class="m-2" v-for="item in formData.annex" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</el-link>
|
||||
<span v-else>
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</span>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
@ -20,14 +20,7 @@
|
||||
:submitApi="apiproject_trip_applyApprove" :id="formData?.id" @off="handleClose">
|
||||
</flowProcess>
|
||||
<flowDetail v-else :approve_id="formData?.approve_id" @off="handleClose" />
|
||||
<!-- import { apiproject_trip_applyApprove, apiproject_trip_applyFlows } from '@/api/flowSet'
|
||||
// 获取审批流程
|
||||
const flows = ref([])
|
||||
const getbidDocumentExaminationFlows = async () => {
|
||||
if (formData?.approve_id) return
|
||||
let res = await apiproject_trip_applyFlows()
|
||||
flows.value = res
|
||||
} -->
|
||||
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -1,15 +1,12 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="600px" @confirm="handleSubmit"
|
||||
@close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="600px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="100px" :rules="formRules">
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="formData.project_name" clearable placeholder="点击选择" readonly
|
||||
@click="showDialog = true" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="申请单号" prop="trip_apply_code">
|
||||
<el-input v-model="formData.trip_apply_code" disabled clearable placeholder="后台zi" />
|
||||
</el-form-item> -->
|
||||
|
||||
<el-form-item label="出差起始地" prop="origin_address" label-width="100px">
|
||||
<el-input v-model="formData.origin_address" clearable placeholder="请输入出差起始地" />
|
||||
</el-form-item>
|
||||
@ -17,19 +14,18 @@
|
||||
<el-input v-model="formData.target_address" clearable placeholder="请输入出差目的地" />
|
||||
</el-form-item>
|
||||
<el-form-item label="交通工具" prop="traffic">
|
||||
<!-- <el-input v-model="formData.traffic" clearable placeholder="请输入交通工具" /> -->
|
||||
<el-select v-model="formData.traffic" placeholder="请选择" class="flex-1">
|
||||
<el-option :label="item.name" :value="item.value" v-for="item in dictData.traffic"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="出差时间" prop="start_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.start_date" clearable
|
||||
value-format="YYYY-MM-DD " placeholder="请输入出差时间">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.start_date" clearable value-format="YYYY-MM-DD "
|
||||
placeholder="请输入出差时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="结束时间" prop="end_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.end_date" clearable
|
||||
value-format="YYYY-MM-DD " placeholder="请输入结束时间">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.end_date" clearable value-format="YYYY-MM-DD "
|
||||
placeholder="请输入结束时间">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="出差事由" prop="reason">
|
||||
@ -43,22 +39,7 @@
|
||||
</el-form-item>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件">
|
||||
<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 formData.annex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri"
|
||||
target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<uploadAnnex :formData="formData"></uploadAnnex>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -119,11 +100,6 @@ const formData = reactive({
|
||||
days: "",
|
||||
})
|
||||
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four = (response: any) => {
|
||||
// @ts-ignore
|
||||
response.code != 0 ? formData.annex.push({ uri: response.data.uri, name: response.data.name }) : ElMessage.error(response.msg);
|
||||
};
|
||||
const customEvent = (e) => {
|
||||
formData.project_id = e.id
|
||||
formData.project_name = e.name
|
||||
@ -179,7 +155,6 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
}
|
||||
formData.traffic = String(formData.traffic)
|
||||
formData.annex = []
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
@ -212,9 +187,6 @@ const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
const delFileFn = (index: number) => {
|
||||
formData.annex.splice(index, 1)
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
|
@ -42,8 +42,8 @@
|
||||
<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_name" show-overflow-tooltip />
|
||||
<el-table-column label="申请单号" prop="trip_apply_code" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="申请单号" prop="trip_apply_code" :render-header="pager.calcWidth" />
|
||||
<el-table-column label="出差起始地" prop="origin_address" show-overflow-tooltip />
|
||||
<el-table-column label="出差目的地" prop="target_address" show-overflow-tooltip />
|
||||
<el-table-column label="交通工具" prop="traffic_text" show-overflow-tooltip />
|
||||
@ -53,7 +53,7 @@
|
||||
<el-table-column label="历时天数" prop="days" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<!-- <el-table-column label="附件" prop="annex" show-overflow-tooltip /> -->
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<el-table-column label="操作" width="170" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_trip_apply/edit']" type="primary" link
|
||||
@click="handleEdit(row)">
|
||||
|
@ -5,61 +5,52 @@
|
||||
<el-card class="mb-2">
|
||||
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="客户名称" label-align="left" align="left"
|
||||
label-class-name="my-label">{{
|
||||
formData.custom_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户名称" label-align="left" align="left" label-class-name="my-label">{{
|
||||
formData.custom_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="报价日期" label-align="left" align="left" label-class-name="my-label">
|
||||
{{
|
||||
formData.quotation_date }}</el-descriptions-item>
|
||||
formData.quotation_date }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label">
|
||||
{{
|
||||
formData.custom_master_name }}</el-descriptions-item>
|
||||
formData.custom_master_name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="联系电话" label-align="left" align="left" label-class-name="my-label">
|
||||
{{ formData.custom_master_phone }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="制单人" label-align="left" align="left" label-class-name="my-label">
|
||||
{{
|
||||
formData.create_user
|
||||
}}
|
||||
formData.create_user
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="发票类型" label-align="left" align="left" label-class-name="my-label">
|
||||
{{
|
||||
formData.invoice_type_text
|
||||
}}</el-descriptions-item>
|
||||
formData.invoice_type_text
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="订单金额" label-align="left" align="left" label-class-name="my-label">
|
||||
{{
|
||||
formData.amount_including_tax
|
||||
formData.amount_including_tax
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="运费" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.freight
|
||||
}}</el-descriptions-item>
|
||||
formData.freight
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="其它费用" label-align="left" align="left" label-class-name="my-label">
|
||||
{{
|
||||
formData.other_fee
|
||||
formData.other_fee
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="合计金额" label-align="left" align="left" label-class-name="my-label">
|
||||
{{
|
||||
formData.total_amount }}</el-descriptions-item>
|
||||
formData.total_amount }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户需求" label-align="left" align="left" label-class-name="my-label">
|
||||
{{
|
||||
formData.customer_require
|
||||
formData.customer_require
|
||||
|
||||
}}</el-descriptions-item>
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
formData.remark
|
||||
}}</el-descriptions-item>
|
||||
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
|
||||
<div v-if="formData.annex.length > 0">
|
||||
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
|
||||
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start"
|
||||
:href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无附件
|
||||
</div>
|
||||
<annexLink :annex="formData.annex"></annexLink>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<div class="tit">报价明细</div>
|
||||
|
@ -22,8 +22,8 @@
|
||||
<el-table-column label="项目编号" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="签订日期" prop="signing_date" show-overflow-tooltip />
|
||||
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
|
||||
<el-table-column label="已付款金额" prop="has_payment_amount" show-overflow-tooltip />
|
||||
<el-table-column label="已收票金额" prop="has_receipt_amount" show-overflow-tooltip />
|
||||
<el-table-column label="已付款金额" prop="has_payment_amount" show-overflow-tooltip width="150" />
|
||||
<el-table-column label="已收票金额" prop="has_receipt_amount" show-overflow-tooltip width="150" />
|
||||
<el-table-column label="已收票未付款金额" prop="has_receipt_not_payment_amount" show-overflow-tooltip
|
||||
width="140" />
|
||||
<el-table-column label="已付款未收票金额" prop="has_payment_not_receipt_amount" show-overflow-tooltip
|
||||
|
Loading…
x
Reference in New Issue
Block a user