zory 2 ay önce
ebeveyn
işleme
5eeb7ce710
100 değiştirilmiş dosya ile 638 ekleme ve 7093 silme
  1. 3 3
      .env.development
  2. 1 1
      .env.production
  3. 1 1
      package.json
  4. 1 1
      src/config/index.js
  5. 1 1
      src/views/manage/dashboard/index.vue
  6. 11 0
      src/views/manage/expert/index/index.vue
  7. 11 0
      src/views/manage/expert/lists/index.vue
  8. 11 0
      src/views/manage/expert/wallet/index.vue
  9. 0 3
      src/views/manage/finance/cash/index.vue
  10. 0 3
      src/views/manage/finance/history/index.vue
  11. 0 86
      src/views/manage/finance/index/components/table.vue
  12. 0 140
      src/views/manage/finance/index/index.vue
  13. 0 3
      src/views/manage/member/analysis/index.vue
  14. 0 50
      src/views/manage/member/index/components/option.vue
  15. 0 70
      src/views/manage/member/index/components/search.vue
  16. 0 96
      src/views/manage/member/index/components/table.vue
  17. 0 85
      src/views/manage/member/index/index.vue
  18. 0 3
      src/views/manage/member/recharge/index.vue
  19. 0 49
      src/views/manage/member/record/components/search.vue
  20. 0 93
      src/views/manage/member/record/components/table.vue
  21. 0 84
      src/views/manage/member/record/index.vue
  22. 0 161
      src/views/manage/order/index/components/detail.vue
  23. 0 50
      src/views/manage/order/index/components/option.vue
  24. 0 81
      src/views/manage/order/index/components/search.vue
  25. 0 160
      src/views/manage/order/index/components/table.vue
  26. 0 122
      src/views/manage/order/index/index.vue
  27. 0 3
      src/views/manage/order/qrcode/components/detail.vue
  28. 0 50
      src/views/manage/order/qrcode/components/option.vue
  29. 0 70
      src/views/manage/order/qrcode/components/search.vue
  30. 0 84
      src/views/manage/order/qrcode/components/table.vue
  31. 0 71
      src/views/manage/order/qrcode/index.vue
  32. 11 0
      src/views/manage/school/category/index.vue
  33. 67 118
      src/views/manage/school/index/index.vue
  34. 11 0
      src/views/manage/school/lists/index.vue
  35. 10 93
      src/views/manage/setting/basic/index.vue
  36. 2 2
      src/views/manage/setting/menu/index.vue
  37. 0 124
      src/views/manage/shop/card/components/form.vue
  38. 0 55
      src/views/manage/shop/card/components/option.vue
  39. 0 49
      src/views/manage/shop/card/components/search.vue
  40. 0 118
      src/views/manage/shop/card/components/table.vue
  41. 0 47
      src/views/manage/shop/card/index.vue
  42. 0 77
      src/views/manage/shop/index/components/combo.vue
  43. 0 206
      src/views/manage/shop/index/components/form.vue
  44. 0 55
      src/views/manage/shop/index/components/option.vue
  45. 0 49
      src/views/manage/shop/index/components/search.vue
  46. 0 155
      src/views/manage/shop/index/components/table.vue
  47. 0 47
      src/views/manage/shop/index/index.vue
  48. 0 149
      src/views/manage/shop/user/components/form.vue
  49. 0 56
      src/views/manage/shop/user/components/option.vue
  50. 0 54
      src/views/manage/shop/user/components/search.vue
  51. 0 148
      src/views/manage/shop/user/components/table.vue
  52. 0 47
      src/views/manage/shop/user/index.vue
  53. 0 96
      src/views/manage/shop/user/password.vue
  54. 11 0
      src/views/manage/task/audit/index.vue
  55. 11 0
      src/views/manage/task/category/index.vue
  56. 453 0
      src/views/manage/task/index/index.vue
  57. 11 0
      src/views/manage/task/lists/index.vue
  58. 11 0
      src/views/manage/task/ranking/index.vue
  59. 0 281
      src/views/merchant/components/agent.vue
  60. 0 263
      src/views/merchant/components/print.vue
  61. 0 253
      src/views/merchant/components/store.vue
  62. 0 3
      src/views/merchant/finance/cash/index.vue
  63. 0 3
      src/views/merchant/finance/history/index.vue
  64. 0 3
      src/views/merchant/finance/index/index.vue
  65. 0 42
      src/views/merchant/member/analysis/components/search.vue
  66. 0 86
      src/views/merchant/member/analysis/components/table.vue
  67. 0 108
      src/views/merchant/member/analysis/index.vue
  68. 0 50
      src/views/merchant/member/index/components/option.vue
  69. 0 42
      src/views/merchant/member/index/components/search.vue
  70. 0 90
      src/views/merchant/member/index/components/table.vue
  71. 0 85
      src/views/merchant/member/index/index.vue
  72. 0 108
      src/views/merchant/member/recharge/index.vue
  73. 0 49
      src/views/merchant/member/record/components/search.vue
  74. 0 93
      src/views/merchant/member/record/components/table.vue
  75. 0 84
      src/views/merchant/member/record/index.vue
  76. 0 166
      src/views/merchant/order/index/components/detail.vue
  77. 0 50
      src/views/merchant/order/index/components/option.vue
  78. 0 93
      src/views/merchant/order/index/components/refund.vue
  79. 0 53
      src/views/merchant/order/index/components/search.vue
  80. 0 152
      src/views/merchant/order/index/components/table.vue
  81. 0 122
      src/views/merchant/order/index/index.vue
  82. 0 3
      src/views/merchant/order/qrcode/components/detail.vue
  83. 0 50
      src/views/merchant/order/qrcode/components/option.vue
  84. 0 42
      src/views/merchant/order/qrcode/components/search.vue
  85. 0 80
      src/views/merchant/order/qrcode/components/table.vue
  86. 0 71
      src/views/merchant/order/qrcode/index.vue
  87. 0 96
      src/views/merchant/print/discount/components/form.vue
  88. 0 65
      src/views/merchant/print/discount/components/option.vue
  89. 0 119
      src/views/merchant/print/discount/components/table.vue
  90. 0 52
      src/views/merchant/print/discount/index.vue
  91. 0 141
      src/views/merchant/print/index/components/form.vue
  92. 0 56
      src/views/merchant/print/index/components/option.vue
  93. 0 54
      src/views/merchant/print/index/components/price.vue
  94. 0 46
      src/views/merchant/print/index/components/search.vue
  95. 0 202
      src/views/merchant/print/index/components/table.vue
  96. 0 47
      src/views/merchant/print/index/index.vue
  97. 0 125
      src/views/merchant/print/price/components/form.vue
  98. 0 51
      src/views/merchant/print/price/components/option.vue
  99. 0 89
      src/views/merchant/print/price/components/table.vue
  100. 0 56
      src/views/merchant/print/price/index.vue

+ 3 - 3
.env.development

@@ -2,13 +2,13 @@
 NODE_ENV = development
 
 # 标题
-VUE_APP_TITLE = 智惠印打印
+VUE_APP_TITLE = 蓝微Star小程序
 
 # 接口地址
-VUE_APP_API_BASEURL = http://127.0.0.1:8890/api/
+VUE_APP_API_BASEURL = http://127.0.0.1:18900/api/
 
 # 本地端口
-VUE_APP_PORT = 2808
+VUE_APP_PORT = 3808
 
 # 是否开启代理
 VUE_APP_PROXY = true

+ 1 - 1
.env.production

@@ -2,7 +2,7 @@
 NODE_ENV = production
 
 # 标题
-VUE_APP_TITLE = 智惠印打印
+VUE_APP_TITLE = 蓝微Star小程序
 
 # 接口地址
 VUE_APP_API_BASEURL = /api

+ 1 - 1
package.json

