This commit is contained in:
ChenQiuYu 2025-05-16 14:14:34 +08:00
parent 04eb4378ab
commit 38243fda48
10 changed files with 424 additions and 302 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@ -16,6 +16,7 @@
</template> </template>
</el-input> </el-input>
<div class="list"> <div class="list">
<el-scrollbar>
<table class="table" style="border-spacing: 0"> <table class="table" style="border-spacing: 0">
<thead style="background:#F1F5FB"> <thead style="background:#F1F5FB">
<tr class="table-title" style="background: #f1f5fb"> <tr class="table-title" style="background: #f1f5fb">
@ -42,6 +43,7 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
</el-scrollbar>
</div> </div>
</div> </div>
</template> </template>
@ -280,10 +282,12 @@ const addTraceAbilityCodeHandler = (item: any, code: any) => {
align-items: center; align-items: center;
padding: 24px; padding: 24px;
} }
table, tbody, td { table, tbody, td {
border-bottom: 1px solid #EAEAEC; /* 明确设置边框 */ border-bottom: 1px solid #EAEAEC; /* 明确设置边框 */
} }
table{
table {
border: none; border: none;
} }
</style> </style>

View File

@ -16,27 +16,26 @@
></el-input> ></el-input>
</template> </template>
<template #default> <template #default>
<table class="table" style="border-spacing: 0"> <div style="width: 100%;max-height: 20px">
<thead> <el-table :data="item.traceAbilityCodeList" :max-height="300" style="width: 100%"
<tr class="table-title"> :header-cell-style="{background: '#F1F5FB'}">
<th>追溯码</th> <el-table-column prop="value" label="追溯码" show-overflow-tooltip>
<th>操作</th> <template #default="scope">
</tr> {{ scope.row }}
</thead> </template>
<tbody class="table-body"> </el-table-column>
<tr v-for="(item,index) in item.traceAbilityCodeList" :key="index"> <el-table-column label="操作" width="80">
<td>{{ item }}</td> <template #default="scope">
<td> <span style="color: #ff0000" @click="removeTraceAbility(scope.row)">
<div @click="removeTraceAbility(item)">
<el-icon> <el-icon>
<Delete/> <Delete/>
</el-icon> </el-icon>
删除 删除
</span>
</template>
</el-table-column>
</el-table>
</div> </div>
</td>
</tr>
</tbody>
</table>
</template> </template>
</el-popover> </el-popover>
</template> </template>
@ -96,9 +95,11 @@ const removeTraceAbility = (code: any) => {
<style scoped lang="scss"> <style scoped lang="scss">
.table { .table {
width: 100%; width: 100%;
th { th {
background: none !important; background: none !important;
} }
.table-title { .table-title {
width: 100%; width: 100%;
height: 36px; height: 36px;
@ -108,19 +109,23 @@ const removeTraceAbility = (code: any) => {
font-style: normal; font-style: normal;
padding: 0 25px; padding: 0 25px;
background: #F5FAFF; background: #F5FAFF;
th { th {
text-align: left; text-align: left;
&:first-child { &:first-child {
width: 270px; width: 270px;
padding-left: 24px; padding-left: 24px;
overflow: hidden; overflow: hidden;
} }
&:last-child { &:last-child {
text-align: center; text-align: center;
line-height: 36px; line-height: 36px;
} }
} }
} }
.table-body { .table-body {
height: 52px; height: 52px;
font-weight: 500; font-weight: 500;
@ -128,12 +133,14 @@ const removeTraceAbility = (code: any) => {
color: #666666; color: #666666;
font-style: normal; font-style: normal;
padding: 0 25px; padding: 0 25px;
tr { tr {
height: 36px; height: 36px;
font-size: 14px; font-size: 14px;
color: #333333; color: #333333;
font-weight: 500; font-weight: 500;
font-style: normal; font-style: normal;
td { td {
height: 36px; height: 36px;
@ -160,6 +167,7 @@ const removeTraceAbility = (code: any) => {
table, tbody, td { table, tbody, td {
border-bottom: 1px solid #EAEAEC; /* 明确设置边框 */ border-bottom: 1px solid #EAEAEC; /* 明确设置边框 */
overflow: hidden;
} }
table { table {

View File

@ -46,7 +46,7 @@ const handleSelect = (item: any) => {
<div class="search_box"> <div class="search_box">
<el-select-v2 <el-select-v2
v-model="state" v-model="state"
style="width: 100%" style="width: 500px;height: 100%"
filterable filterable
remote remote
ref="selectRef" ref="selectRef"
@ -54,6 +54,9 @@ const handleSelect = (item: any) => {
:options="options" :options="options"
placeholder="输入关键字搜索药品" placeholder="输入关键字搜索药品"
> >
<template #prefix>
<span class="iconfont icon-RectangleCopy"></span>
</template>
<template #header> <template #header>
<div class="header"> <div class="header">
<div class="text">药品</div> <div class="text">药品</div>
@ -91,8 +94,6 @@ const handleSelect = (item: any) => {
box-sizing: border-box; box-sizing: border-box;
margin-top: 10px; margin-top: 10px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.header { .header {
display: flex; display: flex;
@ -116,4 +117,7 @@ const handleSelect = (item: any) => {
white-space: nowrap; /* 防止换行 */ white-space: nowrap; /* 防止换行 */
} }
} }
:deep(.el-select__wrapper.is-filterable){
height: 42px;
}
</style> </style>

View File

@ -693,7 +693,6 @@ const contrastCodeConfirm = (data: any) => {
} }
let save = async (isClose:Boolean) => { let save = async (isClose:Boolean) => {
try { try {
await formRef.value.validate() await formRef.value.validate()
if (!edit_data.value.purchaseUnitPrice || edit_data.value.purchaseUnitPrice<1){ if (!edit_data.value.purchaseUnitPrice || edit_data.value.purchaseUnitPrice<1){
ElMessage.error('参考进价不能为空或小于1'); ElMessage.error('参考进价不能为空或小于1');

View File

@ -3,7 +3,8 @@
title="新增" :height="760" :show-footer="true"> title="新增" :height="760" :show-footer="true">
<div class="add-panel" v-loading="isLoading" element-loading-text="正在保存......"> <div class="add-panel" v-loading="isLoading" element-loading-text="正在保存......">
<div class="top"> <div class="top">
<el-form :model="inventory_order_data" label-position="top" :rules="formRules" ref="orderForm"> <el-form :model="inventory_order_data" label-position="top" style="height: 100%" :rules="formRules"
ref="orderForm">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="订单编号"> <el-form-item label="订单编号">
@ -48,12 +49,12 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item prop="invoiceCode" label="发票号"> <el-form-item prop="invoiceCode" label="发票号" style="margin-bottom: 0">
<el-input style="width: 234px;" v-model="inventory_order_data.invoiceCode"></el-input> <el-input style="width: 234px;" v-model="inventory_order_data.invoiceCode"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item prop="supplierId" label="供应商" :rules="formRules.supplierId"> <el-form-item prop="supplierId" label="供应商" :rules="formRules.supplierId" style="margin-bottom: 0">
<el-select style="width: 196px;margin-right: 10px" v-model="inventory_order_data.supplierId" <el-select style="width: 196px;margin-right: 10px" v-model="inventory_order_data.supplierId"
placeholder="请选择供应商"> placeholder="请选择供应商">
<el-option <el-option
@ -67,16 +68,18 @@
style=" style="
height: 32px; height: 32px;
width: 32px; width: 32px;
line-height: 32px;" line-height: 32px;
border: 1px solid rgb(192, 196, 204);
background-color: #fff;"
@click="addSupplier"> @click="addSupplier">
<el-icon style="color: #fff"> <el-icon style="color: rgb(192, 196, 204)">
<Plus/> <Plus/>
</el-icon> </el-icon>
</div> </div>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="备注" :rules="formRules.purchaseDate"> <el-form-item label="备注" :rules="formRules.purchaseDate" style="margin-bottom: 0">
<el-input v-model="inventory_order_data.remark"/> <el-input v-model="inventory_order_data.remark"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -87,10 +90,17 @@
<div class="add_goods"> <div class="add_goods">
<span>添加商品</span> <span>添加商品</span>
<div class="search"> <div class="search">
<GoodsSearch @selectCallBack="goodsSelectCallBack"></GoodsSearch> <GoodsSearch @selectCallBack="goodsSelectCallBack" style="height: 42px"></GoodsSearch>
<div class="default-btn" @click="goodsSelectCallBack" style="margin-left: 24px">
<span class="iconfont icon-RectangleCopy"></span>
搜索
</div> </div>
</div> </div>
<el-table :data="table_list" style="width: 100%;flex: 1"> </div>
<div class="table" style="padding: 0 24px;">
<el-table :data="table_list"
style="width: 100%;height: 100%;background: #F9FAFC;border: 1px solid #EAEAEC;border-bottom: none"
:header-cell-style="{ backgroundColor:'#F1F5FB'}">
<el-table-column prop="name" label="药品名称" width="180" show-overflow-tooltip/> <el-table-column prop="name" label="药品名称" width="180" show-overflow-tooltip/>
<el-table-column label="售价" prop="unitPrice" width="80"> <el-table-column label="售价" prop="unitPrice" width="80">
</el-table-column> </el-table-column>
@ -129,7 +139,6 @@
style="width: 100px" style="width: 100px"
size="small"/> size="small"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="生产日期" width="140"> <el-table-column label="生产日期" width="140">
<template #default="scope"> <template #default="scope">
@ -165,15 +174,21 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150"> <el-table-column label="操作" width="200">
<template #default="scope"> <template #default="scope">
<!-- <el-button size="small" @click="openCheckoutDetail(scope.row)" type="danger" plain>溯源码</el-button>--> <!-- <el-button size="small" @click="openCheckoutDetail(scope.row)" type="danger" plain>溯源码</el-button>-->
<el-button size="small" @click="removeTableRow(scope.row)" type="danger" plain>移除</el-button> <span style="color: #ff0000" @click="removeTableRow(scope.row)">
<el-icon>
<Delete/>
</el-icon>
移除
</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
</div>
<template #footer> <template #footer>
<div class="bottom"> <div class="bottom">
<div class="totalPrice"> <div class="totalPrice">
@ -204,7 +219,7 @@ import AddSupplier from "@/components/inventory/supplier/AddSupplier.vue";
import GoodsSearch from "@/components/inventory/GoodsSearch.vue"; import GoodsSearch from "@/components/inventory/GoodsSearch.vue";
import CheckoutDetail from "@/components/inventory/CheckoutDetail.vue"; import CheckoutDetail from "@/components/inventory/CheckoutDetail.vue";
import TraceabilityCodeInput from "@/components/inventory/purchase/TraceabilityCodeInput.vue"; import TraceabilityCodeInput from "@/components/inventory/purchase/TraceabilityCodeInput.vue";
import {Plus} from "@element-plus/icons-vue"; import {Plus, Delete} from "@element-plus/icons-vue";
const orderForm = ref() const orderForm = ref()
const checkoutDetailRef = ref<any>(false); const checkoutDetailRef = ref<any>(false);
@ -482,19 +497,20 @@ defineExpose({init})
.add-panel { .add-panel {
height: 602px; height: 602px;
padding: 24px 24px 0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.top { .top {
height: 180px; height: 204px;
padding: 24px;
} }
.table_content { .table_content {
flex: 1; flex: 1;
margin-top: 24px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
background: #F9FAFC;
min-height: 0;
.add_goods { .add_goods {
height: 90px; height: 90px;
@ -505,11 +521,21 @@ defineExpose({init})
font-size: 18px; font-size: 18px;
color: #333333; color: #333333;
font-style: normal; font-style: normal;
padding: 0 24px;
.search { .search {
width: 50%; display: flex;
align-items: center;
height: 42px;
} }
} }
.table {
flex: 1;
min-height: 0;
background: #F9FAFC;
}
} }
} }
@ -523,7 +549,8 @@ defineExpose({init})
font-size: 22px; font-size: 22px;
color: #333333; color: #333333;
font-style: normal; font-style: normal;
.btn{
.btn {
display: flex; display: flex;
} }
} }

View File

@ -5,8 +5,8 @@
@blur="handlerBlur" @keydown.enter="addCode"></el-input> @blur="handlerBlur" @keydown.enter="addCode"></el-input>
</template> </template>
<div class="code-popo"> <div class="code-popo">
<el-table :data="list"> <el-table :data="list" :max-height="260" :header-cell-style="{background: '#F1F5FB'}">
<el-table-column label="追溯码" prop="code"> <el-table-column label="追溯码" prop="code" show-overflow-tooltip>
<template #default="{row}"> <template #default="{row}">
{{ row.code.slice(0, 7) }}&nbsp;{{ row.code.slice(7) }} {{ row.code.slice(0, 7) }}&nbsp;{{ row.code.slice(7) }}
</template> </template>
@ -18,12 +18,13 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="70"> <el-table-column label="操作" width="90">
<template #default="{row}"> <template #default="{row}">
<span class="remove" @click="removeRow(row)"> <span class="remove" style="color: #ff0000" @click="removeRow(row)">
<el-icon> <el-icon>
<Close/> <Delete/>
</el-icon> </el-icon>
删除
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
@ -34,7 +35,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {ref, watch, onMounted, onUnmounted, nextTick} from "vue"; import {ref, watch, onMounted, onUnmounted, nextTick} from "vue";
import {Close} from "@element-plus/icons-vue"; import {Delete} from "@element-plus/icons-vue";
import CodeNumEditDialog from "@/components/inventory/purchase/CodeNumEditDialog.vue"; import CodeNumEditDialog from "@/components/inventory/purchase/CodeNumEditDialog.vue";
interface listType { interface listType {

View File

@ -1,47 +1,67 @@
<template> <template>
<div class="container_grant"> <Mask :width="540" :height="363" :is-show="isExchange" @close="close" :title="'兑换积分'"
:show-footer="true">
<div class="content_grant"> <div class="content_grant">
<div class="head"> <div class="head">
<img style="width: 60px;height: 60px"
:src="'/static/images/member/' + (props.info.sex === 1 ? 'man' : 'women') + '.png'"
alt="">
<div class="right">
<div class="name"> <div class="name">
{{props.info.realName}} {{ props.info.name }}
</div>
<div class="sex">
{{props.info.sex}}
</div> </div>
<div class="text">
<div class="phone"> <div class="phone">
{{props.info.phone}} {{ props.info.phone }}
</div> </div>
<div class="point"> <div class="grant-name">
积分<span class="num">{{ props.info.integralBalance }}</span> 积分
<img style="width: 16px;height: 16px" src="/static/images/member/1.png" alt="">
<span class="num">{{ props.info.integralBalance }}</span>
</div> </div>
</div> </div>
<div> </div>
<el-form label-position="top" :rules="rules" ref="formDataRef" :model="data"> </div>
<el-form-item label="兑换积分" prop="integral" > <div style="width: 100%">
<el-form
label-position="top" :rules="rules" ref="formDataRef" :model="data"
>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="兑换积分" prop="integral">
<el-input placeholder="请输入兑换积分" v-model="data.integral"></el-input> <el-input placeholder="请输入兑换积分" v-model="data.integral"></el-input>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="兑换备注" prop="remark"> <el-form-item label="兑换备注" prop="remark">
<el-input placeholder="请输入兑换备注" v-model="data.remark"></el-input> <el-input placeholder="请输入兑换备注" v-model="data.remark"></el-input>
</el-form-item> </el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</div> </div>
</div> </div>
<template #footer>
<div class="footer"> <div class="footer">
<div> <div>
<el-checkbox v-model="printReceipt">同时打印凭证</el-checkbox> <el-checkbox v-model="printReceipt">同时打印凭证</el-checkbox>
</div> </div>
<div> <div style="display:flex;">
<el-button type="primary" @click="reduceIntegral">发放</el-button> <div class="default-btn" @click="reduceIntegral">兑换</div>
<el-button @click="close">取消</el-button> <div class="default-btn" style="margin-left: 24px" @click="close">取消</div>
</div>
</div> </div>
</div> </div>
</template>
</Mask>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {ref,defineEmits, defineProps} from 'vue' import {ref, defineEmits, defineProps} from 'vue'
import {ElFormItem} from "element-plus"; import {ElFormItem} from "element-plus";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import Mask from "@/components/common/Mask.vue";
const isExchange = defineModel()
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
const props = defineProps({ const props = defineProps({
info: { info: {
@ -54,12 +74,12 @@ const close = () => {
data.value = {} data.value = {}
emit('close') emit('close')
} }
const rules ={ const rules = {
integral: [ integral: [
{required: true, message: '请输入发放积分', trigger: 'blur'}, {required: true, message: '请输入兑换积分', trigger: 'blur'},
{min: 1, message: '积分不能小于1', trigger: 'blur'} {min: 1, message: '积分不能小于1', trigger: 'blur'}
], ],
remark:[ remark: [
{required: true, message: '请输入兑换备注', trigger: 'blur'}, {required: true, message: '请输入兑换备注', trigger: 'blur'},
] ]
} }
@ -70,13 +90,12 @@ const formDataRef = ref();
const reduceIntegral = () => { const reduceIntegral = () => {
formDataRef.value?.validate((valid: boolean) => { formDataRef.value?.validate((valid: boolean) => {
if (!valid) { if (!valid) {
console.log("表单验证失败",data.value);
return; return;
} }
// //
data.value.integral =data.value.integral * -1 data.value.integral = data.value.integral * -1
data.value.vipId = props.info.id data.value.vipId = props.info.id
post("vip/integral/add",data.value).then((res: any) => { post("vip/integral/add", data.value).then((res: any) => {
formDataRef.value?.resetFields(); formDataRef.value?.resetFields();
close() close()
}) })
@ -86,42 +105,62 @@ const reduceIntegral = () => {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.container_grant { .content_grant {
background-color: #fff; height: 100%;
.title_grant { padding: 24px;
padding-bottom: 20px;
font-size: 18px;
}
.content_grant {
.head { .head {
height: 50px; height: 60px;
display: flex; display: flex;
align-items: center; align-items: center;
background-color: rgba(220, 222, 223, 0.5); margin-bottom: 16px;
border-radius: 10px;
padding-left: 20px; .name {
margin-bottom: 20px; font-weight: bold;
border: 1px solid rgba(0, 0, 0, 0.05); font-size: 24px;
.sex{ color: #333333;
margin:0 10px; line-height: 33px;
text-align: left;
font-style: normal;
} }
.phone{
height: 21px; .right {
line-height: 25px;
}
.point{
margin:0 30px 0 50px;
.num{
color: rgba(237, 120, 23, 0.67);
}
}
}
}
.footer {
display: flex; display: flex;
justify-content: space-between; flex-direction: column;
padding-top: 20px; justify-content: center;
margin-left: 16px;
.text {
margin-top: 4px;
display: flex;
.phone {
margin-right: 20px;
}
.grant-name {
display: flex;
.num {
font-weight: bold;
font-size: 24px;
color: #4D6DE4;
font-style: normal;
line-height: 16px;
margin-left: 6px;
}
}
}
}
} }
} }
.footer {
height: 100%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 24px;
}
</style> </style>

View File

@ -1,48 +1,63 @@
<template> <template>
<div class="container_grant"> <Mask :width="540" :height="363" :is-show="isGrant" @close="isGrant=false" :title="'发放积分'" :show-footer="true">
<template #default>
<div class="content_grant"> <div class="content_grant">
<div class="head"> <div class="head">
<img style="width: 60px;height: 60px"
:src="'/static/images/member/' + (props.info.sex === 1 ? 'man' : 'women') + '.png'"
alt="">
<div class="right">
<div class="name"> <div class="name">
{{props.info.realName}} {{ props.info.name }}
</div>
<div class="sex">
{{props.info.sex}}
</div> </div>
<div class="text">
<div class="phone"> <div class="phone">
{{props.info.phone}} {{ props.info.phone }}
</div> </div>
<div class="point"> <div class="grant-name">
积分<span class="num">{{props.info.integralBalance}}</span> 积分
<img style="width: 16px;height: 16px" src="/static/images/member/1.png" alt="">
<span class="num">{{ props.info.integralBalance }}</span>
</div> </div>
</div> </div>
<div> </div>
</div>
<div style="width: 100%">
<el-form <el-form
:rules="rules" label-position="top" :rules="rules" ref="ruleFormRef" :model="data"
v-model="data"
label-position="top"
ref="ruleFormRef"
require-asterisk-position="right"
> >
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="发放积分" prop="integral"> <el-form-item label="发放积分" prop="integral">
<el-input v-model="data.integral" placeholder="请输入发放积分"></el-input> <el-input v-model="data.integral" placeholder="请输入发放积分"></el-input>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发放备注" prop="remark"> <el-form-item label="发放备注" prop="remark">
<el-input v-model="data.remark" placeholder="请输入发放备注"></el-input> <el-input v-model="data.remark" placeholder="请输入发放备注"></el-input>
</el-form-item> </el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</div> </div>
</div> </div>
</template>
<template #footer>
<div class="footer"> <div class="footer">
<el-button type="primary" @click="grant()">发放</el-button> <div class="default-btn" @click="grant()">发放</div>
<el-button @click="close">取消</el-button> <div class="default-btn" style="margin-left: 24px" @click="close">取消</div>
</div>
</div> </div>
</template>
</Mask>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {ref,defineEmits,defineProps} from 'vue' import {ref, defineEmits, defineProps, onMounted} from 'vue'
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import {ElFormItem} from "element-plus"; import {ElFormItem, ElMessage} from "element-plus";
import Mask from "@/components/common/Mask.vue";
const isGrant = defineModel()
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
const props = defineProps({ const props = defineProps({
info: { info: {
@ -50,64 +65,92 @@ const props = defineProps({
default: () => ({}) default: () => ({})
} }
}) })
const rules ={
const rules = {
integral: [ integral: [
{required: true, message: '请输入发放积分', trigger: 'blur'}, {required: true, message: '请输入兑换积分', trigger: 'blur'},
{min: 0, message: '积分不能小于0', trigger: 'blur'}
], ],
remark:[ remark: [
{required: true, message: '请输入备注', trigger: 'blur'}, {required: true, message: '请输入兑换备注', trigger: 'blur'},
] ]
} }
const close = () => { const close = () => {
data.value = {}
emit('close') emit('close')
} }
const data=ref<any>({}) const data = ref<any>({})
const ruleFormRef = ref()
const grant = async () => { const grant = async () => {
ruleFormRef.value?.validate((valid: any) => {
if (!valid) return
data.value.vipId = props.info.id data.value.vipId = props.info.id
post('vip/integral/add', data.value).then((res: any) => { post('vip/integral/add', data.value).then((res: any) => {
ElMessage.success('已发放')
close() close()
}) })
})
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.container_grant { .content_grant {
background-color: #fff; height: 100%;
.title_grant { padding: 24px;
padding-bottom: 20px;
font-size: 18px;
}
.content_grant {
.head { .head {
height: 50px; height: 60px;
display: flex; display: flex;
align-items: center; align-items: center;
background-color: rgba(220, 222, 223, 0.5); margin-bottom: 16px;
border-radius: 10px;
padding-left: 20px; .name {
margin-bottom: 20px; font-weight: bold;
border: 1px solid rgba(0, 0, 0, 0.05); font-size: 24px;
.sex{ color: #333333;
margin:0 10px; line-height: 33px;
} text-align: left;
.phone{ font-style: normal;
height: 21px;
line-height: 25px;
}
.point{
margin:0 30px 0 50px;
.num{
color: rgba(237, 120, 23, 0.67);
} }
.right {
display: flex;
flex-direction: column;
justify-content: center;
margin-left: 16px;
.text {
margin-top: 4px;
display: flex;
.phone {
margin-right: 20px;
} }
.grant-name {
display: flex;
.num {
font-weight: bold;
font-size: 24px;
color: #4D6DE4;
font-style: normal;
line-height: 16px;
margin-left: 6px;
} }
} }
.footer { }
display: flex; }
justify-content: flex-end;
padding-top: 20px;
} }
} }
.footer {
height: 100%;
display: flex;
justify-content: flex-end;
align-items: center;
padding: 24px;
}
</style> </style>

View File

@ -74,7 +74,7 @@
}} }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="证件类型"> <el-descriptions-item label="证件类型">
{{ certTypeList.find((item: any) => item.id == listItem.certType)?.name }} {{ certTypeList.find((item: any) => item.id == Number(listItem.certType))?.name }}
</el-descriptions-item> </el-descriptions-item>
> >
<el-descriptions-item label="证件号码">{{ listItem.certNo || "-" }}</el-descriptions-item> <el-descriptions-item label="证件号码">{{ listItem.certNo || "-" }}</el-descriptions-item>
@ -152,12 +152,8 @@
</div> </div>
<VipEdit ref="refEdit" @close="init"></VipEdit> <VipEdit ref="refEdit" @close="init"></VipEdit>
<VipLevelEdit ref="levelEditRef" @close="init"></VipLevelEdit> <VipLevelEdit ref="levelEditRef" @close="init"></VipLevelEdit>
<Mask :width="600" :height="400" :is-show="isGrant" @close="isGrant=false" :title="'发放积分'"> <Grant v-model="isGrant" :info="listItem" @close="closeGrant()"></Grant>
<Grant :info="listItem" @close="closeGrant()"></Grant> <Exchange v-model="isExchange" :info="listItem" @close="closeExchange()"></Exchange>
</Mask>
<Mask :width="600" :height="400" :is-show="isExchange" @close="isExchange=false" title="兑换积分">
<Exchange :info="listItem" @close="closeExchange()"></Exchange>
</Mask>
<Mask :is-show="isFlowingWater" @close="isFlowingWater = false" title="流水记录"> <Mask :is-show="isFlowingWater" @close="isFlowingWater = false" title="流水记录">
<FlowingWater :info="listItem"></FlowingWater> <FlowingWater :info="listItem"></FlowingWater>
</Mask> </Mask>
@ -235,8 +231,6 @@ const init = () => {
}); });
}); });
getChargeList(listItem.value.id); getChargeList(listItem.value.id);
}); });
}; };
const getVipIntegral = (id: any) => { const getVipIntegral = (id: any) => {
@ -307,6 +301,7 @@ const btn = (item: any, i: number) => {
// //
const openGrant = () => { const openGrant = () => {
isGrant.value = true isGrant.value = true
console.log(listItem.value)
} }
// //
const tableData = ref([]) const tableData = ref([])
@ -604,10 +599,12 @@ const certTypeList = ref<any>(Object.entries(psnCertTypes).map(([id, name]) => (
display: flex; display: flex;
flex-direction: column; flex-direction: column;
min-height: 0; min-height: 0;
.list { .list {
flex: 1; flex: 1;
min-height: 0; min-height: 0;
} }
.bottom { .bottom {
width: 100%; width: 100%;
height: 60px; height: 60px;