You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

974 lines
38 KiB

<template>
<div class="main-content12">
<!-- page header -->
<div class="pageheader flex-between">
<span class="pagetitle">{{ pageTitle }}</span>
<GuipButton size="table" type="ignore" @click="showPddSetting">拼多多发货</GuipButton>
<GuipDialog :dialogVisible="dialogVisiblePddSetting" title="999" :confirmText="pddSettingConfirmText"
cancelText="取消" :show-close-button="false" :show-cancel-button="true" @confirm="pddSetting"
@cancel="closePddSetting" @close="closePddSetting" @dialogVisibleChange="dialogVisibleChange">
<!-- 自定义内容 -->
<template #title>
<div class="custom-header">
<el-tabs v-model="pddSettingActiveName">
<el-tab-pane label="拼多多手工发货" name="1"></el-tab-pane>
<el-tab-pane label="拼多多自动发货" name="2"></el-tab-pane>
</el-tabs>
<i class="el-icon-close close-icon" @click="dialogVisiblePddSetting = false"></i>
</div>
</template>
<el-form>
<div v-if="pddSettingActiveName == '1'">
<PromptText text='导出待发货订单excel,到拼多多导入该excel进行发货' :type="1" />
<GuipSelect class="mt-16" label="选择站点" v-model="pddExportUid"
@change="selectPddExportSite()" :options="searchSiteList" valueKey="uid" labelKey="name"
:extraItem="{ label: '请选择站点', value: '0' }" placeholder="" clearable width="300px" />
</div>
<div v-if="pddSettingActiveName == '2'">
<PromptText text='需要自己在拼多多购买自动发货软件,并设置下方规则' :type="1" />
<div class="flex gap12 flex-name2">
<div class="mb-16">
<p>提交规则</p>
</div>
<div>
<div>
<el-checkbox checked disabled><span
class="fontblue">允许未发货的有效订单提交检测(不可取消)</span></el-checkbox>
</div>
<div class="mt-16">
<el-checkbox v-model="selectAllowPddDeliveredDelayedSubmit">允许已发货<el-input
v-model="pddDeliveredDelayedSubmitHour"
style="width:50px;height:30px"></el-input>小时订单提交论文检测</el-checkbox>
</div>
</div>
</div>
</div>
</el-form>
</GuipDialog>
</div>
<div class="elementWrap mb-10">
<el-form>
<div class="flex-between operateBtns">
<b class="checktitle">筛选及导出列表</b>
<div class="flex gap24">
<GuipButton size="table" type="ignore" @click="resetSearchParams">清空</GuipButton>
<GuipButton size="table" type="system" @click="getFilterParams">筛选</GuipButton>
<GuipButton size="table" type="primary" @click="exportData">导出</GuipButton>
</div>
</div>
<div class="flex">
<p class="mr-12 noWrap">时间范围</p>
<el-date-picker class="mr-32" v-model="searchDate" type="daterange" range-separator="至"
start-placeholder="开始日期" end-placeholder="结束日期" style="min-width:210px;flex:1" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
</el-date-picker>
<GuipSelect class="mr-32" label="服务类型" v-model="searchType" style="flex:1;min-width: 150px;" @change="changeSearchType()"
:options="searchTypeList" :extraItem="{ label: '全部', value: '0' }" placeholder="" clearable />
<GuipSelect class="mr-32" label="站点" v-model="searchUid" @change="changeSearchSite()" style="flex:1;min-width: 150px;"
:options="searchSiteList" valueKey="uid" labelKey="name" :extraItem="{ label: '全部', value: '0' }"
placeholder="" clearable />
<GuipSelect class="mr-32" label="报告状态" v-model="searchStatus" style="flex:1;min-width: 120px;"
@change="changeSearchStatus()" :options="searchStatusList"
:extraItem="{ label: '全部', value: 'all' }" placeholder="不限" clearable />
</div>
</el-form>
</div>
<!-- page content -->
<div class="elementWrap">
<div>
<el-form>
<div class="flex" style="justify-content: space-between;">
<div class="flex">
<h3 class="checktitle mr-24">{{ pageTitle }}列表</h3>
<GuipSelect class="mr-32" label="报告格式" v-model="reportNameFormat"
:options="donwReportNameFormat" @change="changeReportNameFormat()" clearable
v-if="pageTab == 'check'" />
</div>
<GuipInput label="订单号" v-model="searchTid" @blur="changeSearchTid()" placeholder="请输入订单号"
ref="GuipInput" />
</div>
<PromptText class="my-32" text='订单提示:电商订单,提交检测后会自动发货,请勿手动发货、代收款订单,退款须由平台操作,不可私自退款' :type="2" />
<GuipTable :tableData="orderList" ref="multipleTable" autoColumn="true" :loading="tableLoading">
<el-table-column prop="sitename" label="站点" fixed="left" min-width="60px">
<template slot-scope="scope">
<div class="flex">
<GuipToolTip :content="scope.row.sitename">
<img class="wh-16" src="@/assets/site.svg" alt="">
</GuipToolTip>
</div>
</template>
</el-table-column>
<el-table-column prop="sale_id" label="ID" fixed="left" min-width="120px">
<template slot-scope="scope">
<div class="flex">
<p>{{ scope.row.sale_id }}</p>
<GuipToolTip class="ml-7" v-if="scope.row.ispublic == 1" content="自供货">
<img class="wh-16" src="@/assets/self_supply.svg" />
</GuipToolTip>
</div>
</template>
</el-table-column>
<el-table-column prop="type_desc" label="检测类型" fixed="left" min-width="160px"></el-table-column>
<el-table-column prop="pay_type" label="买家" min-width="60px">
<template slot-scope="scope">
<div class="flex">
<GuipToolTip :content="scope.row.pay_type_desc">
<img class="wh-16" :src="getPayImg(scope.row.pay_type)" alt="">
</GuipToolTip>
</div>
</template>
</el-table-column>
<el-table-column prop="tids" label="订单号" min-width="220px">
<template slot-scope="scope">
<div class="flex" v-if="scope.row.status == 1">
<GuipToolTip :content="'下载报告 作者:' + scope.row.author + ' 标题:' + scope.row.title">
<a :href="'http://' + scope.row.domain + '/report/tid/' + tid + '/sid/' + scope.row.sale_id"
target="_blank" v-for="tid in scope.row.tids" :key="tid">{{ tid }}</a>
</GuipToolTip>
</div>
<div class="" v-else>
<p v-for="tid in scope.row.tids" :key="tid">
{{ tid }}
<GuipToolTip content="待发货">
<img v-if="scope.row.pay_type == 11 && scope.row.pdd_is_wait_deliver_goods[tid] == true"
class="wh-16 ml-7" src="@/assets/wait_deliver_goods.svg" />
</GuipToolTip>
</p>
</div>
</template>
</el-table-column>
<el-table-column prop="author" label="作者" v-if="pageTab == 'check'">
<template slot-scope="scope">
<div class="flex">
<GuipToolTip :content="'作者:' + scope.row.author + ' 标题:' + scope.row.title">
<p>{{ scope.row.author }}</p>
</GuipToolTip>
</div>
</template>
</el-table-column>
<el-table-column prop="title" label="标题" v-else-if="pageTab == 'ai'" min-width="200px">
<!-- <template slot-scope="scope">
<div class="flex">
<GuipToolTip :content="scope.row.title">
<p>{{ scope.row.title }}</p>
</GuipToolTip>
</div>
</template> -->
</el-table-column>
<el-table-column prop="src" label="渠道" min-width="60px">
<template slot-scope="scope">
<div class="flex">
<GuipToolTip :content="scope.row.src_desc">
<img class="wh-16" :src="getChannelImg(scope.row.src)" alt="">
</GuipToolTip>
</div>
</template>
</el-table-column>
<el-table-column prop="ip" label="IP" min-width="150px"></el-table-column>
<el-table-column prop="sale_date_format" label="销售日期" min-width="120px">
<template slot-scope="scope">
<div class="flex">
<GuipToolTip :content="scope.row.sale_date">
<p>{{ scope.row.sale_date_format }}</p>
</GuipToolTip>
</div>
</template>
</el-table-column>
<el-table-column prop="wordnum" label="字数"></el-table-column>
<el-table-column v-if="pageTab != 'ai'" prop="similarity" label="相似度">
<template slot-scope="scope">
<div class="flex">
<p v-if="scope.row.similarity > 0">{{ scope.row.similarity }}%</p>
<p v-else>-</p>
</div>
</template>
</el-table-column>
<el-table-column prop="income" label="实际收入" min-width="100px"></el-table-column>
<el-table-column prop="cost" label="成本"></el-table-column>
<el-table-column prop="status_desc" label="状态" min-width="150px">
<template slot-scope="scope">
<div class="flex">
<div v-if="scope.row.status == 1" class="status-item divgreen">
<span class="fontgreen">{{ scope.row.status_desc }}</span>
</div>
<div v-else-if="scope.row.status == 3 || scope.row.status == 11 || scope.row.status == 12"
class="status-item divblue">
<span class="fontblue">{{ scope.row.status_desc }}</span>
</div>
<div v-else-if="scope.row.status == 2 || scope.row.status == 10 || scope.row.status == 4"
class="status-item divred">
<span class="fontred">{{ scope.row.status_desc }}</span>
</div>
<div v-else-if="scope.row.status == 0 || scope.row.status == 8"
class="status-item divgray">
<span class="fontgray">{{ scope.row.status_desc }}</span>
</div>
<div v-else-if="scope.row.status == 5" class="status-item divorange">
<span class="fontorange">{{ scope.row.status_desc }}</span>
</div>
<div v-else-if="scope.row.status == 6 || scope.row.status == 7"
class="status-item divpurple">
<span class="fontpurple">{{ scope.row.status_desc }}</span>
</div>
<GuipToolTip v-if="scope.row.status == 1 && scope.row.is_downloaded_report == 1"
content="已下载报告标识">
<img class="wh-16 ml-7" src="@/assets/downloaded.svg" />
</GuipToolTip>
</div>
</template>
</el-table-column>
<el-table-column label="操作" min-width="80px">
<template slot-scope="scope">
<div class="flex">
<el-button v-if="scope.row.status == 1" @click="showConfirmDelReport(scope.row)"
type="text">删报告</el-button>
<el-button v-if="scope.row.status == 5" @click="showConfirmRecoverReport(scope.row)"
type="text">恢复报告</el-button>
</div>
</template>
</el-table-column>
</GuipTable>
<Page :current-page="orderListCurrentPage" :has-next-page="isHasNextPage"
:total-records="orderListTotalRecords" :page-size="orderListPageSize" :is-loading="tableLoading"
@page-change="handlePageChange" />
</el-form>
</div>
<GuipDialog :dialogVisible="dialogVisibleDelReport" title="删除报告" confirmText="删除" cancelText="取消"
:show-close-button="false" :show-cancel-button="true" @confirm="confirmDelReport" @cancel="handleCancel"
@close="handleClose" @dialogVisibleChange="dialogVisibleChange">
<!-- 自定义内容 -->
<p class="mx-24 mt12 flex">是否删除 ID:{{ delReportId }} 报告?删除后无法恢复</p>
</GuipDialog>
<GuipDialog :dialogVisible="dialogVisibleRecoverReport" title="恢复报告" confirmText="恢复" cancelText="取消"
:show-close-button="false" :show-cancel-button="true" @confirm="confirmRecoverReport" @cancel="handleCancel"
@close="handleClose" @dialogVisibleChange="dialogVisibleChange">
<!-- 自定义内容 -->
<p class="mx-24 mt12 flex">是否恢复 ID:{{ recoverReportId }} 报告?</p>
</GuipDialog>
<audio id="notice-sound" ref="audioPlayer" :src="audioSrc" hidden v-if="!isIE"></audio>
<!-- IE浏览器使用的embed元素 -->
<embed v-if="isIE" name="embedPlay" :src="audioSrc" autostart="true" hidden="true" loop="false" />
</div>
</div>
</template>
<script>
import GuipTable from '@/components/GuipTable.vue';
import GuipSelect from '@/components/GuipSelect.vue';
import GuipInput from '@/components/GuipInput.vue';
import GuipButton from '@/components/GuipButton.vue';
import GuipToolTip from '@/components/GuipToolTip.vue';
import GuipDialog from '@/components/GuipDialog.vue';
import Page from '@/components/Page.vue';
import PromptText from '@/components/PromptText.vue';
export default {
name: 'siteList',
props: {
list_type: {
type: String,
default: 'check'
},
},
components: {
GuipTable,
GuipSelect,
GuipButton,
GuipInput,
GuipToolTip,
GuipDialog,
Page,
PromptText,
},
data() {
return {
pageTab: 'check',
pageTitle: '查重订单',
// 表格加载
tableLoading: false,
// 订单列表
orderList: [],
orderListTotalRecords: 0,
isHasNextPage: true,
orderListCurrentPage: 1,
orderListPageSize: 100,
orderListNextMinId: 0,
orderListPrevMaxId: 0,
orderListEndPage: 0,
siteList: [],
searchDate: '',
searchStatus: 'all',
searchStatusList: [],
searchUid: '0',
searchSiteList: [],
searchTid: 0,
searchType: '0',
searchTypeList: [],
dialogVisibleDelReport: false,
delReportId: '',
dialogVisibleRecoverReport: false,
recoverReportId: '',
dialogVisiblePddSetting: false,
pddSettingActiveName: '1',
pddSettingConfirmText: '导出拼多多发货订单',
pddExportUid: '0',
pddDeliveredDelayedSubmitHour: 1,
selectAllowPddDeliveredDelayedSubmit: false,
donwReportNameFormat: [],
reportNameFormat: 0,
intervalId: null,
isMuted: true,
audioSrc: require('@/assets/msg.wav'), // 音频文件路径
isIE: false // 是否是IE浏览器
}
},
mounted() {
this.pageTab = this.list_type
this.getOrderList()
this.getConfig()
this.startTimer();
this.checkBrowser();
if (!this.isIE) {
this.$refs.audioPlayer.load(); // 预加载音频
}
},
beforeUpdate() {
},
beforeDestroy() {
this.stopTimer();
},
methods: {
unmute() {
this.isMuted = false;
if (this.$refs.audioPlayer) {
this.$refs.audioPlayer.muted = false;
}
},
checkBrowser() {
const userAgent = window.navigator.userAgent.toLowerCase();
this.isIE = userAgent.indexOf("ie") >= 0 || userAgent.indexOf("trident") >= 0;
},
// 播放声音
playSound() {
this.$nextTick(() => {
if (this.isIE) {
// IE浏览器使用embed播放
console.log('ienotice');
} else {
// 现代浏览器使用audio播放
try {
const audio = this.$refs.audioPlayer;
this.unmute()
if (audio) {
audio.play().then(() => {
console.log('notice');
}).catch(e => {
console.error('音频播放失败:', e);
});
}
} catch (e) {
console.error('播放出错:', e);
}
}
});
},
startTimer() {
this.intervalId = setInterval(() => {
this.getOrderList()
// // 测试重复播放 -- is okk
// this.playSound()
// 每隔5秒执行的代码
console.log('定时更新订单');
}, 60000);
},
stopTimer() {
if (this.intervalId) {
clearInterval(this.intervalId);
}
},
getFilterParams() {
var stime = '';
var etime = '';
if (this.searchDate && this.searchDate.length > 0) {
stime = this.searchDate[0];
etime = this.searchDate[1];
}
var params = {};
if (stime) params.stime = stime;
if (etime) params.etime = etime;
if (this.searchStatus) params.status = this.searchStatus;
if (this.searchType) params.type = this.searchType;
if (this.searchUid) params.uid = this.searchUid;
this.getOrderList(params)
},
resetPageParams() {
this.orderListTotalRecords = 0
this.isHasNextPage = true
this.orderListCurrentPage = 1
this.orderListPageSize = 100
this.orderListNextMinId = 0
this.orderListPrevMaxId = 0
this.orderListEndPage = 0
},
resetSearchParams() {
this.searchDate = ''
this.searchStatus = 'all'
this.searchType = '0'
this.searchUid = '0'
// 或者使用 $set
},
handleError(error) {
console.error('分页错误:', error)
// 可以在这里显示错误提示
},
getConfig() {
this.$http('POST', '/agentnew/get_agent_config', {
}).then(response => {
this.$nextTick(() => {
if (response.status) {
if (response.data.pdd_delivered_delayed_submit_hour > 0) {
this.pddDeliveredDelayedSubmitHour = response.data.pdd_delivered_delayed_submit_hour;
this.selectAllowPddDeliveredDelayedSubmit = true;
}
this.reportNameFormat = response.data.report_name_format;
} else {
this.$Message.error(response.info);
}
})
}).catch(error => {
console.error(error, 'error')
})
},
getOrderList(params) {
console.log(this.searchDate)
this.tableLoading = true
try {
const requestParams = {
pagesize: this.orderListPageSize,
page: this.orderListCurrentPage,
pagetab: this.pageTab,
...params
}
this.$http('POST', '/agentnew/ajax_get_check_order_list', requestParams).then(response => {
this.tableLoading = false
this.$nextTick(() => {
if (this.intervalId && response.data.maxid && this.orderListPrevMaxId && response.data.maxid > this.orderListPrevMaxId) {
console.log('有新订单了');
this.playSound();
}
this.orderList = response.data.list
this.searchStatusList = response.data.search_check_status
this.orderListTotalRecords = response.data.total_records
this.searchSiteList = response.data.sitelist
this.searchTypeList = response.data.type2name
this.donwReportNameFormat = response.data.donw_report_name_format
console.log(this.donwReportNameFormat, 'donwReportNameFormat')
// 更新minId和maxId
if (response.data.minid) this.orderListNextMinId = response.data.minid
if (response.data.maxid) this.orderListPrevMaxId = response.data.maxid
this.isHasNextPage = response.data.is_has_next_page;
if (this.orderListTotalRecords > 0) {
// 计算总页数
this.orderListCurrentPage = Math.ceil(this.orderListTotalRecords / this.orderListPageSize)
// this.page = this.totalPages || 1
// this.jumpPage = this.page
// this.end_page = 1;
}
// console.log(this.isHasNextPage, 'isHasNextPage')
})
}).catch(error => {
console.error(error, 'error')
})
} catch (error) {
console.error('数据加载失败:', error)
} finally {
this.tableLoading = false
}
},
exportData() {
var stime = '';
var etime = '';
if (this.searchDate && this.searchDate.length > 0) {
stime = this.searchDate[0];
etime = this.searchDate[1];
}
var params = {};
if (stime) params.stime = stime;
if (etime) params.etime = etime;
if (this.searchStatus) params.status = this.searchStatus;
if (this.searchType) params.type = this.searchType;
if (this.searchUid) params.uid = this.searchUid;
this.$http('GET', '/agentnew/export_order', params, {
returnFullResponse: true,
responseType: 'blob'
}).then(response => {
const {
headers, // 响应头(headers)
data, // 响应体数据
} = response;
const filename = this.decodeRFC5987Filename(headers['content-disposition']);
// console.log(headers,data,filename,'ajax_get_check_order_list=====');
const blob = new Blob([data], { type: 'application/force-download' });
const downloadUrl = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = downloadUrl;
link.setAttribute('download', filename);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(downloadUrl);
}).catch(error => {
console.error(error, 'error')
})
},
decodeRFC5987Filename(header) {
// 匹配 RFC 5987 编码的文件名(如 filename*=utf8''xxx)
const match = header.match(/filename\*=(?:utf8|UTF-8)''([^;]+)/i);
console.log(match, 'match');
if (match) {
return decodeURIComponent(match[1]);
}
// 回退到普通文件名(如 filename="xxx")
const fallbackMatch = header.match(/filename="?([^"]+)"?/i);
return fallbackMatch ? fallbackMatch[1] : 'download';
},
getPayImg(pay_type) {
return require('@/assets/pay/pay_' + pay_type + '.svg');
},
getChannelImg(src) {
return require('@/assets/channel_' + src + '.svg');
},
changeSearchSite() {
console.log(this.searchUid)
},
changeSearchTid() {
console.log(this.searchTid, 'this.searchTid')
this.getOrderList({ orderid: this.searchTid })
},
changeSearchType() {
console.log(this.searchType)
},
changeSearchStatus() {
console.log(this.searchStatus)
},
changeReportNameFormat() {
this.$http('POST', '/agentnew/ajax_set_report_name_format', {
report_name_format: this.reportNameFormat,
}).then(response => {
this.$nextTick(() => {
if (response.status) {
this.$Message.success(response.info);
} else {
this.$Message.error(response.info);
}
})
}).catch(error => {
console.error(error, 'error')
})
},
// 弹框相关方法---start
showConfirmDelReport(row) {
this.dialogVisibleDelReport = true;
this.delReportId = row.sale_id;
},
showConfirmRecoverReport(row) {
this.dialogVisibleRecoverReport = true;
this.recoverReportId = row.sale_id;
},
// 确认按钮事件
confirmDelReport() {
this.$http('POST', '/agentnew/ajax_del_report', {
saleid: this.delReportId,
}).then(response => {
this.$nextTick(() => {
if (response.status) {
this.$Message.success(response.info);
this.dialogVisibleDelReport = false;
} else {
this.$Message.error(response.info);
}
})
}).catch(error => {
console.error(error, 'error')
})
},
confirmRecoverReport() {
this.$http('POST', '/agentnew/ajax_recover_report', {
saleid: this.recoverReportId,
}).then(response => {
this.$nextTick(() => {
if (response.status) {
this.$Message.success(response.info);
this.dialogVisibleRecoverReport = false;
} else {
this.$Message.error(response.info);
}
})
}).catch(error => {
console.error(error, 'error')
})
},
// 取消按钮事件
handleCancel() {
this.dialogVisibleDelReport = false;
this.dialogVisibleRecoverReport = false;
},
// 关闭弹框事件
handleClose() {
this.dialogVisibleDelReport = false;
this.dialogVisibleRecoverReport = false;
},
dialogVisibleChange(data) {
console.log(data, 'data098908090');
},
// 弹框相关方法---end
showPddSetting() {
this.dialogVisiblePddSetting = true;
},
// 关闭弹框事件
closePddSetting() {
this.dialogVisiblePddSetting = false;
},
selectPddExportSite() {
console.log(this.pddExportUid)
},
// 确认按钮事件
pddSetting() {
if (this.pddSettingActiveName == 1) {
this.$http('GET', '/agentnew/export_pdd_tids', {
uid: this.pddExportUid,
}, {
returnFullResponse: true,
responseType: 'blob'
}).then(response => {
const {
headers, // 响应头(headers)
data, // 响应体数据
} = response;
const filename = this.decodeRFC5987Filename(headers['content-disposition']);
// console.log(headers,data,filename,'ajax_get_check_order_list=====');
const blob = new Blob([data], { type: 'application/force-download' });
const downloadUrl = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = downloadUrl;
link.setAttribute('download', filename);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(downloadUrl);
}).catch(error => {
console.error(error, 'error')
})
} else if (this.pddSettingActiveName == 2) {
this.$http('POST', '/agentnew/ajax_set_pdd_delivered_delayed_submit_hour', {
hour: this.selectAllowPddDeliveredDelayedSubmit === true ? this.pddDeliveredDelayedSubmitHour : 0,
}).then(response => {
this.$nextTick(() => {
if (response.status) {
this.$Message.success(response.info);
this.dialogVisibleDelReport = false;
} else {
this.$Message.error(response.info);
}
})
}).catch(error => {
console.error(error, 'error')
})
}
},
handleClick() {
console.log(this.pddSettingActiveName);
if (this.pddSettingActiveName == 1) {
this.pddSettingConfirmText = '导出拼多多发货订单';
} else if (this.pddSettingActiveName == 2) {
this.pddSettingConfirmText = '确定';
}
},
handlePageChange({ page, endPage, direction }) {
console.log(endPage, 'endPage===');
this.orderListCurrentPage = page
const params = { page }
// 根据翻页方向设置参数
if (direction === 'prev') {
params.maxid = this.orderListPrevMaxId
if (this.orderListNextMinId) params.minid = null
} else if (direction === 'next') {
params.minid = this.orderListNextMinId
if (this.orderListPrevMaxId) params.maxid = null
} else if (direction === 'last') {
params.end_page = 1
params.page = null
params.minid = null
params.maxid = null
}
this.getOrderList(params)
},
},
computed: {
},
watch: {
'$route'() {
// 执行数据更新逻辑
this.pageTab = this.list_type
if (this.pageTab === 'check') {
this.pageTitle = '查重订单'
} else if (this.pageTab === 'ai') {
this.pageTitle = 'AI写作订单'
}
this.getOrderList()
this.resetSearchParams()
this.resetPageParams()
}
},
}
</script>
<style lang="scss" scoped>
.custom-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
width: 100%;
}
.flex-name2{
margin-top: 26px;
align-items: flex-start;
}
.pageheader {
display: flex;
justify-content: space-between;
/* 关键属性 */
align-items: center;
margin: 0px 0px 16px 0px;
}
.pagetitle {
font-size: 16px;
font-weight: bold;
line-height: normal;
letter-spacing: 0.08em;
color: #1E2226;
margin-top: 8px;
}
.elementWrap {
padding: 32px 36px;
background: #fff;
}
.operateBtns {
padding: 17px 0;
border-bottom: 1px solid #DFE2E6;
margin-bottom: 24px;
}
::v-deep .custom-popover {
position: fixed !important;
// max-height: 290px;
// overflow-y: auto;
margin-top: 0 !important;
margin-left: 0 !important;
transform: none !important;
}
.noWrap{
white-space: nowrap;
color: #626573;
}
.wh-16 {
width: 16px;
height: 16px;
z-index: 1;
}
.mt-16 {
margin-top: 16px;
}
.mb-10 {
margin-bottom: 10px;
}
.mr-12 {
margin-right: 12px;
}
.mr-24 {
margin-right: 24px;
}
.mr-32 {
margin-right: 32px;
}
.my-32 {
margin-bottom: 32px;
margin-top: 32px;
}
a {
text-decoration: none;
color: #006AFF;
}
a:hover {
text-decoration: underline;
}
.ml-7 {
margin-left: 7px;
}
.status-item {
height: 22px;
display: flex;
justify-content: center;
align-items: center;
gap: 6px;
z-index: 0;
padding: 2px 10px;
border-radius: 4px;
}
.divgreen {
background: rgba(239, 255, 224, 0.5);
box-sizing: border-box;
border: 1px solid rgba(0, 194, 97, 0.6);
}
.fontgreen {
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: normal;
line-height: normal;
text-align: center;
letter-spacing: 0.08em;
color: #0DAF49;
}
.divblue {
background: #F2F7FF;
box-sizing: border-box;
border: 1px solid #BFDAFF;
}
.fontblue {
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: normal;
line-height: normal;
text-align: center;
letter-spacing: 0.08em;
color: #006AFF;
}
.divred {
background: #FFF1F0;
box-sizing: border-box;
border: 1px solid #FFA39E;
}
.fontred {
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: normal;
line-height: normal;
text-align: center;
letter-spacing: 0.08em;
color: #FF4D4F;
}
.divgray {
background: #F6F7FA;
box-sizing: border-box;
border: 1px solid #DFE2E6;
}
.fontgray {
color: #626573;
}
.divorange {
background: #FFFBF2;
box-sizing: border-box;
border: 1px solid rgba(251, 131, 45, 0.38);
}
.fontorange {
color: #FB832D;
}
.divpurple {
background: #F9F2FF;
box-sizing: border-box;
border: 1px solid rgba(126, 118, 253, 0.28);
}
.fontpurple {
color: #6258FF;
}
.checktitle {
/* body/body 2_bold */
font-family: Microsoft YaHei UI;
font-size: 14px;
font-weight: bold;
line-height: normal;
letter-spacing: 0.08em;
/* text/text_1 */
color: #1E2226;
}
.el-form-item {
margin-bottom: 0px
}
</style>