This commit is contained in:
zmj 2024-01-25 16:31:34 +08:00
parent 92d770655d
commit 19b31a6209
58 changed files with 593 additions and 1024 deletions

View File

@ -1,269 +1,11 @@
<template>
<div>
<el-card>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="处理意见" name="first" class="demo-tabs-a">
<div>当前步骤 发起工单</div>
<div>处理动作 发起流程</div>
<div>送审步骤 技术处理</div>
<div class="userlist">
<div>指定处理人</div>
<div v-for="item in userlist1" class="userlist-con">
<img src="@/assets/images/no_perms.png" alt="" />
{{ item.name }}
</div>
</div>
<el-form-item label="处理意见" prop="content">
<el-input v-model="content" class="w-[1280px]" clearable placeholder="请输入处理意见" type="textarea" />
</el-form-item>
<div class="flex user">
<div>流程抄送</div>
<div>{{ userlist1.length }}</div>
<div @click="dialogVisible = true"><img src="@/assets/images/no_perms.png" alt="" /></div>
</div>
</el-tab-pane>
<el-tab-pane label="流程日志" name="second">暂无流程日志</el-tab-pane>
</el-tabs>
</el-card>
<el-dialog v-model="dialogVisible" title="人员选择器" width="30%" :before-close="handleClose">
<div>
<el-radio-group v-model="isCollapse" style="margin-bottom: 20px" @change="clckuser">
<el-radio-button :label="1">全部人员</el-radio-button>
<el-radio-button :label="2">按部门筛选</el-radio-button>
<el-radio-button :label="3">按岗位筛选</el-radio-button>
</el-radio-group>
<div v-if="isCollapse == 1" style="margin-bottom: 20px">
<el-input v-model="content" clearable placeholder="搜索人员" />
<div style="margin-top: 20px">
<el-checkbox-group v-model="vallist">
<div v-for="(item, i) in uesrlist" :key="i" class="radiolist">
<el-checkbox :label="item">
<div class="radio-con">
<div class="radioa">
<img :src="item.avatar" alt="" />
</div>
<div class="radiob">
<div class="radiob_a">{{ item.name }}</div>
<div class="radiob_b">
<text v-if="item.org_name.length > 0">{{ item.org_name }}</text>
<text v-if="item.dept_name.length > 0">/{{ item.dept_name }}</text>
<text v-if="item.job_name.length > 0">/{{ item.job_name }}</text>
</div>
</div>
</div>
</el-checkbox>
</div>
</el-checkbox-group>
</div>
</div>
<div v-if="isCollapse == 2">
<div v-if="isshow">
<div v-for="(item, i) in deparmetlist" :key="i">
<div class="lad">{{ i }}</div>
<div class="lads">
<div class="flex " v-for="(items, k) in item" style="justify-content: space-between;"
@click="deparmetclck(items)">
<div>{{ items.name }}</div>
<div class="Collapsebj">{{ items.admin_num }}</div>
</div>
</div>
</div>
</div>
<div v-else>
<!-- <el-input v-model="content" clearable placeholder="搜索人员" style="margin-bottom: 20px;" /> -->
<el-checkbox-group v-model="vallist">
<div v-for="(item, i) in deparmetlist1" :key="i" class="radiolist">
<el-checkbox :label="item">
<div class="radio-con">
<div class="radioa">
<img :src="item.avatar" alt="" />
</div>
<div class="radiob">
<div class="radiob_a">{{ item.name }}</div>
<div class="radiob_b">
<text v-if="item.org_name.length > 0">{{ item.org_name }}</text>
<text v-if="item.dept_name.length > 0">/{{ item.dept_name }}</text>
<text v-if="item.job_name.length > 0">/{{ item.job_name }}</text>
</div>
</div>
</div>
</el-checkbox>
</div>
</el-checkbox-group>
</div>
</div>
<div v-if="isCollapse == 3">
<div v-if="isshow1">
<div class="lads ">
<div class="flex " v-for="(item, j) in jobslist" :key="j"
style="justify-content: space-between;" @click="gwclck(item)">
<div>{{ item.name }}</div>
<div class="Collapsebj">{{ item.admin_num }}</div>
</div>
</div>
</div>
<div v-else>
<!-- <el-input v-model="content" clearable placeholder="搜索人员" style="margin-bottom: 20px;" /> -->
<el-checkbox-group v-model="vallist">
<div v-for="(item, i) in jobslist1" :key="i" class="radiolist">
<el-checkbox :label="item">
<div class="radio-con">
<div class="radioa">
<img :src="item.avatar" alt="" />
</div>
<div class="radiob">
<div class="radiob_a">{{ item.name }}</div>
<div class="radiob_b">
<text v-if="item.org_name.length > 0">{{ item.org_name }}</text>
<text v-if="item.dept_name.length > 0">/{{ item.dept_name }}</text>
<text v-if="item.job_name.length > 0">/{{ item.job_name }}</text>
</div>
</div>
</div>
</el-checkbox>
</div>
</el-checkbox-group>
</div>
</div>
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="userclick"> {{ vallist.length > 0 ? '已选' : '未选' }}
<text v-if="vallist.length > 0">{{ vallist.length }}</text> </el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script lang="ts" setup>
import { computed, nextTick, onMounted, reactive, shallowRef, watch } from 'vue'
import { getAdminsByAll, getAllDept, getAllJobs, getAdminsByDept, getAdminsByJob } from '@/api/common'
const active = ref(0);
const isCollapse = ref(1);
const props = defineProps({
list: {
type: Array
}
})
console.log(props.list)
// const list = reactive([])
// list.splice(0, list.length, ...props.list)
const activeName = ref('first')
const content = ref('')
const userlist1 = reactive([{ name: 1 }, { name: 1 }, { name: 1 }, { name: 1 }]);
const uesrlist = reactive([]);
const deparmetlist = reactive({})
const deparmetlist1 = reactive([])
const jobslist = reactive({})
const jobslist1 = reactive([])
const isshow = ref(true);
const isshow1 = ref(true);
const vallist = ref([])
const companylist = reactive([
{
name1: "哈哈公司",
name2: "2222",
},
{
name1: "哈哈公司",
name2: "2222",
},
{
name1: "哈哈公司",
name2: "2222",
},
]);
const next = () => {
if (active.value++ > 2) active.value = 0;
};
//
const clckuser = (e) => {
isshow.value = true
isshow1.value = true
}
//
const userclick = () => {
dialogVisible.value = false
// console.log(vallist.value, 9999999999999)
userlist1.forEach((user, index) => {
Object.assign(user, vallist.value);
});
}
//
const getlist = () => {
getAdminsByAll().then((res) => {
// console.log(res)
Object.assign(uesrlist, res)
})
}
//
const deparmet = () => {
getAllDept().then((res) => {
Object.assign(deparmetlist, res)
})
}
//
const deparmetclck = (item: { id: any }) => {
console.log(item)
getAdminsByDept({ 'dept_id': item.id }).then((res) => {
if (res.length > 0) {
Object.assign(deparmetlist1, res)
isshow.value = false
}
})
}
//
const Jobs = () => {
getAllJobs().then((res) => {
Object.assign(jobslist, res)
})
}
//
const gwclck = (item: { id: any }) => {
getAdminsByJob({ 'job_id': item.id }).then((res) => {
if (res.length > 0) {
Object.assign(jobslist1, res)
isshow1.value = false
}
})
}
onMounted(() => {
getlist()
deparmet()
Jobs()
})
const dialogVisible = ref(false);
const handleClose = (done: () => void) => {
done();
};
</script>

View File

@ -2,11 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交申请" description="Some description" />
<el-step title="资产管理员" description="Some description" />
<el-step title="维修结果反馈" description="Some description" />
</el-steps>
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">

View File

@ -2,12 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交申请" description="Some description" />
<el-step title="项目经理" description="Some description" />
<el-step title="资产管理员
" description="Some description" />
</el-steps>
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">

View File

@ -2,11 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交申请" description="Some description" />
<el-step title="财务审核" description="Some description" />
</el-steps>
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">

View File

@ -2,11 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交申请" description="Some description" />
<el-step title="领导审核" description="Some description" />
</el-steps>
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">

View File

@ -2,11 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交申请" description="Some description" />
<el-step title="采购审核" description="Some description" />
</el-steps>
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">

View File

@ -2,11 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交申请" description="Some description" />
<el-step title="项目经理" description="Some description" />
<el-step title="资产管理员" description="Some description" />
</el-steps>
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">

View File

@ -2,10 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交申请" description="Some description" />
<el-step title="领导审核" description="Some description" />
</el-steps>
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">

View File

@ -26,15 +26,7 @@
<el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px">
<el-card>
<div style="width: 40vw;margin-bottom: 10px;height: 50px;overflow: hidden;">
<el-steps :space="200" :active="1" simple>
<el-step title="发起工单" />
<el-step title="技术处理" />
<el-step title="客服回访" />
<el-step title="总经理审核" />
</el-steps>
</div>
<el-row :gutter="10">

View File

