company_admin/src/components/business/OperaCategoryWindow.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company_admin/src/components/business/OperaGoodsWindow.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company_admin/src/components/business/selectProductItem.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company_admin/src/components/common/Header.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company_admin/src/components/common/UploadAvatarImage.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company_admin/src/views/business/brand.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company_admin/src/views/business/category.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
company_admin/src/views/business/pageConfiguration.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
company_admin/src/components/business/OperaCategoryWindow.vue
@@ -3,6 +3,7 @@ :title="title" :visible.sync="visible" :confirm-working="isWorking" width="50%" @confirm="confirm" > <el-alert title="妿ä»å¹³å°éæ©ååè¿è¡ç´æï¼å»ºè®®ç±»å«éæ©ä»å¹³å°åºéæ©ï¼ç³»ç»å·²åæ°æ®å ³èï¼" type="warning" effect="dark" :closable="false"></el-alert> @@ -15,7 +16,7 @@ </el-radio-group> </el-form-item> <el-form-item label="éæ©ç±»å«" prop="platCateId" v-if="form.type == 1"> <el-select v-model="form.platCateId" placeholder="è¯·éæ©" @change="changeCategory"> <el-select v-model="form.platCateId" filterable placeholder="è¯·éæ©" @change="changeCategory"> <el-option v-for="item in categoryList" :key="item.id" @@ -56,7 +57,7 @@ style="width: 100%"> <el-table-column label="åæ°å"> <template slot-scope="scope"> <el-input v-model="scope.row.name" placeholder="请è¾å ¥å 容"></el-input> <el-input v-model="scope.row.name" placeholder="请è¾å ¥åç§°"></el-input> </template> </el-table-column> <el-table-column label="设置为é项"> @@ -277,7 +278,7 @@ this.form.sortnum = item.sortnum let arr = [] item.baseCateParamList.forEach((row, index) => { arr.push({ name: row.name, baseCateParamId: row.id, isselect: index <= 1 ? 1 : 0, isshow: 1 }) arr.push({ name: row.name, baseCateParamId: row.id, isselect: 0, isshow: 1 }) }) this.form.tableData = arr this.form.imgurl = item.imgurl company_admin/src/components/business/OperaGoodsWindow.vue
@@ -11,7 +11,7 @@ <el-input v-model="form.name" maxlength="50" placeholder="请è¾å ¥åååç§°ï¼ä¸è¶ è¿50个å" v-trim/> </el-form-item> <el-form-item label="åååç" prop="brandId"> <el-select v-model="form.brandId" placeholder="è¯·éæ©ï¼åé"> <el-select v-model="form.brandId" filterable placeholder="è¯·éæ©ï¼åé"> <el-option v-for="item in brandList" :key="item.id" @@ -22,7 +22,7 @@ </el-form-item> <el-form-item label="ååç±»å«" prop="categoryId"> <!-- @change="changeCategory(form.categoryId)" --> <el-select v-model="form.categoryId" placeholder="è¯·éæ©ï¼åé"> <el-select v-model="form.categoryId" filterable placeholder="è¯·éæ©ï¼åé"> <el-option v-for="item in categoryList" :key="item.id" company_admin/src/components/business/selectProductItem.vue
@@ -48,7 +48,7 @@ <el-table-column prop="price" label="éè´ä»·ï¼å ï¼" show-overflow-tooltip min-width="100px"></el-table-column> <el-table-column label="å ¥æä»·ï¼å ï¼" show-overflow-tooltip min-width="100px"> <template slot-scope="{row}"> <el-input v-model="row.purchasePrice" placeholder="请è¾å ¥"></el-input> <el-input v-model="row.purchasePrice" @input="changeVal(row)" placeholder="请è¾å ¥"></el-input> </template> </el-table-column> </el-table> @@ -101,6 +101,13 @@ }) }, methods: { changeVal(row) { var zz2 = new RegExp("^[0-9]*[1-9][0-9]*$"); if (!zz2.test(row.purchasePrice)) { row.purchasePrice = '' this.$message.warning({ message: 'åªè½è¾å ¥æ´æ°' }) } }, getList() { pageT({ capacity: this.pageSize, @@ -111,7 +118,7 @@ page: this.page }).then(res => { res.records.forEach(item => { item.purchasePrice = item.price * this.form.rate item.purchasePrice = Math.ceil(item.price * this.form.rate) }) this.tableData = res.records this.total = res.total @@ -134,6 +141,10 @@ console.log(arr) }, confirm() { if (this.form.goodsParamList.length === 0) { this.$message.warning({ message: '请å å¾éåå' }) return } // è°ç¨æ°å»ºæ¥å£ this.isWorking = true createPlat({ company_admin/src/components/common/Header.vue
@@ -7,6 +7,7 @@ {{title}} </h2> <div class="user"> <span style="font-size: 13px">{{ userInfo.company.name }}</span> <el-dropdown trigger="click"> <span class="el-dropdown-link"> <img v-if="userInfo != null" :src="userInfo.avatar == null ? '@/assets/images/avatar/man.png' : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i> @@ -91,9 +92,9 @@ if (userInfo == null) { return '' } if (userInfo.realname != null && userInfo.realname.trim().length > 0) { return userInfo.realname } // if (userInfo.realname != null && userInfo.realname.trim().length > 0) { // return userInfo.realname // } return userInfo.username } }, @@ -178,6 +179,13 @@ width: 50%; flex-shrink: 0; text-align: right; display: flex; align-items: center; justify-content: flex-end; text { font-size: 18px !important; color: #222222; } .el-dropdown-link { height: 100%; display: flex; company_admin/src/components/common/UploadAvatarImage.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,104 @@ <template> <div> <el-upload :style="customStyle" :action="uploadImgUrl" :data="uploadData" :show-file-list="false" :on-success="handleAvatarSuccess" :on-error="uploadError" :before-upload="beforeAvatarUpload"> <img v-if="file.imgurlfull" :src="file.imgurlfull" :style="customStyle" class="avatar"> <div v-else :style="customStyle"> <i class="el-icon-plus avatar-uploader-icon"></i> <div class="tips-style">{{ tipsLabel }}</div> </div> </el-upload> </div> </template> <script> export default { props: { file: { type: Object, default: () => {} }, uploadData: Object, tipsLabel: '', customStyle: { type: String, default: 'width: 90px; height: 90px;' } }, data() { return { uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/upload', // uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/public/uploadPicture', // uploadData: { // folder: 'upload', // type: 'image' // }, imgurlfull: '' } }, methods: { // ä¸ä¼ å¾ç handleAvatarSuccess(res, file) { if (res.code == 200) { let { data } = res this.file.imgurl = data.imgaddr; this.file.imgurlfull = data.url; console.log(this.file); this.$message.success('ä¸ä¼ æå') this.$emit('uploadSuccess', { imgurl: data.imgaddr, imgurlfull: data.url }) } else { this.$message.error('ä¸ä¼ 失败') } this.$emit('uploadEnd') }, uploadError() { this.$message.error('ä¸ä¼ 失败') this.$emit('endUpload') }, // // æ¦æª beforeAvatarUpload(file) { this.$emit('uploadBegin') return true; }, }, } </script> <style lang="scss" scoped> $image-width: 100px; ::v-deep .el-upload { border: 1px dashed #d9d9d9; border-radius: 6px; cursor: pointer; position: relative; overflow: hidden; } .avatar-uploader .el-upload:hover { border-color: #409EFF; } .avatar-uploader-icon { font-size: 28px; color: #8c939d; line-height: 90px; text-align: center; } .avatar { display: block; } .tips-style { height: 13px; font-size: 13px; font-weight: 400; color: #999999; line-height: 13px; } </style> company_admin/src/views/business/brand.vue
@@ -32,8 +32,7 @@ stripe border :header-cell-style="rowStyle" :cell-style="rowStyle" > :cell-style="rowStyle"> <el-table-column prop="name" label="åçåç§°" min-width="100px"></el-table-column> <el-table-column prop="imgurl" label="徿 " min-width="100px"> <template slot-scope="{row}"> @@ -47,8 +46,8 @@ </el-table-column> <el-table-column prop="categoryName" label="ç±»å" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.type == 0">èªå»º</span> <span v-else>æå</span> <span v-if="row.type == 0">èªå®ä¹</span> <span v-else>ç³»ç»</span> </template> </el-table-column> <el-table-column prop="sortnum" label="æåºç (ååº)" min-width="100px"></el-table-column> @@ -96,8 +95,8 @@ type: '' }, typeList: [ { name: 'èªå»º', id: 0 }, { name: 'æå', id: 1 } { name: 'èªå®ä¹', id: 0 }, { name: 'ç³»ç»', id: 1 } ] } }, company_admin/src/views/business/category.vue
@@ -1,95 +1,95 @@ <template> <TableLayout :permissions="['business:category:query']"> <!-- æç´¢è¡¨å --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> <el-form-item label="ç±»å«åç§°" prop="name"> <el-input v-model="searchForm.name" placeholder="请è¾å ¥ç±»å«åç§°" @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="ç±»å" prop="type"> <el-select v-model="searchForm.type" clearable placeholder="è¯·éæ©"> <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item> <section> <el-button type="primary" @click="search">æç´¢</el-button> <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:category:exportExcel']" @click="exportExcel">导åº</el-button> --> <el-button @click="reset">éç½®</el-button> </section> </el-form> <!-- è¡¨æ ¼åå页 --> <template v-slot:table-wrap> <ul class="toolbar" v-permissions="['business:category:create']"> <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('æ°å»ºç±»å«')" icon="el-icon-plus" v-permissions="['business:category:create']">æ°å»º</el-button></li> </ul> <el-table v-loading="isWorking.search" :data="tableData.list" stripe border :header-cell-style="rowStyle" :cell-style="rowStyle" <TableLayout :permissions="['business:category:query']"> <!-- æç´¢è¡¨å --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> <el-form-item label="ç±»å«åç§°" prop="name"> <el-input v-model="searchForm.name" placeholder="请è¾å ¥ç±»å«åç§°" @keypress.enter.native="search"></el-input> </el-form-item> <el-form-item label="ç±»å" prop="type"> <el-select v-model="searchForm.type" clearable placeholder="è¯·éæ©"> <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item> <section> <el-button type="primary" @click="search">æç´¢</el-button> <!-- <el-button type="primary" :loading="isWorking.export" v-permissions="['business:category:exportExcel']" @click="exportExcel">导åº</el-button> --> <el-button @click="reset">éç½®</el-button> </section> </el-form> <!-- è¡¨æ ¼åå页 --> <template v-slot:table-wrap> <ul class="toolbar" v-permissions="['business:category:create']"> <li><el-button type="primary" @click="$refs.operaCategoryWindow.open('æ°å»ºç±»å«')" icon="el-icon-plus" v-permissions="['business:category:create']">æ°å»º</el-button></li> </ul> <el-table v-loading="isWorking.search" :data="tableData.list" stripe border :header-cell-style="rowStyle" :cell-style="rowStyle" > <el-table-column prop="imgurl" label="徿 " min-width="100px"> <template slot-scope="{row}"> <el-image v-if="row.imgurl" style="width: 70px; height: 70px" :src="row.prefixUrl + row.imgurl" :preview-src-list="[row.prefixUrl + row.imgurl]" fit="cover"></el-image> </template> </el-table-column> <el-table-column prop="name" label="ç±»å«åç§°" min-width="100px"></el-table-column> <el-table-column prop="categoryName" label="ç±»å" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.type == 0">èªå®ä¹</span> <span v-else>ç³»ç»</span> </template> </el-table-column> <el-table-column prop="sortnum" label="æåºç (ååº)" min-width="100px"></el-table-column> <el-table-column prop="createDate" label="å建æ¶é´" min-width="100px"></el-table-column> <el-table-column prop="status" label="ç¶æ" min-width="100px"> <template slot-scope="{row}"> <el-switch v-model="row.status" @change="changeStatus(row)" active-color="#13ce66" inactive-color="#ff4949" :active-value="0" :inactive-value="1"> </el-switch> </template> </el-table-column> <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="æä½" min-width="120" fixed="right" > <el-table-column prop="imgurl" label="徿 " min-width="100px"> <template slot-scope="{row}"> <el-image v-if="row.imgurl" style="width: 70px; height: 70px" :src="row.prefixUrl + row.imgurl" :preview-src-list="[row.prefixUrl + row.imgurl]" fit="cover"></el-image> </template> </el-table-column> <el-table-column prop="name" label="ç±»å«åç§°" min-width="100px"></el-table-column> <el-table-column prop="categoryName" label="ç±»å" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.type == 0">èªå»º</span> <span v-else>æå</span> </template> </el-table-column> <el-table-column prop="sortnum" label="æåºç (ååº)" min-width="100px"></el-table-column> <el-table-column prop="createDate" label="å建æ¶é´" min-width="100px"></el-table-column> <el-table-column prop="status" label="ç¶æ" min-width="100px"> <template slot-scope="{row}"> <el-switch v-model="row.status" @change="changeStatus(row)" active-color="#13ce66" inactive-color="#ff4949" :active-value="0" :inactive-value="1"> </el-switch> </template> </el-table-column> <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])" label="æä½" min-width="120" fixed="right" > <template slot-scope="{row}"> <el-button type="text" @click="edit(row.id)" icon="el-icon-edit" v-permissions="['business:category:update']">ç¼è¾</el-button> <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">å é¤</el-button> </template> </el-table-column> </el-table> <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination" > </pagination> </template> <!-- æ°å»º/ä¿®æ¹ --> <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/> </TableLayout> </template> <template slot-scope="{row}"> <el-button type="text" @click="edit(row.id)" icon="el-icon-edit" v-permissions="['business:category:update']">ç¼è¾</el-button> <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:category:delete']">å é¤</el-button> </template> </el-table-column> </el-table> <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination" > </pagination> </template> <!-- æ°å»º/ä¿®æ¹ --> <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/> </TableLayout> </template> <script> <script> import BaseTable from '@/components/base/BaseTable' import TableLayout from '@/layouts/TableLayout' import Pagination from '@/components/common/Pagination' @@ -107,8 +107,8 @@ type: '' }, typeList: [ { name: 'èªå»º', id: 0 }, { name: 'æå', id: 1 } { name: 'èªå®ä¹', id: 0 }, { name: 'ç³»ç»', id: 1 } ] } }, @@ -153,6 +153,7 @@ platCateId: res.platCateId, tableData: res.paramList.map(item => { return { id: item.id, name: item.name, isselect: item.isselect, isshow: item.isshow @@ -160,11 +161,9 @@ }), fileList: res.imgurl ? [{ url: res.prefixUrl + res.imgurl }] : [] } console.log(obj) this.$refs.operaCategoryWindow.open('ç¼è¾ç±»å«', obj) }) } } } </script> </script> company_admin/src/views/business/pageConfiguration.vue
@@ -4,7 +4,7 @@ <div class="pz_item"> <div class="pz_item_label">å 容èå´å°ºå¯¸ï¼</div> <div class="pz_item_ipt"> <el-input v-model="from.rangeSize" placeholder="æ¯æ750px-1200px"></el-input> <el-input v-model="from.rangeSize" type="number" placeholder="æ¯æ750px-1200px"></el-input> </div> </div> <div class="pz_item"> @@ -16,49 +16,34 @@ <div class="pz_item"> <div class="pz_item_label">èæ¯å¾ï¼</div> <div class="pz_item_ipt"> <el-upload :action="action" :data="{ folder: 'web_param' }" list-type="picture-card" :limit="1" :on-exceed="exceed" :file-list="fileList1" :on-success="fileSuccess1" :on-remove="handleRemove1"> <i class="el-icon-plus"></i> </el-upload> <UploadAvatarImage :file="{ 'imgurlfull': from.bgImgUrl, 'imgurl': from.bgImg }" :uploadData="{ folder: 'web_param' }" tipsLabel="" @uploadSuccess="uploadReverseSuccess" /> </div> </div> <div class="pz_item"> <div class="pz_item_label">é¡¶é¨å®£ä¼ å¾ï¼</div> <div class="pz_item_ipt"> <el-upload :action="action" :data="{ folder: 'web_param' }" list-type="picture-card" :on-exceed="exceed" :limit="1" :file-list="fileList2" :on-success="fileSuccess2" :on-remove="handleRemove2"> <i class="el-icon-plus"></i> </el-upload> <UploadAvatarImage :file="{ 'imgurlfull': from.topImgUrl, 'imgurl': from.topImg }" :uploadData="{ folder: 'web_param' }" tipsLabel="" @uploadSuccess="uploadReverseSuccess1" /> </div> </div> <div class="pz_item"> <div class="pz_item_label">PKå°å¾ï¼</div> <div class="pz_item_ipt"> <el-upload :action="action" :data="{ folder: 'web_param' }" list-type="picture-card" :on-exceed="exceed" :limit="1" :file-list="fileList3" :on-success="fileSuccess3" :on-remove="handleRemove3"> <i class="el-icon-plus"></i> </el-upload> <UploadAvatarImage :file="{ 'imgurlfull': from.pkImgUrl, 'imgurl': from.pkImg }" :uploadData="{ folder: 'web_param' }" tipsLabel="" @uploadSuccess="uploadReverseSuccess2" /> </div> </div> <div class="pz_footer"> @@ -70,6 +55,7 @@ <script> import { getByLogin, renew } from '@/api/business/page.js' import UploadAvatarImage from '@/components/common/UploadAvatarImage.vue' export default { data() { @@ -79,19 +65,28 @@ rangeSize: '', mainColor: '', bgImg: '', bgImgUrl: '', topImg: '', pkImg: '' }, fileList1: [], fileList2: [], fileList3: [] topImgUrl: '', pkImg: '', pkImgUrl: '' } } }, components: { UploadAvatarImage }, created() { this.getDesc() }, methods: { submit() { if (this.from.rangeSize < 750) { this.$message.warning({ message: 'å°ºå¯¸å¿ é¡»å¤§äº750' }) return } if (this.from.rangeSize > 1200) { this.$message.warning({ message: 'å°ºå¯¸å¿ é¡»å°äº1200' }) return } renew(this.from) .then(res => { this.$message.success({ message: 'ä¿åæå' }) @@ -105,23 +100,15 @@ this.from.mainColor = res.mainColor if (res.bgImg) { this.from.bgImg = res.bgImg this.fileList1 = [{ name: res.bgImg, url: res.resourcePath + res.bgImg }] this.from.bgImgUrl = res.resourcePath + res.bgImg } if (res.topImg) { this.fileList2 = [] this.from.topImg = res.topImg let arr = res.topImg.split(',').map(item => item) arr.forEach(item => { this.fileList2.push({ name: item, url: res.resourcePath + item }) }) this.from.topImgUrl = res.resourcePath + res.topImg } if (res.pkImg) { this.fileList3 = [] this.from.pkImg = res.pkImg let arr = res.pkImg.split(',').map(item => item) arr.forEach(item => { this.fileList3.push({ name: item, url: res.resourcePath + item }) }) this.from.pkImgUrl = res.resourcePath + res.pkImg } } }) @@ -129,6 +116,20 @@ exceed() { this.$message.warning({ message: 'åªè½ä¸ä¼ ä¸å¼ å¾ç' }) }, uploadReverseSuccess2(file) { this.from.pkImg = file.imgurl; this.from.pkImgUrl = file.imgurlfull; }, uploadReverseSuccess1(file) { this.from.topImg = file.imgurl; this.from.topImgUrl = file.imgurlfull; }, uploadReverseSuccess(file) { this.from.bgImg = file.imgurl; this.from.bgImgUrl = file.imgurlfull; }, handleRemove1(file, fileList) { this.fileList1 = []