wxy 4 ماه پیش
والد
کامیت
e20fa1ebfe

+ 1 - 1
src/api/path/flowPool.api.js

@@ -8,7 +8,7 @@ export function addTrafficPool(param) {
 }
 // list
 export function trafficPoolList(param) {
-    return service.post('/admin/platform/trafficPoolList', param)
+    return service.post('/admin/platform/tariffList', param)
 }
 // 编辑
 export function updateTrafficPool(param) {

+ 5 - 0
src/api/path/order.js

@@ -33,4 +33,9 @@ export function AcquireOrdertariff(params){
 // 获取资费下的卡
 export function TariffOrderCard(params){
      return service.get("/admin/platform/getTariffCard", {params});
+}
+
+// 退卡
+export function ReturntheCard(data){
+     return service.post("/admin/sim/returnCard", data);
 }

+ 1 - 1
src/api/path/purchase.js

@@ -23,5 +23,5 @@ export function platformUpdate(params) {
 
 // 退卡
 export function cancelOrderList(params) {
-    return service.post("/admin/sim/cancelOrderList", params);
+    return service.post("/admin/sim/returnCardList", params);
 }

+ 13 - 10
src/views/flowPool/customerFlowPool/config.js

@@ -1,16 +1,19 @@
 export const columns = [
-    { title: window.$t('flowPool.poolNumber'), dataIndex: 'poolNumber', align: 'center', width: 200 },
+    { title: window.$t('flowPool.poolNumber'), dataIndex: 'id', align: 'center', width: 200 },
     { title: window.$t('flowPool.label'), dataIndex: 'label', align: 'center', width: 200 },
     // { title: window.$t('flowPool.userId'), dataIndex: 'user_id', align: 'center', width: 200 },
-    { title: window.$t('flowPool.trafficPoolType'), dataIndex: 'trafficPoolType', align: 'center', width: 200 },
+    // { title: window.$t('flowPool.trafficPoolType'), dataIndex: 'trafficPoolType', align: 'center', width: 200 },
     { title: window.$t('flowPool.trafficPoolStatus'), dataIndex: 'trafficPoolStatus', align: 'center', width: 200 },
-    { title: window.$t('flowPool.cardFlow'), dataIndex: 'cardFlow', align: 'center', width: 200 },
-    { title: window.$t('flowPool.UsedMonth'), dataIndex: 'UsedMonth', align: 'center', width: 200 },
-    { title: window.$t('flowPool.surplusFlow'), dataIndex: 'surplusFlow', align: 'center', width: 200 },
-    { title: window.$t('flowPool.exceededFlow'), dataIndex: 'exceededFlow', align: 'center', width: 200 },
+    // { title: window.$t('flowPool.cardFlow'), dataIndex: 'cardFlow', align: 'center', width: 200 },
+    // { title: window.$t('flowPool.UsedMonth'), dataIndex: 'UsedMonth', align: 'center', width: 200 },
+    // { title: window.$t('flowPool.surplusFlow'), dataIndex: 'surplusFlow', align: 'center', width: 200 },
+    // { title: window.$t('flowPool.exceededFlow'), dataIndex: 'exceededFlow', align: 'center', width: 200 },
     { title: window.$t('flowPool.source'), dataIndex: 'sourceName', align: 'center', width: 200 },
-    { title: window.$t('flowPool.cardRariffName'), dataIndex: 'cardRariffName', align: 'center', width: 200 },
-    { title: window.$t('flowPool.cardNum'), dataIndex: 'cardNum', align: 'center', width: 200 },
-    { title: window.$t('flowPool.totalFlow'), dataIndex: 'totalFlow', align: 'center', width: 200 },
-    { title: window.$t('flowPool.updated_at'), dataIndex: 'updated_at', align: 'center', width: 200 },
+    { title: window.$t('flowPool.tariffName'), dataIndex: 'simTariffName', align: 'center', width: 200 },
+    { title: window.$t('flowPool.ActivatedName'),dataIndex:'Activated', align: 'center', width: 200 },
+    { title: window.$t('flowPool.HaveBeenUsedName'), dataIndex: 'HaveBeenUsed', align: 'center', width: 200 },
+    // { title: window.$t('flowPool.cardRariffName'), dataIndex: 'cardRariffName', align: 'center', width: 200 },
+    // { title: window.$t('flowPool.cardNum'), dataIndex: 'cardNum', align: 'center', width: 200 },
+    // { title: window.$t('flowPool.totalFlow'), dataIndex: 'totalFlow', align: 'center', width: 200 },
+    { title: window.$t('flowPool.updated_at'), dataIndex: 'updatedAt', align: 'center', width: 200 },
 ]

+ 0 - 2
src/views/flowPool/customerFlowPool/index.vue

@@ -78,8 +78,6 @@ const rowSelection = reactive({
 });
 const selectedKeys = ref([])
 
-
-
 const intData = async () => {
     const param = {
         current: pagination.value.current,

+ 1 - 1
src/views/lotCard/cardList/config.js

@@ -6,7 +6,7 @@ export const columns = [
   { title: 'SIM货币余额', dataIndex: 'moneyBalances', align: 'center', ellipsis:true  },
   { title: 'SIM生成日期', dataIndex: 'createTime', align: 'center',  ellipsis:true },
   { title: '支付方式', dataIndex: 'payType', align: 'center', ellipsis:true  },
-  { title: 'SIM状态', slotName: 'accountStatus', align: 'center', ellipsis:true  },
+  { title: 'SIM状态', dataIndex: 'accountStatus', align: 'center', ellipsis:true  },
   { title: '已使用总流量', dataIndex: 'dataUsageTotal', align: 'center',  ellipsis:true },
   { title: '语音呼入分钟数', dataIndex: 'voiceMtTotal', align: 'center', ellipsis:true  },
   { title: '语音呼出分钟数', dataIndex: 'voiceMoTotal', align: 'center', ellipsis:true  },

+ 4 - 2
src/views/lotCard/cardList/index.vue

@@ -98,18 +98,20 @@ const intData = async () => {
     ...searchForm.value,
   }
   const soureName = await Getdictionary('source')
-  const accountStatus = await Getdictionary('accountStatus')
+  const accountStatusName = await Getdictionary('account')
   const { data } = await cardInfoList(param)
   dataSource.value = (data.records || []).map((item) => {
     const payType = item.payType == 0 ? 'Prepay' : 'Postpay';
     const dataPackage = item.Info.dataPackage.map(res => res.productName).join(',');
     const soure = soureName.find(val => val.value == item.source)?.label
+    const accountStatus = accountStatusName.find(val=>val.value == item.Info.accountStatus)?.label
     return {
       ...item,
       ...item.Info,
       payType: payType,
       dataPackageName: dataPackage,
-      sourceName: soure
+      sourceName: soure,
+      accountStatus
     }
   })
   pagination.value.total = data.total

+ 2 - 1
src/views/order/BuyCard/detaile.vue

@@ -111,7 +111,7 @@ const state = ref({
     userType: JSON.parse(localStorage.getItem('user_login_information'))?.userType, // 1平台 2用户
 })
 const { tariffForm, showCard,res1,res2,res3,userType } = toRefs(state.value)
-const columnsDetail = [{ title: 'ICCID', dataIndex: 'iccid' }
+const columnsDetail = [{ title: 'ICCID', dataIndex: 'iccid' },{ title: '卡状态', dataIndex: 'status' },{ title: '创建时间', dataIndex: 'expireTime' }
 ]
 const dataDetail = ref([])
 
@@ -141,6 +141,7 @@ watch(() => FormDataList.value, val => {
         tariffForm.value.TariffInfomr = res.data.trafficBilling + '/' + res.data.trafficBillingType
         tariffForm.value.pricingName = tariffForm.value.pricing !== '' ? tariffForm.value.pricing + '/' + res3.value.filter(val => val.value == res.data.currency)[0]?.label : '';
     })
+    dataDetail.value = []
     TariffOrderCard({id:val.trafficId}).then(res=>{
         dataDetail.value = res.data
     })

+ 22 - 17
src/views/order/BuyCard/index.vue

@@ -3,10 +3,10 @@
   <div class="silent-expire-alarm">
     <!-- 搜索条件区 -->
     <div class="search-section">
-      <Search/>
+      <Search />
     </div>
     <div class="audit-btn" v-if="userType == 2">
-      <a-button @click="showAudit=true" type="text">
+      <a-button @click="showAudit = true" type="text">
         <template #icon>
           <icon-plus-circle />
         </template>
@@ -36,14 +36,13 @@
       </template>
       <template #operate="{ record }">
         <div v-if="userType == 1">
-          <a-button type="text" v-if="record.moderationStatus == 1" @click="statusOrder(record)">审核</a-button>
+          <a-button type="text" v-if="record.moderationStatus == 1 && record.status == 1"
+            @click="statusOrder(record)">审核</a-button>
           <a-button @click="uploadModal(record)" type="text">{{ record.contractImg == '' ? '上传合同' : '查看合同' }}</a-button>
         </div>
         <div v-if="userType == 2">
-          <a-popconfirm :content="`是否确认退订?`" type="warning" @ok="adminCancel(record)"
-            v-if="record.moderationStatus != 3">
-            <a-button type="text">退订</a-button>
-          </a-popconfirm>
+          <a-button type="text" @click="adminCancel(record)"
+            v-if="record.moderationStatus == 2 && userType !== 1">退订</a-button>
           <a-button @click="openDetail(record)" type="text">查看</a-button>
         </div>
       </template>
@@ -65,9 +64,10 @@
       </a-form>
     </a-modal>
 
-    <Card v-model:modelValue="showAudit" @submit="intData()"/>
-    <Status v-model:modelValue="showStatus" @submit="intData()" :FormDataList="FormDataList"/>
-    <Detaile v-model:modelValue="showDetail" @submit="intData()" :FormDataList="FormDataList"/>
+    <Card v-model:modelValue="showAudit" @submit="intData()" />
+    <Status v-model:modelValue="showStatus" @submit="intData()" :FormDataList="FormDataList" />
+    <Detaile v-model:modelValue="showDetail" @submit="intData()" :FormDataList="FormDataList" />
+    <returnCard v-model:modelValue="showReturn" :ReturnData="ReturnData" :id="id" @submit="intData()"></returnCard>
   </div>
 </template>
 
@@ -75,13 +75,14 @@
 import { ref, onMounted, toRefs } from 'vue';
 import { Message } from '@arco-design/web-vue';
 import { purchaseOrderList, platformUpdate, adminUpdate } from '@/api/path/purchase';
-import {  UploadOrderCardContract } from '@/api/path/order'
+import { UploadOrderCardContract,TariffOrderCard } from '@/api/path/order'
 import { Getdictionary } from '@/mixins/index.js'
 import Upload from "@/components/upload/index.vue";
 import Card from './Card.vue'
 import Status from './status.vue'
 import Detaile from './detaile.vue'
 import Search from '@/components/Search/index.vue'
+import returnCard from './returnCard.vue'
 // 数据层
 const state = ref({
   userName: localStorage.getItem('remember_user_name'),
@@ -102,6 +103,9 @@ const state = ref({
   }, // 文件上传列表
   showDetail: false,
   uploadContract: false,
+  showReturn: false,
+  ReturnData:[],
+  id:null
 });
 
 const {
@@ -114,6 +118,9 @@ const {
   formContract,
   showDetail,
   uploadContract,
+  showReturn,
+  ReturnData,
+  id
 } = toRefs(state.value);
 
 const columns = [
@@ -158,13 +165,11 @@ const intData = async () => {
 }
 // 用户退订
 const adminCancel = (data) => {
-  const param = {
-    id: data.id,
-    status: data.status
-  }
-  adminUpdate(param).then(res => {
-    intData();
+  TariffOrderCard({id:data.trafficId}).then(res => {
+    ReturnData.value = res.data || []
   })
+  id.value = data.id
+  showReturn.value = true
 }
 // 分页
 const evChangePage = (page) => {

+ 50 - 0
src/views/order/BuyCard/returnCard.vue

@@ -0,0 +1,50 @@
+<template>
+    <a-modal v-model:visible="modelValue" width="800px" title="退卡" @cancel="cancel" @ok="submitStatus" okText="确认"
+        cancelText="取消">
+        <a-table row-key="iccid" :columns="columns" :data="data" :row-selection="rowSelection"
+             v-model:selectedKeys="selectedKeys" :pagination="pagination" />
+    </a-modal>
+</template>
+
+<script setup>
+import { ref, defineProps, toRef, defineEmits,watch} from 'vue';
+import { Message } from '@arco-design/web-vue';
+import {ReturntheCard} from '@/api/path/order'
+const props = defineProps({
+    modelValue: {
+        type: Boolean,
+        default: false
+    },
+    ReturnData:Array,
+    id:String,
+})
+const modelValue = toRef(props, 'modelValue')
+const emit = defineEmits(['update:modelValue', 'submit'])
+const selectedKeys = ref([])
+const columns = [{ title: 'ICCID', dataIndex: 'iccid' },{ title: '卡状态', dataIndex: 'status' },{ title: '创建时间', dataIndex: 'expireTime' }]
+const data = ref()
+const rowSelection = ref({
+      type: 'checkbox',
+      showCheckedAll: true,
+      onlyCurrent: false,
+    });
+const cancel = ()=>{
+    emit('update:modelValue', false)
+    data.value = []
+}
+const submitStatus = async () => {
+    if(selectedKeys.value.length === 0){
+        Message.warning('请选择ICCID')
+        return
+    }
+    await ReturntheCard({iccids:selectedKeys.value,id:props.id})
+    emit('update:modelValue', false)
+    emit('submit',true)
+    data.value = []
+}
+watch(()=>props.ReturnData,val=>{
+  data.value = val
+},{deep: true})
+</script>
+<style scoped>
+</style>

+ 2 - 2
src/views/order/ReturnCard/detaile.vue

@@ -62,7 +62,7 @@
             </div>
             <div class="detail-item-box">
                 <div class="detail-item">
-                    <div class="item-label">续期数量</div>
+                    <div class="item-label">退卡数量</div>
                     <div class="item-content">{{ dataDetail.length }}
                     </div>
                 </div>
@@ -98,7 +98,7 @@ const state = ref({
     res3:[],
 })
 const { tariffForm,res1,res2,res3 } = toRefs(state.value)
-const columnsDetail = [{ title: 'ICCID', dataIndex: 'iccid' }
+const columnsDetail = [{ title: 'ICCID', dataIndex: 'iccid' },{ title: '卡状态', dataIndex: 'status' },{ title: '创建时间', dataIndex: 'expireTime' }
 ]
 const dataDetail = ref([])
 

+ 1 - 1
src/views/order/ReturnCard/index.vue

@@ -19,7 +19,7 @@
         <div class="line_heis" @click="openDetail(record)">{{ record.id }}</div>
       </template>
       <template #operate="{ record }">
-        <a-button type="primary" @click="showAudit = true">审核</a-button>
+        <a-button type="primary" @click="showAudit = true" v-if="record.moderationStatus==1 && record.status==2">审核</a-button>
       </template>
     </a-table>