@@ -1,5 +1,5 @@
 {
-	"name": "hxmini",
+	"name": "bluevstar",
 	"version": "1.6.9",
 	"private": true,
 	"scripts": {

+ 1 - 1
src/config/index.js

@@ -31,7 +31,7 @@ const DEFAULT_CONFIG = {
 
 	//布局 默认:default | 通栏:header | 经典:menu | 功能坞:dock
 	//dock将关闭标签和面包屑栏
-	LAYOUT: 'menu',
+	LAYOUT: 'header',
 
 	//菜单是否折叠
 	MENU_IS_COLLAPSE: false,

+ 1 - 1
src/views/manage/dashboard/index.vue

@@ -115,7 +115,7 @@ export default {
     created(){
         var baseData = this.$TOOL.data.get("SERVICE");
         this.baseData = baseData;
-        this.getData()
+        // this.getData()
     },
     methods: {
         getmoneyDate(data){

+ 11 - 0
src/views/manage/expert/index/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style>
+
+</style>

+ 11 - 0
src/views/manage/expert/lists/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style>
+
+</style>

+ 11 - 0
src/views/manage/expert/wallet/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style>
+
+</style>

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

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

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

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

+ 0 - 86
src/views/manage/finance/index/components/table.vue

@@ -1,86 +0,0 @@
-<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="订单编号" prop="order_sn">
-            <template #default="scope">
-                {{scope.row.order_sn}}
-            </template>
-        </el-table-column>
-        <el-table-column label="套餐信息" prop="time">
-            <template #default="scope">
-                续费<span class="status-danger">{{scope.row.time}}天</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="套餐金额" prop="money">
-            <template #default="scope">
-                {{ scope.row.money }}元
-            </template>
-        </el-table-column>
-        <el-table-column label="支付状态" prop="certificate_id">
-            <template #default="scope">
-                <div class="status-danger" v-if="scope.row.status==0"><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>
-            </template>
-        </el-table-column>
-        <el-table-column label="支付时间" prop="pay_at">
-            <template #default="scope">
-                {{ scope.row.pay_at?scope.row.pay_at:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="create_at">
-            <template #default="scope">
-                {{ scope.row.create_at }}
-            </template>
-        </el-table-column>
-    </scTable>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mRenew.list
-            },
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{
-                type:this.type
-            }
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>

+ 0 - 140
src/views/manage/finance/index/index.vue

@@ -1,140 +0,0 @@
-<template>
-    <el-container class="flex-column" v-loading="loading">
-        <div class="table-search" style="border-bottom: 0;">
-            <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right" label-width="100px">
-                <el-row :gutter="10">
-                    <el-col :xs="12" :sm="12" :md="12" :lg="12" :xl="6">
-                        <el-input v-model="searchKey.shop" 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-row>
-            </el-form>
-            <el-card shadow="never" class="borderNone mt10">
-                <template #header>
-                    <div class="news-title">今日营业额</div>
-                </template>
-                <div class="user-card-body">
-                    <div class="card-item">
-                        <div class="card-num">{{todayData?$TOOL.money(todayData.money):'0.00'}}</div>
-                        <div class="card-tips">线上收款(元)
-                        </div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{todayData?$TOOL.money(todayData.user):'0.00'}}</div>
-                        <div class="card-tips">会员卡支付(元)
-                        </div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{todayData?$TOOL.money(todayData.qrcode):'0.00'}}</div>
-                        <div class="card-tips">其他支付(元)
-                            <el-tooltip effect="dark" content="收款码付款金额">
-                                <el-icon><el-icon-question-filled /></el-icon>
-                            </el-tooltip>
-                        </div>
-                    </div>
-                </div>
-            </el-card>
-            <div class="news-title mt10">线上支付总计(不涵盖会员卡支付和其他支付)</div>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <el-table :data="tableData" style="width: 100%" border class="mt10">
-                    <el-table-column label="类型" prop="name"></el-table-column>
-                    <el-table-column label="支付类型" prop="type"></el-table-column>
-                    <el-table-column label="订单数" prop="order">
-                        <template #default="scope">
-                            {{ scope.row.order }}单
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="订单金额" prop="money">
-                        <template #default="scope">
-                            {{ $TOOL.money(scope.row.money) }}
-                        </template>
-                    </el-table-column>
-                </el-table>
-                <!-- <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull"></tablePage> -->
-            </div>
-        </el-main>
-    </el-container>
-    <storeData ref="storeData" :multiple="false" @success="handleStore"></storeData>
-</template>
-
-<script>
-import tablePage from './components/table';
-import storeData from '@/views/manage/components/store';
-export default {
-    components: {
-        tablePage,storeData
-    },
-    data() {
-        return {
-            tableData:[],
-            todayData:null,
-            loading:true,
-            searchKey:{},
-            searchData:{}
-        }
-    },
-    mounted(){
-        this.getData()
-    },
-    methods:{
-        selectStore(){
-            this.$nextTick(()=>{
-                this.$refs.storeData.open()
-            })
-        },
-        handleStore(data){
-            this.searchKey.shop = data.shop_name;
-            this.searchData.shop = data.shop_id;
-            this.getData()
-        },
-        clearStore(){
-            this.searchKey.shop = "";
-            this.searchData.shop = "";
-        },
-        async getData() {
-            this.loading = true;
-            var resp = await this.$API.mQrcode.today.get(this.searchData);
-            this.loading = false;
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg)
-            }
-            this.tableData = resp.data.total;
-            this.todayData = resp.data.today;
-        }
-    }
-}
-</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-tips{font-size: 12px;color: #666;display: flex;align-items: center;}
-.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{
-    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;
-}
-.remove-a{cursor: pointer;}
-</style>

+ 0 - 3
src/views/manage/member/analysis/index.vue

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

+ 0 - 50
src/views/manage/member/index/components/option.vue

@@ -1,50 +0,0 @@
-<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(2)">新增员工账号</el-button>
-                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
-            </div>
-        </div>
-    </fieldset>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            var resp = await this.$API.mStaff.batch.post(submitData);
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.$emit("success");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(type){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-    }
-}
-</script>

+ 0 - 70
src/views/manage/member/index/components/search.vue

@@ -1,70 +0,0 @@
-<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.shop" 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.orderid" placeholder="会员卡号" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
-                                <template #prepend>会员卡号</template>
-                            </el-input>
-                        </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/store';
-export default {
-    components: {
-        storeData
-    },
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        selectStore(){
-            this.$nextTick(()=>{
-                this.$refs.storeData.open()
-            })
-        },
-        handleStore(data){
-            this.searchKey.shop = data.shop_id;
-            this.$emit("success",this.searchKey);
-        },
-        clearStore(){
-            this.searchKey.shop = "";
-            this.$emit("success",this.searchKey);
-        },
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 96
src/views/manage/member/index/components/table.vue

@@ -1,96 +0,0 @@
-<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="会员ID" prop="openid" width="220" fixed="left"></el-table-column>
-        <el-table-column label="会员卡号" prop="card_no"></el-table-column>
-        <el-table-column label="所属店铺" prop="money">
-            <template #default="scope">
-                <span v-if="scope.row.shop">{{ scope.row.shop.shop_name }}</span>
-                <span v-else>-</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="总充值金额" prop="money">
-            <template #default="scope">
-                <el-tag>{{ $TOOL.money(scope.row.total_balance) }}</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="累计消费" prop="money">
-            <template #default="scope">
-                <el-tag>{{ $TOOL.money(scope.row.total_consume) }}</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="账户余额" prop="money">
-            <template #default="scope">
-                <el-tag>{{ $TOOL.money(scope.row.balance) }}</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="加入时间" prop="create_at" width="180"></el-table-column>
-        <el-table-column label="操作" width="160" align="right" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <el-button text type="warning" size="small" @click="table_edit(scope.row)">详情</el-button>
-                    <el-popconfirm title="确定要退款吗?" @confirm="table_del(scope.row, scope.$index)" v-if="scope.row.status > 0">
-                        <template #reference>
-                            <el-button text type="danger" size="small">退款</el-button>
-                        </template>
-                    </el-popconfirm>                    
-                </el-button-group>
-            </template>
-        </el-table-column>
-    </scTable>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mUser.list
-            },
-            status: ['待支付','待打印', '打印失败', '已打印','申请退款','退款失败','已退款'],
-            ostatus: ['-','店内打印', '远程自取', '商家配送'],
-            payStatus:['-','微信','会员卡'],
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>
-
-<style>
-.price{display: flex;align-items: center;}
-.del{text-decoration: line-through;margin-left: 5px;color: #f00;}
-</style>

+ 0 - 85
src/views/manage/member/index/index.vue

@@ -1,85 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search" style="border-bottom: 0;">
-            <search @success="handleSuccess"></search>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" @total="orderTotal"></tablePage>
-            </div>
-        </el-main>
-    </el-container>
-</template>
-
-<script>
-import search from './components/search';
-import tablePage from './components/table';
-import scStatistic from '@/components/scStatistic';
-export default {
-    components: {
-        search,tablePage,scStatistic
-    },
-    data(){
-        return {
-            totalLoading:true,
-            searchKey:{},
-            dataSelect:[],
-            dataSelectFull:[],
-            totalData:{},
-            searchData:null
-        }
-    },
-    methods: {
-        orderTotal(data,searchKey){
-            this.totalLoading = false;
-            this.totalData = data;
-            if (searchKey.create) {
-                var start = this.$TOOL.dateFormat(searchKey.create[0], "yyyy-MM-dd");
-                var end = this.$TOOL.dateFormat(searchKey.create[1], "yyyy-MM-dd");
-                this.searchData = start+"-"+end;
-            }
-        },
-        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>
-.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;}
-.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{
-    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>

+ 0 - 3
src/views/manage/member/recharge/index.vue

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

+ 0 - 49
src/views/manage/member/record/components/search.vue

@@ -1,49 +0,0 @@
-<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-input v-model="searchKey.orderid" 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.type" 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-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>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 93
src/views/manage/member/record/components/table.vue

@@ -1,93 +0,0 @@
-<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="会员ID" prop="openid" width="220" fixed="left"></el-table-column>
-        <el-table-column label="会员卡号" prop="card_no">
-            <template #default="scope">
-                {{ scope.row.card_no?scope.row.card_no:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="订单编号" prop="order_sn">
-            <template #default="scope">
-                {{ scope.row.order_sn?scope.row.order_sn:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="类型" prop="type">
-            <template #default="scope">
-                <el-tag type="error" v-if="scope.row.type == 1">支出</el-tag>
-                <el-tag type="success" v-if="scope.row.type == 2">收入</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="金额" prop="money">
-            <template #default="scope">
-                ¥{{ scope.row.money }}
-            </template>
-        </el-table-column>
-        <el-table-column label="余额" prop="money">
-            <template #default="scope">
-                {{ $TOOL.money(scope.row.balance) }}
-            </template>
-        </el-table-column>
-        <el-table-column label="其他" prop="order_sn" width="220">
-            <template #default="scope">
-                {{ scope.row.remark?scope.row.remark:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="时间" prop="create_at" width="180"></el-table-column>
-    </scTable>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mUser.log
-            },
-            status: ['待支付','待打印', '打印失败', '已打印','申请退款','退款失败','已退款'],
-            ostatus: ['-','店内打印', '远程自取', '商家配送'],
-            payStatus:['-','微信','会员卡'],
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>
-
-<style>
-.price{display: flex;align-items: center;}
-.del{text-decoration: line-through;margin-left: 5px;color: #f00;}
-</style>

+ 0 - 84
src/views/manage/member/record/index.vue

@@ -1,84 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search" style="border-bottom: 0;">
-            <search @success="handleSuccess"></search>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" @total="orderTotal"></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:true,
-            searchKey:{},
-            dataSelect:[],
-            dataSelectFull:[],
-            totalData:{},
-            searchData:null
-        }
-    },
-    methods: {
-        orderTotal(data,searchKey){
-            this.totalLoading = false;
-            this.totalData = data;
-            if (searchKey.create) {
-                var start = this.$TOOL.dateFormat(searchKey.create[0], "yyyy-MM-dd");
-                var end = this.$TOOL.dateFormat(searchKey.create[1], "yyyy-MM-dd");
-                this.searchData = start+"-"+end;
-            }
-        },
-        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>
-.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;}
-.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{
-    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>

+ 0 - 161
src/views/manage/order/index/components/detail.vue

@@ -1,161 +0,0 @@
-<template>
-    <el-drawer :title="titleMap[mode]" :append-to-body="true" v-model="visible" :size="1000" destroy-on-close :close-on-click-modal="false" @closed="$emit('closed')" :with-header="false">
-        <el-container class="flex-column" v-loading="loading">
-            <div class="drawer-detail-main">
-                <div class="drawer-detail-header">
-                    <div class="drawer-detail-header-body">
-                        <div class="drawer-detail-header-left">{{titleMap[mode]}} <span class="tips">{{ formData.order_sn }}</span></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-descriptions :column="3" size="large" direction="vertical" border>
-                    <el-descriptions-item>
-                        <template #label>订单编号</template>{{ formData.order_sn }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>下单用户</template>{{ formData.openid }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>取件号</template>{{ formData.package_sn }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>取件方式</template>{{ ostatus[formData.package] }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>订单状态</template>{{ status[formData.status] }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>打印机</template>{{ formData.print_name }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>下单时间</template>{{ formData.create_at }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>支付时间</template>{{ formData.pay_at?formData.pay_at:'-' }} <template v-if="formData.pay_at"><el-tag type="success">{{ payStatus[formData.pay_type] }}</el-tag></template>
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>失败原因</template>{{ formData.reason?formData.reason:'-' }}
-                    </el-descriptions-item>
-                </el-descriptions>
-                <el-descriptions :column="2" size="large" direction="vertical" class="mt10" border>
-                    <el-descriptions-item>
-                        <template #label>支付金额(元)</template> 
-                        <div class="price" v-if="formData.money > formData.discount">
-                            {{ $TOOL.money(formData.discount) }}
-                            <div class="del">{{ $TOOL.money(formData.money) }}</div>
-                        </div>
-                        <div class="price" v-else>
-                            {{ $TOOL.money(formData.money) }}
-                        </div>
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>含配送费(元)</template>{{ $TOOL.money(formData.express_money) }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>优惠券金额(元)</template>{{ $TOOL.money(formData.coupon_money) }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>整单装订总价(元)</template>{{ $TOOL.money(formData.staple_money) }}
-                    </el-descriptions-item>
-                </el-descriptions>
-                <el-table :data="tableData" style="width: 100%" border class="mt10">
-                    <el-table-column label="文件名" prop="name" width="180" fixed="left"></el-table-column>
-                    <el-table-column label="状态" prop="name">
-                        <template #default="scope">
-                            <span v-if="scope.row.status==0">转码中</span>
-                            <span v-if="scope.row.status==1">待打印</span>
-                            <span v-if="scope.row.status==2">打印中</span>
-                            <span v-if="scope.row.status==3">已打印</span>
-                            <span v-if="scope.row.status==4">退款中</span>
-                            <span v-if="scope.row.status==5">退款失败</span>
-                            <span v-if="scope.row.status==6">已退款</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="页数" prop="page" align="center"></el-table-column>
-                    <el-table-column label="纸张" prop="paper_size"></el-table-column>
-                    <el-table-column label="颜色" prop="name">
-                        <template #default="scope">
-                            <el-tag>{{ scope.row.color==1?'彩色':'黑白' }}</el-tag>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="单双面" prop="name">
-                        <template #default="scope">
-                            <el-tag>{{ scope.row.duplex==1?'单面':'双面' }}</el-tag>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="打印范围" prop="name" align="center">
-                        <template #default="scope">
-                            {{ scope.row.start_page }} - {{ scope.row.end_page }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="份数" prop="number" align="center"></el-table-column>
-                    <el-table-column label="装订方式" prop="name">
-                        <template #default="scope">
-                            不装订
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="订单金额" prop="name">
-                        <template #default="scope">
-                            {{ $TOOL.money(scope.row.money) }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="操作" width="160" align="right" fixed="right">
-                        <template #default="scope">
-                            <el-button-group>
-                                <el-button text type="warning" size="small" @click="table_edit(scope.row)">预览/下载</el-button>             
-                            </el-button-group>
-                        </template>
-                    </el-table-column>
-                </el-table>
-            </el-main>
-            <el-footer style="text-align: right;">
-                <el-button @click="visible=false" >关闭</el-button>
-            </el-footer>
-        </el-container>
-    </el-drawer>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            loading: false,
-            mode: "add",
-            titleMap: {
-                add: "新增渠道",
-                edit: "订单详情"
-            },
-            status: ['待支付','待打印', '打印失败', '已打印','申请退款','退款失败','已退款'],
-            ostatus: ['-','店内打印', '远程自取', '商家配送'],
-            payStatus:['-','微信','会员卡'],
-            visible: false,
-            isSaveing: false,
-            formData: {},
-            rules: {},
-            tableData:[]
-        }
-    },
-    methods: {
-        open(mode = 'add') {
-            this.mode = mode;
-            this.visible = true;
-            return this;
-        },
-        //表单注入数据
-        setData(data) {
-            this.formData = data;
-            this.tableData = data.detail;
-        },
-        table_edit(data){
-            console.log(data.path)
-        }
-    }
-}
-</script>
-<style>
-.mt10{margin-top: 10px;}
-</style>

+ 0 - 50
src/views/manage/order/index/components/option.vue

@@ -1,50 +0,0 @@
-<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(2)">新增员工账号</el-button>
-                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
-            </div>
-        </div>
-    </fieldset>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            var resp = await this.$API.mStaff.batch.post(submitData);
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.$emit("success");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(type){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-    }
-}
-</script>

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

@@ -1,81 +0,0 @@
-<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.shop" 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.orderid" 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="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-option value="7" 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/store';
-export default {
-    components: {
-        storeData
-    },
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        selectStore(){
-            this.$nextTick(()=>{
-                this.$refs.storeData.open()
-            })
-        },
-        handleStore(data){
-            this.searchKey.shop = data.shop_id;
-            this.$emit("success",this.searchKey);
-        },
-        clearStore(){
-            this.searchKey.shop = "";
-            this.$emit("success",this.searchKey);
-        },
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

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

@@ -1,160 +0,0 @@
-<template>
-    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" @dataChange="getTotal">
-        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
-        <el-table-column label="订单编号" width="200" prop="order_sn" fixed="left">
-            <template #default="scope">
-                {{scope.row.order_sn}}
-            </template>
-        </el-table-column>
-        <el-table-column label="下单店铺" prop="openid" width="180">
-            <template #default="scope">
-                {{ scope.row.shop?scope.row.shop.shop_name:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="下单用户" prop="openid" width="240"></el-table-column>
-        <el-table-column label="订单状态" prop="certificate_id" width="120">
-            <template #default="scope">
-                {{ status[scope.row.status] }}
-            </template>
-        </el-table-column>
-        <el-table-column label="订单金额" prop="money" width="120">
-            <template #default="scope">
-                <div class="price" v-if="scope.row.money > scope.row.discount">
-                    <el-tag>{{ $TOOL.money(scope.row.discount) }}</el-tag>
-                    <div class="del">{{ $TOOL.money(scope.row.money) }}</div>
-                </div>
-                <div class="price" v-else>
-                    <el-tag>{{ $TOOL.money(scope.row.money) }}</el-tag>
-                </div>
-            </template>
-        </el-table-column>
-        <el-table-column label="额外加价" prop="money" width="120">
-            <template #default="scope">
-                {{ $TOOL.money(scope.row.extra_money) }}
-            </template>
-        </el-table-column>
-        <el-table-column label="支付类型" prop="money" width="120">
-            <template #default="scope">
-                <el-tag>{{ payStatus[scope.row.pay_type] }}</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="打印机" prop="money" width="180">
-            <template #default="scope">
-                {{ scope.row.print_name }}
-            </template>
-        </el-table-column>
-        <el-table-column label="取件方式" prop="money" width="120">
-            <template #default="scope">
-                {{ ostatus[scope.row.package] }}
-            </template>
-        </el-table-column>
-        <el-table-column label="取件号" prop="package_sn" width="120"></el-table-column>
-        <el-table-column label="失败原因" prop="money" width="180">
-            <template #default="scope">
-                {{ scope.row.reason?scope.row.reason:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="支付时间" prop="pay_at" width="180">
-            <template #default="scope">
-                {{ scope.row.pay_at?scope.row.pay_at:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="打印时间" prop="pay_at" width="180">
-            <template #default="scope">
-                {{ scope.row.print_at?scope.row.print_at:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="create_at" width="180">
-            <template #default="scope">
-                {{ scope.row.create_at }}
-            </template>
-        </el-table-column>
-        <el-table-column label="操作" width="160" align="right" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <el-button text type="info" size="small" v-if="scope.row.status==1" @click="table_fail(scope.row)">失败</el-button>
-                    <el-button text type="warning" size="small" @click="table_edit(scope.row)">详情</el-button>
-                    <el-popconfirm title="确定要退款吗?" @confirm="table_del(scope.row, scope.$index)" v-if="scope.row.status > 0">
-                        <template #reference>
-                            <el-button text type="danger" size="small">退款</el-button>
-                        </template>
-                    </el-popconfirm>                    
-                </el-button-group>
-            </template>
-        </el-table-column>
-    </scTable>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-</template>
-
-<script>
-import formMain from "./detail";
-export default {
-    props: {
-        type: { type: String, default: "1" }
-    },
-    components: {
-        formMain
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mOrder.list
-            },
-            status: ['待支付','待打印', '打印失败', '已打印','申请退款','退款失败','已退款'],
-            ostatus: ['-','店内打印', '远程自取', '商家配送'],
-            payStatus:['-','微信','会员卡'],
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    methods:{
-        async getTotal(){
-            var resp = await this.$API.mOrder.total.get(this.searchKey);
-            if (resp.code == 1) {
-                this.$emit("total",resp.data.total,this.searchKey);
-            }
-        },
-        async table_fail(data){
-            var resp = await this.$API.mOrder.fail.post({order:data.order_sn});
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg)
-            }
-            this.$message.success(resp.msg)
-            this.$refs.table.refresh()
-        },
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>
-
-<style>
-.price{display: flex;align-items: center;}
-.del{text-decoration: line-through;margin-left: 5px;color: #f00;}
-</style>

+ 0 - 122
src/views/manage/order/index/index.vue

@@ -1,122 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search" style="border-bottom: 0;" v-loading="totalLoading">
-            <el-card shadow="never" class="borderNone mb10">
-                <template #header>
-                    <div class="news-title">订单数统计
-                        <template v-if="searchData"><span>截止:{{ searchData }}</span></template>
-                    </div>
-                </template>
-                <div class="user-card-body">
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.ta?totalData.ta:'0' }} <span>单</span></div>
-                        <div class="card-tips">全部订单</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t1?totalData.t1:'0' }} <span>单</span></div>
-                        <div class="card-tips">待打印</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t2?totalData.t2:'0' }} <span>单</span></div>
-                        <div class="card-tips">打印失败</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t3?totalData.t3:'0' }} <span>单</span></div>
-                        <div class="card-tips">已完成</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t4?totalData.t4:'0' }} <span>单</span></div>
-                        <div class="card-tips">退款中</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t5?totalData.t5:'0' }} <span>单</span></div>
-                        <div class="card-tips">退款失败</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t6?totalData.t6:'0' }} <span>单</span></div>
-                        <div class="card-tips">已退款</div>
-                    </div>
-                </div>
-            </el-card>
-            <search @success="handleSuccess"></search>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" @total="orderTotal"></tablePage>
-            </div>
-        </el-main>
-    </el-container>
-</template>
-
-<script>
-import search from './components/search';
-import tablePage from './components/table';
-import scStatistic from '@/components/scStatistic';
-export default {
-    components: {
-        search,tablePage,scStatistic
-    },
-    data(){
-        return {
-            totalLoading:true,
-            searchKey:{},
-            dataSelect:[],
-            dataSelectFull:[],
-            totalData:{},
-            searchData:null
-        }
-    },
-    methods: {
-        orderTotal(data,searchKey){
-            this.totalLoading = false;
-            this.totalData = data;
-            if (searchKey.create) {
-                var start = this.$TOOL.dateFormat(searchKey.create[0], "yyyy-MM-dd");
-                var end = this.$TOOL.dateFormat(searchKey.create[1], "yyyy-MM-dd");
-                this.searchData = start+"-"+end;
-            }
-        },
-        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>
-.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;}
-.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{
-    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>

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

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

+ 0 - 50
src/views/manage/order/qrcode/components/option.vue

@@ -1,50 +0,0 @@
-<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(2)">新增员工账号</el-button>
-                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
-            </div>
-        </div>
-    </fieldset>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            var resp = await this.$API.mStaff.batch.post(submitData);
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.$emit("success");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(type){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-    }
-}
-</script>

+ 0 - 70
src/views/manage/order/qrcode/components/search.vue

@@ -1,70 +0,0 @@
-<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.shop" 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.name" placeholder="订单编号" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
-                                <template #prepend>订单编号</template>
-                            </el-input>
-                        </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/store';
-export default {
-    components: {
-        storeData
-    },
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        selectStore(){
-            this.$nextTick(()=>{
-                this.$refs.storeData.open()
-            })
-        },
-        handleStore(data){
-            this.searchKey.shop = data.shop_id;
-            this.$emit("success",this.searchKey);
-        },
-        clearStore(){
-            this.searchKey.shop = "";
-            this.$emit("success",this.searchKey);
-        },
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 84
src/views/manage/order/qrcode/components/table.vue

@@ -1,84 +0,0 @@
-<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="下单店铺" prop="openid" width="180">
-            <template #default="scope">
-                {{ scope.row.shop?scope.row.shop.shop_name:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="订单编号" prop="order_sn">
-            <template #default="scope">
-                {{scope.row.order_sn}}
-            </template>
-        </el-table-column>
-        <el-table-column label="订单金额" prop="time">
-            <template #default="scope">
-                {{ $TOOL.money(scope.row.money) }}
-            </template>
-        </el-table-column>
-        <el-table-column label="支付类型" prop="money">
-            <template #default="scope">
-                微信
-            </template>
-        </el-table-column>
-        <el-table-column label="支付时间" prop="pay_at">
-            <template #default="scope">
-                {{ scope.row.pay_at?scope.row.pay_at:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="create_at">
-            <template #default="scope">
-                {{ scope.row.create_at }}
-            </template>
-        </el-table-column>
-    </scTable>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mQrcode.list
-            },
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{
-                type:this.type
-            }
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>

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

@@ -1,71 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search" style="border-bottom: 0;">
-            <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"></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,optionBtn
-    },
-    data() {
-        return {
-            
-        }
-    },
-    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>
-
-<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;}
-.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{
-    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;
-}
-</style>

+ 11 - 0
src/views/manage/school/category/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style>
+
+</style>

+ 67 - 118
src/views/merchant/dashboard/index.vue → src/views/manage/school/index/index.vue

@@ -11,203 +11,153 @@
 	</div>
     <el-main>
         <div class="card-news mt0">
-            <div class="news-title">经营数据
-                <div class="title-open">
-                    <div class="name">显示数据</div>
-                    <el-switch
-                        v-model="hideState"
-                        :active-value="1"
-                        :inactive-value="0"
-                        size="large"
-                        @change="getHide"
-                    />
-                </div>
-            </div>
             <div class="total-panel">
-                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'" style="background-color: rgb(235, 241, 255);">
+                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">分类数</div>
+                            <div class="number" v-if="hideState==1">{{ $TOOL.money(todayData.userNum) }}</div>
+                            <div class="number" v-else>0.00</div>
+                            <div class="desc"></div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                </div>
+                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'">
                     <div class="item-warp">
                         <div class="left">
-                            <div class="title">今日营业额(元)</div>
+                            <div class="title">文章数量</div>
                             <div class="number" v-if="hideState==1">{{ $TOOL.money(todayData.userNum) }}</div>
                             <div class="number" v-else>0.00</div>
                             <div class="desc"></div>
                         </div>
-                        <div class="right"><img src="@/assets/image/wave-1-icon.png" /></div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
                     </div>
-                    <div class="item-wave"><img src="@/assets/image/wave-1.png" /></div>
                 </div>
-                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'" style="background-color: rgb(240, 235, 255);">
+                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'">
                     <div class="item-warp">
                         <div class="left">
-                            <div class="title">今日订单数(单)</div>
-                            <div class="number">{{ todayData.rechargeNum ? todayData.rechargeNum:'0.00' }}</div>
+                            <div class="title">评论数</div>
+                            <div class="number" v-if="hideState==1">{{ $TOOL.money(todayData.userNum) }}</div>
+                            <div class="number" v-else>0.00</div>
                             <div class="desc"></div>
                         </div>
-                        <div class="right"><img src="@/assets/image/wave-2-icon.png" /></div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
                     </div>
-                    <div class="item-wave"><img src="@/assets/image/wave-2.png" /></div>
                 </div>
-                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'" style="background-color: rgb(255, 241, 214);">
+                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'">
                     <div class="item-warp">
                         <div class="left">
-                            <div class="title">手机自助打印待处理(单)</div>
-                            <div class="number">{{ todayData.rechargeMoney ? todayData.rechargeMoney:'0.00' }}</div>
+                            <div class="title">今日阅读</div>
+                            <div class="number" v-if="hideState==1">{{ $TOOL.money(todayData.userNum) }}</div>
+                            <div class="number" v-else>0.00</div>
                             <div class="desc"></div>
                         </div>
-                        <div class="right"><img src="@/assets/image/wave-3-icon.png" /></div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
                     </div>
-                    <div class="item-wave"><img src="@/assets/image/wave-3.png" /></div>
                 </div>
             </div>
         </div>
         <el-row :gutter="20">
-            <el-col :span="this.$store.state.global.ismobile?24:24" :xs="24">
-                <div class="card-news mt10">
-                    <div class="date-check">
-                        <el-radio-group v-model="moneyDate" size="large" @change="getmoneyDate">
-                            <el-radio-button v-for="(city,indx) in dateData" :key="indx" :label="city.key">
-                                {{ city.name }}
-                            </el-radio-button>
-                        </el-radio-group>
-                    </div>
-                    <scEcharts height="500px" :option="option2"></scEcharts>
+            <el-col :span="this.$store.state.global.ismobile?24:8" :xs="24">
+                <div class="card-news mt10"> <!---评论数-->
+                    <scEcharts height="500px" :option="option"></scEcharts>
                 </div>
             </el-col>
-            <el-col :span="this.$store.state.global.ismobile?24:24" :xs="24">
-                <div class="card-news mt10">
-                    <div class="date-check">
-                        <el-radio-group v-model="orderDate" size="large" @change="getorderDate">
-                            <el-radio-button v-for="(city,indx) in dateData" :key="indx" :label="city.key">
-                                {{ city.name }}
-                            </el-radio-button>
-                        </el-radio-group>
-                    </div>
-                    <scEcharts height="500px" :option="option"></scEcharts>
+            <el-col :span="this.$store.state.global.ismobile?24:16" :xs="24">
+                <div class="card-news mt10"> <!---阅读量-->
+                    <scEcharts height="500px" :option="option2"></scEcharts>
                 </div>
             </el-col>
         </el-row>
+        <div class="card-news mt10">
+            <div class="news-title">内容排行</div>
+            <div class="mt10">
+                <el-row :gutter="20">
+                    <el-col :span="this.$store.state.global.ismobile?24:12">
+                        <el-card header="最新内容" shadow="never"></el-card>
+                    </el-col>
+                    <el-col :span="this.$store.state.global.ismobile?24:12">
+                        <el-card header="最热内容" shadow="never"></el-card>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
     </el-main>
 </template>
 
 <script>
-import blueBg from "@/assets/image/blue_bg.png";
 import scEcharts from '@/components/scEcharts';
 export default {
-    name: "dashboard",
     components: {
         scEcharts
     },
-    data(){
+    data() {
         return {
-            dateData:[{"name":"近7天","key":7},{"name":"近14天","key":14},{"name":"近30天","key":30}],
-            orderDate:7,
-            moneyDate:7,
-            hideState:0,
-            pageLoading: false,
-            dashboard: '0',
-            todayData:{},
-            blueBg,
-            baseData:{},
-            option2: {},
-            option: {},
-        }
-    },
-    created(){
-        var baseData = this.$TOOL.data.get("SERVICE");
-        this.baseData = baseData;
-        this.getData()
-    },
-    methods: {
-        getmoneyDate(data){
-            this.moneyDate = data;
-            this.getData()
-        },
-        getorderDate(data){
-            this.orderDate = data;
-            this.getData()
-        },
-        getHide(data){
-            this.hideState = (data==1?1:0)
-            this.getData()
-        },
-        async getData(){
-            var loading = this.$loading();
-            var resp = await this.$API.dash.shop.get({"hide":this.hideState,"money":this.moneyDate,"order":this.orderDate});
-            loading.close();
-            this.todayData = resp.data.data;
-            let data = resp.data.moneys;
-            let moneyDay = data.map(function (item) {
-                return item['当天日期'];
-            });
-            let data2 = resp.data.orders;
-            let orderDay = data2.map(function (item) {
-                return item['当天日期'];
-            });
-            this.option = {
+            pageLoading:false,
+            option2: {
                 title: {
                     left: 'left', 
-                    text: '近15天订单数据',
+                    text: '评论量',
                 },
                 grid: {
                     top: '80px'
                 },
                 tooltip: {trigger: 'axis', show: true, axisPointer: {type: 'cross', label: {}}},
-                xAxis: [{data: orderDay, gridIndex: 0}],
+                grid: [{left: '5%', right: '3%', top: '15%', bottom: '5%'}],
+                xAxis: [{data: ['1','2','3','4','5'], gridIndex: 0}],
                 yAxis: [
                     {
                         splitLine: {show: true}, gridIndex: 0, type: 'value', axisLabel: {
-                            formatter: '{value}'
+                            formatter: '{value}'
                         }
                     }
                 ],
-                grid: [{left: '5%', right: '3%', top: '15%', bottom: '5%'}],
                 series: [
                     {
                         smooth: true, showBackground: true,
                         areaStyle: {color: 'rgba(180, 180, 180, 0.5)'},
-                        type: 'bar', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
-                        label: {normal: {position: 'top', formatter: '{c} 单', show: true}},
-                        data: data2.map(function (item) {
-                            return item['订单数量'];
-                        }),
+                        type: 'line', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
+                        label: {normal: {position: 'top', formatter: '{c}', show: true}},
+                        data:['10','2','3','4','1'],
                     }
                 ]
-            };
-            this.option2 = {
+            },
+            option: {
                 title: {
                     left: 'left', 
-                    text: '近15天订单金额',
+                    text: '访问量',
                 },
                 grid: {
                     top: '80px'
                 },
                 tooltip: {trigger: 'axis', show: true, axisPointer: {type: 'cross', label: {}}},
-                xAxis: [{data: moneyDay, gridIndex: 0}],
+                grid: [{left: '5%', right: '3%', top: '15%', bottom: '5%'}],
+                xAxis: [{data: ['1','2','3','4','5'], gridIndex: 0}],
                 yAxis: [
                     {
                         splitLine: {show: true}, gridIndex: 0, type: 'value', axisLabel: {
-                            formatter: '{value}'
+                            formatter: '{value}'
                         }
                     }
                 ],
-                grid: [{left: '5%', right: '3%', top: '15%', bottom: '5%'}],
                 series: [
                     {
                         smooth: true, showBackground: true,
                         areaStyle: {color: 'rgba(180, 180, 180, 0.5)'},
-                        type: 'line', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
-                        label: {normal: {position: 'top', formatter: '¥ {c} 元', show: true}},
-                        data: data.map(function (item) {
-                            return item['订单金额'];
-                        }),
+                        type: 'bar', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
+                        label: {normal: {position: 'top', formatter: '{c} 条', show: true}},
+                        data:['10','2','3','4','1'],
                     }
                 ]
-            };
+            },
         }
     }
 }
 </script>
 
+<style>
+
 <style>
 .myMods {list-style:none;margin:-10px;}
 .myMods li {display: inline-block;width: 11.5%;height:100px;vertical-align: top;transition:all 0.3s ease;margin:10px;border-radius:5px;color: #333;}
@@ -382,11 +332,10 @@ export default {
     margin-bottom: 10px;
 }
 .total-panel .panel-item{
-    width: calc(33.333333% - 9.6px);
-    height: 130px;
-    box-shadow: rgba(0, 0, 0, 0.05) 0px 0px 8px;
+    width: calc(25% - 9.6px);
     position: relative;
     border-radius: 6px;
+    border:1px solid #e3e8ee;
 }
 .total-panel .panel-item .item-warp .left {
     padding:16px 0px 0px 23px;

+ 11 - 0
src/views/manage/school/lists/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style>
+
+</style>

+ 10 - 93
src/views/manage/setting/basic/index.vue

@@ -24,10 +24,6 @@
                                 <el-input v-model="sys.copyright" placeholder="请输入" clearable />
                                 <div class="el-form-item-msg"></div>
                             </el-form-item>
-                            <el-form-item label="软件版本号" prop="version" class="label-item">
-                                <el-input v-model="sys.version" placeholder="请输入" clearable />
-                                <div class="el-form-item-msg">请勿乱改,否则影响打印软件的正常运行</div>
-                            </el-form-item>
                             <el-form-item label="隐私协议" prop="privacy" class="label-item">
                                 <sc-editor v-model="sys.privacy" placeholder="请输入" :height="400"></sc-editor>
                                 <div class="el-form-item-msg"></div>
@@ -43,22 +39,17 @@
                             <el-row :gutter="15">
                                 <el-col :span="this.$store.state.global.ismobile?24:12">
                                     <fieldset>
-                                        <legend><el-tag>公众号配置</el-tag></legend>
-                                        <el-form-item label="Token(接口认证令牌)" prop="token">
-                                            <el-input v-model="sys.token" clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg">公众号平台与系统对接认证Token,请优先填写此参数并保存,然后再在微信公众号平台操作对接。</div>
-                                        </el-form-item>
-                                        <el-form-item label="AppId(公众号 APPID)" prop="appid">
-                                            <el-input v-model="sys.appid" clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg">公众号APPID是所有接口必要参数,可以在公众号平台 [ 开发 > 基本配置 ] 页面获取。</div>
+                                        <legend><el-tag>小程序配置</el-tag></legend>
+                                        <el-form-item label="AppId(小程序 APPID)" prop="mini_appid">
+                                            <el-input v-model="sys.mini_appid" clearable placeholder="请输入"></el-input>
+                                            <div class="el-form-item-msg">小程序后台获取</div>
                                         </el-form-item>
-                                        <el-form-item label="AppSecret(公众号 Secret)" prop="secret">
-                                            <el-input v-model="sys.secret" show-password clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg">公众号应用密钥是所有接口必要参数,可以在公众号平台 [ 开发 > 基本配置 ] 页面授权后获取。</div>
+                                        <el-form-item label="AppSecret(小程序密钥)" prop="mini_secret">
+                                            <el-input v-model="sys.mini_secret" show-password clearable placeholder="请输入"></el-input>
+                                            <div class="el-form-item-msg">小程序后台获取</div>
                                         </el-form-item>
-                                        <el-form-item label="AesKey(消息加密密钥)" prop="aeskey">
-                                            <el-input v-model="sys.aeskey" clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg">若开启了消息加密时必需填写,消息加密密钥必需填写并保持与公众号平台一致。</div>
+                                        <el-form-item label="分享图片" prop="share">
+                                            <sc-upload v-model="sys.share"></sc-upload>
                                         </el-form-item>
                                     </fieldset>
                                 </el-col>
@@ -83,54 +74,7 @@
                                         </el-form-item>
                                     </fieldset>
                                 </el-col>
-                                <el-col :span="this.$store.state.global.ismobile?24:12">
-                                    <fieldset>
-                                        <legend><el-tag>小程序配置</el-tag></legend>
-                                        <el-form-item label="AppId(小程序 APPID)" prop="mini_appid">
-                                            <el-input v-model="sys.mini_appid" clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg">小程序后台获取</div>
-                                        </el-form-item>
-                                        <el-form-item label="AppSecret(小程序密钥)" prop="mini_secret">
-                                            <el-input v-model="sys.mini_secret" show-password clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg">小程序后台获取</div>
-                                        </el-form-item>
-                                        <el-form-item label="分享图片" prop="share">
-                                            <sc-upload v-model="sys.share"></sc-upload>
-                                        </el-form-item>
-                                    </fieldset>
-                                </el-col>
-                                <el-col :span="this.$store.state.global.ismobile?24:12">
-                                    <fieldset>
-                                        <legend><el-tag>三方支付配置</el-tag></legend>
-                                        <el-form-item label="开关" prop="jhf_state">
-                                            <el-radio-group v-model="sys.jhf_state">
-                                                <el-radio-button :label="1">开启</el-radio-button>
-                                                <el-radio-button :label="2">关闭</el-radio-button>
-                                            </el-radio-group>
-                                            <div class="el-form-item-msg">关闭后,默认会使用微信官方支付模式</div>
-                                        </el-form-item>
-                                        <el-form-item label="AppId" prop="jhf_appid">
-                                            <el-input v-model="sys.jhf_appid" clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg"></div>
-                                        </el-form-item>
-                                        <el-form-item label="商户ID" prop="jhf_mch_id">
-                                            <el-input v-model="sys.jhf_mch_id" show-password clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg"></div>
-                                        </el-form-item>
-                                        <el-form-item label="Aeskey" prop="jhf_aeskey">
-                                            <el-input v-model="sys.jhf_aeskey" show-password clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg"></div>
-                                        </el-form-item>
-                                        <el-form-item label="商户私钥" prop="jhf_prikey">
-                                            <el-input v-model="sys.jhf_prikey" type="textarea" show-password clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg"></div>
-                                        </el-form-item>
-                                        <el-form-item label="平台公钥" prop="jhf_pubkey">
-                                            <el-input v-model="sys.jhf_pubkey" type="textarea" show-password clearable placeholder="请输入"></el-input>
-                                            <div class="el-form-item-msg"></div>
-                                        </el-form-item>
-                                    </fieldset>
-                                </el-col>
+                                
                             </el-row>
                         </el-form>
                     </el-tab-pane>
@@ -157,15 +101,6 @@ export default {
             sys: {},
             smsRegion:[],
             rules2:{
-                token: [
-                    { required: true, message: '请输入' }
-                ],
-                appid: [
-                    { required: true, message: '请输入' }
-                ],
-                secret: [
-                    { required: true, message: '请输入' }
-                ],
                 mch_id: [
                     { required: true, message: '请输入' }
                 ],
@@ -178,29 +113,11 @@ export default {
                 mini_secret: [
                     { required: true, message: '请输入' }
                 ],
-                jhf_appid: [
-                    { required: true, message: '请输入' }
-                ],
-                jhf_mch_id: [
-                    { required: true, message: '请输入' }
-                ],
-                jhf_aeskey: [
-                    { required: true, message: '请输入' }
-                ],
-                jhf_prikey: [
-                    { required: true, message: '请输入' }
-                ],
-                jhf_pubkey: [
-                    { required: true, message: '请输入' }
-                ],
             },
             rules: {
                 title: [
                     { required: true, message: '请输入' }
                 ],
-                version: [
-                    { required: true, message: '请输入' }
-                ],
                 tel: [
                     { required: true, message: '请输入' }
                 ],

+ 2 - 2
src/views/manage/setting/menu/index.vue

@@ -7,10 +7,10 @@
 				</el-header>
 				<el-main class="nopadding">
                     <div class="tabs">
-                        <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleClick">
+                        <!-- <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleClick">
                             <el-tab-pane label="总管理" :name="1"></el-tab-pane>
                             <el-tab-pane label="门店" :name="2"></el-tab-pane>
-                        </el-tabs>
+                        </el-tabs> -->
                     </div>
 					<el-tree ref="menu" class="menu" node-key="id" :data="menuList" :props="menuProps" draggable highlight-current :expand-on-click-node="false" check-strictly :filter-node-method="menuFilterNode" @node-click="menuClick" @node-drop="nodeDrop">
 						<template #default="{node, data}">

+ 0 - 124
src/views/manage/shop/card/components/form.vue

@@ -1,124 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="600" :close-on-click-modal="false" destroy-on-close @closed="$emit('closed')">
-        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
-            <el-row :gutter="15">
-                <el-col :span="24">
-                    <el-form-item label="套餐名称" prop="name">
-                        <el-input v-model="formData.name" clearable placeholder="请输入"></el-input>
-                        <div class="el-form-item-msg"></div>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="时长类型" prop="unit">
-                        <el-radio-group v-model="formData.unit">
-                            <el-radio border :label="1">按天</el-radio>
-                            <el-radio border :label="2">按年</el-radio>
-                        </el-radio-group>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="套餐时长" prop="time">
-                        <el-input v-model="formData.time" clearable placeholder="请输入">
-                            <template #append>{{ formData.unit==1?'天':'年' }}</template>
-                        </el-input>
-                        <div class="el-form-item-msg"></div>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <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-col>
-                <el-col :span="12">
-                    <el-form-item label="套餐划线金额" prop="old_money">
-                        <el-input v-model="formData.old_money" clearable placeholder="请输入">
-                            <template #append>元</template>
-                        </el-input>
-                        <div class="el-form-item-msg"></div>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="24">
-                    <el-form-item label="排序" prop="sort">
-                        <el-input v-model="formData.sort" clearable placeholder="请输入"></el-input>
-                        <div class="el-form-item-msg"></div>
-                    </el-form-item>
-                </el-col>
-            </el-row>
-        </el-form>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
-		</template>
-    </el-dialog>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            loading: false,
-            isSaveing: false,
-            mode:"add",
-            titleMap:{
-                add:"新增套餐",
-                edit:"编辑套餐"
-            },
-            visible:false,
-            formData:{
-                unit:2,
-                sort:0
-            },
-            rules:{
-                name: [
-                    {required: true, message: '请输入'}
-                ],
-                money: [
-                    {required: true, message: '请输入'}
-                ],
-                time: [
-                    {required: true, message: '请输入'}
-                ],
-                old_money: [
-                    {required: true, message: '请输入'}
-                ],
-                unit: [
-                    {required: true, message: '请选择'}
-                ],
-            }
-        }
-    },
-    methods:{
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = JSON.parse(JSON.stringify(data));
-        },
-        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.combo.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 = {
-                unit:2,
-                sort:0
-            };
-            this.submitState = false;
-            this.$emit("success");
-        }
-    }
-}
-</script>

+ 0 - 55
src/views/manage/shop/card/components/option.vue

@@ -1,55 +0,0 @@
-<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>
-                <el-button icon="el-icon-document" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">启用</el-button>
-                <el-button icon="el-icon-lock" @click="table_batch_status(0)" :disabled="dataSelect.length>0?false:true">禁用</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: {
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            var resp = await this.$API.combo.batch.post(submitData);
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.$emit("success");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-    }
-}
-</script>

+ 0 - 49
src/views/manage/shop/card/components/search.vue

@@ -1,49 +0,0 @@
-<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-input v-model="searchKey.name" 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>
-                                <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>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 118
src/views/manage/shop/card/components/table.vue

@@ -1,118 +0,0 @@
-<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="200" fixed="left" prop="name"></el-table-column>
-        <el-table-column label="套餐金额" prop="money" width="180">
-            <template #default="scope">
-                <span v-if="scope.row.money">¥{{ scope.row.money }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="划线金额" prop="old_money" width="180">
-            <template #default="scope">
-                <span v-if="scope.row.old_money">¥{{ scope.row.old_money }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="有效期" prop="time" width="150">
-            <template #default="scope">
-                <span v-if="scope.row.time">{{ scope.row.time }}{{ scope.row.unit==1?'天' :'年'}}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="状态" prop="status" 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>
-            </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
-        <el-table-column label="操作" width="140" align="left" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <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>
-            </template>
-        </el-table-column>
-    </scTable>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-</template>
-
-<script>
-import formMain from './form';
-export default {
-    components: {
-        formMain
-    },
-    data(){
-        return {
-            list: {
-                apiObj: this.$API.combo.list
-            },
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    
-    methods: {
-        table_view(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit").setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm(`确定要删除该套餐吗?`, '提示', {
-                type: 'warning'
-            }).then(async ()=>{
-                var resp = await this.$API.combo.del.post({"id":data.id});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg);
-                }
-                this.$message.success(resp.msg);
-                this.$refs.table.refresh()
-            }).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>

+ 0 - 47
src/views/manage/shop/card/index.vue

@@ -1,47 +0,0 @@
-<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,optionBtn
-    },
-    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 - 77
src/views/manage/shop/index/components/combo.vue

@@ -1,77 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="600" :close-on-click-modal="false" destroy-on-close @closed="$emit('closed')">
-        <el-form ref="dialogForm" :model="submitData" :rules="rules" label-width="100px" label-position="top">
-            <el-form-item label="充值店铺">
-                <el-input v-model="formData.shop_name" clearable placeholder="请输入" readonly disabled></el-input>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="充值套餐" prop="combo">
-                <el-select v-model="submitData.combo" clearable placeholder="请选择充值套餐" :style="{width: '100%'}">
-                    <el-option :value="item.id" :label="item.name" v-for="(item,index) in comboData" :key="index"></el-option>
-                </el-select>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-        </el-form>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
-		</template>
-    </el-dialog>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            loading: false,
-            isSaveing: false,
-            mode:"add",
-            titleMap:{
-                add:"店铺套餐充值",
-                edit:"店铺套餐充值"
-            },
-            visible:false,
-            formData:{},
-            submitData:{},
-            comboData:[],
-            rules:{
-                combo: [
-                    {required: true, message: '请选择'}
-                ],
-            }
-        }
-    },
-    methods:{
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            this.getCombo()
-            return this
-        },
-        async getCombo(){
-            var resp = await this.$API.combo.list.get({"pageSize":100,"page":1});
-            this.comboData = resp.data.rows;
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = JSON.parse(JSON.stringify(data));
-        },
-        async submit(){
-            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
-            if(!validate){ return false }
-            this.isSaveing = true;
-            this.submitData.shop_id = this.formData.shop_id;
-            var resp = await this.$API.shop.combo.post(this.submitData);
-            this.isSaveing = false;
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.visible = false;
-            this.formData = {};
-            this.submitState = false;
-            this.$emit("success");
-        }
-    }
-}
-</script>

+ 0 - 206
src/views/manage/shop/index/components/form.vue

@@ -1,206 +0,0 @@
-<template>
-    <el-drawer :title="titleMap[mode]" :append-to-body="true" v-model="visible" :size="1000" destroy-on-close :close-on-click-modal="false" @closed="$emit('closed')" :with-header="false">
-        <el-container class="flex-column" v-loading="loading">
-            <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-tag>店铺信息</el-tag></legend>
-                        <el-row :gutter="15">
-                            <el-col :span="12">
-                                <el-form-item label="店铺名称" prop="shop_name">
-                                    <el-input v-model="formData.shop_name" clearable placeholder="请输入"></el-input>
-                                    <div class="el-form-item-msg"></div>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="6">
-                                <el-form-item label="联系人" prop="shop_contact">
-                                    <el-input v-model="formData.shop_contact" clearable placeholder="请输入"></el-input>
-                                    <div class="el-form-item-msg"></div>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="6">
-                                <el-form-item label="联系电话" prop="shop_mobile">
-                                    <el-input v-model="formData.shop_mobile" clearable placeholder="请输入"></el-input>
-                                    <div class="el-form-item-msg"></div>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="12">
-                                <el-form-item label="营业时间">
-                                    <el-row :gutter="10">
-                                        <el-col :span="11">
-                                            <el-time-select v-model="formData.start_at" start="00:00" step="00:01" end="23:59" placeholder="请选择"  style="width: 100%"/>
-                                        </el-col>
-                                        <el-col :span="2" class="text-center">
-                                            <span class="text-gray-500">-</span>
-                                        </el-col>
-                                        <el-col :span="11">
-                                            <el-time-select v-model="formData.end_at" start="00:00" step="00:01" end="23:59" placeholder="请选择"  style="width: 100%"/>
-                                        </el-col>
-                                    </el-row>
-                                    <div class="el-form-item-msg">营业时间为必选,否则小程序端无法下单</div>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="12">
-                                <el-form-item label="提现手续费" prop="cash_rate">
-                                    <el-input v-model="formData.cash_rate" clearable placeholder="请输入">
-                                        <template #append>%</template>
-                                    </el-input>
-                                    <div class="el-form-item-msg">设置为10则为10%,意为每笔提现将收取提现金额的10%作为手续费</div>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="24">
-                                <el-form-item label="店铺地址" prop="shop_address">
-                                    <el-input v-model="formData.shop_address" clearable placeholder="请输入"></el-input>
-                                    <div class="el-form-item-msg"></div>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="24">
-                                <el-form-item label="店铺公告" prop="shop_notice">
-                                    <el-input v-model="formData.shop_notice" type="textarea" clearable placeholder="请输入">
-                                        <template #append>%</template>
-                                    </el-input>
-                                    <div class="el-form-item-msg"></div>
-                                </el-form-item>
-                            </el-col>
-                        </el-row>
-                    </fieldset>
-                    <fieldset>
-                        <legend><el-tag>收费规则</el-tag></legend>
-                        <el-form-item label="收费类型" prop="rate_type">
-                            <el-radio-group v-model="formData.rate_type">
-                                <el-radio border :label="1">收取年费</el-radio>
-                                <el-radio border :label="2">订单金额抽佣</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                        <el-form-item label="抽佣类型" prop="rate_radio" v-if="formData.rate_type==2">
-                            <el-radio-group v-model="formData.rate_radio">
-                                <el-radio border :label="1">固定金额</el-radio>
-                                <el-radio border :label="2">金额比例</el-radio>
-                            </el-radio-group>
-                        </el-form-item>
-                        <el-form-item label="抽佣比例/金额" prop="rate_money" v-if="formData.rate_type==2">
-                            <el-input v-model="formData.rate_money" clearable placeholder="请输入">
-                                <template #append>{{formData.rate_radio==1?'元':'%'}}</template>
-                            </el-input>
-                            <div class="el-form-item-msg">如果类型为金额比例,比例设置10,则表示抽取每单金额的10%为系统佣金,最多不超过100</div>
-                        </el-form-item>
-                    </fieldset>
-                </el-form>
-            </el-main>
-            <el-footer style="text-align: right;">
-                <el-button @click="visible=false" size="large">取 消</el-button>
-                <el-button v-if="mode!='show'" size="large" type="primary" :loading="isSaveing" @click="submit()">保 存</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:{},
-            rules:{
-                shop_address: [
-                    {required: true, message: '请输入'}
-                ],
-                rate_money: [
-                    {required: true, message: '请输入'}
-                ],
-                rate_radio: [
-                    {required: true, message: '请选择'}
-                ],
-                rate_type: [
-                    {required: true, message: '请选择'}
-                ],
-                shop_name: [
-                    {required: true, message: '请输入'}
-                ],
-                shop_contact: [
-                    {required: true, message: '请输入'}
-                ],
-                shop_mobile: [
-                    {required: true, message: '请输入'}
-                ],
-                shop_address: [
-                    {required: true, message: '请输入'}
-                ],
-                start_at: [
-                    {required: true, message: '请选择'}
-                ],
-                end_at: [
-                    {required: true, message: '请选择'}
-                ],
-                username: [
-                    {required: true, message: '请输入'}
-                ],
-                cash_rate: [
-                    {required: true, message: '请输入'}
-                ],
-                password: [
-                    {required: true, message: '请输入登录密码'}
-                ],
-                password2: [
-                    {required: true, message: '请再次输入密码'},
-                    {validator: (rule, value, callback) => {
-                        if (value !== this.formData.password) {
-                            callback(new Error('两次输入密码不一致!'));
-                        }else{
-                            callback();
-                        }
-                    }}
-                ],
-            }
-        }
-    },
-    methods:{
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = JSON.parse(JSON.stringify(data));
-        },
-        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));
-            if (this.mode == 'add') {
-                var resp = await this.$API.shop.save.post(submitData);
-            } else {
-                var resp = await this.$API.shop.edit.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 = {};
-            this.submitState = false;
-            this.$emit("success");
-        }
-    }
-}
-</script>

+ 0 - 55
src/views/manage/shop/index/components/option.vue

@@ -1,55 +0,0 @@
-<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>
-                <el-button icon="el-icon-document" @click="table_batch_status(0)" :disabled="dataSelect.length>0?false:true">启用</el-button>
-                <el-button icon="el-icon-lock" @click="table_batch_status(2)" :disabled="dataSelect.length>0?false:true">关店</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: {
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            var resp = await this.$API.shop.batch.post(submitData);
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.$emit("success");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-    }
-}
-</script>

+ 0 - 49
src/views/manage/shop/index/components/search.vue

@@ -1,49 +0,0 @@
-<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-input v-model="searchKey.name" 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>
-                                <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>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 155
src/views/manage/shop/index/components/table.vue

@@ -1,155 +0,0 @@
-<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="200" fixed="left" prop="shop_name"></el-table-column>
-        <el-table-column label="店铺编码" prop="shop_id" width="200"></el-table-column>
-        <el-table-column label="营业时间" prop="agent" width="150">
-            <template #default="scope">
-                <span v-if="scope.row.start_at">{{ scope.row.start_at }}-{{ scope.row.end_at }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="到期时间" prop="vip_end" width="180">
-            <template #default="scope">
-                <span v-if="scope.row.vip_end">{{ scope.row.vip_end }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="收费规则" prop="rate_type" width="150">
-            <template #default="scope">
-                <div class="status-success" v-if="scope.row.rate_type==1"><sc-status-indicator type="success"></sc-status-indicator> 收取年费</div>
-                <div class="status-danger" v-if="scope.row.rate_type==2"><sc-status-indicator type="danger"></sc-status-indicator> 订单金额抽佣</div>
-                <div class="status-danger" v-if="scope.row.rate_type==0"><sc-status-indicator type="danger"></sc-status-indicator> 未设置</div>
-            </template>
-        </el-table-column>
-        <el-table-column label="联系人" prop="shop_contact" width="150">
-            <template #default="scope">
-                <span v-if="scope.row.shop_contact">{{ scope.row.shop_contact }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="联系电话" prop="shop_mobile" width="150">
-            <template #default="scope">
-                <span v-if="scope.row.shop_mobile">{{ scope.row.shop_mobile }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="店铺地址" prop="shop_address" width="300">
-            <template #default="scope">
-                <span v-if="scope.row.shop_address">{{ scope.row.shop_address }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="账户余额" prop="balance" width="200">
-            <template #default="scope">
-                {{ $TOOL.money(scope.row.balance) }}
-            </template>
-        </el-table-column>
-        <el-table-column label="状态" prop="status" width="120" align="center">
-            <template #default="scope">
-                <div class="status-success" v-if="scope.row.status==0"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
-                <div class="status-danger" v-if="scope.row.status==1"><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>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
-        <el-table-column label="操作" width="140" align="left" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <el-button size="small" @click="table_auth(scope.row)">套餐</el-button>
-                    <el-button size="small" @click="table_view(scope.row)">编辑</el-button>
-                </el-button-group>
-                <div class="line-5"></div>
-                <el-button-group>
-                    <el-button type="danger" size="small" @click="table_del(scope.row)">删除</el-button>
-                </el-button-group>
-            </template>
-        </el-table-column>
-    </scTable>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-    <comboMain ref="comboMain" @success="handleSuccess"></comboMain>
-</template>
-
-<script>
-import formMain from './form';
-import comboMain from './combo';
-export default {
-    components: {
-        formMain,comboMain
-    },
-    data(){
-        return {
-            list: {
-                apiObj: this.$API.shop.list
-            },
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    
-    methods: {
-        table_auth(data){
-            this.$nextTick(() => {
-                this.$refs.comboMain.open("edit").setData(data)
-            })
-        },
-        table_view(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit").setData(data)
-            })
-        },
-        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>

+ 0 - 47
src/views/manage/shop/index/index.vue

@@ -1,47 +0,0 @@
-<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,optionBtn
-    },
-    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 - 149
src/views/manage/shop/user/components/form.vue

@@ -1,149 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="600" :close-on-click-modal="false" destroy-on-close @closed="$emit('closed')">
-        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
-            <el-row :gutter="15">
-                <el-col :span="24">
-                    <el-form-item label="帐号类型" prop="type">
-                        <el-radio-group v-model="formData.type">
-                            <el-radio border :label="1">管理员</el-radio>
-                            <el-radio border :label="2">店铺帐号</el-radio>
-                        </el-radio-group>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="24" v-if="formData.type==2">
-                    <el-form-item label="所属店铺" prop="agent_id">
-                        <el-input v-model="formData.agent_id" placeholder="所属店铺" clearable readonly :style="{ width: '100%' }" @click="selectUser">
-                            <template #append>
-                                <el-tooltip
-                                    effect="dark"
-                                    content="点这里,清除选择"
-                                    placement="top-start"
-                                >
-                                <div class="remove-a" @click="clearUser">清除</div>
-                                </el-tooltip>
-                            </template>
-                        </el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="24">
-                    <el-form-item label="用户昵称" prop="truename">
-                        <el-input v-model="formData.truename" clearable placeholder="请输入"></el-input>
-                        <div class="el-form-item-msg"></div>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="24">
-                    <el-form-item label="登录用户账号" prop="username">
-                        <el-input v-model="formData.username" clearable placeholder="请输入"></el-input>
-                        <div class="el-form-item-msg"></div>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="新的登录密码" prop="password">
-                        <el-input v-model="formData.password" clearable placeholder="请输入"></el-input>
-                        <div class="el-form-item-msg"></div>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="重复登录密码" prop="password2">
-                        <el-input v-model="formData.password2" clearable placeholder="请输入"></el-input>
-                        <div class="el-form-item-msg"></div>
-                    </el-form-item>
-                </el-col>
-            </el-row>
-        </el-form>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
-		</template>
-    </el-dialog>
-    <agentData ref="agentData" :multiple="false" @success="handleSuccess"></agentData>
-</template>
-
-<script>
-import agentData from "@/views/manage/components/agent";
-export default {
-    components: {
-        agentData
-    },
-    data(){
-        return {
-            loading: false,
-            isSaveing: false,
-            mode:"add",
-            titleMap:{
-                add:"新增帐号",
-                edit:"编辑帐号"
-            },
-            visible:false,
-            formData:{
-                type:2
-            },
-            rules:{
-                type: [
-                    {required: true, message: '请选择'}
-                ],
-                username: [
-                    {required: true, message: '请输入'}
-                ],
-                password: [
-                    {required: true, message: '请输入登录密码'}
-                ],
-                password2: [
-                    {required: true, message: '请再次输入密码'},
-                    {validator: (rule, value, callback) => {
-                        if (value !== this.formData.password) {
-                            callback(new Error('两次输入密码不一致!'));
-                        }else{
-                            callback();
-                        }
-                    }}
-                ],
-                agent_id: [
-                    {required: true, message: '请选择'}
-                ],
-            }
-        }
-    },
-    methods:{
-        handleSuccess(data){
-            this.formData.agent_id = data.shop_id;
-        },
-        clearUser(){
-            this.formData.agent_id = "";
-        },
-        selectUser(){
-            this.$nextTick(() => {
-                this.$refs.agentData.open()
-            })
-        },
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = JSON.parse(JSON.stringify(data));
-        },
-        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));
-            submitData.password = this.$TOOL.crypto.MD5(this.formData.password);
-            submitData.password2 = this.$TOOL.crypto.MD5(this.formData.password2);
-            var resp = await this.$API.user.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:2
-            };
-            this.$emit("success");
-        }
-    }
-}
-</script>

+ 0 - 56
src/views/manage/shop/user/components/option.vue

@@ -1,56 +0,0 @@
-<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>
-                <el-button icon="el-icon-document" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">启用</el-button>
-                <el-button icon="el-icon-lock" @click="table_batch_status(0)" :disabled="dataSelect.length>0?false:true">禁用</el-button>
-            </div>
-        </div>
-    </fieldset>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-</template>
-
-<script>
-import formMain from './form';
-export default {
-    components: {
-        formMain
-    },
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            var resp = await this.$API.user.batch.post(submitData);
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.$emit("success");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-    }
-}
-</script>

+ 0 - 54
src/views/manage/shop/user/components/search.vue

@@ -1,54 +0,0 @@
-<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 :span="this.$store.state.global.ismobile?12:4">
-                            <el-input v-model="searchKey.truename" placeholder="账户昵称" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
-                                <template #prepend>账户昵称</template>
-                            </el-input>
-                        </el-col>
-                        <el-col :span="this.$store.state.global.ismobile?12:4">
-                            <el-input v-model="searchKey.username" placeholder="登录账号" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
-                                <template #prepend>登录账号</template>
-                            </el-input>
-                        </el-col>
-                        <el-col :span="this.$store.state.global.ismobile?12: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 :span="this.$store.state.global.ismobile?12: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>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 148
src/views/manage/shop/user/components/table.vue

@@ -1,148 +0,0 @@
-<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="150" fixed="left" prop="truename">
-            <template #default="scope">
-                <span v-if="scope.row.truename">{{ scope.row.truename }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="所属店铺" width="150" prop="user_id">
-            <template #default="scope">
-                <span v-if="scope.row.account">{{ scope.row.account.shop_name }}</span>
-                <span class="status-danger" v-else>-</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="登录账号" prop="username" width="150">
-            <template #default="scope">
-                <span v-if="scope.row.username">{{ scope.row.username }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="账户类型" prop="type" width="120" align="left">
-            <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-info" v-if="scope.row.type==3"><sc-status-indicator type="info"></sc-status-indicator> 店铺账号</div>
-            </template>
-        </el-table-column>
-        <el-table-column label="登录时间" prop="login_at" width="180">
-            <template #default="scope">
-                {{scope.row.login_at?scope.row.login_at:'-'}}
-            </template>
-        </el-table-column>
-        <el-table-column label="登录IP" prop="login_ip" width="180">
-            <template #default="scope">
-                {{scope.row.login_ip?scope.row.login_ip:'-'}}
-            </template>
-        </el-table-column>
-        <el-table-column label="登录次数" prop="login_num" width="180"></el-table-column>
-        <el-table-column label="注册时间" prop="create_at" width="180"></el-table-column>
-        <el-table-column label="注册IP" prop="create_ip" width="180"></el-table-column>
-        <el-table-column label="状态" prop="status" width="120" align="center">
-            <template #default="scope">
-                <el-popconfirm title="确定要启用或冻结该账号吗?" @confirm="table_state(scope.row)">
-                    <template #reference>
-                        <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
-                        <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
-                    </template>
-                </el-popconfirm>
-            </template>
-        </el-table-column>
-        <el-table-column label="操作" width="160" align="right" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <el-button text type="warning" size="small" @click="table_passwd(scope.row)">修改密码</el-button>
-                    <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
-                        <template #reference>
-                            <el-button text type="danger" size="small">删除</el-button>
-                        </template>
-                    </el-popconfirm>                    
-                </el-button-group>
-            </template>
-        </el-table-column>
-    </scTable>
-    <passwd ref="userPasswd"></passwd>
-</template>
-
-<script>
-import passwd from "../password";
-export default {
-    components: {
-        passwd
-    },
-    props: {},
-    data(){
-        return {
-            list: {
-                apiObj: this.$API.user.list
-            },
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    methods: {
-        async table_del(data){
-            var resp = await this.$API.user.del.post({"id":data.id});
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg)
-            }
-            this.$message.success(resp.msg)
-            this.$refs.table.refresh()
-        },
-        async table_state(data){
-            var status = 1;
-            if (data.status == 1) {
-                status = 0;
-            }
-            var resp = await this.$API.user.state.post({"id":data.id});
-            if (resp.code == 0) {
-                this.$message.warning(resp.msg)
-                return false;
-            }
-            this.$message.success(resp.msg)
-            this.$refs.table.refresh()
-        },
-        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>

+ 0 - 47
src/views/manage/shop/user/index.vue

@@ -1,47 +0,0 @@
-<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" type="2"></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 {
-            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 - 96
src/views/manage/shop/user/password.vue

@@ -1,96 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
-        <el-form :model="formData" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-position="top" label-width="120px">
-            <el-form-item label="登录账号">
-				<el-input v-model="formData.username" disabled></el-input>
-			</el-form-item>
-            <el-form-item label="账号昵称">
-				<el-input v-model="formData.truename" disabled></el-input>
-			</el-form-item>
-            <el-form-item label="新密码" prop="password">
-                <el-input type="password" v-model="formData.password" clearable show-password></el-input>
-            </el-form-item>
-            <el-form-item label="确认新密码" prop="password2">
-                <el-input type="password" v-model="formData.password2" clearable show-password></el-input>
-            </el-form-item>
-        </el-form>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">保 存</el-button>
-		</template>
-    </el-dialog>
-</template>
-
-<script>
-import scPasswordStrength from '@/components/scPasswordStrength'
-export default{
-    components: {
-        scPasswordStrength
-    },
-    data(){
-        return {
-            loading: false,
-            mode:"edit",
-            titleMap:{
-                edit:"修改密码"
-            },
-            visible: false,
-            isSaveing: false,
-            formData:{},
-            rules:{
-                password: [
-                    {required: true, message: '请输入登录密码'}
-                ],
-                password2: [
-                    {required: true, message: '请再次输入密码'},
-                    {validator: (rule, value, callback) => {
-                        if (value !== this.formData.password) {
-                            callback(new Error('两次输入密码不一致!'));
-                        }else{
-                            callback();
-                        }
-                    }}
-                ],
-            }
-        }
-    },
-    methods:{
-        open(mode = 'edit'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            data.password = "";
-            data.password2 = "";
-            this.formData = data;
-        },
-        submit(){
-            this.isSaveing = true;
-            this.$refs.dialogForm.validate(async (valid) => {
-                if (valid) {
-                    let password = this.$TOOL.crypto.MD5(this.formData.password);
-                    var result = await this.$API.user.pwd.post({password:password,id:this.formData.id});
-                    if(result.code !== 1){
-                        this.$message.warning(result.msg)
-                        this.isSaveing = false;
-                        return false;
-                    }
-                    this.$message.success(result.msg)
-                    this.isSaveing = false;
-                    this.visible = false;
-                    this.formData = {};
-                }else{
-                    this.isSaveing = false;
-                    return false;
-                }
-            });
-        }
-    }
-}
-</script>
-
-<style lang="less" scoped>
-
-</style>

+ 11 - 0
src/views/manage/task/audit/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style>
+
+</style>

+ 11 - 0
src/views/manage/task/category/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style>
+
+</style>

+ 453 - 0
src/views/manage/task/index/index.vue

@@ -0,0 +1,453 @@
+<template>
+    <div v-if="pageLoading">
+		<el-main>
+			<el-card shadow="never">
+				<el-skeleton :rows="5"></el-skeleton>
+			</el-card>
+			<el-card shadow="never" style="margin-top: 15px;">
+				<el-skeleton></el-skeleton>
+			</el-card>
+		</el-main>
+	</div>
+    <el-main>
+        <div class="card-news mt0">
+            <div class="total-panel">
+                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">达人</div>
+                            <div class="number" v-if="hideState==1">{{ $TOOL.money(todayData.userNum) }}</div>
+                            <div class="number" v-else>0.00</div>
+                            <div class="desc"></div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                </div>
+                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">任务</div>
+                            <div class="number" v-if="hideState==1">{{ $TOOL.money(todayData.userNum) }}</div>
+                            <div class="number" v-else>0.00</div>
+                            <div class="desc"></div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                </div>
+                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">投稿</div>
+                            <div class="number" v-if="hideState==1">{{ $TOOL.money(todayData.userNum) }}</div>
+                            <div class="number" v-else>0.00</div>
+                            <div class="desc"></div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                </div>
+                <div :class="this.$store.state.global.ismobile?'panel-item m':'panel-item'">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">待审核</div>
+                            <div class="number" v-if="hideState==1">{{ $TOOL.money(todayData.userNum) }}</div>
+                            <div class="number" v-else>0.00</div>
+                            <div class="desc"></div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <el-row :gutter="20">
+            <el-col :span="this.$store.state.global.ismobile?24:8" :xs="24">
+                <div class="card-news mt10"> <!---评论数-->
+                    <scEcharts height="500px" :option="option"></scEcharts>
+                </div>
+            </el-col>
+            <el-col :span="this.$store.state.global.ismobile?24:16" :xs="24">
+                <div class="card-news mt10"> <!---阅读量-->
+                    <scEcharts height="500px" :option="option2"></scEcharts>
+                </div>
+            </el-col>
+        </el-row>
+        <div class="card-news mt10">
+            <div class="news-title">内容排行</div>
+            <div class="mt10">
+                <el-row :gutter="20">
+                    <el-col :span="this.$store.state.global.ismobile?24:12">
+                        <el-card header="最新文章" shadow="never"></el-card>
+                    </el-col>
+                    <el-col :span="this.$store.state.global.ismobile?24:12">
+                        <el-card header="最新文章" shadow="never"></el-card>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
+    </el-main>
+</template>
+
+<script>
+import scEcharts from '@/components/scEcharts';
+export default {
+    components: {
+        scEcharts
+    },
+    data() {
+        return {
+            pageLoading:false,
+            option2: {
+                title: {
+                    left: 'left', 
+                    text: '评论量',
+                },
+                grid: {
+                    top: '80px'
+                },
+                tooltip: {trigger: 'axis', show: true, axisPointer: {type: 'cross', label: {}}},
+                grid: [{left: '5%', right: '3%', top: '15%', bottom: '5%'}],
+                xAxis: [{data: ['1','2','3','4','5'], gridIndex: 0}],
+                yAxis: [
+                    {
+                        splitLine: {show: true}, gridIndex: 0, type: 'value', axisLabel: {
+                            formatter: '{value}'
+                        }
+                    }
+                ],
+                series: [
+                    {
+                        smooth: true, showBackground: true,
+                        areaStyle: {color: 'rgba(180, 180, 180, 0.5)'},
+                        type: 'line', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
+                        label: {normal: {position: 'top', formatter: '{c}', show: true}},
+                        data:['10','2','3','4','1'],
+                    }
+                ]
+            },
+            option: {
+                title: {
+                    left: 'left', 
+                    text: '访问量',
+                },
+                grid: {
+                    top: '80px'
+                },
+                tooltip: {trigger: 'axis', show: true, axisPointer: {type: 'cross', label: {}}},
+                grid: [{left: '5%', right: '3%', top: '15%', bottom: '5%'}],
+                xAxis: [{data: ['1','2','3','4','5'], gridIndex: 0}],
+                yAxis: [
+                    {
+                        splitLine: {show: true}, gridIndex: 0, type: 'value', axisLabel: {
+                            formatter: '{value}'
+                        }
+                    }
+                ],
+                series: [
+                    {
+                        smooth: true, showBackground: true,
+                        areaStyle: {color: 'rgba(180, 180, 180, 0.5)'},
+                        type: 'bar', showSymbol: true, xAxisIndex: 0, yAxisIndex: 0,
+                        label: {normal: {position: 'top', formatter: '{c} 条', show: true}},
+                        data:['10','2','3','4','1'],
+                    }
+                ]
+            },
+        }
+    }
+}
+</script>
+
+<style>
+
+<style>
+.myMods {list-style:none;margin:-10px;}
+.myMods li {display: inline-block;width: 11.5%;height:100px;vertical-align: top;transition:all 0.3s ease;margin:10px;border-radius:5px;color: #333;}
+.myMods li:hover {opacity: 0.8;}
+.myMods li a {width: 100%;height: 100%;padding:10px;display: flex;flex-direction: column;align-items: center;justify-content: center;text-align: center;color: #333;}
+.myMods li i {font-size: 26px;color: #333;}
+.myMods li p {font-size: 12px;color: #333;margin-top: 10px;width: 100%;white-space:nowrap;text-overflow:ellipsis;overflow: hidden;}
+.mt0 {
+    margin-top: 0;
+}
+.service-item {
+    border: 1px solid #EAE9F0;
+    padding: 12px 14px;
+    border-radius: 6px;
+    display: flex;
+    align-items: center;
+    flex: 1;
+}
+.service-item .item-sub{
+    width: 40%;
+}
+.service-item .right-btn {
+    margin-left: auto;
+}
+.service-item img {
+    width: 44px;
+    height: 54px;
+    margin-right: 20px;
+}
+.service-item h3 {
+    font-size: 14px;
+    color: #000000d9;
+    margin-bottom: 8px;
+}
+.service-item p {
+    font-size: 13px;
+    color: #333333d9;
+}
+.service-item .value{
+    font-size: 18px;
+    color: #f64945;
+    font-weight: 700;
+    margin-left: auto;
+}
+.service-item .value span {
+    font-weight: normal;
+    color: #666;
+    font-size: 12px;
+}
+.service-tel {
+    display: flex;
+    align-items: center;
+    margin-top: 20px;
+}
+.service-tel img{
+    width: 32px;
+    height: 32px;
+    margin-right: 12px;
+}
+.service-tel span{
+    font-size: 20px;
+    font-weight: 500;
+    color: #35f;
+}
+.total-panel .panel-item.bg-gray .item-warp .left{
+    padding: 12px 24px;
+}
+.total-panel .panel-item.bg-gray {
+    background-color: #F7F9FC;
+    height: 104px;
+    background-size: cover;
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #fff;
+}
+.total-panel .panel-item.bg-gray .item-warp.img .title {color: #fff;}
+.total-panel .panel-item.bg-gray .item-warp.img .number{color: #fff;}
+.total-panel .panel-item.bg-gray .item-warp.img .desc{color: #fff;}
+.total-panel .panel-item.bg-gray .number{
+    font-size: 24px;
+}
+.total-panel .panel-item.bg-gray .number span{
+    font-size: 14px;
+    margin-left: 10px;
+}
+.total-panel .panel-item.bg-gray .title{
+    margin-bottom: 7px;
+}
+.total-panel-sub .sub-card {
+    border: 1px solid #EAE9F0;
+}
+.total-panel-sub .sub-card .title{
+    font-size: 14px;
+    color: #000000;
+    font-weight: bold;
+    margin: 22px 0 12px 22px;
+}
+.total-panel-sub .sub-card .title.red{
+    display: flex;
+    align-items: center;
+}
+.card-news .date-check{
+    position: absolute;
+    top: 10px;
+    right: 10px;
+    z-index: 99;
+}
+.total-panel-sub .sub-card .title.red::before{
+    content: "";
+    display: block;
+    width: 4px;
+    height: 4px;
+    border-radius: 4px;
+    background-color: #f64945;
+    margin-right: 6px;
+}
+.total-panel-sub .sub-card .sub-content{
+    display: flex;
+    align-items: stretch;
+    justify-content: space-between;
+    padding: 0px 22px 22px 22px;
+}
+.sub-box {
+    width: calc((100% - 24px) / 3);
+    padding: 12px 16px 12px 16px;
+    background: #FFFFFF;
+    box-shadow: 0px 0px 10px 0px rgba(203, 203, 203, 0.25);
+    border-radius: 6px;
+    box-sizing: border-box;
+}
+.sub-box .row1 {
+    display: flex;
+    align-items: center;
+    line-height: 1;
+    margin-bottom: 10px;
+}
+.sub-box .row2 {
+    font-size: 24px;
+    color: #333333;
+    font-weight: bold;
+    margin-bottom: 10px;
+}
+.sub-box .row2.red{
+    color: #f00;
+}
+.sub-box .row2 span {
+    margin-left: 10px;
+    font-size: 14px;
+}
+.sub-box .row3 {
+    font-size: 14px;
+    color: #666666;
+}
+.sub-box .row1 img{
+    width: 15px;
+    height: auto;
+    margin-right: 8px;
+}
+.sub-box .row1 span{
+    font-size: 14px;
+    color: #333333;
+}
+.total-panel {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    flex-wrap: wrap;
+    margin-top: 16px;
+}
+.total-panel .panel-item.m{
+    width: calc(100% - 9.6px);
+    margin-bottom: 10px;
+}
+.total-panel .panel-item{
+    width: calc(25% - 9.6px);
+    position: relative;
+    border-radius: 6px;
+    border:1px solid #e3e8ee;
+}
+.total-panel .panel-item .item-warp .left {
+    padding:16px 0px 0px 23px;
+}
+.total-panel .panel-item .item-warp .right {
+    width: 32px;
+    height: 32px;
+    margin: 13px 14px 0px 0px;
+}
+.total-panel .panel-item .item-warp .right img{
+    width:100%;
+    height:100%;
+    display:block;
+}
+.total-panel .panel-item .item-warp{
+    position: relative;
+    z-index: 10;
+    display: flex;
+    justify-content: space-between;
+}
+.total-panel .panel-item .item-wave {
+    position: absolute;
+    left: 0px;
+    right: 0px;
+    bottom: 0px;
+    width: 100%;
+    height: auto;
+    z-index: 9;
+    top: 0;
+}
+.total-panel .panel-item .item-wave img {
+    width: 100%;
+    height: 100%;
+}
+.total-panel .panel-item .title{
+    font-size: 14px;
+    color: rgb(51, 51, 51);
+    margin-bottom: 18px;
+    font-weight: 500;
+}
+.total-panel .panel-item .number{
+    font-size: 26px;
+    margin-bottom: 7px;
+    font-weight: 700;
+    color: rgb(51, 51, 51);
+}
+.total-panel .panel-item .desc{
+    font-size: 13px;
+    color: rgb(102, 102, 102);
+}
+.total-panel .panel-item .number span{
+    font-size: 16px;
+    font-weight: normal;
+}
+.panel-line{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 100%;
+}
+.panel-line span{
+    width: 1px;
+    background-color: #f0f0f0;
+    height: 60%;
+    display: block;
+}
+.card-news{
+    background-color: #fff;
+    padding: 20px;
+    border-radius: 5px;
+    position: relative;
+}
+.news-title{
+    font-size: 16px;
+    color: #000;
+    font-weight: bold;
+    margin-bottom: 10px;
+    display: flex;
+    align-items: center;
+}
+.news-title .title-open{
+    margin-left: auto;
+    margin-right: 0;
+    font-size: 12px;
+    font-weight: normal;
+    color: #666;
+    display: flex;
+    align-items: center;
+}
+.news-title .title-open .name{
+    margin-right: 10px;
+}
+.news-title::before{
+    content: "";
+    width: 4px;
+    height: 16px;
+    display: block;
+    background-color: var(--el-color-primary);;
+    margin-right: 8px;
+}
+.date-title{display:flex; align-items:center;line-height:40px;position: relative;}
+.date-title .dot{
+    width: 5px;
+    height: 5px;
+    background: var(--el-color-primary);
+    border-radius: 100%;
+    margin-right: 10px;
+}
+.date-time{
+    font-size: 12px;
+    color: #666;
+    margin-left: auto;
+    margin-right: 0;
+}
+</style>

+ 11 - 0
src/views/manage/task/lists/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style>
+
+</style>

+ 11 - 0
src/views/manage/task/ranking/index.vue

@@ -0,0 +1,11 @@
+<template>
+
+</template>
+
+<script>
+
+</script>
+
+<style>
+
+</style>

+ 0 - 281
src/views/merchant/components/agent.vue

@@ -1,281 +0,0 @@
-<!--
- * @Descripttion: 用户选择器
- * @version: 1.0
- * @Author: Zory
- * @Date: 2024年1月10日21:46:29
--->
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
-        <div class="main">
-            <div class="main-left">
-                <div class="main-top">
-                    <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right">
-                        <el-row :gutter="10">
-                            <el-col :span="18" :xs="12">
-                                <el-form-item label=" " prop="truename">
-                                    <el-input v-model="searchKey.truename" placeholder="请输入门店名称" clearable
-                                        :style="{width: '100%'}"></el-input>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="6" :xs="12">
-                                <el-form-item>
-                                    <div class="search-btn">
-                                        <el-button type="primary" @click="searchForm">搜索</el-button>
-                                    </div>
-                                </el-form-item>
-                            </el-col>
-                        </el-row>
-                    </el-form>
-                </div>
-                <div class="main-body-wrap" v-if="!multiple">
-                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @current-change="handleCurrentChange" highlight-current-row :row-key="getRowKeys" @sortChange="sortChange">
-                        <el-table-column width="50" fixed="left">
-                            <div class="checkbox"></div>
-                        </el-table-column>
-                        <el-table-column label="代理名称" width="150" fixed="left" prop="truename"></el-table-column>
-                        <el-table-column label="代理ID" width="150" prop="user_id"></el-table-column>
-                        <el-table-column label="登录账号" prop="truename" width="150">
-                            <template #default="scope">
-                                <span v-if="scope.row.username">{{ scope.row.username }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="手机号码" prop="mobile" width="150">
-                            <template #default="scope">
-                                <span v-if="scope.row.mobile">{{ scope.row.mobile }}</span>
-                                <span class="status-danger" v-else>-</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="到期时间" prop="vip_end" width="220"></el-table-column>
-                        <el-table-column label="最后登录" prop="advertiser_name">
-                            <el-table-column label="登录时间" prop="login_at" width="180">
-                                <template #default="scope">
-                                    {{scope.row.login_at?scope.row.login_at:'-'}}
-                                </template>
-                            </el-table-column>
-                            <el-table-column label="登录IP" prop="login_ip" width="180">
-                                <template #default="scope">
-                                    {{scope.row.login_ip?scope.row.login_ip:'-'}}
-                                </template>
-                            </el-table-column>
-                            <el-table-column label="登录次数" prop="login_num" width="180"></el-table-column>
-                        </el-table-column>
-                        <el-table-column label="注册信息" prop="advertiser_name">
-                            <el-table-column label="注册时间" prop="create_at" width="180"></el-table-column>
-                            <el-table-column label="注册IP" prop="create_ip" width="180"></el-table-column>
-                        </el-table-column>
-                        <el-table-column label="状态" prop="status" 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-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
-                            </template>
-                        </el-table-column>
-                    </scTable>
-                </div>
-                <div class="main-body-wrap" v-else>
-                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @selectionChange="selectionChange" row-key="id" @sortChange="sortChange">
-                        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
-                        <el-table-column label="代理名称" width="150" fixed="left" prop="truename"></el-table-column>
-                        <el-table-column label="代理ID" width="150" prop="user_id"></el-table-column>
-                        <el-table-column label="登录账号" prop="truename" width="150">
-                            <template #default="scope">
-                                <span v-if="scope.row.username">{{ scope.row.username }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="手机号码" prop="mobile" width="150">
-                            <template #default="scope">
-                                <span v-if="scope.row.mobile">{{ scope.row.mobile }}</span>
-                                <span class="status-danger" v-else>-</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="到期时间" prop="vip_end" width="220"></el-table-column>
-                        <el-table-column label="最后登录" prop="advertiser_name">
-                            <el-table-column label="登录时间" prop="login_at" width="180">
-                                <template #default="scope">
-                                    {{scope.row.login_at?scope.row.login_at:'-'}}
-                                </template>
-                            </el-table-column>
-                            <el-table-column label="登录IP" prop="login_ip" width="180">
-                                <template #default="scope">
-                                    {{scope.row.login_ip?scope.row.login_ip:'-'}}
-                                </template>
-                            </el-table-column>
-                            <el-table-column label="登录次数" prop="login_num" width="180"></el-table-column>
-                        </el-table-column>
-                        <el-table-column label="注册信息" prop="advertiser_name">
-                            <el-table-column label="注册时间" prop="create_at" width="180"></el-table-column>
-                            <el-table-column label="注册IP" prop="create_ip" width="180"></el-table-column>
-                        </el-table-column>
-                        <el-table-column label="状态" prop="status" 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-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
-                            </template>
-                        </el-table-column>
-                    </scTable>
-                </div>
-            </div>
-        </div>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">确 定</el-button>
-		</template>
-    </el-dialog>
-</template>
-
-<script>
-export default{
-    emits: ['success', 'closed'],
-    props: {
-        multiple: { type: Boolean, default: false },
-    },
-    data(){
-        return {
-            loading: false,
-            mode:"add",
-            titleMap:{
-                add:"选择代理",
-                edit:"选择代理"
-            },
-            list: {
-                apiObj: this.$API.user.list
-            },
-            visible: false,
-            isSaveing: false,
-            formData:{},
-            searchKey:{"type":2},
-            selectData:[]
-        }
-    },
-    methods:{
-        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 ;
-        },
-        submit(){
-            if (this.selectData.length == 0)
-            {
-                return this.$message.error("请选择数据");
-            }
-            this.isSaveing = false;
-            this.visible = false;
-            if (this.multiple){
-                this.$emit('success', this.selectData);
-            } else {
-                this.$emit('success', this.selectData[0]);
-            }
-        },
-        getRowKeys(data){
-            return data.id;
-        },
-        clearAll(){
-            this.selectData = [];
-        },
-        removeUser(index,name){
-            this.selectData.splice(index, 1);
-            console.log(name)
-        },
-        handleCurrentChange(data){
-            this.selectData = [data];
-        },
-        selectionChange(data){
-            this.selectData = data;
-        },
-        searchForm(){
-            this.$refs.table.upData(this.searchKey)
-        },
-        fristName(name){
-            return name.substring(0,1);
-        },
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = data;
-        },
-    }
-}
-</script>
-
-<style lang="scss" scoped>
-.main{
-    display: flex;
-    border: 1px solid #dfe1e6;
-}
-.main-left{
-    overflow: hidden;
-    flex: 1;
-    .main-body-wrap{
-        position: relative;
-        height: 380px;
-    }
-}
-.main-top{
-    position: relative;
-    padding: 10px 0;
-    border-bottom: 1px solid #dfe1e6;
-    &.is-right{
-        height:53px;
-        display:flex;
-        align-items:center;
-        padding:0 10px;
-        justify-content:space-between;
-    }
-}
-.main-body.is-right{
-    padding: 8px 16px;
-    overflow-y: auto;
-    position: relative;
-    height: calc(100% - 53px);
-    max-height: 380px;
-}
-.mx-1{
-    margin: 0 0.5rem 0.5rem 0;
-}
-.main-right{
-    flex: 0.4;
-}
-.el-form-item--default{
-    margin-bottom: 0;
-}
-.checkbox{
-    border:1px solid #dfe1e6;
-    width: 14px;
-    height: 14px;
-    border-radius: 2px;
-    background-color: #fff;
-    cursor: pointer;
-    position:relative
-}
-.current-row .checkbox{
-    background-color: var(--el-color-primary);
-    border-color: var(--el-color-primary);
-}
-.current-row .checkbox:after{
-    transform: rotate(45deg) scaleY(1);
-    box-sizing: content-box;
-    content: "";
-    border: 1px solid #fff;
-    border-left: 0;
-    border-top: 0;
-    height: 7px;
-    left: 4px;
-    position: absolute;
-    top: 1px;
-    width: 3px;
-    transition: transform .15s ease-in 50ms;
-    transform-origin: center;
-}
-</style>

+ 0 - 263
src/views/merchant/components/print.vue

@@ -1,263 +0,0 @@
-<!--
- * @Descripttion: 用户选择器
- * @version: 1.0
- * @Author: Zory
- * @Date: 2024年1月10日21:46:29
--->
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
-        <div class="main">
-            <div class="main-left">
-                <div class="main-top">
-                    <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right">
-                        <el-row :gutter="10">
-                            <el-col :span="18" :xs="12">
-                                <el-form-item label=" " prop="name">
-                                    <el-input v-model="searchKey.name" placeholder="请输入名称" clearable
-                                        :style="{width: '100%'}"></el-input>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="6" :xs="12">
-                                <el-form-item>
-                                    <div class="search-btn">
-                                        <el-button type="primary" @click="searchForm">搜索</el-button>
-                                    </div>
-                                </el-form-item>
-                            </el-col>
-                        </el-row>
-                    </el-form>
-                </div>
-                <div class="main-body-wrap" v-if="!multiple">
-                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @current-change="handleCurrentChange" highlight-current-row :row-key="getRowKeys" @sortChange="sortChange">
-                        <el-table-column width="50" fixed="left">
-                            <div class="checkbox"></div>
-                        </el-table-column>
-                        <el-table-column label="序列号" prop="sn" width="220" fixed="left">
-                            <template #default="scope">
-                                <span v-if="scope.row.sn">{{ scope.row.sn }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="打印机名称" prop="name" width="220">
-                            <template #default="scope">
-                                <span v-if="scope.row.name">{{ scope.row.name }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="设备状态" prop="device_state" width="160">
-                            <template #default="scope">
-                                <div class="status-success" v-if="scope.row.device_state==0"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
-                                <div class="status-danger" v-if="scope.row.device_state==1"><sc-status-indicator type="danger"></sc-status-indicator> 开盖</div>
-                                <div class="status-info" v-if="scope.row.device_state==2"><sc-status-indicator type="info"></sc-status-indicator> 粘纸</div>
-                                <div class="status-info" v-if="scope.row.device_state==3"><sc-status-indicator type="info"></sc-status-indicator> 缺纸</div>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="在线状态" prop="status" width="160">
-                            <template #default="scope">
-                                <div class="status-success" v-if="scope.row.online=='ONLINE'"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
-                                <div class="status-danger" v-if="scope.row.online=='OFFLINE'"><sc-status-indicator type="danger"></sc-status-indicator> 离线</div>
-                                <div class="status-info" v-if="scope.row.online=='UNACTIVE'"><sc-status-indicator type="info"></sc-status-indicator> 未激活</div>
-                                <div class="status-info" v-if="scope.row.online=='DISABLE'"><sc-status-indicator type="info"></sc-status-indicator> 已禁用</div>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
-                    </scTable>
-                </div>
-                <div class="main-body-wrap" v-else>
-                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @selectionChange="selectionChange" row-key="id" @sortChange="sortChange">
-                        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
-                        <el-table-column label="序列号" prop="sn" width="220" fixed="left">
-                            <template #default="scope">
-                                <span v-if="scope.row.sn">{{ scope.row.sn }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="打印机名称" prop="name" width="220">
-                            <template #default="scope">
-                                <span v-if="scope.row.name">{{ scope.row.name }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="设备状态" prop="device_state" width="160">
-                            <template #default="scope">
-                                <div class="status-success" v-if="scope.row.device_state==0"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
-                                <div class="status-danger" v-if="scope.row.device_state==1"><sc-status-indicator type="danger"></sc-status-indicator> 开盖</div>
-                                <div class="status-info" v-if="scope.row.device_state==2"><sc-status-indicator type="info"></sc-status-indicator> 粘纸</div>
-                                <div class="status-info" v-if="scope.row.device_state==3"><sc-status-indicator type="info"></sc-status-indicator> 缺纸</div>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="在线状态" prop="status" width="160">
-                            <template #default="scope">
-                                <div class="status-success" v-if="scope.row.online=='ONLINE'"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
-                                <div class="status-danger" v-if="scope.row.online=='OFFLINE'"><sc-status-indicator type="danger"></sc-status-indicator> 离线</div>
-                                <div class="status-info" v-if="scope.row.online=='UNACTIVE'"><sc-status-indicator type="info"></sc-status-indicator> 未激活</div>
-                                <div class="status-info" v-if="scope.row.online=='DISABLE'"><sc-status-indicator type="info"></sc-status-indicator> 已禁用</div>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
-                    </scTable>
-                </div>
-            </div>
-        </div>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">确 定</el-button>
-		</template>
-    </el-dialog>
-</template>
-
-<script>
-export default{
-    emits: ['success', 'closed'],
-    props: {
-        multiple: { type: Boolean, default: false },
-    },
-    data(){
-        return {
-            loading: false,
-            mode:"add",
-            titleMap:{
-                add:"选择打印机",
-                edit:"选择打印机"
-            },
-            list: {
-                apiObj: this.$API.merPrint.list
-            },
-            visible: false,
-            isSaveing: false,
-            formData:{},
-            searchKey:{},
-            selectData:[]
-        }
-    },
-    methods:{
-        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 ;
-        },
-        submit(){
-            if (this.selectData.length == 0)
-            {
-                return this.$message.error("请选择数据");
-            }
-            this.isSaveing = false;
-            this.visible = false;
-            if (this.multiple){
-                this.$emit('success', this.selectData);
-            } else {
-                this.$emit('success', this.selectData[0]);
-            }
-        },
-        getRowKeys(data){
-            return data.id;
-        },
-        clearAll(){
-            this.selectData = [];
-        },
-        removeUser(index,name){
-            this.selectData.splice(index, 1);
-            console.log(name)
-        },
-        handleCurrentChange(data){
-            this.selectData = [data];
-        },
-        selectionChange(data){
-            this.selectData = data;
-        },
-        searchForm(){
-            this.$refs.table.upData(this.searchKey)
-        },
-        fristName(name){
-            return name.substring(0,1);
-        },
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = data;
-        },
-    }
-}
-</script>
-
-<style lang="scss" scoped>
-.main{
-    display: flex;
-    border: 1px solid #dfe1e6;
-}
-.main-left{
-    overflow: hidden;
-    flex: 1;
-    .main-body-wrap{
-        position: relative;
-        height: 380px;
-    }
-}
-.main-top{
-    position: relative;
-    padding: 10px 0;
-    border-bottom: 1px solid #dfe1e6;
-    &.is-right{
-        height:53px;
-        display:flex;
-        align-items:center;
-        padding:0 10px;
-        justify-content:space-between;
-    }
-}
-.main-body.is-right{
-    padding: 8px 16px;
-    overflow-y: auto;
-    position: relative;
-    height: calc(100% - 53px);
-    max-height: 380px;
-}
-.mx-1{
-    margin: 0 0.5rem 0.5rem 0;
-}
-.main-right{
-    flex: 0.4;
-}
-.el-form-item--default{
-    margin-bottom: 0;
-}
-.checkbox{
-    border:1px solid #dfe1e6;
-    width: 14px;
-    height: 14px;
-    border-radius: 2px;
-    background-color: #fff;
-    cursor: pointer;
-    position:relative
-}
-.current-row .checkbox{
-    background-color: var(--el-color-primary);
-    border-color: var(--el-color-primary);
-}
-.current-row .checkbox:after{
-    transform: rotate(45deg) scaleY(1);
-    box-sizing: content-box;
-    content: "";
-    border: 1px solid #fff;
-    border-left: 0;
-    border-top: 0;
-    height: 7px;
-    left: 4px;
-    position: absolute;
-    top: 1px;
-    width: 3px;
-    transition: transform .15s ease-in 50ms;
-    transform-origin: center;
-}
-</style>

+ 0 - 253
src/views/merchant/components/store.vue

@@ -1,253 +0,0 @@
-<!--
- * @Descripttion: 用户选择器
- * @version: 1.0
- * @Author: Zory
- * @Date: 2024年1月10日21:46:29
--->
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
-        <div class="main">
-            <div class="main-left">
-                <div class="main-top">
-                    <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right">
-                        <el-row :gutter="10">
-                            <el-col :span="18" :xs="12">
-                                <el-form-item label=" " prop="name">
-                                    <el-input v-model="searchKey.name" placeholder="请输入店铺名称" clearable
-                                        :style="{width: '100%'}"></el-input>
-                                </el-form-item>
-                            </el-col>
-                            <el-col :span="6" :xs="12">
-                                <el-form-item>
-                                    <div class="search-btn">
-                                        <el-button type="primary" @click="searchForm">搜索</el-button>
-                                    </div>
-                                </el-form-item>
-                            </el-col>
-                        </el-row>
-                    </el-form>
-                </div>
-                <div class="main-body-wrap" v-if="!multiple">
-                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @current-change="handleCurrentChange" highlight-current-row :row-key="getRowKeys" @sortChange="sortChange">
-                        <el-table-column width="50" fixed="left">
-                            <div class="checkbox"></div>
-                        </el-table-column>
-                        <el-table-column label="店铺名称" width="200" fixed="left" prop="store_name"></el-table-column>
-                        <el-table-column label="账户ID" prop="store_id" width="200"></el-table-column>
-                        <el-table-column label="物品名称" prop="express_goods" width="150"></el-table-column>
-                        <el-table-column label="物品单位" prop="express_unit" width="150"></el-table-column>
-                        <el-table-column label="发货地址" prop="express_address" width="260"></el-table-column>
-                        <el-table-column label="联系人" prop="express_name" width="150">
-                            <template #default="scope">
-                                <span v-if="scope.row.express_name">{{ scope.row.express_name }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="联系电话" prop="express_mobile" width="150">
-                            <template #default="scope">
-                                <span v-if="scope.row.express_mobile">{{ scope.row.express_mobile }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="状态" prop="status" 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-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
-                    </scTable>
-                </div>
-                <div class="main-body-wrap" v-else>
-                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @selectionChange="selectionChange" row-key="id" @sortChange="sortChange">
-                        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
-                        <el-table-column label="店铺名称" width="200" fixed="left" prop="store_name"></el-table-column>
-                        <el-table-column label="账户ID" prop="store_id" width="200"></el-table-column>
-                        <el-table-column label="物品名称" prop="express_goods" width="150"></el-table-column>
-                        <el-table-column label="物品单位" prop="express_unit" width="150"></el-table-column>
-                        <el-table-column label="发货地址" prop="express_address" width="260"></el-table-column>
-                        <el-table-column label="联系人" prop="express_name" width="150">
-                            <template #default="scope">
-                                <span v-if="scope.row.express_name">{{ scope.row.express_name }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="联系电话" prop="express_mobile" width="150">
-                            <template #default="scope">
-                                <span v-if="scope.row.express_mobile">{{ scope.row.express_mobile }}</span>
-                                <span class="status-danger" v-else>未设置</span>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="状态" prop="status" 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-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
-                            </template>
-                        </el-table-column>
-                        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
-                    </scTable>
-                </div>
-            </div>
-        </div>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">确 定</el-button>
-		</template>
-    </el-dialog>
-</template>
-
-<script>
-export default{
-    emits: ['success', 'closed'],
-    props: {
-        multiple: { type: Boolean, default: false },
-    },
-    data(){
-        return {
-            loading: false,
-            mode:"add",
-            titleMap:{
-                add:"选择店铺",
-                edit:"选择店铺"
-            },
-            list: {
-                apiObj: this.$API.merStore.list
-            },
-            visible: false,
-            isSaveing: false,
-            formData:{},
-            searchKey:{},
-            selectData:[]
-        }
-    },
-    methods:{
-        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 ;
-        },
-        submit(){
-            if (this.selectData.length == 0)
-            {
-                return this.$message.error("请选择数据");
-            }
-            this.isSaveing = false;
-            this.visible = false;
-            if (this.multiple){
-                this.$emit('success', this.selectData);
-            } else {
-                this.$emit('success', this.selectData[0]);
-            }
-        },
-        getRowKeys(data){
-            return data.id;
-        },
-        clearAll(){
-            this.selectData = [];
-        },
-        removeUser(index,name){
-            this.selectData.splice(index, 1);
-            console.log(name)
-        },
-        handleCurrentChange(data){
-            this.selectData = [data];
-        },
-        selectionChange(data){
-            this.selectData = data;
-        },
-        searchForm(){
-            this.$refs.table.upData(this.searchKey)
-        },
-        fristName(name){
-            return name.substring(0,1);
-        },
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = data;
-        },
-    }
-}
-</script>
-
-<style lang="scss" scoped>
-.main{
-    display: flex;
-    border: 1px solid #dfe1e6;
-}
-.main-left{
-    overflow: hidden;
-    flex: 1;
-    .main-body-wrap{
-        position: relative;
-        height: 380px;
-    }
-}
-.main-top{
-    position: relative;
-    padding: 10px 0;
-    border-bottom: 1px solid #dfe1e6;
-    &.is-right{
-        height:53px;
-        display:flex;
-        align-items:center;
-        padding:0 10px;
-        justify-content:space-between;
-    }
-}
-.main-body.is-right{
-    padding: 8px 16px;
-    overflow-y: auto;
-    position: relative;
-    height: calc(100% - 53px);
-    max-height: 380px;
-}
-.mx-1{
-    margin: 0 0.5rem 0.5rem 0;
-}
-.main-right{
-    flex: 0.4;
-}
-.el-form-item--default{
-    margin-bottom: 0;
-}
-.checkbox{
-    border:1px solid #dfe1e6;
-    width: 14px;
-    height: 14px;
-    border-radius: 2px;
-    background-color: #fff;
-    cursor: pointer;
-    position:relative
-}
-.current-row .checkbox{
-    background-color: var(--el-color-primary);
-    border-color: var(--el-color-primary);
-}
-.current-row .checkbox:after{
-    transform: rotate(45deg) scaleY(1);
-    box-sizing: content-box;
-    content: "";
-    border: 1px solid #fff;
-    border-left: 0;
-    border-top: 0;
-    height: 7px;
-    left: 4px;
-    position: absolute;
-    top: 1px;
-    width: 3px;
-    transition: transform .15s ease-in 50ms;
-    transform-origin: center;
-}
-</style>

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

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

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

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

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

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

+ 0 - 42
src/views/merchant/member/analysis/components/search.vue

@@ -1,42 +0,0 @@
-<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 :span="this.$store.state.global.ismobile?12:8">
-                            <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>
-</template>
-
-<script>
-export default {
-    props: {
-        status: { type: String, default: "1" },
-    },
-    data(){
-        return {
-            searchKey:{
-                ex_status:this.status
-            }
-        }
-    },
-    methods: {
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 86
src/views/merchant/member/analysis/components/table.vue

@@ -1,86 +0,0 @@
-<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="订单编号" prop="order_sn">
-            <template #default="scope">
-                {{scope.row.order_sn}}
-            </template>
-        </el-table-column>
-        <el-table-column label="套餐信息" prop="time">
-            <template #default="scope">
-                续费<span class="status-danger">{{scope.row.time}}天</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="套餐金额" prop="money">
-            <template #default="scope">
-                {{ scope.row.money }}元
-            </template>
-        </el-table-column>
-        <el-table-column label="支付状态" prop="certificate_id">
-            <template #default="scope">
-                <div class="status-danger" v-if="scope.row.status==0"><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>
-            </template>
-        </el-table-column>
-        <el-table-column label="支付时间" prop="pay_at">
-            <template #default="scope">
-                {{ scope.row.pay_at?scope.row.pay_at:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="create_at">
-            <template #default="scope">
-                {{ scope.row.create_at }}
-            </template>
-        </el-table-column>
-    </scTable>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mRenew.list
-            },
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{
-                type:this.type
-            }
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>

+ 0 - 108
src/views/merchant/member/analysis/index.vue

@@ -1,108 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search" style="border-bottom: 0;">
-            <el-card shadow="never" class="borderNone mb10">
-                <template #header>
-                    <div class="news-title">会员卡数据</div>
-                </template>
-                <div class="user-card-body">
-                    <div class="card-item">
-                        <div class="card-num">0</div>
-                        <div class="card-tips">会员数量(个) 
-                            <el-tooltip effect="dark" content="扫描店铺二维码领取会员卡的人数">
-                                <el-icon><el-icon-question-filled /></el-icon>
-                            </el-tooltip>
-                        </div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">0</div>
-                        <div class="card-tips">充值人数(个)
-                            <el-tooltip effect="dark" content="充值会员卡的人数">
-                                <el-icon><el-icon-question-filled /></el-icon>
-                            </el-tooltip>
-                        </div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">0.00</div>
-                        <div class="card-tips">充值总金额(元)
-                            <el-tooltip effect="dark" content="会员卡充值金额总和">
-                                <el-icon><el-icon-question-filled /></el-icon>
-                            </el-tooltip>
-                        </div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">0.00</div>
-                        <div class="card-tips">剩余余额(元)
-                            <el-tooltip effect="dark" content="会员卡剩余余额总和">
-                                <el-icon><el-icon-question-filled /></el-icon>
-                            </el-tooltip>
-                        </div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">0.00</div>
-                        <div class="card-tips">历史总金额(元)
-                            <el-tooltip effect="dark" content="历史总金额 = 历史的会员充值金额总和 + 充值后的赠送金额总和">
-                                <el-icon><el-icon-question-filled /></el-icon>
-                            </el-tooltip>
-                        </div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">0.00</div>
-                        <div class="card-tips">剩余额度(元)
-                            <el-tooltip effect="dark">
-                                <template #content> 店铺会员卡剩余可充值余额=会员卡额度-会员总余额。<br />剩余余额为0时,会员卡将不能充值,<br />需提升额度或会员卡金额消费后才能充值</template>
-                                <el-icon><el-icon-question-filled /></el-icon>
-                            </el-tooltip>
-                        </div>
-                    </div>
-                </div>
-            </el-card>
-            <search @success="handleSuccess"></search>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull"></tablePage>
-            </div>
-        </el-main>
-    </el-container>
-</template>
-
-<script>
-import tablePage from './components/table';
-import search from './components/search';
-export default {
-    components: {
-        tablePage,search
-    },
-    data() {
-        return {
-            
-        }
-    },
-}
-</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-tips{font-size: 12px;color: #666;display: flex;align-items: center;}
-.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{
-    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;
-}
-</style>

+ 0 - 50
src/views/merchant/member/index/components/option.vue

@@ -1,50 +0,0 @@
-<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(2)">新增员工账号</el-button>
-                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
-            </div>
-        </div>
-    </fieldset>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            var resp = await this.$API.mStaff.batch.post(submitData);
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.$emit("success");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(type){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-    }
-}
-</script>

+ 0 - 42
src/views/merchant/member/index/components/search.vue

@@ -1,42 +0,0 @@
-<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-input v-model="searchKey.orderid" placeholder="会员卡号" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
-                                <template #prepend>会员卡号</template>
-                            </el-input>
-                        </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>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 90
src/views/merchant/member/index/components/table.vue

@@ -1,90 +0,0 @@
-<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="会员ID" prop="openid" width="220" fixed="left"></el-table-column>
-        <el-table-column label="会员卡号" prop="card_no"></el-table-column>
-        <el-table-column label="总充值金额" prop="money">
-            <template #default="scope">
-                <el-tag>{{ $TOOL.money(scope.row.total_balance) }}</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="累计消费" prop="money">
-            <template #default="scope">
-                <el-tag>{{ $TOOL.money(scope.row.total_consume) }}</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="账户余额" prop="money">
-            <template #default="scope">
-                <el-tag>{{ $TOOL.money(scope.row.balance) }}</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="加入时间" prop="create_at" width="180"></el-table-column>
-        <el-table-column label="操作" width="160" align="right" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <el-button text type="warning" size="small" @click="table_edit(scope.row)">详情</el-button>
-                    <el-popconfirm title="确定要退款吗?" @confirm="table_del(scope.row, scope.$index)" v-if="scope.row.status > 0">
-                        <template #reference>
-                            <el-button text type="danger" size="small">退款</el-button>
-                        </template>
-                    </el-popconfirm>                    
-                </el-button-group>
-            </template>
-        </el-table-column>
-    </scTable>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mUser.list
-            },
-            status: ['待支付','待打印', '打印失败', '已打印','申请退款','退款失败','已退款'],
-            ostatus: ['-','店内打印', '远程自取', '商家配送'],
-            payStatus:['-','微信','会员卡'],
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>
-
-<style>
-.price{display: flex;align-items: center;}
-.del{text-decoration: line-through;margin-left: 5px;color: #f00;}
-</style>

+ 0 - 85
src/views/merchant/member/index/index.vue

@@ -1,85 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search" style="border-bottom: 0;">
-            <search @success="handleSuccess"></search>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" @total="orderTotal"></tablePage>
-            </div>
-        </el-main>
-    </el-container>
-</template>
-
-<script>
-import search from './components/search';
-import tablePage from './components/table';
-import scStatistic from '@/components/scStatistic';
-export default {
-    components: {
-        search,tablePage,scStatistic
-    },
-    data(){
-        return {
-            totalLoading:true,
-            searchKey:{},
-            dataSelect:[],
-            dataSelectFull:[],
-            totalData:{},
-            searchData:null
-        }
-    },
-    methods: {
-        orderTotal(data,searchKey){
-            this.totalLoading = false;
-            this.totalData = data;
-            if (searchKey.create) {
-                var start = this.$TOOL.dateFormat(searchKey.create[0], "yyyy-MM-dd");
-                var end = this.$TOOL.dateFormat(searchKey.create[1], "yyyy-MM-dd");
-                this.searchData = start+"-"+end;
-            }
-        },
-        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>
-.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;}
-.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{
-    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>

+ 0 - 108
src/views/merchant/member/recharge/index.vue

@@ -1,108 +0,0 @@
-<template>
-    <el-container>
-        <el-main>
-            <el-card shadow="never" header="充值套餐设置" class="borderNone" v-loading="loadingState">
-                <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
-                    <el-form-item label="功能开关" prop="state">
-                        <el-radio-group v-model="formData.state">
-                            <el-radio border :label="1">默认套餐</el-radio>
-                            <el-radio border :label="2">自定义套餐</el-radio>
-                            <el-radio border :label="3">关闭</el-radio>
-                        </el-radio-group>
-                        <div class="el-form-item-msg">关闭后,整个门店将不支持会员卡支付</div>
-                    </el-form-item>
-                    <template v-if="formData.state==1">
-                        <fieldset class="layui-elem-field">
-                            <legend><el-tag type="success" size="large">小提示</el-tag></legend>
-                            <div class="font-s14">
-                                90%的店铺都在使用
-                            </div>
-                        </fieldset>
-                        <el-row :gutter="15" class="">
-                            <el-col :span="12" class="" v-for="(item,index) in systemData" :key="index">
-                                <fieldset class="layui-elem-field">
-                                    <legend><el-tag type="success" size="large">{{item.name}}</el-tag></legend>
-                                    <div class="form-flex">充值¥<el-tag type="warning" size="large">{{item.money}}</el-tag>元,送¥<el-tag type="warning" size="large">{{item.old_money}}</el-tag>元</div>
-                                </fieldset>
-                            </el-col>
-                        </el-row>
-                    </template>
-                    <template v-if="formData.state==2">
-                        <fieldset class="layui-elem-field">
-                            <legend><el-tag type="success" size="large">小提示</el-tag></legend>
-                            <div class="font-s14 color-red">
-                                首充金额及首充赠送金额不超过50元,其他套餐赠送比例不超过50%
-                            </div>
-                        </fieldset>
-                        <el-row :gutter="15" class="">
-                            <el-col :span="12" class="" v-for="(item,index) in shopData" :key="index">
-                                <fieldset class="layui-elem-field">
-                                    <legend><el-tag type="success" size="large">{{item.name}}</el-tag></legend>
-                                    <div class="form-flex">充值¥<el-input v-model="item.money" style="width: 120px" autosize><template #append>元</template></el-input>送¥<el-input v-model="item.old_money" autosize style="width: 140px"><template #append>元</template></el-input></div>
-                                </fieldset>
-                            </el-col>
-                        </el-row>
-                    </template>
-                </el-form>
-            </el-card>
-            <!-- <el-card shadow="never" header="宣传物料下载" class="borderNone mt10" v-loading="loadingState"></el-card> -->
-        </el-main>
-        <el-footer>
-            <el-button type="primary" size="large" :loading="isSaveing" @click="saveForm">保存</el-button>
-        </el-footer>
-    </el-container>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            loadingState:false,
-            formData:{},
-            systemData:[],
-            shopData:[],
-            rules:{
-                state: [
-                    {required: true, message: '请选择'}
-                ],
-            },
-            isSaveing:false
-        }
-    },
-    mounted(){
-        this.getData()
-    },
-    methods: {
-        async saveForm(){
-            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
-            if(!validate){ return false }
-            this.isSaveing = true;
-            let submitData = JSON.parse(JSON.stringify(this.formData));
-            if (submitData.state == 2) {
-                submitData.shop = this.shopData;
-            }
-            var resp = await this.$API.mMember.combo.post(submitData);
-            this.isSaveing = false;
-            if (resp.code !== 1) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-        },
-        async getData(){
-            var resp = await this.$API.mMember.combo.get();
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg)
-            }
-            this.formData.state = resp.data.state;
-            this.systemData = resp.data.system;
-            this.shopData = resp.data.shop;
-        }
-    }
-}
-</script>
-
-<style>
-.font-s14{font-size: 14px;}
-.color-red{color: #f00;}
-.form-flex{font-size: 14px;display: flex;align-items: center;gap: 10px;}
-</style>

+ 0 - 49
src/views/merchant/member/record/components/search.vue

@@ -1,49 +0,0 @@
-<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-input v-model="searchKey.orderid" 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.type" 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-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>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 93
src/views/merchant/member/record/components/table.vue

@@ -1,93 +0,0 @@
-<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="会员ID" prop="openid" width="220" fixed="left"></el-table-column>
-        <el-table-column label="会员卡号" prop="card_no">
-            <template #default="scope">
-                {{ scope.row.card_no?scope.row.card_no:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="订单编号" prop="order_sn">
-            <template #default="scope">
-                {{ scope.row.order_sn?scope.row.order_sn:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="类型" prop="type">
-            <template #default="scope">
-                <el-tag type="error" v-if="scope.row.type == 1">支出</el-tag>
-                <el-tag type="success" v-if="scope.row.type == 2">收入</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="金额" prop="money">
-            <template #default="scope">
-                ¥{{ scope.row.money }}
-            </template>
-        </el-table-column>
-        <el-table-column label="余额" prop="money">
-            <template #default="scope">
-                {{ $TOOL.money(scope.row.balance) }}
-            </template>
-        </el-table-column>
-        <el-table-column label="其他" prop="order_sn" width="220">
-            <template #default="scope">
-                {{ scope.row.remark?scope.row.remark:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="时间" prop="create_at" width="180"></el-table-column>
-    </scTable>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mUser.log
-            },
-            status: ['待支付','待打印', '打印失败', '已打印','申请退款','退款失败','已退款'],
-            ostatus: ['-','店内打印', '远程自取', '商家配送'],
-            payStatus:['-','微信','会员卡'],
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>
-
-<style>
-.price{display: flex;align-items: center;}
-.del{text-decoration: line-through;margin-left: 5px;color: #f00;}
-</style>

+ 0 - 84
src/views/merchant/member/record/index.vue

@@ -1,84 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search" style="border-bottom: 0;">
-            <search @success="handleSuccess"></search>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" @total="orderTotal"></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:true,
-            searchKey:{},
-            dataSelect:[],
-            dataSelectFull:[],
-            totalData:{},
-            searchData:null
-        }
-    },
-    methods: {
-        orderTotal(data,searchKey){
-            this.totalLoading = false;
-            this.totalData = data;
-            if (searchKey.create) {
-                var start = this.$TOOL.dateFormat(searchKey.create[0], "yyyy-MM-dd");
-                var end = this.$TOOL.dateFormat(searchKey.create[1], "yyyy-MM-dd");
-                this.searchData = start+"-"+end;
-            }
-        },
-        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>
-.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;}
-.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{
-    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>

+ 0 - 166
src/views/merchant/order/index/components/detail.vue

@@ -1,166 +0,0 @@
-<template>
-    <el-drawer :title="titleMap[mode]" :append-to-body="true" v-model="visible" :size="1000" destroy-on-close :close-on-click-modal="false" @closed="$emit('closed')" :with-header="false">
-        <el-container class="flex-column" v-loading="loading">
-            <div class="drawer-detail-main">
-                <div class="drawer-detail-header">
-                    <div class="drawer-detail-header-body">
-                        <div class="drawer-detail-header-left">{{titleMap[mode]}} <span class="tips">{{ formData.order_sn }}</span></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-descriptions :column="3" size="large" direction="vertical" border>
-                    <el-descriptions-item>
-                        <template #label>订单编号</template>{{ formData.order_sn }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>下单用户</template>{{ formData.openid }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>取件号</template>{{ formData.package_sn }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>取件方式</template>{{ ostatus[formData.package] }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>订单状态</template>{{ status[formData.status] }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>打印机</template>{{ formData.print_name }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>下单时间</template>{{ formData.create_at }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>支付时间</template>{{ formData.pay_at?formData.pay_at:'-' }} <template v-if="formData.pay_at"><el-tag type="success">{{ payStatus[formData.pay_type] }}</el-tag></template>
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>失败原因</template>{{ formData.reason?formData.reason:'-' }}
-                    </el-descriptions-item>
-                </el-descriptions>
-                <el-descriptions :column="2" size="large" direction="vertical" class="mt10" border>
-                    <el-descriptions-item>
-                        <template #label>支付金额(元)</template> 
-                        <div class="price" v-if="formData.money > formData.discount">
-                            {{ $TOOL.money(formData.discount) }}
-                            <div class="del">{{ $TOOL.money(formData.money) }}</div>
-                        </div>
-                        <div class="price" v-else>
-                            {{ $TOOL.money(formData.money) }}
-                        </div>
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>含配送费(元)</template>{{ $TOOL.money(formData.express_money) }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>优惠券金额(元)</template>{{ $TOOL.money(formData.coupon_money) }}
-                    </el-descriptions-item>
-                    <el-descriptions-item>
-                        <template #label>整单装订总价(元)</template>{{ $TOOL.money(formData.staple_money) }}
-                    </el-descriptions-item>
-                </el-descriptions>
-                <el-table :data="tableData" style="width: 100%" border class="mt10">
-                    <el-table-column label="文件名" prop="name" width="260" fixed="left"></el-table-column>
-                    <el-table-column label="状态" prop="name">
-                        <template #default="scope">
-                            <span v-if="scope.row.status==0">转码中</span>
-                            <span v-if="scope.row.status==1">待打印</span>
-                            <span v-if="scope.row.status==2">打印中</span>
-                            <span v-if="scope.row.status==3">已打印</span>
-                            <span v-if="scope.row.status==4">退款中</span>
-                            <span v-if="scope.row.status==5">退款失败</span>
-                            <span v-if="scope.row.status==6">已退款</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="页数" prop="page" align="center"></el-table-column>
-                    <el-table-column label="纸张" prop="paper_size"></el-table-column>
-                    <el-table-column label="颜色" prop="name">
-                        <template #default="scope">
-                            <el-tag>{{ scope.row.color==1?'彩色':'黑白' }}</el-tag>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="单双面" prop="name">
-                        <template #default="scope">
-                            <el-tag>{{ scope.row.duplex==1?'单面':'双面' }}</el-tag>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="打印范围" prop="name" align="center">
-                        <template #default="scope">
-                            {{ scope.row.start_page }} - {{ scope.row.end_page }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="份数" prop="number" align="center"></el-table-column>
-                    <el-table-column label="装订方式" prop="name">
-                        <template #default="scope">
-                            不装订
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="订单金额" prop="name">
-                        <template #default="scope">
-                            {{ $TOOL.money(scope.row.money) }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="操作" width="120" align="right" fixed="right">
-                        <template #default="scope">
-                            <el-button-group>
-                                <el-button text type="warning" size="small" @click="table_edit(scope.row)">预览/下载</el-button>
-                                <!-- <el-popconfirm title="确定要退款吗?" @confirm="table_del(scope.row, scope.$index)" v-if="scope.row.status > 0">
-                                    <template #reference>
-                                        <el-button text type="danger" size="small">退款</el-button>
-                                    </template>
-                                </el-popconfirm>                     -->
-                            </el-button-group>
-                        </template>
-                    </el-table-column>
-                </el-table>
-            </el-main>
-            <el-footer style="text-align: right;">
-                <el-button @click="visible=false" >关闭</el-button>
-            </el-footer>
-        </el-container>
-    </el-drawer>
-</template>
-
-<script>
-export default {
-    data() {
-        return {
-            loading: false,
-            mode: "add",
-            titleMap: {
-                add: "新增渠道",
-                edit: "订单详情"
-            },
-            status: ['待支付','待打印', '打印失败', '已打印','申请退款','退款失败','已退款'],
-            ostatus: ['-','店内打印', '远程自取', '商家配送'],
-            payStatus:['-','微信','会员卡'],
-            visible: false,
-            isSaveing: false,
-            formData: {},
-            rules: {},
-            tableData:[]
-        }
-    },
-    methods: {
-        open(mode = 'add') {
-            this.mode = mode;
-            this.visible = true;
-            return this;
-        },
-        //表单注入数据
-        setData(data) {
-            this.formData = data;
-            this.tableData = data.detail;
-        },
-        table_edit(data){
-            console.log(data.path)
-        }
-    }
-}
-</script>
-<style>
-.mt10{margin-top: 10px;}
-</style>

+ 0 - 50
src/views/merchant/order/index/components/option.vue

@@ -1,50 +0,0 @@
-<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(2)">新增员工账号</el-button>
-                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
-            </div>
-        </div>
-    </fieldset>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            var resp = await this.$API.mStaff.batch.post(submitData);
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.$emit("success");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(type){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-    }
-}
-</script>

+ 0 - 93
src/views/merchant/order/index/components/refund.vue

@@ -1,93 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
-        <el-form ref="dialogForm" :model="submitData" :rules="rules" label-width="100px" label-position="top">
-            <el-form-item label="订单编号">
-                <el-input v-model="formData.order_sn" readonly disabled clearable placeholder="请输入"></el-input>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="订单总金额">
-                <el-input v-model="formData.money" readonly disabled clearable placeholder="请输入">
-                    <template #append>元</template>
-                </el-input>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="退款类型" prop="type">
-                <el-radio-group v-model="submitData.type">
-                    <el-radio-button :label="item.key" v-for="(item,index) in refundType" :key="index">{{ item.name }}</el-radio-button>
-                </el-radio-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="退款金额" prop="money" v-if="submitData.type==2">
-                <el-input v-model="submitData.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" >取 消</el-button>
-			<el-button type="primary" :loading="isSaveing" @click="submit()">提交</el-button>
-		</template>
-    </el-dialog>
-</template>
-<script>
-export default {
-    components: {
-        
-    },
-    data(){
-        return {
-            refundType:[{key:1,name:"全额退款"},{key:2,name:"指定金额"}],
-            loading: false,
-            mode:"add",
-            titleMap:{
-                add:"订单退款",
-                edit:"订单退款"
-            },
-            visible: false,
-            isSaveing: false,
-            formData:{},
-            submitData:{
-                type:1
-            },
-            rules:{
-                type: [
-                    {required: true, message: '请选择'}
-                ],
-                money: [
-                    {required: true, message: '请输入'}
-                ],
-            },
-            category:[],
-            batchData:[],
-            type:1
-        }
-    },
-    methods: {
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = JSON.parse(JSON.stringify(data));
-            this.formData.money = this.$TOOL.money(this.formData.money)
-        },
-        async submit(){
-            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
-            if(!validate){ return false }
-            this.isSaveing = true;
-            var resp = await this.$API.mDiscount.save.post(this.formData);
-            this.isSaveing = false;
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.visible = false;
-            this.formData = {};
-            this.$emit("success");
-        }
-    }
-}
-</script>

+ 0 - 53
src/views/merchant/order/index/components/search.vue

@@ -1,53 +0,0 @@
-<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-input v-model="searchKey.orderid" 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="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-option value="7" 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>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 152
src/views/merchant/order/index/components/table.vue

@@ -1,152 +0,0 @@
-<template>
-    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" @dataChange="getTotal">
-        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
-        <el-table-column label="订单编号" width="200" prop="order_sn" fixed="left">
-            <template #default="scope">
-                {{scope.row.order_sn}}
-            </template>
-        </el-table-column>
-        <el-table-column label="下单用户" prop="openid" width="240"></el-table-column>
-        <el-table-column label="订单状态" prop="certificate_id" width="120">
-            <template #default="scope">
-                {{ status[scope.row.status] }}
-            </template>
-        </el-table-column>
-        <el-table-column label="订单金额" prop="money" width="120">
-            <template #default="scope">
-                <div class="price" v-if="scope.row.money > scope.row.discount">
-                    <el-tag>{{ $TOOL.money(scope.row.discount) }}</el-tag>
-                    <div class="del">{{ $TOOL.money(scope.row.money) }}</div>
-                </div>
-                <div class="price" v-else>
-                    <el-tag>{{ $TOOL.money(scope.row.money) }}</el-tag>
-                </div>
-            </template>
-        </el-table-column>
-        <el-table-column label="额外加价" prop="money" width="120">
-            <template #default="scope">
-                {{ $TOOL.money(scope.row.extra_money) }}
-            </template>
-        </el-table-column>
-        <el-table-column label="支付方式" prop="money">
-            <template #default="scope">
-                <el-tag>{{ payStatus[scope.row.pay_type] }}</el-tag>
-            </template>
-        </el-table-column>
-        <el-table-column label="打印机" prop="money" width="180">
-            <template #default="scope">
-                {{ scope.row.print_name }}
-            </template>
-        </el-table-column>
-        <el-table-column label="取件方式" prop="money" width="120">
-            <template #default="scope">
-                {{ ostatus[scope.row.package] }}
-            </template>
-        </el-table-column>
-        <el-table-column label="取件号" prop="package_sn" width="120"></el-table-column>
-        <el-table-column label="失败原因" prop="money" width="180">
-            <template #default="scope">
-                {{ scope.row.reason?scope.row.reason:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="支付时间" prop="pay_at" width="180">
-            <template #default="scope">
-                {{ scope.row.pay_at?scope.row.pay_at:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="打印时间" prop="pay_at" width="180">
-            <template #default="scope">
-                {{ scope.row.print_at?scope.row.print_at:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="create_at" width="180">
-            <template #default="scope">
-                {{ scope.row.create_at }}
-            </template>
-        </el-table-column>
-        <el-table-column label="操作" width="160" align="right" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <el-button text type="warning" size="small" @click="table_edit(scope.row)">详情</el-button>
-                    <el-button text type="danger" size="small" @click="table_del(scope.row, scope.$index)">退款</el-button>
-                    <!-- <el-popconfirm title="确定要退款吗?" @confirm="table_del(scope.row, scope.$index)" v-if="scope.row.status > 0">
-                        <template #reference>
-                            <el-button text type="danger" size="small">退款</el-button>
-                        </template>
-                    </el-popconfirm>     -->                
-                </el-button-group>
-            </template>
-        </el-table-column>
-    </scTable>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-    <refundMain ref="refundMain" @success="handleSuccess"></refundMain>
-</template>
-
-<script>
-import formMain from "./detail";
-import refundMain from "./refund";
-export default {
-    components: {
-        formMain,refundMain
-    },
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mOrder.list
-            },
-            status: ['待支付','待打印', '打印失败', '已打印','申请退款','退款失败','已退款'],
-            ostatus: ['-','店内打印', '远程自取', '商家配送'],
-            payStatus:['-','微信','会员卡'],
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    methods:{
-        async getTotal(){
-            var resp = await this.$API.mOrder.total.get(this.searchKey);
-            if (resp.code == 1) {
-                this.$emit("total",resp.data.total,this.searchKey);
-            }
-        },
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$nextTick(() => {
-                this.$refs.refundMain.open("edit").setData(data)
-            })
-            // this.$confirm("确定要对整笔订单进行退款吗","退款确认",{type: 'warning'}).then(async ()=>{
-            //     var resp = await this.$API.mOrder.refund.post({"id":data.id});
-            //     if (resp.code == 0) {
-            //         return this.$message.error(resp.msg)
-            //     }
-            //     this.$message.success(resp.msg)
-            //     this.$refs.table.refresh()
-            // }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>
-
-<style>
-.price{display: flex;align-items: center;}
-.del{text-decoration: line-through;margin-left: 5px;color: #f00;}
-</style>

+ 0 - 122
src/views/merchant/order/index/index.vue

@@ -1,122 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search" style="border-bottom: 0;" v-loading="totalLoading">
-            <el-card shadow="never" class="borderNone mb10">
-                <template #header>
-                    <div class="news-title">订单数统计
-                        <template v-if="searchData"><span>截止:{{ searchData }}</span></template>
-                    </div>
-                </template>
-                <div class="user-card-body">
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.ta?totalData.ta:'0' }} <span>单</span></div>
-                        <div class="card-tips">全部订单</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t1?totalData.t1:'0' }} <span>单</span></div>
-                        <div class="card-tips">待打印</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t2?totalData.t2:'0' }} <span>单</span></div>
-                        <div class="card-tips">打印失败</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t3?totalData.t3:'0' }} <span>单</span></div>
-                        <div class="card-tips">已完成</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t4?totalData.t4:'0' }} <span>单</span></div>
-                        <div class="card-tips">退款中</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t5?totalData.t5:'0' }} <span>单</span></div>
-                        <div class="card-tips">退款失败</div>
-                    </div>
-                    <div class="card-item">
-                        <div class="card-num">{{ totalData.t6?totalData.t6:'0' }} <span>单</span></div>
-                        <div class="card-tips">已退款</div>
-                    </div>
-                </div>
-            </el-card>
-            <search @success="handleSuccess"></search>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" @total="orderTotal"></tablePage>
-            </div>
-        </el-main>
-    </el-container>
-</template>
-
-<script>
-import search from './components/search';
-import tablePage from './components/table';
-import scStatistic from '@/components/scStatistic';
-export default {
-    components: {
-        search,tablePage,scStatistic
-    },
-    data(){
-        return {
-            totalLoading:true,
-            searchKey:{},
-            dataSelect:[],
-            dataSelectFull:[],
-            totalData:{},
-            searchData:null
-        }
-    },
-    methods: {
-        orderTotal(data,searchKey){
-            this.totalLoading = false;
-            this.totalData = data;
-            if (searchKey.create) {
-                var start = this.$TOOL.dateFormat(searchKey.create[0], "yyyy-MM-dd");
-                var end = this.$TOOL.dateFormat(searchKey.create[1], "yyyy-MM-dd");
-                this.searchData = start+"-"+end;
-            }
-        },
-        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>
-.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;}
-.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{
-    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>

+ 0 - 3
src/views/merchant/order/qrcode/components/detail.vue

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

+ 0 - 50
src/views/merchant/order/qrcode/components/option.vue

@@ -1,50 +0,0 @@
-<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(2)">新增员工账号</el-button>
-                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
-            </div>
-        </div>
-    </fieldset>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            var resp = await this.$API.mStaff.batch.post(submitData);
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.$emit("success");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(type){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-    }
-}
-</script>

+ 0 - 42
src/views/merchant/order/qrcode/components/search.vue

@@ -1,42 +0,0 @@
-<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-input v-model="searchKey.name" placeholder="订单编号" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
-                                <template #prepend>订单编号</template>
-                            </el-input>
-                        </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>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            searchKey:{}
-        }
-    },
-    methods: {
-        searchForm(){
-            this.$emit("success",this.searchKey);
-        }
-    }
-}
-</script>

+ 0 - 80
src/views/merchant/order/qrcode/components/table.vue

@@ -1,80 +0,0 @@
-<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="订单编号" prop="order_sn">
-            <template #default="scope">
-                {{scope.row.order_sn}}
-            </template>
-        </el-table-column>
-        <el-table-column label="订单金额" prop="time">
-            <template #default="scope">
-                {{ $TOOL.money(scope.row.money) }}
-            </template>
-        </el-table-column>
-        <el-table-column label="支付类型" prop="money">
-            <template #default="scope">
-                微信
-            </template>
-        </el-table-column>
-        <el-table-column label="支付时间" prop="pay_at">
-            <template #default="scope">
-                {{ scope.row.pay_at?scope.row.pay_at:'-' }}
-            </template>
-        </el-table-column>
-        <el-table-column label="创建时间" prop="create_at">
-            <template #default="scope">
-                {{ scope.row.create_at }}
-            </template>
-        </el-table-column>
-    </scTable>
-</template>
-
-<script>
-export default {
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mQrcode.list
-            },
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{
-                type:this.type
-            }
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>

+ 0 - 71
src/views/merchant/order/qrcode/index.vue

@@ -1,71 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search" style="border-bottom: 0;">
-            <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"></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,optionBtn
-    },
-    data() {
-        return {
-            
-        }
-    },
-    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>
-
-<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;}
-.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{
-    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;
-}
-</style>

+ 0 - 96
src/views/merchant/print/discount/components/form.vue

@@ -1,96 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
-        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
-            <el-form-item label="单双面" prop="duplex">
-                <el-radio-group v-model="formData.duplex">
-                    <el-radio-button :label="item.key" v-for="(item,index) in duplexType" :key="index">{{ item.name }}</el-radio-button>
-                </el-radio-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="打印机类型" prop="color">
-                <el-radio-group v-model="formData.color">
-                    <el-radio-button :label="item.key" v-for="(item,index) in colorType" :key="index">{{ item.name }}</el-radio-button>
-                </el-radio-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="数量" prop="number">
-                <el-input v-model="formData.number" clearable placeholder="请输入">
-                    <template #append>张/页</template>
-                </el-input>
-            </el-form-item>
-            <el-form-item label="折扣" prop="rate">
-                <el-input v-model="formData.rate" clearable placeholder="请输入"></el-input>
-                <div class="el-form-item-msg">如:数量设置10,折扣设置0.8。表示打印对应的类型页面颜色的纸张数达到10或10张以上时,打8折</div>
-            </el-form-item>
-        </el-form>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button type="primary" :loading="isSaveing" @click="submit()">提交</el-button>
-		</template>
-    </el-dialog>
-</template>
-<script>
-export default {
-    components: {
-        
-    },
-    data(){
-        return {
-            printType:['A3','A4','A5','A6','B4','B5'],
-            duplexType:[{"name":"单面","key":1},{"name":"双面","key":2}],
-            colorType:[{"name":"彩色","key":1},{"name":"黑白","key":2}],
-            loading: false,
-            mode:"add",
-            titleMap:{
-                add:"新建折扣",
-                edit:"编辑折扣"
-            },
-            visible: false,
-            isSaveing: false,
-            formData:{},
-            rules:{
-                color: [
-                    {required: true, message: '请选择'}
-                ],
-                duplex: [
-                    {required: true, message: '请选择'}
-                ],
-                rate: [
-                    {required: true, message: '请输入'}
-                ],
-                number: [
-                    {required: true, message: '请输入'}
-                ],
-            },
-            category:[],
-            batchData:[],
-            type:1
-        }
-    },
-    methods: {
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = JSON.parse(JSON.stringify(data));
-        },
-        async submit(){
-            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
-            if(!validate){ return false }
-            this.isSaveing = true;
-            var resp = await this.$API.mDiscount.save.post(this.formData);
-            this.isSaveing = false;
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.visible = false;
-            this.formData = {};
-            this.$emit("success");
-        }
-    }
-}
-</script>

+ 0 - 65
src/views/merchant/print/discount/components/option.vue

@@ -1,65 +0,0 @@
-<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>
-                <el-button type="danger" icon="el-icon-delete" :disabled="dataSelect.length>0?false:true" @click="table_del()">批量删除</el-button>
-            </div>
-        </div>
-    </fieldset>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-</template>
-
-<script>
-import formMain from './form';
-export default {
-    components: {
-        formMain
-    },
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        table_del(){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择操作数据")
-            }
-            this.$confirm("确定要执行删除吗?","提示",{type:"warning"}).then(async ()=>{
-                let submitData = {"id":this.dataSelect,"type":"batch"};
-                var resp = await this.$API.mDiscount.del.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");
-        },
-        table_add(){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add")
-            })
-        },
-        table_audit(){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            this.$nextTick(() => {
-                this.$refs.formMain.open("batch").setData(this.dataSelect)
-            })
-        },
-    }
-}
-</script>

+ 0 - 119
src/views/merchant/print/discount/components/table.vue

@@ -1,119 +0,0 @@
-<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="类型" prop="certificate_id">
-            <template #default="scope">
-                打印
-            </template>
-        </el-table-column>
-        <el-table-column label="打印类型" prop="color">
-            <template #default="scope">
-                <el-tag type="danger" v-if="scope.row.color">{{ colorData[scope.row.color] }}</el-tag>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="单双面" prop="certificate_id">
-            <template #default="scope">
-                {{ duplexData[scope.row.duplex] }}
-            </template>
-        </el-table-column>
-        <el-table-column label="数量" prop="rate">
-            <template #default="scope">
-                {{ scope.row.number }}张
-            </template>
-        </el-table-column>
-        <el-table-column label="折扣" prop="rate">
-            <template #default="scope">
-                {{ scope.row.rate }}
-            </template>
-        </el-table-column>
-        <el-table-column label="操作" width="120" align="right" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <el-button text type="warning" size="small" @click="table_edit(scope.row)">编辑</el-button>
-                    <el-button text type="danger" size="small" @click="table_del(scope.row)">删除</el-button>
-                </el-button-group>
-            </template>
-        </el-table-column>
-    </scTable>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-</template>
-
-<script>
-import formMain from "./form";
-export default {
-    components: {
-        formMain
-    },
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mDiscount.list
-            },
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{
-                type:this.type
-            }
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit").setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mDiscount.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).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);
-        },
-    }
-}
-</script>

+ 0 - 52
src/views/merchant/print/discount/index.vue

@@ -1,52 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-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"></tablePage>
-            </div>
-        </el-main>
-    </el-container>  
-</template>
-
-<script>
-import optionBtn from './components/option';
-import tablePage from './components/table';
-export default {
-    components: {
-        optionBtn,tablePage
-    },
-    data(){
-        return {
-            activeName:"1",
-            isLoading:false,
-            searchKey:{
-                status:7
-            },
-            dataSelect:[],
-            dataSelectFull:[],
-        }
-    },
-    methods: {
-        tabClick(event){
-            this.activeName = event;
-            this.$refs.tablePage.upData({type:event})
-        },
-        tableHandle(data){
-            this.dataSelect = data;
-        },
-        tableHandleFull(data){
-            this.dataSelectFull = data;
-        },
-        handleSuccess(data){
-            this.$refs.tablePage.upData(data)
-        },
-        handleClick(name){
-            this.searchKey.type = name;
-            this.$refs.tablePage.upData(this.searchKey)
-        }
-    }
-}
-</script>

+ 0 - 141
src/views/merchant/print/index/components/form.vue

@@ -1,141 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
-        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="120px" label-position="top">
-            <el-form-item label="打印类型" prop="type">
-                <el-checkbox-group v-model="formData.type">
-                    <el-checkbox-button :label="item.key" v-for="(item,index) in typeData" :key="index">{{ item.name }}</el-checkbox-button>
-                </el-checkbox-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="支持纸型" prop="paper_size">
-                <el-checkbox-group v-model="formData.paper_size">
-                    <el-checkbox-button :label="item" v-for="(item,index) in printType" :key="index">{{ item }}</el-checkbox-button>
-                </el-checkbox-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="打印机类型" prop="color">
-                <el-checkbox-group v-model="formData.color">
-                    <el-checkbox-button :label="item.key" v-for="(item,index) in colorType" :key="index">{{ item.name }}</el-checkbox-button>
-                </el-checkbox-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="打印方向" prop="direction">
-                <el-checkbox-group v-model="formData.direction">
-                    <el-checkbox-button :label="item.key" v-for="(item,index) in directionType" :key="index">{{ item.name }}</el-checkbox-button>
-                </el-checkbox-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="支持单双面" prop="duplex">
-                <el-checkbox-group v-model="formData.duplex">
-                    <el-checkbox-button :label="item.key" v-for="(item,index) in duplexType" :key="index">{{ item.name }}</el-checkbox-button>
-                </el-checkbox-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="取件方式" prop="package">
-                <el-checkbox-group v-model="formData.package">
-                    <el-checkbox-button :label="item.key" v-for="(item,index) in packageType" :key="index">{{ item.name }}</el-checkbox-button>
-                </el-checkbox-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="额外收费" prop="is_price">
-                <el-radio-group v-model="formData.is_price">
-                    <el-radio-button :label="1">关闭</el-radio-button>
-                    <el-radio-button :label="2">启用</el-radio-button>
-                </el-radio-group>
-                <div class="el-form-item-msg">开启后该打印机可设置额外价格</div>
-            </el-form-item>
-        </el-form>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button type="primary" :loading="isSaveing" @click="submit()">保存</el-button>
-		</template>
-    </el-dialog>
-</template>
-<script>
-export default {
-    data(){
-        return {
-            loading: false,
-            mode:"add",
-            titleMap:{
-                add:"更新地址",
-                edit:"更新地址"
-            },
-            typeData:[{"name":"文档","key":1}],
-            printType:['A3','A4','A5','A6','B4','B5'],
-            colorType:[{"name":"彩色","key":1},{"name":"黑白","key":2}],
-            directionType:[{"name":"自适应","key":1},{"name":"横向","key":2},{"name":"竖向","key":3}],
-            duplexType:[{"name":"单面","key":1},{"name":"双面","key":2}],
-            packageType:[{"name":"店内打印","key":1},{"name":"远程自取","key":2},{"name":"商家配送","key":3}],
-            visible: false,
-            isSaveing: false,
-            formData:{
-                is_price:1
-            },
-            disabled:false,
-            rules:{
-                type: [
-                    {required: true, message: '请选择'}
-                ],
-                paper_size: [
-                    {required: true, message: '请选择'}
-                ],
-                color: [
-                    {required: true, message: '请选择'}
-                ],
-                direction: [
-                    {required: true, message: '请选择'}
-                ],
-                duplex: [
-                    {required: true, message: '请选择'}
-                ],
-                package: [
-                    {required: true, message: '请选择'}
-                ],
-                is_price: [
-                    {required: true, message: '请选择'}
-                ],
-            }
-        }
-    },
-    methods:{
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            if (data.rule) {
-                this.formData = data.rule;
-            } else {
-                this.formData = {}
-            }
-            this.formData.is_price = data.is_price;
-            this.formData.id = data.id;
-            this.titleMap.edit = "打印机【"+data.name + "】设置"
-        },
-        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.mPrint.save.post(submitData);
-            this.isSaveing = false;
-            if (resp.code !== 1) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.visible = false;
-            this.formData = {};
-            this.submitState = false;
-            this.$emit("success");
-        }
-    }
-}
-</script>
-<style>
-.mt20 {margin-top: 20px;}
-.login-msg-yzm {display: flex;width: 100%;}
-.login-msg-yzm .el-button {margin-left: 10px;--el-button-size:42px;}
-</style>

+ 0 - 56
src/views/merchant/print/index/components/option.vue

@@ -1,56 +0,0 @@
-<template>
-    <fieldset>
-        <legend>
-            <el-tag type="info">按需操作</el-tag>
-        </legend>
-        <div class="op-header">
-            <div class="left-panel">
-                <sc-file-export :apiObj="$API.orderlife.export" :data="searchKey" :fileName="'来客订单_'+(new Date().getTime())" async>
-                    <template #default="{ open }">
-                        <el-button type="primary" icon="sc-icon-download" @click="open">导出</el-button>
-                    </template>
-                </sc-file-export>
-            </div>
-        </div>
-    </fieldset>
-</template>
-
-<script>
-import scFileExport from '@/components/scFileExport'
-export default {
-    components: {
-        scFileExport
-    },
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        searchKey: { type: Object, default: () => {} },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        table_export(){
-            
-        },
-        async table_batch_status(status){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
-            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");
-        },
-        handleSuccess(){
-            this.$emit("success");
-        },
-    }
-}
-</script>

+ 0 - 54
src/views/merchant/print/index/components/price.vue

@@ -1,54 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
-        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
-            <el-row :gutter="15">
-                <el-col :span="12" v-for="item in priceData">
-                    <el-form-item :label="item.paper_size+colorData[item.color]+duplexData[item.duplex]" prop="number">
-                        <el-input v-model="formData.number" clearable placeholder="请输入">
-                            <template #append>元</template>
-                        </el-input>
-                    </el-form-item>
-                </el-col>
-            </el-row>
-        </el-form>
-        <el-alert type="error" :closable="false">可针对打印机设置额外收费。如:设置A4黑白单面打印额外增收0.1元,则打印A4黑白单面单价额外加收0.1元</el-alert>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button type="primary" :loading="isSaveing" @click="submit()">设置</el-button>
-		</template>
-    </el-dialog>
-</template>
-
-<script>
-export default {
-    data(){
-        return {
-            loading: false,
-            mode:"add",
-            titleMap:{
-                add:"更新地址",
-                edit:"更新地址"
-            },
-            visible: false,
-            isSaveing: false,
-            formData:{},
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            priceData:[]
-        }
-    },
-    methods: {
-        open(mode = 'add'){
-            this.mode = mode;
-            this.visible = true;
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData.id = data.id;
-            this.priceData = data.price;
-            this.titleMap.edit = "打印机【"+data.name + "】额外收费"
-        },
-    }
-}
-</script>

+ 0 - 46
src/views/merchant/print/index/components/search.vue

@@ -1,46 +0,0 @@
-<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 :span="this.$store.state.global.ismobile?12:4">
-                            <el-input v-model="searchKey.name" placeholder="打印机名称" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
-                                <template #prepend>打印机名称</template>
-                            </el-input>
-                        </el-col>
-                        <el-col :span="this.$store.state.global.ismobile?12: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-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>

+ 0 - 202
src/views/merchant/print/index/components/table.vue

@@ -1,202 +0,0 @@
-<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="打印机名称" prop="order_id" fixed="left">
-            <template #default="scope">
-                <span v-if="scope.row.name">{{ scope.row.name }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="机器码" prop="open_id" width="150">
-            <template #default="scope">
-                <span v-if="scope.row.code">{{ scope.row.code }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="打印类型" prop="out_id">
-            <template #default="scope">
-                <div v-if="scope.row.rule" class="flex-tag">
-                    <el-tag type="success" v-for="item in scope.row.rule.type">{{ typeData[item] }}</el-tag>
-                </div>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="支持纸张" prop="certificate_id">
-            <template #default="scope">
-                <div v-if="scope.row.rule" class="flex-tag">
-                    <el-tag type="danger" v-for="item in scope.row.rule.paper_size">{{ item }}</el-tag>
-                </div>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="支持颜色" prop="color">
-            <template #default="scope">
-                <div v-if="scope.row.rule" class="flex-tag">
-                    <el-tag type="warning" v-for="item in scope.row.rule.color">{{ colorData[item] }}</el-tag>
-                </div>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="支持单双面" prop="count">
-            <template #default="scope">
-                <div v-if="scope.row.rule" class="flex-tag">
-                    <el-tag v-for="item in scope.row.rule.duplex">{{ duplexData[item] }}</el-tag>
-                </div>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="取件方式" prop="order_amount">
-            <template #default="scope">
-                <div v-if="scope.row.rule" class="flex-tag">
-                    <el-tag v-for="item in scope.row.rule.package">{{ packageData[item] }}</el-tag>
-                </div>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="打印机状态" prop="pay_amount" width="150">
-            <template #default="scope">
-                <span v-if="scope.row.print_status">{{ scope.row.print_status }}</span>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="开启打印" prop="status" width="180">
-            <template #default="scope">
-                <el-switch
-                    v-model="scope.row.status"
-                    size="large"
-                    inline-prompt
-                    :active-value="1"
-                    :inactive-value="2"
-                    active-text="启用"
-                    inactive-text="禁用"
-                    @change="table_state(scope.row)"
-                    style="--el-switch-on-color: #13ce66;"
-                />
-            </template>
-        </el-table-column>
-        <el-table-column label="操作" width="200" align="right" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <el-button text type="warning" size="small" @click="table_edit(scope.row)">编辑</el-button>
-                    <el-button text type="success" size="small" @click="table_qrcode(scope.row)">二维码</el-button>
-                    <el-button text type="danger" size="small" @click="table_price(scope.row)" v-if="scope.row.is_price==2">额外收费</el-button>
-                </el-button-group>
-            </template>
-        </el-table-column>
-    </scTable>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-    <priceMain ref="priceMain" @success="handleSuccess"></priceMain>
-    <el-dialog :title="qrcodeTitle" v-model="visible" :width="465" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
-        <div class="qrcode-img">
-            <img :src="qrcodeImg" />
-        </div>
-		<template #footer>
-			<el-button @click="visible=false">关 闭</el-button>
-		</template>
-    </el-dialog>
-</template>
-
-<script>
-import formMain from "./form";
-import priceMain from "./price";
-export default {
-    components: {
-        formMain,priceMain
-    },
-    data(){
-        return {
-            list: {
-                apiObj: this.$API.mPrint.list
-            },
-            qrcodeImg:"",
-            visible:false,
-            qrcodeTitle:"",
-            typeData:['','文档','照片'],
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            packageData:['','店内打印','远程自取','商家配送'],
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    methods: {
-        async table_price(data){
-            var loading = this.$loading();
-            var resp = await this.$API.mPrint.price.get();
-            loading.close()
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$nextTick(() => {
-                this.$refs.priceMain.open("edit").setData({"id":data.id,"name":data.name,"price":resp.data})
-            })
-        },
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit").setData(data)
-            })
-        },
-        async table_state(data){
-            var status = 1;
-            if (data.status == 1) {
-                status = 2;
-            }
-            var resp = await this.$API.mPrint.single.post({"id":data.id,"status":status});
-            if (resp.code !== 1) {
-                return this.$message.error(resp.msg);
-            }
-            this.$refs.table.refresh()
-        },
-        async table_qrcode(data){
-            var loading = this.$loading();
-            var resp = await this.$API.mPrint.qrcode.post({"id":data.id});
-            loading.close()
-            if (resp.code !== 1) {
-                return this.$message.error(resp.msg);
-            }
-            this.visible = true;
-            this.qrcodeTitle = "【"+data.name+"】打印二维码";
-            this.qrcodeImg = resp.data.img;
-        },
-        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>
-.flex-tag{display: flex;align-items: center;gap: 10px;}
-</style>

+ 0 - 47
src/views/merchant/print/index/index.vue

@@ -1,47 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search">
-            <search @success="handleSuccess"></search>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" type="3"></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 {
-            searchKey:{
-                status:7
-            },
-            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 - 125
src/views/merchant/print/price/components/form.vue

@@ -1,125 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
-        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
-            <template v-if="type==1">
-                <el-form-item label="纸张类型" prop="paper_size">
-                    <el-radio-group v-model="formData.paper_size">
-                        <el-radio-button :label="item" v-for="(item,index) in printType" :key="index">{{ item }}</el-radio-button>
-                    </el-radio-group>
-                    <div class="el-form-item-msg"></div>
-                </el-form-item>
-                <el-form-item label="单双面" prop="duplex">
-                    <el-radio-group v-model="formData.duplex">
-                        <el-radio-button :label="item.key" v-for="(item,index) in duplexType" :key="index">{{ item.name }}</el-radio-button>
-                    </el-radio-group>
-                    <div class="el-form-item-msg"></div>
-                </el-form-item>
-            </template>
-            <template v-if="type==2">
-                <el-form-item label="纸张类型" prop="paper_size">
-                    <el-radio-group v-model="formData.paper_size" disabled>
-                        <el-radio-button :label="item" v-for="(item,index) in printType" :key="index">{{ item }}</el-radio-button>
-                    </el-radio-group>
-                    <div class="el-form-item-msg"></div>
-                </el-form-item>
-                <el-form-item label="单双面" prop="duplex">
-                    <el-radio-group v-model="formData.duplex" disabled>
-                        <el-radio-button :label="item.key" v-for="(item,index) in duplexType" :key="index">{{ item.name }}</el-radio-button>
-                    </el-radio-group>
-                    <div class="el-form-item-msg"></div>
-                </el-form-item>
-            </template>
-            <el-form-item label="打印机类型" prop="color">
-                <el-radio-group v-model="formData.color">
-                    <el-radio-button :label="item.key" v-for="(item,index) in colorType" :key="index">{{ item.name }}</el-radio-button>
-                </el-radio-group>
-                <div class="el-form-item-msg"></div>
-            </el-form-item>
-            <el-form-item label="价格" prop="price">
-                <el-input v-model="formData.price" clearable placeholder="请输入">
-                    <template #append>元</template>
-                </el-input>
-            </el-form-item>
-        </el-form>
-		<template #footer>
-			<el-button @click="visible=false" >取 消</el-button>
-			<el-button type="primary" :loading="isSaveing" @click="submit()">提交</el-button>
-		</template>
-    </el-dialog>
-</template>
-<script>
-export default {
-    components: {
-        
-    },
-    data(){
-        return {
-            printType:['A3','A4','A5','A6','B4','B5'],
-            duplexType:[{"name":"单面","key":1},{"name":"双面","key":2}],
-            colorType:[{"name":"彩色","key":1},{"name":"黑白","key":2}],
-            loading: false,
-            mode:"add",
-            titleMap:{
-                add:"新建商品",
-                edit:"分配门店"
-            },
-            visible: false,
-            isSaveing: false,
-            formData:{},
-            rules:{
-                paper_size: [
-                    {required: true, message: '请选择'}
-                ],
-                color: [
-                    {required: true, message: '请选择'}
-                ],
-                duplex: [
-                    {required: true, message: '请选择'}
-                ],
-                price: [
-                    {required: true, message: '请输入'}
-                ],
-            },
-            category:[],
-            batchData:[],
-            type:1
-        }
-    },
-    methods: {
-        open(mode = 'add',type){
-            this.mode = mode;
-            this.visible = true;
-            this.type = type;
-            if (type == 1) {
-                this.titleMap.add = "新建打印价格";
-                this.titleMap.edit = "编辑打印价格";
-            } else {
-                this.titleMap.add = "新建复印价格";
-                this.titleMap.edit = "编辑复印价格";
-                this.formData.duplex = 1;
-                this.formData.paper_size = 'A4';
-            }
-            return this
-        },
-        //表单注入数据
-        setData(data){
-            this.formData = JSON.parse(JSON.stringify(data));
-        },
-        async submit(){
-            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
-            if(!validate){ return false }
-            this.formData.type = this.type;
-            this.isSaveing = true;
-            var resp = await this.$API.mPrice.save.post(this.formData);
-            this.isSaveing = false;
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-            this.visible = false;
-            this.formData = {};
-            this.$emit("success");
-        }
-    }
-}
-</script>

+ 0 - 51
src/views/merchant/print/price/components/option.vue

@@ -1,51 +0,0 @@
-<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>
-                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
-            </div>
-        </div>
-    </fieldset>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-</template>
-
-<script>
-import formMain from './form';
-export default {
-    components: {
-        formMain
-    },
-    props: {
-        type: { type: String, default: "1" },
-        dataSelect: { type: Array, default: () => [] },
-        dataSelectFull: { type: Array, default: () => [] }
-    },
-    data(){
-        return {
-
-        }
-    },
-    methods: {
-        handleSuccess(){
-            this.$emit("success");
-        },
-        table_add(){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("add",this.type)
-            })
-        },
-        table_audit(){
-            if (this.dataSelect.length == 0) {
-                return this.$message.error("请选择修改数据")
-            }
-            this.$nextTick(() => {
-                this.$refs.formMain.open("batch").setData(this.dataSelect)
-            })
-        },
-    }
-}
-</script>

+ 0 - 89
src/views/merchant/print/price/components/table.vue

@@ -1,89 +0,0 @@
-<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="类型" prop="certificate_id">
-            <template #default="scope">
-                {{scope.row.type==1?'普通':'复印'}}
-            </template>
-        </el-table-column>
-        <el-table-column label="支持纸张" prop="certificate_id">
-            <template #default="scope">
-                <el-tag type="danger" v-if="scope.row.paper_size">{{ scope.row.paper_size }}</el-tag>
-                <span class="status-danger" v-else>未设置</span>
-            </template>
-        </el-table-column>
-        <el-table-column label="参数设置" prop="certificate_id">
-            <template #default="scope">
-                {{ colorData[scope.row.color] }} - {{ duplexData[scope.row.duplex] }}
-            </template>
-        </el-table-column>
-        <el-table-column label="单价(元)" prop="certificate_id">
-            <template #default="scope">
-                {{ scope.row.price }}元
-            </template>
-        </el-table-column>
-        <el-table-column label="操作" width="120" align="right" fixed="right">
-            <template #default="scope">
-                <el-button-group>
-                    <el-button text type="warning" size="small" @click="table_edit(scope.row)">编辑</el-button>
-                    <el-button text type="danger" size="small" @click="table_del(scope.row)">删除</el-button>
-                </el-button-group>
-            </template>
-        </el-table-column>
-    </scTable>
-    <formMain ref="formMain" @success="handleSuccess"></formMain>
-</template>
-
-<script>
-import formMain from "./form";
-export default {
-    components: {
-        formMain
-    },
-    props: {
-        type: { type: String, default: "1" }
-    },
-    data(){
-        return {
-            colorData:['','彩色','黑白'],
-            duplexData:['','单面','双面'],
-            list: {
-                apiObj: this.$API.mPrice.list
-            },
-            visible:false,
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{
-                type:this.type
-            }
-        }
-    },
-    methods:{
-        table_edit(data){
-            this.$nextTick(() => {
-                this.$refs.formMain.open("edit",this.type).setData(data)
-            })
-        },
-        table_del(data){
-            this.$confirm("确定要删除该数据吗?","删除确认",{type: 'warning'}).then(async ()=>{
-                var resp = await this.$API.mPrice.del.post({"id":data.id,"type":""});
-                if (resp.code == 0) {
-                    return this.$message.error(resp.msg)
-                }
-                this.$message.success(resp.msg)
-                this.$refs.table.refresh()
-            }).catch(()=>{});
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-    }
-}
-</script>

+ 0 - 56
src/views/merchant/print/price/index.vue

@@ -1,56 +0,0 @@
-<template>
-    <el-container class="flex-column">
-        <div class="table-search">
-            <el-tabs v-model="activeName" class="demo-tabs" @tab-change="tabClick">
-                <el-tab-pane label="打印价格" name="1" v-loading="isLoading"></el-tab-pane>
-                <el-tab-pane label="复印价格" name="2" v-loading="isLoading"></el-tab-pane>
-            </el-tabs>
-            <optionBtn @success="handleSuccess" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull" :type="activeName"></optionBtn>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" :type="activeName"></tablePage>
-            </div>
-        </el-main>
-    </el-container>  
-</template>
-
-<script>
-import optionBtn from './components/option';
-import tablePage from './components/table';
-export default {
-    components: {
-        optionBtn,tablePage
-    },
-    data(){
-        return {
-            activeName:"1",
-            isLoading:false,
-            searchKey:{
-                status:7
-            },
-            dataSelect:[],
-            dataSelectFull:[],
-        }
-    },
-    methods: {
-        tabClick(event){
-            this.activeName = event;
-            this.$refs.tablePage.upData({type:event})
-        },
-        tableHandle(data){
-            this.dataSelect = data;
-        },
-        tableHandleFull(data){
-            this.dataSelectFull = data;
-        },
-        handleSuccess(data){
-            this.$refs.tablePage.upData(data)
-        },
-        handleClick(name){
-            this.searchKey.type = name;
-            this.$refs.tablePage.upData(this.searchKey)
-        }
-    }
-}
-</script>

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor