1.完成供应商库(供应商,供应商联系人)对接增删改查功能 2.项目管理(考勤记录,考勤明细)对接增删改查功能 3.完成项目合同、采购合同、收款管理、付款管理模块缺少字段对接
This commit is contained in:
parent
29ad706716
commit
d866cfe34f
26
src/api/project_attendance_detail.ts
Normal file
26
src/api/project_attendance_detail.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 考勤记录表列表
|
||||
export function attendancedetailLists(params: any) {
|
||||
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 })
|
||||
}
|
||||
|
||||
// 编辑考勤记录
|
||||
export function attendancedetailEdit(params: any) {
|
||||
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 })
|
||||
}
|
||||
|
||||
// 考勤记录详情
|
||||
export function attendancedetailDetail(params: any) {
|
||||
return request.get({ url: '/project.project_attendance_detail/detail', params })
|
||||
}
|
26
src/api/project_attendance_record.ts
Normal file
26
src/api/project_attendance_record.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 考勤记录表列表
|
||||
export function attendanceRecordLists(params: any) {
|
||||
return request.get({ url: '/project.project_attendance_record/lists', params })
|
||||
}
|
||||
|
||||
// 添加考勤记录
|
||||
export function attendanceRecordAdd(params: any) {
|
||||
return request.post({ url: '/project.project_attendance_record/add', params })
|
||||
}
|
||||
|
||||
// 编辑考勤记录
|
||||
export function attendanceRecordEdit(params: any) {
|
||||
return request.post({ url: '/project.project_attendance_record/edit', params })
|
||||
}
|
||||
|
||||
// 删除考勤记录
|
||||
export function attendanceRecordDelete(params: any) {
|
||||
return request.post({ url: '/project.project_attendance_record/delete', params })
|
||||
}
|
||||
|
||||
// 考勤记录详情
|
||||
export function attendanceRecordDetail(params: any) {
|
||||
return request.get({ url: '/project.project_attendance_record/detail', params })
|
||||
}
|
27
src/api/suppler_contact.ts
Normal file
27
src/api/suppler_contact.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 供应商联系人表列表
|
||||
export function suppliercontactsLists(params: any) {
|
||||
return request.get({ url: '/supplier.supplier_contacts/lists', params })
|
||||
}
|
||||
|
||||
// 添加供应商联系人
|
||||
export function suppliercontactsAdd(params: any) {
|
||||
return request.post({ url: '/supplier.supplier_contacts/add', params })
|
||||
}
|
||||
|
||||
// 编辑供应商联系人
|
||||
export function suppliercontactsEdit(params: any) {
|
||||
return request.post({ url: '/supplier.supplier_contacts/edit', params })
|
||||
}
|
||||
|
||||
// 删除供应商联系人
|
||||
export function suppliercontactsDelete(params: any) {
|
||||
return request.post({ url: '/supplier.supplier_contacts/delete', params })
|
||||
}
|
||||
|
||||
|
||||
// 供应商联系人详情
|
||||
export function suppliercontactsDetail(params: any) {
|
||||
return request.get({ url: '/supplier.supplier_contacts/detail', params })
|
||||
}
|
27
src/api/suppler_list.ts
Normal file
27
src/api/suppler_list.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
// 供应商表列表
|
||||
export function apisupplierLists(params: any) {
|
||||
return request.get({ url: '/supplier.supplier/lists', params })
|
||||
}
|
||||
|
||||
// 添加供应商
|
||||
export function apisupplierAdd(params: any) {
|
||||
return request.post({ url: '/supplier.supplier/add', params })
|
||||
}
|
||||
|
||||
// 编辑供应商
|
||||
export function apisupplierEdit(params: any) {
|
||||
return request.post({ url: '/supplier.supplier/edit', params })
|
||||
}
|
||||
|
||||
// 删除供应商
|
||||
export function apisupplierDelete(params: any) {
|
||||
return request.post({ url: '/supplier.supplier/delete', params })
|
||||
}
|
||||
|
||||
|
||||
// 供应商详情
|
||||
export function apisupplierDetail(params: any) {
|
||||
return request.get({ url: '/supplier.supplier/detail', params })
|
||||
}
|
@ -24,7 +24,7 @@
|
||||
|
||||
<el-table-column label="合同类型" prop="contract_type">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.contract_type" :value="row.contract_type" />
|
||||
<dict-value :options="dictData.procurement_contract_type" :value="row.contract_type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="签订日期" prop="signing_date" show-overflow-tooltip />
|
||||
@ -66,7 +66,7 @@ const queryParams = reactive({
|
||||
name: ''
|
||||
});
|
||||
|
||||
const { dictData } = useDictData('contract_type,account_period,tax_rate,pay_type,pay_period ')
|
||||
const { dictData } = useDictData('procurement_contract_type,account_period,tax_rate,pay_type,pay_period ')
|
||||
// 选中数据
|
||||
const emits = defineEmits(["customEvent"]);
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />
|
||||
<el-table-column label="合同类型" prop="contract_type">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.contract_type" :value="row.contract_type" />
|
||||
<dict-value :options="dictData.procurement_contract_type" :value="row.contract_type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合同金额" prop="signing_date" show-overflow-tooltip />
|
||||
@ -59,7 +59,7 @@ const queryParams = reactive({
|
||||
all: 1,
|
||||
});
|
||||
|
||||
const { dictData } = useDictData('contract_type,account_period,tax_rate,pay_type,pay_period ')
|
||||
const { dictData } = useDictData('procurement_contract_type,account_period,tax_rate,pay_type,pay_period ')
|
||||
// 选中数据
|
||||
const emits = defineEmits(["customEvent"]);
|
||||
|
||||
|
@ -17,15 +17,34 @@
|
||||
<el-table :data="pager.lists" @cell-click="handleCurrentChange">
|
||||
<el-table-column label="序号" property="name" />
|
||||
<el-table-column label="建档人" property="custom_type" />
|
||||
<el-table-column label="供应商名称" property="credit_rating" />
|
||||
<el-table-column label="供应商分组" property="province_name" />
|
||||
<el-table-column label="供应商等级" property="city_name" />
|
||||
<el-table-column label="联系人" property="street_name" />
|
||||
<el-table-column label="性别" property="master_name" />
|
||||
<el-table-column label="电话号码" property="master_name" />
|
||||
<el-table-column label="性别" property="master_name" />
|
||||
<el-table-column label="邮箱地址" property="master_name" />
|
||||
<el-table-column label="邮箱地址" property="master_name" />
|
||||
<el-table-column label="供应商名称" property="supplier_name" />
|
||||
<el-table-column label="供应商编码" property="supplier_code" />
|
||||
<el-table-column label="供应商分组" prop="group_id">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.supplier_group" :value="row.group_id" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="供应商分类" prop="category_id">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.supplier_category" :value="row.category_id" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="供应商等级" prop="grade">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.supplier_grade" :value="row.grade" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="联系人" property="contacts" />
|
||||
<el-table-column label="性别" property="contacts_sex" />
|
||||
<el-table-column label="电话号码" property="phone" />
|
||||
<el-table-column label="性别" property="contacts_sex">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.sex" :value="row.contacts_sex" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="邮箱地址" property="email" />
|
||||
|
||||
|
||||
</el-table>
|
||||
|
||||
@ -40,7 +59,7 @@
|
||||
<script lang="ts" setup>
|
||||
import { usePaging } from "@/hooks/usePaging"
|
||||
import { useDictData } from "@/hooks/useDictOptions"
|
||||
import { apiCustomLists } from '@/api/custom'
|
||||
import { apisupplierLists } from '@/api/suppler_list'
|
||||
import { defineEmits } from "vue"
|
||||
|
||||
// 查询条件
|
||||
@ -48,6 +67,7 @@ const queryParams = reactive({
|
||||
name: ''
|
||||
});
|
||||
|
||||
const { dictData } = useDictData('supplier_grade,supplier_group,supplier_category,sex')
|
||||
|
||||
// 选中数据
|
||||
const emits = defineEmits(["customEvent"]);
|
||||
@ -59,7 +79,7 @@ const handleCurrentChange = (value: any) => {
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apiCustomLists,
|
||||
fetchFun: apisupplierLists,
|
||||
params: queryParams,
|
||||
});
|
||||
|
||||
|
@ -198,13 +198,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 弹窗标题
|
||||
@ -263,8 +265,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formDataannex, arry1)
|
||||
}
|
||||
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
|
@ -15,16 +15,16 @@
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" @click="showDialog = true">
|
||||
<el-input v-model="project_name" readonly clearable placeholder="请输入" />
|
||||
<el-input v-model="project_name" readonly clearable placeholder="选择项目" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_code" clearable readonly placeholder="请输入" />
|
||||
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="matsname" clearable readonly placeholder="请输入" />
|
||||
<el-input v-model="matsname" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item></el-col><el-col :span="8">
|
||||
<el-form-item label="项目估算" prop="project_estimation" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.project_estimation" clearable placeholder="请输入项目估算" />
|
||||
@ -80,10 +80,18 @@
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item></el-col><el-col :span="8">
|
||||
<el-form-item label="项目把握度" prop="project_assurance">
|
||||
<el-input v-model="formData.project_assurance" clearable placeholder="请输入项目把握度" />
|
||||
</el-form-item></el-col><el-col :span="8">
|
||||
</el-form-item></el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目把握度" label-width="130px" prop="project_assurance">
|
||||
|
||||
<el-select v-model="formData.project_assurance" clearable placeholder="请选择项目把握度">
|
||||
<el-option v-for="(item, index) in dictData.project_assurance" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item></el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="招标项目概况" prop="bid_project_overview">
|
||||
<el-input v-model="formData.bid_project_overview" clearable placeholder="请输入招标项目概况" />
|
||||
</el-form-item></el-col><el-col :span="8">
|
||||
@ -198,8 +206,10 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
@ -228,7 +238,7 @@ const formData = reactive({
|
||||
bid_project_overview: '',
|
||||
project_desc: '',
|
||||
annex: '',
|
||||
approve_id: ''
|
||||
approve_id: 0
|
||||
})
|
||||
|
||||
|
||||
@ -254,8 +264,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
}
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
|
@ -66,7 +66,11 @@
|
||||
<dict-value :options="dictData.whether_status" :value="row.is_internal_resources" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目把握度" prop="project_assurance" show-overflow-tooltip />
|
||||
<el-table-column label="项目把握度" prop="project_assurance" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.project_assurance" :value="row.project_assurance" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['bid.bid_bidding_decision/edit']" type="primary" link @click="handleEdit(row)">
|
||||
@ -123,7 +127,7 @@ const handleSelectionChange = (val: any[]) => {
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('construction_funds_sources,bidding_method,whether_status')
|
||||
const { dictData } = useDictData('construction_funds_sources,bidding_method,whether_status,project_assurance')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
|
@ -14,16 +14,16 @@
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" @click="showDialog = true">
|
||||
<el-input v-model="project_name" readonly clearable placeholder="请输入" />
|
||||
<el-input v-model="project_name" readonly clearable placeholder="选择项目" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_code" clearable readonly placeholder="请输入" />
|
||||
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="matsname" clearable placeholder="请输入" />
|
||||
<el-input v-model="matsname" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item></el-col><el-col :span="8">
|
||||
<el-form-item label="招标公司名称" prop="invite_tenders_company_name" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.invite_tenders_company_name" clearable placeholder="请输入招标公司名称" />
|
||||
@ -227,13 +227,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
//获取值
|
||||
|
@ -34,52 +34,50 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="购买人员" prop="buy_bidding_document_id">
|
||||
<el-input v-model="buyer" clearable readonly placeholder="请输入购买人员" />
|
||||
<el-input v-model="buyer" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="buy_bidding_document_id">
|
||||
<el-input v-model="bid_document_no" clearable readonly placeholder="请输入客户名称" />
|
||||
<el-input v-model="bid_document_no" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="招标公司名称" prop="buy_bidding_document_id">
|
||||
<el-input v-model="invite_tenders_company_name" clearable readonly placeholder="请输入招标公司名称" />
|
||||
<el-input v-model="invite_tenders_company_name" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="投标公司名称" prop="buy_bidding_document_id">
|
||||
<el-input v-model="bid_company_name" clearable readonly placeholder="请输入购买标书" />
|
||||
<el-input v-model="bid_company_name" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="购买标书金额" prop="buy_bidding_document_id">
|
||||
<el-input v-model="amount" clearable readonly placeholder="请输入购买标书金额" />
|
||||
<el-input v-model="amount" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="招标项目资金来源" prop="buy_bidding_document_id">
|
||||
<el-select v-model="project_fund_source" clearable placeholder="请选择招标项目资金来源" @change="deptrmt">
|
||||
<el-select v-model="project_fund_source" clearable disabled placeholder="系统自动填写" @change="deptrmt">
|
||||
<el-option v-for="(item, index) in dictData.construction_funds_sources" :key="index" :label="item.name" :value="parseInt(item.id)" />
|
||||
</el-select>
|
||||
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="投标时间" prop="buy_bidding_document_id">
|
||||
<el-input v-model="bid_date" clearable readonly placeholder="请输入投标时间" />
|
||||
<el-input v-model="bid_date" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="购买标书时间" prop="buy_bidding_document_id">
|
||||
<el-input v-model="buy_date" clearable readonly placeholder="请输入投标时间" />
|
||||
<el-input v-model="buy_date" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="招标方式" prop="buy_bidding_document_id">
|
||||
<el-select v-model="invite_tenders_type" clearable placeholder="请选择招标方式" @change="deptrmt">
|
||||
<el-select v-model="invite_tenders_type" clearable disabled placeholder="系统自动填写" @change="deptrmt">
|
||||
<el-option v-for="(item, index) in dictData.bidding_method" :key="index" :label="item.name" :value="parseInt(item.id)" />
|
||||
</el-select>
|
||||
|
||||
@ -87,7 +85,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="投标地址" prop="buy_bidding_document_id">
|
||||
<el-input v-model="bid_address" clearable readonly placeholder="请输入投标地址" />
|
||||
<el-input v-model="bid_address" clearable disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -394,27 +392,29 @@ const formData = reactive({
|
||||
id: '',
|
||||
dept_id: '',
|
||||
org_id: '',
|
||||
approve_id: '',
|
||||
approve_id: 0,
|
||||
buy_bidding_document_id: '',
|
||||
is_need_deposit: '',
|
||||
bid_opening_date: '',
|
||||
deposit_refund_time: '',
|
||||
bidding_project_overview: '',
|
||||
project_introduction: '',
|
||||
project_fund_source: '',
|
||||
annex: '',
|
||||
technical_protocol_deviation: '',
|
||||
protocol_deviation_handling_plan: '',
|
||||
technical_review_annex: '',
|
||||
business_review_total_amount: '',
|
||||
business_review_total_amount: 0,
|
||||
tax_rate: '',
|
||||
pay_type: '',
|
||||
pay_rate: '',
|
||||
business_contract_deviation: '',
|
||||
business_contract_deviation_handling_plan: '',
|
||||
business_contract_deviation_annex: '',
|
||||
product: [{
|
||||
product: [
|
||||
{
|
||||
|
||||
}]
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
//获取值
|
||||
@ -455,13 +455,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 获取详情
|
||||
@ -473,13 +475,13 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
|
||||
if (data.project_fund_source && data.project_fund_source.length > 0) {
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.project_fund_source.map((item: any, index: any) => {
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
@ -489,7 +491,6 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
|
||||
}
|
||||
if (data.technical_review_annex && data.technical_review_annex.length > 0) {
|
||||
|
||||
const arry1 = data.technical_review_annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
@ -497,7 +498,6 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex1, arry1)
|
||||
|
||||
}
|
||||
if (data.business_contract_deviation_annex && data.business_contract_deviation_annex.length > 0) {
|
||||
|
||||
@ -519,7 +519,6 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
buyer.value = data.document.buyer
|
||||
project_fund_source.value = data.document.project_fund_source
|
||||
bid_date.value = data.document.bid_date
|
||||
buy_date.value = data.document.buy_date
|
||||
invite_tenders_type.value = data.document.invite_tenders_type
|
||||
bid_address.value = data.document.bid_address
|
||||
|
||||
@ -539,7 +538,7 @@ const getDetail = async (row: Record<string, any>) => {
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
formData.project_fund_source = JSON.stringify(formDataannex.map(item => item.uri))
|
||||
formData.annex = JSON.stringify(formDataannex.map(item => item.uri))
|
||||
formData.technical_review_annex = JSON.stringify(formDataannex1.map(item => item.uri))
|
||||
formData.business_contract_deviation_annex = JSON.stringify(formDataannex2.map(item => item.uri))
|
||||
await formRef.value?.validate()
|
||||
|
@ -15,11 +15,7 @@
|
||||
{{ formData.project_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编码">
|
||||
{{ formData.project_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="分项工程">
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<!-- <el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="填报日期" prop="declare_time">
|
||||
<el-date-picker class="flex-1 !flex" v-model="queryParams.declare_time" clearable type="date" value-format="YYYY-MM-DD " placeholder="选择填报日期">
|
||||
@ -18,7 +18,7 @@
|
||||
<el-button @click="reset">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</el-card> -->
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project.project_plan/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
@ -44,9 +44,10 @@
|
||||
<el-table-column label="图例说明" prop="file" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.file && row.file.length > 0">
|
||||
<div v-for="(item, i) in row.file " :key='i'>
|
||||
<!-- <div v-for="(item, i) in row.file " :key='i'>
|
||||
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div> -->
|
||||
<el-image style="width:50px;height:50px;" :src="row.file" />
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
|
@ -11,7 +11,7 @@
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="分项工程" prop="subentry_engineering" show-overflow-tooltip />
|
||||
<el-table-column label="工序步骤" prop="process_step" show-overflow-tooltip />
|
||||
<el-table-column label="日期" prop="sort" show-overflow-tooltip />
|
||||
<!-- <el-table-column label="日期" prop="sort" show-overflow-tooltip /> -->
|
||||
<el-table-column label="姓名" prop="user_name" show-overflow-tooltip />
|
||||
<el-table-column label="身份证号" prop="user_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="工种" prop="user_work_type" show-overflow-tooltip />
|
||||
|
@ -13,18 +13,16 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
<el-input v-model="project_name" clearable readonly placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-input v-model="project_code
|
||||
" clearable placeholder="请输入项目编码" />
|
||||
<el-input v-model="project_code" disabled clearable placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="project_id">
|
||||
<el-input v-model="custom_name
|
||||
" clearable placeholder="请输入客户名称" />
|
||||
<el-input v-model="custom_name" disabled clearable placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
<el-form-item label="需求名称" prop="customer_demand_id">
|
||||
<el-input v-model="customer_demand_name" clearable placeholder="输入需求名称" @click="showDialog1 = true" />
|
||||
<el-input v-model="customer_demand_name" clearable placeholder="选择需求" @click="showDialog1 = true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="竞争对手名称" prop="competitor_name">
|
||||
<el-input v-model="formData.competitor_name" clearable placeholder="请输入竞争对手名称" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
|
||||
|
@ -1,13 +1,22 @@
|
||||
<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="project_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请输入项目id" />
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
|
||||
<el-form-item label="项目名称" prop="project_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="竞争对手名称" prop="competitor_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.competitor_name" clearable placeholder="请输入竞争对手名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人电话" prop="competitor_contacts_phone">
|
||||
<el-input class="w-[280px]" v-model="queryParams.competitor_contacts_phone" clearable placeholder="请输入联系人电话" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="custom_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="需求名称" prop="customer_demand_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.customer_demand_name" clearable placeholder="请输入需求名称" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
@ -76,8 +85,12 @@ const showDtail = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
project_id: '',
|
||||
competitor_name: ''
|
||||
project_name: '',
|
||||
competitor_name: '',
|
||||
customer_demand_name: '',
|
||||
competitor_contacts_phone: '',
|
||||
custom_name: '',
|
||||
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
|
@ -264,13 +264,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 弹窗标题
|
||||
@ -335,8 +337,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
|
||||
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
|
@ -201,13 +201,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 获取详情
|
||||
@ -220,8 +222,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
|
||||
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
business_director.value = data.business_director
|
||||
contract_name.value = data.contract_name
|
||||
|
@ -295,13 +295,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 表单数据
|
||||
@ -361,8 +363,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
|
||||
}
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
formData.other_contacts = JSON.parse(data.other_contacts)
|
||||
|
||||
|
@ -208,13 +208,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 表单数据
|
||||
@ -259,8 +261,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
}
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
|
@ -66,7 +66,19 @@
|
||||
{{ formData.demand_content }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="附件">
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无附件
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
@ -90,7 +102,7 @@ defineProps({
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
|
||||
const formDataannex = reactive([])
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
@ -109,7 +121,15 @@ 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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,16 +1,36 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item>
|
||||
|
||||
<el-form-item label="需求主题" prop="theme">
|
||||
<el-input class="w-[280px]" v-model="queryParams.theme" clearable placeholder="请输入需求主题" />
|
||||
</el-form-item>
|
||||
<el-form class="mb-[-16px]" :model="queryParams" label-width="auto" inline>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="需求主题" prop="theme">
|
||||
<el-input class="w-[280px]" v-model="queryParams.theme" clearable placeholder="请输入需求主题" />
|
||||
</el-form-item></el-col><el-col :span="6">
|
||||
<el-form-item label="需求提供人" prop="supplier">
|
||||
<el-input class="w-[280px]" v-model="queryParams.supplier" clearable placeholder="请输入需求提供人" />
|
||||
</el-form-item></el-col><el-col :span="6">
|
||||
<el-form-item label="提供人联系方式" prop="supplier_contacts">
|
||||
<el-input class="w-[280px]" v-model="queryParams.supplier_contacts" clearable placeholder="请输入提供人联系方式" />
|
||||
</el-form-item></el-col><el-col :span="6">
|
||||
<el-form-item label="组织名称" prop="org_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.org_name" clearable placeholder="请输入组织名称" />
|
||||
</el-form-item></el-col><el-col :span="6">
|
||||
<el-form-item label="部门名称" prop="dept_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.dept_name" clearable placeholder="请输入部门名称" />
|
||||
</el-form-item></el-col><el-col :span="6">
|
||||
<el-form-item label="项目名称" prop="project_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item></el-col><el-col :span="6">
|
||||
<el-form-item label="客户名称" prop="custom_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
@ -26,7 +46,6 @@
|
||||
<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="custom_name" show-overflow-tooltip />
|
||||
<el-table-column label="需求主题" prop="theme" show-overflow-tooltip />
|
||||
@ -88,16 +107,13 @@ const showDtail = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
org_id: '',
|
||||
department_id: '',
|
||||
project_id: '',
|
||||
theme: '',
|
||||
supplier: '',
|
||||
supplier_contacts: '',
|
||||
importance: '',
|
||||
recording_time: '',
|
||||
demand_content: '',
|
||||
annex: ''
|
||||
org_name: '',
|
||||
dept_name: '',
|
||||
project_name: '',
|
||||
custom_name: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
|
@ -13,15 +13,13 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
<el-input v-model="project_name" readonly clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-input v-model="project_code
|
||||
" clearable placeholder="请输入项目编码" />
|
||||
<el-input v-model="project_code" disabled clearable placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="project_id">
|
||||
<el-input v-model="custom_name
|
||||
" clearable placeholder="请输入客户名称" />
|
||||
<el-input v-model="custom_name" disabled clearable placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
<el-form-item label="需求名称" prop="customer_demand_id">
|
||||
<el-input v-model="customer_demand_name" clearable placeholder="输入需求名称" @click="showDialog1 = true" />
|
||||
|
@ -2,8 +2,17 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="需求主题" prop="theme">
|
||||
<el-input class="w-[280px]" v-model="queryParams.theme" clearable placeholder="请输入需求主题" />
|
||||
<el-form-item label="解决方案主题" prop="theme">
|
||||
<el-input class="w-[250px]" v-model="queryParams.theme" clearable placeholder="请输入解决方案主题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="project_name">
|
||||
<el-input class="w-[250px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="custom_name">
|
||||
<el-input class="w-[250px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户需求主题" prop="customer_demand_name">
|
||||
<el-input class="w-[250px]" v-model="queryParams.customer_demand_name" clearable placeholder="请输入客户需求主题" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
@ -89,7 +98,10 @@ const showEdit = ref(false)
|
||||
const showDtail = ref(false)
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
theme: ''
|
||||
theme: '',
|
||||
customer_demand_name: '',
|
||||
custom_name: '',
|
||||
project_name: '',
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
|
@ -236,13 +236,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -230,13 +230,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -416,13 +416,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -389,8 +389,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
})
|
||||
// console.log(arry2, '22222222')
|
||||
}
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
|
||||
// console.log(formData, '2222222222')
|
||||
@ -421,13 +421,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -1,213 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<el-card>
|
||||
|
||||
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="120px" label-position="left">
|
||||
<el-form-item label="组织名称" prop="field101">
|
||||
<el-input v-model="formData.field101" placeholder="请输入组织名称" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="field102">
|
||||
<el-input v-model="formData.field102" placeholder="请输入部门名称" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="field103">
|
||||
<el-input v-model="formData.field103" placeholder="点击选择客户" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目名称" prop="field104">
|
||||
<el-input v-model="formData.field104" placeholder="点击选择项目" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="field105">
|
||||
<el-input v-model="formData.field105" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同编号" prop="field106">
|
||||
<el-input v-model="formData.field106" placeholder="点击选择合同" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同名称" prop="field107">
|
||||
<el-input v-model="formData.field107" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同类型" prop="field108">
|
||||
<el-input v-model="formData.field108" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="收票日期" prop="field109">
|
||||
<el-time-picker v-model="formData.field109" format="HH:mm:ss" value-format="HH:mm:ss"
|
||||
:picker-options='{ "selectableRange": "00:00:00-23:59:59" }' :style="{ width: '100%' }"
|
||||
placeholder="请选择收票日期" clearable></el-time-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="票据编号" prop="field110">
|
||||
<el-input v-model="formData.field110" placeholder="请输入票据编号" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="收票银行" prop="field111">
|
||||
<el-input v-model="formData.field111" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="收票账户编码" prop="field112">
|
||||
<el-input v-model="formData.field112" placeholder="系统自动生成" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票类型" prop="field113">
|
||||
<el-radio-group v-model="formData.field113" size="medium">
|
||||
<el-radio v-for="(item, index) in field113Options" :key="index" :label="item.value"
|
||||
:disabled="item.disabled">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票承兑银行" prop="field114">
|
||||
<el-input v-model="formData.field114" placeholder="请输入汇票承兑银行" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票到期日期" prop="field116">
|
||||
<el-date-picker v-model="formData.field116" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
|
||||
:style="{ width: '100%' }" placeholder="请选择汇票到期日期" clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="收票金额大写" prop="field117">
|
||||
<el-input v-model="formData.field117" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="收款金额" prop="field118">
|
||||
<el-input v-model="formData.field118" placeholder="请输入收款金额" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="field119">
|
||||
<el-input v-model="formData.field119" type="textarea" placeholder="请输入备注"
|
||||
:autosize="{ minRows: 4, maxRows: 4 }" :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item size="large">
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
components: {},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
field101: undefined,
|
||||
field102: undefined,
|
||||
field103: undefined,
|
||||
field104: undefined,
|
||||
field105: undefined,
|
||||
field106: undefined,
|
||||
field107: undefined,
|
||||
field108: undefined,
|
||||
field109: null,
|
||||
field110: undefined,
|
||||
field111: undefined,
|
||||
field112: undefined,
|
||||
field113: undefined,
|
||||
field114: undefined,
|
||||
field116: null,
|
||||
field117: undefined,
|
||||
field118: undefined,
|
||||
field119: undefined,
|
||||
},
|
||||
rules: {
|
||||
field101: [{
|
||||
required: true,
|
||||
message: '请输入组织名称',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field102: [{
|
||||
required: true,
|
||||
message: '请输入部门名称',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field103: [{
|
||||
required: true,
|
||||
message: '点击选择客户',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field104: [],
|
||||
field105: [],
|
||||
field106: [],
|
||||
field107: [],
|
||||
field108: [],
|
||||
field109: [{
|
||||
required: true,
|
||||
message: '请选择收票日期',
|
||||
trigger: 'change'
|
||||
}],
|
||||
field110: [{
|
||||
required: true,
|
||||
message: '请输入票据编号',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field111: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field112: [{
|
||||
required: true,
|
||||
message: '系统自动生成',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field113: [{
|
||||
required: true,
|
||||
message: '汇票类型不能为空',
|
||||
trigger: 'change'
|
||||
}],
|
||||
field114: [{
|
||||
required: true,
|
||||
message: '请输入汇票承兑银行',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field116: [{
|
||||
required: true,
|
||||
message: '请选择汇票到期日期',
|
||||
trigger: 'change'
|
||||
}],
|
||||
field117: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field118: [{
|
||||
required: true,
|
||||
message: '请输入收款金额',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field119: [],
|
||||
},
|
||||
field113Options: [{
|
||||
"label": "银行承兑汇票",
|
||||
"value": 1
|
||||
}, {
|
||||
"label": "商业承兑汇票",
|
||||
"value": 2
|
||||
}],
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
created() { },
|
||||
mounted() { },
|
||||
methods: {
|
||||
submitForm() {
|
||||
this.$refs['elForm'].validate(valid => {
|
||||
if (!valid) return
|
||||
// TODO 提交表单
|
||||
})
|
||||
},
|
||||
resetForm() {
|
||||
this.$refs['elForm'].resetFields()
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
<style></style>
|
||||
|
@ -284,13 +284,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -1,180 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<el-card>
|
||||
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="120px" label-position="left">
|
||||
<el-form-item label="组织名称" prop="field101">
|
||||
<el-input v-model="formData.field101" placeholder="请输入组织名称" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="field102">
|
||||
<el-input v-model="formData.field102" placeholder="请输入部门名称" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="票据编号" prop="field103">
|
||||
<el-input v-model="formData.field103" placeholder="点击选择汇票" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票类型" prop="field104">
|
||||
<el-input v-model="formData.field104" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票承兑银行" prop="field105">
|
||||
<el-input v-model="formData.field105" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票到期日期" prop="field106">
|
||||
<el-input v-model="formData.field106" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="收票账户编码" prop="field107">
|
||||
<el-input v-model="formData.field107" placeholder="请输入收票账户编码" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="收票银行" prop="field108">
|
||||
<el-input v-model="formData.field108" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="兑现日期" prop="field109">
|
||||
<el-time-picker v-model="formData.field109" format="HH:mm:ss" value-format="HH:mm:ss"
|
||||
:picker-options='{ "selectableRange": "00:00:00-23:59:59" }' :style="{ width: '100%' }"
|
||||
placeholder="请选择兑现日期" clearable></el-time-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="兑现金额" prop="field110">
|
||||
<el-input v-model="formData.field110" placeholder="请输入兑现金额" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="兑现金额大写" prop="field111">
|
||||
<el-input v-model="formData.field111" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="field112">
|
||||
<el-input v-model="formData.field112" type="textarea" placeholder="请输入备注"
|
||||
:autosize="{ minRows: 4, maxRows: 4 }" :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" prop="field113">
|
||||
<el-upload ref="field113" :file-list="field113fileList" :action="field113Action"
|
||||
:before-upload="field113BeforeUpload">
|
||||
<el-button size="small" type="primary" icon="el-icon-upload">点击上传</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item size="large">
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
</el-card>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
components: {},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
field101: undefined,
|
||||
field102: undefined,
|
||||
field103: undefined,
|
||||
field104: undefined,
|
||||
field105: undefined,
|
||||
field106: undefined,
|
||||
field107: undefined,
|
||||
field108: undefined,
|
||||
field109: null,
|
||||
field110: undefined,
|
||||
field111: undefined,
|
||||
field112: undefined,
|
||||
field113: null,
|
||||
},
|
||||
rules: {
|
||||
field101: [{
|
||||
required: true,
|
||||
message: '请输入组织名称',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field102: [{
|
||||
required: true,
|
||||
message: '请输入部门名称',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field103: [{
|
||||
required: true,
|
||||
message: '点击选择汇票',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field104: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field105: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field106: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field107: [],
|
||||
field108: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field109: [{
|
||||
required: true,
|
||||
message: '请选择兑现日期',
|
||||
trigger: 'change'
|
||||
}],
|
||||
field110: [{
|
||||
required: true,
|
||||
message: '请输入兑现金额',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field111: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field112: [],
|
||||
},
|
||||
field113Action: 'https://jsonplaceholder.typicode.com/posts/',
|
||||
field113fileList: [],
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
created() { },
|
||||
mounted() { },
|
||||
methods: {
|
||||
submitForm() {
|
||||
this.$refs['elForm'].validate(valid => {
|
||||
if (!valid) return
|
||||
// TODO 提交表单
|
||||
})
|
||||
},
|
||||
resetForm() {
|
||||
this.$refs['elForm'].resetFields()
|
||||
},
|
||||
field113BeforeUpload(file) {
|
||||
let isRightSize = file.size / 1024 / 1024 < 2
|
||||
if (!isRightSize) {
|
||||
this.$message.error('文件大小超过 2MB')
|
||||
}
|
||||
return isRightSize
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.el-upload__tip {
|
||||
line-height: 1.2;
|
||||
}
|
||||
</style>
|
||||
|
@ -55,14 +55,14 @@
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收票账户编码" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="bank_account_no" readonly clearable placeholder="请输入收票账户编码" />
|
||||
<el-input v-model="account_sn" readonly clearable placeholder="请输入收票账户编码" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="收票银行" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="bank_account" readonly clearable placeholder="请输入收票银行" />
|
||||
<el-input v-model="deposit_bank" readonly clearable placeholder="请输入收票银行" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -152,8 +152,8 @@ const customer_name = ref('')
|
||||
const bill_sn = ref('')
|
||||
const bill_type = ref('')
|
||||
const bill_due_date = ref('')
|
||||
const bank_account = ref('')
|
||||
const bank_account_no = ref('')
|
||||
const deposit_bank = ref('')
|
||||
const account_sn = ref('')
|
||||
const draft_acceptance_bank = ref('')
|
||||
const list1 = reactive([])
|
||||
const list2 = reactive([])
|
||||
@ -210,8 +210,8 @@ const customEvent = (e: any) => {
|
||||
bill_due_date.value = e.bill_due_date
|
||||
draft_acceptance_bank.value = e.draft_acceptance_bank
|
||||
bill_type.value = e.bill_type
|
||||
bank_account.value = e.account_name
|
||||
bank_account_no.value = e.account
|
||||
deposit_bank.value = e.account_name
|
||||
account_sn.value = e.account
|
||||
showDialog.value = false;
|
||||
};
|
||||
|
||||
@ -226,13 +226,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
@ -301,8 +303,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
bill_due_date.value = data.acceptance.bill_due_date
|
||||
draft_acceptance_bank.value = data.acceptance.draft_acceptance_bank
|
||||
bill_type.value = data.acceptance.bill_type
|
||||
bank_account.value = data.bankAccount.deposit_bank
|
||||
bank_account_no.value = data.bankAccount.account_sn
|
||||
deposit_bank.value = data.bankAccount.deposit_bank
|
||||
account_sn.value = data.bankAccount.account_sn
|
||||
if (data.amount) {
|
||||
toChinesNum(data.amount)
|
||||
}
|
||||
|
@ -1,218 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<el-card>
|
||||
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="120px" label-position="left">
|
||||
<el-form-item label="组织名称" prop="field101">
|
||||
<el-input v-model="formData.field101" placeholder="请输入组织名称" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="部门名称" prop="field102">
|
||||
<el-input v-model="formData.field102" placeholder="请输入部门名称" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="供应商名称" prop="field120">
|
||||
<el-input v-model="formData.field120" placeholder="点击选择供应商" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="供应商编码" prop="field121">
|
||||
<el-input v-model="formData.field121" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同编号" prop="field106">
|
||||
<el-input v-model="formData.field106" placeholder="点击选择合同" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同名称" prop="field107">
|
||||
<el-input v-model="formData.field107" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="field105">
|
||||
<el-input v-model="formData.field105" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="合同类型" prop="field122">
|
||||
<el-input v-model="formData.field122" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="票据编号" prop="field110">
|
||||
<el-input v-model="formData.field110" placeholder="请输入票据编号" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="开户银行" prop="field123">
|
||||
<el-input v-model="formData.field123" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="账户编码" prop="field125">
|
||||
<el-input v-model="formData.field125" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票类型" prop="field126">
|
||||
<el-input v-model="formData.field126" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票承兑银行" prop="field127">
|
||||
<el-input v-model="formData.field127" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="汇票到期日期" prop="field128">
|
||||
<el-date-picker v-model="formData.field128" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
|
||||
:style="{ width: '100%' }" placeholder="系统自动填写" clearable :disabled='true'></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="付款日期" prop="field129">
|
||||
<el-date-picker v-model="formData.field129" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
|
||||
:style="{ width: '100%' }" placeholder="请选择付款日期" clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="金额" prop="field130">
|
||||
<el-input v-model="formData.field130" placeholder="请输入金额" clearable :style="{ width: '100%' }">
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="金额大写" prop="field131">
|
||||
<el-input v-model="formData.field131" placeholder="系统自动填写" :disabled='true' clearable
|
||||
:style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="field132">
|
||||
<el-input v-model="formData.field132" type="textarea" placeholder="请输入备注"
|
||||
:autosize="{ minRows: 4, maxRows: 4 }" :style="{ width: '100%' }"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="附件" prop="field133">
|
||||
<el-upload ref="field133" :file-list="field133fileList" :action="field133Action"
|
||||
:before-upload="field133BeforeUpload">
|
||||
<el-button size="small" type="primary" icon="el-icon-upload">点击上传</el-button>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item size="large">
|
||||
<el-button type="primary" @click="submitForm">提交</el-button>
|
||||
<el-button @click="resetForm">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
components: {},
|
||||
props: [],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
field101: undefined,
|
||||
field102: undefined,
|
||||
field120: undefined,
|
||||
field121: undefined,
|
||||
field106: undefined,
|
||||
field107: undefined,
|
||||
field105: undefined,
|
||||
field122: undefined,
|
||||
field110: undefined,
|
||||
field123: undefined,
|
||||
field125: undefined,
|
||||
field126: undefined,
|
||||
field127: undefined,
|
||||
field128: null,
|
||||
field129: null,
|
||||
field130: undefined,
|
||||
field131: undefined,
|
||||
field132: undefined,
|
||||
field133: null,
|
||||
},
|
||||
rules: {
|
||||
field101: [{
|
||||
required: true,
|
||||
message: '请输入组织名称',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field102: [{
|
||||
required: true,
|
||||
message: '请输入部门名称',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field120: [{
|
||||
required: true,
|
||||
message: '点击选择供应商',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field121: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field106: [],
|
||||
field107: [],
|
||||
field105: [],
|
||||
field122: [],
|
||||
field110: [{
|
||||
required: true,
|
||||
message: '请输入票据编号',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field123: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field125: [],
|
||||
field126: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field127: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field128: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'change'
|
||||
}],
|
||||
field129: [],
|
||||
field130: [{
|
||||
required: true,
|
||||
message: '请输入金额',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field131: [{
|
||||
required: true,
|
||||
message: '系统自动填写',
|
||||
trigger: 'blur'
|
||||
}],
|
||||
field132: [],
|
||||
},
|
||||
field133Action: 'https://jsonplaceholder.typicode.com/posts/',
|
||||
field133fileList: [],
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
created() { },
|
||||
mounted() { },
|
||||
methods: {
|
||||
submitForm() {
|
||||
this.$refs['elForm'].validate(valid => {
|
||||
if (!valid) return
|
||||
// TODO 提交表单
|
||||
})
|
||||
},
|
||||
resetForm() {
|
||||
this.$refs['elForm'].resetFields()
|
||||
},
|
||||
field133BeforeUpload(file) {
|
||||
let isRightSize = file.size / 1024 / 1024 < 2
|
||||
if (!isRightSize) {
|
||||
this.$message.error('文件大小超过 2MB')
|
||||
}
|
||||
return isRightSize
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.el-upload__tip {
|
||||
line-height: 1.2;
|
||||
}
|
||||
</style>
|
||||
|
@ -19,14 +19,14 @@
|
||||
</el-select></el-form-item> </el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商名称" prop="supplier_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="customer_name" clearable placeholder="请输入供应商名称" />
|
||||
<el-form-item label="供应商名称" prop="supplier_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" @click="showDialog = true">
|
||||
<el-input v-model="supplier_name" readonly clearable placeholder="请输入供应商名称" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商编码" prop="supplier_id">
|
||||
<el-input v-model="customer_name" clearable placeholder="请输入供应商编码 " />
|
||||
<el-input v-model="supplier_code" readonly clearable placeholder="请输入供应商编码 " />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -63,27 +63,27 @@
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="票据编号" prop="bill_sn" @click="showDialog1 = true">
|
||||
<el-form-item label="票据编号" prop="acceptance_bill_id" @click="showDialog1 = true">
|
||||
<el-input v-model="bill_sn" readonly clearable placeholder="请输入票据编号" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户银行" prop="reimburser" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="bank_account" clearable placeholder="请输入开户银行" />
|
||||
<el-form-item label="开户银行" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="deposit_bank" clearable placeholder="请输入开户银行" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账户编码" prop="reimburser" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="bank_account_no" clearable placeholder="请输入账户编码" />
|
||||
<el-form-item label="账户编码" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="account_sn" clearable placeholder="请输入账户编码" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="汇票类型" prop="bill_type" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="汇票类型" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-radio-group v-model="bill_type" placeholder="请选择汇票类型">
|
||||
<el-radio v-for="(item, index) in dictData.bill_type" :key="index" :label="parseInt(item.value)">
|
||||
{{ item.name }}
|
||||
@ -95,13 +95,13 @@
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="汇票承兑银行" prop="draft_acceptance_bank" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="汇票承兑银行" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="draft_acceptance_bank" readonly clearable placeholder="请输入汇票承兑银行" />
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="汇票到期日期" prop="bill_due_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-form-item label="汇票到期日期" prop="acceptance_bill_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="bill_due_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择汇票到期日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
@ -204,9 +204,11 @@ const contract_type = ref('')
|
||||
const bill_sn = ref('')
|
||||
const bill_type = ref('')
|
||||
const bill_due_date = ref('')
|
||||
const bank_account = ref('')
|
||||
const bank_account_no = ref('')
|
||||
const deposit_bank = ref('')
|
||||
const account_sn = ref('')
|
||||
const draft_acceptance_bank = ref('')
|
||||
const supplier_code = ref('')
|
||||
const supplier_name = ref('')
|
||||
const list1 = reactive([])
|
||||
const list2 = reactive([])
|
||||
const userInfo = userStore.userInfo
|
||||
@ -255,17 +257,28 @@ const showDialog2 = ref(false)
|
||||
|
||||
|
||||
|
||||
|
||||
const customEvent = (e: any) => {
|
||||
formData.customer_id = e.id;
|
||||
customer_name.value = e.name;
|
||||
formData.supplier_id = e.id;
|
||||
supplier_code.value = e.supplier_code
|
||||
supplier_name.value = e.supplier_name
|
||||
showDialog.value = false;
|
||||
};
|
||||
|
||||
|
||||
const customEvent1 = (e: any) => {
|
||||
formData.acceptance_bill_id = e.id
|
||||
bill_sn.value = e.bill_sn
|
||||
bill_due_date.value = e.bill_due_date
|
||||
draft_acceptance_bank.value = e.draft_acceptance_bank
|
||||
bill_type.value = e.bill_type
|
||||
deposit_bank.value = e.account
|
||||
account_sn.value = e.account_sn
|
||||
showDialog1.value = false;
|
||||
};
|
||||
|
||||
|
||||
const customEvent2 = (e: any) => {
|
||||
formData.procurement_contract_id = e.id
|
||||
contract_name.value = e.contract_name;
|
||||
contract_no.value = e.contract_no;
|
||||
project_name.value = e.project_name;
|
||||
@ -284,13 +297,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
@ -313,9 +328,9 @@ const formData = reactive({
|
||||
id: '',
|
||||
org_id: '',
|
||||
dept_id: '',
|
||||
supplier_id: 0,
|
||||
procurement_contract_id: 0,
|
||||
acceptance_bill_id: 0,
|
||||
supplier_id: '',
|
||||
procurement_contract_id: '',
|
||||
acceptance_bill_id: '',
|
||||
payment_date: "",
|
||||
amount: "",
|
||||
amount_daxie: "",
|
||||
@ -365,8 +380,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
bill_due_date.value = data.acceptance.bill_due_date
|
||||
draft_acceptance_bank.value = data.acceptance.draft_acceptance_bank
|
||||
bill_type.value = data.acceptance.bill_type
|
||||
bank_account.value = data.bankAccount.deposit_bank
|
||||
bank_account_no.value = data.bankAccount.account_sn
|
||||
deposit_bank.value = data.bankAccount.deposit_bank
|
||||
account_sn.value = data.bankAccount.account_sn
|
||||
|
||||
|
||||
|
||||
|
@ -376,13 +376,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -91,12 +91,13 @@
|
||||
<el-col :span="8">
|
||||
<el-form-item label="附件" prop="field127">
|
||||
|
||||
<div>
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
|
||||
<!-- <span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span> -->
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无附件</div>
|
||||
|
||||
|
||||
|
||||
|
@ -311,13 +311,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 表单数据
|
||||
@ -384,8 +386,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
}
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
|
||||
<el-form-item label="供应商id" prop="supplier_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.supplier_id" clearable placeholder="请输入供应商id" />
|
||||
</el-form-item>
|
||||
@ -33,10 +33,12 @@
|
||||
<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="supplier_id" show-overflow-tooltip />
|
||||
<el-table-column label="审批id" prop="approve_id" show-overflow-tooltip />
|
||||
<el-table-column label="项目id" prop="project_id" show-overflow-tooltip />
|
||||
<el-table-column label="序号" type="index" width="55" show-overflow-tooltip />
|
||||
<el-table-column label="处理流程" prop="supplier_id" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
|
||||
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="供应商合同号" prop="supplier_contract_no" show-overflow-tooltip />
|
||||
<el-table-column label="合同类型" prop="contract_type">
|
||||
<template #default="{ row }">
|
||||
@ -59,10 +61,15 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="合同金额" prop="amount" show-overflow-tooltip />
|
||||
<el-table-column label="不含税金额" prop="amount_excluding_tax" show-overflow-tooltip />
|
||||
<el-table-column label="金额大写" prop="amount_daxie" show-overflow-tooltip />
|
||||
<el-table-column label="质保金比例" prop="retention_money_rate" show-overflow-tooltip />
|
||||
<el-table-column label="质保金" prop="retention_money" show-overflow-tooltip />
|
||||
<el-table-column label="已付款金额" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="实际合同金额" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="已开票金额" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="未付款金额" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="未开票金额" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="退款金额" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="已入库数量" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="未入库数量" prop="" show-overflow-tooltip />
|
||||
<el-table-column label="数量" prop="retention_money" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['contract.procurement_contract/edit']" type="primary" link @click="handleEdit(row)">
|
||||
|
@ -111,6 +111,21 @@
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="附件" prop="field127">
|
||||
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
|
||||
<!-- <span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span> -->
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无附件</div>
|
||||
|
||||
|
||||
|
||||
</el-form-item></el-col>
|
||||
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
@ -134,7 +149,7 @@ defineProps({
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
|
||||
const formDataannex = reactive([])
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
@ -192,7 +207,15 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
|
||||
|
||||
console.log(formData, '2222222222')
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
|
||||
<el-form-item label="客户名称" prop="custom_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户昵称" />
|
||||
</el-form-item>
|
||||
|
203
src/views/project_attendance_detail/detail.vue
Normal file
203
src/views/project_attendance_detail/detail.vue
Normal file
@ -0,0 +1,203 @@
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="考勤明细详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称">
|
||||
{{ formData.project_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号">
|
||||
{{ formData.project_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名">
|
||||
{{ formData.person_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号">
|
||||
{{ formData.person_idcard }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="考勤日期">
|
||||
{{ formData.attendance_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工种">
|
||||
{{ formData.work_type_text
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上班时间">
|
||||
{{ formData.work_start_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="下班时间">
|
||||
{{ formData.work_end_time }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="记工数量">
|
||||
{{ formData.work_record_num }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="保单明细">
|
||||
{{ formData.insurance_detail }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="日工资">
|
||||
{{ formData.daily_salary
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="日生活费">
|
||||
{{ formData.daily_living
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="日补贴">
|
||||
{{ formData.daily_subsidy
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="日其它">
|
||||
{{ formData.daily_other
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="日收入">
|
||||
{{ formData.daily_income
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注">
|
||||
{{ formData.remark
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="customdetail">
|
||||
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiCustomDetail } from '@/api/custom'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const formDataannex = reactive([])
|
||||
|
||||
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
areaOptions: [],
|
||||
});
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
Object.assign(formData, data)
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiCustomDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
popupRef.value?.close()
|
||||
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
console.log('1111111')
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.tit {
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
271
src/views/project_attendance_detail/edit.vue
Normal file
271
src/views/project_attendance_detail/edit.vue
Normal file
@ -0,0 +1,271 @@
|
||||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="60%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
|
||||
<el-row>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<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>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" prop="person_id" @click="showDialog1 = true">
|
||||
<el-input v-model="name" clearable readonly placeholder="请选择人员" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="身份证号" prop="person_id">
|
||||
<el-input v-model="idcard" clearable disabled placeholder="系统自动填写" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工种" prop="person_id">
|
||||
<el-input v-model="work_type" clearable disabled placeholder="系统自动填写" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="上班时间" prop="work_start_time">
|
||||
<el-date-picker class="flex-1 !flex" clearable v-model="formData.work_start_time" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="下班时间" prop="work_end_time">
|
||||
<el-date-picker class="flex-1 !flex" clearable v-model="formData.work_end_time" type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="记工数量" prop="work_record_num">
|
||||
<el-input v-model="formData.work_record_num" type="number" clearable placeholder="请输入记工数量" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="日工资" prop="daily_salary">
|
||||
<el-input v-model="formData.daily_salary" type="number" clearable placeholder="请输入日工资" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="日生活费" prop="daily_living">
|
||||
<el-input v-model="formData.daily_living" type="number" clearable placeholder="请输入日生活费" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="日补贴" prop="daily_subsidy">
|
||||
<el-input v-model="formData.daily_subsidy" type="number" clearable placeholder="请输入日补贴" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="日其它" prop="daily_other">
|
||||
<el-input v-model="formData.daily_other" type="number" clearable placeholder="请输入日其它" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="日收入" prop="daily_income">
|
||||
<el-input v-model="formData.daily_income" type="number" clearable placeholder="请输入日收入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
</popup>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
<projectDialog @customEvent="customEvent"></projectDialog>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="showDialog1" title="选择项目人员" width="70%">
|
||||
<customDialog @customEvent="customEvent1" :project_id="formData.project_id"></customDialog>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="procurementContractEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { attendancedetailAdd, attendancedetailEdit, attendancedetailDetail } from '@/api/project_attendance_detail'
|
||||
import customDialog from '@/components/project_personnel/index.vue'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
|
||||
const showDialog = ref(false)
|
||||
const showDialog1 = ref(false)
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const idcard = ref('')
|
||||
const name = ref('')
|
||||
const work_type = ref('')
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
const userStore = useUserStore();
|
||||
const formDataannex = reactive([])
|
||||
import feedback from '@/utils/feedback'
|
||||
const userInfo = userStore.userInfo
|
||||
//获取值
|
||||
const customEvent = (e) => {
|
||||
formData.project_id = e.id
|
||||
project_name.value = e.name
|
||||
project_code.value = e.project_code
|
||||
showDialog.value = false
|
||||
|
||||
}
|
||||
const customEvent1 = (e) => {
|
||||
formData.person_id = e.id
|
||||
name.value = e.name
|
||||
idcard.value = e.idcard
|
||||
work_type.value = e.work_type_text
|
||||
showDialog1.value = false
|
||||
|
||||
}
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑考勤明细' : '新增考勤明细'
|
||||
})
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four = (
|
||||
response,
|
||||
uploadFile
|
||||
) => {
|
||||
if (response.code == 0) {
|
||||
ElMessage.error(response.msg);
|
||||
return;
|
||||
}
|
||||
formDataannex.push(
|
||||
{ uri: response.data.uri, name: response.data.name }
|
||||
|
||||
|
||||
);
|
||||
};
|
||||
// 删除上传的文件
|
||||
const delFileFn = (index: number) => {
|
||||
formDataannex.splice(index, 1)
|
||||
}
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
project_id: '',
|
||||
person_id: '',
|
||||
attendance_date: '',
|
||||
work_start_time: '',
|
||||
work_end_time: '',
|
||||
work_record_num: '',
|
||||
daily_salary: '',
|
||||
daily_living: '',
|
||||
daily_subsidy: '',
|
||||
daily_other: '',
|
||||
daily_income: '',
|
||||
remark: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
project_name.value = data.project_name
|
||||
project_code.value = data.project_code
|
||||
idcard.value = data.person_idcard
|
||||
name.value = data.person_name
|
||||
work_type.value = data.work_type_text
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await attendancedetailDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await attendancedetailEdit(data)
|
||||
: await attendancedetailAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
formData.handler = userInfo.name
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
137
src/views/project_attendance_detail/index.vue
Normal file
137
src/views/project_attendance_detail/index.vue
Normal file
@ -0,0 +1,137 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project.project_attendance_record/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_attendance_record/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" show-overflow-tooltip />
|
||||
<el-table-column label="日记工单号" prop="person_idcard" 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="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="person_name" show-overflow-tooltip />
|
||||
<el-table-column label="身份证号" prop="person_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="工种" prop="work_type_text" show-overflow-tooltip />
|
||||
<!-- <el-table-column label="日生活费合计" prop="insurance_no" show-overflow-tooltip /> -->
|
||||
<el-table-column label="上班时间" prop="work_start_time" show-overflow-tooltip />
|
||||
<el-table-column label="下班时间" prop="work_end_time" show-overflow-tooltip />
|
||||
<el-table-column label="记工数量" prop="work_record_num" show-overflow-tooltip />
|
||||
<el-table-column label="日工资" prop="daily_salary" show-overflow-tooltip />
|
||||
<el-table-column label="日生活费" prop="daily_living" show-overflow-tooltip />
|
||||
<el-table-column label="日补贴" prop="daily_subsidy" show-overflow-tooltip />
|
||||
<el-table-column label="日其它" prop="daily_other" show-overflow-tooltip />
|
||||
<el-table-column label="日收入" prop="daily_income" 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_attendance_record/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_attendance_record/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_attendance_record/detail']" link @click="handledetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="projectLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { attendancedetailLists, attendancedetailDelete, attendancedetailDetail } from '@/api/project_attendance_detail'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
const protype = reactive([])
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDtail = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
attendance_date: '',
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: attendancedetailLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
console.log(data.id)
|
||||
let res = await attendancedetailDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await attendancedetailDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await attendancedetailDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
@ -1,87 +1,27 @@
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="保险管理详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="120px">
|
||||
<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-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称">
|
||||
{{ formData.project_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号">
|
||||
{{ formData.project_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名">
|
||||
{{ formData.person_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="身份证号">
|
||||
{{ formData.person_idcard }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-table :data="formData.attendance_detail">
|
||||
<el-table-column label="姓名" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="idcard" show-overflow-tooltip />
|
||||
<el-table-column label="工种" prop="work_type_text" show-overflow-tooltip />
|
||||
<el-table-column label="工作开始时间" prop="work_start_time" show-overflow-tooltip />
|
||||
<el-table-column label="工作结束时间" prop="work_end_time" show-overflow-tooltip />
|
||||
<el-table-column label="记工数量" prop="work_record_num" show-overflow-tooltip />
|
||||
<el-table-column label="日工资" prop="daily_salary" show-overflow-tooltip />
|
||||
<el-table-column label="日生活费" prop="daily_living" show-overflow-tooltip />
|
||||
<el-table-column label="日补贴" prop="daily_subsidy" show-overflow-tooltip />
|
||||
<el-table-column label="日其它" prop="daily_other" show-overflow-tooltip />
|
||||
<el-table-column label="日收入" prop="daily_income" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="invoice_no" show-overflow-tooltip />
|
||||
|
||||
</el-table>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="投保日期">
|
||||
{{ formData.insurance_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="到期日期">
|
||||
{{ formData.due_date }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="保费(元)">
|
||||
{{ formData.insurance }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="投保金额(万元)">
|
||||
{{ formData.insured_amount }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="保险公司">
|
||||
{{ formData.insurance_company }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="保单明细">
|
||||
{{ formData.insurance_detail }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发票编号">
|
||||
{{ formData.invoice_no
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="经办人">
|
||||
{{ formData.handler
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同附件">
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无附件</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
</popup>
|
||||
|
@ -1,77 +1,41 @@
|
||||
<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>
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-input v-model="project_code" clearable placeholder="请输入项目编码" @click="showDialog = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="项目名称" prop="project_id" @click="showDialog = true">
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" prop="project_person_id" @click="showDialog1 = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="person_name" clearable placeholder="请选择项目人员" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="身份证号" prop="project_person_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="idcard" clearable placeholder="系统自动填写" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="投保日期" prop="insurance_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.insurance_date" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择投保日期">
|
||||
<el-col :span="24">
|
||||
<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-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>
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="到期日期" prop="due_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.due_date" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择到期日期">
|
||||
</el-date-picker>
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保险种类" prop="type">
|
||||
<el-input v-model="formData.type" clearable placeholder="请输入保险种类" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保单号" prop="insurance_no">
|
||||
<el-input v-model="formData.insurance_no" clearable placeholder="请输入保单号" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保费(元)" prop="insurance">
|
||||
<el-input v-model="formData.insurance" clearable type="number" placeholder="请输入保费(元)" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="投保金额(万元)" prop="insured_amount">
|
||||
<el-input v-model="formData.insured_amount" clearable type="number" placeholder="请输入投保金额(万元)" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保险公司" prop="insurance_company">
|
||||
<el-input v-model="formData.insurance_company" clearable placeholder="请输入保险公司" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-form-item label="保单明细" prop="insurance_detail">
|
||||
<el-input v-model="formData.insurance_detail" clearable placeholder="请输入保单明细" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="发票编号" prop="invoice_no">
|
||||
<el-input v-model="formData.invoice_no" clearable placeholder="请输入发票编号" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经办人" prop="handler">
|
||||
<el-input v-model="formData.handler" clearable placeholder="请输入经办人" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="出勤人数" prop="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-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="合同附件" prop="field127">
|
||||
<el-form-item label="附件" prop="field127">
|
||||
<el-upload accept="doc, docx, xls, xlsx, ppt, pptx, pdf, txt, zip, rar, tar, jpg, png, gif, jpeg, webp, wmv, avi, mpg, mpeg, 3gp, mov, mp4, flv, f4v, rmvb, mkv" class="upload-demo" :show-file-list="false" aria-hidden="true" :headers="{ Token: userStore.token }" :action="base_url + '/upload/file'" :on-success="handleAvatarSuccess_four" ref="upload">
|
||||
<el-button type="primary">
|
||||
上传
|
||||
@ -102,7 +66,7 @@
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import projectDialog from '@/components/project/index.vue'
|
||||
import { insurancemanagementAdd, insurancemanagementEdit, insurancemanagementDetail } from '@/api/project_insurance_management'
|
||||
import { attendanceRecordAdd, attendanceRecordEdit, attendanceRecordDetail } from '@/api/project_attendance_record'
|
||||
import customDialog from '@/components/project_personnel/index.vue'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
@ -121,8 +85,8 @@ const showDialog = ref(false)
|
||||
const showDialog1 = ref(false)
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const person_name = ref('')
|
||||
const idcard = ref('')
|
||||
const renshu = ref('')
|
||||
|
||||
|
||||
import configs from "@/config"
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
@ -139,16 +103,10 @@ const customEvent = (e) => {
|
||||
showDialog.value = false
|
||||
|
||||
}
|
||||
const customEvent1 = (e) => {
|
||||
formData.project_person_id = e.id
|
||||
idcard.value = e.idcard
|
||||
person_name.value = e.name
|
||||
showDialog1.value = false
|
||||
|
||||
}
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑保险管理' : '新增保险管理'
|
||||
return mode.value == 'edit' ? '编辑考勤记录' : '新增考勤记录'
|
||||
})
|
||||
// 上传文件
|
||||
const handleAvatarSuccess_four = (
|
||||
@ -173,18 +131,11 @@ const delFileFn = (index: number) => {
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
project_id: '',
|
||||
project_person_id: '',
|
||||
insurance_date: '',
|
||||
due_date: '',
|
||||
type: '',
|
||||
insurance_no: '',
|
||||
insurance: '',
|
||||
insured_amount: '',
|
||||
insurance_company: '',
|
||||
insurance_detail: '',
|
||||
invoice_no: '',
|
||||
handler: '',
|
||||
annex: '',
|
||||
attendance_date: '',
|
||||
remark: '',
|
||||
file: '',
|
||||
attendance_detail: '',
|
||||
|
||||
})
|
||||
|
||||
|
||||
@ -224,7 +175,7 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await insurancemanagementDetail({
|
||||
const data = await attendanceRecordDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
@ -239,8 +190,8 @@ const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await insurancemanagementEdit(data)
|
||||
: await insurancemanagementAdd(data)
|
||||
? await attendanceRecordEdit(data)
|
||||
: await attendanceRecordAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
@ -2,21 +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="insurance_no">
|
||||
<el-input v-model="queryParams.insurance_no" clearable placeholder="请输入保单号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="保险种类" prop="type">
|
||||
<el-input v-model="queryParams.type" clearable placeholder="请输入保险种类" />
|
||||
</el-form-item>
|
||||
<el-form-item label="保险公司" prop="insurance_company">
|
||||
<el-input v-model="queryParams.insurance_company" clearable placeholder="请输入保险公司" />
|
||||
</el-form-item>
|
||||
<el-form-item label="发票编号" prop="invoice_no">
|
||||
<el-input v-model="queryParams.invoice_no" clearable placeholder="请输入发票编号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="经办人" prop="handler">
|
||||
<el-input v-model="queryParams.handler" clearable placeholder="请输入经办人" />
|
||||
<el-form-item label="日期" prop="attendance_date">
|
||||
<el-date-picker class="flex-1 !flex" clearable v-model="queryParams.attendance_date" type="date" value-format="YYYY-MM-DD" placeholder="选择考勤日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
@ -25,60 +13,45 @@
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project.project_insurance_management/add']" type="primary" @click="handleAdd">
|
||||
<el-button v-perms="['project.project_attendance_record/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_insurance_management/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
<el-button v-perms="['project.project_attendance_record/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="序号" type="index" show-overflow-tooltip />
|
||||
<el-table-column label="处理流程" prop="person_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="流程步骤" prop="person_idcard" show-overflow-tooltip />
|
||||
<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="person_name" show-overflow-tooltip />
|
||||
<el-table-column label="身份证号" prop="person_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="日期" prop="attendance_date" show-overflow-tooltip />
|
||||
<el-table-column label="出勤人数" prop="due_date" 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="insurance_date" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="invoice_no" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="到期日期" prop="due_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="保险种类" prop="type" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="保单号" prop="insurance_no" show-overflow-tooltip />
|
||||
<el-table-column label="保费(元)" prop="insurance" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="投保金额(万元)" prop="insured_amount" show-overflow-tooltip />
|
||||
<el-table-column label="保险公司" prop="insurance_company" show-overflow-tooltip />
|
||||
<el-table-column label="保单明细" prop="insurance_detail" show-overflow-tooltip />
|
||||
<el-table-column label="发票编号" prop="invoice_no" show-overflow-tooltip />
|
||||
<el-table-column label="经办人" prop="handler" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.annex && row.annex.length > 0">
|
||||
<div v-for="(item, i) in row.annex " :key='i'>
|
||||
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
暂无文件
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="人员标识" prop="per_daily_living" show-overflow-tooltip /> -->
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_insurance_management/edit']" type="primary" link @click="handleEdit(row)">
|
||||
<el-button v-perms="['project.project_attendance_record/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_insurance_management/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
<el-button v-perms="['project.project_attendance_record/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_insurance_management/detail']" link @click="handledetail(row)">
|
||||
<el-button v-perms="['project.project_attendance_record/detail']" link @click="handledetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
|
||||
@ -98,7 +71,7 @@
|
||||
<script lang="ts" setup name="projectLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { insurancemanagementLists, insurancemanagementDelete, insurancemanagementDetail } from '@/api/project_insurance_management'
|
||||
import { attendanceRecordLists, attendanceRecordDelete, attendanceRecordDetail } from '@/api/project_attendance_record'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
const protype = reactive([])
|
||||
@ -113,11 +86,8 @@ const showDtail = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
type: '',
|
||||
insurance_no: '',
|
||||
insurance_company: '',
|
||||
invoice_no: '',
|
||||
handler: '',
|
||||
attendance_date: '',
|
||||
|
||||
|
||||
})
|
||||
|
||||
@ -135,7 +105,7 @@ const handleSelectionChange = (val: any[]) => {
|
||||
const { dictData } = useDictData('labor_contract_status,labor_contract_type,labor_contract_name')
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: insurancemanagementLists,
|
||||
fetchFun: attendanceRecordLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
@ -150,7 +120,7 @@ const handleAdd = async () => {
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
console.log(data.id)
|
||||
let res = await insurancemanagementDetail({ id: data.id })
|
||||
let res = await attendanceRecordDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
@ -160,11 +130,11 @@ const handleEdit = async (data: any) => {
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await insurancemanagementDelete({ id })
|
||||
await attendanceRecordDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await insurancemanagementDetail({ id: data.id })
|
||||
let res = await attendanceRecordDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
|
@ -70,7 +70,20 @@
|
||||
{{ formData.ask }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件" prop="field127">
|
||||
|
||||
<div v-if="formDataannex.length > 0">
|
||||
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
|
||||
<!-- <span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span> -->
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无附件</div>
|
||||
|
||||
|
||||
|
||||
</el-form-item></el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
@ -94,7 +107,7 @@ defineProps({
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
|
||||
const formDataannex = reactive([])
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
@ -112,6 +125,15 @@ 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)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -16,15 +16,13 @@
|
||||
<el-input v-model="project_name" readonly clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="project_id">
|
||||
<el-input v-model="project_code
|
||||
" readonly clearable placeholder="请输入项目编码" />
|
||||
<el-input v-model="project_code" disabled clearable placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="project_id">
|
||||
<el-input v-model="custom_name
|
||||
" readonly clearable placeholder="请输入客户名称" />
|
||||
<el-input v-model="custom_name" disabled placeholder="系统自动填写" />
|
||||
</el-form-item>
|
||||
<el-form-item label="需求名称" prop="customer_demand_id" @click="showDialog1 = true">
|
||||
<el-input v-model="customer_demand_name" clearable readonly placeholder="请输入需求名称" />
|
||||
<el-input v-model="customer_demand_name" clearable readonly placeholder="请选择需求" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="联系人" prop="contact_id" @click="showDialog2 = true">
|
||||
@ -241,15 +239,7 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
deptAll({ 'org_id': data.org_id }).then((res) => {
|
||||
Object.assign(jobs, res)
|
||||
})
|
||||
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)
|
||||
}
|
||||
|
||||
console.log(jobs)
|
||||
project_name.value = data.project_name
|
||||
custom_name.value = data.custom_name
|
||||
@ -261,7 +251,15 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
//@ts-ignore
|
||||
formData.quotation_date = timeFormat(formData.quotation_date, 'yyyy-mm-dd hh:MM:ss')
|
||||
}
|
||||
|
@ -2,8 +2,21 @@
|
||||
<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="请输入项目id" />
|
||||
<el-form-item label="项目名称" prop="project_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户名称" prop="custom_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.custom_name" clearable placeholder="请输入客户名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人" prop="contact_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.contact_name" clearable placeholder="请输入联系人" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="联系电话" prop="contact_phone">
|
||||
<el-input class="w-[280px]" v-model="queryParams.contact_phone" clearable placeholder="请输入联系电话" />
|
||||
</el-form-item>
|
||||
<el-form-item label="技术人员" prop="technician_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.technician_name" clearable placeholder="请输入技术人员" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
@ -89,7 +102,12 @@ const showDtail = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
project_id: ''
|
||||
project_name: '',
|
||||
custom_name: '',
|
||||
contact_name: '',
|
||||
contact_phone: '',
|
||||
technician_name: '',
|
||||
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
|
@ -10,10 +10,10 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="项目编码" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
|
||||
<el-input v-model="project_code" readonly @click="showDialog = true" clearable placeholder="点击选择项目" />
|
||||
<el-input v-model="project_code" disabled clearable placeholder="系统自动填写" />
|
||||
</el-form-item> </el-col><el-col :span="8">
|
||||
<el-form-item label="客户名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
|
||||
<el-input v-model="custom_name" readonly @click="showDialog = true" clearable placeholder="点击选择项目" />
|
||||
<el-input v-model="custom_name" disabled clearable placeholder="系统自动填写" />
|
||||
</el-form-item> </el-col><el-col :span="8">
|
||||
<el-form-item label="执行人" prop="executor">
|
||||
<el-input v-model="formData.executor" clearable placeholder="请输入执行人" />
|
||||
|
@ -1,106 +1,88 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="queryParams.project_id" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="执行人" prop="executor">
|
||||
<el-input v-model="queryParams.executor" clearable placeholder="请输入执行人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="联系方式" prop="contact_information">
|
||||
<el-input v-model="queryParams.contact_information" clearable placeholder="请输入联系方式" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
|
||||
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="职位" prop="position">
|
||||
<el-input v-model="queryParams.position" clearable placeholder="请输入职位" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="项目角色" prop="project_role">
|
||||
<el-input v-model="queryParams.project_role" clearable placeholder="请输入项目角色" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="联系人" prop="contacts">
|
||||
<el-input v-model="queryParams.contacts" clearable placeholder="请输入联系人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-form-item label="执行人" prop="executor">
|
||||
<el-input class="w-[280px]" v-model="queryParams.executor" clearable placeholder="请输入执行人" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="联系方式" prop="contact_information">
|
||||
<el-input class="w-[280px]" v-model="queryParams.contact_information" clearable placeholder="请输入联系方式" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="职位" prop="position">
|
||||
<el-input class="w-[280px]" v-model="queryParams.position" clearable placeholder="请输入职位" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="项目角色" prop="project_role">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_role" clearable placeholder="请输入项目角色" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="联系人" prop="contacts">
|
||||
<el-input class="w-[280px]" v-model="queryParams.contacts" clearable placeholder="请输入联系人" />
|
||||
</el-form-item>
|
||||
|
||||
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="跟进类型" prop="follow_type">
|
||||
<el-select v-model="queryParams.follow_type" clearable placeholder="请选择跟进类型">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option v-for="(item, index) in dictData.follow_type" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="主题" prop="theme">
|
||||
<el-input v-model="queryParams.theme" clearable placeholder="请输入主题" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="行动描述" prop="action_description">
|
||||
<el-input v-model="queryParams.action_description" clearable placeholder="请输入行动描述" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="项目把握度" prop="project_assurance">
|
||||
<el-select v-model="queryParams.project_assurance" clearable placeholder="请选择项目把握度">
|
||||
|
||||
<el-option v-for="(item, index) in dictData.project_assurance" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="跟进状态" prop="follow_status">
|
||||
<el-select v-model="queryParams.follow_status" clearable placeholder="请选择跟进状态">
|
||||
|
||||
<el-option v-for="(item, index) in dictData.follow_status" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="跟进阶段" prop="follow_stage">
|
||||
<el-select v-model="queryParams.follow_stage" clearable placeholder="请输入跟进阶段">
|
||||
<el-form-item label="跟进类型" prop="follow_type">
|
||||
<el-select v-model="queryParams.follow_type" class="w-[280px]" clearable placeholder="请选择跟进类型">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option v-for="(item, index) in dictData.follow_type" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-option v-for="(item, index) in dictData.follow_stage" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="主题" prop="theme">
|
||||
<el-input v-model="queryParams.theme" class="w-[280px]" clearable placeholder="请输入主题" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="行动描述" prop="action_description">
|
||||
<el-input v-model="queryParams.action_description" class="w-[280px]" clearable placeholder="请输入行动描述" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="项目把握度" prop="project_assurance">
|
||||
<el-select v-model="queryParams.project_assurance" class="w-[280px]" clearable placeholder="请选择项目把握度">
|
||||
|
||||
<el-option v-for="(item, index) in dictData.project_assurance" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="跟进状态" prop="follow_status">
|
||||
<el-select v-model="queryParams.follow_status" class="w-[280px]" clearable placeholder="请选择跟进状态">
|
||||
|
||||
<el-option v-for="(item, index) in dictData.follow_status" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="跟进阶段" prop="follow_stage">
|
||||
<el-select v-model="queryParams.follow_stage" class="w-[280px]" clearable placeholder="请输入跟进阶段">
|
||||
|
||||
<el-option v-for="(item, index) in dictData.follow_stage" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="跟进日期" prop="follow_date">
|
||||
<daterange-picker v-model:startTime="queryParams.start_time" v-model:endTime="queryParams.end_time" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="下次回访日期" prop="next_follow_up_date">
|
||||
<daterange-picker v-model:startTime="queryParams.start_time" v-model:endTime="queryParams.end_time" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
|
||||
<el-col :span="10">
|
||||
<el-form-item label="跟进日期" prop="follow_date">
|
||||
<daterange-picker v-model:startTime="queryParams.start_time" v-model:endTime="queryParams.end_time" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
<el-form-item label="下次回访日期" prop="next_follow_up_date">
|
||||
<daterange-picker v-model:startTime="queryParams.start_time" v-model:endTime="queryParams.end_time" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <l-form-item label="" prop="ceate_time">
|
||||
<el-input v-model="queryParams.ceate_time" clearable placeholder="请输入" />
|
||||
</l-form-item> -->
|
||||
|
@ -312,13 +312,15 @@ const getlist = () => {
|
||||
}
|
||||
})
|
||||
}
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -241,13 +241,15 @@ const getlist = () => {
|
||||
}
|
||||
})
|
||||
}
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -2,8 +2,14 @@
|
||||
<div class="edit-popup">
|
||||
<popup ref="popupRef" :title="popupTitle" :async="true" width="550px" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="90px" :rules="formRules">
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input v-model="formData.project_name" @click="showDialog = true" clearable placeholder="点击选择项目" />
|
||||
<el-form-item label="项目名称" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_name" @click="showDialog = true" clearable placeholder="点击选择项目" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目编码" prop="project_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="project_code" disabled clearable placeholder="系统自动填写" />
|
||||
</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-form-item>
|
||||
<el-form-item label="技术人员" prop="technician_ids">
|
||||
<!-- <el-input v-model="technician" clearable placeholder="请输入技术人员" @click="userone('1')" /> -->
|
||||
@ -197,11 +203,16 @@ const technician
|
||||
const business_people
|
||||
= ref([])
|
||||
|
||||
const custom_name = ref('')
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
|
||||
const showDialog = ref(false)
|
||||
const customEvent = (e: any) => {
|
||||
formData.project_id = e.id;
|
||||
formData.project_name = e.name;
|
||||
project_name.value = e.name;
|
||||
project_code.value = e.project_code;
|
||||
custom_name.value = e.custom_name;
|
||||
showDialog.value = false;
|
||||
};
|
||||
// 获取全部人员
|
||||
@ -326,7 +337,6 @@ const popupTitle = computed(() => {
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
project_id: '',
|
||||
project_name: "",
|
||||
technician_ids: '',
|
||||
business_people_ids: '',
|
||||
cross_departmental_personnel_ids: '',
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline label-width="auto">
|
||||
<el-form-item label="项目名称" prop="project_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.project_id" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item>
|
||||
|
@ -12,60 +12,36 @@
|
||||
<el-input v-model="project_name" clearable placeholder="请输入项目名称" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" prop="project_person_id" @click="showDialog1 = true" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="person_name" clearable placeholder="请选择项目人员" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="身份证号" prop="project_person_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="idcard" clearable placeholder="系统自动填写" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="付款类型" prop="invoice_type">
|
||||
<el-radio-group v-model="formData.invoice_type" placeholder="请选择付款类型">
|
||||
<el-radio v-for="( item, index ) in dictData.invoice_type " :key="index" :label="parseInt(item.value)">
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="投保日期" prop="insurance_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.insurance_date" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择投保日期">
|
||||
<el-form-item label="申请日期" prop="insurance_date">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.insurance_date" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择申请日期">
|
||||
</el-date-picker>
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="到期日期" prop="due_date" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-date-picker class="flex-1 !flex" v-model="formData.due_date" clearable type="date" value-format="YYYY-MM-DD" placeholder="选择到期日期">
|
||||
</el-date-picker>
|
||||
<el-form-item label="合计金额(元)" prop="insurance">
|
||||
<el-input v-model="formData.insurance" clearable type="number" placeholder="请输入合计金额(元)" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保险种类" prop="type">
|
||||
<el-input v-model="formData.type" clearable placeholder="请输入保险种类" />
|
||||
<el-form-item label="合计金额大写(元)" prop="insured_amount">
|
||||
<el-input v-model="formData.insured_amount" clearable placeholder="请输入合计金额大写(元))" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保单号" prop="insurance_no">
|
||||
<el-input v-model="formData.insurance_no" clearable placeholder="请输入保单号" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保费(元)" prop="insurance">
|
||||
<el-input v-model="formData.insurance" clearable type="number" placeholder="请输入保费(元)" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="投保金额(万元)" prop="insured_amount">
|
||||
<el-input v-model="formData.insured_amount" clearable type="number" placeholder="请输入投保金额(万元)" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保险公司" prop="insurance_company">
|
||||
<el-input v-model="formData.insurance_company" clearable placeholder="请输入保险公司" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
|
||||
<el-form-item label="保单明细" prop="insurance_detail">
|
||||
<el-input v-model="formData.insurance_detail" clearable placeholder="请输入保单明细" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="发票编号" prop="invoice_no">
|
||||
<el-input v-model="formData.invoice_no" clearable placeholder="请输入发票编号" />
|
||||
</el-form-item> </el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="经办人" prop="handler">
|
||||
<el-input v-model="formData.handler" clearable placeholder="请输入经办人" />
|
||||
<el-form-item label="备注" prop="handler">
|
||||
<el-input v-model="formData.handler" clearable placeholder="请输入备注" />
|
||||
</el-form-item> </el-col>
|
||||
|
||||
|
||||
@ -87,6 +63,37 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="margin-bottom: 30px;">付款计划</div>
|
||||
<div style="margin-bottom: 30px;">
|
||||
<el-table :data="formData.pay_plan">
|
||||
<el-table-column label="序号">
|
||||
<template #default="{ row }">
|
||||
<el-button @click="handleAdd(row)">+</el-button>
|
||||
<el-button @click="handleDelete(row)">-</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="期次" prop="name1">
|
||||
<template #default="{ row }">
|
||||
<el-select v-model="row.period" clearable placeholder="请选择期次">
|
||||
<el-option v-for="(item, index) in dictData.pay_period " :key="index" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="计划付款日期" prop="pay_date">
|
||||
<template #default="{ row }">
|
||||
<el-date-picker v-model="row.pay_date" clearable type="datetime" value-format="YYYY-MM-DD HH:mm:ss" placeholder="选择签订日期">
|
||||
</el-date-picker>
|
||||
</template></el-table-column>
|
||||
<el-table-column label="金额" prop="pay_amount">
|
||||
<template #default="{ row }"> <el-input v-model="row.pay_amount" /> </template></el-table-column>
|
||||
|
||||
<el-table-column label="备注" prop="remark">
|
||||
<template #default="{ row }">
|
||||
<el-input v-model="row.remark" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form>
|
||||
</popup>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
@ -146,6 +153,18 @@ const customEvent1 = (e) => {
|
||||
showDialog1.value = false
|
||||
|
||||
}
|
||||
|
||||
const handleAdd = (row: any) => {
|
||||
// 在 row 后面插入一行数据
|
||||
const index = formData.pay_plan.indexOf(row);
|
||||
formData.pay_plan.splice(index + 1, 0, {});
|
||||
};
|
||||
|
||||
const handleDelete = (row: any) => {
|
||||
// 删除 row
|
||||
const index = formData.pay_plan.indexOf(row);
|
||||
formData.pay_plan.splice(index, 1);
|
||||
};
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑保险管理' : '新增保险管理'
|
||||
|
@ -25,38 +25,37 @@
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['project.project_insurance_management/add']" type="primary" @click="handleAdd">
|
||||
<el-button v-perms="['project.project_salary/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_insurance_management/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
<el-button v-perms="['project.project_salary/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
|
||||
<el-table-column label="序号" type="index" show-overflow-tooltip />
|
||||
<el-table-column label="处理流程" prop="person_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="流程步骤" prop="person_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="工资付款单号" prop="person_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="person_name" show-overflow-tooltip />
|
||||
<el-table-column label="身份证号" prop="person_idcard" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="投保日期" prop="insurance_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="到期日期" prop="due_date" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="保险种类" prop="type" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="保单号" prop="insurance_no" show-overflow-tooltip />
|
||||
<el-table-column label="保费(元)" prop="insurance" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="付款类型" prop="person_idcard" show-overflow-tooltip />
|
||||
<el-table-column label="申请日期" prop="insurance_date" show-overflow-tooltip />
|
||||
<el-table-column label="合计金额" prop="due_date" show-overflow-tooltip />
|
||||
<el-table-column label="合计金额大写" prop="insurance_no" show-overflow-tooltip />
|
||||
<el-table-column label="账户编码)" prop="insurance" show-overflow-tooltip />
|
||||
<el-table-column label="投保金额(万元)" prop="insured_amount" show-overflow-tooltip />
|
||||
<el-table-column label="保险公司" prop="insurance_company" show-overflow-tooltip />
|
||||
<el-table-column label="保单明细" prop="insurance_detail" show-overflow-tooltip />
|
||||
<el-table-column label="发票编号" prop="invoice_no" show-overflow-tooltip />
|
||||
<el-table-column label="经办人" prop="handler" show-overflow-tooltip />
|
||||
<el-table-column label="开户银行" prop="insurance_company" show-overflow-tooltip />
|
||||
<el-table-column label="账号" prop="insurance_detail" show-overflow-tooltip />
|
||||
<el-table-column label="开户名称" prop="invoice_no" show-overflow-tooltip />
|
||||
<el-table-column label="是否计息" prop="handler" show-overflow-tooltip />
|
||||
<el-table-column label="开始计息日期" prop="handler" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="handler" show-overflow-tooltip />
|
||||
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<div v-if="row.annex && row.annex.length > 0">
|
||||
@ -72,13 +71,13 @@
|
||||
<!-- <el-table-column label="人员标识" prop="per_daily_living" show-overflow-tooltip /> -->
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button v-perms="['project.project_insurance_management/edit']" type="primary" link @click="handleEdit(row)">
|
||||
<el-button v-perms="['project.project_salary/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_insurance_management/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
<el-button v-perms="['project.project_salary/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['project.project_insurance_management/detail']" link @click="handledetail(row)">
|
||||
<el-button v-perms="['project.project_salary/detail']" link @click="handledetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
|
||||
@ -98,7 +97,7 @@
|
||||
<script lang="ts" setup name="projectLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { insurancemanagementLists, insurancemanagementDelete, insurancemanagementDetail } from '@/api/project_insurance_management'
|
||||
import { insurancemanagementLists, insurancemanagementDelete, insurancemanagementDetail } from '@/api/project_salary'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import { getAllProjectTypes } from '@/api/projecttype'
|
||||
const protype = reactive([])
|
||||
|
@ -316,13 +316,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 表单数据
|
||||
@ -398,8 +400,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
}
|
||||
}
|
||||
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
project_name.value = data.project.name
|
||||
project_code.value = data.project.project_code
|
||||
|
@ -159,13 +159,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -180,13 +180,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -179,13 +179,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -102,13 +102,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -225,13 +225,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -141,13 +141,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -159,13 +159,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -157,13 +157,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -183,13 +183,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -111,13 +111,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -143,13 +143,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -149,13 +149,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -239,13 +239,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 表单数据
|
||||
@ -308,8 +310,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
}
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
customer_name.value = data.custom.name
|
||||
for (const key in formData) {
|
||||
|
@ -2,8 +2,11 @@
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="客户id" prop="customer_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.customer_id" clearable placeholder="请输入客户id" />
|
||||
<el-form-item label="客户" prop="customer_id">
|
||||
<el-select class="flex-1" v-model="queryParams.contract_id" clearable placeholder="请选择客户">
|
||||
<el-option v-for="(item, index) in customerList" :key="index" :label="item.name" :value="parseInt(item.id)" />
|
||||
</el-select>
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人" prop="contacts">
|
||||
<el-input class="w-[280px]" v-model="queryParams.contacts" clearable placeholder="请输入联系人" />
|
||||
@ -72,6 +75,7 @@
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apiQuotationLists, apiQuotationDelete, apiQuotationDetail } from '@/api/quotation'
|
||||
import { apiCustomLists } from '@/api/custom'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
@ -82,7 +86,7 @@ const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
const showEdit = ref(false)
|
||||
|
||||
const showDtail = ref(false)
|
||||
|
||||
const customerList = ref([])
|
||||
|
||||
|
||||
// 查询条件
|
||||
@ -145,6 +149,14 @@ const handleDetail = async (data: any) => {
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
//获取客户列表
|
||||
const customerlist = async () => {
|
||||
let res = await apiCustomLists({ page_size: 9999, page_no: 1 })
|
||||
customerList.value = res.lists
|
||||
}
|
||||
|
||||
customerlist()
|
||||
getLists()
|
||||
</script>
|
||||
|
||||
|
@ -1,11 +1,7 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form
|
||||
class="mb-[-16px]"
|
||||
:model="queryParams"
|
||||
inline
|
||||
>
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="报价单id" prop="quotation_id">
|
||||
<el-input class="w-[280px]" v-model="queryParams.quotation_id" clearable placeholder="请输入报价单id" />
|
||||
</el-form-item>
|
||||
@ -18,12 +14,7 @@
|
||||
<el-form-item label="税率" prop="tax_rate">
|
||||
<el-select class="w-[280px]" v-model="queryParams.tax_rate" clearable placeholder="请选择税率">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.tax_rate"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
<el-option v-for="(item, index) in dictData.tax_rate" :key="index" :label="item.name" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@ -33,51 +24,37 @@
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['quotation.quotation_detail/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['quotation.quotation_detail/delete']"
|
||||
:disabled="!selectData.length"
|
||||
@click="handleDelete(selectData)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="报价单id" prop="quotation_id" show-overflow-tooltip />
|
||||
<el-table-column label="产品id" prop="product_id" show-overflow-tooltip />
|
||||
<el-table-column label="产品数量" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="报价单号" prop="quotation_id" show-overflow-tooltip />
|
||||
<el-table-column label="客户名称" prop="quotation_id" show-overflow-tooltip />
|
||||
<el-table-column label="制单人" prop="product_id" show-overflow-tooltip />
|
||||
<el-table-column label="报价日期" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="产品类别" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="产品中类" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="产品小类" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="产品名称" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="产品编码" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="规格型号" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="品牌" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="参数说明" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="单位" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="数量" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="税率" prop="tax_rate">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.tax_rate" :value="row.tax_rate" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="含税单价" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="不含税金额" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="含税金额" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="添加人" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="创建日期" prop="product_num" show-overflow-tooltip />
|
||||
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['quotation.quotation_detail/edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['quotation.quotation_detail/delete']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
|
@ -185,13 +185,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -230,13 +230,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -153,13 +153,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -153,13 +153,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -216,13 +216,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -211,13 +211,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -172,13 +172,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -153,13 +153,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -137,13 +137,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -156,13 +156,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -162,13 +162,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -219,13 +219,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 表单数据
|
||||
@ -275,8 +277,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
}
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
if (data.negotiation_basis.length > 0) {
|
||||
|
||||
|
@ -363,13 +363,15 @@ const getlist = () => {
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e) => {
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
list2.splice(0, list2.length, ...res)
|
||||
})
|
||||
}
|
||||
// 获取详情
|
||||
@ -382,8 +384,8 @@ const setFormData = async (data: Record<any, any>) => {
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
if (formData.dept_id) {
|
||||
getlist1(formData.dept_id)
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
const arry1 = data.annex.split(',').map((item: any, index: any) => {
|
||||
|
227
src/views/supplerManagement/contact/detail.vue
Normal file
227
src/views/supplerManagement/contact/detail.vue
Normal file
@ -0,0 +1,227 @@
|
||||
|
||||
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="供应商联系人详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="160px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商编码">
|
||||
|
||||
{{ formData.supplier.supplier_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商名称">
|
||||
{{ formData.supplier.supplier_name }}
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="姓名">
|
||||
{{ formData.name }}
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="性别">
|
||||
<dict-value :options="dictData.sex" :value="formData.sex" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="出生日期">
|
||||
{{ formData.birthday }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人分类">
|
||||
<dict-value :options="dictData.contacts_type" :value="formData.contacts_type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="负责业务">
|
||||
{{ formData.responsible }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="类型">
|
||||
<dict-value :options="dictData.contacts_cate" :value="formData.contacts_cate" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="部门">
|
||||
{{ formData.department }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="职务">
|
||||
{{ formData.duties }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工作电话">
|
||||
{{ formData.work_phone }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="邮件地址">
|
||||
{{ formData.email }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="传真">
|
||||
{{ formData.fax }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="邮编">
|
||||
{{ formData.zip_code }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="家庭住址">
|
||||
{{ formData.family_address }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="证件类型">
|
||||
<dict-value :options="dictData.id_type" :value="formData.id_type" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="证件号码">
|
||||
{{ formData.idcard }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注">
|
||||
{{ formData.remark }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件" prop="field127">
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无附件</div>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="customdetail">
|
||||
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiCustomDetail } from '@/api/custom'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const formDataannex = reactive([])
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
areaOptions: [],
|
||||
});
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
// for (const key in formData) {
|
||||
// if (data[key] != null && data[key] != undefined) {
|
||||
// //@ts-ignore
|
||||
// formData[key] = data[key]
|
||||
|
||||
// }
|
||||
|
||||
// }
|
||||
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)
|
||||
|
||||
}
|
||||
Object.assign(formData, data)
|
||||
console.log(formData, '2222222222')
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiCustomDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
popupRef.value?.close()
|
||||
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
console.log('1111111')
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.tit {
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
307
src/views/supplerManagement/contact/edit.vue
Normal file
307
src/views/supplerManagement/contact/edit.vue
Normal file
@ -0,0 +1,307 @@
|
||||
<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">
|
||||
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商编码">
|
||||
<el-input v-model="supplier_code" disabled clearable placeholder="系统默认生成" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商" prop="supplier_id" :rules="[{ required: true, message: '不可为空', trigger: 'change' }]" @click="showDialog = true">
|
||||
<el-input v-model="supplier_name" readonly clearable placeholder="选择供应商" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" prop="name" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<el-input v-model="formData.name" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="性别" prop="sex">
|
||||
<el-select v-model="formData.sex" clearable placeholder="请选择性别">
|
||||
<el-option v-for="(item, index) in dictData.sex" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="出生日期" prop="birthday">
|
||||
<el-date-picker v-model="formData.birthday" format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="请输入出生日期" clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="联系人分类" prop="contacts_type">
|
||||
<el-select v-model="formData.contacts_type" clearable placeholder="请选择联系人分类">
|
||||
<el-option v-for="(item, index) in dictData.contacts_type" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="负责业务" prop="responsible">
|
||||
<el-input v-model="formData.responsible" clearable placeholder="请输入负责业务" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="称谓" prop="title">
|
||||
<el-input v-model="formData.title" clearable placeholder="请输入称谓" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="联系人类型" prop="contacts_cate">
|
||||
<el-select v-model="formData.contacts_cate" clearable placeholder="请选择联系人类型">
|
||||
<el-option v-for="(item, index) in dictData.contacts_cate" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="部门" prop="department">
|
||||
<el-input v-model="formData.department" clearable placeholder="请输入部门" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="职务" prop="duties">
|
||||
<el-input v-model="formData.duties" clearable placeholder="请输入职务" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="工作电话" prop="work_phone">
|
||||
<el-input v-model="formData.work_phone" clearable placeholder="请输入工作电话" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="移动电话" prop="mobile">
|
||||
<el-input v-model="formData.mobile" clearable placeholder="请输入移动电话" />
|
||||
</el-form-item></el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="邮件地址" prop="email">
|
||||
<el-input v-model="formData.email" clearable placeholder="请输入邮件地址" />
|
||||
</el-form-item></el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="传真" prop="fax">
|
||||
<el-input v-model="formData.fax" clearable placeholder="请输入传真" />
|
||||
</el-form-item></el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="邮编" prop="zip_code">
|
||||
<el-input v-model="formData.zip_code" clearable placeholder="请输入邮编" />
|
||||
</el-form-item></el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="家庭住址" prop="family_address">
|
||||
<el-input v-model="formData.family_address" clearable placeholder="请输入家庭住址" />
|
||||
</el-form-item></el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="证件类型" prop="id_type">
|
||||
<el-select v-model="formData.id_type" clearable placeholder="请选择证件类型">
|
||||
<el-option v-for="(item, index) in dictData.id_type" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="证件号码" prop="idcard">
|
||||
<el-input v-model="formData.idcard" clearable placeholder="请输入证件号码" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件" prop="field127">
|
||||
<el-upload accept="doc, docx, xls, xlsx, ppt, pptx, pdf, txt, zip, rar, tar, jpg, png, gif, jpeg, webp, wmv, avi, mpg, mpeg, 3gp, mov, mp4, flv, f4v, rmvb, mkv" class="upload-demo" :show-file-list="false" aria-hidden="true" :headers="{ Token: userStore.token }" :action="base_url + '/upload/file'" :on-success="handleAvatarSuccess_four" ref="upload">
|
||||
<el-button type="primary">
|
||||
上传
|
||||
</el-button>
|
||||
</el-upload>
|
||||
|
||||
<div>
|
||||
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</el-form-item></el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
</popup>
|
||||
<el-dialog v-model="showDialog" title="选择供应商" width="70%">
|
||||
<supplierTable @customEvent="customEvent"></supplierTable>
|
||||
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="bidBiddingDecisionEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
|
||||
import supplierTable from "@/components/supplier/index.vue"
|
||||
|
||||
import { suppliercontactsAdd, suppliercontactsEdit, suppliercontactsDetail } from '@/api/suppler_contact'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const supplier_name = ref('')
|
||||
const supplier_code = ref('')
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const showDialog = ref(false)
|
||||
|
||||
import configs from "@/config"
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
const userStore = useUserStore();
|
||||
const formDataannex = reactive([])
|
||||
// 上传文件
|
||||
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 customEvent = (e: any) => {
|
||||
formData.supplier_id = e.id;
|
||||
supplier_name.value = e.supplier_name
|
||||
supplier_code.value = e.supplier_code
|
||||
showDialog.value = false;
|
||||
};
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑供应商联系人表' : '新增供应商联系人表'
|
||||
})
|
||||
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
supplier_id: '',
|
||||
name: "",
|
||||
sex: '',
|
||||
birthday: "",
|
||||
contacts_type: '',
|
||||
responsible: "",
|
||||
title: "",
|
||||
contacts_cate: '',
|
||||
department: "",
|
||||
duties: "",
|
||||
work_phone: "",
|
||||
mobile: "",
|
||||
email: "",
|
||||
fax: "",
|
||||
zip_code: "",
|
||||
family_address: "",
|
||||
id_type: '',
|
||||
idcard: "",
|
||||
remark: "",
|
||||
annex: ""
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
const formRules = reactive<any>({
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
supplier_name.value = data.supplier.supplier_name
|
||||
supplier_code.value = data.supplier.supplier_code
|
||||
if (data.annex && data.annex.length > 0) {
|
||||
|
||||
const arry1 = data.annex.map((item: any, index: any) => {
|
||||
return {
|
||||
name: `文件${index + 1}`,
|
||||
uri: item
|
||||
};
|
||||
});
|
||||
Object.assign(formDataannex, arry1)
|
||||
|
||||
}
|
||||
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await suppliercontactsDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await suppliercontactsEdit(data)
|
||||
: await suppliercontactsAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
167
src/views/supplerManagement/contact/index.vue
Normal file
167
src/views/supplerManagement/contact/index.vue
Normal file
@ -0,0 +1,167 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.name" clearable placeholder="请输入姓名" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系人分类" prop="contacts_type">
|
||||
<el-select class="flex-1" v-model="queryParams.contacts_type" clearable placeholder="请选择联系人分类">
|
||||
<el-option v-for="(item, index) in dictData.contacts_type" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="供应商" prop="supplier_id">
|
||||
<el-select class="flex-1" v-model="queryParams.supplier_id" clearable placeholder="请选择供应商">
|
||||
<el-option v-for="(item, index) in supplierList" :key="index" :label="item.supplier_name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['bid.bid_bidding_decision/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['bid.bid_bidding_decision/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="供应商编码" prop="supplier_code" show-overflow-tooltip />
|
||||
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
|
||||
<el-table-column label="姓名" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="性别" prop="sex" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.sex" :value="row.sex" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="出生日期" prop="birthday" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="联系人分类" prop="contacts_type">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.contacts_type" :value="row.contacts_type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="负责业务" prop="responsible" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="类型" prop="contacts_cate">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.contacts_cate" :value="row.contacts_cate" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="部门" prop="department" show-overflow-tooltip />
|
||||
|
||||
<el-table-column label="职务" prop="duties" show-overflow-tooltip />
|
||||
<el-table-column label="工作电话" prop="work_phone" 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="['bid.bid_bidding_decision/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['bid.bid_bidding_decision/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['bid.bid_bidding_decision/detail']" link @click="handledetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="bidBiddingDecisionLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { suppliercontactsLists, suppliercontactsDelete, suppliercontactsDetail } from '@/api/suppler_contact'
|
||||
import { apisupplierLists } from '@/api/suppler_list'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
|
||||
const showDtail = ref(false)
|
||||
const supplierList = ref([])
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
name: '',
|
||||
supplier_id: '',
|
||||
contacts_type: ""
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('id_type,contacts_cate,contacts_type,sex')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: suppliercontactsLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
let res = await suppliercontactsDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await suppliercontactsDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
//详情
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await suppliercontactsDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
const supplierlist = async () => {
|
||||
let res = await apisupplierLists({ page_no: 1, page_size: 8888 })
|
||||
supplierList.value = res.lists
|
||||
}
|
||||
supplierlist()
|
||||
getLists()
|
||||
</script>
|
||||
|
241
src/views/supplerManagement/list/detail.vue
Normal file
241
src/views/supplerManagement/list/detail.vue
Normal file
@ -0,0 +1,241 @@
|
||||
|
||||
|
||||
|
||||
<template>
|
||||
<div class="detail-popup">
|
||||
<popup ref="popupRef" title="供应商管理详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
|
||||
<el-form ref="formRef" :model="formData" label-width="160px">
|
||||
<el-card class="mb-2">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="建档人">
|
||||
|
||||
{{ formData.custom_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="组织">
|
||||
{{ formData.org.name }}
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="部门">
|
||||
{{ formData.dept.name
|
||||
}}
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商编码">
|
||||
{{ formData.supplier_code
|
||||
}}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商名称">
|
||||
{{ formData.supplier_name }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商简介">
|
||||
{{ formData.supplier_introduction }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="品牌类别">
|
||||
{{ formData.brand_category }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商照片" prop="photos">
|
||||
<div v-if="formData.photos && formData.photos.length > 0">
|
||||
<material-picker v-model="formData.photos" />
|
||||
</div>
|
||||
<div v-else>暂无供应商照片</div>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商分组">
|
||||
<dict-value :options="dictData.supplier_group" :value="formData.group_id" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商分类">
|
||||
<dict-value :options="dictData.supplier_category" :value="formData.category_id" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="供应商等级">
|
||||
<dict-value :options="dictData.supplier_grade" :value="formData.grade" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="联系人">
|
||||
{{ formData.contacts }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="性别">
|
||||
<dict-value :options="dictData.sex" :value="formData.contacts_sex" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="出生日期">
|
||||
{{ formData.birthday }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="电话号码">
|
||||
{{ formData.competitor }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开标日期">
|
||||
{{ formData.phone }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="邮箱">
|
||||
{{ formData.email }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="地址">
|
||||
{{ formData.address }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注">
|
||||
{{ formData.remark }}
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件" prop="field127">
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>暂无附件</div>
|
||||
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="customdetail">
|
||||
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import { apiCustomDetail } from '@/api/custom'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const formDataannex = reactive([])
|
||||
const datas = reactive({
|
||||
provinceOptions: [],
|
||||
cityOptions: [],
|
||||
areaOptions: [],
|
||||
});
|
||||
|
||||
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
// 获取详情
|
||||
const setFormData = async (data: Record<any, any>) => {
|
||||
// for (const key in formData) {
|
||||
// if (data[key] != null && data[key] != undefined) {
|
||||
// //@ts-ignore
|
||||
// formData[key] = data[key]
|
||||
|
||||
// }
|
||||
|
||||
// }
|
||||
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)
|
||||
|
||||
}
|
||||
Object.assign(formData, data)
|
||||
console.log(formData, '2222222222')
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apiCustomDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
popupRef.value?.close()
|
||||
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = () => {
|
||||
console.log('1111111')
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.tit {
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
405
src/views/supplerManagement/list/edit.vue
Normal file
405
src/views/supplerManagement/list/edit.vue
Normal file
@ -0,0 +1,405 @@
|
||||
<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">
|
||||
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
|
||||
<el-tab-pane label="基本信息" name="first">
|
||||
<el-row>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="建档人" prop="create_user_id">
|
||||
<el-input v-model="create_user_name" readonly clearable placeholder="请输入建档人" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="组织" prop="org_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<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>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="部门" prop="dept_id" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
|
||||
<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-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商编码" prop="supplier_code">
|
||||
<el-input v-model="formData.supplier_code" readonly clearable placeholder="系统默认生成" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商名称" prop="supplier_name">
|
||||
<el-input v-model="formData.supplier_name" clearable placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="供应商简介" prop="supplier_introduction">
|
||||
<el-input v-model="formData.supplier_introduction" type="textarea" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="品牌类别" prop="brand_category">
|
||||
<el-input v-model="formData.brand_category" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="供应商照片" prop="photos">
|
||||
<material-picker v-model="formData.photos" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="供应商分组" label-width="130px" prop="group_id">
|
||||
<el-radio-group v-model="formData.group_id" placeholder="请选择供应商分组">
|
||||
<el-radio v-for="(item, index) in dictData.supplier_group" :key="index" :label="parseInt(item.value)">
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="供应商分类" label-width="130px" prop="category_id">
|
||||
<el-radio-group v-model="formData.category_id" placeholder="请选择供应商分类">
|
||||
<el-radio v-for="(item, index) in dictData.supplier_category" :key="index" :label="parseInt(item.value)">
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item></el-col><el-col :span="24">
|
||||
<el-form-item label="供应商等级" label-width="130px" prop="grade">
|
||||
<el-radio-group v-model="formData.grade" placeholder="请选择供应商等级">
|
||||
<el-radio v-for="(item, index) in dictData.supplier_grade" :key="index" :label="parseInt(item.value)">
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item></el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="联系人" prop="contacts">
|
||||
<el-input v-model="formData.contacts" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="性别" label-width="130px" prop="contacts_sex">
|
||||
<el-radio-group v-model="formData.contacts_sex" placeholder="请选择性别">
|
||||
<el-radio v-for="(item, index) in dictData.sex" :key="index" :label="parseInt(item.value)">
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item></el-col>
|
||||
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="出生日期" prop="birthday">
|
||||
|
||||
<el-date-picker v-model="formData.birthday" format="YYYY-MM-DD" value-format="YYYY-MM-DD" placeholder="请选择出生日期" clearable></el-date-picker>
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="电话号码" prop="phone">
|
||||
|
||||
<el-input v-model="formData.phone" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
|
||||
<el-input v-model="formData.email" clearable placeholder="请输入" /> </el-form-item></el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="地址" prop="address">
|
||||
<el-input v-model="formData.address" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="formData.remark" clearable placeholder="请输入备注" />
|
||||
</el-form-item></el-col><el-col :span="24">
|
||||
<el-form-item label="附件" prop="field127">
|
||||
<el-upload accept="doc, docx, xls, xlsx, ppt, pptx, pdf, txt, zip, rar, tar, jpg, png, gif, jpeg, webp, wmv, avi, mpg, mpeg, 3gp, mov, mp4, flv, f4v, rmvb, mkv" class="upload-demo" :show-file-list="false" aria-hidden="true" :headers="{ Token: userStore.token }" :action="base_url + '/upload/file'" :on-success="handleAvatarSuccess_four" ref="upload">
|
||||
<el-button type="primary">
|
||||
上传
|
||||
</el-button>
|
||||
</el-upload>
|
||||
|
||||
<div>
|
||||
<div v-for="(item, index) in formDataannex" style="margin-left: 5px;display: block;">
|
||||
<a style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item.uri" target="_blank">{{ item.name }}</a>
|
||||
<span style="cursor: pointer;margin-left: 5px;" @click="delFileFn(index)">x</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</el-form-item></el-col>
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="开票信息" name="second">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开票公司名称" prop="invoice_company_name">
|
||||
<el-input v-model="formData.invoice_company_name" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="纳税人识别号" prop="taxpayer_identification_number">
|
||||
<el-input v-model="formData.taxpayer_identification_number" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户银行" prop="bank_name">
|
||||
<el-input v-model="formData.bank_name" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户名称" prop="bank_accnout_name">
|
||||
<el-input v-model="formData.bank_accnout_name" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账号" prop="bank_account">
|
||||
<el-input v-model="formData.bank_account" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开户地址" prop="bank_address">
|
||||
<el-input v-model="formData.bank_address" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="期初未开票金额(元)" prop="init_invoice_amount">
|
||||
<el-input v-model="formData.init_invoice_amount" type="number" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="账期管理" name="third">
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="授信额度(元)" prop="credit_limit">
|
||||
<el-input v-model="formData.credit_limit" type="number" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="账期(元)" prop="account_period">
|
||||
<el-input v-model="formData.account_period" type="number" clearable placeholder="请输入" />
|
||||
</el-form-item></el-col>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
</el-form>
|
||||
<reviewprocess />
|
||||
</popup>
|
||||
<el-dialog v-model="showDialog" title="选择项目" width="70%">
|
||||
<projectTable @customEvent="customEvent"></projectTable>
|
||||
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="bidBiddingDecisionEdit">
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import reviewprocess from '@/components/reviewprocess/index.vue'
|
||||
|
||||
import projectTable from "@/components/project/index.vue"
|
||||
|
||||
import { apisupplierAdd, apisupplierEdit, apisupplierDetail } from '@/api/suppler_list'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const create_user_name = ref('')
|
||||
const project_name = ref('')
|
||||
const project_code = ref('')
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const showDialog = ref(false)
|
||||
const list1 = reactive([])
|
||||
const list2 = reactive([])
|
||||
import { deptAll } from '@/api/org/department'
|
||||
import { getAll } from '@/api/org/organization'
|
||||
import configs from "@/config"
|
||||
const base_url = configs.baseUrl + configs.urlPrefix
|
||||
import useUserStore from "@/stores/modules/user";
|
||||
|
||||
const userStore = useUserStore();
|
||||
const userInfo = userStore.userInfo
|
||||
const formDataannex = reactive([])
|
||||
// 上传文件
|
||||
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 customEvent = (e: any) => {
|
||||
formData.project_id = e.id;
|
||||
project_name.value = e.custom_name
|
||||
project_code.value = e.project_code
|
||||
showDialog.value = false;
|
||||
};
|
||||
// 弹窗标题
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑供应商管理' : '新增供应商管理'
|
||||
})
|
||||
|
||||
//分页点击
|
||||
const activeName = ref('first')
|
||||
|
||||
const handleClick = (tab: TabsPaneContext, event: Event) => {
|
||||
// console.log(tab, event)
|
||||
}
|
||||
//获取所有组织
|
||||
const getlist = () => {
|
||||
getAll().then((res) => {
|
||||
Object.assign(list1, res)
|
||||
if (res.length > 0 && !formData.org_id) {
|
||||
formData.org_id = res[0].id
|
||||
deptAll({ 'org_id': res[0].id }).then((res) => {
|
||||
if (res.length > 0) {
|
||||
Object.assign(list2, res)
|
||||
formData.dept_id = res[0].id
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
//获取部门
|
||||
const deptrmt = (e: any) => {
|
||||
formData.dept_id = ''
|
||||
getlist1(e)
|
||||
|
||||
}
|
||||
//获取所有部门
|
||||
const getlist1 = (id: any) => {
|
||||
deptAll({ 'org_id': id }).then((res) => {
|
||||
Object.assign(list2, res)
|
||||
})
|
||||
}
|
||||
// 表单数据
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
dept_id: '',
|
||||
org_id: '',
|
||||
create_user_id: "",
|
||||
supplier_code: "",
|
||||
supplier_name: "",
|
||||
supplier_introduction: "",
|
||||
brand_category: "",
|
||||
photos: "",
|
||||
group_id: "",
|
||||
category_id: "",
|
||||
grade: "",
|
||||
contacts: "",
|
||||
contacts_sex: "",
|
||||
birthday: "",
|
||||
phone: "",
|
||||
email: "",
|
||||
address: "",
|
||||
remark: "",
|
||||
annex: "",
|
||||
invoice_company_name: "",
|
||||
taxpayer_identification_number: "",
|
||||
bank_name: "",
|
||||
bank_accnout_name: "",
|
||||
bank_account: "",
|
||||
bank_address: "",
|
||||
init_invoice_amount: "",
|
||||
credit_limit: "",
|
||||
account_period: ""
|
||||
})
|
||||
|
||||
|
||||
// 表单验证
|
||||
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)
|
||||
|
||||
}
|
||||
if (data.dept_id) {
|
||||
getlist1(data.dept_id)
|
||||
}
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await apisupplierDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
// 提交按钮
|
||||
const handleSubmit = async () => {
|
||||
if (formDataannex.length > 0) {
|
||||
formData.annex = JSON.stringify(formDataannex.map((item: any) => item.uri))
|
||||
}
|
||||
if (formData.photos.length > 0) {
|
||||
formData.photos = JSON.stringify(formData.photos)
|
||||
}
|
||||
await formRef.value?.validate()
|
||||
const data = { ...formData, }
|
||||
mode.value == 'edit'
|
||||
? await apisupplierEdit(data)
|
||||
: await apisupplierAdd(data)
|
||||
popupRef.value?.close()
|
||||
emit('success')
|
||||
}
|
||||
|
||||
//打开弹窗
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
if (!formData.create_user_id) {
|
||||
|
||||
create_user_name.value = userInfo.name
|
||||
formData.create_user_id = userInfo.id
|
||||
}
|
||||
popupRef.value?.open()
|
||||
getlist()
|
||||
}
|
||||
|
||||
// 关闭回调
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
171
src/views/supplerManagement/list/index.vue
Normal file
171
src/views/supplerManagement/list/index.vue
Normal file
@ -0,0 +1,171 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-card class="!border-none mb-4" shadow="never">
|
||||
<el-form class="mb-[-16px]" :model="queryParams" inline>
|
||||
<el-form-item label="供应商编码" prop="supplier_code">
|
||||
<el-input class="w-[280px]" v-model="queryParams.supplier_code" clearable placeholder="请输入供应商编码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="供应商名称" prop="supplier_name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.supplier_name" clearable placeholder="请输入供应商名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="供应商分组" prop="group_id">
|
||||
<el-select class="flex-1" v-model="queryParams.group_id" clearable placeholder="请选择供应商分组">
|
||||
<el-option v-for="(item, index) in dictData.supplier_group" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="供应商分类" prop="category_id">
|
||||
<el-select class="flex-1" v-model="queryParams.category_id" clearable placeholder="请选择供应商分类">
|
||||
<el-option v-for="(item, index) in dictData.supplier_category" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="供应商等级" prop="grade">
|
||||
<el-select class="flex-1" v-model="queryParams.grade" clearable placeholder="请选择供应商等级">
|
||||
<el-option v-for="(item, index) in dictData.supplier_grade" :key="index" :label="item.name" :value="parseInt(item.value)" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none" v-loading="pager.loading" shadow="never">
|
||||
<el-button v-perms="['bid.bid_bidding_decision/add']" type="primary" @click="handleAdd">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
<el-button v-perms="['bid.bid_bidding_decision/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
|
||||
删除
|
||||
</el-button>
|
||||
<div class="mt-4">
|
||||
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" />
|
||||
|
||||
<el-table-column label="建档人" prop="project_id" show-overflow-tooltip />
|
||||
<el-table-column label="供应商编码" prop="supplier_code" show-overflow-tooltip />
|
||||
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
|
||||
<el-table-column label="品牌类别" prop="brand_category" show-overflow-tooltip />
|
||||
<el-table-column label="供应商分组" prop="group_id">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.supplier_group" :value="row.group_id" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="供应商分类" prop="category_id">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.supplier_category" :value="row.category_id" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="供应商等级" prop="grade">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.supplier_grade" :value="row.grade" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="联系人" prop="contacts" show-overflow-tooltip />
|
||||
<el-table-column label="性别" prop="contacts_sex" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.sex" :value="row.contacts_sex" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="电话号码" prop="phone" 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="['bid.bid_bidding_decision/edit']" type="primary" link @click="handleEdit(row)">
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button v-perms="['bid.bid_bidding_decision/delete']" type="danger" link @click="handleDelete(row.id)">
|
||||
删除
|
||||
</el-button>
|
||||
<el-button v-perms="['bid.bid_bidding_decision/detail']" link @click="handledetail(row)">
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<detail-popup v-if="showDtail" ref="detailRef" :dict-data="dictData" @close="showDtail = false" />
|
||||
<edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="bidBiddingDecisionLists">
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { apisupplierLists, apisupplierDelete, apisupplierDetail } from '@/api/suppler_list'
|
||||
import { timeFormat } from '@/utils/util'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import DetailPopup from './detail.vue'
|
||||
const detailRef = shallowRef<InstanceType<typeof DetailPopup>>()
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
// 是否显示编辑框
|
||||
const showEdit = ref(false)
|
||||
const showDtail = ref(false)
|
||||
|
||||
// 查询条件
|
||||
const queryParams = reactive({
|
||||
category_id: '',
|
||||
grade: '',
|
||||
group_id: "",
|
||||
supplier_name: '',
|
||||
supplier_code: ''
|
||||
})
|
||||
|
||||
// 选中数据
|
||||
const selectData = ref<any[]>([])
|
||||
|
||||
// 表格选择后回调事件
|
||||
const handleSelectionChange = (val: any[]) => {
|
||||
selectData.value = val.map(({ id }) => id)
|
||||
}
|
||||
|
||||
// 获取字典数据
|
||||
const { dictData } = useDictData('supplier_grade,supplier_category,supplier_group,sex')
|
||||
|
||||
// 分页相关
|
||||
const { pager, getLists, resetParams, resetPage } = usePaging({
|
||||
fetchFun: apisupplierLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
// 添加
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
// 编辑
|
||||
const handleEdit = async (data: any) => {
|
||||
let res = await apisupplierDetail({ id: data.id })
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.setFormData(res)
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (id: number | any[]) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await apisupplierDelete({ id })
|
||||
getLists()
|
||||
}
|
||||
//详情
|
||||
const handledetail = async (data: any) => {
|
||||
let res = await apisupplierDetail({ id: data.id })
|
||||
showDtail.value = true
|
||||
await nextTick()
|
||||
detailRef.value?.open()
|
||||
detailRef.value?.setFormData(res)
|
||||
}
|
||||
getLists()
|
||||
</script>
|
||||
|
Loading…
x
Reference in New Issue
Block a user