zory 3 semanas atrás
pai
commit
d1f95f395b
43 arquivos alterados com 268 adições e 2199 exclusões
  1. 47 0
      src/api/model/category.js
  2. 0 26
      src/api/model/mDiscount.js
  3. 0 26
      src/api/model/mPrice.js
  4. 0 40
      src/api/model/mPrint.js
  5. 0 47
      src/api/model/mRenew.js
  6. 0 19
      src/api/model/mShop.js
  7. 0 40
      src/api/model/mStaff.js
  8. 85 0
      src/views/manage/goods/category/components/form.vue
  9. 22 8
      src/views/manage/goods/category/components/option.vue
  10. 7 4
      src/views/manage/goods/category/components/search.vue
  11. 107 0
      src/views/manage/goods/category/components/table.vue
  12. 0 0
      src/views/manage/goods/category/index.vue
  13. 0 0
      src/views/manage/goods/index/index.vue
  14. 0 0
      src/views/manage/goods/types/index.vue
  15. 0 0
      src/views/merchant/finance/logs/index.vue
  16. 0 0
      src/views/merchant/goods/index/index.vue
  17. 0 0
      src/views/merchant/order/after/index.vue
  18. 0 96
      src/views/merchant/print/discount/components/form.vue
  19. 0 65
      src/views/merchant/print/discount/components/option.vue
  20. 0 119
      src/views/merchant/print/discount/components/table.vue
  21. 0 52
      src/views/merchant/print/discount/index.vue
  22. 0 141
      src/views/merchant/print/index/components/form.vue
  23. 0 56
      src/views/merchant/print/index/components/option.vue
  24. 0 54
      src/views/merchant/print/index/components/price.vue
  25. 0 202
      src/views/merchant/print/index/components/table.vue
  26. 0 47
      src/views/merchant/print/index/index.vue
  27. 0 125
      src/views/merchant/print/price/components/form.vue
  28. 0 51
      src/views/merchant/print/price/components/option.vue
  29. 0 89
      src/views/merchant/print/price/components/table.vue
  30. 0 56
      src/views/merchant/print/price/index.vue
  31. 0 0
      src/views/merchant/service/index/index.vue
  32. 0 0
      src/views/merchant/service/setting/index.vue
  33. 0 142
      src/views/merchant/shop/detail/index.vue
  34. 0 86
      src/views/merchant/shop/renew/components/table.vue
  35. 0 179
      src/views/merchant/shop/renew/index.vue
  36. 0 148
      src/views/merchant/shop/user/components/form.vue
  37. 0 96
      src/views/merchant/shop/user/components/password.vue
  38. 0 46
      src/views/merchant/shop/user/components/search.vue
  39. 0 127
      src/views/merchant/shop/user/components/table.vue
  40. 0 3
      src/views/merchant/turnover/history/index.vue
  41. 0 3
      src/views/merchant/turnover/index/index.vue
  42. 0 3
      src/views/merchant/wallet/cash/index.vue
  43. 0 3
      src/views/merchant/wallet/index/index.vue

+ 47 - 0
src/api/model/category.js

