|
@@ -1,174 +1,217 @@
|
|
|
|
+<script setup>
|
|
|
|
+import { onMounted, reactive, ref } from "vue";
|
|
|
|
+import sHeader from "@/components/SimpleHeader";
|
|
|
|
+import { getSellConfList } from "@/service/buyOrSell";
|
|
|
|
+import { showFailToast } from "vant";
|
|
|
|
+import { getLoginUser, styleUrl } from "@/common/js/utils";
|
|
|
|
+import dateUtil from "@/utils/dateUtil";
|
|
|
|
+import { useRouter } from 'vue-router'
|
|
|
|
+import { useTradeStore } from '@/stores/trade';
|
|
|
|
+
|
|
|
|
+// 状态,0未确认,1已确认,2特殊取消
|
|
|
|
+const showStatusText = (statusVal) => {
|
|
|
|
+ const statusMap = {
|
|
|
|
+ 0: '未确认',
|
|
|
|
+ 1: '已确认',
|
|
|
|
+ 2: '特殊取消',
|
|
|
|
+ }
|
|
|
|
+ return statusMap[statusVal] || '未知状态';
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const router = useRouter()
|
|
|
|
+
|
|
|
|
+const user = getLoginUser();
|
|
|
|
+const loading = ref(false); // 加载状态
|
|
|
|
+const error = ref(false); // 错误状态
|
|
|
|
+const finished = ref(false); // 结束翻页状态
|
|
|
|
+const sellConfList = ref([]); // 列表集合
|
|
|
|
+const sellConfListTotal = ref(0); // 列表总数
|
|
|
|
+let searchParams = reactive({
|
|
|
|
+ current: 1, // 当前页,默认第一页
|
|
|
|
+ size: 10, // 页大小,默认10条
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 查询列表
|
|
|
|
+const searchGetList = () => {
|
|
|
|
+ sellConfList.value = [];
|
|
|
|
+ searchParams.current = 1;
|
|
|
|
+ getList();
|
|
|
|
+};
|
|
|
|
+// 获取新人账号注册审批列表数据
|
|
|
|
+const getList = async () => {
|
|
|
|
+ finished.value = false;
|
|
|
|
+ const { data } = await getSellConfList(
|
|
|
|
+ Object.assign({}, searchParams)
|
|
|
|
+ );
|
|
|
|
+ if (data.code === "00000") {
|
|
|
|
+ console.log("data.data >>>", data.data);
|
|
|
|
+ console.log("object");
|
|
|
|
+ if (searchParams.current === 0) {
|
|
|
|
+ sellConfList.value = [];
|
|
|
|
+ }
|
|
|
|
+ // 列表值叠加
|
|
|
|
+ sellConfList.value = sellConfList.value.concat(
|
|
|
|
+ data.data.records
|
|
|
|
+ );
|
|
|
|
+ sellConfListTotal.value = data.data.total;
|
|
|
|
+ if (sellConfList.value.length === data.data.total) {
|
|
|
|
+ finished.value = true;
|
|
|
|
+ }
|
|
|
|
+ loading.value = false;
|
|
|
|
+ } else {
|
|
|
|
+ showFailToast(data.message);
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const showDateTime = (date) => {
|
|
|
|
+ return date
|
|
|
|
+ ? dateUtil.formateDate(new Date(date), "yyyy-MM-dd hh:mm:ss")
|
|
|
|
+ : "";
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// const userStore = useUserStore();
|
|
|
|
+const tradeStore = useTradeStore();
|
|
|
|
+// 去付款
|
|
|
|
+const toBuy = (item) => {
|
|
|
|
+ // userStore.setUserInfo(item);
|
|
|
|
+ tradeStore.setTradeItem(item);
|
|
|
|
+ router.push({ name: 'buyConf' });
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// 滚动加载
|
|
|
|
+const onLoad = () => {
|
|
|
|
+ if (!finished.value) {
|
|
|
|
+ searchParams.current = searchParams.current + 1;
|
|
|
|
+ getList();
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+// 是否有操作的权限
|
|
|
|
+const isOper = ref(true);
|
|
|
|
+// 初始化页面获取列表
|
|
|
|
+onMounted(async () => {
|
|
|
|
+ // 加载样式
|
|
|
|
+ styleUrl('sellConfList');
|
|
|
|
+ if (user) {
|
|
|
|
+ searchGetList();
|
|
|
|
+
|
|
|
|
+ // 如果不是admin账号,不能有操作权限
|
|
|
|
+ if (user.userName != 'admin') {
|
|
|
|
+ isOper.value = false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+</script>
|
|
|
|
+
|
|
<template>
|
|
<template>
|
|
- <div class="sellConfList">
|
|
|
|
- <s-header name="卖家确认列表" :noback="false"></s-header>
|
|
|
|
-
|
|
|
|
- <div class="headCon l-flex-between o-plr-20 o-pt-26 o-pb-12 kBordBott">
|
|
|
|
- <div class="l-flex-RC">
|
|
|
|
- <div class="ruleIcon"></div>
|
|
|
|
- <div class="c-text-color c-text-b c-text-15">
|
|
|
|
- 共
|
|
|
|
- <span class="c-text-20" style="color: #df5e4c">{{ patchTotal }}</span>
|
|
|
|
- 条记录
|
|
|
|
|
|
+ <!-- 卖家确认列表 -->
|
|
|
|
+ <div class="sellConfList flex-col">
|
|
|
|
+ <s-header name="卖出确认" :noback="false"></s-header>
|
|
|
|
+
|
|
|
|
+ <div class="sellConfBox flex-col">
|
|
|
|
+ <van-list v-model:loading="loading" v-model:error="error" :error-text="$t('common.reqFailClkReload')"
|
|
|
|
+ :finished="finished" :finished-text="$t('common.noMoreTxt')" offset="300" :immediate-check="false"
|
|
|
|
+ @load="onLoad">
|
|
|
|
+ <div class="searchRow flex-row justify-between">
|
|
|
|
+ <div class="flex-col">
|
|
|
|
+ <div class="flex-row justify-between bd3">
|
|
|
|
+ <!-- 图标 -->
|
|
|
|
+ <!-- <div class="flex-col outer4 proportionIcon"></div> -->
|
|
|
|
+ <span class="flex-col txt2">{{ $t("taskMessage.total")
|
|
|
|
+ }}<span class="discountNumber">{{ sellConfListTotal }}</span>{{
|
|
|
|
+ $t("taskMessage.recordsInTotal") }}</span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
|
|
|
|
- <div class="contentCon">
|
|
|
|
- <van-pull-refresh disabled v-model="refreshing" @refresh="onRefresh">
|
|
|
|
- <div v-for="(item, index) in tableData" :key="index">
|
|
|
|
- <br />
|
|
|
|
- <van-cell-group inset @click="toSetupAccount(item)">
|
|
|
|
- <van-cell>
|
|
|
|
- <template #title>
|
|
|
|
- <div class="l-flex-RC">
|
|
|
|
- <span class="c-color c-text-12">姓名:</span>
|
|
|
|
- <span class="c-text-color c-text-12">{{ item.actualName }}</span>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- <template #label>
|
|
|
|
- <div class="l-flex-RC">
|
|
|
|
- <span class="c-color c-text-12">手机号:</span>
|
|
|
|
- <span class="c-text-color c-text-12">{{ item.phone }}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="l-flex-RC">
|
|
|
|
- <span class="c-color c-text-12">支付宝账号:</span>
|
|
|
|
- <span class="c-text-color c-text-12">{{ item.payeeCode }}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="l-flex-RC">
|
|
|
|
- <span class="c-color c-text-12">部门号:</span>
|
|
|
|
- <span class="c-text-color c-text-12">{{ getDeptName(item.deptId) }}</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="l-flex-RC">
|
|
|
|
- <span class="c-color c-text-12">申请时间:</span>
|
|
|
|
- <span class="c-text-color c-text-12">{{ Format_time(item.createTime) }}</span>
|
|
|
|
- </div>
|
|
|
|
- <!-- 确认状态 status:0 未确认...,1 已确认✓ -->
|
|
|
|
- <div class="itemRow" style="display: flex; justify-content: flex-end">
|
|
|
|
- <span v-if="item.status === '0' && user.type > 1" style="color: #FFA500"> {{
|
|
|
|
- $t('taskMessage.toBeApproved') }}</span>
|
|
|
|
- <span v-if="item.status === '1'" style="color: #1989fa"> {{
|
|
|
|
- $t('taskMessage.adopt') }}</span>
|
|
|
|
- <span v-if="item.status === '2'" style="color: #ff0000"> {{
|
|
|
|
- $t('taskMessage.fail') }}</span>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- </template>
|
|
|
|
- <br />
|
|
|
|
-
|
|
|
|
- </van-cell>
|
|
|
|
- </van-cell-group>
|
|
|
|
|
|
+ <div class="listBox">
|
|
|
|
+ <div v-for="(item) in sellConfList" :key="item.id" class="listItem">
|
|
|
|
+ <div class="itemBox">
|
|
|
|
+
|
|
|
|
+ <div class="itemRow">
|
|
|
|
+ <span class="itemTitle">挂单价格: </span>{{
|
|
|
|
+ item.price }}
|
|
|
|
+ </div>
|
|
|
|
+ <div class="itemRow">
|
|
|
|
+ <span class="itemTitle">委托数量: </span>{{
|
|
|
|
+ item.entrustNumber }}
|
|
|
|
+ </div>
|
|
|
|
+ <div class="itemRow">
|
|
|
|
+ <span class="itemTitle">挂单类型: </span>{{
|
|
|
|
+ showTypeText(item.type) }}
|
|
|
|
+ </div>
|
|
|
|
+ <!-- 状态:0过期,1生效,2撤单,3全部成交,4部分成交 -->
|
|
|
|
+ <div class="itemRow">
|
|
|
|
+ <span class="itemTitle">状态: </span>{{
|
|
|
|
+ showStatusText(item.status) }}
|
|
|
|
+ </div>
|
|
|
|
+ <!-- if 0,1 不显示其他 -->
|
|
|
|
+ <!-- if 2 显示撤单时间 -->
|
|
|
|
+ <div v-if="item.status === '2'" class="itemRow">
|
|
|
|
+ <span class="itemTitle">撤单时间: </span>{{
|
|
|
|
+ item.cancelTime }}
|
|
|
|
+ </div>
|
|
|
|
+ <!-- if 3,4 显示成交数量 -->
|
|
|
|
+ <div v-if="item.status === '3' || item.status === '4'" class="itemRow">
|
|
|
|
+ <span class="itemTitle">成交数量: </span>{{
|
|
|
|
+ item.tradeNumber }}
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 创建时间 -->
|
|
|
|
+ <div class="itemRow">
|
|
|
|
+ <span class="itemTitle">创建时间: </span>{{
|
|
|
|
+ showDateTime(item.createTime) }}
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 卖家确认时间 -->
|
|
|
|
+ <div class="itemRow" v-if="item.status === '1'">
|
|
|
|
+ <span class="itemTitle">卖家确认时间: </span>{{
|
|
|
|
+ showDateTime(item.sellerConfirmTime)
|
|
|
|
+ }}
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 去付款 -->
|
|
|
|
+ <div v-if="item.status === '3' || item.status === '4'" class="itemRow"
|
|
|
|
+ style="display: flex; justify-content: flex-end">
|
|
|
|
+ <van-button span="5" round type="primary" :style="{
|
|
|
|
+ height: '2em',
|
|
|
|
+ padding: '0 1.2em',
|
|
|
|
+ margin: '0 1em',
|
|
|
|
+ backgroundColor: 'rgb(200, 55, 95 / 80%)', // 红色背景,不透明度为100%
|
|
|
|
+ color: '#fff', // 文字颜色为白色
|
|
|
|
+ boxShadow: '0 2px 8px rgba(255, 55, 95, 0.3)', // 添加阴影效果
|
|
|
|
+ transition: 'all 0.3s ease' // 添加过渡效果,使变化更平滑
|
|
|
|
+ }" @click="toBuy(item)">
|
|
|
|
+ 付款
|
|
|
|
+ </van-button>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="itemRow" style="display: flex; justify-content: flex-end">
|
|
|
|
+ <!-- 已确认 -->
|
|
|
|
+ <span v-if="item.status === '1'" style="color: #4fc08d">{{
|
|
|
|
+ showStatusText(item.status)
|
|
|
|
+ }}</span>
|
|
|
|
+ <!-- 特殊取消 -->
|
|
|
|
+ <span v-if="item.status === '2'" style="color: #ff0000">{{
|
|
|
|
+ showStatusText(item.status)
|
|
|
|
+ }}</span>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
- </van-pull-refresh>
|
|
|
|
|
|
+ </van-list>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
-
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
-<script>
|
|
|
|
-import sHeader from "@/components/SimpleHeader";
|
|
|
|
-import { ref, onMounted, toRefs, reactive } from "vue";
|
|
|
|
-import { styleUrl } from "../../common/js/utils";
|
|
|
|
-import { useRouter } from "vue-router";
|
|
|
|
-import { getPageUserApply } from "@/service/taskAccount";
|
|
|
|
-import { Format_time } from "@/common/js/utils";
|
|
|
|
-
|
|
|
|
-export default {
|
|
|
|
- components: { sHeader },
|
|
|
|
- setup() {
|
|
|
|
-
|
|
|
|
- onMounted(() => {
|
|
|
|
- // 加载样式
|
|
|
|
- styleUrl('taskAccount');
|
|
|
|
- onRefresh();
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- // 多少条规则
|
|
|
|
- const patchTotal = ref(0);
|
|
|
|
- // 分页
|
|
|
|
- const pageNo = ref(1);
|
|
|
|
- const pageSize = ref(10);
|
|
|
|
- let ruleData = reactive({
|
|
|
|
- tableData: [],
|
|
|
|
- });
|
|
|
|
- // 上拉刷新
|
|
|
|
- const loading = ref(true);
|
|
|
|
- const finished = ref(false);
|
|
|
|
- // 下拉刷新
|
|
|
|
- const onRefresh = (idx) => {
|
|
|
|
- ruleData.tableData = [];
|
|
|
|
- // 解决请求两次问题
|
|
|
|
- if (!idx) {
|
|
|
|
- finished.value = false;
|
|
|
|
- }
|
|
|
|
- loading.value = true;
|
|
|
|
- // 初始化分页
|
|
|
|
- pageNo.value = 1;
|
|
|
|
- pageSize.value = 10;
|
|
|
|
- getList();
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
- // 上拉加载
|
|
|
|
- const onLoad = () => {
|
|
|
|
- pageNo.value++;
|
|
|
|
- getList();
|
|
|
|
- };
|
|
|
|
- // 下拉刷新
|
|
|
|
- const refreshing = ref(false);
|
|
|
|
- const getList = () => {
|
|
|
|
- let param = {
|
|
|
|
- current: pageNo.value,
|
|
|
|
- size: pageSize.value,
|
|
|
|
- };
|
|
|
|
- getPageUserApply(param).then((res) => {
|
|
|
|
- const { data } = res.data;
|
|
|
|
- refreshing.value = false;
|
|
|
|
- ruleData.tableData.push(...data.records);
|
|
|
|
- // 加载状态结束
|
|
|
|
- loading.value = false;
|
|
|
|
- // 总共
|
|
|
|
- patchTotal.value = data.total;
|
|
|
|
- if (ruleData.tableData.length >= data.total) {
|
|
|
|
- finished.value = true;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- };
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- // 获取部门名称
|
|
|
|
- // const getDeptName = computed(() => {
|
|
|
|
- // const deptId = {
|
|
|
|
- // '0': '研发部',
|
|
|
|
- // '1': '行政部',
|
|
|
|
- // };
|
|
|
|
- // return (item) => deptId[item.deptId] || '';
|
|
|
|
- // })
|
|
|
|
-
|
|
|
|
- const router = useRouter();
|
|
|
|
-
|
|
|
|
- const setupAccountObj = ref({});
|
|
|
|
- // 点击卡片,跳转对应的审核
|
|
|
|
- const toTaskAccount = (item) => {
|
|
|
|
- setupAccountObj.value = item;
|
|
|
|
- router.push("/taskAccount");
|
|
|
|
- }
|
|
|
|
|
|
|
|
- return {
|
|
|
|
- patchTotal,
|
|
|
|
- onRefresh,
|
|
|
|
- onLoad,
|
|
|
|
- getList,
|
|
|
|
- loading,
|
|
|
|
- finished,
|
|
|
|
- ...toRefs(ruleData),
|
|
|
|
- refreshing,
|
|
|
|
- // getTargetAreasText,
|
|
|
|
- Format_time,
|
|
|
|
- toTaskAccount
|
|
|
|
- };
|
|
|
|
- }
|
|
|
|
-};
|
|
|
|
-</script>
|
|
|
|
|
|
|
|
-<style lang="less" scoped></style>
|
|
|
|
|
|
+<style lang="less" scoped>
|
|
|
|
+@import "../../common/style/common.less";
|
|
|
|
+</style>
|