Sfoglia il codice sorgente

商户管理添加菜品可以选择图片,骑手评价中心页面

hzj18279462576@163.com 11 mesi fa
parent
commit
58c6dc3eb3

+ 3 - 1
config/index.js

@@ -23,7 +23,9 @@ module.exports = {
     // 代理列表, 是否开启代理通过[./dev.env.js]配置
     proxyTable: devEnv.OPEN_PROXY === false ? {} : {
       '/proxyApi': {
-        target: 'https://mxys.chuanghai-tech.com/sqx_fast/', // 线上
+        // target: 'https://mxys.chuanghai-tech.com/sqx_fast/', // 线上
+        target: 'http://192.168.161.190:8171/sqx_fast/', // 线上
+
         // target: 'https://mxys.chuanghai-tech.com/wm-test/wm-api',// 测试
         // target: 'http://iyfpk3.natappfree.cc/sqx_fast',// 开发
         changeOrigin: true,

+ 158 - 155
src/element-ui/index.js

@@ -1,155 +1,158 @@
-/**
- * UI组件, 统一使用饿了么桌面端组件库(https://github.com/ElemeFE/element)
- *
- * 使用:
- *  1. 项目中需要的组件进行释放(解开注释)
- *
- * 注意:
- *  1. 打包只会包含释放(解开注释)的组件, 减少打包文件大小
- */
-import Vue from 'vue'
-import {
-  Pagination,
-  Dialog,
-  Autocomplete,
-  Dropdown,
-  DropdownMenu,
-  DropdownItem,
-  Menu,
-  Submenu,
-  MenuItem,
-  MenuItemGroup,
-  Input,
-  InputNumber,
-  Radio,
-  RadioGroup,
-  RadioButton,
-  Checkbox,
-  CheckboxButton,
-  CheckboxGroup,
-  Switch,
-  Select,
-  Option,
-  OptionGroup,
-  Button,
-  ButtonGroup,
-  Table,
-  TableColumn,
-  DatePicker,
-  TimeSelect,
-  TimePicker,
-  Popover,
-  Tooltip,
-  Breadcrumb,
-  BreadcrumbItem,
-  Form,
-  FormItem,
-  Tabs,
-  TabPane,
-  Tag,
-  Tree,
-  Alert,
-  Slider,
-  Icon,
-  Row,
-  Col,
-  Upload,
-  Progress,
-  Badge,
-  Card,
-  Rate,
-  Steps,
-  Step,
-  Carousel,
-  CarouselItem,
-  Collapse,
-  CollapseItem,
-  Cascader,
-  ColorPicker,
-  Transfer,
-  Container,
-  Header,
-  Aside,
-  Main,
-  Footer,
-  Loading,
-  MessageBox,
-  Message,
-  Notification
-} from 'element-ui'
-
-Vue.use(Pagination)
-Vue.use(Dialog)
-Vue.use(Autocomplete)
-Vue.use(Dropdown)
-Vue.use(DropdownMenu)
-Vue.use(DropdownItem)
-Vue.use(Menu)
-Vue.use(Submenu)
-Vue.use(MenuItem)
-Vue.use(MenuItemGroup)
-Vue.use(Input)
-Vue.use(InputNumber)
-Vue.use(Radio)
-Vue.use(RadioGroup)
-Vue.use(RadioButton)
-Vue.use(Checkbox)
-Vue.use(CheckboxButton)
-Vue.use(CheckboxGroup)
-Vue.use(Switch)
-Vue.use(Select)
-Vue.use(Option)
-Vue.use(OptionGroup)
-Vue.use(Button)
-Vue.use(ButtonGroup)
-Vue.use(Table)
-Vue.use(TableColumn)
-Vue.use(DatePicker)
-Vue.use(TimeSelect)
-Vue.use(TimePicker)
-Vue.use(Popover)
-Vue.use(Tooltip)
-Vue.use(Breadcrumb)
-Vue.use(BreadcrumbItem)
-Vue.use(Form)
-Vue.use(FormItem)
-Vue.use(Tabs)
-Vue.use(TabPane)
-Vue.use(Tag)
-Vue.use(Tree)
-Vue.use(Alert)
-Vue.use(Slider)
-Vue.use(Icon)
-Vue.use(Row)
-Vue.use(Col)
-Vue.use(Upload)
-Vue.use(Progress)
-Vue.use(Badge)
-Vue.use(Card)
-Vue.use(Rate)
-Vue.use(Steps)
-Vue.use(Step)
-Vue.use(Carousel)
-Vue.use(CarouselItem)
-Vue.use(Collapse)
-Vue.use(CollapseItem)
-Vue.use(Cascader)
-Vue.use(ColorPicker)
-Vue.use(Transfer)
-Vue.use(Container)
-Vue.use(Header)
-Vue.use(Aside)
-Vue.use(Main)
-Vue.use(Footer)
-
-Vue.use(Loading.directive)
-
-Vue.prototype.$loading = Loading.service
-Vue.prototype.$msgbox = MessageBox
-Vue.prototype.$alert = MessageBox.alert
-Vue.prototype.$confirm = MessageBox.confirm
-Vue.prototype.$prompt = MessageBox.prompt
-Vue.prototype.$notify = Notification
-Vue.prototype.$message = Message
-
-Vue.prototype.$ELEMENT = { size: 'medium' }
+/**
+ * UI组件, 统一使用饿了么桌面端组件库(https://github.com/ElemeFE/element)
+ *
+ * 使用:
+ *  1. 项目中需要的组件进行释放(解开注释)
+ *
+ * 注意:
+ *  1. 打包只会包含释放(解开注释)的组件, 减少打包文件大小
+ */
+import Vue from 'vue'
+import {
+  Pagination,
+  Dialog,
+  Autocomplete,
+  Dropdown,
+  DropdownMenu,
+  DropdownItem,
+  Menu,
+  Submenu,
+  MenuItem,
+  MenuItemGroup,
+  Input,
+  Image,
+  InputNumber,
+  Radio,
+  RadioGroup,
+  RadioButton,
+  Checkbox,
+  CheckboxButton,
+  CheckboxGroup,
+  Switch,
+  Select,
+  Option,
+  OptionGroup,
+  Button,
+  ButtonGroup,
+  Table,
+  TableColumn,
+  DatePicker,
+  TimeSelect,
+  TimePicker,
+  Popover,
+  Tooltip,
+  Breadcrumb,
+  BreadcrumbItem,
+  Form,
+  FormItem,
+  Tabs,
+  TabPane,
+  Tag,
+  Tree,
+  Alert,
+  Slider,
+  Icon,
+  Row,
+  Col,
+  Upload,
+  Progress,
+  Badge,
+  Card,
+  Rate,
+  Steps,
+  Step,
+  Carousel,
+  CarouselItem,
+  Collapse,
+  CollapseItem,
+  Cascader,
+  ColorPicker,
+  Transfer,
+  Container,
+  Header,
+  Aside,
+  Main,
+  Footer,
+  Loading,
+  MessageBox,
+  Message,
+  Notification,
+
+} from 'element-ui'
+
+Vue.use(Pagination)
+Vue.use(Dialog)
+Vue.use(Autocomplete)
+Vue.use(Dropdown)
+Vue.use(DropdownMenu)
+Vue.use(DropdownItem)
+Vue.use(Menu)
+Vue.use(Submenu)
+Vue.use(MenuItem)
+Vue.use(MenuItemGroup)
+Vue.use(Input)
+Vue.use(Image)
+Vue.use(InputNumber)
+Vue.use(Radio)
+Vue.use(RadioGroup)
+Vue.use(RadioButton)
+Vue.use(Checkbox)
+Vue.use(CheckboxButton)
+Vue.use(CheckboxGroup)
+Vue.use(Switch)
+Vue.use(Select)
+Vue.use(Option)
+Vue.use(OptionGroup)
+Vue.use(Button)
+Vue.use(ButtonGroup)
+Vue.use(Table)
+Vue.use(TableColumn)
+Vue.use(DatePicker)
+Vue.use(TimeSelect)
+Vue.use(TimePicker)
+Vue.use(Popover)
+Vue.use(Tooltip)
+Vue.use(Breadcrumb)
+Vue.use(BreadcrumbItem)
+Vue.use(Form)
+Vue.use(FormItem)
+Vue.use(Tabs)
+Vue.use(TabPane)
+Vue.use(Tag)
+Vue.use(Tree)
+Vue.use(Alert)
+Vue.use(Slider)
+Vue.use(Icon)
+Vue.use(Row)
+Vue.use(Col)
+Vue.use(Upload)
+Vue.use(Progress)
+Vue.use(Badge)
+Vue.use(Card)
+Vue.use(Rate)
+Vue.use(Steps)
+Vue.use(Step)
+Vue.use(Carousel)
+Vue.use(CarouselItem)
+Vue.use(Collapse)
+Vue.use(CollapseItem)
+Vue.use(Cascader)
+Vue.use(ColorPicker)
+Vue.use(Transfer)
+Vue.use(Container)
+Vue.use(Header)
+Vue.use(Aside)
+Vue.use(Main)
+Vue.use(Footer)
+
+Vue.use(Loading.directive)
+
+Vue.prototype.$loading = Loading.service
+Vue.prototype.$msgbox = MessageBox
+Vue.prototype.$alert = MessageBox.alert
+Vue.prototype.$confirm = MessageBox.confirm
+Vue.prototype.$prompt = MessageBox.prompt
+Vue.prototype.$notify = Notification
+Vue.prototype.$message = Message
+
+Vue.prototype.$ELEMENT = { size: 'medium' }

+ 19 - 2
src/main.js

@@ -31,10 +31,12 @@ Vue.use(Viewer, {
     zIndex: 99999 // 设置图片预览组件的层级,确保能在其他组件之上
   }
 });
-Vue.prototype.Tupiantou ='https://mxys.chuanghai-tech.com/sqx_fast/alioss/upload'//线上
+// Vue.prototype.Tupiantou ='https://mxys.chuanghai-tech.com/sqx_fast/alioss/upload'//线上
+Vue.prototype.Tupiantou ='http://192.168.161.190:8171/sqx_fast/alioss/upload'//线上
 // Vue.prototype.Tupiantou ="https://mxys.chuanghai-tech.com/wm-test/wm-api/sqx_fast/alioss/upload"; //线下
 Vue.prototype.Tupian = function(img) {
-  return "https://mxys.chuanghai-tech.com/wmfile" + img;
+  // return "https://mxys.chuanghai-tech.com/wmfile" + img;
+  return "http://192.168.161.190:8171/wmfile" + img;
 }; //全局图片请求头
 
 Vue.prototype.$axios = axios;
@@ -132,6 +134,21 @@ router.afterEach(() => {
   // window.scrollTo(0, 0);
 });
 /* eslint-disable no-new */
+
+
+// 放在入口文件或路由守卫里
+window.addEventListener('pageshow', function (e) {
+  // 处理往返缓存(bfcache)
+  if (e.persisted) {
+    window.scrollTo(0, 0);
+  }
+});
+// 普通刷新也重置
+window.addEventListener('load', () => {
+  window.scrollTo(0, 0);
+});
+
+
 new Vue({
   el: "#app",
   router,

+ 6 - 0
src/router/index.js

@@ -449,6 +449,12 @@ const mainRoutes = {
       meta: { title: "骑手排行榜", isTab: true }
     },
     {
+      path: "/riderEvaluation",
+      component: _import("riderEvaluation/riderEvaluation"),
+      name: "riderEvaluation",
+      meta: { title: "骑手评价中心", isTab: true }
+    },
+    {
       path: "/materialLink",
       component: _import("allocation/materialLink"),
       name: "materialLink",

+ 3 - 2
src/utils/httpRequest.js

@@ -70,8 +70,9 @@ http.adornUrl = actionName => {
   // return (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) + actionName
   // return 'http://iyfpk3.natappfree.cc/sqx_fast/' + actionName; // 开发
   // return 'https://www.daweilinli.com/sqx_fast/' + actionName
-  // return 'http://192.168.0.131:8171/sqx_fast/' + actionName
-  return 'https://mxys.chuanghai-tech.com/sqx_fast/' + actionName; //  线上
+
+  return 'http://192.168.161.190:8171/sqx_fast/' + actionName
+  // return 'https://mxys.chuanghai-tech.com/sqx_fast/' + actionName; //  线上
   // return "https://mxys.chuanghai-tech.com/wm-test/wm-api/sqx_fast/" + actionName;// 测试
 };
 

+ 14 - 0
src/views/mission/mission.vue

@@ -505,6 +505,11 @@
           label="取餐号"
           width="100"
         ></el-table-column>
+        <!-- <el-table-column
+          fixed="right"
+          prop="shopReceivingTime"
+          label="首次接单时间"
+        ></el-table-column> -->
         <el-table-column fixed="right" prop="status" label="状态" width="100">
           <template slot-scope="scope">
             <span style="color: #4f9dec;" v-if="scope.row.status === 0"
@@ -600,6 +605,15 @@
             <div v-if="scope.row.isRider == 2">否</div>
           </template>
         </el-table-column>
+        <!-- <el-table-column
+          fixed="right"
+          prop="updateTime"
+          label="完成时间"
+        >
+          <template slot-scope="scope">
+              <div v-if="scope.row.status == 4">{{ scope.row.updateTime }}</div>
+          </template>
+        </el-table-column> -->
         <el-table-column fixed="right" prop="status" label="操作" width="250">
           <template slot-scope="scope">
             <el-button

+ 934 - 0
src/views/riderEvaluation/riderEvaluation.vue

@@ -0,0 +1,934 @@
+<template>
+  <div class="riderTop">
+    <div style="display: inline-block;">
+      <!-- <span>地区:</span>
+			<el-select v-model="indentState" style="width:150px;margin-left: 10px;" @change="select(indentState)">
+				<el-option v-for="item in statesnum" :key="item.value" :label="item.label" :value="item.value">
+				</el-option>
+			</el-select>&nbsp;&nbsp; -->
+      <div style="position: relative;display: inline-block;">
+        <span>订单号:</span>
+        <el-input
+          style="width: 160px;"
+          @keydown.enter.native="select"
+          placeholder="请输入订单号"
+          v-model="address"
+        >
+        </el-input
+        >&nbsp;&nbsp;
+      </div>
+      <div style="position: relative;display: inline-block;">
+        <span>骑手姓名:</span>
+        <el-input
+          style="width: 160px;"
+          @keydown.enter.native="select"
+          placeholder="请输入骑手姓名"
+          v-model="address"
+        >
+        </el-input
+        >&nbsp;&nbsp;
+      </div>
+      <div style="position: relative;display: inline-block;">
+        <span>骑手手机号:</span>
+        <el-input
+          style="width: 160px;"
+          @keydown.enter.native="select"
+          placeholder="请输入骑手手机号"
+          v-model="address"
+        >
+        </el-input
+        >&nbsp;&nbsp;
+      </div>
+      <div style="position: relative;display: inline-block;">
+        <span>用户:</span>
+        <el-input
+          style="width: 160px;"
+          @keydown.enter.native="select"
+          placeholder="请输入用户"
+          v-model="address"
+        >
+        </el-input
+        >&nbsp;&nbsp;
+      </div>
+      <div style="position: relative;display: inline-block;">
+        <span>店铺:</span>
+        <el-input
+          style="width: 160px;"
+          @keydown.enter.native="select"
+          placeholder="请输入店铺"
+          v-model="address"
+        >
+        </el-input
+        >&nbsp;&nbsp;
+      </div>
+      <div style="display: inline-block;">
+        <span>评价类型:</span>
+        <el-select v-model="flag" style="width:150px;margin-left: 10px;">
+          <el-option label="满意" value="满意"> </el-option>
+          <el-option label="一般" value="一般"> </el-option>
+          <el-option label="不满意" value="不满意"> </el-option> </el-select
+        >&nbsp;&nbsp;&nbsp;
+      </div>
+      <div style="display: inline-block;">
+        <span>时间:</span>
+        <el-date-picker
+        style="width: 380px;"
+          v-model="info.stockDate"
+          type="datetimerange"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          format="yyyy-MM-dd HH:mm:ss"
+          value-format="yyyy-MM-dd HH:mm:ss"
+        >
+        </el-date-picker>
+        <!-- <el-select
+          v-model="flag"
+          style="width:150px;margin-left: 10px;"
+          @change="orderfenxi"
+        >
+          <el-option
+            v-for="item in flags"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option> </el-select
+        >&nbsp;&nbsp;&nbsp;
+        <el-date-picker
+          style="width: 300px;margin-left: 10px;"
+          v-model="info.stockDate"
+          align="right"
+          type="datetime"
+          format="yyyy-MM-dd"
+          value-format="yyyy-MM-dd"
+          placeholder="选择开始时间"
+          @change="animeOrder"
+        >
+        </el-date-picker> -->
+      </div>
+
+      <el-button
+        style="margin-left:15px;"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="select"
+        >查询
+      </el-button>
+      <el-button
+        style="margin-left:15px;"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="cleans"
+        >重置
+      </el-button>
+      <el-button
+        style="margin-left:15px;"
+        size="mini"
+        type="primary"
+        icon="document"
+        @click="exportList"
+        >导出
+      </el-button>
+    </div>
+    <el-table v-loading="tableDataLoading" :data="homeData.list">
+      <el-table-column fixed prop="rankNum" label="编号" width="80">
+        <!-- <template slot-scope="scope">
+					<div>{{scope.$index+1}}</div>
+				</template> -->
+      </el-table-column>
+      <el-table-column prop="riderNickName" label="用户头像" width="120">
+        <template slot-scope="scope">
+          <img
+            v-if="scope.row.avatar"
+            :src="scope.row.avatar"
+            width="60"
+            height="60"
+          />
+          <span v-else>
+            <img src="../../assets/img/avatar.png" width="60" height="60" />
+          </span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="nickName" label="用户" width="120">
+      </el-table-column>
+      <el-table-column prop="address" label="订单号"> </el-table-column>
+      <el-table-column prop="stationName" label="评价"> </el-table-column>
+      <el-table-column prop="moneyOrder" label="评价内容"> </el-table-column>
+      <el-table-column prop="riderBalance" label="店铺"> </el-table-column>
+      <el-table-column prop="createTime" label="创建时间" width="160">
+      </el-table-column>
+      <el-table-column label="操作" width="150" align="center">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="danger"
+            :disabled="!isAuth('riderEvaluation:delete')"
+            @click="downFile(scope.row)"
+            style="margin: 5px;"
+          >
+            删除
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <div style="text-align: center;margin-top: 10px;">
+      <el-pagination
+        @size-change="handleSizeChange1"
+        @current-change="handleCurrentChange1"
+        :page-sizes="[10, 20, 30, 40]"
+        :page-size="size"
+        :current-page="page"
+        layout="total,sizes, prev, pager, next,jumper"
+        :total="homeData.totalCount"
+      >
+      </el-pagination>
+    </div>
+    <!-- 导出限制 -->
+    <el-dialog
+      custom-class="export"
+      :visible.sync="exportVisible"
+      center
+      :title="exportTitle"
+      :close-on-click-modal="false"
+    >
+      <div class="con" v-show="exportFlag == 1">
+        <img src="../../assets/img/error.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >当前导出条数超过50000条,暂不支持导出</span
+        >
+        <span style="font-size:14px;color: #808080;"
+          >(注:数据中的图片、附件只能以链接的形式导出)</span
+        >
+      </div>
+      <div class="con" v-show="exportFlag == 2">
+        <img class="gundong" src="../../assets/img/loading.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >导出中...</span
+        >
+        <span style="font-size:14px;color: #808080;"
+          >(注:请到个人导出记录查看并下载)</span
+        >
+      </div>
+      <div class="con" v-show="exportFlag == 3">
+        <img src="../../assets/img/success.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >导出成功</span
+        >
+        <span style="font-size:14px;color: #808080;"
+          >(注:请到个人导出记录查看并下载)</span
+        >
+      </div>
+      <div class="con" v-show="exportFlag == 4">
+        <img class="gundong" src="../../assets/img/loading.png" alt="" />
+        <span
+          style="font-size:20px;color: #000;font-weight: 800;margin: 18px 0 5px;"
+          >版本迭代中,导出暂时无法使用</span
+        >
+      </div>
+      <div class="btn">
+        <el-button type="primary" @click="exportAffirm">确定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { quillEditor } from "vue-quill-editor";
+import "quill/dist/quill.core.css";
+import "quill/dist/quill.snow.css";
+import "quill/dist/quill.bubble.css";
+import quillConfig from "../runErrands/quill-config.js";
+import axios from "axios";
+import { jsonp } from "vue-jsonp";
+import {
+  provinceAndCityData,
+  regionData,
+  provinceAndCityDataPlus,
+  regionDataPlus,
+  CodeToText,
+  TextToCode
+} from "element-china-area-data";
+var cityOptions = [];
+var geocoder,
+  map,
+  markersArray = [];
+export default {
+  components: {
+    quillEditor
+  },
+  data() {
+    return {
+      stationData: [], // 骑手站点数据
+      stationName: "",
+      size: 10,
+      page: 1,
+      state: "",
+      limit: 10,
+      classify: 6,
+      classifys: 6,
+      title: "",
+      type: "",
+      nav: "",
+      name: "",
+      keyword: "",
+      describes: "",
+      checkBoxData: [], //多选框选择的值
+      method: "false",
+      formLabelWidth: "200px",
+      activeName: "first",
+      tableDataLoading: true,
+      tableDataLoading4: false,
+      dialogFormVisible3: false,
+      dialogFormVisible1: false,
+      dialogFormVisible2: false,
+      dialogFormVisible5: false,
+      dialogFormVisible6: false,
+      dialogFormVisible7: false,
+      dialogFormVisible8: false,
+      dialogFormVisible9: false,
+      homeData: {},
+      homeData1: [
+        {
+          title: "帮我送",
+          id: 1
+        },
+        {
+          title: "帮我取",
+          id: 2
+        }
+      ],
+      choicenData2: [],
+      choicenData: [],
+
+      url: "",
+      imageUrl: "",
+      imageUrl2: "",
+      id: "",
+      bannerData: [],
+      form1: {
+        // id: '',
+        // url: '',
+        // imageUrl: ''
+      },
+      formcomp: {
+        id: "",
+        state: "",
+        title: "",
+        url: "",
+        imageUrl: ""
+      },
+      userId: "",
+      search: "",
+      myPhone: "",
+      classifyIds: 0,
+      statusId: 1,
+
+      homeData2: [],
+      quillOption: quillConfig,
+      statusIdd: 1,
+      statesnum: [
+        {
+          value: 0,
+          label: "全部"
+        },
+        {
+          value: 1,
+          label: "待支付"
+        },
+        {
+          value: 2,
+          label: "待接单"
+        },
+        {
+          value: 3,
+          label: "已接单"
+        },
+        {
+          value: 4,
+          label: "已完成"
+        },
+        {
+          value: 5,
+          label: "已取消"
+        }
+      ],
+      // x新的
+      indentType: 3,
+      deliveryUserPhone: "", //收货人手机号
+      indentState: 0, //任务状态
+      flag: "",
+      info: {
+        stockDate: this.getNowTime() //日期
+      },
+      flags: [
+        {
+          value: "day",
+          label: "按天查询"
+        },
+        {
+          value: "month",
+          label: "按月查询"
+        },
+        {
+          value: "year",
+          label: "按年查询"
+        }
+      ],
+      address: "",
+
+      // 导出限制
+      exportTitle: "导出错误",
+      exportVisible: false,
+      exportFlag: 1 //1 超出限制  2导出中
+    };
+  },
+  methods: {
+    // 站点下拉框
+    stationList() {
+      this.$http({
+        url: this.$http.adornUrl("admin/riderStation/stationList"),
+        method: "get",
+        params: this.$http.adornParams({})
+      }).then(({ data }) => {
+        console.log(data, "站点下拉框");
+        this.stationData = data.data;
+      });
+    },
+    //处理默认选中当前日期
+    getNowTime() {
+      var now = new Date();
+      var year = now.getFullYear(); //得到年份
+      var month = now.getMonth(); //得到月份
+      var date = now.getDate(); //得到日期
+      var hh = now.getHours() < 10 ? "0" + now.getHours() : now.getHours();
+      var mm =
+        now.getMinutes() < 10 ? "0" + now.getMinutes() : now.getMinutes();
+      var ss =
+        now.getSeconds() < 10 ? "0" + now.getSeconds() : now.getSeconds();
+      month = month + 1;
+      month = month.toString().padStart(2, "0");
+      date = date.toString().padStart(2, "0");
+      var defaultDate = `${year}-${month}-${date} ${hh}:${mm}:${ss}`;
+      return defaultDate;
+      this.$set(this.info, "stockDate", defaultDate);
+    },
+    handleSizeChange1(val) {
+      this.limit = val;
+      this.homeSelect();
+    },
+    handleCurrentChange1(val) {
+      this.page = val;
+      this.homeSelect();
+    },
+    handleClick(tab, event) {
+      this.page = 1;
+      this.indentState = 0;
+      this.phone = "";
+      if (tab._props.label == "同城帮买") {
+        this.indentType = 3;
+        this.homeSelect();
+      }
+      if (tab._props.label == "同城服务") {
+        this.type = 1;
+        this.indentType = 4;
+        this.homeSelect();
+      }
+      if (tab._props.label == "送取任务") {
+        this.indentType = 1;
+        this.homeSelect();
+      }
+    },
+    // 获取社区数据列表
+    homeSelect() {
+      this.tableDataLoading = true;
+      this.$http({
+        url: this.$http.adornUrl(`admin/dataCentre/rankingList`),
+        method: "get",
+        params: this.$http.adornParams({
+          page: this.page,
+          limit: this.limit,
+          address: this.address,
+          date: this.info.stockDate,
+          dateType: this.flag,
+          riderStationId: this.stationName
+        })
+      }).then(({ data }) => {
+        console.log(data, "骑手排行榜");
+
+        this.tableDataLoading = false;
+        let returnData = data.data;
+
+        console.log(data.data.state);
+        this.homeData = data.data;
+      });
+    },
+    // 信息数据
+    InformationSelect() {
+      this.userId = this.$store.state.user.id;
+      this.$http({
+        url: this.$http.adornUrl(`information/selectInformationList`),
+        method: "get",
+        params: this.$http.adornParams({
+          page: this.page,
+          limit: this.limit,
+          search: this.search,
+          classify: this.classifyIds,
+          status: this.statusId,
+          phone: this.myPhone,
+          campus: this.campus1
+        })
+      }).then(({ data }) => {
+        this.tableDataLoading = false;
+        for (var i in data.data.records) {
+          if (data.data.records[i].img) {
+            data.data.records[i].imgs = data.data.records[i].img.split(",");
+          }
+        }
+        let returnData = data.data;
+        this.choicenData = returnData;
+      });
+    },
+
+    // 审核
+    shenhe(row) {
+      this.shenheId = row.id;
+      this.dialogFormVisible8 = true;
+    },
+    // 提交审核
+    refuseto(row) {
+      if (this.radio == 2 && this.contents == "") {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "请输入驳回理由",
+          type: "warning"
+        });
+        return;
+      } else {
+        let ids = this.shenheId;
+        let status = this.radio;
+        let content = this.contents;
+        this.$http({
+          url: this.$http.adornUrl(
+            `information/auditInformation?ids=${ids}&status=${status}&content=${content}`
+          ),
+          method: "post",
+          data: this.$http.adornData({})
+        }).then(({ data }) => {
+          this.dialogFormVisible8 = false;
+          this.$message({
+            message: "审核完成",
+            type: "success",
+            duration: 1500,
+            onClose: () => {
+              this.radio = 1;
+              this.contents = "";
+              this.InformationSelect();
+            }
+          });
+        });
+      }
+    },
+    // 修改信息弹框
+    choiCompile(index, row) {
+      console.log(index, row);
+    },
+    // 删除信息
+    choidelete(row) {
+      let delid = row.id;
+      this.$confirm(`确定删除此条信息?`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      })
+        .then(() => {
+          this.$http({
+            url: this.$http.adornUrl(
+              `information/deleteInformationById?ids=${delid}`
+            ),
+            method: "post",
+            params: this.$http.adornData({})
+          }).then(({ data }) => {
+            this.$message({
+              message: "删除成功",
+              type: "success",
+              duration: 1500,
+              onClose: () => {
+                this.InformationSelect();
+              }
+            });
+          });
+        })
+        .catch(() => {});
+    },
+    // 筛选信息
+    animeDat2(classifyIds) {
+      this.classifyIds = classifyIds;
+      this.homeSelect();
+    },
+    animeDat3(state) {
+      this.InformationSelect();
+    },
+    // 多选
+    handleSelectionChange(val) {
+      var arr = [];
+      for (var i in val) {
+        arr.push(val[i].id);
+      }
+      this.multipleSelection = arr;
+      console.log("val", val, this.multipleSelection);
+    },
+    // 批量删除
+    choideletes() {
+      console.log(this.multipleSelection);
+      let delid = this.multipleSelection.toString();
+      this.$confirm(`确定删除信息?`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      })
+        .then(() => {
+          this.$http({
+            url: this.$http.adornUrl(
+              `information/deleteInformationById?ids=${delid}`
+            ),
+            method: "post",
+            params: this.$http.adornData({})
+          }).then(({ data }) => {
+            this.$message({
+              message: "删除成功",
+              type: "success",
+              duration: 1500,
+              onClose: () => {
+                this.InformationSelect();
+              }
+            });
+          });
+        })
+        .catch(() => {});
+    },
+    // 获取社区数据列表
+    homeSelect1() {
+      this.tableDataLoading = true;
+      this.$http({
+        url: this.$http.adornUrl("helpCampus/selectCampusList"),
+        method: "get",
+        params: this.$http.adornParams({
+          page: this.page,
+          limit: this.limit,
+          content: this.content
+        })
+      }).then(({ data }) => {
+        this.tableDataLoading = false;
+        let returnData = data.data;
+        this.homeData2 = returnData;
+      });
+    },
+    // 分类是否启用
+    change2(val, row) {
+      this.$http({
+        url: this.$http.adornUrl(`activity/updateActivityStatus?id=${row.id}`),
+        method: "post",
+        data: this.$http.adornData({})
+      }).then(({ data }) => {
+        this.$message({
+          message: "操作成功",
+          type: "success",
+          duration: 1500,
+          onClose: () => {
+            this.homeSelect();
+          }
+        });
+      });
+    },
+
+    // 任务上下架
+    change3(val, row) {
+      this.$http({
+        url: this.$http.adornUrl(
+          `information/updateInformationStatus?id=${row.id}`
+        ),
+        method: "post",
+        data: this.$http.adornData({})
+      }).then(({ data }) => {
+        this.$message({
+          message: "操作成功",
+          type: "success",
+          duration: 1500,
+          onClose: () => {
+            this.homeSelect();
+          }
+        });
+      });
+    },
+    // 详情跳转
+    updatesvideo(row) {
+      if (row.riderUserId) {
+        this.$router.push({
+          path: "/userDetail",
+          query: {
+            userId: row.riderUserId
+          }
+        });
+      } else {
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "未绑定用户",
+          type: "warning"
+        });
+        return;
+      }
+    },
+    // 查询
+    select() {
+      this.page = 1;
+      this.limit = 10;
+      this.homeSelect();
+    },
+    // 重置
+    cleans() {
+      this.indentState = 0;
+      this.address = "";
+      this.flag = "";
+      this.info.stockDate = this.getNowTime();
+      this.homeSelect();
+    },
+    // 订单分析选择日期
+    animeOrder() {
+      console.log("info", this.info);
+      this.homeSelect();
+      // this.colonel()
+    },
+    // 订单分析年月日
+    orderfenxi(value) {
+      this.page = 1;
+      let vanumber = value;
+      // if (vanumber === 1) {
+      this.flag = value;
+      this.homeSelect();
+      // this.colonel()
+      // }
+      // if (vanumber === 2) {
+      // 	this.flag = 2
+      // 	this.taskData()
+      // 	this.colonel()
+      // }
+      // if (vanumber === 3) {
+      // 	this.flag = 3
+      // 	this.taskData()
+      // 	this.colonel()
+      // }
+    },
+
+    exportList() {
+      console.log(this.homeData.totalCount, "导出条数");
+      this.exportTitle = "导出";
+      // this.exportFlag = 4;
+      this.exportVisible = true;
+      if (this.homeData.totalCount >= 50000) {
+        this.exportTitle = "导出错误";
+        this.exportFlag = 1;
+      } else {
+        this.exportTitle = "导出";
+        this.exportFlag = 2;
+        this.exportVisible = true;
+        var userId = this.$cookie.get("userId");
+        this.$http({
+          url: this.$http.adornUrl("admin/export/excelRankList"),
+          method: "get",
+          // responseType: "blob",
+          params: this.$http.adornParams({
+            // 'page': page,
+            // 'size': this.size,
+            userId: userId,
+            address: this.address,
+            date: this.info.stockDate,
+            dateType: this.flag,
+            riderStationId: this.stationName
+          })
+        }).then(({ data }) => {
+          console.log(data, "导出");
+          if (data.code == 0) {
+            this.exportTitle = "导出成功";
+            this.exportFlag = 3;
+          }
+        });
+      }
+    },
+    exportAffirm() {
+      this.exportVisible = false;
+    }
+  },
+  mounted() {
+    this.homeSelect();
+    this.stationList();
+  }
+};
+</script>
+
+<style scoped>
+.customWidth {
+  width: 80% !important;
+}
+
+.adver_main.box {
+  display: block;
+  max-width: 100%;
+  text-align: center;
+  border: 1px dotted rgba(67, 79, 103, 0.4);
+}
+
+.cards {
+  padding: 0 8px;
+  margin-bottom: 15px;
+}
+
+.adver_main.box a {
+  display: flex;
+  justify-content: center;
+  height: 150px;
+  line-height: 150px;
+  text-decoration: none;
+}
+
+.bannerManin {
+  border: 1px solid #e8e8e8;
+  font-size: 14px;
+  padding: 0 24px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 113px;
+  color: rgba(0, 0, 0, 0.65);
+}
+
+.bannerManin span {
+  display: inline-block;
+  margin-left: 5px;
+}
+
+.bannerManin img {
+  width: 48px;
+  height: 48px;
+  border-radius: 50%;
+}
+
+.bannerbtn {
+  display: flex;
+  border-top: none !important;
+  border: 1px solid #e8e8e8;
+  padding: 11px;
+  font-size: 14px;
+  color: #3e8ef7;
+}
+
+.bannerbtn a {
+  flex: 1;
+  text-align: center;
+  color: #3e8ef7 !important;
+  text-decoration: none;
+}
+
+.imgs {
+  position: relative;
+  border-radius: 6px;
+  width: 148px;
+  height: 148px;
+  margin-right: 10px;
+  display: inline-block;
+}
+
+.dels {
+  position: absolute;
+  top: 0;
+  left: 0;
+  display: none;
+}
+
+.dels .el-icon-delete {
+  line-height: 148px;
+  padding-left: 58px;
+  font-size: 25px;
+  color: #fff;
+}
+
+.imgs:hover .dels {
+  width: 100%;
+  height: 100%;
+  background: #000;
+  display: block;
+  opacity: 0.5;
+}
+
+.bqList {
+  padding: 4px 14px;
+  margin: 4px;
+  border: 1px solid #efefef;
+  font-size: 12px;
+  color: #999;
+  border-radius: 4px;
+  margin-right: 15px;
+}
+
+.delss {
+  display: none;
+  position: relative;
+}
+
+.delss .el-icon-delete {
+  position: absolute;
+  top: 0;
+}
+
+.bqList:hover .delss {
+  display: initial;
+  opacity: 0.5;
+}
+
+.tj {
+  padding: 6px !important;
+  margin: 4px;
+  font-size: 12px;
+  border: 1px solid #ccc;
+  border-radius: 4px;
+}
+
+/* 导出限制 */
+.riderTop >>> .export {
+  width: 500px;
+}
+.export .con {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  margin-bottom: 20px;
+}
+.export .con .gundong {
+  animation: gundong 3s linear infinite;
+}
+@keyframes gundong {
+  /* from表示动画的开始位置,也可以使用0%来表示。 */
+  from {
+    transform: rotate(0deg);
+  }
+  /* to表示动画的结束位置,也可以使用100%来表示。 */
+  to {
+    transform: rotate(360deg);
+  }
+}
+.export img {
+  width: 70px;
+}
+.export .btn {
+  display: flex;
+  flex-direction: row-reverse;
+}
+</style>

