feat: 完善自动与手动派单流程

This commit is contained in:
richjohnrambo
2026-10-13 22:13:47 +08:00
parent 7eedbde4ab
commit dedacfcd9a
4 changed files with 128 additions and 29 deletions
+14 -7
View File
@@ -105,18 +105,18 @@
</section>
<section v-if="canSubmit" class="m-order-submit-panel">
<div>
<strong>任务已匹配成功</strong>
<p>请确认任务信息,提交后佣金将自动结算到可用余额。</p>
<strong>大额订单已匹配</strong>
<p>请确认订单信息。提交时将校验可用余额,余额不足需先完成储入。</p>
</div>
<button type="button" :disabled="submitting" @click="showSubmitConfirm = true">立即提交</button>
<button type="button" :disabled="submitting" @click="showSubmitConfirm = true">提交确认</button>
</section>
</div>
</AsyncState>
<n-modal v-model:show="showSubmitConfirm" :mask-closable="!submitting">
<section class="m-order-submit-confirm">
<h2>确认提交任务</h2>
<p>提交后系统将自动完成订单并发放佣金,请确认订单信息无误。</p>
<h2>确认提交订单</h2>
<p>系统将校验账户余额并完成订单;余额不足时需要先前往储入。</p>
<dl>
<div><dt>记录编号</dt><dd>{{ detail?.order_no || '--' }}</dd></div>
<div><dt>任务商品</dt><dd>{{ detail?.product?.name || '--' }}</dd></div>
@@ -124,7 +124,7 @@
</dl>
<div class="m-order-submit-actions">
<button type="button" :disabled="submitting" @click="showSubmitConfirm = false">暂不提交</button>
<button type="button" :disabled="submitting" @click="submitOrder">{{ submitting ? '提交中...' : '立即提交' }}</button>
<button type="button" :disabled="submitting" @click="submitOrder">{{ submitting ? '提交中...' : '确认提交' }}</button>
</div>
</section>
</n-modal>
@@ -133,13 +133,14 @@
<script setup lang="ts">
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';
import { useRoute } from 'vue-router';
import { useRoute, useRouter } from 'vue-router';
import { ImageOutline } from '@vicons/ionicons5';
import PageHeader from '../components/PageHeader.vue';
import AsyncState from '../components/AsyncState.vue';
import { MobileApiError, dateTime, errorText, money, request, safeImage } from '../api';
const route = useRoute();
const router = useRouter();
const isDetail = computed(() => Boolean(route.params.id));
const loading = ref(true);
const error = ref('');
@@ -226,6 +227,12 @@
window.$message.success('提交成功,佣金已自动入账');
await loadDetail();
} catch (err) {
if (err instanceof MobileApiError && err.reason === 'INSUFFICIENT_BALANCE') {
showSubmitConfirm.value = false;
window.$message.warning('账户余额不足,请先完成储入');
await router.push('/app/recharge');
return;
}
window.$message.error(errorText(err));
if (err instanceof MobileApiError && err.reason === 'ORDER_EXPIRED') {
showSubmitConfirm.value = false;