Compare commits
No commits in common. "46d91fb241627cd9f695f8aafa2651cf08acf7bf" and "f3a089dbfe1f1f8e40f1e0a9c92f05cc1e82b5ac" have entirely different histories.
46d91fb241
...
f3a089dbfe
Binary file not shown.
|
Before Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
|
|
@ -108,7 +108,11 @@ body {
|
||||||
.clear-margin {
|
.clear-margin {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
.el-popper.is-light.type-popper, .el-popper.is-light>.el-popper__arrow:before{
|
||||||
|
background:#F5FAFF;
|
||||||
|
}
|
||||||
.el-popper.is-light.type-popper{
|
.el-popper.is-light.type-popper{
|
||||||
|
background:#F5FAFF;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
.el-popper.is-light.id-code-popper{
|
.el-popper.is-light.id-code-popper{
|
||||||
|
|
@ -131,7 +135,7 @@ body {
|
||||||
border-radius: 8px 8px 0 0;
|
border-radius: 8px 8px 0 0;
|
||||||
}
|
}
|
||||||
$btn-color: #4D6DE4;
|
$btn-color: #4D6DE4;
|
||||||
$lighter-color: rgba(#4D6DE4, 0.5);
|
$lighter-color: #7c91e3;
|
||||||
.default-btn{
|
.default-btn{
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 120px;
|
width: 120px;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
|
|
||||||
<el-popover placement="bottom-start" :visible="isVisible" :width="props.width" ref="popoverRef"
|
<el-popover placement="bottom-start" :visible="isVisible" :width="props.width" ref="popoverRef"
|
||||||
:trigger-keys="[]" style="height: 500px" popper-class="type-popper">
|
:trigger-keys="[]" style="height: 500px" popper-class="type-popper">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
|
|
@ -18,7 +19,7 @@
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<el-scrollbar style="max-height: 260px;width: 100%">
|
<el-scrollbar>
|
||||||
<table class="table" style="width: 100%; border-collapse: collapse;max-height: 50px">
|
<table class="table" style="width: 100%; border-collapse: collapse;max-height: 50px">
|
||||||
<!-- 表头 -->
|
<!-- 表头 -->
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -32,6 +33,7 @@
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
<!-- 表体 -->
|
<!-- 表体 -->
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr class="table-body"
|
<tr class="table-body"
|
||||||
|
|
@ -165,7 +167,6 @@ const handlerBlur = () => {
|
||||||
|
|
||||||
th {
|
th {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|
||||||
&:nth-child(1) {
|
&:nth-child(1) {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|
@ -181,7 +182,6 @@ const handlerBlur = () => {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #666666;
|
color: #666666;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
|
||||||
td {
|
td {
|
||||||
&:nth-child(1) {
|
&:nth-child(1) {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
|
|
@ -194,6 +194,7 @@ const handlerBlur = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
border-radius: 0 0 8px 8px;
|
border-radius: 0 0 8px 8px;
|
||||||
}
|
}
|
||||||
|
|
@ -204,8 +205,4 @@ const handlerBlur = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
table thead tr {
|
|
||||||
background: #F5FAFF;;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -16,7 +16,6 @@
|
||||||
</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">
|
||||||
|
|
@ -43,7 +42,6 @@
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</el-scrollbar>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -282,12 +280,10 @@ 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>
|
||||||
|
|
@ -16,26 +16,27 @@
|
||||||
></el-input>
|
></el-input>
|
||||||
</template>
|
</template>
|
||||||
<template #default>
|
<template #default>
|
||||||
<div style="width: 100%;max-height: 20px">
|
<table class="table" style="border-spacing: 0">
|
||||||
<el-table :data="item.traceAbilityCodeList" :max-height="300" style="width: 100%"
|
<thead>
|
||||||
:header-cell-style="{background: '#F1F5FB'}">
|
<tr class="table-title">
|
||||||
<el-table-column prop="value" label="追溯码" show-overflow-tooltip>
|
<th>追溯码</th>
|
||||||
<template #default="scope">
|
<th>操作</th>
|
||||||
{{ scope.row }}
|
</tr>
|
||||||
</template>
|
</thead>
|
||||||
</el-table-column>
|
<tbody class="table-body">
|
||||||
<el-table-column label="操作" width="80">
|
<tr v-for="(item,index) in item.traceAbilityCodeList" :key="index">
|
||||||
<template #default="scope">
|
<td>{{ item }}</td>
|
||||||
<span style="color: #ff0000" @click="removeTraceAbility(scope.row)">
|
<td>
|
||||||
|
<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>
|
||||||
|
|
@ -95,11 +96,9 @@ 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;
|
||||||
|
|
@ -109,23 +108,19 @@ 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;
|
||||||
|
|
@ -133,14 +128,12 @@ 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;
|
||||||
|
|
||||||
|
|
@ -167,7 +160,6 @@ const removeTraceAbility = (code: any) => {
|
||||||
|
|
||||||
table, tbody, td {
|
table, tbody, td {
|
||||||
border-bottom: 1px solid #EAEAEC; /* 明确设置边框 */
|
border-bottom: 1px solid #EAEAEC; /* 明确设置边框 */
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<panel title="药品耗材">
|
<panel title="药品耗材">
|
||||||
<div class="panel-content" style="padding: 0 24px 24px">
|
|
||||||
<el-table v-if="goodsDetail.length>0" :data="goodsDetail" max-height="300" style="width: 100%"
|
<el-table v-if="goodsDetail.length>0" :data="goodsDetail" max-height="300" style="width: 100%"
|
||||||
:header-cell-style="{ backgroundColor: '#F5FAFF' }">
|
:header-cell-style="{ backgroundColor: '#F5FAFF' }">
|
||||||
<el-table-column prop="name" label="名称" width="400">
|
<el-table-column prop="name" label="名称" width="400">
|
||||||
|
|
@ -99,7 +98,6 @@
|
||||||
</div>
|
</div>
|
||||||
<span v-if="status" style="padding: 10px">合计:¥{{ getTotalPrice() }}</span>
|
<span v-if="status" style="padding: 10px">合计:¥{{ getTotalPrice() }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</panel>
|
</panel>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<Panel title="服务项目">
|
<Panel title="服务项目">
|
||||||
<div class="panel-content" style="padding: 0 24px 24px">
|
<el-table v-if="itemDetail.length>0" :data="itemDetail" max-height="300" :header-cell-style="{ backgroundColor: '#F5FAFF' }">
|
||||||
<el-table v-if="itemDetail.length>0" :data="itemDetail" max-height="300"
|
|
||||||
:header-cell-style="{ backgroundColor: '#F5FAFF' }">
|
|
||||||
<el-table-column prop="itemName" label="项目名称" show-overflow-tooltip width="400">
|
<el-table-column prop="itemName" label="项目名称" show-overflow-tooltip width="400">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-popover
|
<el-popover
|
||||||
|
|
@ -50,9 +48,7 @@
|
||||||
<el-table-column label="操作" v-if="props.status">
|
<el-table-column label="操作" v-if="props.status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="danger" link @click="delService(scope.row)">
|
<el-button type="danger" link @click="delService(scope.row)">
|
||||||
<el-icon style="margin-right: 3px">
|
<el-icon style="margin-right: 3px"><Delete /></el-icon>
|
||||||
<Delete/>
|
|
||||||
</el-icon>
|
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -70,7 +66,6 @@
|
||||||
</div>
|
</div>
|
||||||
<span v-if="status" style="padding: 10px">合计:¥{{ getTotalPrice() || 0 }}</span>
|
<span v-if="status" style="padding: 10px">合计:¥{{ getTotalPrice() || 0 }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</Panel>
|
</Panel>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
|
||||||
|
|
@ -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: 500px;height: 100%"
|
style="width: 100%"
|
||||||
filterable
|
filterable
|
||||||
remote
|
remote
|
||||||
ref="selectRef"
|
ref="selectRef"
|
||||||
|
|
@ -54,9 +54,6 @@ 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>
|
||||||
|
|
@ -94,6 +91,8 @@ 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;
|
||||||
|
|
@ -117,7 +116,4 @@ const handleSelect = (item: any) => {
|
||||||
white-space: nowrap; /* 防止换行 */
|
white-space: nowrap; /* 防止换行 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
:deep(.el-select__wrapper.is-filterable){
|
|
||||||
height: 42px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,96 +0,0 @@
|
||||||
<template>
|
|
||||||
<Mask :width="400" :height="240" :is-show="isShow" @close="isShow=false" :show-footer="true" title="选择模板范围">
|
|
||||||
<template #default>
|
|
||||||
<div class="select">
|
|
||||||
<el-form style="height: 100%">
|
|
||||||
<el-form-item label="药品物资选择范围">
|
|
||||||
<el-cascader :collapse-tags="true" :props="props" :options="allCateList"
|
|
||||||
:show-all-levels="false"
|
|
||||||
v-model="cateIds" clearable @change="change"/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<template #footer>
|
|
||||||
<div class="bottom">
|
|
||||||
<div class="default-btn" @click="isShow=false">上传数据</div>
|
|
||||||
<div class="default-btn" @click="uploadCateIds" style="margin-left: 24px">下载模板</div>
|
|
||||||
<div class="default-btn" @click="isShow=false" style="margin-left: 24px">取消</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</Mask>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
|
||||||
import Mask from "@/components/common/Mask.vue";
|
|
||||||
import {defineModel, onMounted, ref} from "vue";
|
|
||||||
import {post} from "@/utils/request.ts";
|
|
||||||
|
|
||||||
const isShow = defineModel()
|
|
||||||
const props = {multiple: true}
|
|
||||||
|
|
||||||
interface CateOption {
|
|
||||||
value: string;
|
|
||||||
label: string;
|
|
||||||
children: { value: number; label: string }[];
|
|
||||||
}
|
|
||||||
|
|
||||||
const typeList = {
|
|
||||||
"1301": "中西成药",
|
|
||||||
"1302": "中药饮片",
|
|
||||||
"1306": "医疗器材",
|
|
||||||
"0": "其他商品",
|
|
||||||
}
|
|
||||||
const cateIds = ref<number[]>([]);
|
|
||||||
const allCateList = ref<CateOption[]>([]);
|
|
||||||
const getAllCate = () => {
|
|
||||||
post("goods/cate/getAllList", null).then((res: any) => {
|
|
||||||
const options = [];
|
|
||||||
for (const key in res) {
|
|
||||||
if (typeList.hasOwnProperty(key)) { // 检查键是否存在
|
|
||||||
options.push({
|
|
||||||
value: key,
|
|
||||||
label: typeList[key as keyof typeof typeList], // 类型断言
|
|
||||||
children: res[key].map((item: { id: number; name: string }) => ({
|
|
||||||
value: item.id,
|
|
||||||
label: item.name
|
|
||||||
})),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
allCateList.value = options;
|
|
||||||
})
|
|
||||||
}
|
|
||||||
const ids = ref<any>([])
|
|
||||||
const change = (value: any) => {
|
|
||||||
cateIds.value = value
|
|
||||||
ids.value = []
|
|
||||||
}
|
|
||||||
const uploadCateIds = () => {
|
|
||||||
cateIds.value.map((item: any) => {
|
|
||||||
if (item[item.length - 1] === 0) return
|
|
||||||
ids.value.push(item[item.length - 1])
|
|
||||||
})
|
|
||||||
console.log(ids)
|
|
||||||
}
|
|
||||||
onMounted(() => {
|
|
||||||
getAllCate()
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.select {
|
|
||||||
height: 100%;
|
|
||||||
padding: 24px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom {
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
padding: 24px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<Mask :width="400" :height="600" :is-show="isShow" @close="isShow=false" :show-footer="true" title="药品列表">
|
<Mask :width="400" :height="600" :is-show="isShow" @close="isShow=false" :show-fotter="true" title="药品列表">
|
||||||
<el-table
|
<el-table
|
||||||
:data="cateList"
|
:data="cateList"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
|
|
|
||||||
|
|
@ -693,6 +693,7 @@ 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');
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,7 @@
|
||||||
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" style="height: 100%" :rules="formRules"
|
<el-form :model="inventory_order_data" label-position="top" :rules="formRules" ref="orderForm">
|
||||||
ref="orderForm">
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="订单编号">
|
<el-form-item label="订单编号">
|
||||||
|
|
@ -49,14 +48,13 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item prop="invoiceCode" label="发票号" style="margin-bottom: 0">
|
<el-form-item prop="invoiceCode" label="发票号">
|
||||||
<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" style="margin-bottom: 0">
|
<el-form-item prop="supplierId" label="供应商" :rules="formRules.supplierId">
|
||||||
<el-select style="width: 196px;margin-right: 10px" v-model="inventory_order_data.supplierId"
|
<el-select style="width: 130px;margin-right: 10px" v-model="inventory_order_data.supplierId" placeholder="请选择供应商">
|
||||||
placeholder="请选择供应商">
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in supplier_list"
|
v-for="item in supplier_list"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
|
|
@ -64,22 +62,11 @@
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
<div class="default-btn"
|
<el-button type="primary" @click="addSupplier">添加供应商</el-button>
|
||||||
style="
|
|
||||||
height: 32px;
|
|
||||||
width: 32px;
|
|
||||||
line-height: 32px;
|
|
||||||
border: 1px solid rgb(192, 196, 204);
|
|
||||||
background-color: #fff;"
|
|
||||||
@click="addSupplier">
|
|
||||||
<el-icon style="color: rgb(192, 196, 204)">
|
|
||||||
<Plus/>
|
|
||||||
</el-icon>
|
|
||||||
</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" style="margin-bottom: 0">
|
<el-form-item label="备注" :rules="formRules.purchaseDate">
|
||||||
<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>
|
||||||
|
|
@ -90,17 +77,10 @@
|
||||||
<div class="add_goods">
|
<div class="add_goods">
|
||||||
<span>添加商品</span>
|
<span>添加商品</span>
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<GoodsSearch @selectCallBack="goodsSelectCallBack" style="height: 42px"></GoodsSearch>
|
<GoodsSearch @selectCallBack="goodsSelectCallBack"></GoodsSearch>
|
||||||
<div class="default-btn" @click="goodsSelectCallBack" style="margin-left: 24px">
|
|
||||||
<span class="iconfont icon-RectangleCopy"></span>
|
|
||||||
搜索
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<el-table :data="table_list" style="width: 100%;flex: 1">
|
||||||
<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>
|
||||||
|
|
@ -139,6 +119,7 @@
|
||||||
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,30 +146,24 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="商品追溯码" width="150">
|
<el-table-column label="商品追溯码" width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <el-input-->
|
<!-- <el-input-->
|
||||||
<!-- v-model="scope.row.traceabilityCode"-->
|
<!-- v-model="scope.row.traceabilityCode"-->
|
||||||
<!-- placeholder="商品追溯码"-->
|
<!-- placeholder="商品追溯码"-->
|
||||||
<!-- style="width: 100px"-->
|
<!-- style="width: 100px"-->
|
||||||
<!-- size="small"/>-->
|
<!-- size="small"/>-->
|
||||||
<TraceabilityCodeInput v-model="scope.row.traceabilityCodeList"></TraceabilityCodeInput>
|
<TraceabilityCodeInput v-model="scope.row.traceabilityCodeList"></TraceabilityCodeInput>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="200">
|
<el-table-column label="操作" width="150">
|
||||||
<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>-->
|
||||||
<span style="color: #ff0000" @click="removeTableRow(scope.row)">
|
<el-button size="small" @click="removeTableRow(scope.row)" type="danger" plain>移除</el-button>
|
||||||
<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">
|
||||||
|
|
@ -196,8 +171,8 @@
|
||||||
style="color: #FF282E">{{ inventory_order_data.totalPrice.toFixed(2) }}</span>
|
style="color: #FF282E">{{ inventory_order_data.totalPrice.toFixed(2) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
<div class="default-btn" @click="exit">关闭</div>
|
<el-button type="primary" @click="confirm">确认</el-button>
|
||||||
<div class="default-btn" @click="confirm" style="margin-left: 24px">确认</div>
|
<el-button type="primary" @click="exit">关闭</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -218,8 +193,8 @@ import {ElMessage} from "element-plus";
|
||||||
import AddSupplier from "@/components/inventory/supplier/AddSupplier.vue";
|
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 {Search} from "@element-plus/icons-vue";
|
||||||
import TraceabilityCodeInput from "@/components/inventory/purchase/TraceabilityCodeInput.vue";
|
import TraceabilityCodeInput from "@/components/inventory/purchase/TraceabilityCodeInput.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);
|
||||||
|
|
@ -319,7 +294,7 @@ function getFormattedDate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
let confirm = async () => {
|
let confirm = async () => {
|
||||||
console.log('table_list.value++++++++++++++', table_list.value)
|
console.log('table_list.value++++++++++++++',table_list.value)
|
||||||
// 进行表单验证
|
// 进行表单验证
|
||||||
try {
|
try {
|
||||||
await orderForm.value.validate()
|
await orderForm.value.validate()
|
||||||
|
|
@ -350,7 +325,7 @@ let confirm = async () => {
|
||||||
}
|
}
|
||||||
table_list.value.forEach((item: any) => {
|
table_list.value.forEach((item: any) => {
|
||||||
console.log(item.traceabilityCodeList)
|
console.log(item.traceabilityCodeList)
|
||||||
item.traceabilityCode = JSON.stringify(item.traceabilityCodeList)
|
item.traceabilityCode= JSON.stringify(item.traceabilityCodeList)
|
||||||
})
|
})
|
||||||
let data = {
|
let data = {
|
||||||
inventoryOrder: JSON.parse(JSON.stringify(inventory_order_data.value)),
|
inventoryOrder: JSON.parse(JSON.stringify(inventory_order_data.value)),
|
||||||
|
|
@ -423,7 +398,8 @@ const init = () => {
|
||||||
}
|
}
|
||||||
const managerUserList: any = ref([])
|
const managerUserList: any = ref([])
|
||||||
const getManagerUserList = () => {
|
const getManagerUserList = () => {
|
||||||
post("manager/user/list", {}).then((res: any) => {
|
post("manager/user/list", {
|
||||||
|
}).then((res: any) => {
|
||||||
managerUserList.value = res
|
managerUserList.value = res
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -497,20 +473,19 @@ 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: 204px;
|
height: 180px;
|
||||||
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;
|
||||||
|
|
@ -521,21 +496,11 @@ defineExpose({init})
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
padding: 0 24px;
|
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
display: flex;
|
width: 50%;
|
||||||
align-items: center;
|
|
||||||
height: 42px;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.table {
|
|
||||||
flex: 1;
|
|
||||||
min-height: 0;
|
|
||||||
background: #F9FAFC;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -549,10 +514,6 @@ defineExpose({init})
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
|
||||||
.btn {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.error {
|
.error {
|
||||||
|
|
|
||||||
|
|
@ -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" :max-height="260" :header-cell-style="{background: '#F1F5FB'}">
|
<el-table :data="list">
|
||||||
<el-table-column label="追溯码" prop="code" show-overflow-tooltip>
|
<el-table-column label="追溯码" prop="code">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
{{ row.code.slice(0, 7) }} {{ row.code.slice(7) }}
|
{{ row.code.slice(0, 7) }} {{ row.code.slice(7) }}
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -18,13 +18,12 @@
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="90">
|
<el-table-column label="操作" width="70">
|
||||||
<template #default="{row}">
|
<template #default="{row}">
|
||||||
<span class="remove" style="color: #ff0000" @click="removeRow(row)">
|
<span class="remove" @click="removeRow(row)">
|
||||||
<el-icon>
|
<el-icon>
|
||||||
<Delete/>
|
<Close/>
|
||||||
</el-icon>
|
</el-icon>
|
||||||
删除
|
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -35,7 +34,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 {Delete} from "@element-plus/icons-vue";
|
import {Close} 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 {
|
||||||
|
|
|
||||||
|
|
@ -1,67 +1,47 @@
|
||||||
<template>
|
<template>
|
||||||
<Mask :width="540" :height="363" :is-show="isExchange" @close="close" :title="'兑换积分'"
|
<div class="container_grant">
|
||||||
: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.name }}
|
{{props.info.realName}}
|
||||||
|
</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="grant-name">
|
<div class="point">
|
||||||
积分:
|
积分<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>
|
<el-form label-position="top" :rules="rules" ref="formDataRef" :model="data">
|
||||||
<div style="width: 100%">
|
<el-form-item label="兑换积分" prop="integral" >
|
||||||
<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 style="display:flex;">
|
<div>
|
||||||
<div class="default-btn" @click="reduceIntegral">兑换</div>
|
<el-button type="primary" @click="reduceIntegral">发放</el-button>
|
||||||
<div class="default-btn" style="margin-left: 24px" @click="close">取消</div>
|
<el-button @click="close">取消</el-button>
|
||||||
|
</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: {
|
||||||
|
|
@ -74,12 +54,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'},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -90,12 +70,13 @@ 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()
|
||||||
})
|
})
|
||||||
|
|
@ -105,62 +86,42 @@ const reduceIntegral = () => {
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.content_grant {
|
.container_grant {
|
||||||
height: 100%;
|
background-color: #fff;
|
||||||
padding: 24px;
|
.title_grant {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content_grant {
|
||||||
.head {
|
.head {
|
||||||
height: 60px;
|
height: 50px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 16px;
|
background-color: rgba(220, 222, 223, 0.5);
|
||||||
|
border-radius: 10px;
|
||||||
.name {
|
padding-left: 20px;
|
||||||
font-weight: bold;
|
margin-bottom: 20px;
|
||||||
font-size: 24px;
|
border: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
color: #333333;
|
.sex{
|
||||||
line-height: 33px;
|
margin:0 10px;
|
||||||
text-align: left;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
}
|
||||||
|
.phone{
|
||||||
.right {
|
height: 21px;
|
||||||
display: flex;
|
line-height: 25px;
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
margin-left: 16px;
|
|
||||||
|
|
||||||
.text {
|
|
||||||
margin-top: 4px;
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
.phone {
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
}
|
||||||
|
.point{
|
||||||
.grant-name {
|
margin:0 30px 0 50px;
|
||||||
display: flex;
|
.num{
|
||||||
|
color: rgba(237, 120, 23, 0.67);
|
||||||
.num {
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 24px;
|
|
||||||
color: #4D6DE4;
|
|
||||||
font-style: normal;
|
|
||||||
line-height: 16px;
|
|
||||||
margin-left: 6px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.footer {
|
||||||
.footer {
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
padding-top: 20px;
|
||||||
padding: 24px;
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,63 +1,48 @@
|
||||||
<template>
|
<template>
|
||||||
<Mask :width="540" :height="363" :is-show="isGrant" @close="isGrant=false" :title="'发放积分'" :show-footer="true">
|
<div class="container_grant">
|
||||||
<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.name }}
|
{{props.info.realName}}
|
||||||
|
</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="grant-name">
|
<div class="point">
|
||||||
积分:
|
积分<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
|
||||||
label-position="top" :rules="rules" ref="ruleFormRef" :model="data"
|
:rules="rules"
|
||||||
|
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">
|
||||||
<div class="default-btn" @click="grant()">发放</div>
|
<el-button type="primary" @click="grant()">发放</el-button>
|
||||||
<div class="default-btn" style="margin-left: 24px" @click="close">取消</div>
|
<el-button @click="close">取消</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
|
||||||
</Mask>
|
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ref, defineEmits, defineProps, onMounted} from 'vue'
|
import {ref,defineEmits,defineProps} from 'vue'
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {ElFormItem, ElMessage} from "element-plus";
|
import {ElFormItem} 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: {
|
||||||
|
|
@ -65,92 +50,64 @@ 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">
|
||||||
.content_grant {
|
.container_grant {
|
||||||
height: 100%;
|
background-color: #fff;
|
||||||
padding: 24px;
|
.title_grant {
|
||||||
|
padding-bottom: 20px;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content_grant {
|
||||||
.head {
|
.head {
|
||||||
height: 60px;
|
height: 50px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 16px;
|
background-color: rgba(220, 222, 223, 0.5);
|
||||||
|
border-radius: 10px;
|
||||||
.name {
|
padding-left: 20px;
|
||||||
font-weight: bold;
|
margin-bottom: 20px;
|
||||||
font-size: 24px;
|
border: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
color: #333333;
|
.sex{
|
||||||
line-height: 33px;
|
margin:0 10px;
|
||||||
text-align: left;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
}
|
||||||
|
.phone{
|
||||||
.right {
|
height: 21px;
|
||||||
display: flex;
|
line-height: 25px;
|
||||||
flex-direction: column;
|
}
|
||||||
justify-content: center;
|
.point{
|
||||||
margin-left: 16px;
|
margin:0 30px 0 50px;
|
||||||
|
.num{
|
||||||
.text {
|
color: rgba(237, 120, 23, 0.67);
|
||||||
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 {
|
.footer {
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
align-items: center;
|
padding-top: 20px;
|
||||||
padding: 24px;
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="layout-container">
|
<div class="layout-container">
|
||||||
<Header class="header"/>
|
<Header class="header" />
|
||||||
<div class="body">
|
<header>
|
||||||
<header style="height: 50px">
|
|
||||||
<div class="center-wrapper">
|
<div class="center-wrapper">
|
||||||
<div class="childMenu">
|
<div class="childMenu">
|
||||||
<router-link :to="item.path" class="child-item" v-for="(item,index) in childMenuList" :key="index">
|
<router-link :to="item.path" class="child-item" v-for="(item,index) in childMenuList" :key="index">
|
||||||
|
|
@ -11,73 +10,46 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main class="layout-main" style="margin-top: 24px">
|
<div class="space"></div>
|
||||||
|
<main class="layout-main">
|
||||||
<router-view/>
|
<router-view/>
|
||||||
</main>
|
</main>
|
||||||
|
<div class="space"></div>
|
||||||
|
<Footer class="footer" />
|
||||||
</div>
|
</div>
|
||||||
<Footer class="footer"/>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.body{
|
|
||||||
height: 100%;
|
|
||||||
padding: 24px;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.childMenu {
|
.childMenu {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 50px;
|
height: 60px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border-radius: 8px;
|
|
||||||
|
|
||||||
.child-item {
|
.child-item {
|
||||||
width: 136px;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
color: #151515;
|
color: #151515;
|
||||||
outline: none;
|
outline: none;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
height: 50px;
|
margin-left: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
height: 35px;
|
||||||
position: relative;
|
position: relative;
|
||||||
line-height: 50px;
|
|
||||||
text-align: center;
|
|
||||||
&::before{
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
top:50%;
|
|
||||||
display: block;
|
|
||||||
width: 2px;
|
|
||||||
height: 16px;
|
|
||||||
background: #D8D8D8;
|
|
||||||
border-radius: 1px;
|
|
||||||
transform: translate(0 ,-50%);
|
|
||||||
}
|
|
||||||
&:last-child::before{
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.router-link-active:after {
|
.router-link-active:after {
|
||||||
content: '';
|
content: '';
|
||||||
display: block;
|
display: block;
|
||||||
width: 80px;
|
width: 100%;
|
||||||
height: 4px;
|
height: 2px;
|
||||||
background-color: #4D6DE4; // 下划线颜色
|
background-color: #151515; // 下划线颜色
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0; // 调整下划线与文字的距离
|
bottom: -5px; // 调整下划线与文字的距离
|
||||||
left: 50%;
|
left: 0;
|
||||||
transform: translateX(-50%);
|
|
||||||
border-radius: 2px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a.router-link-active.router-link-exact-active.child-item{
|
|
||||||
color: #4D6DE4;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-cascader :collapse-tags="true" :props="props" style="width: 180px;height: 42px" :options="allCateList" :show-all-levels="false"
|
<el-cascader style="width: 180px;height: 42px" :options="allCateList" :show-all-levels="false"
|
||||||
v-model="searchModel.cateId" clearable/>
|
v-model="searchModel.cateId" clearable/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
|
|
@ -426,7 +426,6 @@ const getStatisticsData = () => {
|
||||||
statisticsData.value = res
|
statisticsData.value = res
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const props = { multiple: true }
|
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.v-enter-active,
|
.v-enter-active,
|
||||||
|
|
|
||||||
|
|
@ -77,8 +77,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="addBtn">
|
<div class="addBtn">
|
||||||
<span class="default-btn" @click="openAdd">新增采购</span>
|
<span @click="openAdd">新增采购</span>
|
||||||
<span class="default-btn" @click="openUpload">一键导入</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_list">
|
<div class="content_list">
|
||||||
|
|
@ -130,7 +129,6 @@
|
||||||
</div>
|
</div>
|
||||||
<AddOrder ref="addOrderRef" @close="closeAddOrder"/>
|
<AddOrder ref="addOrderRef" @close="closeAddOrder"/>
|
||||||
<EditOrder ref="editOrderRef" @close="closeEditOrder" @updateOrderDetail="init"/>
|
<EditOrder ref="editOrderRef" @close="closeEditOrder" @updateOrderDetail="init"/>
|
||||||
<UpLoad v-model="show"></UpLoad>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -143,7 +141,6 @@ import Mask from "@/components/common/Mask.vue";
|
||||||
import EditOrder from "@/components/inventory/purchase/EditOrder.vue";
|
import EditOrder from "@/components/inventory/purchase/EditOrder.vue";
|
||||||
import {Plus, Refresh, Search, SemiSelect} from "@element-plus/icons-vue";
|
import {Plus, Refresh, Search, SemiSelect} from "@element-plus/icons-vue";
|
||||||
import {formatDateArray, getEndOfDay} from "@/utils/dateUtils.ts";
|
import {formatDateArray, getEndOfDay} from "@/utils/dateUtils.ts";
|
||||||
import UpLoad from "@/components/inventory/Upload.vue";
|
|
||||||
|
|
||||||
let tableData = ref([])
|
let tableData = ref([])
|
||||||
let is_edit = ref(false)
|
let is_edit = ref(false)
|
||||||
|
|
@ -245,10 +242,6 @@ const resetSearch = () => {
|
||||||
}
|
}
|
||||||
init()
|
init()
|
||||||
}
|
}
|
||||||
const show = ref(false)
|
|
||||||
const openUpload= ()=>{
|
|
||||||
show.value=true
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@use "@/assets/scss/base.scss";
|
@use "@/assets/scss/base.scss";
|
||||||
|
|
@ -384,9 +377,26 @@ const openUpload= ()=>{
|
||||||
}
|
}
|
||||||
|
|
||||||
.addBtn {
|
.addBtn {
|
||||||
span{
|
span {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
width: 120px;
|
||||||
|
height: 42px;
|
||||||
|
background: #FFFFFF;
|
||||||
|
border-radius: 6px;
|
||||||
|
border: 1px solid #4D6DE4;
|
||||||
margin-right: 24px;
|
margin-right: 24px;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #4D6DE4;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 42px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #4D6DE4;
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@
|
||||||
}}
|
}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="证件类型">
|
<el-descriptions-item label="证件类型">
|
||||||
{{ certTypeList.find((item: any) => item.id == Number(listItem.certType))?.name }}
|
{{ certTypeList.find((item: any) => item.id == 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>
|
||||||
|
|
@ -155,8 +155,12 @@
|
||||||
</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>
|
||||||
<Grant v-model="isGrant" :info="listItem" @close="closeGrant()"></Grant>
|
<Mask :width="600" :height="400" :is-show="isGrant" @close="isGrant=false" :title="'发放积分'">
|
||||||
<Exchange v-model="isExchange" :info="listItem" @close="closeExchange()"></Exchange>
|
<Grant :info="listItem" @close="closeGrant()"></Grant>
|
||||||
|
</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>
|
||||||
|
|
@ -234,6 +238,8 @@ const init = () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
getChargeList(listItem.value.id);
|
getChargeList(listItem.value.id);
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
const getVipIntegral = (id: any) => {
|
const getVipIntegral = (id: any) => {
|
||||||
|
|
@ -304,7 +310,6 @@ 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([])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue