huangxw 10 ay önce
ebeveyn
işleme
51c359f29b

+ 1 - 0
package.json

@@ -35,6 +35,7 @@
     "file-saver": "2.0.5",
     "fuse.js": "7.0.0",
     "highlight.js": "11.9.0",
+    "html2canvas": "^1.4.1",
     "image-conversion": "2.1.1",
     "js-cookie": "3.0.5",
     "jsencrypt": "3.3.2",

+ 29 - 18
src/views/cdt/menus/index.vue

@@ -61,7 +61,7 @@
                                 </view>
                             </template>
                         </vxe-column>
-                        <vxe-column title="检测项目" min-width="240">
+                        <vxe-column title="检测项目" min-width="280">
                             <template #default="{ row }">
                                 <view v-if="row?.items">
                                     {{ row?.items }}
@@ -78,19 +78,19 @@
                         </vxe-column>
                         <vxe-column title="上架数量" field="totalCount" width="80" :formatter="colNoData"></vxe-column>
                         <vxe-column title="销量" field="orderedCount" width="80" :formatter="colNoData"></vxe-column>
-                        <vxe-column title="开始时间" field="validFrom" width="120">
+                        <vxe-column title="开始时间" field="validFrom" width="110">
                             <template #default="{ row }">{{ row?.validFrom }}</template>
                         </vxe-column>
-                        <vxe-column title="结束时间" field="validUntil" width="120">
+                        <vxe-column title="结束时间" field="validUntil" width="110">
                             <template #default="{ row }">{{ row?.validUntil }}</template>
                         </vxe-column>
-                        <vxe-column title="剩余时间" field="restDay" width="100">
+                        <vxe-column title="剩余时间" field="restDay" width="80">
                             <template #default="{ row }">
                                 <span v-if="new Date(row?.validUntil) > new Date()">{{ Math.floor((new Date(row?.validUntil).getTime() - new Date().getTime())/(3600*24*1000))+1 }}天</span>
                                 <span v-else>已过期</span>
                             </template>
                         </vxe-column>
-                        <vxe-column title="创建人" field="createName" width="100"></vxe-column>
+                        <vxe-column title="创建人" field="createName" width="90"></vxe-column>
                         <vxe-column title="创建时间" field="createTime" width="160"></vxe-column>
                         <vxe-column title="套餐状态" align="center" width="90" fixed="right">
                             <template #default="{ row }">
@@ -129,11 +129,13 @@
         </div>
     </div>
     <el-dialog title="套餐分享" v-model="shareDialog" width="350px">
-        <div class="d-flex flex-cln">
-            {{ sharePkgName }}
-            <el-button type="primary" @click="download">下载</el-button>
+        <div ref="codeImgRef" class="d-flex flex-cln j-c a-c">
+            <div class="f-s-18 c-333 f-w-5 mb-16">{{ sharePkgName }}</div>
+            <vue-qr ref="qrCode" :text="shareText" v-if="shareText" :size="260" margin="0"></vue-qr>
+        </div>
+        <div class="d-flex flex-cln pt-16">
+            <el-button type="primary" @click="downloadQrCode">下载</el-button>
         </div>
-        <vue-qr ref="qrCode" :text="shareText" v-if="shareText" :size="300"></vue-qr>
     </el-dialog>
     <rowItems v-if="showRowItems" v-model:show="showRowItems" :packageId="rowId"></rowItems>
 </template>
@@ -145,6 +147,7 @@ import { searchTabs } from '@/views/models';
 import NP from 'number-precision';
 import { rowItems } from '../models';
 import { debounce } from 'lodash';
+import html2canvas from 'html2canvas';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { dm_package_type, dm_permit_type, vip_level } = toRefs<any>(proxy?.useDict('dm_package_type', 'dm_permit_type', 'vip_level'));
 const router = useRouter();
@@ -248,17 +251,25 @@ const showShareImg = (row) => {
     shareDialog.value = true;
 }
 const qrCode = ref<any>(null)
-const download = () => {
-    const a: any = document.createElement('a')
-    // 下载的文件名
-    a.download = `${sharePkgName.value}.png`
-    // url
-    a.href = qrCode.value.$el.src
-    // 触发点击
-    a.click()
+const codeImgRef = ref<any>(null)
+const downloadQrCode = () => {
+    // console.log('下载二维码');
+    html2canvas(codeImgRef.value, {
+        useCORS: true,
+        allowTaint: false,
+        scale: 2
+    }).then((canvas) => {
+        const url = canvas.toDataURL('image/png')
+        const a: any = document.createElement('a')
+        // 下载的文件名
+        a.download = `${sharePkgName.value}.png`
+        // url
+        a.href = url
+        // 触发点击
+        a.click()
+    })
 }
 const rowClassName = ({ row }) => {
-   console.log(row, '---');
    if (new Date(row?.validUntil) <= new Date()) {
       return 'row-expired';
    }

+ 1 - 1
src/views/cdt/models/orderInfo.vue

@@ -47,7 +47,7 @@
         </vxe-table>
         <div class="pd-8"></div>
         <div class="d-flex flex1 ov-hd">
-            <div class="left-step-box" style="width: 230px">
+            <div class="left-step-box over-auto" style="width: 230px">
                 <div class="steps-box">
                     <template v-for="(item, index) in info?.logList" :key="index">
                         <div class="steps-item d-flex">

+ 1 - 1
src/views/dgtmedicine/model/uploadInvoiceForm.vue

@@ -44,8 +44,8 @@ const submitForm = async () => {
         await formRef.value?.validate();
         const res = await uploadInvoice({ ...form.value, id: props.info?.id });
         if (res) {
-            close();
             emit('success', true);
+            close();
         }
     } catch (error) {
         console.error(error);

+ 1 - 1
src/views/dgtmedicine/pay-log/index.vue

@@ -53,7 +53,7 @@
             </div>
         </div>
     </div>
-    <uploadInvoiceForm v-if="showInvoice" v-model:show="showInvoice" :info="rowInfo"></uploadInvoiceForm>
+    <uploadInvoiceForm v-if="showInvoice" v-model:show="showInvoice" :info="rowInfo" @success="getList()"></uploadInvoiceForm>
 </template>
 <script setup name="Pay-log" lang="ts">
 import { colNoData } from '@/utils/noData';