zoie 2 долоо хоног өмнө
parent
commit
ea423d50a9

+ 14 - 0
src/api/projectFiling/index.ts

@@ -0,0 +1,14 @@
+import $http from '../index'
+
+/**
+ * 项目备案
+ */
+// 项目备案列表
+export const ProjectFiling_List = (params: any) => $http.post('/storage/ProjectFiling/List', params)
+export const ProjectFiling_User_List = (params: any) => $http.post('/storage/ProjectFiling/User_List', params)
+// 项目备案添加
+export const ProjectFiling_Add = (params: any) => $http.post('/storage/ProjectFiling/Add', params)
+// 项目备案修改
+export const ProjectFiling_Edit = (params: any) => $http.post('/storage/ProjectFiling/Edit', params)
+// 项目备案删除
+export const ProjectFiling_Del = (params: any) => $http.post('/storage/ProjectFiling/Del', params)

+ 3 - 0
src/api/storehouse/index.ts

@@ -129,6 +129,7 @@ export const readValidation = (params: any) => $http.post('/storage/validationTo
 export const updateValidation = (params: any) => $http.post('/storage/validationTool/updateValidation', params,)
 export const uploadFile = (params: any) => $http.post('/storage/validationTool/ImportExcel', params,)
 export const exportFile = (params: any) => $http.post('/storage/validationTool/exportExcel', params, { responseType: 'blob' })
+export const exportOperationFile = (params: any) => $http.post('/storage/validationTool/exportOperationExcel', params, { responseType: 'blob' })
 // 左侧用户列表
 export const validation_User_List = (params: any) => $http.post('/storage/validationTool/user/list', params)
 export const validationTool_class_list = (params: any) => $http.post('/storage/validationTool/class/list', params)
@@ -212,6 +213,8 @@ export const Storehouse_VerifyContract_Del = (params: any) => $http.post('/stora
 //回款列表
 export const Storehouse_VerifyContract_Recover_List = (params: any) =>
   $http.post('/storage/RecoveriesContract/List', params)
+export const Storehouse_VerifyContract_Recover_User_List = (params: any) =>
+	$http.post('/storage/RecoveriesContract/User/List', params)
 //导出
 export const Storehouse_VerifyContract_Recover_Export = (params: any) =>
 	$http.post('/storage/RecoveriesContract/Export', params)

+ 325 - 0
src/views/projectFiling/ProjectFiling.vue

@@ -0,0 +1,325 @@
+<script setup lang="ts">
+import {
+	ProjectFiling_Add,
+	ProjectFiling_Del,
+	ProjectFiling_Edit,
+	ProjectFiling_User_List
+} from '@/api/projectFiling/index'
+import {nextTick, reactive, ref} from 'vue'
+import Upload from '@/components/Upload/index.vue'
+import Drawer from '@/components/Drawer/index.vue'
+import TableBase from '@/components/TableBase/index.vue'
+import type {FormInstance, FormRules} from 'element-plus'
+import {ElMessage, ElMessageBox} from 'element-plus'
+import {Delete, Edit} from '@element-plus/icons-vue'
+import type {ColumnProps} from '@/components/TableBase/interface/index'
+import {useTablePublic} from '@/hooks/useTablePublic'
+
+const isNew = ref(true)
+const formLabelWidth = ref('120px')
+const ruleFormRef = ref<FormInstance>()
+const drawerRef = ref<InstanceType<typeof Drawer> | null>(null)
+const TableRef = ref<InstanceType<typeof TableBase> | null>(null)
+const uploadRef = ref<InstanceType<typeof Upload> | null>(null)
+const {resetForm, globalStore, searchOnTableList, updateOnTableList} = useTablePublic()
+
+const columns: ColumnProps[] = [
+	{type: 'index', label: '序号', width: 80},
+	{prop: 'T_date', label: '备案时间'},
+	{prop: 'T_sales_personnel', label: '销售人员'},
+	{prop: 'T_customers', label: '客户名称'},
+	{prop: 'T_customers_type', label: '客户类型'},
+	{prop: 'T_service_type', label: '服务类型'},
+	{prop: 'T_content', label: '具体内容'},
+	{prop: 'T_estimate_contract_amount', label: '预计合同金额'},
+	{prop: 'T_sign_bill_time', label: '预计签单时间'},
+	{prop: 'T_prepare_content', label: '提前准备内容'},
+	{prop: 'T_remark', label: '备注'},
+	{prop: 'operation', label: '操作', width: 150, fixed: 'right'}
+]
+
+const rules = reactive<FormRules>({
+	T_date: [{required: true, message: '请输入备案时间', trigger: 'blur'}],
+	T_sales_personnel: [{required: true, message: '请输入销售人员', trigger: 'blur'}],
+	T_customers: [{required: true, message: '请输入客户名称', trigger: 'blur'}],
+})
+const form: any = ref({
+	T_id: '',
+	T_date: '',
+	T_sales_personnel: '',
+	T_customers: '',
+	T_customers_type: '',
+	T_service_type: '',
+	T_content: '',
+	T_estimate_contract_amount: '',
+	T_sign_bill_time: '',
+	T_prepare_content: '',
+	T_remark: '',
+})
+
+const openDrawer = (type: string, row?: any) => {
+	isNew.value = type === 'new' ? true : false
+	if (type == 'edit') {
+		form.value.T_id = row.Id
+		form.value.T_date = row.T_date
+		form.value.T_sales_personnel = row.T_sales_personnel
+		form.value.T_customers = row.T_customers
+		form.value.T_customers_type = row.T_customers_type
+		form.value.T_service_type = row.T_service_type
+		form.value.T_content = row.T_content
+		form.value.T_estimate_contract_amount = row.T_estimate_contract_amount
+		form.value.T_sign_bill_time = row.T_sign_bill_time
+		form.value.T_prepare_content = row.T_prepare_content
+		form.value.T_remark = row.T_remark
+	} else {
+		delete form.value.T_id
+		form.value.T_date = ''
+		form.value.T_sales_personnel = ''
+		form.value.T_customers = ''
+		form.value.T_customers_type = ''
+		form.value.T_service_type = ''
+		form.value.T_content = ''
+		form.value.T_estimate_contract_amount = ''
+		form.value.T_sign_bill_time = ''
+		form.value.T_prepare_content = ''
+		form.value.T_remark = ''
+
+	}
+	drawerRef.value?.openDrawer()
+}
+
+const AddProduction = (formEl: FormInstance | undefined) => {
+	if (!formEl) return
+	formEl.validate(async (valid: boolean) => {
+		if (valid) {
+			let res: any = {}
+			if (isNew.value) {//新增
+				res = await ProjectFiling_Add({User_tokey: globalStore.GET_User_tokey, ...form.value})
+			} else {//编辑
+				res = await ProjectFiling_Edit({
+					User_tokey: globalStore.GET_User_tokey,
+					...form.value,
+				})
+			}
+			if (res.Code === 200) {
+				ElMessage.success(`项目备案${isNew.value ? '添加' : '修改'}成功!!`)
+				nextTick(() => {
+					drawerRef.value?.closeDrawer()
+					updateOnTableList(TableRef.value)
+					resetForm(ruleFormRef.value)
+					isNew.value = true
+				})
+			}
+		}
+	})
+}
+
+const ProductDelete = (row: any) => {
+	ElMessageBox.confirm('您确定要删除该项目备案吗?', '警告', {
+		confirmButtonText: '确定',
+		cancelButtonText: '取消',
+		type: 'warning'
+	})
+		.then(async () => {
+			const res: any = await ProjectFiling_Del({
+				User_tokey: globalStore.GET_User_tokey,
+				T_id: row.Id
+			})
+			if (res.Code === 200) {
+				ElMessage.success('删除成功!')
+				nextTick(() => updateOnTableList(TableRef.value))
+			}
+		})
+		.catch(() => {
+			ElMessage.warning('取消成功!')
+		})
+}
+
+const callbackDrawer = (done: () => void) => {
+	resetForm(ruleFormRef.value)
+	uploadRef.value?.clearfileList()
+	done()
+}
+// 搜索
+const initParam = reactive({
+	User_tokey: globalStore.GET_User_tokey,
+	T_sales_personnel: '',
+	T_customers: ''
+})
+
+const options = ref<any[]>([
+	{
+		value: '医药公司',
+		label: '医药公司',
+	},
+	{
+		value: '连锁药店',
+		label: '连锁药店',
+	},
+	{
+		value: '疾控中心',
+		label: '疾控中心',
+	},
+	{
+		value: '医院',
+		label: '医院',
+	},
+	{
+		value: '药厂',
+		label: '药厂',
+	},
+])
+const options2 = ref<any[]>([
+	{
+		value: '传统业务',
+		label: '传统业务',
+	},
+	{
+		value: '创新业务',
+		label: '创新业务',
+	}
+])
+</script>
+
+<template>
+	<div class="production-list">
+		<TableBase ref="TableRef" :columns="columns" :requestApi="ProjectFiling_User_List" :initParam="initParam">
+			<template #table-header>
+				<div class="input-suffix">
+					<el-row :gutter="20" style="margin-bottom: 0">
+						<el-col :xl="6" :lg="8" :md="10">
+							<span class="inline-flex items-center">销售人员:</span>
+							<el-input
+								v-model="initParam.T_sales_personnel"
+								type="text"
+								class="w-50 m-2"
+								placeholder="按销售人员搜索"
+								@change="searchOnTableList(TableRef)"
+							/>
+						</el-col>
+						<el-col :xl="6" :lg="8" :md="10">
+							<span class="inline-flex items-center">客户名称:</span>
+							<el-input
+								v-model="initParam.T_customers"
+								type="text"
+								class="w-50 m-2"
+								placeholder="按客户名称搜索"
+								@change="searchOnTableList(TableRef)"
+							/>
+							<el-button type="primary" @click="searchOnTableList(TableRef)">搜索</el-button>
+
+						</el-col>
+						<el-col :xl="6" :md="2" class="btn"
+						>
+							<el-button type="primary" @click="openDrawer('new')">添加</el-button>
+						</el-col
+						>
+					</el-row>
+				</div>
+			</template>
+			<template #right="{ row }">
+				<el-button link type="primary" size="small" :icon="Edit" @click="openDrawer('edit', row)">编辑
+				</el-button>
+				<el-button link type="danger" size="small" :icon="Delete" @click="ProductDelete(row)">删除</el-button>
+			</template>
+		</TableBase>
+		<Drawer ref="drawerRef" :handleClose="callbackDrawer">
+			<template #header="{ params }">
+				<h4 :id="params.titleId" :class="params.titleClass">{{ isNew ? '添加' : '编辑' }} - 项目备案</h4>
+			</template>
+			<el-form ref="ruleFormRef" :model="form" :rules="rules">
+
+				<el-form-item label="备案时间:" :label-width="formLabelWidth" prop="T_date">
+					<el-date-picker
+						style="flex: 0 0 60%"
+						class="my-date-picker"
+						v-model="form.T_date"
+						type="date"
+						placeholder="备案时间"
+						format="YYYY-MM-DD"
+						value-format="YYYY-MM-DD"
+					/>
+				</el-form-item>
+				<el-form-item label="销售人员:" :label-width="formLabelWidth" prop="T_sales_personnel">
+					<el-input class="w-50" v-model="form.T_sales_personnel" type="text" autocomplete="off"
+							  placeholder="请填写销售人员"/>
+				</el-form-item>
+				<el-form-item label="客户名称:" :label-width="formLabelWidth" prop="T_customers">
+					<el-input class="w-50" v-model="form.T_customers" type="text" autocomplete="off"
+							  placeholder="请填写客户名称"/>
+				</el-form-item>
+				<el-form-item label="客户类型:" :label-width="formLabelWidth" prop="T_customers_type">
+					<el-select class="w-50" v-model="form.T_customers_type" clearable filterable allow-create :reserve-keyword="false" placeholder="请填写客户类型">
+						<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"/>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="服务类型:" :label-width="formLabelWidth" prop="T_service_type">
+					<el-select class="w-50" v-model="form.T_service_type" clearable filterable allow-create :reserve-keyword="false" placeholder="请填写服务类型">
+						<el-option v-for="item in options2" :key="item.value" :label="item.label" :value="item.value"/>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="具体内容:" :label-width="formLabelWidth" prop="T_content">
+					<el-input class="w-50" v-model="form.T_content" type="text" autocomplete="off"
+							  placeholder="请填写具体内容"/>
+				</el-form-item>
+				<el-form-item label="预计合同金额:" :label-width="formLabelWidth"
+							  prop="T_estimate_contract_amount">
+					<el-input class="w-50" v-model="form.T_estimate_contract_amount" type="text" autocomplete="off"
+							  placeholder="请填写预计合同金额"/>
+				</el-form-item>
+				<el-form-item label="预计签单时间:" :label-width="formLabelWidth" prop="T_sign_bill_time">
+					<el-input class="w-50" v-model="form.T_sign_bill_time" type="text" autocomplete="off"
+							  placeholder="请填写预计签单时间"/>
+				</el-form-item>
+				<el-form-item label="提前准备内容:" :label-width="formLabelWidth"
+							  prop="T_prepare_content">
+					<el-input class="w-50" v-model="form.T_prepare_content" type="text" autocomplete="off"
+							  placeholder="请填写提前准备内容"/>
+				</el-form-item>
+				<el-form-item label="备注:" :label-width="formLabelWidth" prop="T_remark">
+					<el-input class="w-50" v-model="form.T_remark" type="text" autocomplete="off"
+							  placeholder="请填写备注"/>
+				</el-form-item>
+
+
+				<el-form-item :label-width="formLabelWidth">
+					<el-button v-if="isNew" color="#626aef" @click="AddProduction(ruleFormRef)">提交</el-button>
+					<el-button v-else color="#626aef" @click="AddProduction(ruleFormRef)">修改</el-button>
+				</el-form-item>
+			</el-form>
+		</Drawer>
+	</div>
+</template>
+
+<style scoped lang="scss">
+@import '@/styles/var.scss';
+
+.tooltip-content {
+	max-width: 500px;
+	overflow-y: auto;
+}
+
+.production-list {
+	@include f-direction;
+
+	.input-suffix {
+		width: 100%;
+
+		.inline-flex {
+			white-space: nowrap;
+		}
+
+		.btn {
+			display: flex;
+			justify-content: end;
+		}
+
+		.w-50 {
+			width: 12.5rem;
+		}
+	}
+	.w-50 {
+		flex: 0 0 60%;
+	}
+}
+</style>

+ 314 - 0
src/views/projectFiling/ProjectFilingManager.vue

@@ -0,0 +1,314 @@
+<script setup lang="ts">
+import {ProjectFiling_Add, ProjectFiling_Del, ProjectFiling_Edit, ProjectFiling_List,} from '@/api/projectFiling/index'
+import {nextTick, reactive, ref} from 'vue'
+import Upload from '@/components/Upload/index.vue'
+import Drawer from '@/components/Drawer/index.vue'
+import TableBase from '@/components/TableBase/index.vue'
+import type {FormInstance, FormRules} from 'element-plus'
+import {ElMessage, ElMessageBox} from 'element-plus'
+import {Delete, Edit} from '@element-plus/icons-vue'
+import type {ColumnProps} from '@/components/TableBase/interface/index'
+import {options3, useTablePublic} from '@/hooks/useTablePublic'
+
+const isNew = ref(true)
+const formLabelWidth = ref('120px')
+const ruleFormRef = ref<FormInstance>()
+const drawerRef = ref<InstanceType<typeof Drawer> | null>(null)
+const TableRef = ref<InstanceType<typeof TableBase> | null>(null)
+const uploadRef = ref<InstanceType<typeof Upload> | null>(null)
+const {resetForm, globalStore, searchOnTableList, updateOnTableList} = useTablePublic()
+
+const columns: ColumnProps[] = [
+	{type: 'index', label: '序号', width: 80},
+	{prop: 'T_date', label: '备案时间'},
+	{prop: 'T_sales_personnel', label: '销售人员'},
+	{prop: 'T_customers', label: '客户名称'},
+	{prop: 'T_customers_type', label: '客户类型'},
+	{prop: 'T_service_type', label: '服务类型'},
+	{prop: 'T_content', label: '具体内容'},
+	{prop: 'T_estimate_contract_amount', label: '预计合同金额'},
+	{prop: 'T_sign_bill_time', label: '预计签单时间'},
+	{prop: 'T_prepare_content', label: '提前准备内容'},
+	{prop: 'T_remark', label: '备注'},
+	{prop: 'operation', label: '操作', width: 150, fixed: 'right'}
+]
+
+const rules = reactive<FormRules>({
+	T_date: [{required: true, message: '请输入备案时间', trigger: 'blur'}],
+	T_sales_personnel: [{required: true, message: '请输入销售人员', trigger: 'blur'}],
+	T_customers: [{required: true, message: '请输入客户名称', trigger: 'blur'}],
+})
+const form: any = ref({
+	T_id: '',
+	T_date: '',
+	T_sales_personnel: '',
+	T_customers: '',
+	T_customers_type: '',
+	T_service_type: '',
+	T_content: '',
+	T_estimate_contract_amount: '',
+	T_sign_bill_time: '',
+	T_prepare_content: '',
+	T_remark: '',
+})
+
+const openDrawer = (type: string, row?: any) => {
+	isNew.value = type === 'new' ? true : false
+	if (type == 'edit') {
+		form.value.T_id = row.Id
+		form.value.T_date                     = row.T_date                    
+		form.value.T_sales_personnel          = row.T_sales_personnel         
+		form.value.T_customers                = row.T_customers               
+		form.value.T_customers_type           = row.T_customers_type          
+		form.value.T_service_type             = row.T_service_type            
+		form.value.T_content                  = row.T_content                 
+		form.value.T_estimate_contract_amount = row.T_estimate_contract_amount
+		form.value.T_sign_bill_time           = row.T_sign_bill_time          
+		form.value.T_prepare_content          = row.T_prepare_content         
+		form.value.T_remark                   = row.T_remark
+	} else {
+		delete form.value.T_id
+		form.value.T_date                     = ''
+		form.value.T_sales_personnel          = ''
+		form.value.T_customers                = ''
+		form.value.T_customers_type           = ''
+		form.value.T_service_type             = ''
+		form.value.T_content                  = ''
+		form.value.T_estimate_contract_amount = ''
+		form.value.T_sign_bill_time           = ''
+		form.value.T_prepare_content          = ''
+		form.value.T_remark                   = ''
+
+	}
+	drawerRef.value?.openDrawer()
+}
+
+const AddProduction = (formEl: FormInstance | undefined) => {
+	if (!formEl) return
+	formEl.validate(async (valid: boolean) => {
+		if (valid) {
+			let res: any = {}
+			if (isNew.value) {//新增
+				res = await ProjectFiling_Add({User_tokey: globalStore.GET_User_tokey, ...form.value})
+			} else {//编辑
+				res = await ProjectFiling_Edit({
+					User_tokey: globalStore.GET_User_tokey,
+					...form.value,
+				})
+			}
+			if (res.Code === 200) {
+				ElMessage.success(`项目备案${isNew.value ? '添加' : '修改'}成功!!`)
+				nextTick(() => {
+					drawerRef.value?.closeDrawer()
+					updateOnTableList(TableRef.value)
+					resetForm(ruleFormRef.value)
+					isNew.value = true
+				})
+			}
+		}
+	})
+}
+
+const ProductDelete = (row: any) => {
+	ElMessageBox.confirm('您确定要删除该项目备案吗?', '警告', {
+		confirmButtonText: '确定',
+		cancelButtonText: '取消',
+		type: 'warning'
+	})
+		.then(async () => {
+			const res: any = await ProjectFiling_Del({
+				User_tokey: globalStore.GET_User_tokey,
+				T_id: row.Id
+			})
+			if (res.Code === 200) {
+				ElMessage.success('删除成功!')
+				nextTick(() => updateOnTableList(TableRef.value))
+			}
+		})
+		.catch(() => {
+			ElMessage.warning('取消成功!')
+		})
+}
+
+const callbackDrawer = (done: () => void) => {
+	resetForm(ruleFormRef.value)
+	uploadRef.value?.clearfileList()
+	done()
+}
+// 搜索
+const initParam = reactive({
+	User_tokey: globalStore.GET_User_tokey,
+	T_sales_personnel: '',
+	T_customers: ''
+})
+
+const options = ref<any[]>([
+	{
+		value: '医药公司',
+		label: '医药公司',
+	},
+	{
+		value: '连锁药店',
+		label: '连锁药店',
+	},
+	{
+		value: '疾控中心',
+		label: '疾控中心',
+	},
+	{
+		value: '医院',
+		label: '医院',
+	},
+	{
+		value: '药厂',
+		label: '药厂',
+	},
+])
+const options2 = ref<any[]>([
+	{
+		value: '传统业务',
+		label: '传统业务',
+	},
+	{
+		value: '创新业务',
+		label: '创新业务',
+	}
+])
+</script>
+
+<template>
+	<div class="production-list">
+		<TableBase ref="TableRef" :columns="columns" :requestApi="ProjectFiling_List" :initParam="initParam">
+			<template #table-header>
+				<div class="input-suffix">
+					<el-row :gutter="20" style="margin-bottom: 0">
+						<el-col :xl="6" :lg="8" :md="10">
+							<span class="inline-flex items-center">销售人员:</span>
+							<el-input
+								v-model="initParam.T_sales_personnel"
+								type="text"
+								class="w-50 m-2"
+								placeholder="按销售人员搜索"
+								@change="searchOnTableList(TableRef)"
+							/>
+						</el-col>
+						<el-col :xl="6" :lg="8" :md="10">
+							<span class="inline-flex items-center">客户名称:</span>
+							<el-input
+								v-model="initParam.T_customers"
+								type="text"
+								class="w-50 m-2"
+								placeholder="按客户名称搜索"
+								@change="searchOnTableList(TableRef)"
+							/>
+							<el-button type="primary" @click="searchOnTableList(TableRef)">搜索</el-button>
+						</el-col>
+					</el-row>
+				</div>
+			</template>
+			<template #right="{ row }">
+				<el-button link type="primary" size="small" :icon="Edit" @click="openDrawer('edit', row)">编辑
+				</el-button>
+				<el-button link type="danger" size="small" :icon="Delete" @click="ProductDelete(row)">删除</el-button>
+			</template>
+		</TableBase>
+		<Drawer ref="drawerRef" :handleClose="callbackDrawer">
+			<template #header="{ params }">
+				<h4 :id="params.titleId" :class="params.titleClass">{{ isNew ? '添加' : '编辑' }} - 项目备案</h4>
+			</template>
+			<el-form ref="ruleFormRef" :model="form" :rules="rules">
+
+				<el-form-item label="备案时间:" :label-width="formLabelWidth" prop="T_date">
+					<el-date-picker
+						style="flex: 0 0 60%"
+						class="my-date-picker"
+						v-model="form.T_date"
+						type="date"
+						placeholder="备案时间"
+						format="YYYY-MM-DD"
+						value-format="YYYY-MM-DD"
+					/>
+				</el-form-item>
+				<el-form-item label="销售人员:" :label-width="formLabelWidth" prop="T_sales_personnel">
+					<el-input class="w-50" v-model="form.T_sales_personnel" type="text" autocomplete="off"
+							  placeholder="请填写销售人员"/>
+				</el-form-item>
+				<el-form-item label="客户名称:" :label-width="formLabelWidth" prop="T_customers">
+					<el-input class="w-50" v-model="form.T_customers" type="text" autocomplete="off"
+							  placeholder="请填写客户名称"/>
+				</el-form-item>
+				<el-form-item label="客户类型:" :label-width="formLabelWidth" prop="T_customers_type">
+					<el-select class="w-50" v-model="form.T_customers_type" clearable filterable allow-create :reserve-keyword="false" placeholder="请填写客户类型">
+						<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"/>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="服务类型:" :label-width="formLabelWidth" prop="T_service_type">
+					<el-select class="w-50" v-model="form.T_service_type" clearable filterable allow-create :reserve-keyword="false" placeholder="请填写服务类型">
+						<el-option v-for="item in options2" :key="item.value" :label="item.label" :value="item.value"/>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="具体内容:" :label-width="formLabelWidth" prop="T_content">
+					<el-input class="w-50" v-model="form.T_content" type="text" autocomplete="off"
+							  placeholder="请填写具体内容"/>
+				</el-form-item>
+				<el-form-item label="预计合同金额:" :label-width="formLabelWidth"
+							  prop="T_estimate_contract_amount">
+					<el-input class="w-50" v-model="form.T_estimate_contract_amount" type="text" autocomplete="off"
+							  placeholder="请填写预计合同金额"/>
+				</el-form-item>
+				<el-form-item label="预计签单时间:" :label-width="formLabelWidth" prop="T_sign_bill_time">
+					<el-input class="w-50" v-model="form.T_sign_bill_time" type="text" autocomplete="off"
+							  placeholder="请填写预计签单时间"/>
+				</el-form-item>
+				<el-form-item label="提前准备内容:" :label-width="formLabelWidth"
+							  prop="T_prepare_content">
+					<el-input class="w-50" v-model="form.T_prepare_content" type="text" autocomplete="off"
+							  placeholder="请填写提前准备内容"/>
+				</el-form-item>
+				<el-form-item label="备注:" :label-width="formLabelWidth" prop="T_remark">
+					<el-input class="w-50" v-model="form.T_remark" type="text" autocomplete="off"
+							  placeholder="请填写备注"/>
+				</el-form-item>
+
+
+				<el-form-item :label-width="formLabelWidth">
+					<el-button v-if="isNew" color="#626aef" @click="AddProduction(ruleFormRef)">提交</el-button>
+					<el-button v-else color="#626aef" @click="AddProduction(ruleFormRef)">修改</el-button>
+				</el-form-item>
+			</el-form>
+		</Drawer>
+	</div>
+</template>
+
+<style scoped lang="scss">
+@import '@/styles/var.scss';
+
+.tooltip-content {
+	max-width: 500px;
+	overflow-y: auto;
+}
+
+.production-list {
+	@include f-direction;
+
+	.input-suffix {
+		width: 100%;
+
+		.inline-flex {
+			white-space: nowrap;
+		}
+
+		.btn {
+			display: flex;
+			justify-content: end;
+		}
+
+		.w-50 {
+			width: 12.5rem;
+		}
+	}
+	.w-50 {
+		flex: 0 0 60%;
+	}
+}
+</style>

+ 39 - 9
src/views/storehouse/ValidationTool/validation.vue

@@ -9,7 +9,7 @@ import {
 	validation_List,
 	validation_update,
 	validationTool_class_list,
-	validation_recordList, validation_operationList
+	validation_recordList, validation_operationList, exportOperationFile
 } from '@/api/storehouse'
 import TableBase from '@/components/TableBase/index.vue'
 import {computed, nextTick, onMounted, reactive, ref} from 'vue'
@@ -82,8 +82,8 @@ const recordColumns: ColumnProps[] = [
 	{prop: 'T_iccid', label: '物联网卡号', ellipsis: true},
 	{prop: 'T_state', label: '状态', name: 'T_state'},
 	{prop: 'T_class', label: '设备类型', name: 'T_class'},
-	{prop: 'LendUser', label: '借出人', ellipsis: true},
-	{prop: 'T_project', label: '借出项目', ellipsis: true},
+	{prop: 'LendUser', label: '借出(归还)人', ellipsis: true},
+	{prop: 'T_project', label: '关联项目', ellipsis: true},
 	{prop: 'T_remark', label: '备注',  ellipsis: true},
 	{prop: 'CreateTime', label: '操作时间',  ellipsis: true},
 ]
@@ -91,8 +91,8 @@ const operationColumns: ColumnProps[] = [
 	{type: 'index', label: '序号', width: 80},
 	{prop: 'BatchNumber', label: '操作时间',  width: 190},
 	{prop: 'T_state', label: '操作', name: 'T_state'},
-	{prop: 'LendUser', label: '借出人', ellipsis: true},
-	{prop: 'T_project', label: '借出项目', ellipsis: true},
+	{prop: 'LendUser', label: '借出(归还)人', ellipsis: true},
+	{prop: 'T_project', label: '关联项目', ellipsis: true},
 	{prop: 'T_remark', label: '备注',  ellipsis: true},
 	{prop: 'operation', label: 'SN', width: 100, fixed: 'right', align: 'center' }
 
@@ -159,7 +159,36 @@ const exportExcel = async () => {
 		const url = window.URL.createObjectURL(blob)
 		const a = document.createElement('a')
 		a.href = url
-		a.download = 'filename.xlsx' // 设置下载的文件名
+		const now = new Date();
+		const formattedDate = `${now.getFullYear()}${(now.getMonth()+1).toString().padStart(2, '0')}${now.getDate().toString().padStart(2, '0')}_${now.getHours().toString().padStart(2, '0')}${now.getMinutes().toString().padStart(2, '0')}`;
+		a.download = `验证工具记录表_${formattedDate}.xlsx`;
+		document.body.appendChild(a)
+		a.click()
+		a.remove()
+		window.URL.revokeObjectURL(url)
+		ElMessage.success('导出成功')
+	} catch (error) {
+		ElMessage.error('导出失败,请检查网络连接')
+	}
+}
+const exportOperationExcel = async () => {
+	try {
+		const response: any = await exportOperationFile({
+			User_tokey: globalStore.GET_User_tokey,
+			T_state: operationInitParam.T_state,
+			T_sn: operationInitParam.T_sn,
+			LendUser: operationInitParam.LendUser,
+			T_project: operationInitParam.T_project,
+		})
+
+		// 处理返回的二进制文件并触发下载
+		const blob = new Blob([response], {type: 'application/vnd.ms-excel;charset=utf8'})
+		const url = window.URL.createObjectURL(blob)
+		const a = document.createElement('a')
+		a.href = url
+		const now = new Date();
+		const formattedDate = `${now.getFullYear()}${(now.getMonth()+1).toString().padStart(2, '0')}${now.getDate().toString().padStart(2, '0')}_${now.getHours().toString().padStart(2, '0')}${now.getMinutes().toString().padStart(2, '0')}`;
+		a.download = `验证工具操作记录表_${formattedDate}.xlsx`;
 		document.body.appendChild(a)
 		a.click()
 		a.remove()
@@ -454,7 +483,6 @@ const previewSn = (devicelist: string[]) => {
 }
 
 
-
 const submitEditForm = () => {
 	editFormRef.value?.validate(async (valid: boolean): Promise<void> => {
 		if (valid) {
@@ -939,7 +967,7 @@ onMounted(() => {
 								</el-select>
 							</el-col>
 							<el-col :xl="5" :lg="5" :md="5">
-								<span class="inline-flex items-center">借出人</span>
+								<span class="inline-flex items-center">借出(归还)人</span>
 								<el-input
 									class="w-50 m-2"
 									v-model="operationInitParam.LendUser"
@@ -950,7 +978,7 @@ onMounted(() => {
 								/>
 							</el-col>
 							<el-col :xl="5" :lg="5" :md="5">
-								<span class="inline-flex items-center">借出项目</span>
+								<span class="inline-flex items-center">关联项目</span>
 								<el-input
 									class="w-50 m-2"
 									v-model="operationInitParam.T_project"
@@ -962,6 +990,7 @@ onMounted(() => {
 							</el-col>
 							<el-col :xl="4" :lg="4" :md="4" style="margin-top: 10px">
 								<el-button type="primary" @click="operationSearchHandle">搜索</el-button>
+								<el-button type="success" @click="exportOperationExcel">导出</el-button>
 							</el-col>
 						</el-row>
 					</div>
@@ -975,6 +1004,7 @@ onMounted(() => {
 				</template>
 				<template #right="{ row }">
 					<el-button type="primary"  @click="previewSn(row.T_sn_List)">查看</el-button>
+
 				</template>
 			</TableBase>
 		</el-dialog>

+ 51 - 27
src/views/storehouse/sales/MyPercentage.vue

@@ -6,7 +6,12 @@ import {ElMessage, ElMessageBox} from 'element-plus'
 import TableBase from '@/components/TableBase/index.vue'
 import {Check, Delete, Edit, View} from '@element-plus/icons-vue'
 import type {ColumnProps} from '@/components/TableBase/interface/index'
-import {percentage_Del, percentage_Submit_Audit, percentage_UserList,percentage_User_Excel} from '@/api/mypercentage/index'
+import {
+	percentage_Del,
+	percentage_Submit_Audit,
+	percentage_User_Excel,
+	percentage_UserList
+} from '@/api/mypercentage/index'
 import {options2, useTablePublic} from '@/hooks/useTablePublic'
 
 const {updateOnTableList} = useTablePublic()
@@ -18,10 +23,10 @@ const columns: ColumnProps[] = [
 	{type: 'index', label: '序号', width: 80},
 	{prop: 'T_verifyCompany_name', label: '公司名称', name: 'T_verifyCompany_name'},
 	{prop: 'T_verifyCompany_State', label: '回款状态', name: 'T_verifyCompany_State'},
-	{prop: 'T_recoveries_time', label: '回款时间', name: 'T_recoveries_time'},
+	{prop: 'T_recoveries_time', label: '回款时间', name: 'T_recoveries_time',width: 115},
 	{prop: 'T_task_id', label: '任务编号'},
 	{prop: 'T_task_name', label: '任务名称'},
-	{prop: 'T_reporting_pass_time', label: '统计日期'},
+	{prop: 'T_reporting_pass_time', label: '统计日期',width: 115},
 	{prop: 'T_type', label: '提成类型', name: 'T_type'},
 	{prop: 'T_device_type', label: '设备类型'},
 	{prop: 'T_verify_type', label: '验证类型'},
@@ -48,17 +53,22 @@ const SubmitReview = async (row: any) => {
 
 // 搜索
 const T_date = ref<string[]>([])
+const T_reporting_date = ref<string[]>([])
 const initParam = reactive({
 	User_tokey: globalStore.GET_User_tokey,
 	T_name: '',
 	T_state: '',
 	T_end_date: '',
-	T_start_date: ''
+	T_start_date: '',
+	T_reporting_start_time: '',
+	T_reporting_end_time: ''
 })
 
 const searchHandle = () => {
 	initParam.T_end_date = T_date.value ? T_date.value[1] : ''
 	initParam.T_start_date = T_date.value ? T_date.value[0] : ''
+	initParam.T_reporting_start_time = T_reporting_date.value ? T_reporting_date.value[0] : ''
+	initParam.T_reporting_end_time = T_reporting_date.value ? T_reporting_date.value[1] : ''
 	TableRef.value?.searchTable()
 }
 
@@ -66,6 +76,8 @@ const searchHandle = () => {
 const exportMyPercentageExcel = async () => {
 	initParam.T_end_date = T_date.value ? T_date.value[1] : ''
 	initParam.T_start_date = T_date.value ? T_date.value[0] : ''
+	initParam.T_reporting_start_time = T_reporting_date.value ? T_reporting_date.value[0] : ''
+	initParam.T_reporting_end_time = T_reporting_date.value ? T_reporting_date.value[1] : ''
 	TableRef.value?.searchTable()
 	const res: any = await percentage_User_Excel(initParam)
 	if (res.Code === 200) {
@@ -112,7 +124,7 @@ const processdel = (id: any) => {
 			<template #table-header>
 				<div class="input-suffix">
 					<el-row :gutter="20" style="margin-bottom: 0">
-						<el-col :xl="6" :lg="7" :md="11" style="display: flex">
+						<el-col :xl="5" :lg="5" :md="5" style="display: flex">
 							<span class="inline-flex items-center">回款日期:</span>
 							<el-date-picker
 								v-model="T_date"
@@ -124,20 +136,32 @@ const processdel = (id: any) => {
 								value-format="YYYY-MM-DD"
 							/>
 						</el-col>
-						<el-col :xl="5" :md="6">
+						<el-col :xl="5" :lg="5" :md="5" style="display: flex">
+							<span class="inline-flex items-center">统计日期:</span>
+							<el-date-picker
+								v-model="T_reporting_date"
+								type="daterange"
+								range-separator="~"
+								start-placeholder="开始时间"
+								end-placeholder="结束时间"
+								format="YYYY-MM-DD"
+								value-format="YYYY-MM-DD"
+							/>
+						</el-col>
+						<el-col :xl="5" :md="5">
 							<span class="inline-flex items-center">关键字:</span>
 							<el-input v-model="initParam.T_name" type="text" class="w-50 m-2"
 									  placeholder="按任务编号、公司名称搜索" clearable
 									  @change="searchHandle"/>
 						</el-col>
-						<el-col :xl="5" :md="6">
+						<el-col :xl="6" :md="6">
 							<span class="inline-flex items-center">状态:</span>
 							<el-select v-model="initParam.T_state" class="w-50" clearable placeholder="请选择状态~">
 								<el-option v-for="item in options2" :key="item.id" :label="item.name" :value="item.id"/>
 							</el-select>
-						</el-col>
-						<el-col :xl="6" :md="3" class="btn">
 							<el-button type="primary" @click="searchHandle">搜索</el-button>
+						</el-col>
+						<el-col :xl="15" :lg="15" :md="15" style="margin-top: 10px">
 							<el-button type="primary" @click="exportMyPercentageExcel">导出表格</el-button>
 							<el-button type="success" @click="openContractFormDrawer('new')">申请提成</el-button>
 						</el-col>
@@ -164,14 +188,14 @@ const processdel = (id: any) => {
 				<el-tag v-else type="danger" effect="dark"> ---</el-tag>
 			</template>
 			<template #T_verifyCompany_name="{ row }">
-				{{row.T_verifyCompany.T_name}}
+				{{ row.T_verifyCompany.T_name }}
 			</template>
 			<template #T_verifyCompany_State="{ row }">
 				<el-tag v-if="row.T_verifyCompany.T_State === 1" type="info" effect="dark"> 未回款</el-tag>
 				<el-tag v-if="row.T_verifyCompany.T_State === 2" type="success" effect="dark"> 已回款</el-tag>
 			</template>
 			<template #T_recoveries_time="{ row }">
-				{{row.T_verifyCompany.T_recoveries_time}}
+				{{ row.T_verifyCompany.T_recoveries_time }}
 			</template>
 			<template #right="{ row }">
 				<el-button link type="primary" size="small" :disabled="![3,6].includes(row.T_State)" :icon="Check"
@@ -198,26 +222,26 @@ const processdel = (id: any) => {
 .contract {
 	@include f-direction;
 
-:deep(.el-drawer__header) {
-	margin-bottom: 0;
-}
+	:deep(.el-drawer__header) {
+		margin-bottom: 0;
+	}
 
-.input-suffix {
-	width: 100%;
+	.input-suffix {
+		width: 100%;
 
-.inline-flex {
-	white-space: nowrap;
-}
+		.inline-flex {
+			white-space: nowrap;
+		}
 
-.btn {
-	display: flex;
-	justify-content: end;
-}
+		.btn {
+			display: flex;
+			justify-content: end;
+		}
 
-.w-50 {
-	width: 12.5rem;
-}
+		.w-50 {
+			width: 12.5rem;
+		}
 
-}
+	}
 }
 </style>

+ 32 - 14
src/views/storehouse/sales/Percentage.vue

@@ -27,15 +27,16 @@ const columns: ColumnProps[] = [
   { type: 'index', label: '序号', width: 80 },
   { prop: 'T_verifyCompany_name', label: '公司名称', name: 'T_verifyCompany_name'},
   { prop: 'T_verifyCompany_State', label: '回款状态', name: 'T_verifyCompany_State'},
-  { prop: 'T_recoveries_time', label: '回款时间', name: 'T_recoveries_time'},
+  { prop: 'T_recoveries_time', label: '回款时间', name: 'T_recoveries_time',width: 115},
   { prop: 'T_task_id', label: '任务编号'},
   { prop: 'T_task_name', label: '任务名称'},
-  { prop: 'T_reporting_pass_time', label: '统计日期'},
+  { prop: 'T_reporting_pass_time', label: '统计日期',width: 115},
   { prop: 'T_type', label: '提成类型', name: 'T_type' },
   { prop: 'T_device_type', label: '设备类型'},
   { prop: 'T_verify_type', label: '验证类型'},
   { prop: 'T_uuid_name', label: '提成人员' },
   { prop: 'T_money', label: '提成金额' },
+  { prop: 'T_approval_money', label: '审批金额' },
   { prop: 'T_State', label: '状态', name: 'T_State' },
   { prop: 'operation', label: '操作', width: 280, fixed: 'right' }
 ]
@@ -51,13 +52,16 @@ const processContractxiang = (id: string, titles: string) => {
 }
 // 搜索
 const T_date = ref<string[]>([])
+const T_reporting_date = ref<string[]>([])
 const initParam = reactive({
   User_tokey: globalStore.GET_User_tokey,
   T_name: '',
   T_state: '',
   T_uuid: '',
   T_end_date: '',
-  T_start_date: ''
+  T_start_date: '',
+  T_reporting_start_time: '',
+  T_reporting_end_time: ''
 })
 const loading = ref(false)
 const centerDialogVisible = ref(false)
@@ -65,6 +69,8 @@ const centerDialogVisible = ref(false)
 const searchHandle = () => {
 	initParam.T_end_date = T_date.value ? T_date.value[1] : ''
 	initParam.T_start_date = T_date.value ? T_date.value[0] : ''
+	initParam.T_reporting_start_time = T_reporting_date.value ? T_reporting_date.value[0] : ''
+	initParam.T_reporting_end_time = T_reporting_date.value ? T_reporting_date.value[1] : ''
 	TableRef.value?.searchTable()
 }
 
@@ -72,6 +78,8 @@ const searchHandle = () => {
 const exportPercentageExcel = async () => {
 	initParam.T_end_date = T_date.value ? T_date.value[1] : ''
 	initParam.T_start_date = T_date.value ? T_date.value[0] : ''
+	initParam.T_reporting_start_time = T_reporting_date.value ? T_reporting_date.value[0] : ''
+	initParam.T_reporting_end_time = T_reporting_date.value ? T_reporting_date.value[1] : ''
 	TableRef.value?.searchTable()
 	const res: any = await percentage_Excel(initParam)
 	if (res.Code === 200) {
@@ -204,7 +212,7 @@ const batchSubmitApproval = async () => {
       <template #table-header>
         <div class="input-suffix">
           <el-row :gutter="20" style="margin-bottom: 0">
-            <el-col :xl="6" :lg="6" :md="5" style="display: flex">
+            <el-col :xl="5" :lg="5" :md="5" style="display: flex">
 				  <span class="inline-flex items-center">回款日期:</span>
 				  <el-date-picker
 					  v-model="T_date"
@@ -216,34 +224,44 @@ const batchSubmitApproval = async () => {
 					  value-format="YYYY-MM-DD"
 				  />
 			  </el-col>
-            <el-col :xl="5" :lg="5"  :md="4">
+			<el-col :xl="5" :lg="5" :md="5" style="display: flex">
+				  <span class="inline-flex items-center">统计日期:</span>
+				  <el-date-picker
+					  v-model="T_reporting_date"
+					  type="daterange"
+					  range-separator="~"
+					  start-placeholder="开始时间"
+					  end-placeholder="结束时间"
+					  format="YYYY-MM-DD"
+					  value-format="YYYY-MM-DD"
+				  />
+			  </el-col>
+            <el-col :xl="4" :lg="4"  :md="4">
               <span class="inline-flex items-center">关键字:</span>
               <el-input v-model="initParam.T_name" type="text" style="width: 150px;" placeholder="按任务编号、公司名称搜索" clearable
                 @change="searchOnTableList(TableRef)" />
             </el-col>
-            <el-col :xl="4" :lg="5"  :md="6">
+            <el-col :xl="4" :lg="4"  :md="4">
               <span class="inline-flex items-center">提成人:</span>
               <el-select v-model="initParam.T_uuid" filterable remote reserve-keyword placeholder="提成人"
                 :remote-method="remoteMethod" :loading="loading" @click="click2" clearable style="width: 150px;">
                 <el-option v-for="item in optionsData" :key="item.value" :label="item.label" :value="item.value" />
               </el-select>
             </el-col>
-            <el-col :xl="6" :lg="8"  :md="8">
+            <el-col :xl="5" :lg="5"  :md="5">
               <span class="inline-flex items-center">状态:</span>
               <el-select v-model="initParam.T_state" class="w-50" clearable placeholder="请选择状态~">
                 <el-option v-for="item in options2" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
 				<el-button type="primary" @click="searchHandle">搜索</el-button>
 			</el-col>
+			<el-col :xl="15" :lg="15" :md="15" style="margin-top: 15px">
+			  <el-button type="warning" @click="batchSubmitApproval">批量审核通过</el-button>
+			  <el-button type="success" @click="batchSubmitRemit">批量打款</el-button>
+			  <el-button type="primary" @click="exportPercentageExcel">导出表格</el-button>
+			</el-col>
 
           </el-row>
-			<el-row :gutter="20"  class="btn" style="margin-top: 15px">
-				<el-col :xl="8" :md="8">
-					<el-button type="warning" @click="batchSubmitApproval">批量审核通过</el-button>
-					<el-button type="success" @click="batchSubmitRemit">批量打款</el-button>
-					<el-button type="primary" @click="exportPercentageExcel">导出表格</el-button>
-				</el-col>
-			</el-row>
         </div>
       </template>
       <template #T_type="{ row }">

+ 1 - 1
src/views/storehouse/sales/PercentageDetail1.vue

@@ -205,7 +205,7 @@ defineExpose({
           </el-radio-group>
         </el-form-item>
         <el-form-item label="审批金额:" :label-width="formLabelWidth" prop="T_approval_money">
-          <el-input v-model="form.T_money" placeholder="请输入审批金额" class="w-50"/>
+          <el-input v-model="form.T_approval_money" placeholder="请输入审批金额" class="w-50"/>
         </el-form-item>
         <el-form-item label="审批意见:" :label-width="formLabelWidth" prop="T_approval_opinion">
           <el-input

+ 47 - 5
src/views/storehouse/verifyCompany/VerifyPercentage.vue

@@ -2,11 +2,11 @@
 import {
 	Storehouse_Contract_Percentage_Remit,
 	Storehouse_VerifyContract_Recover_Export,
-	Storehouse_VerifyContract_Recover_List,
+	Storehouse_VerifyContract_Recover_List, Storehouse_VerifyContract_Recover_User_List,
 } from '@/api/storehouse'
 import { useRouter } from 'vue-router'
 import { ElMessage } from 'element-plus'
-import { ref, reactive, nextTick ,defineAsyncComponent} from 'vue'
+import {ref, reactive, nextTick, defineAsyncComponent, onMounted} from 'vue'
 import Drawer from '@/components/Drawer/index.vue'
 import TableBase from '@/components/TableBase/index.vue'
 import {Check, Edit, View} from '@element-plus/icons-vue'
@@ -14,6 +14,7 @@ import type { ColumnProps } from '@/components/TableBase/interface'
 import type { FormInstance } from 'element-plus'
 import { useTablePublic } from '@/hooks/useTablePublic'
 import { fnMd5 } from '@/utils/common'
+import {percentage_User_List} from "@/api/percentage";
 const router = useRouter()
 const TableRef = ref<InstanceType<typeof TableBase> | null>(null)
 const { resetForm, globalStore, searchOnTableList, updateOnTableList } = useTablePublic()
@@ -70,6 +71,7 @@ const T_date = ref<string[]>([])
 const initParam = reactive({
   User_tokey: globalStore.GET_User_tokey,
   T_name: '',
+  T_submit: '',
   T_percentage_state: '',//提成状态
   T_recoveries_state: '',//回款状态
   T_end_date: '',
@@ -142,6 +144,38 @@ const exportPercentageExcel = async () => {
 	}
 }
 
+const loading = ref(false)
+interface ListItem {
+	value: string
+	label: string
+}
+const list = ref<ListItem[]>([])
+const optionsData = ref<ListItem[]>([])
+const remoteMethod = async (query: string) => {
+	if (query) {
+		loading.value = true
+		setTimeout(() => {
+			loading.value = false
+			optionsData.value = list.value.filter((item: any) => {
+				return item.label.toLowerCase().includes(query.toLowerCase())
+			})
+		}, 200)
+	} else {
+		optionsData.value = list.value
+	}
+}
+const click2 = async () => { optionsData.value = list.value }
+onMounted(async () => {
+	const result: any = await Storehouse_VerifyContract_Recover_User_List({})
+	let arr =  []
+	if (result?.Data !== null) {
+		arr = result.Data.Data
+	}
+
+	list.value = arr.map((item: any) => {
+		return { value: item.T_uuid, label: item.T_name }
+	})
+})
 </script>
 
 <template>
@@ -159,7 +193,7 @@ const exportPercentageExcel = async () => {
 
       <template #table-header>
         <el-row :gutter="20" style="margin-bottom: 0" class="input-suffix">
-			<el-col :xl="5" :lg="5" :md="5" style="display: flex">
+			<el-col :xl="6" :lg="6" :md="6" style="display: flex">
 				<span class="inline-flex items-center">回款日期:</span>
 				<el-date-picker
 					v-model="T_date"
@@ -181,7 +215,14 @@ const exportPercentageExcel = async () => {
               @change="searchOnTableList(TableRef)"
             />
           </el-col>
-			<el-col :xl="5" :lg="5" :md="4" class="d-flex">
+			<el-col :xl="4" :lg="4"  :md="4" class="d-flex">
+				<span class="inline-flex items-center">提成人:</span>
+				<el-select v-model="initParam.T_submit" filterable remote reserve-keyword placeholder="提成人"
+						   :remote-method="remoteMethod" :loading="loading" @click="click2" clearable style="width: 150px;">
+					<el-option v-for="item in optionsData" :key="item.value" :label="item.label" :value="item.value" />
+				</el-select>
+			</el-col>
+			<el-col :xl="4" :lg="4" :md="4" class="d-flex">
 			<span class="inline-flex items-center">提成状态:</span>
 			<el-select v-model="initParam.T_percentage_state" class="w-50" clearable placeholder="请选择">
 				<el-option v-for="item in percentageStateOptions" :key="item.id" :label="item.name" :value="item.id" />
@@ -194,7 +235,8 @@ const exportPercentageExcel = async () => {
             </el-select>
 			  <el-button type="primary" @click="searchHandle">搜索</el-button>
           </el-col>
-			<el-col :xl="4" :lg="4" :md="4"  class="d-flex">
+
+			<el-col :xl="15" :lg="15" :md="15"  style="margin-top: 15px">
 				<el-button type="success" @click="batchSubmitRemit">批量打款</el-button>
 				<el-button type="primary" @click="exportPercentageExcel">导出表格</el-button>
 			</el-col>