@ -2,12 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="Step 1" description="Some description" />
<el-step title="Step 2" description="Some description" />
<el-step title="Step 3" description="Some description" />
<el-step title="Step 4" description="Some description" />
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,12 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="发起询价" description="Some description" />
<el-step title="型号确认" description="Some description" />
<el-step title="比价" description="Some description" />
<el-step title="通知询价人" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,12 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="发起询价" description="Some description" />
<el-step title="型号确认" description="Some description" />
<el-step title="比价" description="Some description" />
<el-step title="通知询价人" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,11 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="填写入库单" description="Some description" />
<el-step title="库管确认" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,12 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="Step 1" description="Some description" />
<el-step title="Step 2" description="Some description" />
<el-step title="Step 3" description="Some description" />
<el-step title="Step 4" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,12 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="发起询价" description="Some description" />
<el-step title="型号确认" description="Some description" />
<el-step title="比价" description="Some description" />
<el-step title="通知询价人" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,12 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="发起询价" description="Some description" />
<el-step title="型号确认" description="Some description" />
<el-step title="比价" description="Some description" />
<el-step title="通知询价人" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,13 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="填写申请" description="Some description" />
<el-step title="项目经理审核" description="Some description" />
<el-step title="财务" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,13 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="Step 1" description="Some description" />
<el-step title="Step 2" description="Some description" />
<el-step title="Step 3" description="Some description" />
<el-step title="Step 4" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,11 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交申请" description="Some description" />
<el-step title="库管出库" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,13 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="Step 1" description="Some description" />
<el-step title="Step 2" description="Some description" />
<el-step title="Step 3" description="Some description" />
<el-step title="Step 4" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,11 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交申请" description="Some description" />
<el-step title="库管出库" description="Some description" />
</el-steps>
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -2,12 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="2" align-center>
<el-step title="提交申请" description="Some description" />
<el-step title="人事行政经理" description="Some description" />
<el-step title="财务经理" description="Some description" />
<el-step title="总经理" description="Some description" />
</el-steps>

View File

@ -2,7 +2,7 @@
<el-card style="width: 49.9%;">
<template #header>
<div class="card-header">
<span>我的客户</span>
<span>客户统计</span>
</div>
</template>
<div style="display: flex;justify-content: space-around;">

View File

@ -2,7 +2,7 @@
<el-card style="width: 49.9%;">
<template #header>
<div class="card-header">
<span>我的立项</span>
<span> 项目立项</span>
</div>
</template>
<div style="display: flex;justify-content: space-around;">
@ -20,27 +20,27 @@ import { apistatisticsprojectInitiation } from '@/api/statistics'
const customList = reactive([
{
name: "客户总数",
name: "项目总数",
value: 3
},
{
name: "今年增加",
name: "项目跟进",
value: 3
},
{
name: "今年增加",
name: "客户需求",
value: 3
},
{
name: "今年增加",
name: "解决方男",
value: 3
},
{
name: "今年增加",
name: "项目概算",
value: 3
},
{
name: "今年增加",
name: "竞争对手",
value: 3
},
])

View File

