xieruidong 2 years ago
parent
commit
3e7dd98ee8

+ 36 - 0
app/admin/controller/Merchant.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\data\model\DataMerchants;
+use think\admin\Controller;
+/**
+ * 商家管理
+ * Class Xw
+ * @package app\admin\controller\Xw
+ */
+class Merchant extends Controller
+{
+    /**
+     * 商家审核管理
+     * @auth true
+     * @menu true
+     */
+    public function index(){
+        $this->title='商家审核管理';
+        DataMerchants::mQuery()
+            ->like('name')
+            ->dateBetween('create_at')
+            ->layTable();
+    }
+    /**
+     * 商家审核详情
+     * @auth true
+     * @menu true
+     */
+    public function audit_detail($id){
+        $row=DataMerchants::with(['user'])->find($id    );
+        $this->assign('row',$row);
+        $this->fetch('form');
+    }
+}

+ 119 - 0
app/admin/view/merchant/form.html

@@ -0,0 +1,119 @@
+{extend name="../../admin/view/main"}
+{block name='content'}
+<style>
+    .layui-card-body{
+        background: white;
+    }
+    #newForm{
+        width: 100%;
+    }
+    .merMedias{
+        width: 200px;
+        height: 200px;
+    }
+</style>
+<div id="newForm">
+    <el-form :model="form" label-width="140px" ref="form" :disabled="audit!==1">
+        <el-form-item label="申请用户" prop="b_type">
+            {{form.user.nickname}}
+        </el-form-item>
+        <el-form-item label="申请用户ID" prop="b_type">
+            {{form.uuid}}
+        </el-form-item>
+        <el-form-item label="商家头像" prop="title">
+            <el-avatar :src="form.head_img"></el-avatar>
+        </el-form-item>
+        <el-form-item label="商家名称" prop="b_type">
+            {{form.name}}
+        </el-form-item>
+        <el-form-item label="商家地址" prop="b_type">
+            {{form.full_address}}
+        </el-form-item>
+        <el-form-item label="联系人" prop="b_type">
+            {{form.contact_name}}
+        </el-form-item>
+        <el-form-item label="联系电话" prop="b_type">
+            {{form.contact_phone}}
+        </el-form-item>
+        <el-form-item label="商家简介" prop="b_type">
+            <div>
+                {{form.intro}}
+            </div>
+            <div>
+                <template v-for="(item,idx) in form.imgs_videos" :key="idx">
+                    <el-image class="merMedias" v-if="item.split('.')[1].toLowerCase()!=='mp4'" :src="item" fit="cover" @click="showImg(item)"></el-image>
+                    <video class="merMedias" :src="item" v-else></video>
+                </template>
+            </div>
+        </el-form-item>
+        <el-form-item label="营业执照" prop="b_type">
+            <el-image class="merMedias" :src="form.business_img" fit="cover" @click="showImg(form.business_img)"></el-image>
+        </el-form-item>
+        <el-form-item label="审核结果" prop="audit" :rules="{message:'请选择',required:true}">
+            <el-radio :label="1" v-model="form.audit">待审核</el-radio>
+            <el-radio :label="2" v-model="form.audit">审核通过</el-radio>
+            <el-radio :label="3" v-model="form.audit">审核不通过</el-radio>
+        </el-form-item>
+        <el-form-item label="审核原因" prop="why" :rules="{message:'请输入',required:true}">
+            <template v-if="audit===1">
+            <el-input v-model="form.why"></el-input>
+            </template>
+            <template v-else>
+                {{form.audit_at}}:{{form.why}}
+            </template>
+        </el-form-item>
+    </el-form>
+    <div class="layui-form-item text-center">
+        <button class="layui-btn" type="button" @click="save" :loading="saving">保存数据</button>
+        <button class="layui-btn layui-btn-danger" data-close data-confirm1="确定要取消编辑吗?" type='button'>取消编辑</button>
+    </div>
+</div>
+<script>
+    let vo={:json_encode($row?:null,256)};
+    let audit=vo.audit
+    require(['ckeditor'], function () {
+
+    });
+    new Vue({
+        el:'#newForm',
+        data:()=>({
+            form:vo||{
+            },
+            audit,
+            saving:false,
+        }),
+        methods:{
+            showImg(src){
+                $.previewImage(src)
+            },
+            save(){
+                let _this=this,
+                    form=this.form
+                this.$refs.form.validate(v=>{
+                    if(!v){
+                        return
+                    }
+                    $.ajax('{:sysuri()}',{
+                        data:form,
+                        type:'post',
+                        beforeSend(){
+                            _this.saving=true
+                        },
+                        success({code,info}){
+                            if(code){
+                                _this.$message.success('保存成功')
+                                window.history.back()
+                            }else{
+                                _this.$message.error(info)
+                            }
+                        },
+                        complete(){
+                            _this.saving=false
+                        }
+                    })
+                })
+            }
+        }
+    })
+</script>
+{/block}

+ 106 - 0
app/admin/view/merchant/index.html

@@ -0,0 +1,106 @@
+{extend name='table'}
+
+{block name="button"}
+
+{block name="content"}
+<div class="layui-tab layui-tab-card">
+    <ul class="layui-tab-title">
+        {foreach ['index'=>'招标管理',] as $k=>$v}
+        <li data-open="{:url('index')}?type={$k}">{$v}</li>{/foreach}
+    </ul>
+    <div class="layui-tab-content">
+        <form action="{:sysuri()}" autocomplete="off" class="layui-form layui-form-pane form-search" method="get" onsubmit="return false">
+
+            <div class="layui-form-item layui-inline">
+                <label class="layui-form-label">商家名称</label>
+                <label class="layui-input-inline">
+                    <input class="layui-input" name="name" placeholder="商家名称" value="{$get.name|default=''}">
+                </label>
+            </div>
+
+            <div class="layui-form-item layui-inline">
+                <label class="layui-form-label">创建时间</label>
+                <label class="layui-input-inline">
+                    <input class="layui-input" data-date-range name="create_at" placeholder="请选择创建时间" value="{$get.create_at|default=''}">
+                </label>
+            </div>
+
+            <div class="layui-form-item layui-inline">
+                <button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
+            </div>
+        </form>
+        <table id="NewsTable" data-url="{:sysuri()}" data-target-search="form.form-search"></table>
+    </div>
+</div>
+{/block}
+
+{block name='script'}
+<script>
+    $(function () {
+        // 初始化表格组件
+        $('#NewsTable').layTable({
+            even: true, height: 'full',
+            sort: {field: 'id desc', type: 'desc'},
+            where: {},
+            cols: [[
+                {checkbox: true, fixed: true},
+                {field: 'id', title: 'ID', align: "center", width: 80},
+                {
+                    field: 'head_img', title: '头像', width: 60, align: 'center', templet: function (d) {
+                        if (!d.head_img) return '-';
+                        return layui.laytpl('<div class="headimg headimg-ss shadow-inset margin-0" data-tips-image data-tips-hover data-lazy-src="{{d.head_img}}"></div>').render(d);
+                    }
+                },
+                {field: 'type.name', title: '商家名称', align: "center", width: 150,templet(d){
+                    return d.name
+                    }},
+                {field: 'full_address', title: '地址', align: 'left', minWidth: 140},
+                {field: 'contact_name', title: '联系人', align: 'center', minWidth: 80, style: 'color:blue;font-size:16px'},
+                {field: 'contact_phone', title: '联系电话', align: 'center', minWidth: 80, style: 'color:blue;font-size:16px'},
+                {field: 'status', title: '状态', align: 'center', minWidth: 110, templet(d){
+                    return d.audit_text
+                    }},
+                {field: 'create_at', title: '提交时间', align: 'center', minWidth: 170, sort: true},
+                {toolbar: '#toolbar', title: '操作面板', align: 'center', minWidth: 80, fixed: 'right'},
+            ]]
+        });
+
+        // 数据状态切换操作
+        layui.form.on('switch(StatusSwitch)', function (obj) {
+            var data = {id: obj.value, status: obj.elem.checked > 0 ? 1 : 0};
+            $.form.load("{:url('state')}", data, 'post', function (ret) {
+                if (ret.code < 1) $.msg.error(ret.info, 3, function () {
+                    $('#NewsTable').trigger('reload');
+                }); else {
+                    $('#NewsTable').trigger('reload');
+                }
+                return false;
+            }, false);
+        });
+    });
+
+</script>
+
+<!-- 列表排序权重模板 -->
+<script type="text/html" id="SortInputTpl">
+    <input type="number" min="0" data-blur-number="0" data-action-blur="{:sysuri()}" data-value="id#{{d.id}};action#sort;sort#{value}" data-loading="false" value="{{d.sort}}" class="layui-input text-center">
+</script>
+
+<!-- 数据状态切换模板 -->
+<script type="text/html" id="StatusSwitchTpl">
+    <!--{if auth("state")}-->
+    <input type="checkbox" value="{{d.id}}" lay-skin="switch" lay-text="已激活|已禁用" lay-filter="StatusSwitch" {{-d.status>0?'checked':''}}>
+    <!--{else}-->
+    {{-d.status ? '<b class="color-green">已启用</b>' : '<b class="color-red">已禁用</b>'}}
+    <!--{/if}-->
+</script>
+
+<!-- 数据操作工具条模板 -->
+<script type="text/html" id="toolbar">
+
+
+    <!--{if auth("audit_detail")}-->
+    <a class="layui-btn layui-btn-primary layui-btn-sm" data-modal="{:url('audit_detail')}?id={{d.id}}" data-area='["900px","100%"]'>查看详情</a>
+    <!--{/if}-->
+</script>
+{/block}

+ 15 - 0
app/data/model/DataMerchants.php

@@ -13,6 +13,10 @@ use think\admin\Model;
 class DataMerchants extends Model
 {
     use HasUser;
+    protected $append=[
+        'full_address',
+        'audit_text',
+    ];
     /**
      * 格式化创建时间
      * @param string $value
@@ -25,4 +29,15 @@ class DataMerchants extends Model
     public function getImgsVideosAttr($_,$model){
         return array_filter(explode(',',$model['imgs_videos']));
     }
+
+    public function getFullAddressAttr($_,$model){
+        return sprintf('%s%s%s%s',$model['province'],$model['city'],$model['area'],$model['address']);
+    }
+    public function getAuditTextAttr($_,$model){
+        return [
+            1=>'待审核',
+            2=>'审核通过',
+            3=>'审核部通过',
+        ][$model['audit']];
+    }
 }

+ 5 - 1
public/static/admin.js

@@ -980,8 +980,12 @@ $(function () {
     /*! 注册 data-modal 事件行为 */
     onEvent('click', '[data-modal]', function () {
         var un = undefined, emap = this.dataset, data = {open_type: 'modal'};
+        let area=null
+        if(emap.area && typeof emap.area==='string'){
+            area=JSON.parse(emap.area)
+        }
         return applyRuleValue(this, data, function () {
-            return $.form.modal(emap.modal, data, emap.title || this.innerText || '编辑', un, un, un, emap.area || emap.width || '800px', emap.offset || 'auto', emap.full !== un);
+            return $.form.modal(emap.modal, data, emap.title || this.innerText || '编辑', un, un, un, area||emap.area || emap.width || '800px', emap.offset || 'auto', emap.full !== un);
         })
     });