File diff suppressed because it is too large
+ 624 - 624
src/views/selfShop/shopAdmin.vue


+ 11 - 5
src/views/selfShop/shopAmend.vue

@@ -111,7 +111,7 @@
             >
               <el-option
                 v-for="(item, index) in statusmain2"
-                :key="item.index"
+                :key="index"
                 :label="item.label"
                 :value="item.value"
               >
@@ -195,7 +195,7 @@
           <span style="display: inline-block;text-align: right;"
             >商品轮播图:</span
           >
-          <div v-for="(item, index) of imgs">
+          <div v-for="(item, index) of imgs" :key="index">
             <div style="position: relative;margin: 5px;">
               <img
                 :src="item"
@@ -240,7 +240,7 @@
             >
               <el-option
                 v-for="(item, index) in specifdata"
-                :key="item.index"
+                :key="index"
                 :label="item.ruleName"
                 :value="item.id"
               >
@@ -331,6 +331,7 @@
                 <th
                   style="width:120px;text-align: left;"
                   v-for="item in headerData"
+                  :key="item"
                   v-if="item != '图片'"
                 >
                   {{ item }}
@@ -497,6 +498,7 @@
                 <th
                   style="width:150px;text-align: left;"
                   v-for="item in headerData2"
+                  :key="item"
                   v-if="item != '图片'"
                 >
                   {{ item }}
@@ -560,7 +562,7 @@
         <!-- <quill-editor ref="myTextEditor" v-model="goodsSynopsis" :options="quillOption"
         	style="padding-bottom: 50px;height: 300px;width: 72%;display: inline-table;margin-bottom: 60px;">
         </quill-editor> -->
-        <div v-for="(item, index) of goodsParticularsPicture">
+        <div v-for="(item, index) of goodsParticularsPicture" :key="index">
           <div style="position: relative;margin: 5px;">
             <img
               :src="item"
@@ -830,6 +832,8 @@ export default {
           // 'coverImg': this.goodsCover,
         })
       }).then(({ data }) => {
+        console.log(data," 获取单规格的sku");
+
         let returnData = data.data;
         this.valueData2 = returnData.value;
         this.headerData2 = returnData.header;
@@ -907,7 +911,7 @@ export default {
           goodsId: goodsId
         })
       }).then(({ data }) => {
-        console.log(data);
+        console.log(data,"init接口");
 
         let returnData = data.data;
         if (returnData.goodsPicture) {
@@ -1278,6 +1282,8 @@ export default {
           id: val
         })
       }).then(({ data }) => {
+        console.log(data,"切换商品规格");
+
         let returnData = data.data;
         this.ruleValue = returnData.ruleValue;
         this.attrName = returnData.ruleName;

+ 432 - 7
src/views/selfShop/shopPublish.vue

@@ -29,6 +29,9 @@
               autosize
             >
             </el-input>
+            <el-button type="primary" icon="document" @click="searchTupian"
+              >查询
+            </el-button>
           </el-col>
           <el-col :span="8">
             <span>商品分类:</span>
@@ -242,8 +245,8 @@
         <div
           style="display: flex;align-items: center;margin: 2% 0;flex-flow: wrap;"
         >
-          <span style="display: inline-block;text-align: right;"
-            >商品轮播图:</span
+          <span style="display: inline-block;text-align: left;"
+            >商品轮播图:<br>(轮播图最多上传4张)&nbsp;&nbsp;&nbsp;</span
           >
 
           <div v-for="(item, index) of potost">
@@ -666,7 +669,7 @@
       </div> -->
       </div>
       <div class="tinymce-content" style="display: flex;">
-        <div style="width:90px;">商品详情(选填):</div>
+        <div style="width:180px;">商品详情(选填):<br>(商品详情图最多上传4张)&nbsp;&nbsp;&nbsp;</div>
         <!-- <textarea id="tinymceId" :value="goodsDescribe" class="tinymce-textarea" /> -->
         <!-- <quill-editor ref="myTextEditor" v-model="goodsSynopsis" :options="quillOption"
           style="padding-bottom: 50px;height: 300px;width: 72%;display: inline-table;margin-bottom: 60px;">
@@ -725,6 +728,91 @@
         </el-button>
       </div>
     </div>
+
+    <el-dialog
+      custom-class="export"
+      :visible.sync="tupianVisible"
+      center
+      title="选择图片"
+      :close-on-click-modal="false"
+      :before-close="searchCancle"
+    >
+      <div>
+        <div class="title">
+          <span>封面图:</span><span>共有条结果供选择</span>
+        </div>
+        <div class="tupian" id="cover" @scroll="searchTupianScroll1">
+          <div
+            v-for="item in cover"
+            :key="item.id"
+            class="img-item"
+            :class="isChecked1(item) ? 'checked' : ''"
+            @click="toggle(item, 1)"
+          >
+            <el-image
+              class="el-image"
+              :src="item.goodsCover"
+              name="el-image"
+              fit="cover"
+            ></el-image>
+            <i v-if="isChecked1(item)" class="checked-icon el-icon-check"></i>
+          </div>
+        </div>
+      </div>
+      <div>
+        <div class="title">
+          <span>轮播图:</span><span>共有条结果供选择</span>
+        </div>
+        <div class="tupian" id="carousel" @scroll="searchTupianScroll2">
+          <div
+            v-for="item in carousel"
+            :key="item.id"
+            class="img-item"
+            :class="isChecked2(item) ? 'checked' : ''"
+            @click="toggle(item, 2)"
+          >
+            <el-image
+              class="el-image"
+              :src="item.goodsCover"
+              name="el-image"
+              fit="cover"
+            ></el-image>
+            <i v-if="isChecked2(item)" class="checked-icon el-icon-check"></i>
+          </div>
+        </div>
+      </div>
+      <div>
+        <div class="title">
+          <span>详情图:</span><span>共有条结果供选择</span>
+        </div>
+        <div class="tupian" id="detail" @scroll="searchTupianScroll3">
+          <div
+            v-for="item in detail"
+            :key="item.id"
+            class="img-item"
+            :class="isChecked3(item) ? 'checked' : ''"
+            @click="toggle(item, 3)"
+          >
+            <el-image
+              class="el-image"
+              :src="item.goodsCover"
+              name="el-image"
+              fit="cover"
+            ></el-image>
+            <i v-if="isChecked3(item)" class="checked-icon el-icon-check"></i>
+          </div>
+        </div>
+      </div>
+      <div class="btn">
+        <el-button type="primary" @click="searchCancle">取消</el-button>
+        <el-button
+          type="primary"
+          style="margin-right: 20px;"
+          @click="searchAffirm"
+          >确定</el-button
+        >
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -856,7 +944,35 @@ export default {
       goodsParticularsPicture: [], //商品详情图
       percentage1: 0, //进度条
       dialogImageUrl: [],
-      dialogVisible: false
+      dialogVisible: false,
+
+      tupianVisible: false,
+      // 封面图
+      cover: [],
+      cover1: [],
+      coverPage: 1,
+      coverLimit: 18,
+      coverTotalCount: 10,
+      coverTotalPage: 1,
+      coverBusy: false,
+
+      // 轮播图
+      carousel: [],
+      carousel1: [],
+      carouselPage: 1,
+      carouselLimit: 18,
+      carouselTotalCount: 10,
+      carouselTotalPage: 1,
+      carouselBusy: false,
+
+      // 详情图
+      detail: [],
+      detail1: [],
+      detailPage: 1,
+      detailLimit: 18,
+      detailTotalCount: 10,
+      detailTotalPage: 1,
+      detailBusy: false
     };
   },
 
@@ -946,12 +1062,18 @@ export default {
       console.log("this.potost", this.potost);
     },
     handleAvatarSuccess1(file, fileList) {
+      console.log(file,"封面图上传成功");
       this.goodsCover = file.data;
     },
     //上传成功
     handleUploadSuccess(file, fileList) {
       // this.goodsPicture += file.data + ','
-      this.potost.push(file.data);
+      console.log(file,"轮播图上传成功");
+      if(this.potost.length>=4){
+        this.potost.shift()
+      }
+      this.potost.unshift(file.data);
+
     },
     // 返回上一级
     prev() {
@@ -1308,7 +1430,7 @@ export default {
           id: val
         })
       }).then(({ data }) => {
-        console.log(data,'查询商品规格');
+        console.log(data, "查询商品规格");
 
         let returnData = data.data;
         this.ruleValue = returnData.ruleValue;
@@ -1465,7 +1587,10 @@ export default {
     },
     //上传成功
     handleUploadSuccessXq(file, fileList) {
-      this.goodsParticularsPicture.push(file.data);
+      if(this.goodsParticularsPicture.length>=4){
+        this.goodsParticularsPicture.shift()
+      }
+      this.goodsParticularsPicture.unshift(file.data);
     },
     onprogress1(event, file, fileList) {
       console.log("详情图上传进度", parseInt(event.percent));
@@ -1474,6 +1599,251 @@ export default {
     dataSelectO() {
       this.dataSelect();
       this.specifSelect();
+    },
+    // 封面图
+    searchTupianList1(scroll) {
+      console.log(this.coverBusy);
+
+      if (this.coverBusy) return; // 二次保护
+      this.coverBusy = true;
+
+      try {
+        this.$http({
+          url: this.$http.adornUrl(`admin/goods/goodsCoverList`),
+          method: "get",
+          params: this.$http.adornParams({
+            page: this.coverPage,
+            limit: this.coverLimit,
+            name: this.goodsName
+          })
+        }).then(({ data }) => {
+          console.log(data, "封面图片列表");
+          if (scroll == "pageAdd") {
+            this.cover = [...this.cover, ...data.data.list];
+          } else {
+            this.cover = data.data.list;
+          }
+          console.log(this.cover.length, "封面图数量");
+
+          this.coverTotalCount = data.data.totalCount;
+          this.coverTotalPage = data.data.totalPage;
+        });
+      } finally {
+        this.coverBusy = false;
+      }
+    },
+    searchTupianScroll1(e) {
+      const el = e.target;
+      let nearBottom = el.scrollTop + el.clientHeight >= el.scrollHeight; // 再多留一点余量
+      if (
+        nearBottom &&
+        !this.coverBusy &&
+        this.coverPage < this.coverTotalPage
+      ) {
+        this.coverPage++;
+        this.searchTupianList1("pageAdd");
+        console.log("滚动到底", this.coverPage, this.coverTotalPage);
+      }
+    },
+    // 轮播图
+    searchTupianList2(scroll) {
+      if (this.carouselBusy) return; // 二次保护
+      this.carouselBusy = true;
+      try {
+        this.$http({
+          url: this.$http.adornUrl(`admin/goods/goodsPictureList`),
+          method: "get",
+          params: this.$http.adornParams({
+            page: this.carouselPage,
+            limit: this.carouselLimit,
+            name: this.goodsName
+          })
+        }).then(({ data }) => {
+          console.log(data, "轮播图片列表");
+          if (scroll == "pageAdd") {
+            this.carousel = [...this.carousel, ...data.data.list];
+          } else {
+            this.carousel = data.data.list;
+          }
+          this.carouselTotalCount = data.data.totalCount;
+          this.carouselTotalPage = data.data.totalPage;
+        });
+      } finally {
+        this.carouselBusy = false;
+      }
+    },
+    searchTupianScroll2(e) {
+      const el = e.target;
+      let nearBottom = el.scrollTop + el.clientHeight >= el.scrollHeight; // 再多留一点余量
+      if (
+        nearBottom &&
+        !this.carouselBusy &&
+        this.carouselPage < this.carouselTotalPage
+      ) {
+        this.carouselPage++;
+        this.searchTupianList2("pageAdd");
+        console.log("滚动到底", this.carouselPage, this.carouselTotalPage);
+      }
+    },
+    // 详情图
+    searchTupianList3(scroll) {
+      if (this.detailBusy) return; // 二次保护
+      this.detailBusy = true;
+      try {
+        this.$http({
+          url: this.$http.adornUrl(`admin/goods/goodsParticularsPictureList`),
+          method: "get",
+          params: this.$http.adornParams({
+            page: this.detailPage,
+            limit: this.detailLimit,
+            name: this.goodsName
+          })
+        }).then(({ data }) => {
+          console.log(data, "详情图片列表");
+          if (scroll == "pageAdd") {
+            this.detail = [...this.detail, ...data.data.list];
+          } else {
+            this.detail = data.data.list;
+          }
+          this.detailTotalCount = data.data.totalCount;
+          this.detailTotalPage = data.data.totalPage;
+        });
+      } finally {
+        this.detailBusy = false;
+      }
+    },
+    searchTupianScroll3(e) {
+      const el = e.target;
+      let nearBottom = el.scrollTop + el.clientHeight >= el.scrollHeight; // 再多留一点余量
+      if (
+        nearBottom &&
+        !this.detailBusy &&
+        this.detailPage < this.detailTotalPage
+      ) {
+        this.detailPage++;
+        this.searchTupianList3("pageAdd");
+        console.log("滚动到底", this.detailPage, this.detailTotalPage);
+      }
+    },
+    // 通过商品名称获取数据弹出
+    searchTupian() {
+      if(!this.goodsName){
+        this.$notify({
+          title: "提示",
+          duration: 1800,
+          message: "请输入商品标题进行搜索",
+          type: "warning"
+        });
+        return
+      }
+      this.cover=[]
+      this.cover1=[]
+      this.carousel=[]
+      this.carousel1=[]
+      this.detail=[]
+      this.detail1=[]
+      this.coverPage=1
+      this.carouselPage=1
+      this.detailPage=1
+      this.tupianVisible = true;
+      this.searchTupianList1();
+      this.searchTupianList2();
+      this.searchTupianList3();
+    },
+    // 确定图片
+    searchAffirm() {
+      this.cover1.forEach(i=>{
+        this.goodsCover=i.goodsCover
+      })
+      this.potost=[]
+      this.carousel1.forEach(i=>{
+        this.potost.push(i.goodsCover)
+      })
+      this.goodsParticularsPicture=[]
+      this.detail1.forEach(i=>{
+        this.goodsParticularsPicture.push(i.goodsCover)
+      })
+      this.tupianVisible = false;
+    },
+    // 取消弹出
+    searchCancle() {
+      this.tupianVisible = false;
+      this.cover=[]
+      this.cover1=[]
+      this.carousel=[]
+      this.carousel1=[]
+      this.detail=[]
+      this.detail1=[]
+      this.coverPage=1
+      this.carouselPage=1
+      this.detailPage=1
+    },
+    // 判断是否勾选封面图
+    isChecked1(item) {
+      return this.cover1.some(a => a.id == item.id);
+    },
+    // 判断是否勾选轮播图
+    isChecked2(item) {
+      return this.carousel1.some(a => a.id == item.id);
+    },
+    // 判断是否勾选详情图
+    isChecked3(item) {
+      return this.detail1.some(a => a.id == item.id);
+    },
+    // 勾选判断
+    toggle(item, flag) {
+      if (flag == 1) {
+        // 1) 已经在某个数组中,就把这个数组移除
+        if (this.cover1.some(a => a.id == item.id)) {
+          this.cover1 = this.cover1.filter(v => v.id != item.id);
+          console.log(this.cover1);
+          return;
+        }
+        this.cover1.shift();
+        this.cover1.push({
+          id: item.id,
+          goodsCover: item.goodsCover
+        });
+      }
+      if (flag == 2) {
+        if (this.carousel1.some(a => a.id == item.id)) {
+          this.carousel1 = this.carousel1.filter(v => v.id != item.id);
+          return;
+        }
+        if (this.carousel1.length >= 4) {
+          this.carousel1.shift();
+        }
+        this.carousel1.push({
+          id: item.id,
+          goodsCover: item.goodsCover
+        });
+      }
+      if (flag == 3) {
+        if (this.detail1.some(a => a.id == item.id)) {
+          this.detail1 = this.detail1.filter(v => v.id != item.id);
+          return;
+        }
+        if (this.detail1.length >= 4) {
+          this.detail1.shift();
+        }
+        this.detail1.push({
+          id: item.id,
+          goodsCover: item.goodsCover
+        });
+      }
+
+      // // 2) 尚未选中,需要放进“最少”的数组里
+      // if (this.cover.length >= 1) {
+      //   this.cover.shift();
+      //   this.cover.push(id);
+      // }
+      // else if (this.carousel.length < 7) this.carousel.push(id);
+      // else if (this.detail.length < 4) this.detail.push(id);
+      // else {
+      //   // 全部满了,放轮播,并踢掉第一张
+      //   this.carousel.shift();
+      //   this.carousel.push(id);
+      // }
     }
   },
   mounted() {
@@ -1651,4 +2021,59 @@ export default {
 .divhove:hover {
   opacity: 0.8;
 }
+
+/* 导出限制 */
+.main-cont >>> .export {
+  width: 800px;
+}
+.export .tupian {
+  display: flex;
+  flex-wrap: wrap;
+  border: 1px solid #ccc;
+  overflow: auto;
+  height: 230px;
+}
+.export .btn {
+  margin-top: 15px;
+  display: flex;
+  flex-direction: row-reverse;
+}
+.img-pool {
+  display: flex;
+  flex-wrap: wrap;
+}
+.img-item {
+  width: 104px;
+  height: 104px;
+  position: relative;
+  margin: 4px;
+  cursor: pointer;
+  border: 2px solid transparent;
+}
+.img-item .el-image {
+  width: 100px;
+  height: 100px;
+  border: 1px solid #ccc;
+}
+.img-item .el-image >>> img {
+  width: 100px;
+  height: 100px;
+}
+.img-item.checked {
+  border-color: #409eff;
+}
+.checked-icon {
+  position: absolute;
+  bottom: 2px;
+  right: 2px;
+  color: #409eff;
+  background: #fff;
+  border-radius: 50%;
+  padding: 2px;
+}
+.tips {
+  font-size: 12px;
+  color: #666;
+  margin-top: 10px;
+}
 </style>

+ 18 - 6
src/views/shopManagement/duanxinlist.vue

@@ -224,14 +224,14 @@ export default {
     };
   },
   watch: {
-  // 监听路由参数的变化
-    '$route.query.indentId': {
+    // 监听路由参数的变化
+    "$route.query.indentId": {
       immediate: true, // 如果需要在组件创建时立即触发,设置为true
       handler(newVal, oldVal) {
         // 当路由参数变化时,这里会被调用
         // 你可以在这里根据新的参数执行你的逻辑
-        console.log(newVal,oldVal);
-        this.orderId = newVal
+        console.log(newVal, oldVal);
+        this.orderId = newVal;
         this.dataSelect();
       }
     }
@@ -313,6 +313,18 @@ export default {
       //   if (this.startTime == '') {
       // 	  this.startTime = this.info.stockDate
       //   }
+      console.log({
+        page: this.page,
+        limit: this.limit,
+        orderId: this.orderId, //订单id
+        successFlag: this.successFlag, //是否发送成功
+        sendTo: this.sendTo, //接受人
+        fromTo: this.fromTo, //发送骑手
+        startTime: this.startTime, //开始时间
+        endTime: this.endTime, //结束时间
+        sourceType: 2 //1骑手、2商家,默认为1
+      });
+
       this.tableDataLoading = true;
       this.$http({
         url: this.$http.adornUrl("admin/tb-indent-sms/log"),
@@ -338,14 +350,14 @@ export default {
           }
           let returnData = data.data;
           this.duanxinData = returnData;
-          console.log(data.data,'商家短信列表');
+          console.log(data.data, "商家短信列表");
         }
       });
     }
   },
   mounted() {
     this.dataSelect();
-  },
+  }
 };
 </script>
 

+ 1 - 1
src/views/shopsList/shopAdmin.vue

@@ -13,7 +13,7 @@
         <div style="position: relative;display: inline-block;margin: 10px 0px;">
           <span>商铺名称:</span>
           <el-input style="width: 200px;" @keydown.enter.native="shopSelect" placeholder="请输入商铺名称" v-model="shopName">
-          </el-input>&nbsp;&nbsp
+          </el-input>&nbsp;&nbsp;
         </div>
         <div style="margin:10px 0;display: inline-block;">
           <span>商品名称:</span>