@ -20,15 +20,15 @@ import { apistatisticsprojectRefund } from '@/api/statistics'
const customList = reactive([
{
name: "客户总数",
name: "年度开票金额",
value: 3
},
{
name: "今年增加",
name: "年度回款金额",
value: 3
},
{
name: "今年增加",
name: "年度回款计划金额",
value: 3
},
@ -90,7 +90,7 @@ const getCustom = async () => {
emphasis: {
focus: 'series'
},
data: res.invoice_series.name.data,
data: res.invoice_series.data,
itemStyle: {
normal: {
label: {

View File

@ -20,15 +20,15 @@ import { apistatisticsprojectPayment } from '@/api/statistics'
const customList = reactive([
{
name: "客户总数",
name: "年度回票金额",
value: 3
},
{
name: "今年增加",
name: "年度付款金额",
value: 3
},
{
name: "今年增加",
name: "年度付款计划金额",
value: 3
},
@ -90,7 +90,7 @@ const getCustom = async () => {
emphasis: {
focus: 'series'
},
data: res.invoice_series.name.data,
data: res.invoice_series.data,
itemStyle: {
normal: {
label: {

View File

@ -20,15 +20,19 @@ import { apistatisticsprocurementContract } from '@/api/statistics'
const customList = reactive([
{
name: "客户总数",
name: "合同总数",
value: 3
},
{
name: "今年增加",
name: "总金额",
value: 3
},
{
name: "今年增加",
name: "年度合同数",
value: 3
},
{
name: "年度合同金额",
value: 3
}
])
@ -92,8 +96,10 @@ const getCustom = async () => {
},
data: res.series.data
},]))
customList[0].value = res.custom_total
customList[1].value = res.this_year_add
customList[0].value = res.total_num
customList[1].value = res.total_amount
customList[2].value = res.year_total_num
customList[3].value = res.year_total_amount
}
getCustom()

View File

@ -20,23 +20,23 @@ import { apistatisticssubcontractingContract } from '@/api/statistics'
const customList = reactive([
{
name: "客户总数",
name: "总金额",
value: 3
},
{
name: "今年增加",
name: "洽商金额",
value: 3
},
{
name: "今年增加",
name: "合同总数",
value: 3
},
{
name: "今年增加",
name: "年度合同金额",
value: 3
},
{
name: "今年增加",
name: "年度合同数",
value: 3
}
])

View File

@ -2,7 +2,7 @@
<el-card style="width: 49.9%;">
<template #header>
<div class="card-header">
<span>我的投标</span>
<span>项目投标</span>
</div>
</template>
<div style="display: flex;justify-content: space-around;">
@ -20,26 +20,27 @@ import { apistatisticsbidding } from '@/api/statistics'
const customList = reactive([
{
name: "客户总数",
name: "投标决策",
value: 3
},
{
name: "今年增加",
name: "购买标书",
value: 3
},
{
name: "今年增加",
name: "标书审查",
value: 3
},
{
name: "今年增加",
name: "未退保证金额",
value: 3
},
{
name: "今年增加",
name: "中标项目",
value: 3
}
])

View File

@ -2,7 +2,7 @@
<el-card style="width: 49.9%;">
<template #header>
<div class="card-header">
<span>我的客户</span>
<span>项目合同</span>
</div>
</template>
<div style="display: flex;justify-content: space-around;">
@ -20,23 +20,23 @@ import { apistatisticscontracts } from '@/api/statistics'
const customList = reactive([
{
name: "客户总数",
name: "合同金额",
value: 3
},
{
name: "今年增加",
name: "洽商金额",
value: 3
},
{
name: "今年增加",
name: "合同总数",
value: 3
},
{
name: "今年增加",
name: "年度合同金额",
value: 3
},
{
name: "今年增加",
name: "年度合同总数",
value: 3
},
])

View File

@ -2,14 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules" inline>
<!-- <el-steps :active="2" align-center style="margin-bottom: 30px;">
<el-step title="销售发起" />
<el-step title="商务部技术部" />
<el-step title="财务部" />
<el-step title="事业部总工" />
<el-step title="事业部总经理审批" />
<el-step title="销售副总" />
</el-steps> -->
<el-row>
<el-col :span="8">
<el-form-item label="标书编号" prop="buy_bidding_document_id" @click="showDialog = true"

View File

@ -2,12 +2,7 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="销售" />
<el-step title="事业部总经理" />
<el-step title="财务负责人" />
<el-step title="出纳" />
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">
<el-col :span="8">

View File

@ -40,7 +40,8 @@
<el-col :span="12">
<el-form-item label="图例说明">
<div v-if="formData.file && formData.file.length > 0"> <material-picker v-model="formData.file" /></div>
<div v-if="formData.file && formData.file.length > 0"> <img :src="item.uri"
v-for="item in formData.file" style="width:200px" /></div>
<div v-else>暂无文件</div>
</el-form-item>
</el-col>
@ -112,10 +113,18 @@
<el-table-column label="施工汇报单号" prop="report_code" show-overflow-tooltip />
<el-table-column label="填报人" prop="add_user_name" show-overflow-tooltip />
<el-table-column label="填报日期" prop="create_time" show-overflow-tooltip />
<el-table-column label="现场照片" prop="process_step_no" show-overflow-tooltip>
<el-table-column label="现场照片" prop="process_step_no">
<template #default="{ row }">
<div v-if="row.scene_file && row.scene_file.length > 0"> <material-picker v-model="row.scene_file" /></div>
<div v-if="row.scene_file && row.scene_file.length > 0">
<!--
<material-picker
v-model="row.scene_file" /> -->
<img v-for="item in row.scene_file" :src="item" style="width:50px">
<!-- {{ row.scene_file }} -->
</div>
<div v-else>暂无文件</div>
</template>
</el-table-column>
@ -129,7 +138,9 @@
</div>
<div class="flex justify-end mt-4">
<el-pagination v-model:current-page="pager1.page" v-model:page-size="pager1.size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="totalnum1" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
<el-pagination v-model:current-page="pager1.page" v-model:page-size="pager1.size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="totalnum1"
@size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
<div style="margin:10px 0">人工明细</div>
@ -138,11 +149,11 @@
<el-table-column label="施工汇报单号" prop="report_code" show-overflow-tooltip />
<el-table-column label="日期" prop="report_date" 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="person_work_type_text" show-overflow-tooltip />
<el-table-column label="姓名" prop="user_name" show-overflow-tooltip />
<el-table-column label="身份证号" prop="user_idcard" show-overflow-tooltip />
<el-table-column label="工种" prop="user_work_type" show-overflow-tooltip />
<el-table-column label="今日完工量" prop="work_num" show-overflow-tooltip />
<el-table-column label="单位" prop="unit" show-overflow-tooltip />
<el-table-column label="单价" prop="price" show-overflow-tooltip />
<el-table-column label="金额" prop="amount" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
@ -150,7 +161,9 @@
</el-table>
</div>
<div class="flex justify-end mt-4">
<el-pagination v-model:current-page="pager.page" v-model:page-size="pager.size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="totalnum" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
<el-pagination v-model:current-page="pager.page" v-model:page-size="pager.size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="totalnum"
@size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
</el-form>
</popup>
@ -164,6 +177,10 @@ import Popup from '@/components/popup/index.vue'
import { apiCustomDetail } from '@/api/custom'
import { buildreportsDetail, buildpersonsDetail } from '@/api/build/build_plan'
import { timeFormat } from '@/utils/util'
import { buildreportLists } from "@/api/build/build_report.ts"
import { buildreportDetaillists } from "@/api/build/build_report_detail.ts"
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -198,7 +215,7 @@ const queryParams = reactive({
})
//
const buildpersons = async (id: any) => {
const data = await buildpersonsDetail({
const data = await buildreportDetaillists({
plan_id: id,
page_no: pager1.page,
page_size: pager1.size,
@ -230,7 +247,7 @@ const handleCurrentChange1 = (val: number) => {
}
//
const buildreports = async (id: any) => {
const data = await buildreportsDetail({
const data = await buildreportLists({
plan_id: id,
page_no: pager.page,
page_size: pager.size,

View File

@ -34,9 +34,15 @@
</el-col>
<el-col :span="24" v-if="anneximg && anneximg.length > 0">
<el-form-item label="图例说明">
<div v-if="anneximg && anneximg.length > 0">
<!-- <div v-if="anneximg && anneximg.length > 0">
<material-picker v-model="anneximg" />
</div>
<div v-else>暂无图例</div> -->
<div v-if="formData.file?.length > 0">
<img :src="item.uri" v-for="item in formData.file" style="width:200px" />
</div>
<div v-else>暂无图例</div>
</el-form-item>
@ -211,6 +217,7 @@ const formData = reactive({
price: "",
amount: "",
workload: "",
file: ""
})

View File

@ -19,7 +19,8 @@
</template>
新增
</el-button>
<el-button v-perms="['build.build_process_settings/delete']" :disabled="!selectData.length" @click="handleDelete(selectData)">
<el-button v-perms="['build.build_process_settings/delete']" :disabled="!selectData.length"
@click="handleDelete(selectData)">
删除
</el-button>
@ -36,9 +37,9 @@
<el-table-column label="质量控制点" prop="quality_control_points" show-overflow-tooltip />
<el-table-column label="图例说明" prop="file" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.file && row.file.length > 0">
<div v-for="(item, i) in row.file " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item.uri" target="_blank">文件{{ i + 1 }}</el-link>
</div>
</div>
<div v-else>
@ -49,10 +50,12 @@
</el-table-column>
<el-table-column label="操作" width="150" fixed="right">
<template #default="{ row }">
<el-button v-perms="['build.build_process_settings/edit']" type="primary" link @click="handleEdit(row)">
<el-button v-perms="['build.build_process_settings/edit']" type="primary" link
@click="handleEdit(row)">
编辑
</el-button>
<el-button v-perms="['build.build_process_settings/delete']" type="danger" link @click="handleDelete(row.id)">
<el-button v-perms="['build.build_process_settings/delete']" type="danger" link
@click="handleDelete(row.id)">
删除
</el-button>
<el-button v-perms="['build.build_process_settings/detail']" link @click="handledetail(row)">

View File

@ -5,6 +5,8 @@
<el-form ref="formRef" :model="formData" label-width="120px">
<el-card class="mb-2">
<el-row>
<el-col :span="12">
<el-form-item label="作业编码">
{{ formData.zy_code }}

View File

@ -39,7 +39,8 @@
<el-col :span="24">
<el-form-item label="图例说明">
<div v-if="process_file && process_file.length > 0">
<material-picker v-model="process_file" />
<!-- <material-picker v-model="item.uri"/> -->
<img v-for="item in process_file" :src="item.uri" style="width:100px" />
</div>
<div v-else>暂无图例</div>
@ -153,27 +154,28 @@
<el-row>
<el-col :span="8">
<el-form-item label="今日完工量" prop="remark">
<el-input v-model="today_workload" type="num" readonly clearable placeholder="请输入今日完工量" />
<el-input v-model="formData.report_workload" type="num" readonly clearable
placeholder="请输入今日完工量" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位" prop="unit">
<el-input v-model="unit" readonly clearable placeholder="请输入单位" />
<el-input v-model="unit" clearable placeholder="请输入单位" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单价" prop="remark">
<el-input v-model="price" readonly clearable placeholder="请输入单价" />
<el-input v-model="price" clearable placeholder="请输入单价" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="金额" prop="remark">
<el-input v-model="amount" readonly clearable placeholder="请输入金额" />
<el-input v-model="formData.report_amount" readonly clearable placeholder="请输入金额" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="现场照片" prop="file">
<material-picker v-model="formData.file" :limit="100" />
<material-picker v-model="formData.scene_file" :limit="100" />
</el-form-item>
</el-col>
<el-col :span="24">
@ -202,7 +204,7 @@ import customDialog from '@/components/project_personnel/index.vue'
import type { FormInstance } from 'element-plus'
import Popup from '@/components/popup/index.vue'
import buildplanDialog from '@/components/build_plan/index.vue'
import { watch } from "vue"
import { buildreportAdd, buildreportEdit, buildreportDetail } from '@/api/build/build_report'
import { toChinesNum } from "@/utils/util";
@ -264,8 +266,11 @@ const customEvent2 = (e: any) => {
work_content.value = e.work_content
process_step_no.value = e.process_step_no
process_step.value = e.process_step
process_file.value = e.file
quality_control_points.value = e.quality_control_points
residue_workload.value = e.residue_workload
unit.value = e.unit
price.value = e.price
if (e.file && e.file.length > 0) {
process_file.value = e.file
}
@ -285,6 +290,30 @@ const tableData = ref([
{},
]);
//
const getAmount = () => {
// formData.report_amount
}
watch(tableData.value, () => {
formData.report_workload = 0
tableData.value.forEach(item => {
formData.report_workload += Number(item.work_num) || 0
});
formData.report_amount = price.value * formData.report_workload
})
const handleAdd = (row) => {
// row
const index = tableData.value.indexOf(row);
@ -300,9 +329,7 @@ const handleDelete = (row) => {
//
const amouttol = (e) => {
today_workload.value = tableData.value.reduce((total, item) => {
return total + parseInt(item.work_num);
}, 0);
}
@ -323,8 +350,10 @@ const popupTitle = computed(() => {
const formData = reactive({
id: '',
plan_id: '',
file: [],
scene_file: [],
remark: '',
report_workload: "",
report_amount: "",
person_detail: [],
})
@ -382,10 +411,7 @@ const getDetail = async (row: Record<string, any>) => {
//
const handleSubmit = async () => {
if (formDataannex.length > 0) {
formData.file = formDataannex.map((item: any) => item.uri)
}
formData.file = formDataannex.map((item: any) => item.uri)
if (tableData.value.length > 0) {
formData.person_detail = tableData.value.map(({ name1, name2, name3, ...rest }) => rest)
}

View File

@ -13,14 +13,7 @@
</div>
<el-card class="mb-2">
<!-- <div class="tit">客户基本资料</div> -->
<div class="tit">
<el-steps :active="active" finish-status="success">
<el-step title="会计" />
<el-step title="财务负责人" />
<el-step title="总经理" />
</el-steps>
</div>
<el-row>
<el-col :span="8">
@ -490,6 +483,7 @@ defineExpose({
:deep(.my-label) {
width: 150px;
}</style>
}
</style>

View File

@ -13,14 +13,7 @@
</div>
<el-card class="mb-2">
<!-- <div class="tit">客户基本资料</div> -->
<div class="tit">
<el-steps :active="active" finish-status="success">
<el-step title="会计" />
<el-step title="财务负责人" />
<el-step title="总经理" />
</el-steps>
</div>
<el-row>
<el-col :span="8">
@ -495,6 +488,7 @@ defineExpose({
:deep(.my-label) {
width: 150px;
}</style>
}
</style>

View File

@ -13,14 +13,7 @@
</div>
<el-card class="mb-2">
<!-- <div class="tit">客户基本资料</div> -->
<div class="tit">
<el-steps :active="active" finish-status="success">
<el-step title="会计" />
<el-step title="财务负责人" />
<el-step title="总经理" />
</el-steps>
</div>
<el-row>
<el-col :span="8">
@ -495,6 +488,7 @@ defineExpose({
:deep(.my-label) {
width: 150px;
}</style>
}
</style>

View File

@ -2,14 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="发起人" />
<el-step title="部门领导审核
" />
<el-step title="财务负责人审核" />
<el-step title="总经理审批
" />
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">
<el-col :span="8">

View File

@ -13,14 +13,7 @@
</div>
<el-card class="mb-2">
<!-- <div class="tit">客户基本资料</div> -->
<div class="tit">
<el-steps :active="active" finish-status="success">
<el-step title="会计" />
<el-step title="财务负责人" />
<el-step title="总经理" />
</el-steps>
</div>
<el-row>
<el-col :span="8">
@ -490,6 +483,7 @@ defineExpose({
:deep(.my-label) {
width: 150px;
}</style>
}
</style>

View File

@ -13,14 +13,7 @@
</div>
<el-card class="mb-2">
<!-- <div class="tit">客户基本资料</div> -->
<div class="tit">
<el-steps :active="active" finish-status="success">
<el-step title="会计" />
<el-step title="财务负责人" />
<el-step title="总经理" />
</el-steps>
</div>
<el-row>
<el-col :span="8">
@ -495,6 +488,7 @@ defineExpose({
:deep(.my-label) {
width: 150px;
}</style>
}
</style>

View File

@ -13,13 +13,15 @@
<el-option v-for="(item, index) in imaterialList" :key="index" :label="item.name" :value="item.id" />
</el-select> -->
<el-cascader :props="props" clearable v-model="formData.pid" :show-all-levels="false" />
<el-cascader :props="props" clearable v-model="formData.pid" :show-all-levels="false"
placeholder="为空默认为顶级分类" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="分类名称" prop="name" :rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<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>
@ -79,14 +81,23 @@ const props = {
async lazyLoad(node: any, resolve: any) {
if (node.level == 0) {
apimaterialLists({ page_no: 1, page_size: 9999 }).then((res) => {
// console.log(res)
// res.lists.unshift({
// "id": -1,
// "pid": 0,
// "name": ""
// })
let nodes = res.lists.map((item: any) => ({
value: item.id,
label: item.name
}))
formData.pid[0] == 0 ? nodes = [{ value: 0, label: "顶级分类" }] : ""
resolve(nodes)
})
} else {
}
else {
apimaterialDatas({ 'pid': node.value })
.then((res) => {
@ -97,6 +108,8 @@ const props = {
}));
// resolve
resolve(nodes);
console.log(nodes, "nodes")
})
.catch((error) => {
console.log(error);
@ -116,6 +129,9 @@ const formRules = reactive<any>({
//
const setFormData = async (data: Record<any, any>) => {
// data.all_pid = data.all_pid.pop()
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
@ -125,15 +141,16 @@ const setFormData = async (data: Record<any, any>) => {
if (data.all_pid && data.all_pid.length > 0) {
const data1 = data.all_pid.reverse()
data1.push(data.id)
console.log(data1, '11111')
formData.pid = data1
} else {
const data1 = data.all_pid
data1.push(data.id)
formData.pid = data1
}
formData.pid.pop()
if (!formData.pid.length) {
formData.pid = [0]
}
}
@ -150,8 +167,10 @@ const handleSubmit = async () => {
if (formData.pid.length > 0) {
formData.pid = formData.pid[formData.pid.length - 1]
}
console.log(formData)
await formRef.value?.validate()
if (!formData.pid) formData.pid = 0
console.log(formData, "form")
const data = { ...formData }
mode.value == 'edit'
? await apimaterialEdit(data)

View File

@ -25,10 +25,14 @@
<el-input v-model="project_code" clearable disabled placeholder="系统自动填写" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="希望到货日期" prop="arrival_date"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-date-picker class="flex-1 !flex" v-model="formData.arrival_date" clearable type="date"
value-format="YYYY-MM-DD " placeholder="选择希望到货日期">
</el-date-picker>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" type="textarea" clearable placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :span="8">
@ -41,16 +45,13 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="希望到货日期" prop="arrival_date"
:rules="[{ required: true, message: '不可为空', trigger: 'change' }]">
<el-date-picker class="flex-1 !flex" v-model="formData.arrival_date" clearable type="date"
value-format="YYYY-MM-DD " placeholder="选择希望到货日期">
</el-date-picker>
<el-col :span="12">
<el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" type="textarea" clearable placeholder="请输入备注" />
</el-form-item>
</el-col>
<el-col :span="24">
<!-- <el-form-item label="附件" prop="annex">
<el-input v-model="formData.annex" clearable placeholder="请输入附件" />
@ -122,7 +123,10 @@
<template #default="{ row }">
<el-input v-model="row.material_unit" disabled /> </template>
</el-table-column>
<el-table-column label="可申购数量" prop="residual_num">
<template #default="{ row }">
<el-input v-model="row.residual_num" disabled /> </template>
</el-table-column>
<el-table-column label="申请采购数量" prop="num">
<template #default="{ row }">
@ -263,7 +267,8 @@ const customEvent = (e: any) => {
'material_specs': e.material_specs,
'material_parameter_description': e.material_parameter_description,
'material_brand': e.material_brand,
'material_unit': e.material_unit
'material_unit': e.material_unit,
residual_num: e.residual_num
})
showDialog.value = false;
};
@ -272,6 +277,7 @@ const customEvent1 = (e: any) => {
project_name.value = e.name;
project_code.value = e.project_code;
showDialog1.value = false;
tablist1.splice(0, 99999)
};
//
const popupTitle = computed(() => {

View File

@ -28,7 +28,6 @@
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="流程步骤" prop="customer_name" show-overflow-tooltip />
<el-table-column label="采购申请单号" prop="material_purchase_request_code" show-overflow-tooltip />
<el-table-column label="项目编码" prop="project_code" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />

View File

@ -2,14 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="销售发起" description="Some description" />
<el-step title="事业部销售总监" description="Some description" />
<el-step title="财务负责人" description="Some description" />
<el-step title="事业部副总经理审批" description="Some description" />
<el-step title="事业部总经理审批" description="Some description" />
<el-step title="销售副总" description="Some description" />
</el-steps>
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">

View File

@ -0,0 +1,102 @@
<template>
<myTable :baseData="baseData"></myTable>
<myTable :baseData="baseData2"></myTable>
<myTable :baseData="baseData3"></myTable>
<myTable :baseData="baseData4"></myTable>
<myTable :baseData="baseData5"></myTable>
</template>
<script setup>
import { ref, reactive, defineProps } from "vue"
import myTable from "./myTable.vue"
import { apiProjectTripApplyLists } from "@/api/project_trip_apply.ts"
import { apiProjectLoanApplyLists } from '@/api/project_loan_apply'
import { apiProjectCostAdjustmentLists } from '@/api/project_cost_adjustment'
import { apiProjectTravelReimbursementLists } from '@/api/project_travel_reimbursement'
import { apiProjectExpenseReimbursementLists } from '@/api/project_expense_reimbursement'
const props = defineProps({
project_id: Number
})
const baseData = reactive({
fetchFun: apiProjectTripApplyLists,
tit: "出差申请",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '申请单号', prop: 'trip_apply_code' },
{ label: '出差起始地', prop: 'origin_address' },
{ label: '出差目的地', prop: 'target_address' },
{ label: '交通工具', prop: 'traffic_text' },
{ label: '出差时间', prop: 'start_date' },
{ label: '结束时间', prop: 'end_date' },
{ label: '出差事由', prop: 'reason' },
{ label: '历时天数', prop: 'days' },
{ label: '备注', prop: 'remark' },
]
})
const baseData2 = reactive({
fetchFun: apiProjectLoanApplyLists,
tit: "借款申请",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '借款单号', prop: 'loan_apply_code' },
{ label: '借款人', prop: 'apply_user' },
{ label: '借款申请日期', prop: 'loan_date' },
{ label: '借款金额', prop: 'loan_amount' },
{ label: '收款人姓名', prop: 'payee_name' },
{ label: '收款银行', prop: 'payee_bank' },
{ label: '收款账号', prop: 'payee_account' },
{ label: '备注', prop: 'remark' },
]
})
const baseData3 = reactive({
fetchFun: apiProjectCostAdjustmentLists,
tit: "成本调整",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '项目名称', prop: 'project_name' },
{ label: '项目编码', prop: 'project_code' },
{ label: '调整日期', prop: 'adjust_date' },
{ label: '调整金额', prop: 'adjust_amount' },
{ label: '备注', prop: 'remark' },
]
})
const baseData4 = reactive({
fetchFun: apiProjectTravelReimbursementLists,
tit: "差旅报销",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '出差申请单编号', prop: 'trip_reimbursement_code' },
{ label: '报销类型', prop: 'reimbursement_type' },
{ label: '借款单编号', prop: 'loan_apply_code' },
{ label: '借款金额', prop: 'loan_amount' },
{ label: '冲抵借款金额', prop: 'offset_loan_amount' },
{ label: '付款金额', prop: 'pay_amount' },
{ label: '报销人', prop: 'apply_user' },
{ label: '报销日期', prop: 'apply_date' },
{ label: '备注', prop: 'remark' },
]
})
const baseData5 = reactive({
fetchFun: apiProjectExpenseReimbursementLists,
tit: "费用报销",
queryParams: { project_id: props.project_id },
columnList: [
{ label: '费用报销单号', prop: 'expense_reimbursement_code' },
{ label: '报销人', prop: 'apply_user' },
{ label: '报销日期', prop: 'apply_date' },
{ label: '报销类型', prop: 'reimbursement_type' },
{ label: '借款单编号', prop: 'loan_apply_code' },
{ label: '借款金额', prop: 'loan_amount' },
{ label: '报销金额', prop: 'total_amount' },
{ label: '付款金额', prop: 'pay_amount' },
{ label: '本次冲抵借款金额', prop: 'offset_loan_amount' },
{ label: '备注', prop: 'remark' },
]
})
</script>

View File

@ -1,6 +1,6 @@
<template>
<div class="tit" v-if="baseData.tit">{{ baseData.tit }}</div>
<el-table :data="pager.lists" style="width: 100%">
<el-table :data="pager.lists" style="width: 80vw">
<el-table-column :label="item.label" :prop='item.prop' width="180" v-for="(item, index) in baseData.columnList"
:key="index" />
</el-table>
@ -33,7 +33,7 @@ getLists()
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
// :deep(.my-label) {
// width: 150px;
// }
</style>

View File

@ -1,7 +1,7 @@
<template>
<div class="detail-popup">
<popup ref="popupRef" title="项目立项详情" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<popup ref="popupRef" title="项目立项详情" :async="true" width="80vw" @confirm="handleSubmit" @close="handleClose">
<el-form ref="formRef" :model="formData" label-width="auto">
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="概况" name="demo-1">
@ -48,206 +48,11 @@
<documentation v-if="activeName == 'demo-16'" :project_id="project_id"></documentation>
</el-tab-pane>
<!-- <el-tab-pane label="人力" name="demo-12">
<el-tabs v-model="active" class="demo-tabs">
<el-tab-pane label="项目人员" name="first-1">
<div>
<el-table :data="tableData12" stripe style="width: 100%">
<el-table-column label="姓名" prop='name' width="180" />
<el-table-column label="身份证号" prop='idcard' width="180" />
<el-table-column label="手机号" prop='mobile' />
<el-table-column label="工种" prop='work_type_text' />
<el-table-column label="人工单价" prop='unit_price' />
<el-table-column label="每日生活费" prop=' ' />
<el-table-column label="期初收入" prop='opening_income' />
<el-table-column label="日结收入" prop='daily_income' />
<el-table-column label="完工量收入" prop='work_income' />
<el-table-column label="总收入" prop='total_income' />
<el-table-column label="总支出" prop='pay_out' />
<el-table-column label="余额" prop='balance' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager12.page_no"
v-model:page-size="pager12.page_size" :page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper" :total="total11"
@size-change="handleSizeChange12" @current-change="handleCurrentChange12" />
</div>
</el-tab-pane>
<el-tab-pane label="劳动合同" name="first-2">
<div>
<el-table :data="tableData13" stripe style="width: 100%">
<el-table-column label="姓名" prop='project_name' width="180" />
<el-table-column label="身份证号" prop='person_idcard' width="180" />
<el-table-column label="合同状态" prop='contract_status_text' />
<el-table-column label="合同类别" prop='contract_type_text' />
<el-table-column label="合同名称" prop='contract_title_text' />
<el-table-column label="合同签定日期" prop='signing_date' />
<el-table-column label="起始时间" prop='start_date' />
<el-table-column label="终止时间" prop='end_date' />
<el-table-column label="备注" prop='remark' />
<el-table-column label="合同附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager13.page_no"
v-model:page-size="pager13.page_size" :page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper" :total="total12"
@size-change="handleSizeChange13" @current-change="handleCurrentChange13" />
</div>
</el-tab-pane>
<el-tab-pane label="保险记录" name="first-3">
<div>
<el-table :data="tableData14" stripe style="width: 100%">
<el-table-column label="姓名" prop='project_name' width="180" />
<el-table-column label="身份证号" prop='person_idcard' width="180" />
<el-table-column label="投保日期" prop='insurance_date' />
<el-table-column label="到期日期" prop='due_date' />
<el-table-column label="保险种类" prop='type_text' />
<el-table-column label="保单号" prop='insurance_no' />
<el-table-column label="投保金额(万元)" prop='insured_amount' />
<el-table-column label="保险公司" prop='insurance_company' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager14.page_no"
v-model:page-size="pager14.page_size" :page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper" :total="total13"
@size-change="handleSizeChange14" @current-change="handleCurrentChange14" />
</div>
</el-tab-pane>
<el-tab-pane label="项目考勤" name="first-4">
<div>
<el-table :data="tableData15" stripe style="width: 100%">
<el-table-column label="日记工单号" prop='attendance_code' width="180" />
<el-table-column label="日期" prop='attendance_date' width="180" />
<el-table-column label="出勤人数" prop='competitor_contacts_phone' />
<el-table-column label="记工数量 " prop='work_record_num_total' />
<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='remark' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager15.page_no"
v-model:page-size="pager15.page_size" :page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper" :total="total14"
@size-change="handleSizeChange15" @current-change="handleCurrentChange15" />
</div>
</el-tab-pane>
<el-tab-pane label="考勤明细" name="first-5">
<div>
<el-table :data="tableData16" stripe style="width: 100%">
<el-table-column label="日记工单号" prop='attendance_code' width="180" />
<el-table-column label="日期" prop='attendance_date' width="180" />
<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="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>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager16.page_no"
v-model:page-size="pager16.page_size" :page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper" :total="total15"
@size-change="handleSizeChange16" @current-change="handleCurrentChange16" />
</div>
</el-tab-pane>
<el-tab-pane label="工资付款" name="first-6">
<div>
<el-table :data="tableData17" stripe style="width: 100%">
<el-table-column label="工资付款单号" prop='payment_code' width="180" />
<el-table-column label="日期" prop='apply_date' width="180" />
<el-table-column label="姓名" prop='person_name' />
<el-table-column label="身份证号" prop='person_idcard' />
<el-table-column label="工种" prop='person_work_type_text' />
<el-table-column label="总收入" prop='total_income' />
<el-table-column label="总支出" prop='total_pay_out' />
<el-table-column label="未发放" prop='balance' />
<el-table-column label="本次付款金额" prop='apply_amount' />
<el-table-column label="备注" prop='remark' />
</el-table>
</div>
<div style="margin: 20px 0;">
<el-pagination v-model:current-page="pager17.page_no"
v-model:page-size="pager17.page_size" :page-sizes="[10, 20, 30, 40]"
layout="total, sizes, prev, pager, next, jumper" :total="total16"
@size-change="handleSizeChange17" @current-change="handleCurrentChange17" />
</div>
</el-tab-pane>
</el-tabs>
</el-tab-pane> -->
<!-- <el-tab-pane label="计划" name="demo-6">Config</el-tab-pane>
<el-tab-pane label="材料" name="demo-7">Role</el-tab-pane>
<el-tab-pane label="进度" name="demo-10">Role</el-tab-pane>
<el-tab-pane label="任务" name="demo-11">Task</el-tab-pane>
<el-tab-pane label="机具" name="demo-13">Task</el-tab-pane>
<el-tab-pane label="费用" name="demo-16">Task</el-tab-pane>
<el-tab-pane label="文档" name="demo-17">Task</el-tab-pane>
<el-tab-pane label="结算" name="demo-18">Task</el-tab-pane> -->
<!-- <el-tab-pane label="售后" name="demo-19">
<div>
<el-table :data="tableData18" stripe style="width: 100%">
<el-table-column label="工单编号" prop='custom_service_code' width="180" />
<el-table-column label="合同编号" prop='contract_code' width="180" />
<el-table-column label="投诉主题" prop='name' />
<el-table-column label="日期" prop='date' />
<el-table-column label="分类" prop='classification' />
<el-table-column label="是否解决" prop='is_solve_text' />
<el-table-column label="解决日期" prop='done_date' />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager18.page_no" v-model:page-size="pager18.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
:total="total17" @size-change="handleSizeChange18"
@current-change="handleCurrentChange18" />
</div>
<el-tab-pane label="费用" name="demo-17">
<expenses v-if="activeName == 'demo-17'" :project_id="project_id"></expenses>
</el-tab-pane>
<el-tab-pane label="统计" name="demo-20">Task</el-tab-pane> -->
</el-tabs>
</el-form>
@ -281,6 +86,7 @@ import manpower from "./components/manpower.vue"
import Collection from "./components/Collection.vue"
import payment from "./components/payment.vue"
import documentation from "./components/documentation.vue"
import expenses from "./components/expenses.vue"
// import manpower from "./components/manpower.vue"
@ -1138,8 +944,4 @@ defineExpose({
font-size: 1.2em;
margin-bottom: 10px;
}
:deep(.my-label) {
width: 150px;
}
</style>

View File

@ -2,10 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="提交委任书" />
<el-step title="项目经理确认" />
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">

View File

@ -2,11 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="项目经理提交" />
<el-step title="事业部总工审核" />
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">

View File

@ -2,12 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="项目经理" />
<el-step title="项目总监" />
<el-step title="财务总监" />
<el-step title="总经理" />
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<div style="display: flex; flex-direction: row-reverse; justify-content: flex-start;margin-bottom: 30px;">
<el-select class="w-[180px]" v-model="formData.dept_id" clearable placeholder="请选择部门">

View File

@ -2,12 +2,6 @@
<div class="edit-popup">
<popup ref="popupRef" :title="popupTitle" :async="true" width="80%" @confirm="handleSubmit" @close="handleClose">
<!-- <el-steps :active="active" align-center style="margin-bottom: 20px;">
<el-step title="商务部发起" />
<el-step title="商务总监" />
<el-step title="财务经理" />
<el-step title="总经理" />
</el-steps> -->
<el-form ref="formRef" :model="formData" label-width="auto" :rules="formRules">
<el-row :gutter="10">

View File

@ -28,17 +28,14 @@
<el-table :data="pager.lists" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" />
<!-- <el-table-column label="流程步骤" prop="" show-overflow-tooltip /> -->
<!-- <el-table-column label="流程编号" prop="" 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="contract_name" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="签订日期" prop="signing_date" show-overflow-tooltip />
<el-table-column label="合同类型" prop="contract_type" show-overflow-tooltip />
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
<!-- <el-table-column label="税率" prop="tax_rate" show-overflow-tooltip /> -->
<el-table-column label="洽商金额" prop="negotiation_amount" show-overflow-tooltip />
<el-table-column label="不含税金额" prop="excluding_tax_amount" show-overflow-tooltip />
<el-table-column label="实际合同金额" prop="reality_contract_amount" show-overflow-tooltip />

View File

@ -6,43 +6,52 @@
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="基本信息" name="demo-tabs-1">
<el-descriptions title="基本信息" :column="2" border>
<el-descriptions-item label="组织名称" label-align="left" align="left" label-class-name="my-label">{{ formData.org_name }}</el-descriptions-item>
<el-descriptions-item label="部门名称" label-align="left" align="left" label-class-name="my-label">{{ formData.dept_name }}</el-descriptions-item>
<el-descriptions-item label="供应商简介" label-align="left" align="left" label-class-name="my-label">{{ formData.supplier_introduction }}</el-descriptions-item>
<el-descriptions-item label="供应商分组" label-align="left" align="left" label-class-name="my-label"> {{ formData.supplier_group_text }}</el-descriptions-item>
<el-descriptions-item label="供应商分类" label-align="left" align="left" label-class-name="my-label"> {{ formData.supplier_category_text }}</el-descriptions-item>
<el-descriptions-item label="组织名称" label-align="left" align="left"
label-class-name="my-label">{{ formData.org_name }}</el-descriptions-item>
<el-descriptions-item label="部门名称" label-align="left" align="left"
label-class-name="my-label">{{ formData.dept_name }}</el-descriptions-item>
<el-descriptions-item label="供应商简介" label-align="left" align="left"
label-class-name="my-label">{{ formData.supplier_introduction }}</el-descriptions-item>
<el-descriptions-item label="供应商分组" label-align="left" align="left" label-class-name="my-label">
{{ formData.supplier_group_text }}</el-descriptions-item>
<el-descriptions-item label="供应商分类" label-align="left" align="left" label-class-name="my-label">
{{ formData.supplier_category_text }}</el-descriptions-item>
<el-descriptions-item label="供应商等级" label-align="left" align="left" label-class-name="my-label">
{{ formData.supplier_grade_text }}
</el-descriptions-item>
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label"> {{ formData.contacts
}}</el-descriptions-item>
<el-descriptions-item label="性别" label-align="left" align="left" label-class-name="my-label"> {{ formData.contacts_sex_text
<el-descriptions-item label="联系人" label-align="left" align="left" label-class-name="my-label">
{{ formData.contacts
}}</el-descriptions-item>
<el-descriptions-item label="性别" label-align="left" align="left" label-class-name="my-label"> {{
formData.contacts_sex_text
}}</el-descriptions-item>
<el-descriptions-item label="出生日期" label-align="left" align="left" label-class-name="my-label"> {{ formData.birthday }}</el-descriptions-item>
<el-descriptions-item label="出生日期" label-align="left" align="left" label-class-name="my-label">
{{ formData.birthday }}</el-descriptions-item>
<el-descriptions-item label="联系电话" label-align="left" align="left" label-class-name="my-label"> {{ formData.phone
<el-descriptions-item label="联系电话" label-align="left" align="left" label-class-name="my-label">
{{ formData.phone
}}</el-descriptions-item>
<el-descriptions-item label="邮箱" label-align="left" align="left" label-class-name="my-label"> {{ formData.email
}}</el-descriptions-item>
<el-descriptions-item label="邮箱" label-align="left" align="left" label-class-name="my-label"> {{
formData.email
}}</el-descriptions-item>
<el-descriptions-item label="地址" label-align="left" align="left" label-class-name="my-label"> {{ formData.address
<el-descriptions-item label="地址" label-align="left" align="left" label-class-name="my-label"> {{
formData.address
}}</el-descriptions-item>
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{ formData.remark
<el-descriptions-item label="备注" label-align="left" align="left" label-class-name="my-label"> {{
formData.remark
}}</el-descriptions-item>
<el-descriptions-item label="附件" label-align="left" align="left" label-class-name="my-label">
<div v-if="formData.annex.length > 0">
<div v-if="formData?.annex?.length > 0">
<div v-for="(item, index) in formData.annex" style="margin-left: 5px;display: block;">
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start" :href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
<el-link style="margin-left: 10px; color: #4a5dff; align-self: flex-start"
:href="item" target="_blank">文件{{ index + 1 }}查看</el-link>
</div>
</div>
<div v-else>
@ -51,188 +60,185 @@
</el-descriptions-item>
</el-descriptions>
<el-descriptions title="开票信息" border style="margin:20px 0">
<el-descriptions-item label="开票公司名称" label-align="left" align="left" label-class-name="my-label">{{ formData.invoice_company_name }}</el-descriptions-item>
<el-descriptions-item label="纳税人识别号" label-align="left" align="left" label-class-name="my-label">{{ formData.taxpayer_identification_number }}</el-descriptions-item>
<el-descriptions-item label="开户银行" label-align="left" align="left" label-class-name="my-label">{{ formData.bank_name }}</el-descriptions-item>
<el-descriptions-item label="开户名称" label-align="left" align="left" label-class-name="my-label"> {{ formData.bank_accnout_name }}</el-descriptions-item>
<el-descriptions-item label="账号" label-align="left" align="left" label-class-name="my-label"> {{ formData.bank_account }}</el-descriptions-item>
<el-descriptions-item label="开票公司名称" label-align="left" align="left"
label-class-name="my-label">{{ formData.invoice_company_name }}</el-descriptions-item>
<el-descriptions-item label="纳税人识别号" label-align="left" align="left"
label-class-name="my-label">{{ formData.taxpayer_identification_number
}}</el-descriptions-item>
<el-descriptions-item label="开户银行" label-align="left" align="left"
label-class-name="my-label">{{ formData.bank_name }}</el-descriptions-item>
<el-descriptions-item label="开户名称" label-align="left" align="left" label-class-name="my-label">
{{ formData.bank_accnout_name }}</el-descriptions-item>
<el-descriptions-item label="账号" label-align="left" align="left" label-class-name="my-label"> {{
formData.bank_account }}</el-descriptions-item>
<el-descriptions-item label="开户地址" label-align="left" align="left" label-class-name="my-label">
{{ formData.bank_address }}
</el-descriptions-item>
<el-descriptions-item label="期初未开票金额" label-align="left" align="left" label-class-name="my-label"> {{ formData.init_invoice_amount
}}</el-descriptions-item>
<el-descriptions-item label="期初未开票金额" label-align="left" align="left"
label-class-name="my-label"> {{ formData.init_invoice_amount
}}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="账期管理" border style="margin:20px 0">
<el-descriptions-item label="授信额度" label-align="left" align="left" label-class-name="my-label">{{ formData.credit_limit }}</el-descriptions-item>
<el-descriptions-item label="账期" label-align="left" align="left" label-class-name="my-label">{{ formData.account_period }}</el-descriptions-item>
<el-descriptions-item label="账单日" label-align="left" align="left" label-class-name="my-label">{{ }}</el-descriptions-item>
<el-descriptions-item label="期初账户余额" label-align="left" align="left" label-class-name="my-label"> {{ }}</el-descriptions-item>
<el-descriptions-item label="授信额度" label-align="left" align="left"
label-class-name="my-label">{{ formData.credit_limit }}</el-descriptions-item>
<el-descriptions-item label="账期" label-align="left" align="left" label-class-name="my-label">{{
formData.account_period }}</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="价格" name="demo-tabs-2">
<div>
<el-table :data="tableData" stripe style="width: 100%">
<el-table-column label="解决方案主题" prop='customer_demand_name' width="180" />
<el-table-column label="提交时间" prop='submission_time' width="180" />
<el-table-column label="方案内容" prop='solution_content' />
<el-table-column label="客户反馈" prop='customer_feedback' />
<el-table-column label="附件" prop="annex" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.annex && row.annex.length > 0">
<div v-for="(item, i) in row.annex " :key='i'>
<el-link :href="item" target="_blank">文件{{ i + 1 }}查看</el-link>
</div>
</div>
<div v-else>
暂无文件
</div>
</template>
</el-table-column>
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager1.page_no" v-model:page-size="pager1.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange1" @current-change="handleCurrentChange1" />
</div>
</el-tab-pane>
<el-tab-pane label="合同" name="demo-tabs-3">
<div class="tit">采购合同</div>
<div>
<el-table :data="tableData1" stripe style="width: 100%">
<el-table-column label="合同编号" prop='estimate_source_text' width="180" />
<el-table-column label="签订日期" prop='create_user' width="180" />
<el-table-column label="合同金额" prop='quotation_date' />
<el-table-column label="已付款金额" prop='technician_name' width="180" />
<el-table-column label="实际合同金额" prop='estimate_amount' width="180" />
<el-table-column label="已开票金额" prop='ask' />
<el-table-column label="未付款金额" prop='ask' />
<el-table-column label="未开票金额" prop='ask' />
<el-table-column label="序号" type="index" width="55" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="合同名称" prop="contract_name" show-overflow-tooltip />
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="合同类型" prop="contract_type" show-overflow-tooltip />
<el-table-column label="签订日期" prop="signing_date" show-overflow-tooltip />
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
<el-table-column label="已付款金额" prop="has_pay_amount" show-overflow-tooltip />
<el-table-column label="已开票金额" prop="has_invoice_amount" show-overflow-tooltip />
<el-table-column label="未付款金额" prop="not_pay_amount" show-overflow-tooltip />
<el-table-column label="未开票金额" prop="not_invoice_amount" show-overflow-tooltip />
<el-table-column label="退款金额" prop="refund_amount" show-overflow-tooltip />
<el-table-column label="已入库数量" prop="has_storage_num" show-overflow-tooltip />
<el-table-column label="未入库数量" prop="not_storage_num" show-overflow-tooltip />
<el-table-column label="数量" prop="num" show-overflow-tooltip />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager2.page_no" v-model:page-size="pager2.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total1" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />
<el-pagination v-model:current-page="pager2.page_no" v-model:page-size="pager2.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
:total="total1" @size-change="handleSizeChange2" @current-change="handleCurrentChange2" />
</div>
<div class="tit">分包合同</div>
<div>
<el-table :data="tableData2" stripe style="width: 100%">
<el-table-column label="合同编号" prop='estimate_source_text' width="180" />
<el-table-column label="签订日期" prop='create_user' width="180" />
<el-table-column label="合同金额 " prop='quotation_date' />
<el-table-column label="洽商金额" prop='technician_name' width="180" />
<el-table-column label="实际合同金额" prop='estimate_amount' width="180" />
<el-table-column label="已付款" prop='ask' />
<el-table-column label="未付款" prop='ask' />
<el-table-column label="已开票" prop='ask' />
<el-table-column label="未开票" prop='ask' />
<el-table-column label="结算差异" prop='ask' />
<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="contract_name" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="签订日期" prop="signing_date" show-overflow-tooltip />
<el-table-column label="合同类型" prop="contract_type" show-overflow-tooltip />
<el-table-column label="合同金额" prop="contract_amount" show-overflow-tooltip />
<el-table-column label="洽商金额" prop="negotiation_amount" show-overflow-tooltip />
<el-table-column label="不含税金额" prop="excluding_tax_amount" show-overflow-tooltip />
<el-table-column label="实际合同金额" prop="reality_contract_amount" show-overflow-tooltip />
<el-table-column label="已付款金额" prop="has_pay_amount" show-overflow-tooltip />
<el-table-column label="未付款金额" prop="not_pay_amount" show-overflow-tooltip />
<el-table-column label="已开票金额" prop="invoice_amount" show-overflow-tooltip />
<el-table-column label="未开票金额" prop="not_invoice_amount" show-overflow-tooltip />
<el-table-column label="已退款金额" prop="refund_amount" show-overflow-tooltip />
<el-table-column label="结算差异" prop="settlement_difference" show-overflow-tooltip />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager3.page_no" v-model:page-size="pager3.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total2" @size-change="handleSizeChange3" @current-change="handleCurrentChange3" />
</div>
<div class="tit">行政合同</div>
<div>
<el-table :data="tableData3" stripe style="width: 100%">
<el-table-column label="合同编号" prop='estimate_source_text' width="180" />
<el-table-column label="签约日期" prop='create_user' width="180" />
<el-table-column label="付款方式" prop='quotation_date' />
<el-table-column label="合同金额" prop='technician_name' width="180" />
<el-table-column label="已付款" prop='estimate_amount' width="180" />
<el-table-column label="未付款" prop='ask' />
<el-table-column label="已开票" prop='ask' />
<el-table-column label="未开票" prop='ask' />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager4.page_no" v-model:page-size="pager4.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total3" @size-change="handleSizeChange4" @current-change="handleCurrentChange4" />
<el-pagination v-model:current-page="pager3.page_no" v-model:page-size="pager3.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
:total="total2" @size-change="handleSizeChange3" @current-change="handleCurrentChange3" />
</div>
</el-tab-pane>
<el-tab-pane label="票" name="demo-tabs-4">
<el-tab-pane label="收票" name="demo-tabs-4">
<div class="tit">采购/分包发票</div>
<div>
<el-table :data="tableData4" stripe style="width: 100%">
<el-table-column label="项目名称" prop='competitor_name' width="180" />
<el-table-column label="合同编号" prop='competitor_contacts' width="180" />
<el-table-column label="收票日期" prop='competitor_contacts_phone' />
<el-table-column label="发票税率" prop='competitive_power' />
<el-table-column label="发票金额 " prop='competitor_advantages' />
<el-table-column label="不含税金额" prop='competitor_disadvantages' />
<el-table-column label="发票类型" prop='remark' />
<el-table-column type="selection" width="55" />
<el-table-column label="序号" type="index" width="55" />
<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="contract_type">
<template #default="{ row }">
{{ row.contract_type == 1 ? "采购合同" : "分包合同" }}
</template>
</el-table-column>
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="收票日期" prop="receipt_date" show-overflow-tooltip />
<el-table-column label="开票日期" prop="invoicing_date" show-overflow-tooltip />
<el-table-column label="提交人" prop="commitor" show-overflow-tooltip />
<el-table-column label="发票税率" prop="invoice_tax_rate_text" show-overflow-tooltip>
<template #default="{ row }">
{{ row.invoice_tax_rate_text }}%
</template>
</el-table-column>
<el-table-column label="发票金额" prop="invoice_amount" show-overflow-tooltip />
<el-table-column label="不含税金额" prop="amount_excluding_tax" show-overflow-tooltip />
<el-table-column label="税额" prop="tax_amount" show-overflow-tooltip />
<el-table-column label="发票类型" prop="invoice_type">
<template #default="{ row }">
{{ row.invoice_type_text }}
</template>
</el-table-column>
<el-table-column label="发票编号" prop="invoice_no" show-overflow-tooltip />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager5.page_no" v-model:page-size="pager5.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total4" @size-change="handleSizeChange5" @current-change="handleCurrentChange5" />
<el-pagination v-model:current-page="pager5.page_no" v-model:page-size="pager5.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
:total="total4" @size-change="handleSizeChange5" @current-change="handleCurrentChange5" />
</div>
<div class="tit">行政采购发票</div>
<div>
<el-table :data="tableData5" stripe style="width: 100%">
<el-table-column label="合同编号" prop='competitor_name' width="180" />
<el-table-column label="收票日期" prop='competitor_contacts' width="180" />
<el-table-column label="开票日期" prop='competitor_contacts_phone' />
<el-table-column label="发票税率" prop='competitive_power' />
<el-table-column label="发票类型" prop='competitor_advantages' />
<el-table-column label="发票金额" prop='competitor_disadvantages' />
<el-table-column label="不含税金额" prop='remark' />
<el-table-column label="税额" prop='remark' />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager6.page_no" v-model:page-size="pager6.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total5" @size-change="handleSizeChange6" @current-change="handleCurrentChange6" />
</div>
</el-tab-pane>
<el-tab-pane label="付款" name="demo-tabs-5">
<div class="tit">付款计划</div>
<div>
<el-table :data="tableData6" stripe style="width: 100%">
<el-table-column label="合同编号" prop='competitor_name' width="180" />
<el-table-column label="计划付款日期" prop='competitor_contacts' width="180" />
<el-table-column label="期次" prop='competitor_contacts_phone' />
<el-table-column label="状态" prop='competitive_power' />
<el-table-column label="金额" prop='competitor_advantages' />
<el-table-column label="已付款" prop='competitor_disadvantages' />
<el-table-column label="未付款" prop='remark' />
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
<el-table-column label="计划付款日期" prop="pay_date" show-overflow-tooltip />
<el-table-column label="金额" prop="amount" show-overflow-tooltip />
<el-table-column label="期次" prop="period" show-overflow-tooltip>
<template #default="{ row }">
{{ row.period_text }}
</template>
</el-table-column>
<el-table-column label="已付款" prop="has_payment_amount" show-overflow-tooltip />
<el-table-column label="未付款" prop="not_payment_amount" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager7.page_no" v-model:page-size="pager7.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total6" @size-change="handleSizeChange7" @current-change="handleCurrentChange7" />
<el-pagination v-model:current-page="pager7.page_no" v-model:page-size="pager7.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
:total="total7" @size-change="handleSizeChange7" @current-change="handleCurrentChange7" />
</div>
<div class="tit">采购/分包付款</div>
<div>
<el-table :data="tableData7" stripe style="width: 100%">
<el-table-column label="付款单号" prop='competitor_name' width="180" />
<el-table-column label="合同编号" prop='competitor_contacts' width="180" />
<el-table-column label="项目名称" prop='competitor_contacts_phone' />
<el-table-column label="期次" prop='competitive_power' />
<el-table-column label="付款日期" prop='competitor_advantages' />
<el-table-column label="付款性质" prop='competitor_disadvantages' />
<el-table-column label="申请人" prop='remark' />
<el-table-column label="付款金额" prop='remark' />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager8.page_no" v-model:page-size="pager8.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total7" @size-change="handleSizeChange8" @current-change="handleCurrentChange8" />
</div>
<div class="tit">行政付款</div>
<div class="tit">付款申请</div>
<div>
<el-table :data="tableData8" stripe style="width: 100%">
<el-table-column label="付款单号" prop='competitor_name' width="180" />
<el-table-column label="合同编号" prop='competitor_contacts' width="180" />
<el-table-column label="联系人电话" prop='competitor_contacts_phone' />
<el-table-column label="申请日期" prop='competitive_power' />
<el-table-column label="申请人" prop='competitor_advantages' />
<el-table-column label="竞争对手劣势" prop='competitor_disadvantages' />
<el-table-column label="合同金额" prop='remark' />
<el-table-column label="合计已付款" prop='remark' />
<el-table-column label="本次支付金额" prop='remark' />
<el-table-column label="序号" type="index" width="55" />
<el-table-column label="付款单号" prop="payment_apply_code" show-overflow-tooltip />
<el-table-column label="供应商名称" prop="supplier_name" show-overflow-tooltip />
<el-table-column label="项目名称" prop="project_name" show-overflow-tooltip />
<el-table-column label="合同编号" prop="contract_no" show-overflow-tooltip />
<el-table-column label="付款日期" prop="pay_date" show-overflow-tooltip />
<el-table-column label="付款金额" prop="amount" show-overflow-tooltip />
<el-table-column label="付款方式" prop="pay_type" show-overflow-tooltip>
<template #default="{ row }">
{{ row.pay_type_text }}
</template>
</el-table-column>
<el-table-column label="付款性质" prop="payment_natrue" show-overflow-tooltip>
<template #default="{ row }">
{{ row.payment_nature_text }}
</template>
</el-table-column>
<el-table-column label="期次" prop="period" show-overflow-tooltip>
<template #default="{ row }">
{{ row.period }}
</template>
</el-table-column>
<el-table-column label="申请人" prop="apply_user" show-overflow-tooltip />
<el-table-column label="备注" prop="remark" show-overflow-tooltip />
</el-table>
</div>
<div style="margin: 10px 0;">
<el-pagination v-model:current-page="pager9.page_no" v-model:page-size="pager9.page_size" :page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper" :total="total8" @size-change="handleSizeChange9" @current-change="handleCurrentChange9" />
<el-pagination v-model:current-page="pager8.page_no" v-model:page-size="pager8.page_size"
:page-sizes="[10, 20, 30, 40]" layout="total, sizes, prev, pager, next, jumper"
:total="total8" @size-change="handleSizeChange8" @current-change="handleCurrentChange8" />
</div>
</el-tab-pane>
</el-tabs>
@ -250,10 +256,14 @@ import { apiCustomerDemandSolutionLists } from '@/api/customer_demand_solution'
import { apiProjectEstimateLists } from '@/api/project_estimate'
import { apiCompetitorLists } from '@/api/competitor'
import { timeFormat } from '@/utils/util'
import { apiProcurementContractLists } from "@/api/procurement_contract.ts"
import { apiSubcontractingContractLists } from "@/api/subcontracting_contract.ts"
import { apifinancereceiptLists } from "@/api/receiptrecord.ts"
import { paymentplanLists } from "@/api/paymentplan.ts"
import { paymentapplyLists } from '@/api/paymentrequest'
import type { TabsPaneContext } from 'element-plus'
const activeName = ref('demo-tabs-1')
import type { PropType } from 'vue'
defineProps({
dictData: {
@ -262,61 +272,46 @@ defineProps({
}
})
const pager1 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
})
const pager2 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
supplier_id: ""
})
const pager3 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
})
const pager4 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
supplier_id: ""
})
const pager5 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
})
const pager6 = reactive({
const pager4 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
supplier_id: ""
})
const pager7 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
supplier_id: ""
})
const pager8 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
supplier_id: ""
})
const pager9 = reactive({
page_size: 10,
page_no: 1,
customer_demand_id: ""
})
const total = ref(0)
const total1 = ref(0)
const total2 = ref(0)
const total3 = ref(0)
const total4 = ref(0)
const total5 = ref(0)
const total6 = ref(0)
const total7 = ref(0)
const total8 = ref(0)
@ -330,11 +325,13 @@ const datas = reactive({
cityOptions: [],
areaOptions: [],
});
const tableData = ref([])
const tableData1 = ref([])
const tableData2 = ref([])
const tableData4 = ref([])
const tableData6 = ref([])
const tableData8 = ref([])
const handleClick = (tab: TabsPaneContext, event: Event) => {
console.log(tab, event)
}
//
const formData = reactive({
@ -343,11 +340,7 @@ const formData = reactive({
//
const handleSizeChange1 = (val: number) => {
pager1.page_size = val
solutionLists()
}
const handleSizeChange2 = (val: number) => {
pager2.page_size = val
@ -358,21 +351,13 @@ const handleSizeChange3 = (val: number) => {
pager3.page_size = val
competitorLists()
}
const handleSizeChange4 = (val: number) => {
pager4.page_size = val
competitorLists()
}
const handleSizeChange5 = (val: number) => {
pager5.page_size = val
competitorLists()
financereceiptecordLists()
}
const handleSizeChange6 = (val: number) => {
pager6.page_size = val
competitorLists()
}
const handleSizeChange7 = (val: number) => {
pager7.page_size = val
@ -383,17 +368,9 @@ const handleSizeChange8 = (val: number) => {
pager8.page_size = val
competitorLists()
}
const handleSizeChange9 = (val: number) => {
page9.page_size = val
competitorLists()
}
//
const handleCurrentChange1 = (val: number) => {
console.log(`current page: ${val}`)
pager1.page_no = val
solutionLists()
}
const handleCurrentChange2 = (val: number) => {
console.log(`current page: ${val}`)
pager2.page_no = val
@ -404,40 +381,27 @@ const handleCurrentChange3 = (val: number) => {
console.log(`current page: ${val}`)
competitorLists()
}
const handleCurrentChange4 = (val: number) => {
pager4.page_no = val
console.log(`current page: ${val}`)
competitorLists()
}
const handleCurrentChange5 = (val: number) => {
pager5.page_no = val
console.log(`current page: ${val}`)
competitorLists()
}
const handleCurrentChange6 = (val: number) => {
pager6.page_no = val
console.log(`current page: ${val}`)
competitorLists()
}
const handleCurrentChange7 = (val: number) => {
pager7.page_no = val
console.log(`current page: ${val}`)
competitorLists()
getpaymentplanLists()
}
const handleCurrentChange8 = (val: number) => {
pager8.page_no = val
console.log(`current page: ${val}`)
competitorLists()
}
const handleCurrentChange9 = (val: number) => {
pager9.page_no = val
console.log(`current page: ${val}`)
competitorLists()
getpaymentapplyLists()
}
//
const solutionLists = () => {
apiCustomerDemandSolutionLists(pager1).then((res) => {
@ -450,7 +414,7 @@ const solutionLists = () => {
//
const estimateLists = () => {
apiProjectEstimateLists(pager2).then((res) => {
apiProcurementContractLists(pager2).then((res) => {
tableData1.value = res.lists
total1.value = res.count
})
@ -458,21 +422,46 @@ const estimateLists = () => {
//
const competitorLists = () => {
apiCompetitorLists(pager3).then((res) => {
apiSubcontractingContractLists(pager3).then((res) => {
tableData2.value = res.lists
total2.value = res.count
})
}
//
const financereceiptecordLists = () => {
apifinancereceiptLists(pager4).then((res) => {
tableData4.value = res.lists
total4.value = res.count
})
}
//
const getpaymentplanLists = () => {
paymentplanLists(pager7).then((res) => {
tableData6.value = res.lists
total7.value = res.count
})
}
// //
const getpaymentapplyLists = () => {
paymentapplyLists(pager8).then((res) => {
tableData8.value = res.lists
total8.value = res.count
console.log(tableData8.value, 4545454)
})
}
//
const setFormData = async (data: Record<any, any>) => {
Object.assign(formData, data)
pager1.customer_demand_id = data.id
pager2.customer_demand_id = data.id
pager3.customer_demand_id = data.id
pager2.supplier_id = data.id
pager3.supplier_id = data.id
pager4.supplier_id = data.id
pager7.supplier_id = data.id
pager8.supplier_id = data.id
if (data.annex && data.annex.length > 0) {
const arry1 = data.annex.map((item: any, index: any) => {
return {
@ -483,8 +472,10 @@ const setFormData = async (data: Record<any, any>) => {
Object.assign(formDataannex, arry1)
}
competitorLists()
solutionLists()
estimateLists()
financereceiptecordLists()
getpaymentplanLists()
getpaymentapplyLists()
}
const getDetail = async (row: Record<string, any>) => {
@ -503,7 +494,6 @@ const handleSubmit = async () => {
//
const open = () => {
console.log('1111111')
popupRef.value?.open()
}

View File

@ -28,31 +28,55 @@
</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"
:rules="[{ required: true, message: '不可为空', trigger: 'blur' }]">
<el-input v-model="formData.supplier_name" 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="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="supplier_photos">
<material-picker v-model="formData.supplier_photos" />
</el-form-item></el-col>
<!-- <material-picker v-model="formData.supplier_photos" /> -->
<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_four1" ref="upload">
<el-button type="primary">
上传
</el-button>
</el-upload>
<div>
<div v-for="(item, index) in formData.supplier_photos"
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="delFileFn1(index)">x</span>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="供应商分组" label-width="130px" prop="supplier_group">
<el-radio-group v-model="formData.supplier_group" placeholder="请选择供应商分组">
@ -262,6 +286,28 @@ const handleAvatarSuccess_four = (
const delFileFn = (index: number) => {
formDataannex.splice(index, 1)
}
//
const handleAvatarSuccess_four1 = (
response,
uploadFile
) => {
if (response.code == 0) {
ElMessage.error(response.msg);
return;
}
formData.supplier_photos.push(
{ uri: response.data.uri, name: response.data.name }
);
};
//
const delFileFn1 = (index: number) => {
formData.supplier_photos.splice(index, 1)
}
//
const customEvent = (e: any) => {
formData.project_id = e.id;

View File

@ -5,11 +5,7 @@
<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">