Procházet zdrojové kódy

管理后台-业务中心:存酒记录

panyong před 3 roky
rodič
revize
c2372eb58e

+ 1 - 0
htmldev/manage/src/api/index.js

@@ -50,6 +50,7 @@ axios.interceptors.response.use(response => {
 )
 
 export const fetch = (url, data = {}, method = 'post') => {
+  console.log(data)
   return new Promise((resolve, reject) => {
     axios({
       url,

+ 6 - 0
htmldev/manage/src/router/modules/business.js

@@ -137,6 +137,12 @@ const businessRouter = {
           meta: { title: '商品附加' }
         }
       ]
+    },
+    {
+      path: 'saveWine',
+      component: () => import('@/views/business/saveWine/index'),
+      name: 'BusinessSaveWine',
+      meta: { title: '存酒记录', icon: 'el-icon-goods' }
     }
   ]
 }

+ 17 - 15
htmldev/manage/src/views/business/outlet/list/index.vue

@@ -7,22 +7,18 @@
                clearable
                label-width="100px"
                class="mt-10">
-        <el-form-item label="创建时间:">
-          <el-date-picker
-            :editable="false"
-            v-model="time"
-            @change="timearr => {timearr ? (searchForm.start_time = timearr[0] + ' 00:00:00', searchForm.end_time = timearr[1] + ' 23:59:59') : searchForm.start_time = searchForm.end_time = undefined}"
-            type="daterange"
-            value-format="yyyy-MM-dd"
-            start-placeholder="开始时间"
-            end-placeholder="结束时间"
-          ></el-date-picker>
-        </el-form-item>
-        <el-form-item label="部门名称:">
-          <el-input v-model="searchForm.department_name" placeholder="请输入部门名称" clearable></el-input>
+        <el-form-item label="门店名称:">
+          <el-input
+            v-model="searchForm.bar_name"
+            placeholder="请输入门店名称"
+            clearable></el-input>
         </el-form-item>
         <el-form-item class="ml-10">
-          <el-button icon="el-icon-search" type="primary" @click="searchSubmit">查询</el-button>
+          <el-button
+            icon="el-icon-search"
+            type="primary"
+            @click="searchSubmit">查询
+          </el-button>
         </el-form-item>
         <el-form-item class="ml-10">
           <el-button icon="el-icon-plus"
@@ -73,13 +69,19 @@
                         :preview-src-list="props.row.bar_img_url">
               </el-image>
             </el-form-item>
+            <el-form-item label="创建时间">
+              <span>{{ props.row.created_at }}</span>
+            </el-form-item>
+            <el-form-item label="更新时间">
+              <span>{{ props.row.updated_at }}</span>
+            </el-form-item>
           </el-form>
         </template>
       </el-table-column>
       <el-table-column label="编号" prop="id" width="160"></el-table-column>
       <el-table-column label="酒吧名称" prop="bar_name"></el-table-column>
       <el-table-column label="门店地址" prop="bar_address"></el-table-column>
-      <el-table-column label="酒吧状态" width="100">
+      <el-table-column label="酒吧状态" sortable :sort-method="() => {}" width="100">
         <template slot-scope="scope">
           <p>{{ ['无效', '有效'][scope.row.bar_status] }}</p>
         </template>

+ 192 - 0
htmldev/manage/src/views/business/saveWine/details.vue

@@ -0,0 +1,192 @@
+<template>
+  <div>
+    <el-dialog :title="exData.id ? '编辑': '新增'"
+               :visible.sync="dialog"
+               width="50%"
+               :close-on-click-modal="false"
+               top="50px">
+      <el-form ref="form"
+               :model="form"
+               :rules="formRules"
+               label-width="160px">
+        <el-form-item prop="user_song_name"
+                      :rules="formRules.required"
+                      label="酒名:">
+          <el-col :span="16">
+            <el-input v-model="form.user_song_name"
+                      placeholder="请输入酒名"
+                      clearable></el-input>
+          </el-col>
+        </el-form-item>
+        <el-form-item prop="plan_cover_url"
+                      :rules="formRules.uploadImgs"
+                      label="实物图:">
+          <el-upload :on-remove="handleRemove"
+                     :on-success="handleAvatarSuccess"
+                     :before-upload="beforeAvatarUpload"
+                     :on-exceed="hadnleExceed"
+                     :accept="'image/*'"
+                     :limit="1"
+                     :file-list="fileList"
+                     list-type="picture-card"
+                     action="/api/admin/v1/upload/file"
+                     multiple>
+            <i class="el-icon-plus"></i>
+            <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过5M</div>
+          </el-upload>
+        </el-form-item>
+        <el-form-item prop="phone"
+                      :rules="formRules.mobile"
+                      label="用户手机号:">
+          <el-col :span="16">
+            <el-input v-model="form.phone"
+                      placeholder="请输入用户手机号"
+                      @input="form.phone = form.phone.replace(/[^\d]/g, '').slice(0, 11)"
+                      clearable></el-input>
+          </el-col>
+        </el-form-item>
+        <el-form-item prop="user_song_name"
+                      :rules="formRules.required"
+                      label="用户昵称:">
+          <el-col :span="16">
+            <el-input v-model="form.user_song_name"
+                      placeholder="请输入用户昵称"
+                      clearable></el-input>
+          </el-col>
+        </el-form-item>
+        <el-form-item prop="user_sign_status"
+                      :rules="formRules.required"
+                      label="状态:">
+          <el-radio v-model="form.user_sign_status"
+                    label="1">已取
+          </el-radio>
+          <el-radio v-model="form.user_sign_status"
+                    label="0">存酒中
+          </el-radio>
+        </el-form-item>
+        <el-form-item label="备注:">
+          <el-col :span="16">
+            <el-input v-model="form.note"
+                      type="textarea"
+                      rows="6">
+            </el-input>
+          </el-col>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer text-center">
+        <el-button @click="dialog = false">取 消</el-button>
+        <el-button type="primary" @click="handleSubmit">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { fen2Yuan, yuan2Fen } from '@/utils'
+import getCode from '@/views/ums/mixin/getCode'
+
+export default {
+  mixins: [getCode],
+  components: {},
+  props: {
+    value: {
+      type: Boolean,
+      default: true
+    },
+    exData: {
+      type: Object,
+      default: function () {
+        return {}
+      }
+    }
+  },
+  data () {
+    return {
+      dialog: !!this.value,
+      form: {
+        user_song_name: '', // 歌手名称
+        phone: '', // 手机号码
+        code: '', // 验证码
+        plan_cover_url: [],
+        user_sign_status: '1', // 艺人签约状态(0未签约1已签约)
+      },
+      fileList: []
+    }
+  },
+  methods: {
+    beforeAvatarUpload (file) {
+      const isLt2M = file.size / 1024 / 1024 < 5
+      if (!isLt2M) {
+        this.$message.error('上传图片大小不能超过 5MB!')
+      }
+      return isLt2M
+    },
+    handleRemove (file) {
+      let path = file.url
+      if (file.response && file.response.data) {
+        path = file.response.data.path
+      }
+      this.form.plan_cover_url = this.form.plan_cover_url.filter(item => item !== path)
+    },
+    handleAvatarSuccess (res) {
+      if (res.code === 200) {
+        const { path } = res.data
+        this.form.plan_cover_url.push(path)
+      } else {
+        this.$message.error('图片上传失败')
+      }
+    },
+    hadnleExceed (files, fileList) {
+      this.$message({
+        message: '商品图最多上传一张',
+        type: 'warning'
+      })
+    },
+    handleSubmit () {
+      // todo 艺人添加、艺人海报数组转字符串
+      const url = this.exData.id ? '/v1/user/member/song/modify' : ''
+      this.$refs.form.validate(async valid => {
+        if (valid) {
+          const data = await this.$fetch(url, {
+            ...this.form,
+            place_price: yuan2Fen(this.form.place_price)
+          })
+          if (data.code === 200) {
+            this.$message.success('提交成功')
+            this.$emit('success')
+            this.dialog = false
+          }
+        }
+      })
+    }
+  },
+  mounted () {
+    if (this.exData.id) {
+      this.$set(this.form, 'id', this.exData.id)
+      for (const key in this.exData) {
+        if (this.form.hasOwnProperty(key)) {
+          let value = this.exData[key]
+          if ((Array.isArray(value) && value.length >= 1) || (Object.prototype.toString.call(value) === '[object Object]') || (typeof value === 'string' && value) || typeof value === 'number') {
+            if (key === 'place_price') {
+              value = fen2Yuan(value)
+            }
+            this.$set(this.form, key, value)
+          }
+        }
+      }
+    }
+  },
+  watch: {
+    dialog (val) {
+      if (!val) this.$emit('input', val)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.top-tip {
+  margin-top: -20px;
+  margin-bottom: 20px;
+}
+</style>

+ 105 - 0
htmldev/manage/src/views/business/saveWine/index.vue

@@ -0,0 +1,105 @@
+<template>
+  <div class="padding-20">
+    <div class="search-box">
+      <el-form ref="form"
+               :inline="true"
+               :model="searchForm"
+               clearable
+               label-width="100px"
+               class="mt-10">
+        <el-form-item label="座位名称:">
+          <el-input v-model="searchForm.department_name" placeholder="请输入座位名称" clearable></el-input>
+        </el-form-item>
+        <el-form-item class="ml-10">
+          <el-button icon="el-icon-search" type="primary" @click="searchSubmit">查询</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+    <el-table :data="tableData"
+              stripe
+              v-loading="tableLoading"
+              fit
+              class="marginT-10 order-table"
+              border
+              :max-height="vheight">
+      <el-table-column label="ID" prop="id"></el-table-column>
+      <el-table-column label="酒名" prop="bar_name"></el-table-column>
+      <el-table-column label="用户昵称" prop="user_name"></el-table-column>
+      <el-table-column label="用户手机" prop="user_phone"></el-table-column>
+      <el-table-column label="状态" prop="user_birthday"></el-table-column>
+      <el-table-column label="录入时间" prop="user_sex"></el-table-column>
+      <el-table-column label="取酒时间" prop="created_at"></el-table-column>
+      <el-table-column label="录入人" prop="created_at"></el-table-column>
+      <el-table-column label="取酒人" prop="created_at"></el-table-column>
+      <el-table-column label="操作">
+        <template slot-scope="scope">
+          <el-button type="text"
+                     @click="edit(scope.row)">编辑
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      class="marginT-20"
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :hide-on-single-page="true"
+      :current-page="page"
+      :page-size="page_size"
+      :page-sizes="[10, 20, 100, 200, 300, 400]"
+      background
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="totalCount"/>
+    <detail v-if="detailsDialog.show"
+            v-model="detailsDialog.show"
+            :exData="detailsDialog.exData"
+            @success="init"></detail>
+  </div>
+</template>
+
+<script>
+import page from '@/mixin/page'
+import detail from './details'
+import axios from 'axios'
+
+export default {
+  mixins: [page],
+  components: {
+    detail,
+  },
+  data () {
+    return {
+      detailsDialog: {
+        show: false,
+        exData: {}
+      },
+      time: [],
+      searchForm: {
+        user_type: '0' // 用户类型(0用户1艺人2吧台3老板)
+      },
+      tableData: [],
+      tableUrl: '/v1/user/member/List'
+    }
+  },
+  methods: {
+    edit (row) {
+      this.detailsDialog.exData = row
+      this.detailsDialog.show = true
+    }
+  },
+  mounted () {
+    this.init()
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+.el-dropdown {
+  margin: 0 10px;
+
+  .el-dropdown-link {
+    cursor: pointer;
+    color: #409EFF;
+  }
+}
+</style>

+ 1 - 1
htmldev/manage/src/views/ums/boss/index.vue

@@ -26,7 +26,7 @@
               border
               :max-height="vheight">
       <el-table-column label="ID" prop="id"></el-table-column>
-      <el-table-column label="头像" prop="bar_name">
+      <el-table-column label="头像">
         <template slot-scope="scope">
           <el-image style="width: 100px; height: 100px"
                     :src="scope.row.user_head_url"

+ 1 - 1
htmldev/manage/src/views/ums/customer/index.vue

@@ -28,7 +28,7 @@
               border
               :max-height="vheight">
       <el-table-column label="ID" prop="id"></el-table-column>
-      <el-table-column label="头像" prop="bar_name">
+      <el-table-column label="头像">
         <template slot-scope="scope">
           <el-image style="width: 100px; height: 100px"
                     :src="scope.row.user_head_url"

+ 1 - 1
htmldev/manage/src/views/ums/personnel/index.vue

@@ -26,7 +26,7 @@
               border
               :max-height="vheight">
       <el-table-column label="ID" prop="id"></el-table-column>
-      <el-table-column label="头像" prop="bar_name">
+      <el-table-column label="头像">
         <template slot-scope="scope">
           <el-image style="width: 100px; height: 100px"
                     :src="scope.row.user_head_url"

+ 1 - 3
htmldev/manage/src/views/ums/singer/index.vue

@@ -26,7 +26,7 @@
               border
               :max-height="vheight">
       <el-table-column label="ID" prop="id"></el-table-column>
-      <el-table-column label="头像" prop="bar_name">
+      <el-table-column label="头像">
         <template slot-scope="scope">
           <el-image style="width: 100px; height: 100px"
                     :src="scope.row.user_head_url"
@@ -39,8 +39,6 @@
       <el-table-column label="生日" prop="user_birthday"></el-table-column>
       <el-table-column label="性别" prop="user_sex"></el-table-column>
       <el-table-column label="注册时间" prop="created_at"></el-table-column>
-      <!--todo 创建时间-->
-      <el-table-column label="创建时间"></el-table-column>
       <el-table-column label="操作">
         <template slot-scope="scope">
           <el-button type="text"