| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405 |
- @extends('layouts.base')
- @section('title', trans('模块编辑'))
- @section('content')
- @include('public.admin.uploadMultimediaImg')
- @include('public.admin.tinymceee')
- <link rel="stylesheet" href="{{resource_get('plugins/pc-terminal-two/views/css/index.css')}}">
- <link rel="stylesheet" href="{{resource_get('plugins/pc-terminal-two/views/css/vue-img.css')}}">
- <script src="{{resource_get('static/yunshop/tinymce4.7.5/tinymce.min.js')}}"></script>
- <div class="all">
- <div id="app" v-cloak>
- <el-form ref="form" :model="form" :rules="rules" label-width="15%">
- <div class="vue-main" style="min-height: 500px;">
- <div class="vue-main-title">
- <div class="vue-main-title-left"></div>
- <div class="vue-main-title-content">模块编辑</div>
- <el-button type="primary" class="createModule" @click="returnModule">返回列表</el-button>
- </div>
- <div class="vue-main-form">
- <el-form-item label="排序" prop="">
- <el-input type="age" maxlength="15" v-model.number="form.sort" clearable
- style="width:30%"></el-input>
- </el-form-item>
- <el-form-item label="状态">
- <el-switch v-model="form.status" :active-value="1" :inactive-value="0"></el-switch>
- </el-form-item>
- <el-form-item label="标题" prop="title">
- <el-input v-model="form.title" clearable style="width:50%"></el-input>
- </el-form-item>
- <el-form-item label="副标题" prop="subtitle">
- <el-input v-model="form.subtitle" clearable style="width:50%"></el-input>
- </el-form-item>
- <el-form-item label="跳转分类链接" prop="category_link">
- <el-input v-model="form.category_link" clearable style="width:50%"></el-input>
- </el-form-item>
- <el-form-item label="选择供应商">
- <el-button @click="querySupplier">点击选择供应商</el-button>
- <el-dialog title="供应商" center :visible.sync="dialogFormVisible">
- <template>
- <el-form :inline="true" :model="searchForm" class="demo-form-inline">
- <el-form-item label="">
- <el-input v-model="searchForm.member_key" placeholder="id/手机号码/昵称/姓名"></el-input>
- </el-form-item>
- <el-form-item label="">
- <el-input v-model="searchForm.supplier_username" placeholder="供应商用户名"></el-input>
- </el-form-item>
- <el-form-item label="">
- <el-button type="primary" @click="getSupplier">搜索</el-button>
- </el-form-item>
- </el-form>
- <el-table :data="supplier.data">
- <el-table-column prop="" label="会员ID">
- <template slot-scope="scope">
- <div v-if="scope.row.has_one_member">[[scope.row.has_one_member.uid]]</div>
- </template>
- </el-table-column>
- <el-table-column prop="" label="会员信息">
- <template slot-scope="scope">
- <div>
- <div v-if="scope.row.has_one_member"><img :src="scope.row.has_one_member.avatar_image" alt="" style="width:40px;height:40px;border-radius:50%"></div>
- <div style="line-height:32px;color:#29BA9C;cursor: pointer;" class="vue-ellipsis" v-if="scope.row.has_one_member">[[scope.row.has_one_member.nickname]]</div>
- </div>
- </template>
- </el-table-column>
- <el-table-column prop="" label="供应商ID">
- <template slot-scope="scope">
- <div>[[scope.row.id]]</div>
- </template>
- </el-table-column>
- <el-table-column prop="" label="供应商用户名">
- <template slot-scope="scope">
- <div>[[scope.row.username]]</div>
- </template>
- </el-table-column>
- <el-table-column label="操作">
- <template slot-scope="scope">
- <el-button @click="selectSupplier(scope.row)">选择</el-button>
- </template>
- </el-table-column>
- </el-table>
- <el-row>
- <el-col align="right">
- <el-pagination layout="prev, pager, next"
- @current-change="searchStorePage"
- :total="supplier.total"
- :page-size="supplier.per_page"
- :current-page="supplier.current_page"
- background
- ></el-pagination>
- </el-col>
- </el-row>
- </template>
- <div slot="footer" class="dialog-footer">
- <el-button type="primary" @click="dialogFormVisible = false">关闭</el-button>
- </div>
- </el-dialog>
- <div class="demo-image storeInfo">
- <div class="block storeInfoL" v-for="supplier in form.select_supplier" :key="supplier.id">
- <el-button @click="selectSupplier(scope.row)">
- <i class="el-icon-circle-close iconSet" @click="delStore(supplier.id)"></i>
- <div style="text-align: justify;">供应商ID: [[ supplier.id ]]</div>
- <div style="text-align: justify;width:200px;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;-o-text-overflow:ellipsis;
- ">供应商用户名: [[ supplier.username ]]</div>
- </el-button>
- </div>
- </div>
- </el-form-item>
- <el-form-item label="供应商自动切换时间" prop="">
- <el-input type="age" maxlength="15" v-model.number="form.switch_second" clearable
- style="width:30%"><template slot="append">秒</template></el-input>
- <p style="color:#d6d6d6;">为0为空不切换</p>
- </el-form-item>
- <el-form-item label="左侧轮播图一">
- <div class="upload-box" @click="openUpload('carousel_first_img',1,'one')" v-if="!form.carousel_first_img_url" style="width:150px;height:250px;">
- <i class="el-icon-plus" style="font-size:32px;"></i>
- </div>
- <div @click="openUpload('carousel_first_img',1,'one')" class="upload-boxed" v-if="form.carousel_first_img_url" style="width:150px;height:250px;">
- <img :src="form.carousel_first_img_url" alt=""
- style="width:150px;height:250px;border-radius: 5px;cursor: pointer;">
- <div class="upload-boxed-text">点击重新上传</div>
- <i class="el-icon-close" @click.stop="clearImg('carousel_first_img')" title="点击清除图片"></i>
- </div>
- <span style="margin-left: 20px;color:#d6d6d6;position: absolute;top: 220px;">建议尺寸: 268 * 610</span>
- </el-form-item>
- <el-form-item label="左侧轮播图一跳转链接" prop="carousel_first_link">
- <el-input v-model="form.carousel_first_link" clearable style="width:50%" ></el-input>
- </el-form-item>
- <el-form-item label="左侧轮播图二">
- <div class="upload-box" @click="openUpload('carousel_second_img',1,'one')" v-if="!form.carousel_second_img_url" style="width:150px;height:250px;">
- <i class="el-icon-plus" style="font-size:32px;"></i>
- </div>
- <div @click="openUpload('carousel_second_img',1,'one')" class="upload-boxed" v-if="form.carousel_second_img_url" style="width:150px;height:250px;">
- <img :src="form.carousel_second_img_url" alt=""
- style="width:150px;height:250px;border-radius: 5px;cursor: pointer;">
- <div class="upload-boxed-text">点击重新上传</div>
- <i class="el-icon-close" @click.stop="clearImg('carousel_second_img')" title="点击清除图片"></i>
- </div>
- <span style="margin-left: 20px;color:#d6d6d6;position: absolute;top: 220px;">建议尺寸: 268 * 610</span>
- </el-form-item>
- <el-form-item label="左侧轮播图二跳转链接" prop="carousel_second_link">
- <el-input v-model="form.carousel_second_link" clearable style="width:50%" ></el-input>
- </el-form-item>
- <el-form-item label="左侧轮播图三">
- <div class="upload-box" @click="openUpload('carousel_third_img',1,'one')" v-if="!form.carousel_third_img_url" style="width:150px;height:250px;">
- <i class="el-icon-plus" style="font-size:32px;"></i>
- </div>
- <div @click="openUpload('carousel_third_img',1,'one')" class="upload-boxed" v-if="form.carousel_third_img_url" style="width:150px;height:250px;">
- <img :src="form.carousel_third_img_url" alt=""
- style="width:150px;height:250px;border-radius: 5px;cursor: pointer;">
- <div class="upload-boxed-text">点击重新上传</div>
- <i class="el-icon-close" @click.stop="clearImg('carousel_third_img')" title="点击清除图片"></i>
- </div>
- <span style="margin-left: 20px;color:#d6d6d6;position: absolute;top: 220px;">建议尺寸: 268 * 610</span>
- </el-form-item>
- <el-form-item label="左侧轮播图三跳转链接" prop="carousel_third_link">
- <el-input v-model="form.carousel_third_link" clearable style="width:50%" ></el-input>
- </el-form-item>
- </div>
- </div>
- <div class="vue-page">
- <div class="vue-center">
- <el-button type="primary" @click="submitForm">提交</el-button>
- </div>
- </div>
- </el-form>
- <upload-multimedia-img :upload-show="uploadShow" :type="typeStatus" :name="chooseImgName" :sel-Num="selNum"
- @replace="changeProp" @sure="sureImg"></upload-multimedia-img>
- </div>
- </div>
- <script>
- let supplier_open = ({!! app('plugins')->isEnabled('supplier') ? 1 : 0 !!})
- let module = JSON.parse(`{!! $module !!}`)
- console.log(module)
- let app = new Vue({
- el: "#app",
- delimiters: ['[[', ']]'],
- data() {
- return {
- form: {
- id: module.id,
- sort: module.sort,
- title: module.title,
- subtitle: module.subtitle,
- status: module.status,
- category_link: module.category_link,
- switch_second: module.switch_second,
- carousel_first_img: module.carousel_first_img,
- carousel_first_img_url: module.carousel_first_img_url,
- carousel_first_link: module.carousel_first_link,
- carousel_second_img: module.carousel_second_img,
- carousel_second_img_url: module.carousel_second_img_url,
- carousel_second_link: module.carousel_second_link,
- carousel_third_img: module.carousel_third_img,
- carousel_third_img_url: module.carousel_third_img_url,
- carousel_third_link: module.carousel_third_link,
- select_supplier: module.select_supplier
- },
- uploadShow: false,
- typeStatus: '',
- selNum: '',
- chooseImgName: '',
- submit_url: '',
- showVisible: false,
- repeated_submit: false,
- rules: {
- title: [
- {required: true, message: '请输入标题', trigger: 'blur'},
- ],
- subtitle: [
- {required: true, message: '请输入副标题', trigger: 'blur'},
- ],
- category_link: [
- {required: true, message: '请输入分类跳转链接', trigger: 'blur'},
- ],
- },
- searchForm: {
- member_key: ''
- },
- dialogFormVisible: false,
- supplier: [],
- storesPage: 1,
- supplier_open: supplier_open
- }
- },
- methods: {
- // 返回营销码列表
- returnModule() {
- history.back()
- },
- // 提交订单生成二维码
- submitForm() {
- if (this.srepeated_submit) return false
- let formData = new FormData();
- formData.append('id', this.form.id)
- formData.append('sort', this.form.sort)
- formData.append('title', this.form.title)
- formData.append('subtitle', this.form.subtitle)
- formData.append('status', this.form.status)
- formData.append('category_link', this.form.category_link)
- formData.append('switch_second', this.form.switch_second)
- formData.append('carousel_first_img', this.form.carousel_first_img)
- formData.append('carousel_first_link', this.form.carousel_first_link)
- formData.append('carousel_second_img', this.form.carousel_second_img)
- formData.append('carousel_second_link', this.form.carousel_second_link)
- formData.append('carousel_third_img', this.form.carousel_third_img)
- formData.append('carousel_third_link', this.form.carousel_third_link)
- formData.append('select_supplier', JSON.stringify(this.form.select_supplier))
- this.$refs['form'].validate((valid) => {
- if (valid) {
- this.srepeated_submit = true
- this.$http.post(`{!! yzWebFullUrl('plugin.pc-terminal-two.backend.supplier-module.update') !!}`, formData).then(function (response) {
- if (response.data.result) {
- this.$message({
- message: response.data.msg,
- type: 'success'
- });
- setTimeout(function () {
- window.location.href = `{!! yzWebUrl('plugin.pc-terminal-two.backend.supplier-module.index') !!}`
- }, 200);
- } else {
- this.$message({
- message: response.data.msg,
- type: 'error'
- });
- }
- }, function (response) {
- this.$message({
- message: response.data.msg,
- type: 'error'
- });
- });
- } else {
- this.srepeated_submit = false
- this.$message({
- message: '请检查输入参数',
- type: 'error'
- });
- return false;
- }
- })
- },
- changeColor(color) {
- this.form.color = color
- },
- clearImg(img) {
- this.form[img] = '';
- this.form[img + '_url'] = '';
- this.$forceUpdate();
- },
- openUpload(str, type, sel) {
- this.chooseImgName = str;
- this.uploadShow = true;
- this.typeStatus = String(type)
- this.selNum = sel
- },
- sureImg(name, uploadShow, fileList) {
- if (fileList.length <= 0) {
- return
- }
- this.form[name] = fileList[0].attachment
- this.form[name + '_url'] = fileList[0].url
- },
- changeProp(val) {
- if (val == true) {
- this.uploadShow = false;
- } else {
- this.uploadShow = true;
- }
- },
- getSupplier() {
- let params = {
- search: this.searchForm,
- page: this.storesPage
- }
- this.$http.post(`{!! yzWebFullUrl('plugin.pc-terminal-two.backend.supplier-module.search-supplier') !!}`, params).then(function (response) {
- if (response.data.result) {
- this.supplier = response.data.data
- }
- });
- },
- selectSupplier(supplier)
- {
- let selected = {
- id: supplier.id,
- username: supplier.username,
- }
- let found = this.form.select_supplier.find(item => { return item.id === selected.id })
- if (!found) {
- this.form.select_supplier.push(selected)
- }
- },
- querySupplier() {
- if (!this.supplier_open) {
- this.$message({
- message: '请开启供应商插件',
- type: 'error'
- });
- return;
- }
- this.dialogFormVisible = true
- this.getSupplier()
- },
- searchStorePage(page) {
- this.storesPage = page
- this.getSupplier()
- },
- delStore(store_id) {
- this.form.select_supplier.splice(this.form.select_supplier.findIndex(e => e.id === store_id), 1)
- }
- }
- })
- </script>
- <style>
- .createModule {
- background-color: #e5f6f1;
- color: #48c1a7;
- }
- .storeInfo {
- display: flex;
- flex-wrap: wrap;
- }
- .storeInfoL {
- margin-right: 10px;
- margin-top: 10px;
- display: flex;
- flex-direction: column;
- position: relative;
- background: white;
- }
- .iconSet {
- position: absolute;
- right: 2px;
- top: 1px;
- z-index: 1;
- }
- </style>
- @endsection
|