|
@@ -9,14 +9,16 @@ import {
|
|
getTasks,
|
|
getTasks,
|
|
postCreateTask,
|
|
postCreateTask,
|
|
postDeleteTask,
|
|
postDeleteTask,
|
|
|
|
+ postNoticePerson,
|
|
postSendMessage,
|
|
postSendMessage,
|
|
postUpdateManyTask,
|
|
postUpdateManyTask,
|
|
postUpdateTask,
|
|
postUpdateTask,
|
|
postUpdateTaskStatus
|
|
postUpdateTaskStatus
|
|
} from '/src/views/reportManage/TaskManage/api.ts';
|
|
} from '/src/views/reportManage/TaskManage/api.ts';
|
|
import { ComponentSize, ElMessage, FormInstance, FormRules } from 'element-plus';
|
|
import { ComponentSize, ElMessage, FormInstance, FormRules } from 'element-plus';
|
|
-import { Delete, Plus } from '@element-plus/icons-vue';
|
|
|
|
|
|
+import { Delete, Message, Plus } from '@element-plus/icons-vue';
|
|
import { dateType, requiredFields } from '/@/views/reportManage/TaskManage/utils/enum';
|
|
import { dateType, requiredFields } from '/@/views/reportManage/TaskManage/utils/enum';
|
|
|
|
+import { taskColumns } from '/@/views/reportManage/TaskManage/utils/columns';
|
|
|
|
|
|
const selectorRef = ref(null);
|
|
const selectorRef = ref(null);
|
|
const message = ref('');
|
|
const message = ref('');
|
|
@@ -36,6 +38,15 @@ interface taskRuleForm {
|
|
ipaddress: string;
|
|
ipaddress: string;
|
|
company: string;
|
|
company: string;
|
|
platform: string;
|
|
platform: string;
|
|
|
|
+ companyEnglishName: string;
|
|
|
|
+ address: string;
|
|
|
|
+ juridicalPerson: string;
|
|
|
|
+ juridicalPersonCreditCard: string;
|
|
|
|
+ juridicalPersonCreditCardAddress: string;
|
|
|
|
+ receivablesAccount: string;
|
|
|
|
+ receivablesAccountCompany: string;
|
|
|
|
+ vatNumber: string;
|
|
|
|
+ vatCompany: string;
|
|
}
|
|
}
|
|
|
|
|
|
const formSize = ref<ComponentSize>('default');
|
|
const formSize = ref<ComponentSize>('default');
|
|
@@ -74,6 +85,10 @@ const rules = reactive<FormRules>({
|
|
const userDialogFormVisible = ref(false);
|
|
const userDialogFormVisible = ref(false);
|
|
const updateSelect = ref(1);
|
|
const updateSelect = ref(1);
|
|
|
|
|
|
|
|
+//发送通知弹窗
|
|
|
|
+const noticeDialogFormVisible = ref(false);
|
|
|
|
+const noticeMessage = ref(null);
|
|
|
|
+
|
|
//表格
|
|
//表格
|
|
interface RowVO {
|
|
interface RowVO {
|
|
platformNumber: string;
|
|
platformNumber: string;
|
|
@@ -102,7 +117,7 @@ const gridOptions = reactive<VxeGridProps<RowVO>>({
|
|
border: 'inner',
|
|
border: 'inner',
|
|
keepSource: true,
|
|
keepSource: true,
|
|
//showOverflow: true,
|
|
//showOverflow: true,
|
|
- height: 930,
|
|
|
|
|
|
+ height: 780,
|
|
loading: false,
|
|
loading: false,
|
|
round: true,
|
|
round: true,
|
|
toolbarConfig: {
|
|
toolbarConfig: {
|
|
@@ -139,95 +154,7 @@ const gridOptions = reactive<VxeGridProps<RowVO>>({
|
|
highlight: true,
|
|
highlight: true,
|
|
range: true,
|
|
range: true,
|
|
},
|
|
},
|
|
- columns: [
|
|
|
|
- { type: 'checkbox', width: 50 },
|
|
|
|
- {
|
|
|
|
- field: 'platformNumber',
|
|
|
|
- title: '平台编号',
|
|
|
|
- editRender: { autofocus: '.vxe-input--inner' },
|
|
|
|
- slots: { edit: 'number_edit' },
|
|
|
|
- minWidth: 97
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- field: 'platformName',
|
|
|
|
- title: '平台名称',
|
|
|
|
- editRender: { autofocus: '.vxe-input--inner' },
|
|
|
|
- slots: { edit: 'name_edit' },
|
|
|
|
- align: 'center',
|
|
|
|
- minWidth: 150, isEditing: false
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- field: 'country',
|
|
|
|
- title: '国家',
|
|
|
|
- editRender: { autofocus: '.vxe-input--inner' },
|
|
|
|
- slots: { edit: 'country_edit' },
|
|
|
|
- minWidth: 89,
|
|
|
|
- align: 'center'
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- field: 'brandName',
|
|
|
|
- title: '品牌',
|
|
|
|
- editRender: {},
|
|
|
|
- slots: { edit: 'brand_edit' },
|
|
|
|
- align: 'center',
|
|
|
|
- minWidth: 89,
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- field: 'user_name',
|
|
|
|
- title: '填写人',
|
|
|
|
- editRender: {},
|
|
|
|
- slots: {
|
|
|
|
- edit: 'operation_edit',
|
|
|
|
- //default: 'operation_default'
|
|
|
|
- },
|
|
|
|
- align: 'center',
|
|
|
|
- minWidth: 104
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- field: 'operater',
|
|
|
|
- title: '运营',
|
|
|
|
- editRender: {},
|
|
|
|
- slots: { edit: 'operater_name_edit' },
|
|
|
|
- align: 'center',
|
|
|
|
- minWidth: 104
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- field: 'currencyCode',
|
|
|
|
- title: '平台币种',
|
|
|
|
- editRender: {},
|
|
|
|
- slots: { edit: 'currency_edit' },
|
|
|
|
- align: 'center',
|
|
|
|
- minWidth: 95
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- field: 'currencyCodePlatform',
|
|
|
|
- title: '回款/余额币种',
|
|
|
|
- editRender: {},
|
|
|
|
- slots: { edit: 'currencyCodePlatform_edit' },
|
|
|
|
- minWidth: 130,
|
|
|
|
- align: 'center'
|
|
|
|
- },
|
|
|
|
- { field: 'line', title: '线路', editRender: {}, slots: { edit: 'line_edit' }, align: 'center', minWidth: 89 },
|
|
|
|
- { field: 'ipaddress', title: 'IP地址', editRender: {}, slots: { edit: 'ipaddress_edit' }, minWidth: 138 },
|
|
|
|
- {
|
|
|
|
- field: 'company',
|
|
|
|
- title: '注册公司',
|
|
|
|
- editRender: {},
|
|
|
|
- slots: { edit: 'company_edit' },
|
|
|
|
- align: 'center',
|
|
|
|
- minWidth: 89
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- field: 'platform',
|
|
|
|
- title: '平台',
|
|
|
|
- editRender: {},
|
|
|
|
- slots: { edit: 'platform_edit' },
|
|
|
|
- align: 'center',
|
|
|
|
- minWidth: 89
|
|
|
|
- },
|
|
|
|
- { field: 'status', title: '状态', slots: { default: 'status_default' }, align: 'center', minWidth: 89 },
|
|
|
|
- { title: '操作', width: 120, slots: { default: 'operate' } },
|
|
|
|
- ],
|
|
|
|
|
|
+ columns: taskColumns,
|
|
data: [],
|
|
data: [],
|
|
});
|
|
});
|
|
|
|
|
|
@@ -476,6 +403,36 @@ function updateUserCancel() {
|
|
userDialogFormVisible.value = false;
|
|
userDialogFormVisible.value = false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// 指定人通知
|
|
|
|
+async function noticePerson() {
|
|
|
|
+ const $grid = xGrid.value;
|
|
|
|
+ if ($grid) {
|
|
|
|
+ const selectRecords = $grid.getCheckboxRecords();
|
|
|
|
+ const selectedIds = selectRecords.map(record => record.id);
|
|
|
|
+ const obj = {
|
|
|
|
+ task_list: selectedIds,
|
|
|
|
+ message: noticeMessage.value,
|
|
|
|
+ };
|
|
|
|
+ try {
|
|
|
|
+ const response = await postNoticePerson(obj);
|
|
|
|
+ if (response.code === 2000) {
|
|
|
|
+ ElMessage.success('通知成功');
|
|
|
|
+ noticeDialogFormVisible.value = false; // 关闭弹窗
|
|
|
|
+ } else {
|
|
|
|
+ ElMessage.error('通知失败');
|
|
|
|
+ }
|
|
|
|
+ } catch (error) {
|
|
|
|
+ ElMessage.error('通知失败');
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+function noticePersonCancel() {
|
|
|
|
+ noticeMessage.value = null;
|
|
|
|
+ noticeDialogFormVisible.value = false; // 关闭弹窗
|
|
|
|
+}
|
|
|
|
+
|
|
// 删除任务
|
|
// 删除任务
|
|
async function deleteTask() {
|
|
async function deleteTask() {
|
|
const $grid = xGrid.value;
|
|
const $grid = xGrid.value;
|
|
@@ -558,6 +515,15 @@ async function updateRow(row) {
|
|
ipaddress: row.ipaddress,
|
|
ipaddress: row.ipaddress,
|
|
company: row.company,
|
|
company: row.company,
|
|
platform: row.platform,
|
|
platform: row.platform,
|
|
|
|
+ companyEnglishName: row.companyEnglishName,
|
|
|
|
+ address: row.address,
|
|
|
|
+ juridicalPerson: row.juridicalPerson,
|
|
|
|
+ juridicalPersonCreditCard: row.juridicalPersonCreditCard,
|
|
|
|
+ juridicalPersonCreditCardAddress: row.juridicalPersonCreditCardAddress,
|
|
|
|
+ receivablesAccount: row.receivablesAccount,
|
|
|
|
+ receivablesAccountCompany: row.receivablesAccountCompany,
|
|
|
|
+ vatNumber: row.vatNumber,
|
|
|
|
+ vatCompany: row.vatCompany,
|
|
};
|
|
};
|
|
try {
|
|
try {
|
|
const response = await postUpdateTask(updatedRowData);
|
|
const response = await postUpdateTask(updatedRowData);
|
|
@@ -630,6 +596,15 @@ async function createTask() {
|
|
ipaddress: taskRuleForm.ipaddress,
|
|
ipaddress: taskRuleForm.ipaddress,
|
|
company: taskRuleForm.company,
|
|
company: taskRuleForm.company,
|
|
platform: taskRuleForm.platform,
|
|
platform: taskRuleForm.platform,
|
|
|
|
+ companyEnglishName: taskRuleForm.companyEnglishName,
|
|
|
|
+ address: taskRuleForm.address,
|
|
|
|
+ juridicalPerson: taskRuleForm.juridicalPerson,
|
|
|
|
+ juridicalPersonCreditCard: taskRuleForm.juridicalPersonCreditCard,
|
|
|
|
+ juridicalPersonCreditCardAddress: taskRuleForm.juridicalPersonCreditCardAddress,
|
|
|
|
+ receivablesAccount: taskRuleForm.receivablesAccount,
|
|
|
|
+ receivablesAccountCompany: taskRuleForm.receivablesAccountCompany,
|
|
|
|
+ vatNumber: taskRuleForm.vatNumber,
|
|
|
|
+ vatCompany: taskRuleForm.vatCompany,
|
|
user: taskRuleForm.operation,
|
|
user: taskRuleForm.operation,
|
|
operater: [taskRuleForm.operater],
|
|
operater: [taskRuleForm.operater],
|
|
};
|
|
};
|
|
@@ -698,17 +673,20 @@ async function sendMessage(selectedValue: string) {
|
|
|
|
|
|
// 导出接口
|
|
// 导出接口
|
|
async function handleExport() {
|
|
async function handleExport() {
|
|
- gridOptions.loading = true;
|
|
|
|
- const response = await exportTaskData();
|
|
|
|
-
|
|
|
|
- const url = window.URL.createObjectURL(new Blob([response.data]));
|
|
|
|
- const link = document.createElement('a');
|
|
|
|
- link.href = url;
|
|
|
|
- link.setAttribute('download', '店铺数据.xlsx');
|
|
|
|
- document.body.appendChild(link);
|
|
|
|
- link.click();
|
|
|
|
- gridOptions.loading = false;
|
|
|
|
- ElMessage.success('导出数据成功');
|
|
|
|
|
|
+ try {
|
|
|
|
+ gridOptions.loading = true;
|
|
|
|
+ const response = await exportTaskData(filter.value,);
|
|
|
|
+ const url = window.URL.createObjectURL(new Blob([response.data]));
|
|
|
|
+ const link = document.createElement('a');
|
|
|
|
+ link.href = url;
|
|
|
|
+ link.setAttribute('download', '店铺数据.xlsx');
|
|
|
|
+ document.body.appendChild(link);
|
|
|
|
+ link.click();
|
|
|
|
+ gridOptions.loading = false;
|
|
|
|
+ ElMessage.success('导出数据成功');
|
|
|
|
+ } catch (error) {
|
|
|
|
+ console.error('导出数据失败:', error);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
// 获取填写人下拉框
|
|
// 获取填写人下拉框
|
|
@@ -756,17 +734,71 @@ function handelRowCurrencyCodePlatformSelect(item, row) {
|
|
row.currencyCodePlatform = item;
|
|
row.currencyCodePlatform = item;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+const formItems = ref([
|
|
|
|
+ { label: '平台编号', prop: 'number', type: 'input', placeholder: '请输入平台编号' },
|
|
|
|
+ { label: '平台名称', prop: 'name', type: 'input', placeholder: '请输入平台名称' },
|
|
|
|
+ { label: '国家', prop: 'country', type: 'input', placeholder: '请输入国家' },
|
|
|
|
+ { label: '品牌', prop: 'brand', type: 'input', placeholder: '请输入品牌' },
|
|
|
|
+ {
|
|
|
|
+ label: '录入人员',
|
|
|
|
+ prop: 'operation',
|
|
|
|
+ type: 'select',
|
|
|
|
+ placeholder: '请选择录入人员',
|
|
|
|
+ multiple: true,
|
|
|
|
+ collapseTags: true,
|
|
|
|
+ collapseTagsTooltip: true,
|
|
|
|
+ options: operationList
|
|
|
|
+ },
|
|
|
|
+ { label: '运营', prop: 'operater', type: 'input', placeholder: '请输入运营' },
|
|
|
|
+ {
|
|
|
|
+ label: '平台币种',
|
|
|
|
+ prop: 'currency',
|
|
|
|
+ type: 'autocomplete',
|
|
|
|
+ placeholder: '请输入回款币种',
|
|
|
|
+ debounce: 100,
|
|
|
|
+ fetchSuggestions: querySearch,
|
|
|
|
+ triggerOnFocus: false,
|
|
|
|
+ clearable: true,
|
|
|
|
+ onSelect: handleSelect
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ label: '回款/余额币种',
|
|
|
|
+ prop: 'currencyCodePlatform',
|
|
|
|
+ type: 'autocomplete',
|
|
|
|
+ placeholder: '请输入回款/余额币种',
|
|
|
|
+ debounce: 100,
|
|
|
|
+ fetchSuggestions: querySearch,
|
|
|
|
+ triggerOnFocus: false,
|
|
|
|
+ clearable: true,
|
|
|
|
+ onSelect: handleCurrencyCodePlatformSelect
|
|
|
|
+ },
|
|
|
|
+ { label: '平台', prop: 'platform', type: 'input', placeholder: '请输入平台' },
|
|
|
|
+ { label: '线路', prop: 'line', type: 'input', placeholder: '请输入线路' },
|
|
|
|
+ { label: 'IP地址', prop: 'ipaddress', type: 'input', placeholder: '请输入IP地址' },
|
|
|
|
+ { label: '注册公司', prop: 'company', type: 'input', placeholder: '请输入注册公司' },
|
|
|
|
+ { label: '公司英文名称', prop: 'companyEnglishName', type: 'input', placeholder: '请输入公司英文名称' },
|
|
|
|
+ { label: '公司地址', prop: 'address', type: 'input', placeholder: '请输入公司地址' },
|
|
|
|
+ { label: '公司法人', prop: 'juridicalPerson', type: 'input', placeholder: '请输入公司法人' },
|
|
|
|
+ { label: '法人信用卡', prop: 'juridicalPersonCreditCard', type: 'input', placeholder: '请输入法人信用卡' },
|
|
|
|
+ { label: '信用卡地址', prop: 'juridicalPersonCreditCardAddress', type: 'input', placeholder: '请输入信用卡地址' },
|
|
|
|
+ { label: '收款账号', prop: 'receivablesAccount', type: 'input', placeholder: '请输入收款账号' },
|
|
|
|
+ { label: '收款账号公司', prop: 'receivablesAccountCompany', type: 'input', placeholder: '请输入收款账号公司' },
|
|
|
|
+ { label: 'VAT税号', prop: 'vatNumber', type: 'input', placeholder: '请输入VAT税号' },
|
|
|
|
+ { label: 'VAT税号公司名称', prop: 'vatCompany', type: 'input', placeholder: '请输入VAT税号公司名称' },
|
|
|
|
+]);
|
|
|
|
+
|
|
// 表格样式
|
|
// 表格样式
|
|
const cellStyle = () => {
|
|
const cellStyle = () => {
|
|
return {
|
|
return {
|
|
- fontSize: '13px',
|
|
|
|
- fontWeight: '500',
|
|
|
|
|
|
+ fontSize: '12px',
|
|
|
|
+ fontWeight: '600',
|
|
|
|
+ padding: 0,
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
const headerCellStyle = () => {
|
|
const headerCellStyle = () => {
|
|
return {
|
|
return {
|
|
- fontSize: '14px',
|
|
|
|
|
|
+ fontSize: '13px',
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
|
|
@@ -781,13 +813,13 @@ onMounted(() => {
|
|
<template>
|
|
<template>
|
|
<div class="p-2.5">
|
|
<div class="p-2.5">
|
|
<el-card class="custom-card-style flex gap-1.5 justify-between" shadow="hover">
|
|
<el-card class="custom-card-style flex gap-1.5 justify-between" shadow="hover">
|
|
- <Selector ref="selectorRef" :showOperationSearch="true" @update:filteredData="filteredDataChange" />
|
|
|
|
|
|
+ <Selector ref="selectorRef" @update:filteredData="filteredDataChange" />
|
|
</el-card>
|
|
</el-card>
|
|
<el-card class="my-3" shadow="hover">
|
|
<el-card class="my-3" shadow="hover">
|
|
<vxe-grid ref="xGrid" :cell-style="cellStyle" :header-cell-style="headerCellStyle" stripe v-bind="gridOptions"
|
|
<vxe-grid ref="xGrid" :cell-style="cellStyle" :header-cell-style="headerCellStyle" stripe v-bind="gridOptions"
|
|
v-on="gridEvents" @edit-actived="handleEditActived" @edit-closed="handleEditClosed">
|
|
v-on="gridEvents" @edit-actived="handleEditActived" @edit-closed="handleEditClosed">
|
|
<template #toolbar_buttons>
|
|
<template #toolbar_buttons>
|
|
- <el-button :icon="Plus" type="primary" @click="dialogFormVisible = true"> 添加任务</el-button>
|
|
|
|
|
|
+ <el-button :icon="Plus" type="primary" @click="dialogFormVisible = true"> 添加任务</el-button>
|
|
<!--<el-button plain type="success" @click="saveEvent">保存</el-button>-->
|
|
<!--<el-button plain type="success" @click="saveEvent">保存</el-button>-->
|
|
<el-button :disabled="isDeleteDisabled" :icon="Delete" plain type="danger" @click="removeEvent">删除
|
|
<el-button :disabled="isDeleteDisabled" :icon="Delete" plain type="danger" @click="removeEvent">删除
|
|
</el-button>
|
|
</el-button>
|
|
@@ -797,6 +829,9 @@ onMounted(() => {
|
|
</template>
|
|
</template>
|
|
<template #toolbar_tools>
|
|
<template #toolbar_tools>
|
|
<div class="pr-2.5">
|
|
<div class="pr-2.5">
|
|
|
|
+ <el-tooltip content="指定店铺发送通知" placement="top">
|
|
|
|
+ <vxe-button v-if="!isDeleteDisabled" plain circle icon="vxe-icon-envelope" @click="noticeDialogFormVisible =true"></vxe-button>
|
|
|
|
+ </el-tooltip>
|
|
<el-tooltip content="保存" placement="top">
|
|
<el-tooltip content="保存" placement="top">
|
|
<vxe-button circle icon="vxe-icon-save" @click="saveEvent"></vxe-button>
|
|
<vxe-button circle icon="vxe-icon-save" @click="saveEvent"></vxe-button>
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
@@ -905,6 +940,33 @@ onMounted(() => {
|
|
</template>
|
|
</template>
|
|
</el-autocomplete>
|
|
</el-autocomplete>
|
|
</template>
|
|
</template>
|
|
|
|
+ <template #companyEnglishName_edit="{ row }">
|
|
|
|
+ <vxe-input v-model="row.companyEnglishName"></vxe-input>
|
|
|
|
+ </template>
|
|
|
|
+ <template #address_edit="{ row }">
|
|
|
|
+ <vxe-input v-model="row.address"></vxe-input>
|
|
|
|
+ </template>
|
|
|
|
+ <template #juridicalPerson_edit="{ row }">
|
|
|
|
+ <vxe-input v-model="row.juridicalPerson"></vxe-input>
|
|
|
|
+ </template>
|
|
|
|
+ <template #juridicalPersonCreditCard_edit="{ row }">
|
|
|
|
+ <vxe-input v-model="row.juridicalPersonCreditCard"></vxe-input>
|
|
|
|
+ </template>
|
|
|
|
+ <template #juridicalPersonCreditCardAddress_edit="{ row }">
|
|
|
|
+ <vxe-input v-model="row.juridicalPersonCreditCardAddress"></vxe-input>
|
|
|
|
+ </template>
|
|
|
|
+ <template #receivablesAccount_edit="{ row }">
|
|
|
|
+ <vxe-input v-model="row.receivablesAccount"></vxe-input>
|
|
|
|
+ </template>
|
|
|
|
+ <template #receivablesAccountCompany_edit="{ row }">
|
|
|
|
+ <vxe-input v-model="row.receivablesAccountCompany"></vxe-input>
|
|
|
|
+ </template>
|
|
|
|
+ <template #vatNumber_edit="{ row }">
|
|
|
|
+ <vxe-input v-model="row.vatNumber"></vxe-input>
|
|
|
|
+ </template>
|
|
|
|
+ <template #vatCompany_edit="{ row }">
|
|
|
|
+ <vxe-input v-model="row.vatCompany"></vxe-input>
|
|
|
|
+ </template>
|
|
</vxe-grid>
|
|
</vxe-grid>
|
|
</el-card>
|
|
</el-card>
|
|
</div>
|
|
</div>
|
|
@@ -919,69 +981,46 @@ onMounted(() => {
|
|
label-width="auto"
|
|
label-width="auto"
|
|
status-icon
|
|
status-icon
|
|
style="max-width: 600px">
|
|
style="max-width: 600px">
|
|
- <el-form-item label="平台编号" prop="number">
|
|
|
|
- <el-input v-model="taskRuleForm.number" placeholder="请输入平台编号" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="平台名称" prop="name">
|
|
|
|
- <el-input v-model="taskRuleForm.name" placeholder="请输入平台名称" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="国家" prop="country">
|
|
|
|
- <el-input v-model="taskRuleForm.country" placeholder="请输入国家" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="品牌" prop="brand">
|
|
|
|
- <el-input v-model="taskRuleForm.brand" placeholder="请输入品牌" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="录入人员" prop="operation">
|
|
|
|
- <el-select v-model="taskRuleForm.operation" collapse-tags collapse-tags-tooltip multiple
|
|
|
|
- placeholder="请选择录入人员">
|
|
|
|
- <el-option v-for="item in operationList" :key="item.value" :label="item.label"
|
|
|
|
- :value="item.value"></el-option>
|
|
|
|
- </el-select>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="运营" prop="operater">
|
|
|
|
- <el-input v-model="taskRuleForm.operater" placeholder="请输入运营" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="平台币种" prop="currency">
|
|
|
|
- <el-autocomplete
|
|
|
|
- v-model="taskRuleForm.currency"
|
|
|
|
- :debounce="100"
|
|
|
|
- :fetch-suggestions="querySearch"
|
|
|
|
- :trigger-on-focus="false"
|
|
|
|
- clearable
|
|
|
|
- placeholder="请输入回款币种"
|
|
|
|
- @select="handleSelect"
|
|
|
|
- >
|
|
|
|
- <template v-slot="{ item }">
|
|
|
|
- <div>{{ item }}</div> <!-- 确保正确显示每个选项 -->
|
|
|
|
- </template>
|
|
|
|
- </el-autocomplete>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="回款/余额币种" prop="currencyCodePlatform">
|
|
|
|
- <el-autocomplete
|
|
|
|
- v-model="taskRuleForm.currencyCodePlatform"
|
|
|
|
- :debounce="100"
|
|
|
|
- :fetch-suggestions="querySearch"
|
|
|
|
- :trigger-on-focus="false"
|
|
|
|
- clearable
|
|
|
|
- placeholder="请输入回款/余额币种"
|
|
|
|
- @select="handleCurrencyCodePlatformSelect"
|
|
|
|
- >
|
|
|
|
- <template v-slot="{ item }">
|
|
|
|
- <div>{{ item }}</div> <!-- 确保正确显示每个选项 -->
|
|
|
|
- </template>
|
|
|
|
- </el-autocomplete>
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="线路" prop="line">
|
|
|
|
- <el-input v-model="taskRuleForm.line" placeholder="请输入线路" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="IP地址" prop="ipaddress">
|
|
|
|
- <el-input v-model="taskRuleForm.ipaddress" placeholder="请输入IP地址" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="注册公司" prop="company">
|
|
|
|
- <el-input v-model="taskRuleForm.company" placeholder="请输入注册公司" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <el-form-item label="平台" prop="platform">
|
|
|
|
- <el-input v-model="taskRuleForm.platform" placeholder="请输入平台" />
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
+ v-for="(item, index) in formItems"
|
|
|
|
+ :key="index"
|
|
|
|
+ :label="item.label"
|
|
|
|
+ :prop="item.prop"
|
|
|
|
+ >
|
|
|
|
+ <template v-if="item.type === 'input'">
|
|
|
|
+ <el-input v-model="taskRuleForm[item.prop]" :placeholder="item.placeholder" />
|
|
|
|
+ </template>
|
|
|
|
+ <template v-else-if="item.type === 'select'">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="taskRuleForm[item.prop]"
|
|
|
|
+ :collapse-tags="item.collapseTags"
|
|
|
|
+ :collapse-tags-tooltip="item.collapseTagsTooltip"
|
|
|
|
+ :multiple="item.multiple"
|
|
|
|
+ :placeholder="item.placeholder"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="option in item.options"
|
|
|
|
+ :key="option.value"
|
|
|
|
+ :label="option.label"
|
|
|
|
+ :value="option.value"
|
|
|
|
+ ></el-option>
|
|
|
|
+ </el-select>
|
|
|
|
+ </template>
|
|
|
|
+ <template v-else-if="item.type === 'autocomplete'">
|
|
|
|
+ <el-autocomplete
|
|
|
|
+ v-model="taskRuleForm[item.prop]"
|
|
|
|
+ :clearable="item.clearable"
|
|
|
|
+ :debounce="item.debounce"
|
|
|
|
+ :fetch-suggestions="item.fetchSuggestions"
|
|
|
|
+ :placeholder="item.placeholder"
|
|
|
|
+ :trigger-on-focus="item.triggerOnFocus"
|
|
|
|
+ @select="item.onSelect"
|
|
|
|
+ >
|
|
|
|
+ <template v-slot="{ item }">
|
|
|
|
+ <div>{{ item }}</div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-autocomplete>
|
|
|
|
+ </template>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<template #footer>
|
|
<template #footer>
|
|
@@ -1013,6 +1052,18 @@ onMounted(() => {
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
+ <el-dialog v-model="noticeDialogFormVisible" align-center
|
|
|
|
+ style="border-radius: 10px;" title="指定店铺发送通知" width="500">
|
|
|
|
+ <el-form-item align-center label="消息内容:" width="500">
|
|
|
|
+ <el-input v-model="noticeMessage" type="textarea"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <template #footer>
|
|
|
|
+ <div class="dialog-footer">
|
|
|
|
+ <el-button @click="noticePersonCancel">取消</el-button>
|
|
|
|
+ <el-button type="primary" @click="noticePerson"> 确认</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-dialog>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<style scoped>
|
|
<style scoped>
|
|
@@ -1027,4 +1078,10 @@ onMounted(() => {
|
|
border: none;
|
|
border: none;
|
|
box-shadow: none;
|
|
box-shadow: none;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+:deep(.vxe-table--header .vxe-header--row th .vxe-cell,
|
|
|
|
+.vxe-table--body .vxe-body--row td .vxe-cell) {
|
|
|
|
+ padding-left: 5px !important;
|
|
|
|
+ padding-right: 0 !important;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|