Browse Source

Merge remote-tracking branch 'origin/master' into 转接增加清空标签配置

ct 1 day ago
parent
commit
e5dbeb35af

+ 0 - 0
dev.prod-czt → .env.prod-czt


+ 1 - 7
src/api/hisStore/storeOrder.js

@@ -85,13 +85,7 @@ export function updateStoreOrder(data) {
     data: data
   })
 }
-export function updateAddressErpFsStoreOrder(data) {
-  return request({
-    url: '/store/store/storeOrder/updateAddressErpFsStoreOrder',
-    method: 'put',
-    data: data
-  })
-}
+
 // 删除订单
 export function delStoreOrder(id) {
   return request({

+ 1 - 7
src/api/store/storeOrder.js

@@ -138,13 +138,7 @@ export function updateStoreOrder(data) {
     data: data
   })
 }
-export function updateAddressErpFsStoreOrder(data) {
-  return request({
-    url: '/store/storeOrder/updateAddressErpFsStoreOrder',
-    method: 'put',
-    data: data
-  })
-}
+
 export function bindCustomer(data) {
   return request({
     url: '/store/storeOrder/bindCustomer',

+ 17 - 7
src/views/course/courseWatchLog/deptWatchLog.vue

@@ -175,16 +175,16 @@
           :key="createCalendarKey"
         />
       </el-form-item> -->
-        <el-form-item label="创建时间" prop="createTime">
+      <el-form-item label="创建时间" prop="createTime">
         <el-date-picker
           v-model="createTimeText"
-          type="daterange"
+          type="datetimerange"
           range-separator="至"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          value-format="yyyy-MM-dd"
-          style="width: 240px"
-           @change="createChange"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          @change="createChange"
+          :default-time="['00:00:00', '23:59:59']"
         />
       </el-form-item>
       <!-- 最新更新时间 -->
@@ -334,6 +334,16 @@
       <el-table-column label="完课时间" align="center" prop="finishTime" />
       <el-table-column label="营期时间" align="center" prop="campPeriodTime" />
       <el-table-column label="进线时间" align="center" prop="qecCreateTime" />
+      <el-table-column label="是否领奖" align="center" prop="rewardType" >
+        <template slot-scope="scope">
+          <el-tag
+            :type="scope.row.rewardType ? 'success' : 'info'"
+            effect="plain"
+          >
+            {{ scope.row.rewardType ? '已领取' : '未领取' }}
+          </el-tag>
+        </template>
+      </el-table-column>
       <el-table-column
         fixed="right"
         label="操作"
@@ -878,8 +888,8 @@ export default {
     createChange(createTime) {
       if (createTime && createTime.length >= 2) {
         // this.createTimeText = this.formatDateRange(createTime);
-        this.queryParams.sTime = createTime[0] || null;
-        this.queryParams.eTime = createTime[1] || null;
+        this.queryParams.sTime = this.formatDate(createTime[0]) || null;
+        this.queryParams.eTime = this.formatDate(createTime[1]) || null;
       } else {
         this.createTimeText = '';
         this.queryParams.sTime = null;

+ 98 - 23
src/views/course/courseWatchLog/index.vue

@@ -72,7 +72,10 @@
         <el-select v-model="queryParams.companyUserId" clearable filterable remote
                    placeholder="请输入关键词" :remote-method="loadCompanyUserOptions"
                    v-select-load-more="loadMoreCompanyUserOptions"
-                   :loading="companyUserOptionsLoading">
+                   @change="handleCompanyUserChange"
+                   :loading="companyUserOptionsLoading"
+                   @visible-change="handleCompanyUserDropdownVisible"
+        >
           <el-option
             v-for="item in companyUserOptions"
             :key="item.dictValue"
@@ -85,6 +88,8 @@
         <el-select v-model="queryParams.companyUserId" clearable filterable remote
                    placeholder="请输入关键词"
                    v-select-load-more="loadMoreCompanyUserOptions"
+                   @change="handleCompanyUserChange"
+                   @visible-change="handleQwUserDropdownVisible"
                    :loading="companyUserOptionsLoading">
           <el-option
             v-for="item in companyUserOptionsByAll"
@@ -94,10 +99,11 @@
           </el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="所属企微" prop="qwUserName">
-        <el-select v-model="queryParams.qwUserName" clearable filterable remote
-                   placeholder="请输入关键词" :remote-method="loadQwUserOptions"
-                   v-select-load-more="loadMoreQwUserOptions"
+      <el-form-item label="所属企微" prop="qwUserName" v-if="queryParams.companyUserId">
+        <el-select v-model="queryParams.qwUserName"
+                   clearable filterable
+                   placeholder="请输入关键词"
+                   @visible-change="handleQwUserDropdownVisible"
                    :loading="qwUserOptionsLoading">
           <el-option
             v-for="item in qwUserOptions"
@@ -176,13 +182,13 @@
       <el-form-item label="创建时间" prop="createTime">
         <el-date-picker
           v-model="createTimeText"
-          type="daterange"
+          type="datetimerange"
           range-separator="至"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          value-format="yyyy-MM-dd"
-          style="width: 240px"
+          value-format="yyyy-MM-dd HH:mm:ss"
            @change="createChange"
+          :default-time="['00:00:00', '23:59:59']"
         />
       </el-form-item>
       <!-- 最新更新时间 -->
@@ -366,6 +372,16 @@
       <el-table-column label="完课时间" align="center" prop="finishTime" />
       <el-table-column label="营期时间" align="center" prop="campPeriodTime" />
       <el-table-column label="进线时间" align="center" prop="qecCreateTime" />
+      <el-table-column label="是否领奖" align="center" prop="rewardType" >
+        <template slot-scope="scope">
+          <el-tag
+            :type="scope.row.rewardType ? 'success' : 'info'"
+            effect="plain"
+          >
+            {{ scope.row.rewardType ? '已领取' : '未领取' }}
+          </el-tag>
+        </template>
+      </el-table-column>
       <el-table-column
         fixed="right"
         label="操作"
@@ -603,6 +619,10 @@ export default {
   name: "CourseWatchLog",
   data() {
     return {
+      companyUserFirstLoad: true, // 首次加载标志
+      qwUserFirstLoad: true,     // 首次加载标志
+      companyUserDropdownVisible: false, // 下拉框显示状态
+      qwUserDropdownVisible: false,     // 下拉框显示状态
       companyName:process.env.VUE_APP_COURSE_COMPANY_NAME,
       // 日历 key 控制刷新
       scheduleCalendarKey: 0,
@@ -774,7 +794,7 @@ export default {
         name: undefined,
         hasNextPage: false,
         pageNum: 1,
-        pageSize: 200
+        pageSize: 10
       },
       companyUserOptions: [],
       companyUserOptionsByAll: [],
@@ -796,7 +816,7 @@ export default {
       this.courseLists = response.list;
     });
     this.getList();
-    this.getDicts("sys_course_watch_log_type").then(response => {
+    this.getDicts("sys_course_watch_log_type_new").then(response => {
       this.logTypeOptions = response.data;
     });
     this.getDicts("sys_course_project").then(response => {
@@ -805,15 +825,61 @@ export default {
     this.getCompanyUserListLikeName(true);
   },
   methods: {
+    /**
+     * 处理所属销售下拉框显示状态变化
+     */
+    handleCompanyUserDropdownVisible(visible) {
+      this.companyUserDropdownVisible = visible;
+      if (visible && this.companyUserFirstLoad) {
+        // 首次展开下拉框时加载数据
+        this.companyUserFirstLoad = false;
+        this.loadCompanyUserOptions('');
+      } else if (visible && this.companyUserOptions.length === 0) {
+        // 下拉框显示但无数据时重新加载
+        this.loadCompanyUserOptions('');
+      }
+    },
+    /**
+     * 处理所属企微下拉框显示状态变化
+     */
+    handleQwUserDropdownVisible(visible) {
+      this.qwUserDropdownVisible = visible;
+      if (visible && this.qwUserFirstLoad) {
+        // 首次展开下拉框时加载数据
+        this.qwUserFirstLoad = false;
+        this.loadQwUserOptions('');
+      } else if (visible && this.qwUserOptions.length === 0) {
+        // 下拉框显示但无数据时重新加载
+        this.loadQwUserOptions('');
+      }
+    },
+
+    /**
+     * 当销售被选择
+     * 级联更新企微列表
+     */
+    handleCompanyUserChange(companyUserId){
+      if (companyUserId) {
+        // 清空当前企微选择
+        this.queryParams.qwUserName = "";
+        this.qwUserOptions = [];
+        this.qwUserOptionsParams.pageNum = 1;
+
+        // 重新加载企微列表,传入销售ID作为过滤条件
+        this.getQwList();
+      } else {
+        // 清空销售时也清空企微
+        this.queryParams.qwUserName = "";
+        this.qwUserOptions = [];
+        this.qwUserOptionsParams.pageNum = 1;
+      }
+    },
     /**
      * 根据名称模糊查询用户列表
      * @param query 参数
      */
     loadCompanyUserOptions(query) {
       this.companyUserOptions = [];
-      if (query === '') {
-        return;
-      }
 
       this.companyUserOptionsParams.pageNum = 1
       this.companyUserOptionsParams.name = query
@@ -826,9 +892,6 @@ export default {
      */
     loadQwUserOptions(query) {
       this.qwUserOptions = [];
-      if (query === '') {
-        return;
-      }
       this.qwUserOptionsParams.pageNum = 1
       // 将搜索关键词设置到queryParams中
       this.queryParams.qwUserName = query
@@ -869,13 +932,25 @@ export default {
 
     },
     getQwList() {
+      const params = {
+        name: this.qwUserOptionsParams.name,
+        pageNum: this.qwUserOptionsParams.pageNum,
+        pageSize: this.qwUserOptionsParams.pageSize,
+        // 添加销售ID作为过滤条件
+        companyUserId: this.queryParams.companyUserId || null,
+        disableCompanyId: 1
+      };
       console.log("企微参数", this.queryParams);
-      getQwList(this.queryParams).then(response => {
-        this.qwUserOptions = [...this.qwUserOptions, ...response.rows]
-        // 根据实际返回的数据结构设置hasNextPage
-        this.qwUserOptionsParams.hasNextPage = response.rows && response.rows.length >= this.qwUserOptionsParams.pageSize
+      getQwList(params).then(response => {
+        if (this.qwUserOptionsParams.pageNum === 1) {
+          this.qwUserOptions = response.rows || [];
+        } else {
+          this.qwUserOptions = [...this.qwUserOptions, ...(response.rows || [])];
+        }
+        this.qwUserOptionsParams.hasNextPage = response.rows && response.rows.length >= this.qwUserOptionsParams.pageSize;
+      }).finally(()=>{
         this.qwUserOptionsLoading = false;
-      });
+      })
     },
 
     /**
@@ -944,8 +1019,8 @@ export default {
     createChange(createTime) {
       if (createTime && createTime.length >= 2) {
         // this.createTimeText = this.formatDateRange(createTime);
-        this.queryParams.sTime = createTime[0] || null;
-        this.queryParams.eTime = createTime[1] || null;
+        this.queryParams.sTime = this.formatDate(createTime[0]) || null;
+        this.queryParams.eTime = this.formatDate(createTime[1]) || null;
       } else {
         this.createTimeText = '';
         this.queryParams.sTime = null;

+ 1 - 1
src/views/course/courseWatchLog/myCourseWatchLog.vue

@@ -382,7 +382,7 @@ export default {
       this.courseLists = response.list;
     });
     this.getList();
-    this.getDicts("sys_course_watch_log_type").then(response => {
+    this.getDicts("sys_course_watch_log_type_new").then(response => {
       this.logTypeOptions = response.data;
     });
 

+ 1 - 1
src/views/course/courseWatchLog/qw/myCourseWatchLog.vue

@@ -222,7 +222,7 @@ export default {
       this.courseLists = response.list;
     });
     this.getList();
-    this.getDicts("sys_course_watch_log_type").then(response => {
+    this.getDicts("sys_course_watch_log_type_new").then(response => {
       this.logTypeOptions = response.data;
     });
 

+ 1 - 1
src/views/course/courseWatchLog/qw/watchLog.vue

@@ -370,7 +370,7 @@ export default {
       this.courseLists = response.list;
     });
     this.getList();
-    this.getDicts("sys_course_watch_log_type").then(response => {
+    this.getDicts("sys_course_watch_log_type_new").then(response => {
       this.logTypeOptions = response.data;
     });
 

+ 18 - 8
src/views/course/courseWatchLog/watchLog.vue

@@ -154,16 +154,16 @@
           :key="createCalendarKey"
         />
       </el-form-item> -->
-        <el-form-item label="创建时间" prop="createTime">
+      <el-form-item label="创建时间" prop="createTime">
         <el-date-picker
           v-model="createTimeText"
-          type="daterange"
+          type="datetimerange"
           range-separator="至"
           start-placeholder="开始日期"
           end-placeholder="结束日期"
-          value-format="yyyy-MM-dd"
-          style="width: 240px"
-           @change="createChange"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          @change="createChange"
+          :default-time="['00:00:00', '23:59:59']"
         />
       </el-form-item>
       <!-- 最新更新时间 -->
@@ -371,6 +371,16 @@
       <el-table-column label="更新时间" align="center" prop="updateTime" width="100px" />
       <el-table-column label="完课时间" align="center" prop="finishTime" width="100px" />
       <el-table-column label="营期时间" align="center" prop="campPeriodTime" />
+      <el-table-column label="是否领奖" align="center" prop="rewardType" >
+        <template slot-scope="scope">
+          <el-tag
+            :type="scope.row.rewardType ? 'success' : 'info'"
+            effect="plain"
+          >
+            {{ scope.row.rewardType ? '已领取' : '未领取' }}
+          </el-tag>
+        </template>
+      </el-table-column>
       <el-table-column
         fixed="right"
         label="操作"
@@ -779,7 +789,7 @@ export default {
       this.courseLists = response.list;
     });
     this.getList();
-    this.getDicts("sys_course_watch_log_type").then(response => {
+    this.getDicts("sys_course_watch_log_type_new").then(response => {
       this.logTypeOptions = response.data;
     });
 
@@ -893,8 +903,8 @@ export default {
     createChange(createTime) {
       if (createTime && createTime.length >= 2) {
         // this.createTimeText = this.formatDateRange(createTime);
-        this.queryParams.sTime = createTime[0] || null;
-        this.queryParams.eTime = createTime[1] || null;
+        this.queryParams.sTime = this.formatDate(createTime[0]) || null;
+        this.queryParams.eTime = this.formatDate(createTime[1]) || null;
       } else {
         this.createTimeText = [];
         this.queryParams.sTime = null;

+ 28 - 156
src/views/hisStore/components/productOrder.vue

@@ -356,10 +356,10 @@
     </el-dialog>
     <el-dialog :title="editAddress.title" :visible.sync="editAddress.open" width="600px" append-to-body>
       <el-form ref="editAddressForm" :model="editAddressForm" :rules="editAddressRules" label-width="100px">
-        <el-form-item label="收件人" prop="realName" required>
+        <el-form-item label="收件人" prop="realName">
           <el-input v-model="editAddressForm.realName" placeholder="请输入收件人" />
         </el-form-item>
-          <el-form-item label="联系电话" prop="userPhone" required>
+          <el-form-item label="联系电话" prop="source">
           <el-input v-model="editAddressForm.userPhone" placeholder="请输入联系电话" />
         </el-form-item>
         <el-form-item label="收货地址" prop="district">
@@ -396,7 +396,7 @@
           </el-col>
         </el-row>
         </el-form-item>
-        <el-form-item label="详细地址" prop="detail" required>
+        <el-form-item label="详细地址" prop="detail">
           <el-input v-model="editAddressForm.detail" placeholder="请输入收货人详细地址" />
         </el-form-item>
       </el-form>
@@ -494,20 +494,7 @@ import { getTcmScheduleList } from "@/api/company/tcmScheduleReport";
 import {getCustomerListBySearch } from "@/api/crm/customer";
 import ImageUpload from '@/components/ImageUpload'
 import Material from '@/components/Material'
-import {
-  bindCustomer,
-  getExpress,
-  listStoreOrder,
-  getStoreOrder,
-  delStoreOrder,
-  addStoreOrder,
-  updateStoreOrder,
-  exportStoreOrder,
-  uploadCredentials,
-  getStoreOrderAddress,
-  getUserPhone,
-  updateAddressErpFsStoreOrder
-} from "@/api/hisStore/storeOrder";
+import {bindCustomer,getExpress, listStoreOrder, getStoreOrder, delStoreOrder, addStoreOrder, updateStoreOrder, exportStoreOrder,uploadCredentials, getStoreOrderAddress,getUserPhone} from "@/api/hisStore/storeOrder";
 import {getCitys} from "@/api/hisStore/city";
 import customerDetails from '../../crm/components/customerDetails.vue';
 import addSms from '../../crm/components/addSms.vue';
@@ -770,157 +757,42 @@ export default {
           this.province=res.data.filter(item => item.level===0 )
         })
     },
-    flattenCityData(data, level = 0) {
-      let result = [];
-      data.forEach(item => {
-        // 转换字段名
-        const cityItem = {
-          cityId: item.value,
-          name: item.label,
-          parentId: item.pid,
-          level: level
-        };
-        result.push(cityItem);
-
-        // 递归处理子节点
-        if (item.children && item.children.length > 0) {
-          result = result.concat(this.flattenCityData(item.children, level + 1));
-        }
-      });
-      return result;
-    },
     handleEditAddress() {
-      let loading = this.$loading({
-        lock: true,
-        text: "请求中...",
-        background: "rgba(0, 0, 0, 0.7)",
-      });
-      const orderId = this.order.id;
-
-      getStoreOrderAddress(orderId).then(addressResponse => {
-        // 更新解密后的地址
-        this.order.userAddress = addressResponse.address;
-
-      }).then(res=>{
-        const id = this.order.id;
-        return getUserPhone(id).then(response =>{
-          this.order.userPhone = response.userPhone;
+        this.getCityList();
+        this.editAddressForm.id=this.order.id;
+        this.editAddressForm.realName=this.order.realName;
+        this.editAddressForm.userPhone=this.order.userPhone;
+        var address=this.order.userAddress.split(' ')
+        var province=this.citys.find((item)=>{
+          return item.name==address[0]&&item.level==0;
+        })
+        if(province!=null){
+          this.editAddressForm.provinceId=province.cityId;
+          this.city=this.citys.filter(item => item.parentId===province.cityId&&item.level==1 )
+        }
+        var city=this.citys.find((item)=>{
+          return item.name==address[1]&&item.level==1;
         })
-      }).then(res=>{
-        return getCitys();
-      }).then(res => {
-        this.citys = this.flattenCityData(res.data);
-        this.province = this.citys.filter(item => item.level === 0);
-
-        this.editAddressForm = {
-          id: this.order.id,
-          realName: this.order.realName,
-          userPhone: this.order.userPhone,
-          provinceId: null,
-          cityId: null,
-          districtId: null,
-          province: '',
-          city: '',
-          district: '',
-          detail: ''
-        };
-
-        // 解析地址
-        if (this.order.userAddress) {
-          var addressParts = this.order.userAddress.split(' ');
-
-          // 查找省份
-          if (addressParts.length > 0) {
-            var province = this.citys.find((item) => {
-              return item.name === addressParts[0] && item.level === 0;
-            });
-            if (province != null) {
-              this.editAddressForm.provinceId = province.cityId;
-              this.editAddressForm.province = province.name;
-
-              // 检查是否为直辖市(北京、上海、天津、重庆)
-              const isDirectMunicipality = ['北京市', '上海市', '天津市', '重庆市'].includes(province.name);
-
-              if (isDirectMunicipality) {
-                // 直辖市处理:先找到市级节点(市辖区)
-                if (addressParts.length > 1) {
-                  // 查找市级节点(第2部分,如"市辖区")
-                  var cityLevel = this.citys.find((item) => {
-                    return item.name === addressParts[1] && item.level === 1 && item.parentId === province.cityId;
-                  });
-
-                  if (cityLevel != null) {
-                    this.editAddressForm.cityId = cityLevel.cityId;
-                    this.editAddressForm.city = cityLevel.name;
-                    this.city = this.citys.filter(item => item.parentId === province.cityId && item.level === 1);
-
-                    // 使用市级节点的cityId作为parentId查找区县
-                    if (addressParts.length > 2) {
-                      var district = this.citys.find((item) => {
-                        return item.name === addressParts[2] && item.level === 2 && item.parentId === cityLevel.cityId;
-                      });
-
-                      if (district != null) {
-                        this.editAddressForm.districtId = district.cityId;
-                        this.editAddressForm.district = district.name;
-                        this.district = this.citys.filter(item => item.parentId === cityLevel.cityId && item.level === 2);
-                      }
-                    }
-
-                    // 提取详细地址(第4部分及之后)
-                    if (addressParts.length > 3) {
-                      this.editAddressForm.detail = addressParts.slice(3).join(' ');
-                    }
-                  }
-                }
-              } else {
-                // 普通省份处理:正常匹配市、区
-                this.city = this.citys.filter(item => item.parentId === province.cityId && item.level === 1);
 
-                // 查找城市
-                if (addressParts.length > 1) {
-                  var city = this.citys.find((item) => {
-                    return item.name === addressParts[1] && item.level === 1;
-                  });
-                  if (city != null) {
-                    this.editAddressForm.cityId = city.cityId;
-                    this.editAddressForm.city = city.name;
-                    this.district = this.citys.filter(item => item.parentId === city.cityId && item.level === 2);
-                  }
-                }
-                // 查找区县
-                if (addressParts.length > 2) {
-                  var district = this.citys.find((item) => {
-                    return item.name === addressParts[2] && item.level === 2;
-                  });
-                  if (district != null) {
-                    this.editAddressForm.districtId = district.cityId;
-                    this.editAddressForm.district = district.name;
-                  }
-                }
-                // 提取详细地址(第4部分及之后)
-                if (addressParts.length > 3) {
-                  this.editAddressForm.detail = addressParts.slice(3).join(' ');
-                }
-              }
-            }
-          }
+        if(city!=null){
+          this.editAddressForm.cityId=city.cityId;
+          this.district=this.citys.filter(item => item.parentId===city.cityId&&item.level==2 )
+        }
+        var district=this.citys.find((item)=>{
+          return item.name==address[2]&&item.level==2;
+        })
+        if(district!=null){
+          this.editAddressForm.districtId=district.cityId;
         }
 
         this.editAddress.open = true;
-      }).catch(error => {
-        this.msgError("加载数据失败");
-        console.error(error);
-      }).finally(()=>{
-        loading.close();
-      })
     },
     /** 提交按钮 */
     submitEditAddressForm() {
       this.$refs["editAddressForm"].validate(valid => {
         if (valid) {
            this.editAddressForm.userAddress=this.editAddressForm.province+" "+this.editAddressForm.city+" "+this.editAddressForm.district+" "+this.editAddressForm.detail;
-            updateAddressErpFsStoreOrder(this.editAddressForm).then(response => {
+            updateStoreOrder(this.editAddressForm).then(response => {
               if (response.code === 200) {
                 this.msgSuccess("修改成功");
                 this.editAddress.open = false;

+ 21 - 5
src/views/qw/autoTags/dayPartingIndex.vue

@@ -174,13 +174,29 @@
             <div style="background-color: #fbfbfb;padding: 10px;  border: 1px solid #e6e6e6; margin-bottom: 10px;">
               <el-form ref="rulesTagsFrom" :rules="rulesTagsRules" :model="item" >
                 <div>
+                  <el-form-item label="执行规则" prop="dayOrWeek" style="width: 500px;margin:5px 0 0 8%">
+                    <el-radio-group v-model="item.dayOrWeek">
+                      <el-radio :label="0">星期</el-radio>
+                      <el-radio :label="1">日期</el-radio>
+                    </el-radio-group>
+                  </el-form-item>
                   <div style="display: flex; align-items: center; flex-wrap: nowrap;">
                     <span style="margin-right: 10px;">规则 {{ index + 1 }}:</span>
-                    <el-form-item label="为每:" prop="week" style="flex: 8;margin-bottom: 0">
+                    <el-form-item label="为每:" prop="week" style="flex: 8;margin-bottom: 0" v-if="item.dayOrWeek == 0">
                       <el-select v-model="item.week" remote multiple placeholder="请选择时间" filterable style="width: 350px;">
                         <el-option v-for="dict in weekOptions" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
                       </el-select>
                     </el-form-item>
+                    <el-form-item label="为每:" prop="days" style="flex: 8;margin-bottom: 0" v-if="item.dayOrWeek == 1">
+                      <el-date-picker
+                        clearable size="small"
+                        v-model="item.days"
+                        type="daterange"
+                        value-format="yyyy-MM-dd"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期">
+                      </el-date-picker>
+                    </el-form-item>
                     <el-form-item prop="startTime" style="margin:0 5px 0 5px">
                       <el-time-select style="width: 120px;" placeholder="起始时间" v-model="item.startTime" :picker-options="{
                               start: '00:00',
@@ -523,7 +539,7 @@ export default {
         // 遍历 tagListFormIndex 并将 tagId 放入对应位置的 tags
         newList.forEach((tags, index) => {
           if (!this.form.rulesTags[index]) {
-            this.$set(this.form.rulesTags, index, {tags:[],week:[1,2,3,4,5,6,7],startTime:null,endTime:null,remarks:null});
+            this.$set(this.form.rulesTags, index, {tags:[],week:[1,2,3,4,5,6,7],startTime:null,endTime:null,remarks:null,dayOrWeek:0,days:null});
           }
 
           // 确保清空原来的 tags 数组
@@ -726,7 +742,7 @@ export default {
       if (this.form.rulesTags.length >=7) {
         return this.$message.error('当前规则已达上限,无法添加规则');
       }
-      this.form.rulesTags.push({tags:[],week:[1,2,3,4,5,6,7],startTime:null,endTime:null,remarks:null})
+      this.form.rulesTags.push({tags:[],week:[1,2,3,4,5,6,7],startTime:null,endTime:null,remarks:null,dayOrWeek:0,days:null})
     },
 
     //选择标签弹窗
@@ -814,7 +830,7 @@ export default {
         createName: null,
         applyUsers: null,
         ruleName: null,
-        rulesTags: [{tags:[],week:[1,2,3,4,5,6,7],startTime:null,endTime:null,remarks:null}],
+        rulesTags: [{tags:[],week:[1,2,3,4,5,6,7],startTime:null,endTime:null,remarks:null,dayOrWeek:0,days:null}],
         totalNumTags: null,
         numTagsTaday: null,
         isApply: null,
@@ -828,7 +844,7 @@ export default {
       this.tagListFormIndex=[];
 
       //规则
-      this.form.rulesTags=[{tags:[],week:[1,2,3,4,5,6,7],startTime:null,endTime:null,remarks:null}];
+      this.form.rulesTags=[{tags:[],week:[1,2,3,4,5,6,7],startTime:null,endTime:null,remarks:null,dayOrWeek:0,days:null}];
       this.resetForm("form");
     },
     /** 搜索按钮操作 */

+ 4 - 1
src/views/qw/autoTags/dayPartingIndexDetails.vue

@@ -51,9 +51,12 @@
                 <div style="margin-left: 10%;margin-top: 1%">
                   <span class="spanSize">|规则 {{index +1}} </span>
                   <div class="spanSize">客户在 每
-                    <span v-for="id in rtList.week" :key="id" style="display: inline;">
+                    <span v-for="id in rtList.week" :key="id" style="display: inline;" v-if="rtList.dayOrWeek == 0">
                       <el-tag :disable-transitions="false"  v-for="list in weekOptions" :key="list.value" style="margin: 3px;" v-if="list.value==id">{{list.label}}</el-tag>
                     </span>
+                    <span style="display: inline;" v-if="rtList.dayOrWeek == 1">
+                      <el-tag>{{rtList.days[0]}}</el-tag> 到 <el-tag>{{rtList.days[1]}}</el-tag>
+                    </span>
                     <span>【{{rtList.startTime}}~{{rtList.endTime}}】</span>
                     时,打上标签
                     <span v-for="tagId in rtList.tags" :key="tagId" style="display: inline;">

+ 1 - 1
src/views/qw/externalContact/index.vue

@@ -74,7 +74,7 @@
         />
       </el-form-item>
       <el-form-item label="性别" prop="gender">
-        <el-select v-model="queryParams.gender" placeholder="状态" clearable size="small">
+        <el-select v-model="queryParams.gender" placeholder="性别" clearable size="small">
           <el-option
             v-for="dict in genderOptions"
             :key="dict.dictValue"

+ 11 - 0
src/views/qw/externalContactTransferLog/deptTransferLogIndex.vue

@@ -22,6 +22,16 @@
         />
       </el-form-item>
 
+      <el-form-item label="客户姓名" prop="name">
+        <el-input
+          style="width:220px"
+          v-model="queryParams.name"
+          placeholder="请输入客户姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
 
 
       <el-form-item label="状态" prop="status">
@@ -172,6 +182,7 @@ export default {
         externalContactId: null,
         status: null,
         companyUserNickName:null,
+        name:null,
       },
       // 表单参数
       form: {},

+ 12 - 0
src/views/qw/externalContactTransferLog/index.vue

@@ -23,6 +23,17 @@
       </el-form-item>
 
 
+      <el-form-item label="客户姓名" prop="name">
+        <el-input
+          style="width:220px"
+          v-model="queryParams.name"
+          placeholder="请输入客户姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
 
       <el-form-item label="状态" prop="status">
         <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
@@ -172,6 +183,7 @@ export default {
         externalContactId: null,
         status: null,
         companyUserNickName:null,
+        name:null,
       },
       // 表单参数
       form: {},

+ 12 - 0
src/views/qw/externalContactTransferLog/my.vue

@@ -22,6 +22,17 @@
         />
       </el-form-item>
 
+      <el-form-item label="客户姓名" prop="name">
+        <el-input
+          style="width:220px"
+          v-model="queryParams.name"
+          placeholder="请输入客户姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
 
 
       <el-form-item label="状态" prop="status">
@@ -172,6 +183,7 @@ export default {
         externalContactId: null,
         status: null,
         companyUserNickName:null,
+        name:null,
       },
       // 表单参数
       form: {},

+ 20 - 31
src/views/store/components/productOrder.vue

@@ -15,14 +15,14 @@
         <span  style="margin-left: 20px" class="color-danger">订单状态:
            <el-tag prop="status" v-for="(item, index) in statusOptions"    v-if="order.status==item.dictValue">{{item.dictLabel}}</el-tag>
         </span>
-
+       
         <div class="operate-button-container" >
           <el-button size="mini" @click="handleCertificates()"  v-hasPermi="['store:storeOrder:uploadCredentials']" >上传凭证</el-button>
           <el-button size="mini" @click="handleEditAddress()" v-if="order.status==0||order.status==1"  v-hasPermi="['store:storeOrder:editAddress']" >修改收货地址</el-button>
           <el-button size="mini" @click="handleBindCustomer()"  v-hasPermi="['store:storeOrder:bindCustomer']" >关联客户</el-button>
           <el-button size="mini" @click="editOrder()"  v-hasPermi="['store:storeOrder:edit']" >修改订单</el-button>
           <!-- <el-button size="mini" @click="handleEditUser()"  v-hasPermi="['users:user:edit']" >修改会员修改</el-button> -->
-          <el-button size="mini" v-if="order.customerId!=null&&order.customerId>0"  @click="handleCustomer()"    >查看客户详情</el-button>
+          <el-button size="mini" v-if="order.customerId!=null&&order.customerId>0"  @click="handleCustomer()"    >查看客户详情</el-button>         
         </div>
         <div class="operate-button-container"  v-hasPermi="['store:storeOrder:express']"  >
           <el-button size="mini" @click="showExpress()" >查看物流</el-button>
@@ -48,7 +48,7 @@
             </el-descriptions-item>
             <!-- <el-descriptions-item label="进线时间"  >
                 <span v-if="user!=null">
-                  {{user.registerDate}}
+                  {{user.registerDate}} 
                 </span>
             </el-descriptions-item>
             <el-descriptions-item label="推线编码"  >
@@ -56,7 +56,7 @@
                   {{user.registerCode}}
                 </span>
             </el-descriptions-item> -->
-
+             
             <el-descriptions-item label="收货人"  >
                 <span v-if="order!=null ">
                   {{order.realName }}
@@ -123,7 +123,7 @@
                   {{customerInfo.registerDate }}
                 </span>
             </el-descriptions-item>
-
+        
       </el-descriptions>
       <div style="margin: 20px 0px"  v-if="order!=null">
         <span class="font-small">
@@ -286,7 +286,7 @@
     <el-dialog :title="editUser.title" :visible.sync="editUser.open" width="600px" append-to-body>
       <el-form ref="editUserForm" :model="editUserForm" :rules="editUserRules" label-width="100px">
          <el-form-item label="进线时间" prop="registerDate">
-          <el-date-picker clearable size="small"
+          <el-date-picker clearable size="small"  
             v-model="editUserForm.registerDate"
             type="date"
             value-format="yyyy-MM-dd"
@@ -386,7 +386,7 @@
               <el-button type="primary" @click="searchCustomer">查看</el-button>
             </el-col>
           </el-row>
-
+          
         </el-form-item>
         <el-form-item label="客户选择"  prop="customerIds">
           <el-table   @selection-change="handleSelectionChange"
@@ -440,23 +440,12 @@ import {updateUser,getUser } from "@/api/users/user";
 
 import {getCustomerListBySearch } from "@/api/crm/customer";
 import ImageUpload from '@/components/ImageUpload'
-import {
-  bindCustomer,
-  getExpress,
-  listStoreOrder,
-  getStoreOrder,
-  delStoreOrder,
-  addStoreOrder,
-  updateStoreOrder,
-  exportStoreOrder,
-  uploadCredentials,
-  updateAddressErpFsStoreOrder
-} from "@/api/store/storeOrder";
+import {bindCustomer,getExpress, listStoreOrder, getStoreOrder, delStoreOrder, addStoreOrder, updateStoreOrder, exportStoreOrder,uploadCredentials } from "@/api/store/storeOrder";
 import {getAllList} from "@/api/store/city";
 import customerDetails from '../../crm/components/customerDetails.vue';
 export default {
   name: "order",
-  components: {customerDetails,
+  components: {customerDetails, 
     ImageUpload },
   data() {
     return {
@@ -509,7 +498,7 @@ export default {
       },
       editAddressForm:{
         districtId:null,
-
+        
       },
       editAddressRules:{
 
@@ -564,7 +553,7 @@ export default {
     this.getDicts("store_order_create_type").then((response) => {
       this.createTypeOptions = response.data;
     });
-
+   
   },
   methods: {
     showImageDialog() {
@@ -587,7 +576,7 @@ export default {
       }
       var data={mobile:this.bindCustomerForm.mobile};
       getCustomerListBySearch(data).then(response => {
-          this.customers=response.data;
+          this.customers=response.data;        
       });
     },
     handleBindCustomer() {
@@ -632,7 +621,7 @@ export default {
           if(this.express!=null&&this.express.Traces!=null){
               this.traces=this.express.Traces
           }
-
+          
       });
 
     },
@@ -651,8 +640,8 @@ export default {
       })
       console.log(item)
       this.editAddressForm.city=item.name;
-
-
+ 
+        
     },
     provinceChange(val){
       this.city=this.citys.filter(item => item.parentId===val )
@@ -686,7 +675,7 @@ export default {
         var city=this.citys.find((item)=>{
           return item.name==address[1]&&item.level==1;
         })
-
+        
         if(city!=null){
           this.editAddressForm.cityId=city.cityId;
           this.district=this.citys.filter(item => item.parentId===city.cityId&&item.level==2 )
@@ -697,7 +686,7 @@ export default {
         if(district!=null){
           this.editAddressForm.districtId=district.cityId;
         }
-
+        
         this.editAddress.open = true;
     },
     /** 提交按钮 */
@@ -705,7 +694,7 @@ export default {
       this.$refs["editAddressForm"].validate(valid => {
         if (valid) {
            this.editAddressForm.userAddress=this.editAddressForm.province+" "+this.editAddressForm.city+" "+this.editAddressForm.district+" "+this.editAddressForm.detail;
-            updateAddressErpFsStoreOrder(this.editAddressForm).then(response => {
+            updateStoreOrder(this.editAddressForm).then(response => {
               if (response.code === 200) {
                 this.msgSuccess("修改成功");
                 this.editAddress.open = false;
@@ -749,7 +738,7 @@ export default {
               this.getOrder(this.order.id);
             }
           });
-
+       
         }
       });
     },
@@ -768,7 +757,7 @@ export default {
             this.order = response.order;
             if(response.order.certificates != null){
               this.certificates = response.order.certificates;
-            }
+            }  
             this.user = response.user;
             this.logs = response.logs;
             this.items = response.items;

+ 43 - 76
src/views/store/components/storeOrderDetails.vue

@@ -411,36 +411,7 @@
 </template>
 
 <script>
-import {
-  bindCustomer,
-  msgList,
-  getMsgFollow,
-  updateMoney,
-  getGoods,
-  getEroOrder,
-  editTuiMoney,
-  updateDelivery,
-  createErpOrder,
-  updateExpress,
-  afterSales,
-  sendgoods,
-  logList,
-  listOrder,
-  getExpress,
-  syncExpress,
-  listOrderitem,
-  getOrder,
-  getOrderAddress,
-  getUserPhone,
-  delOrder,
-  addOrder,
-  updateStoreOrder,
-  exportOrder,
-  payment,
-  tuiOrder,
-  getPrescribe,
-  updateAddressErpFsStoreOrder
-} from "@/api/store/storeOrder";
+import {bindCustomer, msgList,getMsgFollow,updateMoney,getGoods,getEroOrder,editTuiMoney,updateDelivery,createErpOrder,updateExpress, afterSales,sendgoods,logList,listOrder,getExpress,syncExpress, listOrderitem,getOrder,getOrderAddress,getUserPhone, delOrder, addOrder, updateStoreOrder, exportOrder,payment,tuiOrder ,getPrescribe} from "@/api/store/storeOrder";
 import packageOrderDetails from '../components/packageOrderDetails2.vue';
 import {getCustomerListBySearch } from "@/api/crm/customer";
 import { getTcmScheduleList } from "@/api/company/tcmScheduleReport";
@@ -741,13 +712,13 @@ import {getCitys} from "@/api/store/city";
       },
       handlePhone(){
         const orderId = this.item.orderId;
-        return getUserPhone(orderId).then(response =>{
+        getUserPhone(orderId).then(response =>{
             this.item.userPhone = response.userPhone;
         })
       },
       handleAddress(){
         const orderId = this.item.orderId;
-        return getOrderAddress(orderId).then(response =>{
+        getOrderAddress(orderId).then(response =>{
             this.item.userAddress = response.address;
         })
       },
@@ -807,7 +778,7 @@ import {getCitys} from "@/api/store/city";
           userAddress: addressModified ? this.buildFullAddress() : (this.originalAddress || this.item.userAddress || ''),
         };
 
-        updateAddressErpFsStoreOrder(payload).then(response => {
+        updateStoreOrder(payload).then(response => {
           if (response.code === 200) {
             this.msgSuccess("操作成功");
             this.edit.open = false;
@@ -821,52 +792,48 @@ import {getCitys} from "@/api/store/city";
       });
     },
     editOrder() {
-      this.handlePhone().then(res=>{
-        return this.handleAddress()
-      }).then(res=>{
-        this.edit.open = true;
-        this.editForm.orderId = this.item.orderId;
-        this.editForm.remark = this.item.remark;
-        this.editForm.userPhone = this.item.userPhone != null ? this.item.userPhone.toString() : "";
-        if (this.item.orderBuyType != null) {
-          this.editForm.orderBuyType = this.item.orderBuyType.toString();
-        }
-        this.editForm.orderChannel = this.item.orderChannel;
-        this.editForm.qwSubject = this.item.qwSubject;
-        this.editForm.scheduleId = this.item.scheduleId;
+      this.edit.open = true;
+      this.editForm.orderId = this.item.orderId;
+      this.editForm.remark = this.item.remark;
+      this.editForm.userPhone = this.item.userPhone != null ? this.item.userPhone.toString() : "";
+      if (this.item.orderBuyType != null) {
+        this.editForm.orderBuyType = this.item.orderBuyType.toString();
+      }
+      this.editForm.orderChannel = this.item.orderChannel;
+      this.editForm.qwSubject = this.item.qwSubject;
+      this.editForm.scheduleId = this.item.scheduleId;
 
-        const currentAddress = (this.item.userAddress || "").toString().trim();
-        // 记录原始完整地址
-        this.originalAddress = currentAddress;
+      const currentAddress = (this.item.userAddress || "").toString().trim();
+      // 记录原始完整地址
+      this.originalAddress = currentAddress;
 
-        this.getCitys().then(() => {
-          if (!currentAddress) {
-            this.cityIds = [];
-            this.editForm.userAddress = "";
-            this.originalDetail = "";
-            return;
-          }
-          // 按“省 市 区 详细地址(空格分隔)”进行拆分。若无区或无市也不报错。
-          const parts = currentAddress.split(/\s+/);
-          const detail = parts.pop() || "";           // 末尾作为详细地址
-          const provLabel = parts[0];
-          const cityLabel = parts[1];
-          const areaLabel = parts[2];
+      this.getCitys().then(() => {
+        if (!currentAddress) {
+          this.cityIds = [];
+          this.editForm.userAddress = "";
+          this.originalDetail = "";
+          return;
+        }
+        // 按“省 市 区 详细地址(空格分隔)”进行拆分。若无区或无市也不报错。
+        const parts = currentAddress.split(/\s+/);
+        const detail = parts.pop() || "";           // 末尾作为详细地址
+        const provLabel = parts[0];
+        const cityLabel = parts[1];
+        const areaLabel = parts[2];
 
-          const province = this.citys.find(p => p.label === provLabel);
-          if (province) {
-            // 只回显省,不预选市/区
-            this.cityIds = [province.value];
-          } else {
-            console.warn("未匹配到省:", { provLabel });
-            this.cityIds = [];
-          }
-          // 输入框只放“详细地址(不含省市区)”
-          this.editForm.userAddress = detail;
-          // 记录原始详细地址(用于判断有无修改)
-          this.originalDetail = detail;
-        });
-      })
+        const province = this.citys.find(p => p.label === provLabel);
+        if (province) {
+          // 只回显省,不预选市/区
+          this.cityIds = [province.value];
+        } else {
+          console.warn("未匹配到省:", { provLabel });
+          this.cityIds = [];
+        }
+        // 输入框只放“详细地址(不含省市区)”
+        this.editForm.userAddress = detail;
+        // 记录原始详细地址(用于判断有无修改)
+        this.originalDetail = detail;
+      });
     },
     updateExpress(){
       var that=this;