批量上传、添加注释
							parent
							
								
									0fd4645514
								
							
						
					
					
						commit
						0499a9c237
					
				|  | @ -63,7 +63,7 @@ export default { | |||
|   data() { | ||||
|     return { | ||||
|       editor: null, // 富文本编辑器初始化 | ||||
|       data: this.value, // 富文本数据 | ||||
|       data: '', // 富文本数据 | ||||
|       dataEdit: "", // 编辑数据 | ||||
|       showHTMLModal: false, // 显示html | ||||
|       full: false, // html全屏开关 | ||||
|  | @ -185,12 +185,10 @@ export default { | |||
|       if (!editor) { | ||||
|         this.initEditor(); | ||||
|       } | ||||
|       if (value && value != this.data) { | ||||
|         this.data = value; | ||||
|         editor.txt.html(this.data); | ||||
|         this.$emit("input", this.data); | ||||
|         this.$emit("on-change", this.data); | ||||
|       } | ||||
|       this.data = value; | ||||
|       editor.txt.html(this.data); | ||||
|       this.$emit("input", this.data); | ||||
|       this.$emit("on-change", this.data); | ||||
|     }, | ||||
|   }, | ||||
|   watch: { | ||||
|  |  | |||
|  | @ -11,15 +11,15 @@ | |||
|         :readonly="readonly" | ||||
|         :maxlength="maxlength" | ||||
|       > | ||||
|         <Button slot="append" icon="md-eye"></Button> | ||||
|         <Poptip slot="append" transfer trigger="hover" title="图片预览" placement="right" width="350"> | ||||
|           <Icon type="md-eye" class="see-icon" /> | ||||
|           <div slot="content"> | ||||
|             <img :src="currentValue" alt="该资源不存在" style="width: 100%;margin: 0 auto;display: block;" /> | ||||
|             <a @click="viewImage=true" style="margin-top:5px;text-align:right;display:block">查看大图</a> | ||||
|           </div> | ||||
|         </Poptip> | ||||
|       </Input> | ||||
|       <Poptip transfer trigger="hover" title="图片预览" placement="right" width="350"> | ||||
|         <Icon type="md-eye" class="see-icon" /> | ||||
|         <div slot="content"> | ||||
|           <img :src="currentValue" alt="该资源不存在" style="width: 100%;margin: 0 auto;display: block;" /> | ||||
|           <a @click="viewImage=true" style="margin-top:5px;text-align:right;display:block">查看大图</a> | ||||
|         </div> | ||||
|       </Poptip> | ||||
|        | ||||
|       <Upload | ||||
|         :action="uploadFileUrl" | ||||
|         :headers="accessToken" | ||||
|  | @ -35,7 +35,7 @@ | |||
|         ref="up" | ||||
|         class="upload" | ||||
|       > | ||||
|         <Button :loading="loading" :size="size" :disabled="disabled" :icon="icon">上传图片</Button> | ||||
|         <Button :loading="loading" :size="size" :disabled="disabled">上传图片</Button> | ||||
|       </Upload> | ||||
|     </div> | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ | |||
|     <Row> | ||||
|       <Col style=" height: 100%;" span="4"> | ||||
|       <Card class="article-category"> | ||||
|         <Tree :data="treeData" @on-select-change="handleSearchChange"></Tree> | ||||
|         <Tree :data="treeData" @on-select-change="handleCateChange"></Tree> | ||||
|       </Card> | ||||
|       </Col> | ||||
|       <Col span="20"> | ||||
|  | @ -18,9 +18,9 @@ | |||
|           </Form> | ||||
|         </Row> | ||||
|         <Row class="operation padding-row"> | ||||
|           <Button @click="add" type="primary" style="">添加</Button> | ||||
|           <Button @click="add" type="primary">添加</Button> | ||||
|         </Row> | ||||
|         <Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"> | ||||
|         <Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom" @on-selection-change="changeSelect"> | ||||
|           <!-- 页面展示 --> | ||||
|           <template slot="openStatusSlot" slot-scope="scope"> | ||||
|             <div> | ||||
|  | @ -57,7 +57,7 @@ | |||
|                 <Input type="number" v-model="form.sort" clearable style="width: 10%" /> | ||||
|               </FormItem> | ||||
|               <FormItem class="form-item-view-el" label="文章内容" prop="content"> | ||||
|                 <editor  openXss v-model="form.content"></editor> | ||||
|                 <editor openXss v-model="form.content"></editor> | ||||
|               </FormItem> | ||||
|               <FormItem label="是否展示" prop="openStatus"> | ||||
|                 <i-switch size="large" v-model="form.openStatus" :true-value="open" :false-value="close"> | ||||
|  | @ -154,28 +154,7 @@ export default { | |||
|           title: "是否显示", | ||||
|           key: "openStatus", | ||||
|           width: 100, | ||||
|           slot: "openStatusSlot", | ||||
|           /*render: (h, params) => { | ||||
|             if (params.row.openStatus == "CLOSE") { | ||||
|               return h("div", [ | ||||
|                 h("Badge", { | ||||
|                   props: { | ||||
|                     status: "error", | ||||
|                     text: "隐藏", | ||||
|                   }, | ||||
|                 }), | ||||
|               ]); | ||||
|             } else if (params.row.openStatus == "OPEN") { | ||||
|               return h("div", [ | ||||
|                 h("Badge", { | ||||
|                   props: { | ||||
|                     status: "success", | ||||
|                     text: "展示", | ||||
|                   }, | ||||
|                 }), | ||||
|               ]); | ||||
|             } | ||||
|           },*/ | ||||
|           slot: "openStatusSlot" | ||||
|         }, | ||||
|         { | ||||
|           title: "排序", | ||||
|  | @ -266,11 +245,13 @@ export default { | |||
|     }, | ||||
|   }, | ||||
|   methods: { | ||||
|     // 初始化数据 | ||||
|     init() { | ||||
|       this.getDataList(); | ||||
|       this.getAllList(0); | ||||
|     }, | ||||
|     handleSearchChange(data) { | ||||
|     // 选择分类回调 | ||||
|     handleCateChange(data) { | ||||
|       let { value, title } = data[0]; | ||||
|       this.list.push({ | ||||
|         value, | ||||
|  | @ -279,7 +260,7 @@ export default { | |||
|       this.searchForm.categoryId = value; | ||||
|       this.searchTreeValue = title; | ||||
|     }, | ||||
|     //是否展示事件 | ||||
|     //是否展示文章 | ||||
|     changeSwitch(v) { | ||||
|       let params = { | ||||
|         status: v.openStatus, | ||||
|  | @ -290,6 +271,7 @@ export default { | |||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 文章分类的选择事件 | ||||
|     handleCheckChange(data) { | ||||
|       let value = ""; | ||||
|       let title = ""; | ||||
|  | @ -307,36 +289,33 @@ export default { | |||
|       this.form.categoryId = value; | ||||
|       this.treeValue = title; | ||||
|     }, | ||||
|     // 改变页数 | ||||
|     changePage(v) { | ||||
|       this.searchForm.pageNumber = v; | ||||
|       this.getDataList(); | ||||
|       this.clearSelectAll(); | ||||
|     }, | ||||
|     // 改变页码 | ||||
|     changePageSize(v) { | ||||
|       this.searchForm.pageSize = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 搜索列表 | ||||
|     handleSearch() { | ||||
|       this.searchForm.pageNumber = 1; | ||||
|       this.searchForm.pageSize = 10; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     changeSort(e) { | ||||
|       this.searchForm.sort = e.key; | ||||
|       this.searchForm.order = e.order; | ||||
|       if (e.order === "normal") { | ||||
|         this.searchForm.order = ""; | ||||
|       } | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 取消全选 | ||||
|     clearSelectAll() { | ||||
|       this.$refs.table.selectAll(false); | ||||
|     }, | ||||
|     // 列表选择回调 | ||||
|     changeSelect(e) { | ||||
|       this.selectList = e; | ||||
|       this.selectCount = e.length; | ||||
|     }, | ||||
| 
 | ||||
|     // 获取全部文章分类 | ||||
|     getAllList(parent_id) { | ||||
|       this.loading = true; | ||||
|       getArticleCategory(parent_id).then((res) => { | ||||
|  | @ -353,6 +332,7 @@ export default { | |||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 文章分类格式化方法 | ||||
|     getTree(tree = []) { | ||||
|       let arr = []; | ||||
|       if (!!tree && tree.length !== 0) { | ||||
|  | @ -369,6 +349,7 @@ export default { | |||
|       } | ||||
|       return arr; | ||||
|     }, | ||||
|     // 获取文章列表 | ||||
|     getDataList(val) { | ||||
|       if (val) this.form = {}; | ||||
|       this.loading = true; | ||||
|  | @ -387,7 +368,7 @@ export default { | |||
|       this.total = this.data.length; | ||||
|       this.loading = false; | ||||
|     }, | ||||
| 
 | ||||
|     // 添加文章 | ||||
|     handleSubmit() { | ||||
|       this.$refs.form.validate((valid) => { | ||||
|         if (valid) { | ||||
|  | @ -417,16 +398,26 @@ export default { | |||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 添加文章modal | ||||
|     add() { | ||||
|       this.modalType = 0; | ||||
|       this.modalTitle = "添加文章"; | ||||
|       this.treeValue = ''; | ||||
|       this.form = { | ||||
|         content:'' | ||||
|       }; | ||||
|       this.$refs.form.resetFields(); | ||||
|       delete this.form.id; | ||||
|       this.modalVisible = true; | ||||
|     }, | ||||
|     // 编辑文章modal | ||||
|     edit(data) { | ||||
|       this.modalType = 1; | ||||
|       this.modalTitle = "编辑文章"; | ||||
|       this.treeValue = ''; | ||||
|       this.form = { | ||||
|         content:'' | ||||
|       }; | ||||
|       this.$refs.form.resetFields(); | ||||
| 
 | ||||
|       seeArticle(data.id).then((res) => { | ||||
|  |  | |||
|  | @ -145,7 +145,7 @@ export default { | |||
|       if (this.id) { | ||||
|         this.getCoupon() | ||||
|       } else { | ||||
|         this.$refs.form.resetFiles() | ||||
|         this.$refs.form.resetFields() | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|  |  | |||
|  | @ -13,8 +13,6 @@ | |||
|             :data="data" | ||||
|             ref="table" | ||||
|             sortable="custom" | ||||
|             @on-sort-change="changeSort" | ||||
|             @on-selection-change="changeSelect" | ||||
|           > | ||||
|             <!-- 商品栏目格式化 --> | ||||
|             <template slot="imageSlot" slot-scope="scope"> | ||||
|  | @ -53,8 +51,6 @@ | |||
|             :data="data" | ||||
|             ref="table" | ||||
|             sortable="custom" | ||||
|             @on-sort-change="changeSort" | ||||
|             @on-selection-change="changeSelect" | ||||
|           > | ||||
|             <!-- 商品栏目格式化 --> | ||||
|             <template slot="imageSlot" slot-scope="scope"> | ||||
|  | @ -99,7 +95,7 @@ | |||
|           /> | ||||
|         </FormItem> | ||||
|         <FormItem label="图片" prop="resource"> | ||||
|           <Input v-model="form.resource" clearable style="width: 100%" /> | ||||
|           <upload-pic-input v-model="form.resource" style="width: 100%"></upload-pic-input> | ||||
|         </FormItem> | ||||
|         <FormItem label="类型" prop="type"> | ||||
|           <radio-group v-model="form.type" type="button"> | ||||
|  | @ -119,15 +115,16 @@ | |||
| </template> | ||||
| <script> | ||||
| import * as API_Setting from "@/api/setting"; | ||||
| 
 | ||||
| import uploadPicInput from "@/views/my-components/lili/upload-pic-input"; | ||||
| export default { | ||||
|   components: { | ||||
|     uploadPicInput, | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       modalVisible: false, //添加验证码源弹出框 | ||||
|       modalTitle: "", //添加验证码源弹出框标题 | ||||
|       loading: true, // 表单加载状态 | ||||
|       selectList: [], // 多选数据 | ||||
|       selectCount: 0, // 多选计数 | ||||
|       modalType: 0, // 添加或编辑标识 | ||||
|       submitLoading: false, // 添加或编辑提交状态 | ||||
|       form: { | ||||
|  | @ -250,11 +247,6 @@ export default { | |||
|       this.searchForm.pageSize = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     changeSort(e) { | ||||
|       this.searchForm.sort = e.key; | ||||
|       this.searchForm.order = e.order; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     //切换tab | ||||
|     handleClickType(v) { | ||||
|       this.searchForm.pageNumber = 1; // 当前页数 | ||||
|  | @ -281,15 +273,12 @@ export default { | |||
|       }); | ||||
|       this.loading = false; | ||||
|     }, | ||||
|     changeSelect(e) { | ||||
|       this.selectList = e; | ||||
|       this.selectCount = e.length; | ||||
|     }, | ||||
|     //添加验证码源 | ||||
|     add() { | ||||
|       this.form.type = this.searchForm.type; | ||||
|       this.modalVisible = true; | ||||
|       this.modalType = 0; | ||||
|       this.$refs.form.resetFields() | ||||
|       this.modalTitle = "添加验证码源"; | ||||
|     }, | ||||
|     //修改验证码源 | ||||
|  |  | |||
|  | @ -35,12 +35,6 @@ export const otherRouter = { | |||
|       name: "message_index", | ||||
|       component: () => import("@/views/message/message.vue") | ||||
|     }, | ||||
|     { | ||||
|       path: "stock-goods", | ||||
|       title: "店铺端商品库存告警列表", | ||||
|       name: "stock-goods", | ||||
|       component: () => import("@/views/goods/goods-seller/goodsStock.vue") | ||||
|     }, | ||||
|     { | ||||
|       path: "goods-operation", | ||||
|       title: "添加商品", | ||||
|  |  | |||
|  | @ -24,7 +24,6 @@ | |||
|                   <Avatar :src="userInfo.storeLogo" style="background: #fff;margin-left: 10px;"></Avatar> | ||||
|                 </div> | ||||
|                 <DropdownMenu slot="list"> | ||||
|                   <!-- <DropdownItem name="ownSpace">{{ $t('userCenter') }}</DropdownItem> --> | ||||
|                   <DropdownItem name="changePass">{{ $t('changePass') }}</DropdownItem> | ||||
|                   <DropdownItem name="loginOut" divided>{{ $t('logout') }}</DropdownItem> | ||||
|                 </DropdownMenu> | ||||
|  | @ -53,9 +52,6 @@ | |||
| <script> | ||||
| import shrinkableMenu from "./main-components/shrinkable-menu/shrinkable-menu.vue"; | ||||
| import tagsPageOpened from "./main-components/tags-page-opened.vue"; | ||||
| import breadcrumbNav from "./main-components/breadcrumb-nav.vue"; | ||||
| import fullScreen from "./main-components/fullscreen.vue"; | ||||
| import messageTip from "./main-components/message-tip.vue"; | ||||
| import circleLoading from "@/views/my-components/lili/circle-loading.vue"; | ||||
| import Cookies from "js-cookie"; | ||||
| import util from "@/libs/util.js"; | ||||
|  | @ -64,10 +60,7 @@ export default { | |||
|   components: { | ||||
|     shrinkableMenu, | ||||
|     tagsPageOpened, | ||||
|     breadcrumbNav, | ||||
|     fullScreen, | ||||
|     messageTip, | ||||
|     circleLoading, | ||||
|     circleLoading | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ | |||
|               type="primary" | ||||
|               style="width: 100px;margin-right:5px" | ||||
|               :loading="savePassLoading" | ||||
|               @click="saveEditPass" | ||||
|               @click="editPassword" | ||||
|             >保存</Button> | ||||
|             <Button @click="cancelEditPass">取消</Button> | ||||
|           </FormItem> | ||||
|  | @ -61,6 +61,7 @@ export default { | |||
|         rePass: "" // 从新输入新密码 | ||||
|       }, | ||||
|       strength: "", // 密码强度 | ||||
|       // 验证规则 | ||||
|       passwordValidate: { | ||||
|         oldPass: [ | ||||
|           { | ||||
|  | @ -101,10 +102,12 @@ export default { | |||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     // 新密码回调 | ||||
|     changeInputPass(v, grade, strength) { | ||||
|       this.strength = strength; | ||||
|     }, | ||||
|     saveEditPass() { | ||||
|     // 修改密码 | ||||
|     editPassword() { | ||||
|       let params = { | ||||
|         password: this.md5(this.editPasswordForm.oldPass), | ||||
|         newPassword: this.md5(this.editPasswordForm.newPassword) | ||||
|  | @ -131,6 +134,7 @@ export default { | |||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 取消修改密码 | ||||
|     cancelEditPass() { | ||||
|       this.$store.commit("removeTag", "change_pass"); | ||||
|       localStorage.storeOpenedList = JSON.stringify( | ||||
|  | @ -147,11 +151,9 @@ export default { | |||
|         name: lastPageName | ||||
|       }); | ||||
|     } | ||||
|   }, | ||||
|   mounted() {} | ||||
|   } | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| .change-pass { | ||||
|   &-btn-box { | ||||
|  |  | |||
|  | @ -6,19 +6,13 @@ | |||
|           <Form-item label="商品名称" prop="goodsName"> | ||||
|             <Input type="text" v-model="searchForm.goodsName" placeholder="请输入商品名称" clearable style="width: 200px"/> | ||||
|           </Form-item> | ||||
|           <!-- <Form-item label="店铺名称"> | ||||
|               <Select v-model="searchForm.shopId" placeholder="请选择" @on-query-change="searchChange" filterable clearable style="width: 200px"> | ||||
|                   <Option v-for="item in shopList" :value="item.id" :key="item.id">{{ item.storeName }}</Option> | ||||
|               </Select> | ||||
|           </Form-item> --> | ||||
|           <Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button> | ||||
|         </Form> | ||||
|       </Row> | ||||
|       <Row class="operation padding-row"> | ||||
|         <Button @click="add" type="primary">添加</Button> | ||||
|       <!--  <Button @click="add" type="default">批量删除</Button>--> | ||||
|       </Row> | ||||
|       <Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"> | ||||
|       <Table :loading="loading" border :columns="columns" :data="data" ref="table" @on-selection-change="changeSelect"> | ||||
|         <!-- 商品栏目格式化 --> | ||||
|         <template slot="goodsSlot" slot-scope="{row}"> | ||||
|           <div style="margin-top: 5px;height: 70px; display: flex;"> | ||||
|  | @ -92,9 +86,6 @@ export default { | |||
|       submitLoading: false, // 添加或编辑提交状态 | ||||
|       shopList:[], // 店铺列表 | ||||
|       loading: true, // 表单加载状态 | ||||
|       drop: false, | ||||
|       dropDownContent: "展开", | ||||
|       dropDownIcon: "ios-arrow-down", | ||||
|       searchForm: { // 搜索框初始化对象 | ||||
|         pageNumber: 1, // 当前页数 | ||||
|         pageSize: 10, // 页面大小 | ||||
|  | @ -115,7 +106,7 @@ export default { | |||
|             trigger: "change" | ||||
|           }], | ||||
|       }, | ||||
|       columns: [ // 表哥表头 | ||||
|       columns: [ // 表格表头 | ||||
|         { | ||||
|           type: "selection", | ||||
|           width: 60, | ||||
|  | @ -188,30 +179,29 @@ export default { | |||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     init() { | ||||
|     init() { // 初始化数据 | ||||
|       this.getDataList(); | ||||
|       // this.getShopList() | ||||
|     }, | ||||
|     // 选择商品回调 | ||||
|     selectedGoodsData(v){ | ||||
|       this.modalVisible = true | ||||
|       this.form.commission = 1 | ||||
|       this.modalTitle = "保存分销商品" | ||||
|       this.skuId = v[0].id | ||||
|       //this.data.unshift(v[0]) | ||||
|     }, | ||||
|     // 添加商品modal | ||||
|     add(){ | ||||
| 
 | ||||
|          this.$refs.liliDialog.flag = true; | ||||
|       this.$refs.liliDialog.flag = true; | ||||
|       this.$refs.liliDialog.goodsFlag = true; | ||||
| 
 | ||||
|       this.$refs.liliDialog.singleGoods(); | ||||
| 
 | ||||
|     }, | ||||
|     // 改变页码 | ||||
|     changePage(v) { | ||||
|       this.searchForm.pageNumber = v; | ||||
|       this.getDataList(); | ||||
|       this.clearSelectAll(); | ||||
|       this.$refs.table.selectAll(false); | ||||
|     }, | ||||
|     // 添加商品 | ||||
|     handleSubmit(){ | ||||
|       this.$refs['form'].validate((valid) => { | ||||
|         if (valid) { | ||||
|  | @ -225,28 +215,18 @@ export default { | |||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     // 改变页数 | ||||
|     changePageSize(v) { | ||||
|       this.searchForm.pageSize = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 搜索 | ||||
|     handleSearch() { | ||||
|       this.searchForm.pageNumber = 1; | ||||
|       this.searchForm.pageSize = 10; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
| 
 | ||||
|     changeSort(e) { | ||||
|       this.searchForm.sort = e.key; | ||||
|       this.searchForm.order = e.order; | ||||
|       if (e.order === "normal") { | ||||
|         this.searchForm.order = ""; | ||||
|       } | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     clearSelectAll() { | ||||
|       this.$refs.table.selectAll(false); | ||||
|     }, | ||||
| 
 | ||||
|     // 获取商品列表 | ||||
|     getDataList() { | ||||
|       this.loading = true; | ||||
|       // 带多条件搜索参数获取表单数据 请自行修改接口 | ||||
|  | @ -260,6 +240,7 @@ export default { | |||
|       this.total = this.data.length; | ||||
|       this.loading = false; | ||||
|     }, | ||||
|     // 删除商品 | ||||
|     remove(v) { | ||||
|       this.$Modal.confirm({ | ||||
|         title: "确认删除", | ||||
|  | @ -278,6 +259,7 @@ export default { | |||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 获取店铺列表 搜索项用 | ||||
|     getShopList (val) { | ||||
|       const params = { | ||||
|         pageNumber:1, | ||||
|  |  | |||
|  | @ -1,19 +1,17 @@ | |||
| <template> | ||||
|   <div class="search"> | ||||
|     <Card> | ||||
|       <Row v-show="openSearch" @keydown.enter.native="handleSearch"> | ||||
|         <Form ref="searchForm" :model="searchForm" inline :label-width="70" class="search-form"> | ||||
|           <Form-item label="订单编号" prop="orderSn"> | ||||
|             <Input type="text" v-model="searchForm.orderSn" placeholder="请输入订单编号" clearable style="width: 200px" /> | ||||
|           </Form-item> | ||||
|           <Form-item label="订单时间"> | ||||
|             <DatePicker type="daterange" v-model="timeRange" format="yyyy-MM-dd" placeholder="选择时间" style="width: 210px"></DatePicker> | ||||
|           </Form-item> | ||||
|           <Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button> | ||||
|         </Form> | ||||
|       </Row> | ||||
|       <Form ref="searchForm" :model="searchForm" inline :label-width="70"  @keydown.enter.native="handleSearch" class="search-form"> | ||||
|         <Form-item label="订单编号" prop="orderSn"> | ||||
|           <Input type="text" v-model="searchForm.orderSn" placeholder="请输入订单编号" clearable style="width: 200px" /> | ||||
|         </Form-item> | ||||
|         <Form-item label="订单时间"> | ||||
|           <DatePicker type="daterange" v-model="timeRange" format="yyyy-MM-dd" placeholder="选择时间" style="width: 210px"></DatePicker> | ||||
|         </Form-item> | ||||
|         <Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button> | ||||
|       </Form> | ||||
| 
 | ||||
|       <Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom"></Table> | ||||
|       <Table class="mt_10" :loading="loading" border :columns="columns" :data="data" ref="table"></Table> | ||||
|       <Row type="flex" justify="end" class="page"> | ||||
|         <Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10,20,50]" size="small" | ||||
|           show-total show-elevator show-sizer></Page> | ||||
|  | @ -35,8 +33,6 @@ export default { | |||
|       timeRange: [], // 范围时间 | ||||
|       orderStatusList, // 订单状态列表 | ||||
|       distributionId: this.$route.query.id, // 分销id | ||||
|       openSearch: true, // 显示搜索 | ||||
|       openTip: true, // 显示提示 | ||||
|       loading: true, // 表单加载状态 | ||||
|       searchForm: { | ||||
|         // 搜索框初始化对象 | ||||
|  | @ -133,23 +129,26 @@ export default { | |||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     init() { | ||||
|     init() { // 初始化数据 | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 改变页码 | ||||
|     changePage(v) { | ||||
|       this.searchForm.pageNumber = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 改变页数 | ||||
|     changePageSize(v) { | ||||
|       this.searchForm.pageSize = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 搜索 | ||||
|     handleSearch() { | ||||
|       this.searchForm.pageNumber = 1; | ||||
|       this.searchForm.pageSize = 10; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
| 
 | ||||
|     // 获取订单数据 | ||||
|     getDataList() { | ||||
|       this.searchForm.distributionId = this.distributionId; | ||||
|       this.loading = true; | ||||
|  |  | |||
|  | @ -126,13 +126,16 @@ export default { | |||
|           template: "action", | ||||
|         } | ||||
|       ], | ||||
|       // 表格数据 | ||||
|       tableData: [] | ||||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     init() { | ||||
|     // 初始化数据 | ||||
|     init() {  | ||||
|       this.getAllList(); | ||||
|     }, | ||||
|     // 刷新列表 | ||||
|     refresh() { | ||||
|       this.loading = true; | ||||
|       let that = this; | ||||
|  | @ -152,6 +155,7 @@ export default { | |||
|       this.formAdd.parentId = v.id; | ||||
|       this.modalVisible = true; | ||||
|     }, | ||||
|     // 编辑分类 | ||||
|     edit(v) { | ||||
|       this.modalType = 1; | ||||
|       this.modalTitle = "编辑"; | ||||
|  | @ -209,6 +213,7 @@ export default { | |||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 确认删除分类 | ||||
|     remove(v) { | ||||
|       this.$Modal.confirm({ | ||||
|         title: "确认删除", | ||||
|  | @ -227,6 +232,7 @@ export default { | |||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 获取分类 | ||||
|     getAllList() { | ||||
|       this.loading = true; | ||||
|       API_Goods.getShopGoodsLabelList(this.searchForm).then((res) => { | ||||
|  |  | |||
|  | @ -1,57 +1,56 @@ | |||
| <template> | ||||
|   <div class="search"> | ||||
|     <Card> | ||||
|       <Row v-show="openSearch" @keydown.enter.native="handleSearch"> | ||||
|         <Form | ||||
|           ref="searchForm" | ||||
|           :model="searchForm" | ||||
|           inline | ||||
|           :label-width="70" | ||||
|           class="search-form" | ||||
|         > | ||||
|           <Form-item label="商品名称" prop="goodsName"> | ||||
|       <Form | ||||
|         ref="searchForm" | ||||
|         :model="searchForm" | ||||
|         inline | ||||
|         :label-width="70" | ||||
|         class="search-form mb_10" | ||||
|         @keydown.enter.native="handleSearch" | ||||
|       > | ||||
|         <Form-item label="商品名称" prop="goodsName"> | ||||
|           <Input | ||||
|             type="text" | ||||
|             v-model="searchForm.goodsName" | ||||
|             placeholder="请输入商品名称" | ||||
|             clearable | ||||
|             style="width: 200px" | ||||
|           /> | ||||
|         </Form-item> | ||||
|         <span v-if="drop"> | ||||
|           <Form-item label="状态" prop="status"> | ||||
|             <Select | ||||
|               v-model="searchForm.marketEnable" | ||||
|               placeholder="请选择" | ||||
|               clearable | ||||
|               style="width: 200px" | ||||
|             > | ||||
|               <Option value="DOWN">下架</Option> | ||||
|               <Option value="UPPER">上架</Option> | ||||
|             </Select> | ||||
|           </Form-item> | ||||
|           <Form-item label="商品编号" prop="sn"> | ||||
|             <Input | ||||
|               type="text" | ||||
|               v-model="searchForm.goodsName" | ||||
|               placeholder="请输入商品名称" | ||||
|               v-model="searchForm.sn" | ||||
|               placeholder="商品编号" | ||||
|               clearable | ||||
|               style="width: 200px" | ||||
|             /> | ||||
|           </Form-item> | ||||
|           <span v-if="drop"> | ||||
|             <Form-item label="状态" prop="status"> | ||||
|               <Select | ||||
|                 v-model="searchForm.marketEnable" | ||||
|                 placeholder="请选择" | ||||
|                 clearable | ||||
|                 style="width: 200px" | ||||
|               > | ||||
|                 <Option value="DOWN">下架</Option> | ||||
|                 <Option value="UPPER">上架</Option> | ||||
|               </Select> | ||||
|             </Form-item> | ||||
|             <Form-item label="商品编号" prop="sn"> | ||||
|               <Input | ||||
|                 type="text" | ||||
|                 v-model="searchForm.sn" | ||||
|                 placeholder="商品编号" | ||||
|                 clearable | ||||
|                 style="width: 200px" | ||||
|               /> | ||||
|             </Form-item> | ||||
|           </span> | ||||
|           <Form-item style="margin-left: -35px" class="br"> | ||||
|             <Button @click="handleSearch" type="primary" icon="ios-search" | ||||
|               >搜索</Button | ||||
|             > | ||||
|             <Button @click="handleReset">重置</Button> | ||||
|             <a class="drop-down" @click="dropDown"> | ||||
|               {{ dropDownContent }} | ||||
|               <Icon :type="dropDownIcon"></Icon> | ||||
|             </a> | ||||
|           </Form-item> | ||||
|         </Form> | ||||
|       </Row> | ||||
|         </span> | ||||
|         <Form-item style="margin-left: -35px" class="br"> | ||||
|           <Button @click="handleSearch" type="primary" icon="ios-search" | ||||
|             >搜索</Button | ||||
|           > | ||||
|           <Button @click="handleReset">重置</Button> | ||||
|           <a class="drop-down" @click="dropDown"> | ||||
|             {{ dropDownContent }} | ||||
|             <Icon :type="dropDownIcon"></Icon> | ||||
|           </a> | ||||
|         </Form-item> | ||||
|       </Form> | ||||
|       <Table | ||||
|         :loading="loading" | ||||
|         border | ||||
|  | @ -198,13 +197,14 @@ export default { | |||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     init() { | ||||
|     init() { // 初始化数据 | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 编辑模板 | ||||
|     editGoods(v) { | ||||
|         this.$router.push({ name: "goods-template-operation-edit", query: { draftId: v.id } }) | ||||
|       this.$router.push({ name: "goods-template-operation-edit", query: { draftId: v.id } }) | ||||
|     }, | ||||
|     // 删除模板 | ||||
|     removeDraft (id) { | ||||
|       let showType = "模版"; | ||||
|       this.$Modal.confirm({ | ||||
|  | @ -222,19 +222,23 @@ export default { | |||
|         }, | ||||
|       }); | ||||
|     }, | ||||
|     // 改变页数 | ||||
|     changePage(v) { | ||||
|       this.searchForm.pageNumber = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 改变页码 | ||||
|     changePageSize(v) { | ||||
|       this.searchForm.pageSize = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 搜索 | ||||
|     handleSearch() { | ||||
|       this.searchForm.pageNumber = 1; | ||||
|       this.searchForm.pageSize = 10; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 重置 | ||||
|     handleReset() { | ||||
|       this.$refs.searchForm.resetFields(); | ||||
|       this.searchForm.pageNumber = 1; | ||||
|  | @ -242,6 +246,7 @@ export default { | |||
|       // 重新加载数据 | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 展开、收起搜索项 | ||||
|     dropDown() { | ||||
|       if (this.drop) { | ||||
|         this.dropDownContent = "展开"; | ||||
|  | @ -252,6 +257,7 @@ export default { | |||
|       } | ||||
|       this.drop = !this.drop; | ||||
|     }, | ||||
|     // 获取列表数据 | ||||
|     getDataList() { | ||||
|       this.loading = true; | ||||
|       // 带多条件搜索参数获取表单数据 | ||||
|  |  | |||
|  | @ -64,7 +64,6 @@ | |||
|         </template> | ||||
| 
 | ||||
|       </Table> | ||||
| 
 | ||||
|       <Row type="flex" justify="end" class="page"> | ||||
|         <Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]" size="small" | ||||
|           show-total show-elevator show-sizer></Page> | ||||
|  | @ -123,7 +122,7 @@ export default { | |||
|     return { | ||||
|       id: "", //要操作的id | ||||
|       loading: true, // 表单加载状态 | ||||
|       shipTemplateForm: {}, | ||||
|       shipTemplateForm: {}, // 物流模板 | ||||
|       shipTemplateModal: false, // 物流模板是否显示 | ||||
|       logisticsTemplate: [], // 物流列表 | ||||
|       updateStockModalVisible: false, // 更新库存模态框显隐 | ||||
|  | @ -382,12 +381,14 @@ export default { | |||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     init() { | ||||
|     init() { // 初始化数据 | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 添加商品 | ||||
|     addGoods() { | ||||
|       this.$router.push({ name: "goods-operation" }); | ||||
|     }, | ||||
|     // 编辑商品 | ||||
|     editGoods(v) { | ||||
|       this.$router.push({ name: "goods-operation-edit", query: { id: v.id } }); | ||||
|     }, | ||||
|  | @ -437,20 +438,24 @@ export default { | |||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 改变页码 | ||||
|     changePage(v) { | ||||
|       this.searchForm.pageNumber = v; | ||||
|       this.getDataList(); | ||||
|       this.clearSelectAll(); | ||||
|     }, | ||||
|     // 改变页数 | ||||
|     changePageSize(v) { | ||||
|       this.searchForm.pageSize = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 搜索 | ||||
|     handleSearch() { | ||||
|       this.searchForm.pageNumber = 1; | ||||
|       this.searchForm.pageSize = 10; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 重置搜索条件 | ||||
|     handleReset() { | ||||
|       this.searchForm = {}; | ||||
|       this.searchForm.pageNumber = 1; | ||||
|  | @ -458,24 +463,17 @@ export default { | |||
|       // 重新加载数据 | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     changeSort(e) { | ||||
|       this.searchForm.sort = e.key; | ||||
|       this.searchForm.order = e.order; | ||||
|       if (e.order === "normal") { | ||||
|         this.searchForm.order = ""; | ||||
|       } | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     // 清除多选 | ||||
|     clearSelectAll() { | ||||
|       this.$refs.table.selectAll(false); | ||||
|     }, | ||||
|     // 添加选中项 | ||||
|     changeSelect(e) { | ||||
|       this.selectList = e; | ||||
|       this.selectCount = e.length; | ||||
|     }, | ||||
|     //保存物流模板信息 | ||||
|     saveShipTemplate() { | ||||
|       | ||||
|       this.$Modal.confirm({ | ||||
|         title: "确认设置物流模板", | ||||
|         content: | ||||
|  |  | |||
|  | @ -37,6 +37,7 @@ export default { | |||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     // 选择商品分类回调 | ||||
|     getFirstData (item) { | ||||
|       this.firstData = item; | ||||
|       this.activestep = 1; | ||||
|  | @ -54,7 +55,6 @@ export default { | |||
|   } | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| @import "./addGoods.scss"; | ||||
| </style> | ||||
|  |  | |||
|  | @ -108,10 +108,8 @@ export default { | |||
|       goodsType: '', | ||||
|       /** 1级分类列表*/ | ||||
|       categoryListLevel1: [], | ||||
| 
 | ||||
|       /** 2级分类列表*/ | ||||
|       categoryListLevel2: [], | ||||
| 
 | ||||
|       /** 3级分类列表*/ | ||||
|       categoryListLevel3: [], | ||||
|     } | ||||
|  |  | |||
|  | @ -59,36 +59,33 @@ | |||
|               <Input type="text" v-model="baseInfoForm.cost" placeholder="市场价格" clearable style="width: 260px"/> | ||||
|             </FormItem> | ||||
|             <FormItem class="form-item-view-el required" label="商品图片" prop="goodsGalleryFiles"> | ||||
|               <vuedraggable | ||||
|                 :list="baseInfoForm.goodsGalleryFiles" | ||||
|                 :animation="200" | ||||
|                 style="display:inline-block;" | ||||
|                 ghost-class="thumb-ghost" | ||||
|               > | ||||
|                 <div class="demo-upload-list" v-for="(item, __index) in baseInfoForm.goodsGalleryFiles" :key="__index"> | ||||
|                   <template v-if="item.status === 'finished'"> | ||||
|                     <img :src="item.url"/> | ||||
|                     <div class="demo-upload-list-cover"> | ||||
|                       <div> | ||||
|                         <Icon type="ios-eye-outline" size="30" @click.native="handleViewGoodsPicture(item.url)"></Icon> | ||||
|                         <Icon type="ios-trash-outline" size="30" @click.native="handleRemoveGoodsPicture(item)"></Icon> | ||||
|               <div style="display:flex;flex-wrap:flex-start;"> | ||||
|                 <vuedraggable | ||||
|                   :list="baseInfoForm.goodsGalleryFiles" | ||||
|                   :animation="200" | ||||
|                 > | ||||
|                   <div class="demo-upload-list" v-for="(item, __index) in baseInfoForm.goodsGalleryFiles" :key="__index"> | ||||
|                     <template> | ||||
|                       <img :src="item.url"/> | ||||
|                       <div class="demo-upload-list-cover"> | ||||
|                         <div> | ||||
|                           <Icon type="md-search" size="30" @click.native="handleViewGoodsPicture(item.url)"></Icon> | ||||
|                           <Icon type="md-trash" size="30" @click.native="handleRemoveGoodsPicture(item)"></Icon> | ||||
|                         </div> | ||||
|                       </div> | ||||
|                     </div> | ||||
|                   </template> | ||||
|                   <template v-else> | ||||
|                     <Progress v-if="item.showProgress" :percent="item.percentage" hide-info></Progress> | ||||
|                   </template> | ||||
|                 </div> | ||||
|               </vuedraggable> | ||||
|               <Upload ref="upload" :show-upload-list="false" :default-file-list="baseInfoForm.goodsGalleryFiles" | ||||
|                 :on-success="handleSuccessGoodsPicture" :format="['jpg', 'jpeg', 'png']" | ||||
|                 :on-format-error="handleFormatError" :on-exceeded-size="handleMaxSize" | ||||
|                 :before-upload="handleBeforeUploadGoodsPicture" multiple type="drag" :action="uploadFileUrl" | ||||
|                 :headers="accessToken" style="display: inline-block;margin-left:10px;"> | ||||
|                 <div style="width: 80px; height: 80px; line-height: 80px"> | ||||
|                   <Icon type="ios-camera" size="20"></Icon> | ||||
|                 </div> | ||||
|               </Upload> | ||||
|                     </template> | ||||
|                   </div> | ||||
|                 </vuedraggable> | ||||
|                 <Upload ref="upload" :show-upload-list="false"  | ||||
|                   :on-success="handleSuccessGoodsPicture" :format="['jpg', 'jpeg', 'png']" | ||||
|                   :on-format-error="handleFormatError" :on-exceeded-size="handleMaxSize" | ||||
|                   :before-upload="handleBeforeUploadGoodsPicture" multiple type="drag" :action="uploadFileUrl" | ||||
|                   :headers="accessToken" style="margin-left:10px"> | ||||
|                   <div style="width: 148px; height: 148px; line-height: 148px"> | ||||
|                     <Icon type="md-add" size="20"></Icon> | ||||
|                   </div> | ||||
|                 </Upload> | ||||
|               </div> | ||||
|               <Modal title="View Image" v-model="goodsPictureVisible"> | ||||
|                 <img :src="previewGoodsPicture" v-if="goodsPictureVisible" style="width: 100%"/> | ||||
|               </Modal> | ||||
|  | @ -98,7 +95,7 @@ | |||
|                 <Panel name="1"> | ||||
|                   规格名称 | ||||
|                   <div slot="content" class="sku-item-content"> | ||||
|                     <Form :model="skuForm" @submit.native.prevent> | ||||
|                     <Form> | ||||
|                       <div class="sku-item" v-for="(item, $index) in skuInfo" :key="$index"> | ||||
|                         <Card :bordered="true"> | ||||
|                           <FormItem label="规格名:" class="sku-item-content-name"> | ||||
|  | @ -113,7 +110,7 @@ | |||
|                           <FormItem label="规格值:" prop="sku"> | ||||
|                             <!--规格值文本列表--> | ||||
|                             <div v-for="(val, index) in item.spec_values" :key="index" | ||||
|                                  style="padding: 0px 20px 10px 0px; float: left"> | ||||
|                                   style="padding: 0px 20px 10px 0px; float: left"> | ||||
|                               <div> | ||||
|                                 <AutoComplete style="width: 150px; float: left" v-model="val.value" | ||||
|                                   :maxlength="30" placeholder="请输入规格值名称" | ||||
|  | @ -170,24 +167,21 @@ | |||
|                             </div> | ||||
|                             <Divider/> | ||||
|                             <vuedraggable | ||||
|                               :list="baseInfoForm.goodsGalleryFiles" | ||||
|                               :list="selectedSku.images" | ||||
|                               :animation="200" | ||||
|                               style="display:inline-block;" | ||||
|                             > | ||||
|                               <div class="sku-upload-list" v-for="(img, __index) in selectedSku.images" :key="__index"> | ||||
|                                 <template v-if="img.status === 'finished'"> | ||||
|                                 <template> | ||||
|                                   <img :src="img.url"/> | ||||
|                                   <div class="sku-upload-list-cover"> | ||||
|                                     <Icon type="ios-eye-outline" @click="handleView(img.url)"></Icon> | ||||
|                                     <Icon type="ios-trash-outline" @click="handleRemove(img, __index)"></Icon> | ||||
|                                     <Icon type="md-search" @click="handleView(img.url)"></Icon> | ||||
|                                     <Icon type="md-trash" @click="handleRemove(img, __index)"></Icon> | ||||
|                                   </div> | ||||
|                                 </template> | ||||
|                                 <template v-else> | ||||
|                                   <Progress v-if="img.showProgress" :percent="img.percentage" hide-info></Progress> | ||||
|                                 </template> | ||||
|                               </div> | ||||
|                             </vuedraggable> | ||||
|                             <Upload ref="uploadSku" :show-upload-list="false" :default-file-list="row.images" | ||||
|                             <Upload ref="uploadSku" :show-upload-list="false" | ||||
|                                 :on-success="handleSuccess" :format="['jpg', 'jpeg', 'png']" | ||||
|                                 :on-format-error="handleFormatError" :on-exceeded-size="handleMaxSize" | ||||
|                                 :before-upload="handleBeforeUpload" multiple type="drag" :action="uploadFileUrl" | ||||
|  | @ -425,28 +419,20 @@ export default { | |||
|         /** 商品分类中文名 */ | ||||
|         categoryName: [] | ||||
|       }, | ||||
|       /** 表单数据*/ | ||||
|       skuForm: {}, | ||||
|       /** 表格头 */ | ||||
|       skuTableColumn: [], | ||||
|       /** 表格数据 */ | ||||
|       skuTableData: [], | ||||
| 
 | ||||
|       /** 默认的规格参数 */ | ||||
|       skuData: [], | ||||
| 
 | ||||
|       /** 默认的规格值 */ | ||||
|       skuVals: [], | ||||
|       // 某一规格名下的规格值 | ||||
|       skuVal: [], | ||||
|       // 规格展开的项 | ||||
|       open_panel: [1, 2], | ||||
| 
 | ||||
|       /** 要提交的规格数据*/ | ||||
|       skuInfo: [], | ||||
| 
 | ||||
|       /** 规格图片 */ | ||||
|       images: [], | ||||
| 
 | ||||
|       /** 物流模板 **/ | ||||
|       logisticsTemplate: [], | ||||
| 
 | ||||
|  | @ -491,12 +477,11 @@ export default { | |||
|       }, | ||||
|       /** 品牌列表 */ | ||||
|       brandList: [], | ||||
|       collapseVal: [], | ||||
|       /** 店铺分类列表 */ | ||||
|       shopCategory: [], | ||||
|       /** 商品单位列表 */ | ||||
|       goodsUnitList: [], | ||||
|       ignoreColumn: [ | ||||
|       ignoreColumn: [ // 添加规格时需要忽略的参数 | ||||
|         "_index", | ||||
|         "_rowKey", | ||||
|         "sn", | ||||
|  | @ -506,8 +491,7 @@ export default { | |||
|         "quantity", | ||||
|         "specId", | ||||
|         "specValueId", | ||||
|       ], | ||||
|       skuValVisible: true, | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|  | @ -577,19 +561,23 @@ export default { | |||
|         this.previewPicture = ""; | ||||
|       } | ||||
|     }, | ||||
|     // 查看商品大图 | ||||
|     handleViewGoodsPicture(url) { | ||||
|       this.previewGoodsPicture = url; | ||||
|       this.goodsPictureVisible = true; | ||||
|     }, | ||||
|     // 移除商品图片 | ||||
|     handleRemoveGoodsPicture(file) { | ||||
|       this.baseInfoForm.goodsGalleryFiles = | ||||
|         this.baseInfoForm.goodsGalleryFiles.filter((i) => i.url !== file.url); | ||||
|     }, | ||||
|     // 更新sku图片 | ||||
|     updateSkuPicture() { | ||||
|       this.baseInfoForm.regeneratorSkuFlag = true; | ||||
|       let _index = this.selectedSku._index; | ||||
|       this.skuTableData[_index] = this.selectedSku; | ||||
|     }, | ||||
|     // sku图片上传成功 | ||||
|     handleSuccess(res, file) { | ||||
|       if (file.response) { | ||||
|         file.url = file.response.result; | ||||
|  | @ -601,26 +589,31 @@ export default { | |||
|         this.previewPicture = file.url; | ||||
|       } | ||||
|     }, | ||||
|     // 商品图片上传成功 | ||||
|     handleSuccessGoodsPicture(res, file) { | ||||
|       console.log(res); | ||||
|       if (file.response) { | ||||
|         file.url = file.response.result; | ||||
|         this.baseInfoForm.goodsGalleryFiles.push(file); | ||||
|       } | ||||
|     }, | ||||
|     // 图片格式不正确 | ||||
|     handleFormatError(file) { | ||||
|       this.$Notice.warning({ | ||||
|         title: "文件格式不正确", | ||||
|         desc: "文件 " + file.name + " 的格式不正确" | ||||
|       }); | ||||
|     }, | ||||
|     // 图片大小不正确 | ||||
|     handleMaxSize(file) { | ||||
|       this.$Notice.warning({ | ||||
|         title: "超过文件大小限制", | ||||
|         desc: "图片 " + file.name + " 不能超过2mb" | ||||
|       }); | ||||
|     }, | ||||
|     // 商品图片上传 | ||||
|     handleBeforeUploadGoodsPicture() { | ||||
|     // 图片上传前钩子 | ||||
|     handleBeforeUploadGoodsPicture(file) { | ||||
|        | ||||
|       const check = this.baseInfoForm.goodsGalleryFiles.length < 5; | ||||
|       if (!check) { | ||||
|         this.$Notice.warning({ | ||||
|  | @ -629,18 +622,15 @@ export default { | |||
|         return false | ||||
|       } | ||||
|     }, | ||||
|     // sku图片上传前钩子 | ||||
|     handleBeforeUpload(file) { | ||||
|       const check = | ||||
|         this.selectedSku.images !== undefined && | ||||
|         this.selectedSku.images.length > 5; | ||||
|       if (check) { | ||||
|         this.$Notice.warning({ | ||||
|           title: "图片数量不能大于五张", | ||||
|         }); | ||||
|         this.$Notice.warning({ title: "图片数量不能大于五张" }); | ||||
|         return false | ||||
|       } | ||||
|       console.log(file); | ||||
|       return !check; | ||||
|        | ||||
|     }, | ||||
|     | ||||
|     /** 查询商品品牌列表 */ | ||||
|  |  | |||
|  | @ -26,6 +26,7 @@ export default { | |||
|     gotoGoodsList() { | ||||
|       this.$router.push({name: "goods"}); | ||||
|     }, | ||||
|     // 刷新页面 | ||||
|     gotoBack() { | ||||
|       this.$router.go(); | ||||
|     }, | ||||
|  |  | |||
|  | @ -1,341 +0,0 @@ | |||
| <template> | ||||
|   <div class="search"> | ||||
|         <Card> | ||||
|           <Row v-show="openSearch" @keydown.enter.native="handleSearch"> | ||||
|             <Form | ||||
|               ref="searchForm" | ||||
|               :model="searchForm" | ||||
|               inline | ||||
|               :label-width="70" | ||||
|               class="search-form" | ||||
|             > | ||||
|               <Form-item label="商品名称" prop="goodsName"> | ||||
|                 <Input | ||||
|                   type="text" | ||||
|                   v-model="searchForm.goodsName" | ||||
|                   placeholder="请输入商品名称" | ||||
|                   clearable | ||||
|                   style="width: 200px" | ||||
|                 /> | ||||
|               </Form-item> | ||||
|               <span v-if="drop"> | ||||
|                 <Form-item label="状态" prop="status"> | ||||
|                   <Select | ||||
|                     v-model="searchForm.marketEnable" | ||||
|                     placeholder="请选择" | ||||
|                     clearable | ||||
|                     style="width: 200px" | ||||
|                   > | ||||
|                     <Option value="DOWN">下架</Option> | ||||
|                     <Option value="UPPER">上架</Option> | ||||
|                   </Select> | ||||
|                 </Form-item> | ||||
|                 <Form-item label="商品编号" prop="sn"> | ||||
|                   <Input | ||||
|                     type="text" | ||||
|                     v-model="searchForm.sn" | ||||
|                     placeholder="商品编号" | ||||
|                     clearable | ||||
|                     style="width: 200px" | ||||
|                   /> | ||||
|                 </Form-item> | ||||
|               </span> | ||||
|               <Form-item style="margin-left: -35px" class="br"> | ||||
|                 <Button @click="handleSearch" type="primary" icon="ios-search" | ||||
|                   >搜索</Button | ||||
|                 > | ||||
|                 <Button @click="handleReset">重置</Button> | ||||
|                 <a class="drop-down" @click="dropDown"> | ||||
|                   {{ dropDownContent }} | ||||
|                   <Icon :type="dropDownIcon"></Icon> | ||||
|                 </a> | ||||
|               </Form-item> | ||||
|             </Form> | ||||
|           </Row> | ||||
|           <Row class="operation"> | ||||
|             <Button @click="addGoods" icon="md-refresh">添加商品</Button> | ||||
|             <Button @click="getDataList" icon="md-refresh">刷新</Button> | ||||
|             <Button type="dashed" @click="openSearch = !openSearch">{{ | ||||
|               openSearch ? "关闭搜索" : "开启搜索" | ||||
|             }}</Button> | ||||
|             <Button type="dashed" @click="openTip = !openTip">{{ | ||||
|               openTip ? "关闭提示" : "开启提示" | ||||
|             }}</Button> | ||||
|           </Row> | ||||
|           <Row v-show="openTip"> | ||||
|             <Alert show-icon> | ||||
|               已选择 <span class="select-count">{{ selectCount }}</span> 项 | ||||
|               <a class="select-clear" @click="clearSelectAll">清空</a> | ||||
|             </Alert> | ||||
|           </Row> | ||||
|           <Table | ||||
|             :loading="loading" | ||||
|             border | ||||
|             :columns="columns" | ||||
|             :data="data" | ||||
|             ref="table" | ||||
|             sortable="custom" | ||||
|             @on-sort-change="changeSort" | ||||
|             @on-selection-change="changeSelect" | ||||
|           ></Table> | ||||
|           <Row type="flex" justify="end" class="page"> | ||||
|             <Page | ||||
|               :current="searchForm.pageNumber" | ||||
|               :total="total" | ||||
|               :page-size="searchForm.pageSize" | ||||
|               @on-change="changePage" | ||||
|               @on-page-size-change="changePageSize" | ||||
|               :page-size-opts="[10, 20, 50]" | ||||
|               size="small" | ||||
|               show-total | ||||
|               show-elevator | ||||
|               show-sizer | ||||
|             ></Page> | ||||
|           </Row> | ||||
|         </Card> | ||||
|     <Modal | ||||
|       title="更新库存" | ||||
|       v-model="updateStockModalVisible" | ||||
|       :mask-closable="false" | ||||
|       :width="500" | ||||
|     > | ||||
|       <Input | ||||
|         type="number" | ||||
|         v-model="updateStockParam.quantity" | ||||
|       /> | ||||
|       <div slot="footer"> | ||||
|         <Button type="text" @click="updateStockModalVisible = false" | ||||
|           >取消</Button | ||||
|         > | ||||
|         <Button type="primary" @click="updateStock">更新</Button> | ||||
|       </div> | ||||
|     </Modal> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import { | ||||
|   getGoodsListDataByStockSeller, | ||||
|   getGoodsSkuListDataSeller, | ||||
|   updateGoodsSkuStocks, | ||||
|   upGoods, | ||||
|   lowGoods, | ||||
| } from "@/api/goods"; | ||||
| export default { | ||||
|   name: "goods", | ||||
|   components: {}, | ||||
|   data() { | ||||
|     return { | ||||
|       id: "", //要操作的id | ||||
|       openSearch: true, // 显示搜索 | ||||
|       openTip: true, // 显示提示 | ||||
|       loading: true, // 表单加载状态 | ||||
|       updateStockModalVisible: false, // 更新库存模态框 | ||||
|       drop: false, // 搜索栏更多选项 | ||||
|       dropDownContent: "展开", | ||||
|       dropDownIcon: "ios-arrow-down", | ||||
|       searchForm: { | ||||
|         // 搜索框初始化对象 | ||||
|         pageNumber: 1, // 当前页数 | ||||
|         pageSize: 10, // 页面大小 | ||||
|         sort: "create_time", // 默认排序字段 | ||||
|         order: "desc", // 默认排序方式 | ||||
|       }, | ||||
|       updateStockParam: { // 更新库存表单 | ||||
|         id: 0, | ||||
|         quantity:  0, | ||||
|       }, | ||||
|       form: { | ||||
|         // 添加或编辑表单对象初始化数据 | ||||
|         goodsName: "", | ||||
|         sn: "", | ||||
|         marketEnable: "", | ||||
|         price: "", | ||||
|         sellerName: "", | ||||
|       }, | ||||
|       selectList: [], // 多选数据 | ||||
|       selectCount: 0, // 多选计数 | ||||
|       columns: [ // 表格表头 | ||||
|         { | ||||
|           type: "selection", | ||||
|           width: 60, | ||||
|           align: "center", | ||||
|         }, | ||||
| 
 | ||||
|         { | ||||
|           title: "商品缩略图", | ||||
|           key: "thumbnail", | ||||
|           width: 150, | ||||
|           align: "center", | ||||
|           render: (h, params) => { | ||||
|             return h("img", { | ||||
|               attrs: { | ||||
|                 src: params.row.thumbnail, | ||||
|                 alt: "加载图片失败", | ||||
|               }, | ||||
|               style: { | ||||
|                 cursor: "pointer", | ||||
|                 width: "80px", | ||||
|                 height: "60px", | ||||
|                 margin: "10px 0", | ||||
|                 "object-fit": "contain", | ||||
|               }, | ||||
|             }); | ||||
|           }, | ||||
|         }, | ||||
| 
 | ||||
|         { | ||||
|           title: "商品名称", | ||||
|           key: "goodsName", | ||||
|           minWidth: 120 | ||||
|         }, | ||||
| 
 | ||||
|         { | ||||
|           title: "库存预警数量", | ||||
|           key: "stockWarningNum", | ||||
|           minWidth: 120 | ||||
|         }, | ||||
| 
 | ||||
|         { | ||||
|           title: "商品库存", | ||||
|           key: "quantity", | ||||
|           minWidth: 120 | ||||
|         }, | ||||
| 
 | ||||
|         { | ||||
|           title: "操作", | ||||
|           key: "action", | ||||
|           align: "center", | ||||
|           width: 200, | ||||
|           render: (h, params) => { | ||||
|             return h("div", [ | ||||
|               h( | ||||
|                 "Button", | ||||
|                 { | ||||
|                   props: { | ||||
|                     type: "info", | ||||
|                     size: "small", | ||||
|                   }, | ||||
|                   style: { | ||||
|                     marginRight: "5px", | ||||
|                   }, | ||||
|                   on: { | ||||
|                     click: () => { | ||||
|                       this.getUpdateStock(params.row); | ||||
|                     }, | ||||
|                   }, | ||||
|                 }, | ||||
|                 "库存" | ||||
|               ) | ||||
|             ]); | ||||
|           }, | ||||
|         }, | ||||
|       ], | ||||
|       data: [], // 表单数据 | ||||
|       total: 0, // 表单数据总数 | ||||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     init() { | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     getUpdateStock(row) { | ||||
|       this.updateStockParam = {skuId: row.id, quantity: row.quantity}; | ||||
|       this.updateStockModalVisible = true; | ||||
|     }, | ||||
|     updateStock() { | ||||
|       let updateStockList = [this.updateStockParam]; | ||||
|       updateGoodsSkuStocks(updateStockList).then(res => { | ||||
|         if (res.success) { | ||||
|           this.updateStockModalVisible = false; | ||||
|           this.$Message.success("更新库存成功"); | ||||
|           this.getDataList(); | ||||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     changePage(v) { | ||||
|       this.searchForm.pageNumber = v; | ||||
|       this.getDataList(); | ||||
|       this.clearSelectAll(); | ||||
|     }, | ||||
|     changePageSize(v) { | ||||
|       this.searchForm.pageSize = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     handleSearch() { | ||||
|       this.searchForm.pageNumber = 1; | ||||
|       this.searchForm.pageSize = 10; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     handleReset() { | ||||
|       this.$refs.searchForm.resetFields(); | ||||
|       this.searchForm.pageNumber = 1; | ||||
|       this.searchForm.pageSize = 10; | ||||
|       // 重新加载数据 | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     changeSort(e) { | ||||
|       this.searchForm.sort = e.key; | ||||
|       this.searchForm.order = e.order; | ||||
|       if (e.order === "normal") { | ||||
|         this.searchForm.order = ""; | ||||
|       } | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     clearSelectAll() { | ||||
|       this.$refs.table.selectAll(false); | ||||
|     }, | ||||
|     changeSelect(e) { | ||||
|       this.selectList = e; | ||||
|       this.selectCount = e.length; | ||||
|     }, | ||||
|     dropDown() { | ||||
|       if (this.drop) { | ||||
|         this.dropDownContent = "展开"; | ||||
|         this.dropDownIcon = "ios-arrow-down"; | ||||
|       } else { | ||||
|         this.dropDownContent = "收起"; | ||||
|         this.dropDownIcon = "ios-arrow-up"; | ||||
|       } | ||||
|       this.drop = !this.drop; | ||||
|     }, | ||||
|     getDataList() { | ||||
|       this.loading = true; | ||||
|       // 带多条件搜索参数获取表单数据 | ||||
|       getGoodsListDataByStockSeller(this.searchForm).then((res) => { | ||||
|         this.loading = false; | ||||
|         if (res.success) { | ||||
|           this.data = res.result.goodsSkuIPage.records.map(i =>{ | ||||
|              i.stockWarningNum = res.result.stockWarningNum | ||||
|              return i; | ||||
|           }); | ||||
|           this.total = res.result.goodsSkuIPage.total; | ||||
|         } | ||||
|       }); | ||||
|     }, | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.init(); | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss" scoped> | ||||
| .search { | ||||
|   .operation { | ||||
|     margin-bottom: 2vh; | ||||
|   } | ||||
|   .select-count { | ||||
|     font-weight: 600; | ||||
|     color: #40a9ff; | ||||
|   } | ||||
|   .select-clear { | ||||
|     margin-left: 10px; | ||||
|   } | ||||
|   .page { | ||||
|     margin-top: 2vh; | ||||
|   } | ||||
|   .drop-down { | ||||
|     margin-left: 5px; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|  | @ -22,7 +22,7 @@ h4 { | |||
|   > div { | ||||
|     padding: 0 20px; | ||||
| 
 | ||||
|     border-left: 1px solid #ededed; | ||||
|     // border-left: 1px solid #ededed; | ||||
|     > h5 { | ||||
| 
 | ||||
|       text-align: center; | ||||
|  |  | |||
|  | @ -217,11 +217,13 @@ export default { | |||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     // 跳转页面 | ||||
|     navigateTo(name) { | ||||
|       this.$router.push({ | ||||
|         name, | ||||
|       }); | ||||
|     }, | ||||
|     // 初始化数据 | ||||
|     async init() { | ||||
|       let userInfo = JSON.parse(Cookies.get("userInfo")); | ||||
| 
 | ||||
|  | @ -232,7 +234,7 @@ export default { | |||
|         this.notices = res.result.records; | ||||
|       } | ||||
|     }, | ||||
| 
 | ||||
|     // 跳转文章页 | ||||
|     async clickLinkNotices(val) { | ||||
|       let res = await seeArticle(val.id); | ||||
|       if (res.success) { | ||||
|  | @ -240,7 +242,7 @@ export default { | |||
|         this.noticeFlage = true; | ||||
|       } | ||||
|     }, | ||||
| 
 | ||||
|     // 获取首页数据 | ||||
|     async getHomeData() { | ||||
|       let res = await getSellerHomeData(); | ||||
|       if (res.success) { | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ export default { | |||
|       }, | ||||
|       storeId: "", // 店铺id | ||||
|       dates: [], // 日期列表 | ||||
|       params: { | ||||
|       params: { // 请求参数 | ||||
|         pageNumber: 1, | ||||
|         pageSize: 10, | ||||
|         storeName: "", | ||||
|  | @ -65,8 +65,6 @@ export default { | |||
|   }, | ||||
|   mounted() { | ||||
|    this.storeId = JSON.parse(Cookies.get("userInfo")).id; | ||||
| 
 | ||||
| 
 | ||||
|     this.getFiveYears(); | ||||
|   }, | ||||
|   methods: { | ||||
|  | @ -91,7 +89,7 @@ export default { | |||
|       } | ||||
|       this.dates = dates.reverse(); | ||||
|     }, | ||||
| 
 | ||||
|     // 选择回调 | ||||
|     changeSelect() { | ||||
|       if (this.month) { | ||||
|         this.dateList.forEach((res) => { | ||||
|  | @ -105,7 +103,7 @@ export default { | |||
|       } else { | ||||
|       } | ||||
|     }, | ||||
| 
 | ||||
|     // 点击时间筛选 | ||||
|     clickBreadcrumb(item) { | ||||
|       this.dateList.forEach((res) => { | ||||
|         res.selected = false; | ||||
|  | @ -119,7 +117,6 @@ export default { | |||
|       } | ||||
| 
 | ||||
|       this.selectedWay = item; | ||||
|       // this.month = ""; | ||||
|       this.selectedWay.year = new Date().getFullYear(); | ||||
|       this.selectedWay.month = ""; | ||||
| 
 | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ export default { | |||
|     this.init(); | ||||
|   }, | ||||
|   methods: { | ||||
|     clear() { | ||||
|     clear() {  // 引用该组件的父组件会调用 | ||||
|       this.data = []; | ||||
|       this.selectedWay = []; | ||||
|       this.init(); | ||||
|  | @ -49,13 +49,9 @@ export default { | |||
|      */ | ||||
|     open(val, index) { | ||||
|       if (val) { | ||||
|         // console.warn(val); | ||||
|         //已选中的地址 | ||||
|         let checkedData = this.$store.state.shipTemplate; | ||||
| 
 | ||||
|         // console.warn(this.$store.state.shipTemplate); | ||||
|         // 禁止选中的地址 | ||||
| 
 | ||||
|         let checkData = []; | ||||
|         let disabledData = checkedData.filter((item, i) => { | ||||
|           if (i != index) { | ||||
|  | @ -177,7 +173,7 @@ export default { | |||
| 
 | ||||
|       this.cancel(); | ||||
|     }, | ||||
| 
 | ||||
|     // 初始化地区数据 | ||||
|     init() { | ||||
|       getAllCity().then((res) => { | ||||
|         if (res.result) { | ||||
|  |  | |||
|  | @ -29,6 +29,7 @@ export default { | |||
| 
 | ||||
|   props: ['addressId'], | ||||
|   methods: { | ||||
|     // 选择地区回显 | ||||
|     change(val, selectedData) { | ||||
|       /** | ||||
|        * @returns [regionId,region] | ||||
|  | @ -46,8 +47,7 @@ export default { | |||
|     handleChangeOnSelect(value) { | ||||
|       this.changeOnSelect = value; | ||||
|     }, | ||||
|     getArea(val) { | ||||
|     }, | ||||
|     // 动态加载数据 | ||||
|     loadData(item, callback) { | ||||
|       item.loading = true; | ||||
|       API_Setup.getChildRegion(item.value).then((res) => { | ||||
|  | @ -87,6 +87,7 @@ export default { | |||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 初始化数据 | ||||
|     init() { | ||||
|       API_Setup.getChildRegion(this.id).then((res) => { | ||||
|         let way = []; | ||||
|  | @ -116,5 +117,3 @@ export default { | |||
|   }, | ||||
| }; | ||||
| </script> | ||||
| <style scoped lang="scss"> | ||||
| </style> | ||||
|  |  | |||
|  | @ -1,360 +0,0 @@ | |||
| <template> | ||||
|   <div class="search"> | ||||
|     <Card> | ||||
|       <Row @keydown.enter.native="handleSearch"> </Row> | ||||
|       <Row class="operation"> | ||||
|         <Button @click="add" type="primary" icon="md-add">添加</Button> | ||||
|         <Button @click="getDataList" icon="md-refresh">刷新</Button> | ||||
|         <Button type="dashed" @click="openTip = !openTip">{{ | ||||
|           openTip ? "关闭提示" : "开启提示" | ||||
|         }}</Button> | ||||
|       </Row> | ||||
|       <Row v-show="openTip"> | ||||
|         <Alert show-icon> | ||||
|           已选择 <span class="select-count">{{ selectCount }}</span> 项 | ||||
|           <a class="select-clear" @click="clearSelectAll">清空</a> | ||||
|         </Alert> | ||||
|       </Row> | ||||
|       <Table | ||||
|         :loading="loading" | ||||
|         border | ||||
|         :columns="columns" | ||||
|         :data="data" | ||||
|         ref="table" | ||||
|         sortable="custom" | ||||
|         @on-sort-change="changeSort" | ||||
|         @on-selection-change="changeSelect" | ||||
|       ></Table> | ||||
|       <Row type="flex" justify="end" class="page"> | ||||
|         <Page | ||||
|           :current="searchForm.pageNumber" | ||||
|           :total="total" | ||||
|           :page-size="searchForm.pageSize" | ||||
|           @on-change="changePage" | ||||
|           @on-page-size-change="changePageSize" | ||||
|           :page-size-opts="[10, 20, 50]" | ||||
|           size="small" | ||||
|           show-total | ||||
|           show-elevator | ||||
|           show-sizer | ||||
|         ></Page> | ||||
|       </Row> | ||||
|     </Card> | ||||
|     <Modal | ||||
|       :title="modalTitle" | ||||
|       v-model="modalVisible" | ||||
|       :mask-closable="false" | ||||
|       :width="500" | ||||
|     > | ||||
|       <Form ref="form" :model="form" :label-width="120" :rules="formValidate"> | ||||
|         <FormItem label="物流公司名称" prop="name"> | ||||
|           <Input v-model="form.name" clearable style="width: 100%" /> | ||||
|         </FormItem> | ||||
|         <FormItem label="物流公司代码" prop="code"> | ||||
|           <Input v-model="form.code" clearable style="width: 100%" /> | ||||
|         </FormItem> | ||||
|         <FormItem label="支持电子面单"> | ||||
|           <i-switch v-model="form.standBy"> | ||||
|             <span slot="open">开</span> | ||||
|             <span slot="close">关</span> | ||||
|           </i-switch> | ||||
|         </FormItem> | ||||
|         <FormItem label="电子面单表单"> | ||||
|           <Input v-model="form.formItems" clearable style="width: 100%" /> | ||||
|         </FormItem> | ||||
|         <FormItem label="禁用状态" prop="disabled"> | ||||
|           <i-switch v-model="form.disabled"> | ||||
|             <span slot="open">开</span> | ||||
|             <span slot="close">关</span> | ||||
|           </i-switch> | ||||
|         </FormItem> | ||||
|       </Form> | ||||
|       <div slot="footer"> | ||||
|         <Button type="text" @click="modalVisible = false">取消</Button> | ||||
|         <Button type="primary" :loading="submitLoading" @click="handleSubmit" | ||||
|           >提交</Button | ||||
|         > | ||||
|       </div> | ||||
|     </Modal> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import { | ||||
|   getLogisticsPage, | ||||
|   updateLogistics, | ||||
|   getLogisticsDetail, | ||||
|   addLogistics, | ||||
|   delLogistics, | ||||
| } from "@/api/logistics"; | ||||
| export default { | ||||
|   name: "bill", | ||||
|   components: {}, | ||||
|   data() { | ||||
|     return { | ||||
|       openTip: true, // 显示提示 | ||||
|       loading: true, // 表单加载状态 | ||||
|       modalType: 0, // 添加或编辑标识 | ||||
|       modalVisible: false, // 添加或编辑显示 | ||||
|       modalTitle: "", // 添加或编辑标题 | ||||
|       searchForm: { | ||||
|         // 搜索框初始化对象 | ||||
|         pageNumber: 1, // 当前页数 | ||||
|         pageSize: 10, // 页面大小 | ||||
|         sort: "createTime", // 默认排序字段 | ||||
|         order: "desc", // 默认排序方式 | ||||
|         name: "", | ||||
|       }, | ||||
|       form: { | ||||
|         // 添加或编辑表单对象初始化数据 | ||||
|         name: "", | ||||
|       }, | ||||
|       // 表单验证规则 | ||||
|       formValidate: { | ||||
|         name: [ | ||||
|           { | ||||
|             required: true, | ||||
|             message: "请输入物流公司名称", | ||||
|             trigger: "blur", | ||||
|           }, | ||||
|         ], | ||||
|       }, | ||||
|       submitLoading: false, // 添加或编辑提交状态 | ||||
|       selectList: [], // 多选数据 | ||||
|       selectCount: 0, // 多选计数 | ||||
|       columns: [ | ||||
|         // 表头 | ||||
|         { | ||||
|           type: "selection", | ||||
|           width: 60, | ||||
|           align: "center", | ||||
|         }, | ||||
|         { | ||||
|           title: "物流公司名称", | ||||
|           key: "name", | ||||
|           minWidth: 120 | ||||
|         }, | ||||
|         { | ||||
|           title: "状态", | ||||
|           key: "disabled", | ||||
|           minWidth: 50, | ||||
|           render(h, params) { | ||||
|             if(params.row.disabled){ | ||||
|               return h("div", [h("tag", {props: {color: "green"}}, "开启")]); | ||||
|             }else{ | ||||
|               return h("div", [h("tag", {props: {color: "volcano"}}, "关闭")]); | ||||
|             } | ||||
|           }, | ||||
|         }, | ||||
|         { | ||||
|           title: "操作", | ||||
|           key: "action", | ||||
|           align: "center", | ||||
|           width: 150, | ||||
|           render: (h, params) => { | ||||
|             return h("div", [ | ||||
|               h( | ||||
|                 "Button", | ||||
|                 { | ||||
|                   props: { | ||||
|                     type: "primary", | ||||
|                     size: "small", | ||||
|                   }, | ||||
|                   style: { | ||||
|                     marginRight: "5px", | ||||
|                   }, | ||||
|                   on: { | ||||
|                     click: () => { | ||||
|                       this.detail(params.row); | ||||
|                     }, | ||||
|                   }, | ||||
|                 }, | ||||
|                 "修改" | ||||
|               ), | ||||
|               h( | ||||
|                 "Button", | ||||
|                 { | ||||
|                   props: { | ||||
|                     type: "error", | ||||
|                     size: "small", | ||||
|                   }, | ||||
|                   style: { | ||||
|                     marginRight: "5px", | ||||
|                   }, | ||||
|                   on: { | ||||
|                     click: () => { | ||||
|                       this.remove(params.row); | ||||
|                     }, | ||||
|                   }, | ||||
|                 }, | ||||
|                 "删除" | ||||
|               ), | ||||
|             ]); | ||||
|           }, | ||||
|         }, | ||||
|       ], | ||||
|       data: [], // 表单数据 | ||||
|       total: 0, // 表单数据总数 | ||||
|     }; | ||||
|   }, | ||||
|   methods: { | ||||
|     init() { | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     changePage(v) { | ||||
|       this.searchForm.pageNumber = v; | ||||
|       this.getDataList(); | ||||
|       this.clearSelectAll(); | ||||
|     }, | ||||
|     changePageSize(v) { | ||||
|       this.searchForm.pageSize = v; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     handleSearch() { | ||||
|       this.searchForm.pageNumber = 1; | ||||
|       this.searchForm.pageSize = 10; | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     handleReset() { | ||||
|       this.$refs.searchForm.resetFields(); | ||||
|       this.searchForm.pageNumber = 1; | ||||
|       this.searchForm.pageSize = 10; | ||||
|       // 重新加载数据 | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     changeSort(e) { | ||||
|       this.searchForm.sort = e.key; | ||||
|       this.searchForm.order = e.order; | ||||
|       if (e.order === "normal") { | ||||
|         this.searchForm.order = ""; | ||||
|       } | ||||
|       this.getDataList(); | ||||
|     }, | ||||
|     clearSelectAll() { | ||||
|       this.$refs.table.selectAll(false); | ||||
|     }, | ||||
|     changeSelect(e) { | ||||
|       this.selectList = e; | ||||
|       this.selectCount = e.length; | ||||
|     }, | ||||
| 
 | ||||
|     getDataList() { | ||||
|       this.loading = true; | ||||
| 
 | ||||
|       getLogisticsPage(this.searchForm).then((res) => { | ||||
|         this.loading = false; | ||||
|         if (res.success) { | ||||
|           this.data = res.result.records; | ||||
|           this.total = res.result.total; | ||||
|         } | ||||
|       }); | ||||
|       this.total = this.data.length; | ||||
|       this.loading = false; | ||||
|     }, | ||||
|     handleSubmit() { | ||||
|       this.$refs.form.validate((valid) => { | ||||
|         if (valid) { | ||||
|           this.submitLoading = true; | ||||
| 
 | ||||
|           if (this.modalType == 0) { | ||||
|             // 添加 避免编辑后传入id等数据 记得删除 | ||||
|             delete this.form.id; | ||||
| 
 | ||||
|             this.form.disabled | ||||
|               ? (this.form.disabled = "OPEN") | ||||
|               : (this.form.disabled = "CLOSE"); | ||||
|             addLogistics(this.form).then((res) => { | ||||
|               this.submitLoading = false; | ||||
|               if (res.success) { | ||||
|                 this.$Message.success("操作成功"); | ||||
|                 this.getDataList(); | ||||
|                 this.modalVisible = false; | ||||
|               } | ||||
|             }); | ||||
|           } else { | ||||
|             // 编辑 | ||||
|             updateLogistics(this.id, this.form).then((res) => { | ||||
|               this.submitLoading = false; | ||||
|               if (res.success) { | ||||
|                 this.$Message.success("操作成功"); | ||||
|                 this.getDataList(); | ||||
|                 this.modalVisible = false; | ||||
|               } | ||||
|             }); | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     add() { | ||||
|       this.modalType = 0; | ||||
|       this.modalTitle = "添加"; | ||||
|       this.form = {}; | ||||
|       this.$refs.form.resetFields(); | ||||
| 
 | ||||
|       this.modalVisible = true; | ||||
|     }, | ||||
|     detail(v) { | ||||
|       this.modalType = 1; | ||||
|       this.id = v.id; | ||||
|       this.modalTitle = "修改"; | ||||
|       this.modalVisible = true; | ||||
| 
 | ||||
|       this.form.name = v.name; | ||||
|       this.form.code = v.code; | ||||
|       this.form.standBy = v.standBy; | ||||
|       this.form.formItems = v.formItems; | ||||
|       this.form.disabled = v.disabled; | ||||
|       this.form.disabled == "OPEN" | ||||
|         ? (this.form.disabled = true) | ||||
|         : (this.form.disabled = false); | ||||
|     }, | ||||
|     remove(v) { | ||||
|       this.$Modal.confirm({ | ||||
|         title: "确认删除", | ||||
|         // 记得确认修改此处 | ||||
|         content: "您确认要删除 " + v.name + " ?", | ||||
|         loading: true, | ||||
|         onOk: () => { | ||||
|           // 删除 | ||||
|           delLogistics(v.id).then((res) => { | ||||
|             this.$Modal.remove(); | ||||
|             if (res.success) { | ||||
|               this.$Message.success("操作成功"); | ||||
|               this.getDataList(); | ||||
|             } | ||||
|           }); | ||||
|         }, | ||||
|       }); | ||||
|     }, | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.init(); | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| // 建议引入通用样式 可删除下面样式代码 | ||||
| // @import "@/styles/table-common.scss"; | ||||
| .search { | ||||
|   .operation { | ||||
|     margin-bottom: 2vh; | ||||
|   } | ||||
| 
 | ||||
|   .select-count { | ||||
|     font-weight: 600; | ||||
|     color: #40a9ff; | ||||
|   } | ||||
| 
 | ||||
|   .select-clear { | ||||
|     margin-left: 10px; | ||||
|   } | ||||
| 
 | ||||
|   .page { | ||||
|     margin-top: 2vh; | ||||
|   } | ||||
| 
 | ||||
|   .drop-down { | ||||
|     margin-left: 5px; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|  | @ -1,28 +0,0 @@ | |||
| <template> | ||||
|     <Breadcrumb> | ||||
|         <BreadcrumbItem  | ||||
|             v-for="item in currentPath"  | ||||
|             :to="item.path"  | ||||
|             :key="item.name" | ||||
|         >{{ itemTitle(item) }}</BreadcrumbItem> | ||||
|     </Breadcrumb> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| export default { | ||||
|     name: 'breadcrumbNav', | ||||
|     props: { | ||||
|         currentPath: Array | ||||
|     }, | ||||
|     methods: { | ||||
|         itemTitle (item) { | ||||
|             if (typeof item.title == 'object') { | ||||
|                 return this.$t(item.title.i18n); | ||||
|             } else { | ||||
|                 return item.title; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| }; | ||||
| </script> | ||||
| 
 | ||||
|  | @ -21,7 +21,7 @@ export default { | |||
|   name: "footer", | ||||
|   data() { | ||||
|     return { | ||||
|       year: new Date().getFullYear() | ||||
|       year: new Date().getFullYear() // 年 | ||||
|     } | ||||
|   }, | ||||
| }; | ||||
|  |  | |||
|  | @ -33,12 +33,15 @@ import util from "@/libs/util.js"; | |||
| export default { | ||||
|   name: "shrinkableMenu", | ||||
|   computed: { | ||||
|     // 二级菜单列表 | ||||
|     menuList() { | ||||
|       return this.$store.state.app.menuList; | ||||
|     }, | ||||
|     // 一级菜单 | ||||
|     navList() { | ||||
|       return this.$store.state.app.navList; | ||||
|     }, | ||||
|     // 当前一级菜单 | ||||
|     currNav() { | ||||
|       return this.$store.state.app.currNav; | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue