Zory преди 2 дни
родител
ревизия
c6d6d5b246
променени са 34 файла, в които са добавени 1863 реда и са изтрити 62 реда
  1. 26 0
      src/api/model/deposit.js
  2. 40 0
      src/api/model/finance.js
  3. 19 0
      src/api/model/merDeposit.js
  4. 7 0
      src/api/model/merPlan.js
  5. 2 0
      src/components/imFloat/imFloat.vue
  6. 122 0
      src/views/manage/finance/deposit/components/form.vue
  7. 75 0
      src/views/manage/finance/deposit/components/option.vue
  8. 78 0
      src/views/manage/finance/deposit/components/search.vue
  9. 171 0
      src/views/manage/finance/deposit/components/table.vue
  10. 71 0
      src/views/manage/finance/deposit/index.vue
  11. 0 3
      src/views/manage/finance/history/index.vue
  12. 88 0
      src/views/manage/order/index/components/search.vue
  13. 193 0
      src/views/manage/order/index/components/table.vue
  14. 47 3
      src/views/manage/order/index/index.vue
  15. 0 3
      src/views/manage/order/qrcode/index.vue
  16. 12 5
      src/views/manage/shop/index/components/table.vue
  17. 76 2
      src/views/merchant/cps/index/components/edit.vue
  18. 2 2
      src/views/merchant/cps/index/components/form.vue
  19. 7 0
      src/views/merchant/cps/index/components/search.vue
  20. 14 12
      src/views/merchant/cps/index/components/table.vue
  21. 13 0
      src/views/merchant/finance/account/index.vue
  22. 13 0
      src/views/merchant/finance/cash/index.vue
  23. 67 0
      src/views/merchant/finance/deposit/components/option.vue
  24. 48 0
      src/views/merchant/finance/deposit/components/search.vue
  25. 160 0
      src/views/merchant/finance/deposit/components/table.vue
  26. 79 0
      src/views/merchant/finance/deposit/index.vue
  27. 239 0
      src/views/merchant/finance/index/components/form.vue
  28. 130 3
      src/views/merchant/finance/index/index.vue
  29. 29 12
      src/views/merchant/goods/add.vue
  30. 1 1
      src/views/merchant/goods/components/sku.vue
  31. 12 7
      src/views/merchant/goods/edit.vue
  32. 2 2
      src/views/merchant/goods/index/components/option.vue
  33. 4 2
      src/views/merchant/goods/index/components/search.vue
  34. 16 5
      src/views/merchant/goods/index/components/table.vue

+ 26 - 0
src/api/model/deposit.js

@@ -0,0 +1,26 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/deposit/list`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    data: {
+        url: `${config.API_URL}/merchant/deposit/data`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    save: {
+        url: `${config.API_URL}/deposit/save`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+}

+ 40 - 0
src/api/model/finance.js

@@ -0,0 +1,40 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/finance/list`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    open: {
+        url: `${config.API_URL}/finance/open`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    city: {
+        url: `${config.API_URL}/finance/city`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    code: {
+        url: `${config.API_URL}/finance/code`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    save: {
+        url: `${config.API_URL}/finance/save`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
+}

+ 19 - 0
src/api/model/merDeposit.js

@@ -0,0 +1,19 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/merchant/deposit/list`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+    data: {
+        url: `${config.API_URL}/merchant/deposit/data`,
+        name: "-",
+        get: async function (params) {
+            return await http.get(this.url, params);
+        },
+    },
+}

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

@@ -16,6 +16,13 @@ export default {
             return await http.get(this.url, params);
             return await http.get(this.url, params);
         },
         },
     },
     },
+    close: {
+        url: `${config.API_URL}/merchant/plan/close`,
+        name: "-",
+        post: async function (params) {
+            return await http.post(this.url, params);
+        },
+    },
     save: {
     save: {
         url: `${config.API_URL}/merchant/plan/save`,
         url: `${config.API_URL}/merchant/plan/save`,
         name: "-",
         name: "-",

+ 2 - 0
src/components/imFloat/imFloat.vue

@@ -731,6 +731,7 @@ export default {
                 }
                 }
                 // 给消息标红并更新最后一条消息
                 // 给消息标红并更新最后一条消息
                 var msgData = _this.chatContact;
                 var msgData = _this.chatContact;
+                console.log("msgData",msgData)
                 for (var i=0; i <= msgData.length;i ++) {
                 for (var i=0; i <= msgData.length;i ++) {
                     var item = msgData[i];
                     var item = msgData[i];
                     if (item && item.openid == data.openid) {
                     if (item && item.openid == data.openid) {
@@ -770,6 +771,7 @@ export default {
 					thumbnail: item.content
 					thumbnail: item.content
 				};
 				};
 			}
 			}
+            console.log("实时消息",item)
             console.log("item",item)
             console.log("item",item)
 			const message = {
 			const message = {
 				groupId: item.poi_id,
 				groupId: item.poi_id,

+ 122 - 0
src/views/manage/finance/deposit/components/form.vue

@@ -0,0 +1,122 @@
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
+        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+            <el-form-item label="所属商家" prop="poi_name">
+                <el-input v-model="formData.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>
+                </el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+            <el-form-item label="保证金余额" v-if="formData.poi_id">
+                <el-input v-model="formData.deposit" :disabled="true" readonly></el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+            <el-form-item label="操作类型" prop="type">
+                <el-select v-model="formData.type" clearable placeholder="请选择" :style="{width: '100%'}">
+                    <el-option :value="1" label="充值"></el-option>
+                    <el-option :value="2" label="商责赔付扣款"></el-option>
+                    <el-option :value="3" label="商责赔付退款"></el-option>
+                    <el-option :value="4" label="商责扣罚扣款"></el-option>
+                    <el-option :value="5" label="商责扣罚退款"></el-option>
+                    <el-option :value="6" label="保证金退回"></el-option>
+                </el-select>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+            <el-form-item label="操作金额" prop="money">
+                <el-input v-model="formData.money" clearable placeholder="请输入">
+                    <template #append>元</template>
+                </el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+        </el-form>
+		<template #footer>
+            <el-button @click="visible=false" size="large">取 消</el-button>
+            <el-button size="large" type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
+		</template>
+    </el-dialog>
+    <storeData ref="storeData" :multiple="false" @success="handleStore"></storeData>
+</template>
+
+<script>
+import storeData from '@/views/manage/components/agent';
+export default {
+    components: {
+        storeData
+    },
+    data(){
+        return {
+            loading: false,
+            isSaveing: false,
+            mode:"add",
+            titleMap:{
+                add:"保证金操作",
+                edit:"保证金操作"
+            },
+            visible:false,
+            formData:{
+                type:1
+            },
+            rules:{
+                type: [
+                    {required: true, message: '请选择'}
+                ],
+                poi_name: [
+                    {required: true, message: '请选择'}
+                ],
+                money: [
+                    {required: true, message: '请输入'}
+                ]
+            }
+        }
+    },
+    methods:{
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = JSON.parse(JSON.stringify(data));
+        },
+        selectStore(){
+            this.$nextTick(()=>{
+                this.$refs.storeData.open()
+            })
+        },
+        handleStore(data){
+            this.formData.poi_id = data.poi_id;
+            this.formData.poi_name = data.poi_name;
+            this.formData.deposit = this.$TOOL.money(data.deposit);
+        },
+        clearStore(){
+            this.formData.poi_id = "";
+            this.formData.poi_name = "";
+            this.formData.deposit = "";
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            this.isSaveing = true;
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            var resp = await this.$API.deposit.save.post(submitData);
+            this.isSaveing = false;
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.visible = false;
+            this.formData = {type:1};
+            this.$emit("success");
+        }
+    }
+}
+</script>
+
+<style>
+.text-center{text-align: center;}
+</style>

+ 75 - 0
src/views/manage/finance/deposit/components/option.vue

@@ -0,0 +1,75 @@
+<template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">按需操作</el-tag>
+        </legend>
+        <div class="op-header">
+            <div class="left-panel">
+                <el-button type="primary" icon="el-icon-plus" @click="table_add()">保证金操作</el-button>
+            </div>
+        </div>
+    </fieldset>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from "./form";
+export default {
+    components: {
+        formMain
+    },
+    props: {
+        dataSelect: { type: Array, default: () => [] },
+        dataSelectFull: { type: Array, default: () => [] }
+    },
+    data(){
+        return {
+
+        }
+    },
+    methods: {
+        table_add(){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("add")
+            })
+        },
+        table_sync(){
+            this.$confirm(`发起同步后,请耐心等待1-2分钟后再刷新当前数据列表`, '提示', {
+                type: 'warning'
+            }).then(async () => {
+                var resp = await this.$API.category.sync.get();
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(() => {
+
+            })
+        },
+        table_batch_status(status){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            this.$confirm(`审核中的商品不支持该操作,请确认是否有勾选审核中的商品`, '提示', {
+                type: 'warning'
+            }).then(async () => {
+                var loading = this.$loading()
+                let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
+                loading.close()
+                var resp = await this.$API.merGoods.batch.post(submitData);
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(() => {
+
+            })
+        },
+        handleSuccess(){
+            this.$emit("success");
+        }
+    }
+}
+</script>

+ 78 - 0
src/views/manage/finance/deposit/components/search.vue

@@ -0,0 +1,78 @@
+<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>
+                                <el-option value="4" label="商责扣罚扣款"></el-option>
+                                <el-option value="5" label="商责扣罚退款"></el-option>
+                                <el-option value="6" 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>

+ 171 - 0
src/views/manage/finance/deposit/components/table.vue

@@ -0,0 +1,171 @@
+<template>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id">
+        <el-table-column label="保证金流水号" width="220" prop="order_sn" fixed="left"></el-table-column>
+        <el-table-column label="所属商家" prop="id" width="280">
+            <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 label="交易金额" prop="id">
+            <template #default="scope">
+                <div class="price">{{ $TOOL.money(scope.row.money) }}</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="状态" prop="id">
+            <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 class="status-info" v-if="scope.row.status==2"><sc-status-indicator type="info"></sc-status-indicator> 核查中</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="时间" prop="create_at"></el-table-column>
+        <el-table-column label="交易类型" prop="type">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.type==1"><sc-status-indicator type="success"></sc-status-indicator> 充值</div>
+                <div class="status-danger" v-if="scope.row.type==2"><sc-status-indicator type="danger"></sc-status-indicator> 商责赔付扣款</div>
+                <div class="status-success" v-if="scope.row.type==3"><sc-status-indicator type="danger"></sc-status-indicator> 商责赔付退款</div>
+                <div class="status-danger" v-if="scope.row.type==4"><sc-status-indicator type="danger"></sc-status-indicator> 商责扣罚扣款</div>
+                <div class="status-success" v-if="scope.row.type==5"><sc-status-indicator type="danger"></sc-status-indicator> 商责扣罚退款</div>
+                <div class="status-danger" v-if="scope.row.type==6"><sc-status-indicator type="danger"></sc-status-indicator> 保证金退回</div>
+            </template>
+        </el-table-column>
+        <!-- <el-table-column label="操作" width="180" align="right" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button size="small" text @click="table_update(scope.row)">查看详情</el-button>
+                </el-button-group>
+            </template>
+        </el-table-column> -->
+    </scTable>
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.deposit.list
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{}
+        }
+    },
+    
+    methods: {
+        async getTotal(){
+            var resp = await this.$API.merDeposit.data.get();
+            if (resp.code == 1) {
+                this.$emit("total",resp.data);
+            }
+        },
+        table_auth(data){
+            this.$nextTick(() => {
+                this.$refs.comboMain.open("edit").setData(data)
+            })
+        },
+        table_update(data){
+            this.$confirm(`更新后可能数据没有变化,确定更新该达人的基础数据吗?`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var resp = await this.$API.merStar.update.post({"id":data.id});
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$refs.table.refresh()
+            }).catch(()=>{})
+        },
+        table_life(data){
+            this.$confirm(`来客下架成功后,在小程序中将不展示该商品,同时也将无法二次上架`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var resp = await this.$API.merGoods.off.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.$router.push({path:"/merchant/goods/edit",query:{"product_id":data.product_id,"id":data.id,"spm":(new Date()).getTime()}})
+        },
+        table_del(data){
+            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(()=>{})
+        },
+        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>

+ 71 - 0
src/views/manage/finance/deposit/index.vue

@@ -0,0 +1,71 @@
+<template>
+    <el-container class="flex-column">
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+            <optionBtn @success="handleSuccess" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull"></optionBtn>
+        </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>
+
+<script>
+import search from './components/search';
+import tablePage from './components/table';
+import optionBtn from './components/option';
+export default {
+    components: {
+        search,tablePage,optionBtn
+    },
+    data(){
+        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>
+
+<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>

+ 0 - 3
src/views/manage/finance/history/index.vue

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

+ 88 - 0
src/views/manage/order/index/components/search.vue

@@ -0,0 +1,88 @@
+<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-input v-model="searchKey.order_sn" placeholder="订单编号" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>订单编号</template>
+                            </el-input>
+                        </el-col>
+                        <el-col :xs="12" :sm="12" :md="12" :lg="6" :xl="4">
+                            <el-input v-model="searchKey.out_order_no" placeholder="系统单号" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <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>
+                                <el-option value="4" label="已退款"></el-option>
+                                <el-option value="5" label="退款中"></el-option>
+                                <el-option value="6" 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-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>

+ 193 - 0
src/views/manage/order/index/components/table.vue

@@ -0,0 +1,193 @@
+<template>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id">
+        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+        <el-table-column label="订单编号" width="260" fixed="left" prop="goods_id">
+            <template #default="scope">
+                <div class="order-name">
+                    <span>{{ scope.row.order_sn }}</span>
+                    <span class="dec">系统单号:{{ scope.row.out_order_no }}</span>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column label="所属商家" prop="id" width="260">
+            <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 label="商品类型" prop="types" width="100">
+            <template #default="scope">
+                {{ scope.row.product?scope.row.product.types:'-' }}
+            </template>
+        </el-table-column>
+        <el-table-column label="商品信息" width="340" prop="name">
+            <template #default="scope">
+                <div class="goods-img">
+                    <div class="img">
+                        <el-image 
+                        style="width: 54px; height: 54px"
+                        :src="scope.row.img"
+                        :zoom-rate="1.2"
+                        :max-scale="7"
+                        :min-scale="0.2"
+                        :preview-src-list="[scope.row.img]"
+                        preview-teleported
+                        z-index="999"
+                        fit="cover"></el-image>
+                    </div>
+                    <div class="name">
+                        <span>{{ scope.row.product.product_name }}</span>
+                        <span class="dec">商品编码:{{ scope.row.product.product_id }}</span>
+                    </div>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column label="商品售价" prop="types" width="120" align="right">
+            <template #default="scope">
+                <div class="order-name">
+                    <span>{{ scope.row.price?$TOOL.money(scope.row.price):'-' }}</span>
+                    <span class="dec">{{ scope.row.number }}份</span>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column label="顾客支付" prop="types" width="120" align="right">
+            <template #default="scope">
+                {{ scope.row.pay_money?$TOOL.money(scope.row.pay_money):'-' }}
+            </template>
+        </el-table-column>
+        <el-table-column label="订单状态" prop="types" width="160" align="left">
+            <template #default="scope">
+                <div class="order-name" v-if="scope.row.status == 0">
+                    <span>待支付</span>
+                    <span class="dec" v-if="scope.row.end_time.min == 0 && scope.row.end_time.sec == 0">已超时,取消支付</span>
+                    <span class="dec" v-else>剩余{{ scope.row.end_time.min }}:{{ scope.row.end_time.sec }}</span>
+                </div>
+                <div class="order-name" v-if="scope.row.status == 1">
+                    <span>待使用</span>
+                </div>
+                <div class="order-name" v-if="scope.row.status == 2">
+                    <span>已完成</span>
+                </div>
+                <div class="order-name" v-if="scope.row.status == 3">
+                    <span>已退款</span>
+                    <span class="dec">款项已原路退回</span>
+                </div>
+                <div class="order-name" v-if="scope.row.status == 4">
+                    <span>退款中</span>
+                    <span class="dec">款项已原路退回</span>
+                </div>
+                <div class="order-name" v-if="scope.row.status == 5">
+                    <span>已关闭</span>
+                    <span class="dec">用户已取消</span>
+                </div>
+            </template>
+        </el-table-column>
+        <el-table-column label="下单时间" prop="create_at" width="160"></el-table-column>
+        <el-table-column label="支付时间" prop="pay_at" width="160">
+            <template #default="scope">
+                {{ scope.row.pay_at?scope.row.pay_at:'未支付' }}
+            </template>
+        </el-table-column>
+        <el-table-column label="操作" width="140" align="left" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button size="small" text @click="table_view(scope.row)">详情</el-button>
+                    <el-button type="danger" text size="small" @click="table_del(scope.row)">删除</el-button>
+                </el-button-group>
+            </template>
+        </el-table-column>
+    </scTable>
+    <orderDetail ref="orderDetail" @success="orderSuccess"></orderDetail>
+</template>
+
+<script>
+import orderDetail from "@/components/imFloat/order";
+export default {
+    components:{
+        orderDetail
+    },
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.order.list
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{}
+        }
+    },
+    methods: {
+        orderSuccess(){
+            this.$refs.table.refresh()
+        },
+        table_view(data){
+            this.$nextTick(() => {
+                data.order = data.out_order_no
+                this.$refs.orderDetail.open("edit").setData(data)
+            })
+        },
+        table_del(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);
+        },
+    }
+}
+</script>
+
+<style>
+.order-name span{display: block;}
+.order-name span.dec{color: #999;font-size: 12px;}
+.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>

+ 47 - 3
src/views/manage/order/index/index.vue

@@ -1,3 +1,47 @@
-<template>
-
-</template>
+<template>
+    <el-container class="flex-column">
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+            <!-- <optionBtn @success="handleSuccess" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull" type="3"></optionBtn> -->
+        </div>
+        <el-main class="nopadding">
+            <div class="table-container">
+                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" type="3"></tablePage>
+            </div>
+        </el-main>
+    </el-container>  
+</template>
+
+<script>
+import search from './components/search';
+// import optionBtn from './components/option';
+import tablePage from './components/table';
+export default {
+    components: {
+        search,tablePage
+    },
+    data(){
+        return {
+            searchKey:{},
+            dataSelect:[],
+            dataSelectFull:[],
+        }
+    },
+    methods: {
+        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>

+ 0 - 3
src/views/manage/order/qrcode/index.vue

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

+ 12 - 5
src/views/manage/shop/index/components/table.vue

@@ -39,11 +39,16 @@
             </template>
             </template>
         </el-table-column>
         </el-table-column>
         <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
         <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
-        <el-table-column label="操作" width="200" align="left" fixed="right">
+        <el-table-column label="操作" width="180" align="left" fixed="right">
             <template #default="scope">
             <template #default="scope">
-                <el-button type="primary" size="small" @click="table_cate(scope.row)">品类</el-button>
-                <el-button size="small" @click="table_view(scope.row)">编辑</el-button>
-                <el-button type="danger" size="small" @click="table_del(scope.row)">删除</el-button>
+                <el-button-group>
+                    <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-group>
+                <el-button-group>
+                    <el-button size="small" text @click="table_view(scope.row)">编辑</el-button>
+                    <el-button type="danger" text size="small" @click="table_del(scope.row)">删除</el-button>
+                </el-button-group>
             </template>
             </template>
         </el-table-column>
         </el-table-column>
     </scTable>
     </scTable>
@@ -70,8 +75,10 @@ export default {
             searchKey:{}
             searchKey:{}
         }
         }
     },
     },
-    
     methods: {
     methods: {
+        table_express(data){
+            
+        },
         table_cate(data){
         table_cate(data){
             this.$nextTick(() => {
             this.$nextTick(() => {
                 this.$refs.categoryMain.open("add").setData(data)
                 this.$refs.categoryMain.open("add").setData(data)

+ 76 - 2
src/views/merchant/cps/index/components/edit.vue

@@ -26,6 +26,7 @@
                                 <el-skeleton animated></el-skeleton>
                                 <el-skeleton animated></el-skeleton>
                             </el-card>
                             </el-card>
                         </div>
                         </div>
+                        <el-button type="default" @click="quickGoods" v-if="goodsData.length > 0">一键设置佣金</el-button>
                         <div class="goods-live" v-if="goodsData.length>0">
                         <div class="goods-live" v-if="goodsData.length>0">
                             <scTable ref="starTable" :data="goodsData" row-key="id" height="500" hidePagination hideDo style="width: 750px;">
                             <scTable ref="starTable" :data="goodsData" row-key="id" height="500" hidePagination hideDo style="width: 750px;">
                                 <el-table-column label="商品信息" width="340" prop="name" fixed="left">
                                 <el-table-column label="商品信息" width="340" prop="name" fixed="left">
@@ -173,7 +174,8 @@
                                 <el-table-column label="操作" width="100" align="left" fixed="right">
                                 <el-table-column label="操作" width="100" align="left" fixed="right">
                                     <template #default="scope">
                                     <template #default="scope">
                                         <el-button-group>
                                         <el-button-group>
-                                            <el-button type="danger" :disabled="scope.row.id?'true':'false'" text size="small" @click="removeStar(scope.$index)">删除</el-button>
+                                            <el-button type="danger" v-if="scope.row.id=='0'" text size="small" @click="removeStar(scope.$index)">删除</el-button>
+                                            <el-button type="danger" v-else text size="small" :disabled="true">删除</el-button>
                                         </el-button-group>
                                         </el-button-group>
                                     </template>
                                     </template>
                                 </el-table-column>
                                 </el-table-column>
@@ -184,16 +186,48 @@
             </el-main>
             </el-main>
             <el-footer>
             <el-footer>
                 <el-button @click="visible=false" size="large">取 消</el-button>
                 <el-button @click="visible=false" size="large">取 消</el-button>
-                <el-button size="large" type="primary" :loading="isSaveing" @click="submitRate()">保 存</el-button>
+                <el-button size="large" type="primary" :loading="isSaveing" @click="submitEdit()">保 存</el-button>
             </el-footer>
             </el-footer>
         </el-container>
         </el-container>
     </el-drawer>
     </el-drawer>
+    <starMain ref="starMain" :multiple="true" @success="handleStar"></starMain>
+    <el-dialog title="一键设置佣金" v-model="quickData.visible" :width="460" append-to-body destroy-on-close :close-on-click-modal="false">
+        <el-form ref="quickForm" :model="quickData.formData" :rules="quickData.rules" label-width="100px" label-position="top">
+            <el-form-item label="输入后商品将设置相同佣金" prop="rate">
+                <el-input v-model="quickData.formData.rate" clearable placeholder="0%-29%">
+                    <template #suffix>%</template>
+                </el-input>
+                <div class="el-form-item-msg">佣金比例请设置在0%-29%之间</div>
+            </el-form-item>
+        </el-form>
+		<template #footer>
+            <el-button @click="quickData.visible=false" size="large">取 消</el-button>
+            <el-button size="large" type="primary" :loading="quickData.isSaveing" @click="submitRate()">保 存</el-button>
+		</template>
+    </el-dialog>
 </template>
 </template>
 
 
 <script>
 <script>
+import starMain from '@/views/merchant/components/star';
 export default {
 export default {
+    components: {
+        starMain
+    },
     data(){
     data(){
         return {
         return {
+            quickData:{
+                visible:false,
+                rate:null,
+                isSaveing:false,
+                formData:{
+                    rate:null
+                },
+                rules:{
+                    rate: [
+                        {required: true, message: '请输入'}
+                    ],
+                }
+            },
             loading: false,
             loading: false,
             isSaveing: false,
             isSaveing: false,
             mode:"add",
             mode:"add",
@@ -210,6 +244,9 @@ export default {
         }
         }
     },
     },
     methods:{
     methods:{
+        quickGoods(){
+            this.quickData.visible = true;
+        },
         open(mode = 'add'){
         open(mode = 'add'){
             this.mode = mode;
             this.mode = mode;
             this.visible = true;
             this.visible = true;
@@ -255,7 +292,44 @@ export default {
             const rateMoney = this.$TOOL.moneyFormat(parseFloat(goods.commission_rate) * goods.goods.price / 100);
             const rateMoney = this.$TOOL.moneyFormat(parseFloat(goods.commission_rate) * goods.goods.price / 100);
             this.goodsData[index].rate_money = rateMoney;
             this.goodsData[index].rate_money = rateMoney;
         },
         },
+        addStar(){
+            this.$nextTick(() => {
+                this.$refs.starMain.open("add")
+            })
+        },
+        handleStar(data){
+            var newData = [];
+            data.forEach((value)=>{
+                const has = this.starData.some(item => item['unique_id'] === value['unique_id'])
+                if (!has) newData.push({"id":'0',"plan_id":this.formData.plan_id,"star":value,"unique_id":value.unique_id})
+            })
+            if (newData.length > 0) {
+                this.starData = this.starData.concat(newData);
+            }
+        },
+        removeStar(index){
+            console.log("index",index)
+            this.starData.splice(index,1);
+        },
         async submitRate(){
         async submitRate(){
+            var validate = await this.$refs.quickForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            if (parseFloat(this.quickData.formData.rate) > 29) {
+                this.quickData.formData.rate = 0;
+                return ;
+            }
+            this.quickData.isSaveing = true;
+            var goodsData = this.goodsData;
+            goodsData.forEach((item) =>{
+                const rateMoney = this.$TOOL.moneyFormat(parseFloat(this.quickData.formData.rate) * item.goods.price / 100);
+                item.rate_money = rateMoney;
+                item.commission_rate = this.quickData.formData.rate;
+            })
+            this.goodsData = goodsData;
+            this.quickData.isSaveing = false;
+            this.quickData.visible = false;
+        },
+        async submitEdit(){
             const formData = {};
             const formData = {};
             if (this.mode == 'star') {
             if (this.mode == 'star') {
                 formData.data = JSON.stringify(this.starData);
                 formData.data = JSON.stringify(this.starData);

+ 2 - 2
src/views/merchant/cps/index/components/form.vue

@@ -173,13 +173,13 @@
                             </scTable>
                             </scTable>
                         </div>
                         </div>
                     </el-form-item>
                     </el-form-item>
-                    <el-form-item label="状态" prop="status">
+                    <!-- <el-form-item label="状态" prop="status">
                         <el-radio-group v-model="formData.status">
                         <el-radio-group v-model="formData.status">
                             <el-radio-button :label="1">正常</el-radio-button>
                             <el-radio-button :label="1">正常</el-radio-button>
                             <el-radio-button :label="2">禁用</el-radio-button>
                             <el-radio-button :label="2">禁用</el-radio-button>
                         </el-radio-group>
                         </el-radio-group>
                         <div class="el-form-item-msg">禁用后的达人不可绑定直播计划</div>
                         <div class="el-form-item-msg">禁用后的达人不可绑定直播计划</div>
-                    </el-form-item>
+                    </el-form-item> -->
                 </el-form>
                 </el-form>
             </el-main>
             </el-main>
             <el-footer>
             <el-footer>

+ 7 - 0
src/views/merchant/cps/index/components/search.vue

@@ -12,6 +12,13 @@
                                 <template #prepend>计划名称</template>
                                 <template #prepend>计划名称</template>
                             </el-input>
                             </el-input>
                         </el-col>
                         </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>
+                                <template #prefix>状态</template>
+                            </el-select>
+                        </el-col>
                         <el-col :xs="12" :sm="6" :md="6" :lg="6" :xl="4">
                         <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 v-model="searchKey.create" :style="{width: '100%'}" placeholder="请选择创建时间" start-placeholder="开始时间" end-placeholder="结束时间" type="daterange" range-separator="至" @change="searchForm" />
                         </el-col>
                         </el-col>

+ 14 - 12
src/views/merchant/cps/index/components/table.vue

@@ -45,7 +45,7 @@
         <el-table-column label="状态" prop="enable" width="120" align="center">
         <el-table-column label="状态" prop="enable" width="120" align="center">
             <template #default="scope">
             <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-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==2"><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
+                <div class="status-danger" v-if="scope.row.status==2"><sc-status-indicator type="danger"></sc-status-indicator> 已取消</div>
             </template>
             </template>
         </el-table-column>
         </el-table-column>
         <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
         <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
@@ -54,7 +54,8 @@
                 <el-button-group>
                 <el-button-group>
                     <el-button size="small" text @click="table_rate(scope.row)" v-if="scope.row.status == 1">修改佣金</el-button>
                     <el-button size="small" text @click="table_rate(scope.row)" v-if="scope.row.status == 1">修改佣金</el-button>
                     <el-button type="success" size="small" text @click="table_star(scope.row)" v-if="scope.row.status == 1">达人</el-button>
                     <el-button type="success" size="small" text @click="table_star(scope.row)" v-if="scope.row.status == 1">达人</el-button>
-                    <el-button type="danger" text size="small" @click="table_del(scope.row)">关闭</el-button>
+                    <el-button type="danger" text size="small" @click="table_close(scope.row)" v-if="scope.row.status == 1">关闭</el-button>
+                    <el-button type="danger" text size="small" @click="table_del(scope.row)" v-if="scope.row.status == 2">删除</el-button>
                 </el-button-group>
                 </el-button-group>
             </template>
             </template>
         </el-table-column>
         </el-table-column>
@@ -110,26 +111,27 @@ export default {
                 this.$refs.table.refresh()
                 this.$refs.table.refresh()
             }).catch(()=>{})
             }).catch(()=>{})
         },
         },
-        table_life(data){
-            this.$confirm(`来客下架成功后,在小程序中将不展示该商品,同时也将无法二次上架`, '提示', {
+        table_del(data){
+            this.$confirm(`删除后,所有该计划对应的数据将一并被删除`, '提示', {
                 type: 'warning'
                 type: 'warning'
             }).then(async ()=>{
             }).then(async ()=>{
-                var resp = await this.$API.merGoods.off.post({"id":data.id});
+                var loading = this.$loading()
+                var resp = await this.$API.merPlan.merPlan.post({"id":data.id});
+                loading.close();
                 if (resp.code == 0) {
                 if (resp.code == 0) {
                     return this.$message.error(resp.msg);
                     return this.$message.error(resp.msg);
                 }
                 }
                 this.$message.success(resp.msg);
                 this.$message.success(resp.msg);
-                this.$emit("success");
+                this.$refs.table.refresh()
             }).catch(()=>{})
             }).catch(()=>{})
         },
         },
-        table_view(data){
-            this.$router.push({path:"/merchant/goods/edit",query:{"product_id":data.product_id,"id":data.id,"spm":(new Date()).getTime()}})
-        },
-        table_del(data){
-            this.$confirm(`删除店铺后,所有有关该店铺的门店、订单等信息都将删除,不可恢复,确定要执行删除吗`, '提示', {
+        table_close(data){
+            this.$confirm(`关闭该定向计划后,达人无法勾选对应商品进行直播`, '提示', {
                 type: 'warning'
                 type: 'warning'
             }).then(async ()=>{
             }).then(async ()=>{
-                var resp = await this.$API.shop.del.post({"id":data.id});
+                var loading = this.$loading()
+                var resp = await this.$API.merPlan.close.post({"id":data.id});
+                loading.close();
                 if (resp.code == 0) {
                 if (resp.code == 0) {
                     return this.$message.error(resp.msg);
                     return this.$message.error(resp.msg);
                 }
                 }

+ 13 - 0
src/views/merchant/finance/account/index.vue

@@ -0,0 +1,13 @@
+<template>
+    
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+
+        }
+    }
+}
+</script>

+ 13 - 0
src/views/merchant/finance/cash/index.vue

@@ -0,0 +1,13 @@
+<template>
+    
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+
+        }
+    }
+}
+</script>

+ 67 - 0
src/views/merchant/finance/deposit/components/option.vue

@@ -0,0 +1,67 @@
+<template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">按需操作</el-tag>
+        </legend>
+        <div class="op-header">
+        </div>
+    </fieldset>
+</template>
+
+<script>
+export default {
+    props: {
+        dataSelect: { type: Array, default: () => [] },
+        dataSelectFull: { type: Array, default: () => [] }
+    },
+    data(){
+        return {
+
+        }
+    },
+    methods: {
+        table_add(){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("add")
+            })
+        },
+        table_sync(){
+            this.$confirm(`发起同步后,请耐心等待1-2分钟后再刷新当前数据列表`, '提示', {
+                type: 'warning'
+            }).then(async () => {
+                var resp = await this.$API.category.sync.get();
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(() => {
+
+            })
+        },
+        table_batch_status(status){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            this.$confirm(`审核中的商品不支持该操作,请确认是否有勾选审核中的商品`, '提示', {
+                type: 'warning'
+            }).then(async () => {
+                var loading = this.$loading()
+                let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
+                loading.close()
+                var resp = await this.$API.merGoods.batch.post(submitData);
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(() => {
+
+            })
+        },
+        handleSuccess(){
+            this.$emit("success");
+        }
+    }
+}
+</script>

+ 48 - 0
src/views/merchant/finance/deposit/components/search.vue

@@ -0,0 +1,48 @@
+<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="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>
+                                <el-option value="4" label="商责扣罚扣款"></el-option>
+                                <el-option value="5" label="商责扣罚退款"></el-option>
+                                <el-option value="6" 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>
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            searchKey:{}
+        }
+    },
+    methods: {
+        searchForm(){
+            this.$emit("success",this.searchKey);
+        }
+    }
+}
+</script>

+ 160 - 0
src/views/merchant/finance/deposit/components/table.vue

@@ -0,0 +1,160 @@
+<template>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" @dataChange="getTotal">
+        <el-table-column label="保证金流水号" width="220" prop="order_sn" fixed="left"></el-table-column>
+        <el-table-column label="交易金额" prop="id">
+            <template #default="scope">
+                <div class="price">{{ $TOOL.money(scope.row.money) }}</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="状态" prop="id">
+            <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 class="status-info" v-if="scope.row.status==2"><sc-status-indicator type="info"></sc-status-indicator> 核查中</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="时间" prop="create_at"></el-table-column>
+        <el-table-column label="交易类型" prop="type">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.type==1"><sc-status-indicator type="success"></sc-status-indicator> 充值</div>
+                <div class="status-danger" v-if="scope.row.type==2"><sc-status-indicator type="danger"></sc-status-indicator> 商责赔付扣款</div>
+                <div class="status-success" v-if="scope.row.type==3"><sc-status-indicator type="danger"></sc-status-indicator> 商责赔付退款</div>
+                <div class="status-danger" v-if="scope.row.type==4"><sc-status-indicator type="danger"></sc-status-indicator> 商责扣罚扣款</div>
+                <div class="status-success" v-if="scope.row.type==5"><sc-status-indicator type="danger"></sc-status-indicator> 商责扣罚退款</div>
+                <div class="status-danger" v-if="scope.row.type==6"><sc-status-indicator type="danger"></sc-status-indicator> 保证金退回</div>
+            </template>
+        </el-table-column>
+        <!-- <el-table-column label="操作" width="180" align="right" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button size="small" text @click="table_update(scope.row)">查看详情</el-button>
+                </el-button-group>
+            </template>
+        </el-table-column> -->
+    </scTable>
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.merDeposit.list
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{}
+        }
+    },
+    
+    methods: {
+        async getTotal(){
+            var resp = await this.$API.merDeposit.data.get();
+            if (resp.code == 1) {
+                this.$emit("total",resp.data);
+            }
+        },
+        table_auth(data){
+            this.$nextTick(() => {
+                this.$refs.comboMain.open("edit").setData(data)
+            })
+        },
+        table_update(data){
+            this.$confirm(`更新后可能数据没有变化,确定更新该达人的基础数据吗?`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var resp = await this.$API.merStar.update.post({"id":data.id});
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$refs.table.refresh()
+            }).catch(()=>{})
+        },
+        table_life(data){
+            this.$confirm(`来客下架成功后,在小程序中将不展示该商品,同时也将无法二次上架`, '提示', {
+                type: 'warning'
+            }).then(async ()=>{
+                var resp = await this.$API.merGoods.off.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.$router.push({path:"/merchant/goods/edit",query:{"product_id":data.product_id,"id":data.id,"spm":(new Date()).getTime()}})
+        },
+        table_del(data){
+            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(()=>{})
+        },
+        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>

+ 79 - 0
src/views/merchant/finance/deposit/index.vue

@@ -0,0 +1,79 @@
+<template>
+    <el-container class="flex-column">
+        <div class="table-search" style="border-bottom: 0;" v-loading="totalLoading">
+            <div class="user-card-deposit mb10">
+                <div class="card-item-deposit">
+                    <div class="deposit-title">保证金当前余额</div>
+                    <div class="card-num">{{ totalData?$TOOL.money(totalData.deposit):'0.00' }} <span>元</span></div>
+                    <div class="card-btn">
+                        <el-button size="small" type="primary" @click="tips">充值</el-button>
+                        <el-button size="small" @click="tips">退回</el-button>
+                    </div>
+                </div>
+            </div>
+            <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>
+
+<script>
+import search from './components/search';
+import tablePage from './components/table';
+export default {
+    components: {
+        search,tablePage
+    },
+    data(){
+        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>
+
+<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>

+ 239 - 0
src/views/merchant/finance/index/components/form.vue

@@ -0,0 +1,239 @@
+<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>
+                <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="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 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(){
+            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>

+ 130 - 3
src/views/merchant/finance/index/index.vue

@@ -1,13 +1,140 @@
 <template>
 <template>
-    
+    <el-container class="flex-column">
+        <el-main>
+            <el-card shadow="never" class="borderNone mb10">
+                <template #header>
+                    <div class="news-title">账户总览 <span>(单位/元)</span>
+                        <template v-if="searchData"><span>截止:{{ searchData }}</span></template>
+                    </div>
+                </template>
+                <div class="user-card-body">
+                    <div class="card-item">
+                        <div class="card-num">{{ totalData?totalData.t1:'0' }} <span>元</span></div>
+                        <el-tooltip :width="300" effect="dark" placement="bottom-start">
+                            <template #content>当前商户的各账户余额之和</template>
+                            <div class="card-tips">总资金 <el-icon><el-icon-question-filled /></el-icon></div>
+                        </el-tooltip>
+                    </div>
+                    <div class="card-item">
+                        <div class="card-num">{{ totalData?totalData.t1:'0' }} <span>元</span></div>
+                        <el-tooltip :width="200" effect="dark" placement="bottom-start">
+                            <template #content>订单发起结算或分账后会到可提现<br />账户内只有该账户的资金支持提<br />现</template>
+                            <div class="card-tips">可提现总资金 <el-icon><el-icon-question-filled /></el-icon></div>
+                        </el-tooltip>
+                    </div>
+                    <div class="card-item">
+                        <div class="card-num">{{ totalData?totalData.t1:'0' }} <span>元</span></div>
+                        <el-tooltip :width="300" effect="dark" placement="bottom-start">
+                            <template #content>用户支付后金额进入到商户在途户<br />中,商户发起分账后资金才能从在<br />途户结算到可提现资金。</template>
+                            <div class="card-tips">在途总资金 <el-icon><el-icon-question-filled /></el-icon></div>
+                        </el-tooltip>
+                    </div>
+                    <div class="card-item">
+                        <div class="card-num">{{ totalData?totalData.t1:'0' }} <span>元</span></div>
+                        <el-tooltip :width="300" effect="dark" placement="bottom-start">
+                            <template #content>平台结合商家营业情况综合确定冻<br />结金额,冻结金额会定期更新</template>
+                            <div class="card-tips">冻结总资金 <el-icon><el-icon-question-filled /></el-icon></div>
+                        </el-tooltip>
+                    </div>
+                </div>
+            </el-card>
+            <el-card shadow="never" class="borderNone mb10">
+                <template #header>
+                    <div class="news-title-btn">
+                        <div class="h3">账户列表</div>
+                        <el-button type="primary" icon="el-icon-plus" @click="table_add">新增进件</el-button>
+                    </div>
+                </template>
+                <el-table :data="tableData">
+                    <el-table-column prop="company_name" label="企业名称" width="220" />
+                    <el-table-column prop="company_number" label="统一社会信用码" />
+                    <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 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="create_at" label="进件时间" width="150" />
+                    <el-table-column label="操作" width="120" align="left" fixed="right">
+                        <template #default="scope">
+                            <el-button-group>
+                                <el-button size="small" type="warning" text @click="table_edit(scope.row)" v-if="scope.row.status == 2">重新进件</el-button>
+                                <el-button size="small" text v-else>-</el-button>
+                            </el-button-group>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </el-card>
+        </el-main>
+    </el-container>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
 </template>
 </template>
 
 
 <script>
 <script>
+import formMain from './components/form'
 export default {
 export default {
+    components: {
+        formMain
+    },
     data(){
     data(){
         return {
         return {
-
+            totalData:null,
+            searchData:"",
+            totalLoading:false,
+            tableData:[]
+        }
+    },
+    mounted(){
+        this.getOpen()
+    },
+    methods: {
+        async getOpen(){
+            var resp = await this.$API.finance.open.get();
+            this.tableData = resp.data;
+        },
+        table_add(){
+            if (this.tableData.length > 0) return this.$message.error("请耐心等待审核,无需重复进件")
+            this.$nextTick(() => {
+                this.$refs.formMain.open("add")
+            })
+        },
+        table_edit(data){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("edit").setData(data)
+            })
+        },
+        handleSuccess(){
+            this.$emit("success");
         }
         }
     }
     }
 }
 }
-</script>
+</script>
+
+<style>
+.user-card-body{display: flex;align-items: center;justify-content: space-around;padding: 10px 0;}
+.user-card-body .card-item{text-align: center;}
+.user-card-body .card-item .card-num span{font-size: 12px;color: #666;font-weight: normal;}
+.user-card-body .card-tips{font-size: 12px;color: #666;display: flex;align-items: center;cursor: pointer;}
+.user-card-body .card-tips i{font-style: normal;margin-left: 5px;}
+.user-card-body .card-num{font-size: 20px;font-weight: bold;}
+.mb10{margin-bottom: 15px;}
+.news-title-btn{display: flex;align-items: center;justify-content: space-between;}
+.news-title-btn .h3{display: flex;align-items: center;}
+.news-title-btn .h3::before{content: "";width: 4px;height: 16px;display: block;background-color: var(--el-color-primary);;margin-right: 8px;}
+.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;}
+</style>

+ 29 - 12
src/views/merchant/goods/add.vue

@@ -64,7 +64,7 @@
                             </el-row>
                             </el-row>
                             <fieldset>
                             <fieldset>
                                 <legend><el-tag>商品搭配</el-tag></legend>
                                 <legend><el-tag>商品搭配</el-tag></legend>
-                                <el-button type="primary" size="small" @click="addSpecs" v-if="specs.length<5">添加分组</el-button>
+                                <el-button type="primary" @click="addSpecs" v-if="specs.length<5">添加分组</el-button>
                                 <div class="specs" v-for="(item,indx) in specs" :key="indx">
                                 <div class="specs" v-for="(item,indx) in specs" :key="indx">
                                     <div class="specs-header">
                                     <div class="specs-header">
                                         <div class="specs-left">
                                         <div class="specs-left">
@@ -123,8 +123,8 @@
                                         </div>
                                         </div>
                                     </div>
                                     </div>
                                     <div class="specs-footer">
                                     <div class="specs-footer">
-                                         <el-button type="primary" @click="addItem(indx)">增加单品</el-button>
-                                        <el-button type="danger" @click="removeSpec(indx)">删除组</el-button>
+                                         <el-button size="small" type="primary" @click="addItem(indx)">增加单品</el-button>
+                                        <el-button size="small" type="danger" @click="removeSpec(indx)">删除组</el-button>
                                     </div>
                                     </div>
                                 </div>
                                 </div>
                             </fieldset>
                             </fieldset>
@@ -137,7 +137,7 @@
                             </el-form-item>
                             </el-form-item>
                             <fieldset v-if="formData.mult_sku == 2">
                             <fieldset v-if="formData.mult_sku == 2">
                                 <legend><el-tag>规格明细</el-tag></legend>
                                 <legend><el-tag>规格明细</el-tag></legend>
-                                <el-button type="primary" size="small" @click="addSkuSpecs" v-if="skuSpecs.length<5">新增规格</el-button>
+                                <el-button type="primary" @click="addSkuSpecs" v-if="skuSpecs.length<5">新增规格</el-button>
                                 <div class="sku-table">
                                 <div class="sku-table">
                                     <el-table :data="skuSpecs" border>
                                     <el-table :data="skuSpecs" border>
                                         <el-table-column prop="image" label="规格图片" width="180">
                                         <el-table-column prop="image" label="规格图片" width="180">
@@ -158,21 +158,21 @@
                                         <el-table-column prop="line_price" label="划线价(必填)" width="160">
                                         <el-table-column prop="line_price" label="划线价(必填)" width="160">
                                             <template #default="scope">
                                             <template #default="scope">
                                                 <el-input v-model="scope.row.line_price" type="number" placeholder="划线价">
                                                 <el-input v-model="scope.row.line_price" type="number" placeholder="划线价">
-                                                    <template #prepend>¥</template>
+                                                    <template #prefix>¥</template>
                                                 </el-input>
                                                 </el-input>
                                             </template>
                                             </template>
                                         </el-table-column>
                                         </el-table-column>
-                                        <el-table-column prop="price" label="支付价(必填)" width="160">
+                                        <el-table-column label="支付价(必填)" width="160">
                                             <template #default="scope">
                                             <template #default="scope">
-                                                <el-input v-model="scope.row.price" type="number" placeholder="支付价">
-                                                    <template #prepend>¥</template>
+                                                <el-input v-model="scope.row.price" :disable="true" readonly placeholder="支付价">
+                                                    <template #prefix>¥</template>
                                                 </el-input>
                                                 </el-input>
                                             </template>
                                             </template>
                                         </el-table-column>
                                         </el-table-column>
                                         <el-table-column prop="custom_price" label="差价(必填)" width="160" v-if="formData.product_type == 11">
                                         <el-table-column prop="custom_price" label="差价(必填)" width="160" v-if="formData.product_type == 11">
                                             <template #default="scope">
                                             <template #default="scope">
                                                 <el-input v-model="scope.row.custom_price" type="number" placeholder="差价">
                                                 <el-input v-model="scope.row.custom_price" type="number" placeholder="差价">
-                                                    <template #prepend>¥</template>
+                                                    <template #prefix>¥</template>
                                                 </el-input>
                                                 </el-input>
                                             </template>
                                             </template>
                                         </el-table-column>
                                         </el-table-column>
@@ -324,7 +324,7 @@
                                 </div>
                                 </div>
                             </el-form-item>
                             </el-form-item>
                             <el-form-item label="顾客信息设置" prop="customer_reserved_info">
                             <el-form-item label="顾客信息设置" prop="customer_reserved_info">
-                                <el-radio-group v-model="formData.customer_reserved_info">
+                                <el-radio-group v-model="formData.customer_reserved_info" disabled>
                                     <el-radio :label="1">不需要</el-radio>
                                     <el-radio :label="1">不需要</el-radio>
                                     <el-radio :label="2">需要顾客手机号码</el-radio>
                                     <el-radio :label="2">需要顾客手机号码</el-radio>
                                 </el-radio-group>
                                 </el-radio-group>
@@ -444,6 +444,16 @@
                                     </el-input>
                                     </el-input>
                                 </div>
                                 </div>
                             </el-form-item>
                             </el-form-item>
+                            <el-form-item label="库存方式" prop="stock_type">
+                                <el-radio-group v-model="formData.stock_type">
+                                    <el-radio :label="1">付款减库存</el-radio>
+                                    <el-radio :label="2">核销减库存</el-radio>
+                                </el-radio-group>
+                                <div class="el-form-item-msg">
+                                    <span v-if="formData.stock_type==1">用户在小程序支付成功后,已售数量增加,库存减少,不限库存不受影响</span>
+                                    <span v-if="formData.stock_type==2">用户在完成订单核销后,已售数量增加,库存减少,不限库存不受影响</span>
+                                </div>
+                            </el-form-item>
                         </el-card>
                         </el-card>
                         </template>
                         </template>
                     </el-form>
                     </el-form>
@@ -573,7 +583,10 @@ export default {
                 rec_person_type:1,
                 rec_person_type:1,
                 rec_person_num_max:1,
                 rec_person_num_max:1,
                 image_list:[],
                 image_list:[],
-                mult_sku:1
+                detail_image_list:[],
+                environment_image_list:[],
+                mult_sku:1,
+                stock_type:1
             },
             },
             holiday:[{'key':1,"name":"元旦"},{'key':2,"name":"春节"},{'key':3,"name":"清明"},{'key':4,"name":"劳动节"},{'key':5,"name":"端午节"},{'key':6,"name":"中秋节"},{'key':7,"name":"国庆节"},{'key':8,"name":"情人节"},{'key':9,"name":"圣诞节"},{'key':10,"name":"元宵节"},{'key':11,"name":"520"},{'key':12,"name":"儿童节"},{'key':13,"name":"七夕节"},{'key':14,"name":"二月二"},{'key':15,"name":"母亲节"},{'key':16,"name":"父亲节"},{'key':17,"name":"教师节"}],
             holiday:[{'key':1,"name":"元旦"},{'key':2,"name":"春节"},{'key':3,"name":"清明"},{'key':4,"name":"劳动节"},{'key':5,"name":"端午节"},{'key':6,"name":"中秋节"},{'key':7,"name":"国庆节"},{'key':8,"name":"情人节"},{'key':9,"name":"圣诞节"},{'key':10,"name":"元宵节"},{'key':11,"name":"520"},{'key':12,"name":"儿童节"},{'key':13,"name":"七夕节"},{'key':14,"name":"二月二"},{'key':15,"name":"母亲节"},{'key':16,"name":"父亲节"},{'key':17,"name":"教师节"}],
             weeksData:[{'key':1,"name":"星期一"},{'key':2,"name":"星期二"},{'key':3,"name":"星期三"},{'key':4,"name":"星期四"},{'key':5,"name":"星期五"},{'key':6,"name":"星期六"},{'key':7,"name":"星期天"},],
             weeksData:[{'key':1,"name":"星期一"},{'key':2,"name":"星期二"},{'key':3,"name":"星期三"},{'key':4,"name":"星期四"},{'key':5,"name":"星期五"},{'key':6,"name":"星期六"},{'key':7,"name":"星期天"},],
@@ -642,6 +655,9 @@ export default {
                 product_type: [
                 product_type: [
                     {required: true, message: '请选择'}
                     {required: true, message: '请选择'}
                 ],
                 ],
+                stock_type: [
+                    {required: true, message: '请选择'}
+                ],
             },
             },
             deptsProps:{
             deptsProps:{
                 value: "category_id",
                 value: "category_id",
@@ -674,7 +690,8 @@ export default {
             })
             })
         },
         },
         addSkuSpecs(){
         addSkuSpecs(){
-            this.skuSpecs.push({"image":"","sku_id":this.generate(),"name":"","line_price":1,"custom_price":1,"price":1,"is_default":false,"specs":[]});
+            if(!this.formData.price) return this.$message.error("请先设置顾客实际需支付金额");
+            this.skuSpecs.push({"image":"","sku_id":this.generate(),"name":"","line_price":1,"custom_price":1,"price":this.formData.price,"is_default":false,"specs":[]});
         },
         },
         removeItemSku(index){
         removeItemSku(index){
             this.skuSpecs.splice(index,1)
             this.skuSpecs.splice(index,1)

+ 1 - 1
src/views/merchant/goods/components/sku.vue

@@ -26,7 +26,7 @@
                             <div class="el-form-item-msg"></div>
                             <div class="el-form-item-msg"></div>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item label="顾客支付价" prop="price">
                         <el-form-item label="顾客支付价" prop="price">
-                            <el-input v-model="formData.price" clearable placeholder="请输入" type="number">
+                            <el-input v-model="formData.price" readonly clearable placeholder="请输入" type="number">
                                 <template #append>元</template>
                                 <template #append>元</template>
                             </el-input>
                             </el-input>
                             <div class="el-form-item-msg"></div>
                             <div class="el-form-item-msg"></div>

+ 12 - 7
src/views/merchant/goods/edit.vue

@@ -50,7 +50,7 @@
                             </el-row>
                             </el-row>
                             <fieldset>
                             <fieldset>
                                 <legend><el-tag>商品搭配</el-tag></legend>
                                 <legend><el-tag>商品搭配</el-tag></legend>
-                                <el-button type="primary" size="small" @click="addSpecs" v-if="specs.length<5">添加分组</el-button>
+                                <el-button type="primary" @click="addSpecs" v-if="specs.length<5">添加分组</el-button>
                                 <div class="specs" v-for="(item,indx) in specs" :key="indx">
                                 <div class="specs" v-for="(item,indx) in specs" :key="indx">
                                     <div class="specs-header">
                                     <div class="specs-header">
                                         <div class="specs-left">
                                         <div class="specs-left">
@@ -109,8 +109,8 @@
                                         </div>
                                         </div>
                                     </div>
                                     </div>
                                     <div class="specs-footer">
                                     <div class="specs-footer">
-                                         <el-button type="primary" @click="addItem(indx)">增加单品</el-button>
-                                        <el-button type="danger" @click="removeSpec(indx)">删除组</el-button>
+                                         <el-button type="primary" size="small" @click="addItem(indx)">增加单品</el-button>
+                                        <el-button type="danger" size="small" @click="removeSpec(indx)">删除组</el-button>
                                     </div>
                                     </div>
                                 </div>
                                 </div>
                             </fieldset>
                             </fieldset>
@@ -123,7 +123,7 @@
                             </el-form-item>
                             </el-form-item>
                             <fieldset v-if="formData.mult_sku == 2">
                             <fieldset v-if="formData.mult_sku == 2">
                                 <legend><el-tag>规格明细</el-tag></legend>
                                 <legend><el-tag>规格明细</el-tag></legend>
-                                <el-button type="primary" size="small" @click="addSkuSpecs" v-if="skuSpecs.length<5">新增规格</el-button>
+                                <el-button type="primary" @click="addSkuSpecs" v-if="skuSpecs.length<5">新增规格</el-button>
                                 <div class="sku-table">
                                 <div class="sku-table">
                                     <el-table :data="skuSpecs" border>
                                     <el-table :data="skuSpecs" border>
                                         <el-table-column prop="image" label="规格图片" width="180">
                                         <el-table-column prop="image" label="规格图片" width="180">
@@ -310,7 +310,7 @@
                                 </div>
                                 </div>
                             </el-form-item>
                             </el-form-item>
                             <el-form-item label="顾客信息设置" prop="customer_reserved_info">
                             <el-form-item label="顾客信息设置" prop="customer_reserved_info">
-                                <el-radio-group v-model="formData.customer_reserved_info">
+                                <el-radio-group v-model="formData.customer_reserved_info" disabled>
                                     <el-radio :label="1">不需要</el-radio>
                                     <el-radio :label="1">不需要</el-radio>
                                     <el-radio :label="2">需要顾客手机号码</el-radio>
                                     <el-radio :label="2">需要顾客手机号码</el-radio>
                                 </el-radio-group>
                                 </el-radio-group>
@@ -554,7 +554,8 @@ export default {
                 image_list:[],
                 image_list:[],
                 detail_image_list:[],
                 detail_image_list:[],
                 environment_image_list:[],
                 environment_image_list:[],
-                mult_sku:1
+                mult_sku:1,
+                stock_type:1
             },
             },
             holiday:[{'key':1,"name":"元旦"},{'key':2,"name":"春节"},{'key':3,"name":"清明"},{'key':4,"name":"劳动节"},{'key':5,"name":"端午节"},{'key':6,"name":"中秋节"},{'key':7,"name":"国庆节"},{'key':8,"name":"情人节"},{'key':9,"name":"圣诞节"},{'key':10,"name":"元宵节"},{'key':11,"name":"520"},{'key':12,"name":"儿童节"},{'key':13,"name":"七夕节"},{'key':14,"name":"二月二"},{'key':15,"name":"母亲节"},{'key':16,"name":"父亲节"},{'key':17,"name":"教师节"}],
             holiday:[{'key':1,"name":"元旦"},{'key':2,"name":"春节"},{'key':3,"name":"清明"},{'key':4,"name":"劳动节"},{'key':5,"name":"端午节"},{'key':6,"name":"中秋节"},{'key':7,"name":"国庆节"},{'key':8,"name":"情人节"},{'key':9,"name":"圣诞节"},{'key':10,"name":"元宵节"},{'key':11,"name":"520"},{'key':12,"name":"儿童节"},{'key':13,"name":"七夕节"},{'key':14,"name":"二月二"},{'key':15,"name":"母亲节"},{'key':16,"name":"父亲节"},{'key':17,"name":"教师节"}],
             weeksData:[{'key':1,"name":"星期一"},{'key':2,"name":"星期二"},{'key':3,"name":"星期三"},{'key':4,"name":"星期四"},{'key':5,"name":"星期五"},{'key':6,"name":"星期六"},{'key':7,"name":"星期天"},],
             weeksData:[{'key':1,"name":"星期一"},{'key':2,"name":"星期二"},{'key':3,"name":"星期三"},{'key':4,"name":"星期四"},{'key':5,"name":"星期五"},{'key':6,"name":"星期六"},{'key':7,"name":"星期天"},],
@@ -623,6 +624,9 @@ export default {
                 product_type: [
                 product_type: [
                     {required: true, message: '请选择'}
                     {required: true, message: '请选择'}
                 ],
                 ],
+                stock_type: [
+                    {required: true, message: '请选择'}
+                ],
             },
             },
             deptsProps:{
             deptsProps:{
                 value: "category_id",
                 value: "category_id",
@@ -676,7 +680,8 @@ export default {
             })
             })
         },
         },
         addSkuSpecs(){
         addSkuSpecs(){
-            this.skuSpecs.push({"image":"","sku_id":this.generate(),"name":"","line_price":1,"price":1,"is_default":false,"specs":[]});
+            if(!this.formData.price) return this.$message.error("请先设置顾客实际需支付金额");
+            this.skuSpecs.push({"image":"","sku_id":this.generate(),"name":"","line_price":1,"price":this.formData.price,"is_default":false,"specs":[]});
         },
         },
         removeItemSku(index){
         removeItemSku(index){
             this.skuSpecs.splice(index,1)
             this.skuSpecs.splice(index,1)

+ 2 - 2
src/views/merchant/goods/index/components/option.vue

@@ -6,8 +6,8 @@
         <div class="op-header">
         <div class="op-header">
             <div class="left-panel">
             <div class="left-panel">
                 <el-button type="primary" icon="el-icon-plus" @click="table_add()">创建商品</el-button>
                 <el-button type="primary" icon="el-icon-plus" @click="table_add()">创建商品</el-button>
-                <el-button icon="el-icon-unlock" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">上架</el-button>
-                <el-button icon="el-icon-lock" type="danger" @click="table_batch_status(2)" :disabled="dataSelect.length>0?false:true">下架</el-button>
+                <!-- <el-button icon="el-icon-unlock" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">上架</el-button>
+                <el-button icon="el-icon-lock" type="danger" @click="table_batch_status(2)" :disabled="dataSelect.length>0?false:true">下架</el-button> -->
             </div>
             </div>
         </div>
         </div>
     </fieldset>
     </fieldset>

+ 4 - 2
src/views/merchant/goods/index/components/search.vue

@@ -14,8 +14,10 @@
                         </el-col>
                         </el-col>
                         <el-col :xs="12" :sm="12" :md="12" :lg="6" :xl="4">
                         <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-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="1" label="审核中"></el-option>
+                                <el-option value="2" label="售卖中"></el-option>
+                                <el-option value="3" label="已下架"></el-option>
+                                <el-option value="4" label="已删除"></el-option>
                                 <template #prefix>状态</template>
                                 <template #prefix>状态</template>
                             </el-select>
                             </el-select>
                         </el-col>
                         </el-col>

+ 16 - 5
src/views/merchant/goods/index/components/table.vue

@@ -45,20 +45,31 @@
         </el-table-column>
         </el-table-column>
         <el-table-column label="状态" prop="enable" width="120" align="center">
         <el-table-column label="状态" prop="enable" width="120" align="center">
             <template #default="scope">
             <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==2"><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
+                <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==2"><sc-status-indicator type="danger"></sc-status-indicator> 已下架</div>
+                <div class="status-info" v-if="scope.row.status==3"><sc-status-indicator type="danger"></sc-status-indicator> 已删除</div>
                 <div class="status-danger" v-if="scope.row.status==0"><sc-status-indicator type="danger"></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==4">
+                    <el-popover :width="300" trigger="hover" placement="top-start" title="驳回原因">
+                        <template #reference>
+                            <div class="status-danger" v-if="scope.row.status==4"><sc-status-indicator type="danger"></sc-status-indicator> 审核驳回 <el-icon><el-icon-question-filled /></el-icon></div>
+                        </template>
+                        <div v-html="scope.row.reason"></div>
+                    </el-popover>
+                </div>
             </template>
             </template>
         </el-table-column>
         </el-table-column>
         <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
         <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
         <el-table-column label="操作" width="180" align="left" fixed="right">
         <el-table-column label="操作" width="180" align="left" fixed="right">
             <template #default="scope">
             <template #default="scope">
                 <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-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">编辑</el-button>
-                    <el-button type="danger" text size="small" @click="table_del(scope.row)">删除</el-button>
+                    <el-button size="small" text @click="table_view(scope.row)" v-if="scope.row.status == 1 || scope.row.status == 4">编辑</el-button>
+                    <el-button type="danger" text size="small" @click="table_del(scope.row)" v-if="scope.row.status == 2 || scope.row.status == 4">删除</el-button>
+                    <el-button type="danger" text size="small" v-if="scope.row.status == 0">-</el-button>
                 </el-button-group>
                 </el-button-group>
             </template>
             </template>
         </el-table-column>
         </el-table-column>