Zory il y a 1 jour
Parent
commit
b97c98bcfe

+ 2 - 2
src/api/model/finance.js

@@ -2,8 +2,8 @@ import config from "@/config";
 import http from "@/utils/request";
 import http from "@/utils/request";
 
 
 export default {
 export default {
-    list: {
-        url: `${config.API_URL}/finance/list`,
+    openList: {
+        url: `${config.API_URL}/finance/open/list`,
         name: "-",
         name: "-",
         get: async function (params) {
         get: async function (params) {
             return await http.get(this.url, params);
             return await http.get(this.url, params);

+ 7 - 0
src/api/model/goods.js

@@ -9,6 +9,13 @@ export default {
             return await http.get(this.url, params);
             return await http.get(this.url, params);
         },
         },
     },
     },
+    qrcode: {
+        url: `${config.API_URL}/goods/qrcode`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
     category: {
     category: {
         url: `${config.API_URL}/category/list`,
         url: `${config.API_URL}/category/list`,
         name: "-",
         name: "-",

+ 7 - 0
src/api/model/store.js

@@ -37,6 +37,13 @@ export default {
             return await http.get(this.url, data);
             return await http.get(this.url, data);
         },
         },
     },
     },
+    qrcode: {
+        url: `${config.API_URL}/store/qrcode`,
+        name: "-",
+        get: async function (data = {}) {
+            return await http.get(this.url, data);
+        },
+    },
     cate: {
     cate: {
         url: `${config.API_URL}/store/cate`,
         url: `${config.API_URL}/store/cate`,
         name: "-",
         name: "-",

+ 261 - 0
src/views/manage/finance/open/components/form.vue

@@ -0,0 +1,261 @@
+<template>
+    <el-drawer v-model="visible" size="800px" destroy-on-close :close-on-click-modal="false" :with-header="false">
+        <el-container class="flex-column">
+            <div class="drawer-detail-main">
+                <div class="drawer-detail-header">
+                    <div class="drawer-detail-header-body">
+                        <div class="drawer-detail-header-left">{{titleMap[mode]}}</div>
+                        <div class="drawer-detail-header-left">
+                            <el-button type="default" icon="el-icon-close" @click="visible=false"></el-button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <el-main>
+                <div class="mb10" v-if="formData.status && formData.status == 2">
+                    <el-alert title="驳回原因" :description="formData.remark" :show-icon="false" type="error"></el-alert>
+                </div>
+                <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+                    <fieldset>
+                        <legend><el-button>商户主体信息</el-button></legend>
+                        <el-form-item label="企业名称" prop="company_name">
+                            <el-input v-model="formData.company_name" clearable placeholder="请输入"></el-input>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                        <el-form-item label="企业简称" prop="company_sub_name">
+                            <el-input v-model="formData.company_sub_name" clearable placeholder="请输入"></el-input>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                        <el-form-item label="统一社会信用码" prop="company_number">
+                            <el-input v-model="formData.company_number" clearable placeholder="请输入"></el-input>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                        <el-form-item label="营业执照" prop="company_license">
+                            <sc-upload v-model="formData.company_license" title="营业执照"></sc-upload>
+                            <div class="el-form-item-msg">营业执照原件或加盖公章的副本复印件</div>
+                        </el-form-item>
+                    </fieldset>
+                    <fieldset>
+                        <legend><el-button>经营地址</el-button></legend>
+                        <el-form-item label="所在省市区" prop="city" v-loading="cityLoad">
+                            <el-cascader ref="cascaderRef" v-model="formData.city" :options="cityData" :props="deptsProps" @change="getTemplate" clearable style="width: 100%;" />
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                        <el-form-item label="详细地址" prop="address">
+                            <el-input v-model="formData.address" clearable placeholder="无需再填省市区"></el-input>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                    </fieldset>
+                    <fieldset>
+                        <legend><el-button>商户法人信息</el-button></legend>
+                        <el-form-item label="法人姓名" prop="legal_name">
+                            <el-input v-model="formData.legal_name" clearable placeholder="请输入"></el-input>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                        <el-form-item label="法人手机号" prop="legal_mobile">
+                            <el-input v-model="formData.legal_mobile" clearable placeholder="请输入"></el-input>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                        <el-form-item label="法人证件号" prop="legal_idcard">
+                            <el-input v-model="formData.legal_idcard" clearable placeholder="请输入"></el-input>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                        <el-form-item label="联系人邮箱" prop="email">
+                            <el-input v-model="formData.email" clearable placeholder="请输入"></el-input>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                        <el-row :gutter="15">
+                            <el-col :span="12">
+                                <el-form-item label="法人证件照正面" prop="legal_id_front">
+                                    <sc-upload v-model="formData.legal_id_front" title="法人证件照正面"></sc-upload>
+                                    <div class="el-form-item-msg"></div>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="12">
+                                <el-form-item label="法人证件照反面" prop="legal_id_back">
+                                    <sc-upload v-model="formData.legal_id_back" title="法人证件照反面"></sc-upload>
+                                    <div class="el-form-item-msg"></div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </fieldset>
+                    <fieldset>
+                        <legend><el-button>结算账户信息</el-button></legend>
+                        <el-form-item label="企业银行卡号" prop="bank_number">
+                            <el-input v-model="formData.bank_number" clearable placeholder="请输入"></el-input>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                        <el-form-item label="企业开户行编码" prop="bank_code">
+                            <el-select v-model="formData.bank_code" clearable filterable remote remote-show-suffix :remote-method="remoteMethod" :loading="codeLoad" style="width: 100%;" placeholder="请选择">
+                                <el-option
+                                    v-for="item in codeData"
+                                    :key="item.bank_code"
+                                    :label="item.name"
+                                    :value="item.bank_code"
+                                >
+                                    <span style="float: left">{{ item.name }}</span>
+                                    <span
+                                        style="
+                                        float: right;
+                                        color: var(--el-text-color-secondary);
+                                        font-size: 13px;
+                                        "
+                                    >
+                                        {{ item.bank_code }}
+                                    </span>
+                                </el-option>
+                            </el-select>
+                            <div class="el-form-item-msg">如:输入中国银行,根据下拉选择</div>
+                        </el-form-item>
+                        <el-form-item label="开户许可证照片" prop="bank_img">
+                            <sc-upload v-model="formData.bank_img" title="开户许可证照片"></sc-upload>
+                            <div class="el-form-item-msg"></div>
+                        </el-form-item>
+                    </fieldset>
+                </el-form>
+            </el-main>
+            <el-footer>
+                <el-button @click="visible=false" size="large">关 闭</el-button>
+                <el-button size="large" type="success" :loading="isSaveing" @click="submitYes()">通过</el-button>
+                <el-button size="large" type="warning" :loading="isSaveing" @click="submitNo()">驳回</el-button>
+                <!-- <el-button size="large" type="primary" :loading="isSaveing" @click="submitEdit()">提 交</el-button> -->
+            </el-footer>
+        </el-container>
+    </el-drawer>
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            loading: false,
+            isSaveing: false,
+            mode:"add",
+            titleMap:{
+                add:"新增进件管理",
+                edit:"进件详情查看"
+            },
+            visible:false,
+            formData:{},
+            deptsProps:{
+                value: "value",
+                label: "text"
+            },
+            cityData:[],
+            cityLoad:false,
+            codeLoad:false,
+            codeData:[],
+            rules:{
+                company_name: [
+                    {required: true, message: '请输入'}
+                ],
+                company_number: [
+                    {required: true, message: '请输入'}
+                ],
+                company_sub_name: [
+                    {required: true, message: '请输入'}
+                ],
+                company_license: [
+                    {required: true, message: '请上传'}
+                ],
+                city: [
+                    {required: true, message: '请选择'}
+                ],
+                address: [
+                    {required: true, message: '请输入'}
+                ],
+                legal_name: [
+                    {required: true, message: '请输入'}
+                ],
+                legal_mobile: [
+                    {required: true, message: '请输入'}
+                ],
+                legal_idcard: [
+                    {required: true, message: '请输入'}
+                ],
+                legal_id_front: [
+                    {required: true, message: '请上传'}
+                ],
+                legal_id_back: [
+                    {required: true, message: '请上传'}
+                ],
+                email: [
+                    {required: true, message: '请输入'}
+                ],
+                bank_number: [
+                    {required: true, message: '请输入'}
+                ],
+                bank_code: [
+                    {required: true, message: '请输入'}
+                ],
+                bank_img: [
+                    {required: true, message: '请上传'}
+                ]
+            }
+        }
+    },
+    methods: {
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            this.getCity()
+            return this
+        },
+        async submitYes(){
+            this.$confirm(`通过审核后,该商家无需再次提交,后续开户流程将由管理员进行补充完成,确定吗`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var resp = await this.$API.shop.del.post({"id":data.id});
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(()=>{})
+        },
+        async remoteMethod(data){
+            this.codeLoad = true;
+            var resp = await this.$API.finance.code.get({name:data})
+            this.codeLoad = false;
+            if (resp.code == 0) return ;
+            this.codeData = resp.data;
+        },
+        async getCity(){
+            this.cityLoad = true;
+            var resp = await this.$API.finance.city.get();
+            this.cityLoad = false;
+            if (resp.code == 0) return this.$message.error(resp.msg)
+            this.cityData = resp.data;
+        },
+        getTemplate(v){
+            const nodes = this.$refs.cascaderRef.getCheckedNodes()
+            this.formData.city_name = nodes[0].text;
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = JSON.parse(JSON.stringify(data));
+            this.formData.city = data.city_code;
+        },
+        async submitEdit(){
+            this.$message.error("查看模式不支持修改数据")
+            // var { formData, $message } = this;
+            // var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            // if(!validate){ return false }
+            // this.isSaveing = true;
+            // var resp = await this.$API.finance.save.post(formData);
+            // this.isSaveing = false;
+            // if (resp.code == 0) {
+            //     return $message.error(resp.msg)
+            // }
+            // $message.success(resp.msg)
+            // this.visible = false;
+            // this.formData = {};
+            // this.$emit("success");
+        }
+    }
+}
+</script>
+
+<style>
+.mb10{margin-bottom: 10px;}
+</style>

+ 3 - 0
src/views/manage/finance/open/components/refuse.vue

@@ -0,0 +1,3 @@
+<template>
+
+</template>

+ 75 - 0
src/views/manage/finance/open/components/search.vue

@@ -0,0 +1,75 @@
+<template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">条件筛选</el-tag>
+        </legend>
+        <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right" label-width="100px">
+            <div class="search-form">
+                <div class="form-left">
+                    <el-row :gutter="10">
+                        <el-col :xs="12" :sm="12" :md="12" :lg="6" :xl="6">
+                            <el-input v-model="searchKey.poi_name" placeholder="请选择商家" clearbale readonly :style="{width:'100%'}" @click="selectStore">
+                                <template #append>
+                                    <el-tooltip effect="dark" content="点这里,清除选择" placement="top-start">
+                                        <div class="remove-a" @click="clearStore">清除</div>
+                                    </el-tooltip>
+                                </template>
+                                <template #prepend>所属商家</template>
+                            </el-input>
+                        </el-col>
+                        <el-col :xs="12" :sm="12" :md="12" :lg="6" :xl="4">
+                            <el-select v-model="searchKey.status" clearable placeholder="请选择状态" @change="searchForm" :style="{width: '100%'}" class="diy-select">
+                                <el-option value="1" label="待审核"></el-option>
+                                <el-option value="2" label="已完成"></el-option>
+                                <el-option value="3" label="审核驳回"></el-option>
+                                <template #prefix>类型</template>
+                            </el-select>
+                        </el-col>
+                        <el-col :xs="12" :sm="6" :md="6" :lg="6" :xl="4">
+                            <el-date-picker v-model="searchKey.create" :style="{width: '100%'}" placeholder="请选择创建时间" start-placeholder="开始时间" end-placeholder="结束时间" type="daterange" range-separator="至" @change="searchForm"></el-date-picker>
+                        </el-col>
+                    </el-row>
+                </div>
+                <div class="form-line"></div>
+                <div class="form-right">
+                    <el-button type="primary" icon="el-icon-search" @click="searchForm">搜索</el-button>
+                </div>
+            </div>
+        </el-form>
+    </fieldset>
+    <storeData ref="storeData" :multiple="false" @success="handleStore"></storeData>
+</template>
+
+<script>
+import storeData from '@/views/manage/components/agent';
+export default {
+    components: {
+        storeData
+    },
+    data(){
+        return {
+            searchKey:{}
+        }
+    },
+    methods: {
+        selectStore(){
+            this.$nextTick(()=>{
+                this.$refs.storeData.open()
+            })
+        },
+        handleStore(data){
+            this.searchKey.poi_id = data.poi_id;
+            this.searchKey.poi_name = data.poi_name;
+            this.$emit("success",this.searchKey);
+        },
+        clearStore(){
+            this.searchKey.poi_id = "";
+            this.searchKey.poi_name = "";
+            this.$emit("success",this.searchKey);
+        },
+        searchForm(){
+            this.$emit("success",this.searchKey);
+        }
+    }
+}
+</script>

+ 150 - 0
src/views/manage/finance/open/components/table.vue

@@ -0,0 +1,150 @@
+<template>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id">
+        <el-table-column label="所属商家" prop="id" width="280" fixed="left">
+            <template #default="scope">
+                <div class="goods-img">
+                    <div class="name" v-if="scope.row.poi">
+                        <span>{{ scope.row.poi.poi_name }}</span>
+                        <span class="dec">{{ scope.row.poi.poi_address }}</span>
+                    </div>
+                    <div v-else>-</div>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column prop="company_name" label="企业名称" width="220" />
+        <el-table-column label="状态" prop="enable" width="120" align="center">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 已完成</div>
+                <div class="status-danger" v-if="scope.row.status==0"><sc-status-indicator type="danger"></sc-status-indicator> 待审核</div>
+                <div v-if="scope.row.status==2">
+                    <el-popover :width="300" trigger="hover" placement="top-start" title="驳回原因">
+                        <template #reference>
+                            <div class="status-danger" v-if="scope.row.status==2"><sc-status-indicator type="danger"></sc-status-indicator> 审核驳回 <el-icon><el-icon-question-filled /></el-icon></div>
+                        </template>
+                        <div v-html="scope.row.remark"></div>
+                    </el-popover>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column prop="company_number" label="统一社会信用码" width="220" />
+        <el-table-column prop="city_name" label="所在省市区" width="220" />
+        <el-table-column prop="legal_name" label="法人姓名" width="150" />
+        <el-table-column prop="legal_mobile" label="法人手机号" width="150" />
+        <el-table-column prop="bank_number" label="对公帐号" width="150" />
+        <el-table-column prop="bank_code" label="开户行编码" width="120" />
+        <el-table-column prop="create_at" label="进件时间" width="150" />
+        <el-table-column label="操作" width="160" align="right" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button type="success" text size="small" @click="submitYes(scope.row)" v-if="scope.row.status == 0">通过</el-button>
+                    <el-button type="warning" text size="small" @click="submitNo(scope.row)" v-if="scope.row.status == 0">驳回</el-button>
+                </el-button-group>
+                <el-button-group>
+                    <el-button size="small" text @click="table_view(scope.row)">查看详情</el-button>
+                </el-button-group>
+            </template>
+        </el-table-column>
+    </scTable>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from './form'
+export default {
+    components: {
+        formMain
+    },
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.finance.openList
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{}
+        }
+    },
+    
+    methods: {
+        async submitYes(){
+            this.$confirm(`通过审核后,该商家无需再次提交,后续开户流程将由管理员进行补充完成,确定吗`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var resp = await this.$API.shop.del.post({"id":data.id});
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(()=>{})
+        },
+        table_view(data){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("edit").setData(data)
+            })
+        },
+        table_auth(data){
+            this.$nextTick(() => {
+                this.$refs.comboMain.open("edit").setData(data)
+            })
+        },
+        refresh(){
+            this.$refs.table.refresh()
+        },
+        upData(data){
+            this.$refs.table.upData(data)
+        },
+        handleSuccess(){
+            this.$refs.table.refresh()
+        },
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        selectionChange(event){
+            this.dataSelect = [];
+            var arr = [];
+            var arrCompany = [];
+            event.forEach(function(val,index){
+                arr[index] = val.id;
+                arrCompany[index] = val;
+            });
+            this.dataSelectFull = arrCompany;
+            this.dataSelect = arr;
+            this.$emit("success",this.dataSelect);
+            this.$emit("successFull",this.dataSelectFull);
+        },
+        table_passwd(row){
+            this.$nextTick(() => {
+                this.$refs.userPasswd.open("edit").setData(row)
+            })
+        }
+    }
+}
+</script>
+
+<style>
+.goods-img{display: flex;gap: 5px;}
+.goods-img .name span{display: block;}
+.goods-img .name span.dec{color: #999;font-size: 12px;}
+.goods-price,.price{display: flex;align-items: center;gap: 5px;font-size: 14px;}
+.goods-price .del{text-decoration: line-through;}
+.goods-price span{background-color: #fff !important;
+    border: 1px solid #d3d9e0 !important;
+    border-radius: 4px;
+    box-sizing: border-box;
+    color: #6c737a !important;
+    display: inline-flex;
+    flex: none;
+    font-size: 12px;
+    line-height: 18px !important;
+    padding: 1px 6px !important;text-decoration: none;}
+</style>

+ 61 - 5
src/views/manage/finance/open/index.vue

@@ -1,13 +1,69 @@
 <template>
 <template>
-
+    <el-container class="flex-column">
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+        </div>
+        <el-main class="nopadding">
+            <div class="table-container">
+                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" @total="handleTotal"></tablePage>
+            </div>
+        </el-main>
+    </el-container>
 </template>
 </template>
 
 
 <script>
 <script>
-export default{
-    data() {
+import search from './components/search';
+import tablePage from './components/table';
+export default {
+    components: {
+        search,tablePage
+    },
+    data(){
         return {
         return {
-            
+            totalLoading:false,
+            searchKey:{},
+            dataSelect:[],
+            dataSelectFull:[],
+            totalData:null,
+            searchData:null
+        }
+    },
+    methods: {
+        tips(){
+            this.$alert("请联系管理员获取相关流程后进行操作","保证金相关提醒",{
+                "show-close":false
+            })
+        },
+        handleTotal(data){
+            this.totalLoading = false;
+            this.totalData = data;
+        },
+        tableHandle(data){
+            this.dataSelect = data;
+        },
+        tableHandleFull(data){
+            this.dataSelectFull = data;
+        },
+        handleSuccess(data){
+            this.$refs.tablePage.upData(data)
+        },
+        handleClick(name){
+            this.activeName = name;
+            this.searchKey.type = name;
+            this.$refs.tablePage.upData(this.searchKey)
         }
         }
     }
     }
 }
 }
-</script>
+</script>
+
+<style>
+.news-title{font-size: 16px;color: #000;font-weight: bold;margin-bottom: 10px;display: flex;align-items: center;}
+.news-title::before{content: "";width: 4px;height: 16px;display: block;background-color: var(--el-color-primary);;margin-right: 8px;}
+.news-title span{margin-left: 10px;font-weight: normal;color: #666;font-size: 12px;}
+.card-item-deposit{border: 1px solid #ebedf0;padding: 20px 20px 20px;border-radius: 12px;align-self:flex-start;display: flex;flex-direction: column;max-width: 330px;box-sizing: border-box;}
+.card-item-deposit .deposit-title{color: #6c737a;font-size: 14px;line-height: 22px;}
+.card-item-deposit .card-num{align-items: flex-end;display: flex;flex-direction: row;margin-top: 12px;color: #1d2129;font-size: 32px;font-weight: 700;line-height: 40px;}
+.card-item-deposit .card-num span{font-weight: normal;font-size: 12px;line-height: 32px;margin-left: 10px;}
+.card-item-deposit .card-btn{display: flex;align-items: center;margin-top: 10px;}
+.mb10{margin-bottom: 10px;}
+</style>

+ 21 - 1
src/views/manage/goods/index/components/table.vue

@@ -76,6 +76,7 @@
                 <el-button-group>
                 <el-button-group>
                     <el-button size="small" type="warning" text @click="table_life(scope.row)" v-if="scope.row.status == 1">下架</el-button>
                     <el-button size="small" type="warning" text @click="table_life(scope.row)" v-if="scope.row.status == 1">下架</el-button>
                     <el-button size="small" type="warning" text @click="table_life(scope.row)" v-if="scope.row.status == 2">上架</el-button>
                     <el-button size="small" type="warning" text @click="table_life(scope.row)" v-if="scope.row.status == 2">上架</el-button>
+                    <el-button type="warning" text size="small" @click="table_qrcode(scope.row)" v-if="scope.row.status == 1">二维码</el-button>
                 </el-button-group>
                 </el-button-group>
                 <el-button-group>
                 <el-button-group>
                     <el-button size="small" text @click="table_view(scope.row)" v-if="scope.row.status == 1 || scope.row.status == 4">编辑</el-button>
                     <el-button size="small" text @click="table_view(scope.row)" v-if="scope.row.status == 1 || scope.row.status == 4">编辑</el-button>
@@ -86,6 +87,11 @@
         </el-table-column>
         </el-table-column>
     </scTable>
     </scTable>
     <formMain ref="formMain" @success="handleSuccess"></formMain>
     <formMain ref="formMain" @success="handleSuccess"></formMain>
+    <el-dialog :title="qrcodeData.title" v-model="qrVisible" :width="400" destroy-on-close>
+        <div class="qrcode-img">
+            <el-image :src="qrcodeData.img"></el-image>
+        </div>
+    </el-dialog>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -101,11 +107,25 @@ export default {
             },
             },
             dataSelect:[],
             dataSelect:[],
             dataSelectFull:[],
             dataSelectFull:[],
-            searchKey:{}
+            searchKey:{},
+            qrVisible:false,
+            qrcodeData:{
+                img:"https://washmy.oss-cn-guangzhou.aliyuncs.com/storage/20260511/23627b2cb8f73a8a90b95c31d726e6ecad0cbb9a.png",
+                title:"店铺二维码"
+            }
         }
         }
     },
     },
     
     
     methods: {
     methods: {
+        async table_qrcode(data){
+            var loading = this.$loading()
+            var resp = await this.$API.goods.qrcode.get({id:data.id});
+            loading.close()
+            if (resp.code == 0) return this.$message.error(resp.msg);
+            this.qrVisible = true;
+            this.qrcodeData.img = "data:image/png;base64,"+resp.data.qrcode.img;
+            this.qrcodeData.title = "商品【"+data.product_id+"】二维码";
+        },
         table_auth(data){
         table_auth(data){
             this.$nextTick(() => {
             this.$nextTick(() => {
                 this.$refs.comboMain.open("edit").setData(data)
                 this.$refs.comboMain.open("edit").setData(data)

+ 10 - 3
src/views/manage/shop/index/components/form.vue

@@ -3,13 +3,17 @@
         <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
         <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
             
             
             <el-row :gutter="10">
             <el-row :gutter="10">
-                <el-col :span="12">
+                <el-col :span="6">
+                    <el-form-item label="" prop="poi_logo">
+                        <sc-upload v-model="formData.poi_logo" title="店铺LOGO"></sc-upload>
+                        <div class="el-form-item-msg">小程序前端展示</div>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="18">
                     <el-form-item label="店铺名称" prop="poi_name">
                     <el-form-item label="店铺名称" prop="poi_name">
                         <el-input v-model="formData.poi_name" disabled readonly clearable placeholder="请输入"></el-input>
                         <el-input v-model="formData.poi_name" disabled readonly clearable placeholder="请输入"></el-input>
                         <div class="el-form-item-msg"></div>
                         <div class="el-form-item-msg"></div>
                     </el-form-item>
                     </el-form-item>
-                </el-col>
-                <el-col :span="12">
                     <el-form-item label="客服电话" prop="service_mobile">
                     <el-form-item label="客服电话" prop="service_mobile">
                         <el-input v-model="formData.service_mobile" clearable placeholder="请输入"></el-input>
                         <el-input v-model="formData.service_mobile" clearable placeholder="请输入"></el-input>
                         <div class="el-form-item-msg"></div>
                         <div class="el-form-item-msg"></div>
@@ -87,6 +91,9 @@ export default {
             formData:{},
             formData:{},
             cateData:[],
             cateData:[],
             rules:{
             rules:{
+                poi_logo: [
+                    {required: true, message: '请上传'}
+                ],
                 service_mobile: [
                 service_mobile: [
                     {required: true, message: '请输入'}
                     {required: true, message: '请输入'}
                 ],
                 ],

+ 21 - 1
src/views/manage/shop/index/components/table.vue

@@ -44,6 +44,7 @@
                 <el-button-group>
                 <el-button-group>
                     <el-button type="success" text size="small" @click="table_cate(scope.row)">品类</el-button>
                     <el-button type="success" text size="small" @click="table_cate(scope.row)">品类</el-button>
                     <el-button type="primary" text size="small" @click="table_express(scope.row)">快递</el-button>
                     <el-button type="primary" text size="small" @click="table_express(scope.row)">快递</el-button>
+                    <el-button type="warning" text size="small" @click="table_qrcode(scope.row)">二维码</el-button>
                 </el-button-group>
                 </el-button-group>
                 <el-button-group>
                 <el-button-group>
                     <el-button size="small" text @click="table_view(scope.row)">编辑</el-button>
                     <el-button size="small" text @click="table_view(scope.row)">编辑</el-button>
@@ -55,6 +56,11 @@
     <formMain ref="formMain" @success="handleSuccess"></formMain>
     <formMain ref="formMain" @success="handleSuccess"></formMain>
     <comboMain ref="comboMain" @success="handleSuccess"></comboMain>
     <comboMain ref="comboMain" @success="handleSuccess"></comboMain>
     <categoryMain ref="categoryMain" @success="handleSuccess"></categoryMain>
     <categoryMain ref="categoryMain" @success="handleSuccess"></categoryMain>
+    <el-dialog :title="qrcodeData.title" v-model="qrVisible" :width="400" destroy-on-close>
+        <div class="qrcode-img">
+            <el-image :src="qrcodeData.img"></el-image>
+        </div>
+    </el-dialog>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -72,12 +78,26 @@ export default {
             },
             },
             dataSelect:[],
             dataSelect:[],
             dataSelectFull:[],
             dataSelectFull:[],
-            searchKey:{}
+            searchKey:{},
+            qrVisible:false,
+            qrcodeData:{
+                img:"https://washmy.oss-cn-guangzhou.aliyuncs.com/storage/20260511/23627b2cb8f73a8a90b95c31d726e6ecad0cbb9a.png",
+                title:"店铺二维码"
+            }
         }
         }
     },
     },
     methods: {
     methods: {
         table_express(data){
         table_express(data){
             
             
+        },
+        async table_qrcode(data){
+            var loading = this.$loading()
+            var resp = await this.$API.store.qrcode.get({id:data.id});
+            loading.close()
+            if (resp.code == 0) return this.$message.error(resp.msg);
+            this.qrVisible = true;
+            this.qrcodeData.img = "data:image/png;base64,"+resp.data.qrcode.img;
+            this.qrcodeData.title = "店铺【"+data.poi_name+"】二维码";
         },
         },
         table_cate(data){
         table_cate(data){
             this.$nextTick(() => {
             this.$nextTick(() => {