@@ -0,0 +1,47 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/category/list`,
+        name: "-",
+        get: async function (data = {}) {
+            return await http.get(this.url, data);
+        },
+    },
+    save: {
+        url: `${config.API_URL}/category/save`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+    edit: {
+        url: `${config.API_URL}/category/edit`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+    batch: {
+        url: `${config.API_URL}/category/batch`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+    sync: {
+        url: `${config.API_URL}/category/sync`,
+        name: "-",
+        get: async function (data = {}) {
+            return await http.get(this.url, data);
+        },
+    },
+    del: {
+        url: `${config.API_URL}/category/del`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+}

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

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

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

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

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

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

+ 0 - 47
src/api/model/mRenew.js

@@ -1,47 +0,0 @@
-import config from "@/config";
-import http from "@/utils/request";
-
-export default {
-    detail: {
-        url: `${config.API_URL}/mer/renew/detail`,
-        name: "-",
-        get: async function (params) {
-            return await http.get(this.url, params);
-        },
-    },
-    qrcode: {
-        url: `${config.API_URL}/mer/renew/qrcode`,
-        name: "-",
-        post: async function (params) {
-            return await http.post(this.url, params);
-        },
-    },
-    list: {
-        url: `${config.API_URL}/mer/renew/list`,
-        name: "-",
-        get: async function (params) {
-            return await http.get(this.url, params);
-        },
-    },
-    passwd: {
-        url: `${config.API_URL}/mer/staff/passwd`,
-        name: "-",
-        post: async function (params) {
-            return await http.post(this.url, params);
-        },
-    },
-    batch: {
-        url: `${config.API_URL}/mer/staff/batch`,
-        name: "-",
-        post: async function (params) {
-            return await http.post(this.url, params);
-        },
-    },
-    del: {
-        url: `${config.API_URL}/mer/staff/del`,
-        name: "-",
-        post: async function (params) {
-            return await http.post(this.url, params);
-        },
-    },
-}

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

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

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

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

+ 85 - 0
src/views/manage/goods/category/components/form.vue

@@ -0,0 +1,85 @@
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
+        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+            <el-form-item label="品类名称" prop="name">
+                <el-input v-model="formData.name" clearable placeholder="请输入"></el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+            <el-form-item label="状态" prop="enable">
+                <el-radio-group v-model="formData.enable">
+                    <el-radio-button :label="1">正常</el-radio-button>
+                    <el-radio-button :label="2">禁用</el-radio-button>
+                </el-radio-group>
+            </el-form-item>
+        </el-form>
+		<template #footer>
+            <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>
+		</template>
+    </el-dialog>
+    
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            loading: false,
+            isSaveing: false,
+            mode:"add",
+            titleMap:{
+                add:"新增店铺",
+                edit:"编辑品类信息"
+            },
+            visible:false,
+            formData:{},
+            rules:{
+                enable: [
+                    {required: true, message: '请选择'}
+                ],
+                name: [
+                    {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));
+            if (this.formData.vip_end) {
+                submitData.vip_end = this.$TOOL.dateFormat(this.formData.vip_end, "yyyy-MM-dd");
+            }
+            if (this.mode == 'add') {
+                var resp = await this.$API.catogory.save.post(submitData);
+            } else {
+                var resp = await this.$API.catogory.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>
+
+<style>
+.text-center{text-align: center;}
+</style>

+ 22 - 8
src/views/merchant/shop/user/components/option.vue → src/views/manage/goods/category/components/option.vue

@@ -5,10 +5,9 @@
         </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 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>
-                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
+                <el-button icon="el-icon-unlock" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">启用</el-button>
+                <el-button icon="el-icon-lock" type="danger" @click="table_batch_status(2)" :disabled="dataSelect.length>0?false:true">禁用</el-button>
+                <el-button type="warning" icon="el-icon-connection" @click="table_sync()">同步门店分类</el-button>
             </div>
         </div>
     </fieldset>
@@ -22,7 +21,6 @@ export default {
         formMain
     },
     props: {
-        type: { type: String, default: "1" },
         dataSelect: { type: Array, default: () => [] },
         dataSelectFull: { type: Array, default: () => [] }
     },
@@ -32,12 +30,28 @@ export default {
         }
     },
     methods: {
+        table_sync(){
+            this.$confirm(`发起同步后,请耐心等待1-2分钟后再刷新当前数据列表`, '提示', {
+                type: 'warning'
+            }).then(async () => {
+                var resp = await this.$API.category.sync.get();
+                if (resp.code == 0) {
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg);
+                this.$emit("success");
+            }).catch(() => {
+
+            })
+        },
         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);
+            var loading = this.$loading()
+            let submitData = {"id":this.dataSelect,"value":status,"field":"enable","type":"batch"};
+            loading.close()
+            var resp = await this.$API.category.batch.post(submitData);
             if (resp.code == 0) {
                 return this.$message.error(resp.msg);
             }
@@ -47,7 +61,7 @@ export default {
         handleSuccess(){
             this.$emit("success");
         },
-        table_add(type){
+        table_add(){
             this.$nextTick(() => {
                 this.$refs.formMain.open("add")
             })

+ 7 - 4
src/views/merchant/print/index/components/search.vue → src/views/manage/goods/category/components/search.vue

@@ -7,18 +7,21 @@
             <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-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 :span="this.$store.state.global.ismobile?12:4">
+                        <el-col :xs="12" :sm="12" :md="12" :lg="6" :xl="4">
                             <el-select v-model="searchKey.status" clearable placeholder="请选择状态" @change="searchForm" :style="{width: '100%'}" class="diy-select">
                                 <el-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>

+ 107 - 0
src/views/manage/goods/category/components/table.vue

@@ -0,0 +1,107 @@
+<template>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" hidePagination>
+        <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="序号" width="120" prop="id"></el-table-column>
+        <el-table-column label="品类ID" prop="category_id" width="200"></el-table-column>
+        <el-table-column label="状态" prop="enable" width="120" align="center">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.enable==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                <div class="status-danger" v-if="scope.row.enable==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_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.category.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 - 0
src/views/merchant/shop/user/index.vue → src/views/manage/goods/category/index.vue


+ 0 - 0
src/views/merchant/finance/cash/index.vue → src/views/manage/goods/index/index.vue


+ 0 - 0
src/views/merchant/finance/history/index.vue → src/views/manage/goods/types/index.vue


+ 0 - 0
src/views/merchant/member/analysis/index.vue → src/views/merchant/finance/logs/index.vue


+ 0 - 0
src/views/merchant/member/index/index.vue → src/views/merchant/goods/index/index.vue


+ 0 - 0
src/views/merchant/member/recharge/index.vue → src/views/merchant/order/after/index.vue


+ 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.$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 - 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>

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


+ 0 - 0
src/views/merchant/order/qrcode/index.vue → src/views/merchant/service/setting/index.vue


+ 0 - 142
src/views/merchant/shop/detail/index.vue

@@ -1,142 +0,0 @@
-<template>
-    <el-container>
-        <el-main>
-            <el-card shadow="never" header="店铺详情" class="borderNone mt10" v-loading="loadingState">
-                <fieldset class="layui-elem-field">
-                    <legend><el-tag type="danger">小提示</el-tag></legend>
-                    <div class="font-s14">除店铺名称,客服电话,营业时间以外,均不可自行修改。若需修改,请到微信服务群联系售后</div>
-                </fieldset>
-                <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
-                    <el-row :gutter="15">
-                        <el-col :span="this.$store.state.global.ismobile?12:8">
-                            <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="this.$store.state.global.ismobile?12:8">
-                            <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="this.$store.state.global.ismobile?12:8">
-                            <el-form-item label="服务到期时间">
-                                <el-input v-model="formData.vip_end" disabled clearable placeholder="请输入"></el-input>
-                                <div class="el-form-item-msg"></div>
-                            </el-form-item>
-                        </el-col>
-                        <el-col :span="this.$store.state.global.ismobile?12:8">
-                            <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="this.$store.state.global.ismobile?12:8">
-                            <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="token">
-                                <div class="qrcode">
-                                    <el-image
-                                        style="width: 100px; height: 100px"
-                                        :src="formData.qrcode"
-                                        :preview-src-list="[formData.qrcode]"
-                                        fit="contain"
-                                        :preview-teleported="true"
-                                        :hide-on-click-modal="true"
-                                    >
-                                    </el-image>
-                                </div>
-                                <div class="qrcode-down">
-                                    <el-button type="success" icon="el-icon-download" @click="downloadImage1">下载二维码</el-button>
-                                </div>
-                                <div class="el-form-item-msg">1.线下收款码支持会员卡支付、微信支付;2.可下载打印后粘贴到店里,实现线下收款</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="请输入"></el-input>
-                                <div class="el-form-item-msg">小程序首页显示</div>
-                            </el-form-item>
-                        </el-col>
-                    </el-row>
-                </el-form>
-            </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 {
-            formData:{},
-            rules:{},
-            isSaveing:false,
-            loadingState:false
-        }
-    },
-    mounted(){
-        this.getData()
-    },
-    methods:{
-        async getData(){
-            this.loadingState = true;
-            var resp = await this.$API.mShop.detail.get();
-            this.loadingState = false;
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg)
-            }
-            this.formData = resp.data;
-        },
-       async saveForm(){
-            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
-            if(!validate){ return false }
-            this.isSaveing = true;
-            var resp = await this.$API.mShop.save.post(this.formData);
-            this.isSaveing = false;
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg);
-            }
-            this.$message.success(resp.msg);
-        },
-        downloadImage1() {
-            // 创建 a 标签
-            const link = document.createElement('a')
-            // 设置下载属性
-            link.href = this.formData.qrcode
-            link.download = '店铺收款二维码_' + new Date().getTime() + '.jpg' // 文件名
-            // 触发点击
-            document.body.appendChild(link)
-            link.click()
-            // 移除标签
-            document.body.removeChild(link)
-            this.$message.success('下载成功')
-        }
-    }
-}
-</script>
-
-<style>
-.font-s14{font-size: 14px;}
-.text-center{text-align: center;}
-.qrcode{border: 1px solid #ccc;padding: 5px;border-radius: 5px;}
-.qrcode img{width: 100%;height: 100%;}
-.qrcode-down{width: 100%;margin-top: 10px;}
-</style>

+ 0 - 86
src/views/merchant/shop/renew/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 - 179
src/views/merchant/shop/renew/index.vue

@@ -1,179 +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"></el-tab-pane>
-                <el-tab-pane label="购买记录" name="2"></el-tab-pane>
-            </el-tabs>
-        </div>
-        <el-main class="nopadding">
-            <div class="table-container">
-                <div class="renew-buy" v-if="activeName==1" v-loading="isLoading">
-                    <div class="shop-info">
-                        <div class="info-item">店铺名称:{{ shopData.shop_name }}</div>
-                        <div class="info-item">服务有效期:{{ shopData.vip_end }}</div>
-                        <div class="info-item">
-                            <el-tooltip effect="dark" content="套餐购买时间:从之前套餐到期的时间开始叠加计算" placement="top-start">
-                                <el-icon><el-icon-question-filled /></el-icon>
-                            </el-tooltip>
-                        </div>
-                    </div>
-                    <div class="shop-recharge">
-                        <div class="title">选择服务套餐</div>
-                        <div class="recharge-list">
-                            <div :class="payIndex==indx?'recharge-item active':'recharge-item'" v-for="(item,indx) in comboData" :key="indx" @click="checkPay(indx)">
-                                <div class="name">{{ item.name }}</div>
-                                <div class="price"><span>¥</span>{{ item.f_money }}<i>¥{{ item.f_old_money }}</i></div>
-                                <div class="time">{{ item.time }}{{ item.unit==1?'天':'年' }}</div>
-                                <div class="sale">已优惠{{ item.diff }}元</div>
-                                <div class="check"><el-icon><el-icon-select /></el-icon></div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="margin-top-15 checkbox-form">
-                        <el-checkbox v-model="privacy" @change="showPrivacy">
-                            <template #default>
-                                <div class="privacy">同意并接受<span>《订购及服务协议》</span></div>
-                            </template>
-                        </el-checkbox>
-                    </div>
-                    <div data-rule-type="1">
-                        <div class="pay-qrcode">
-                            <div class="name">扫码支付</div>
-                            <div class="qrcode-body">
-                                <div class="qrcode-img">
-                                    <div class="img"><img :src="payQrcode"></div>
-                                    <div class="pay-tips">
-                                        <i class="layui-icon layui-icon-login-wechat"></i>扫码支付
-                                    </div>
-                                </div>
-                                <div class="qrcode-money">
-                                    <div class="money"><span>实付:</span>{{ payMoney }}<span>元</span></div>
-                                    <p class="h">温馨提示</p>
-                                    <p>付款后服务立即生效</p>
-                                    <p>多次购买套餐,可叠加服务时间</p>
-                                    <p>开通后,如需发票,请联系客户经理 如有</p>
-                                    <p>其它问题欢迎随时联系客服</p>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull" v-if="activeName==2"></tablePage>
-            </div>
-        </el-main>
-    </el-container>
-	<el-dialog title="订购及服务协议" v-model="visible" :width="680" destroy-on-close :close-on-click-modal="false" :show-close="false">
-		<div class="showPrivacy">
-			<div v-html="privacyTxt"></div>
-		</div>
-		<template #footer>
-			<el-button type="primary" @click="showPrivacyState">我已阅读并同意</el-button>
-		</template>
-	</el-dialog>
-</template>
-
-<script>
-import tablePage from './components/table';
-export default {
-    components: {
-        tablePage
-    },
-    data() {
-        return {
-            activeName:"1",
-            isLoading:false,
-            shopData:{},
-            comboData:[],
-            payIndex:0,
-            visible:false,
-            privacy:false,
-            privacyTxt:"",
-            payMoney:0,
-            payQrcode:"https://inmei-print.oss-cn-guangzhou.aliyuncs.com/e2/7ade2a30e1bd50f02b5c245a6d4a28.jpg"
-        }
-    },
-    mounted(){
-        this.getRenewData()
-    },
-    methods: {
-        checkPay(index){
-            this.payIndex = index;
-            this.payMoney = this.comboData[index].f_money
-            this.privacy = false;
-            this.payQrcode = "https://inmei-print.oss-cn-guangzhou.aliyuncs.com/e2/7ade2a30e1bd50f02b5c245a6d4a28.jpg"
-        },
-		showPrivacy(){
-			this.visible = true;
-            this.privacy = false;
-		},
-		async showPrivacyState(){
-			this.visible = false;
-            var comboId = this.comboData[this.payIndex].id;
-            var loading = this.$loading();
-            var resp = await this.$API.mRenew.qrcode.post({"comboId":comboId});
-            loading.close()
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg)
-            }
-            this.payQrcode = resp.data.qrcode;
-			if (this.privacy == false) {
-				this.privacy = true;
-			}
-		},
-        tabClick(event){
-            this.activeName = event;
-        },
-        async getRenewData() {
-            this.isLoading = true;
-            var resp = await this.$API.mRenew.detail.get();
-            this.isLoading = false;
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg)
-            }
-            this.shopData = resp.data.shop;
-            this.comboData = resp.data.combo;
-            this.payMoney = this.comboData[0].f_money
-        }
-    }
-}
-</script>
-
-<style>
-.privacy {
-	color: #333;
-}
-.privacy span {
-	color: #f00;
-}
-.margin-top-15{margin-top: 15px;}
-.shop-info{background-color: #f7f7fa;border-radius: 5px;padding: 15px 25px;display: flex;align-items: center;gap: 20px;font-size: 14px;}
-.shop-info .info-item{display: flex;align-items: center;}
-.shop-recharge .title{font-size: 16px;color: #252631;font-weight: 500;margin: 20px 0;}
-.recharge-list{display: flex;align-items: center;gap: 20px;}
-.recharge-item{border: 1px solid #dedede;border-radius: 10px;width: 298px;height: 160px;position: relative;cursor: pointer;}
-.recharge-item.active{background: #c5e4ff;border: 1px solid #005bac;}
-.recharge-item .name{padding: 24px 20px 16px;font-size: 14px;color: #252631;}
-.recharge-item .price{text-align: center;color: #005bac;font-weight: 600;font-size: 36px;}
-.recharge-item .price span{font-size: 18px;}
-.recharge-item .price i{font-style: normal;font-size: 14px;color: #7c7c7e;text-decoration: line-through;padding-left: 10px;}
-.recharge-item .time{font-size: 18px;color: #005bac;text-align: center;margin: 20px 0;}
-.recharge-item .sale{position: absolute;width: 117px;height: 34px;line-height: 34px;text-align: center;border-radius: 17px 17px 17px 0;box-shadow: 0 2px 11px 0 #ffcbbb;color: #fff;font-size: 14px;font-weight: 500;top: 0;transform: translateY(-50%);right: 0;background: linear-gradient(90deg, #fba67d, #fe7a5f);}
-.recharge-item .check{position: absolute;right: -1px;bottom: -1px;background-color: #005bac;color: #fff;width: 40px;height: 40px;line-height: 40px;text-align: center;border-radius: 10px 0 10px 0;display: none;}
-.recharge-item.active .check{display: block;}
-.recharge-item .check i{font-size: 24px;font-style: normal;font-weight: bold;}
-.checkbox-form{display: flex;align-items: center;}
-.checkbox-form .layui-form-checkbox[lay-skin=primary]>div{padding-right: 0;}
-.pay-qrcode{margin-top: 20px;background-color: #f7f7fa;border-radius: 5px;padding: 15px 25px;}
-.pay-qrcode .name{font-size: 18px;color: #333;margin-bottom: 10px;}
-.qrcode-body{display: flex;align-items: flex-end;}
-.qrcode-img{border: 1px solid #dedede;padding: 10px;border-radius: 10px;background-color: #fff;width: 230px;margin-right: 20px;}
-.qrcode-img .pay-tips{text-align: center;font-size: 14px;color: #333;display: flex;align-items: center;justify-content: center;margin: 20px 0;}
-.qrcode-img .img{height: 230px;display: flex;align-items: center;justify-content: center;}
-.qrcode-img img{width: 100%;height: 100%;}
-.qrcode-img .pay-tips i{padding-right: 5px;color: #1cae5b;font-size: 24px;}
-.qrcode-money .money{font-size: 36px;color: #f00;font-weight: bold;margin-bottom: 20px;}
-.qrcode-money .money span{font-size: 18px;}
-.qrcode-money .h{font-weight: bold;font-size: 14px;}
-.qrcode-money p{font-size: 14px;color: #0C0C0C;line-height: 32px;}
-</style>

+ 0 - 148
src/views/merchant/shop/user/components/form.vue

@@ -1,148 +0,0 @@
-<template>
-    <el-dialog :title="titleMap[mode]" v-model="visible" :width="600" 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">
-            <fieldset>
-                <legend><el-tag>基础信息</el-tag></legend>
-                <el-row :gutter="15">
-                    <el-col :span="24" v-if="type == 3">
-                    <el-form-item label="所属店铺" prop="store_id">
-                        <el-input v-model="formData.store_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="12">
-                        <el-form-item label="联系人" prop="contact_name">
-                            <el-input v-model="formData.contact_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="contact_mobile">
-                            <el-input v-model="formData.contact_mobile" clearable placeholder="请输入联系电话"></el-input>
-                            <div class="el-form-item-msg"></div>
-                        </el-form-item>
-                    </el-col>
-                </el-row>
-            </fieldset>
-            <fieldset v-if="mode=='add'">
-                <legend><el-tag>账号信息</el-tag></legend>
-                <el-row :gutter="15">
-                    <el-col :span="12">
-                        <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="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="12">
-                        <el-form-item label="登录密码" prop="password">
-                            <el-input type="password" v-model="formData.password" clearable show-password placeholder="请输入登录密码"></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :span="12">
-                        <el-form-item label="确认密码" prop="password2">
-                            <el-input type="password" v-model="formData.password2" clearable show-password placeholder="请再次输入密码"></el-input>
-                        </el-form-item>
-                    </el-col>
-                </el-row>
-            </fieldset>
-        </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 {
-            stepActive:1,
-            loading: false,
-            mode:"add",
-            titleMap:{
-                add:"新增员工账号",
-                edit:"编辑员工账号",
-            },
-            visible: false,
-            isSaveing: false,
-            formData:{},
-            type:2,
-            submitState:false,
-            disabled:false,
-            rules:{
-                username: [
-                    {required: true, message: '请输入登录账号'}
-                ],
-                truename: [
-                    {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 = 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(submitData.password)
-            submitData.password2 = this.$TOOL.crypto.MD5(submitData.password2)
-            var resp = await this.$API.mStaff.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 - 96
src/views/merchant/shop/user/components/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.mStaff.passwd.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>

+ 0 - 46
src/views/merchant/shop/user/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 - 127
src/views/merchant/shop/user/components/table.vue

@@ -1,127 +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="truename" width="150" fixed="left">
-            <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="truename" width="150">
-            <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="账号类型" prop="status" width="120">
-            <template #default="scope">
-                <div class="status-success" v-if="scope.row.type==2"><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="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="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">
-                <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="操作" width="200" 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
-    },
-    data(){
-        return {
-            list: {
-                apiObj: this.$API.mStaff.list
-            },
-            dataSelect:[],
-            dataSelectFull:[],
-            searchKey:{}
-        }
-    },
-    methods: {
-        async table_del(data){
-            var resp = await this.$API.mStaff.del.post({"id":data.id});
-            if (resp.code == 0) {
-                return this.$message.error(resp.msg)
-            }
-            this.$message.success(resp.msg)
-            this.$refs.table.refresh()
-        },
-        table_view(data){
-            this.$nextTick(() => {
-                this.$refs.detailMain.open().setData(data)
-            })
-        },
-        refresh(){
-            this.$refs.table.refresh()
-        },
-        upData(data){
-            this.$refs.table.upData(data)
-        },
-        handleSuccess(){
-            this.$refs.table.refresh()
-        },
-        sortChange(event){
-            if (event.order) {
-                var data = {
-                    "field":event.prop,
-                    "order":event.order
-                }
-                this.$refs.table.upData(data)
-            } else {
-                this.$refs.table.reload(this.searchKey)
-            }
-            return ;
-        },
-        selectionChange(event){
-            this.dataSelect = [];
-            var arr = [];
-            var arrCompany = [];
-            event.forEach(function(val,index){
-                arr[index] = val.id;
-                arrCompany[index] = val;
-            });
-            this.dataSelectFull = arrCompany;
-            this.dataSelect = arr;
-            this.$emit("success",this.dataSelect);
-            this.$emit("successFull",this.dataSelectFull);
-        },
-        table_passwd(row){
-            this.$nextTick(() => {
-                this.$refs.userPasswd.open("edit").setData(row)
-            })
-        },
-    }
-}
-</script>

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

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

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

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

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

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

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

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