ソースを参照

优化+我要报备项目

armg 4 日 前
コミット
ade5a264d5

BIN
src/assets/AIDesign/file-excel-line.png


+ 3 - 1
src/router/index.ts

@@ -101,7 +101,7 @@ router.beforeEach(async (to, from, next) => {
   }
   try {
     //先判断企微环境
-    checkWxWorkEnvAndUserCache();
+    // checkWxWorkEnvAndUserCache();
     const { loginType, wxid, WecomType } = to.query;
     // 初始化登录模式标识
     initLoginModeFlag(loginType);
@@ -150,6 +150,8 @@ async function handleWxidLoginMode(to, next, wxId, WecomType) {
       .then((res) => {
         if (res && res.StatusCode === 200 && res.Data && res.Data.token) {
           // console.log("res=", res)
+          const userInfoV1 = JSON.stringify(res.Data);
+          window.localStorage.setItem('userInfoV1', userInfoV1);
           window.localStorage.setItem('AIToken', res.Data.token);
           window.localStorage.setItem('isRefreshProvider', res.Data.isRefreshProvider);
           window.localStorage.setItem('weChat', res.Data.weChat);

+ 1 - 1
src/utils/index.ts

@@ -250,7 +250,7 @@ export const getWxconfig = () => {
               // console.log('菜单隐藏成功');
             },
             fail: (err) => {
-              console.log('菜单隐藏失败:', err);
+              // console.log('菜单隐藏失败:', err);
             }
           });
         },

+ 2 - 0
src/utils/wecomLogin.ts

@@ -85,6 +85,8 @@ export const doWecomLogin = async (code: string, wxId?: string): Promise<void> =
         // 调用接口兑换 AIToken
         const res = await wecomAuth(formData);
         if (res && res.StatusCode === 200 && res.Data && res.Data.token) {
+            const userInfoV1 = JSON.stringify(res.Data);
+            window.localStorage.setItem('userInfoV1', userInfoV1);
             window.localStorage.setItem('AIToken', res.Data.token);
             window.localStorage.setItem('isRefreshProvider', res.Data.isRefreshProvider);
             window.localStorage.setItem('weChat', res.Data.weChat);

+ 7 - 3
src/views/AIDesign/GeneratePlan.vue

@@ -16,7 +16,7 @@
                     <div>
                         <div class="scheme-info"><span class="orgin-color">{{ stoneColors }}</span>{{
                             planParams.F_ColorCard
-                            }}</div>
+                        }}</div>
                         <span class="gray-color">|</span>
                         <div class="scheme-process"><span class="orgin-color">{{ planParams.F_DeepGrooveTech }}</span>工艺
                         </div>
@@ -75,7 +75,7 @@
                                 <div class="table-cell text-left" style="flex:2.4;"><span class="gray">{{ index + 1 }}
                                     </span>{{ item.F_ProcedureName }}</div>
                                 <div class="table-cell text-right" style="flex:0.6;">{{ item.F_ConstructionPeriod
-                                    }}<span class="gray">天</span>
+                                }}<span class="gray">天</span>
                                 </div>
                             </div>
                         </div>
@@ -369,7 +369,9 @@ export default class GeneratePlan extends Vue {
             }
 
             .recommend-scheme-section {
-                padding: 0 6px;
+                padding:10px 6px;
+                border-radius: 8px;
+                background-color:rgba(248, 248, 248, 1);
             }
 
             // 自定义表格样式
@@ -443,6 +445,8 @@ export default class GeneratePlan extends Vue {
             }
 
             .construction-period {
+                border-bottom: none !important;
+
                 h5 {
                     font-size: 16px;
                     font-weight: 600;

+ 117 - 26
src/views/AIDesign/design.vue

@@ -460,6 +460,7 @@ export default class extends Vue {
   private showChooseProject = false;
   private showProjectPopover = false;
   created() {
+    this.getServiceCode();
     // 图片头
     if (window.location.href.indexOf('aidesign.') > -1) {
       this.imgBaseUrl = 'https://aidesign.nipponpaint.com.cn'
@@ -524,7 +525,24 @@ export default class extends Vue {
     );
     this.color_selItem = selectedItem || null;
   }
-
+  private getServiceCode() {
+    let that = this;
+    const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    let serviceCodeArray = [];
+    // if (userInfo && userInfo.loginTypeList && userInfo.loginTypeList.length > 0) {
+    //   userInfo.loginTypeList.forEach(item => {
+    //     if (item.shopType == 'stoneLikePaint') {
+    //       item.shopList.forEach(childItem => {
+    //         serviceCodeArray.push(childItem.shop_code);
+    //       })
+    //     }
+    //   })
+    // }
+    if (userInfo && userInfo.ServiceCode) {
+      serviceCodeArray = userInfo.ServiceCode.split(',').map(item => item.trim()).filter(item => item !== '');
+    }
+    that.serviceCodeArray = serviceCodeArray;
+  }
   // 处理文件选择(对应 beforeRead + afterRead)
   handleFileChange(e) {
     const file = e.target.files[0]; // 获取选中的文件
@@ -622,6 +640,8 @@ export default class extends Vue {
   }
   GetReadStateFn() {
     const formData = new FormData();
+    const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    // formData.append('WXuserid', userInfo.loginName);
     const outsideType_val = this.activeName === '外墙质感' ? 0 : 1;
     formData.append('outsideType', outsideType_val);
     GetReadState(formData).then(response => {
@@ -633,6 +653,8 @@ export default class extends Vue {
 
   UpdateReadStateFn() {
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    // formData.append('WXuserid', userInfo.loginName);
     const outsideType_val = this.activeName === '外墙质感' ? 0 : 1;
     formData.append('outsideType', outsideType_val);
     UpdateReadState(formData).then(response => { });
@@ -886,6 +908,7 @@ export default class extends Vue {
       this.$toast.fail('请选择图片');
       return;
     }
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
     const formData = new FormData();
     if (this.activeName === '外墙质感') {
       // 如果字典渲染有误,不让提交;墙面工艺、电子色卡都为必填项且没有不需要;
@@ -922,6 +945,46 @@ export default class extends Vue {
       formData.append('DesignStyle', "CHANGE_COLOR");
       formData.append('Color', this.color_selValue)
     }
+    // 其他项
+    // let serviceCodeArray = [];
+    // if (userInfo.loginTypeList.length > 0) {
+    //   userInfo.loginTypeList.forEach(item => {
+    //     if (item.shopType == 'stoneLikePaint') {
+    //       item.shopList.forEach(childItem => {
+    //         serviceCodeArray.push(childItem.shop_code);
+    //       })
+    //     }
+    //   })
+    // }
+    // // 用户企微ID
+    // formData.append('WXuserid', userInfo.loginName);
+    // 项目ID
+    if (this.checkedProject && this.projectBoxShow == true && this.activeName === '外墙质感') {
+      formData.append('projectid', this.checkedProject.projectid);
+    }
+    // 企微类型
+    // formData.append('wecomType', 5);
+    // // 服务商代码
+    // if (serviceCodeArray.length > 0) {
+    //   formData.append('serivceCode', serviceCodeArray.join(','));
+    // }
+    // // 姓名
+    // formData.append('userName', userInfo.userName);
+    // const customerCode = userInfo.sysUserExt && userInfo.sysUserExt.customerCode ? userInfo.sysUserExt.customerCode : '';
+    // // 经销商代码
+    // formData.append('distributorCode', customerCode);
+    // //原服务商用户、新增经销商用户
+    // // 大区
+    // formData.append('regionName', userInfo.officeName || '');
+    // // 公司名称
+    // formData.append('companyName', userInfo.companyName || '');
+    // // 员工号
+    // let employeeID = userInfo.sysUserExt && userInfo.sysUserExt.sapEmployeeId ? userInfo.sysUserExt.sapEmployeeId : '';
+    // formData.append('employeeID', employeeID);
+    // //销售部---原服务商用户、新增经销商用户
+    // formData.append('salesDepartment', userInfo.subOfficeName || '');
+    // // 销售部ID
+    // formData.append('salesDepartmentCode', userInfo.subOfficeCode || '');
     // 样式图片
     if (this.Userfile1) {
       formData.append('Userfile1', this.Userfile1);
@@ -999,6 +1062,8 @@ export default class extends Vue {
   private updateCheckedProjectLastNum(projectId) {
     let that = this;
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    formData.append('ServiceCode', that.serviceCodeArray.join(','));
     formData.append('projectid', projectId);
     GetProjectlist(formData).then(response => {
       if (response.StatusCode == 200) {
@@ -1013,6 +1078,8 @@ export default class extends Vue {
   GetProjectListFn() {
     let that = this;
     const formData = new FormData();
+    const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    formData.append('ServiceCode', that.serviceCodeArray.join(','));
     if (that.projectSearchValue.trim().length != 0) {
       formData.append('keyWord', that.projectSearchValue);
     }
@@ -1046,7 +1113,18 @@ export default class extends Vue {
   private getPicList() {
     let that = this;
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    // let roleIdArray = [];
+    // if (userInfo.roles.length > 0) {
+    //   userInfo.roles.forEach(item => {
+    //     roleIdArray.push(item.roleId);
+    //   })
+    // }
+    // formData.append('roleIds', roleIdArray.join(','));
+    // formData.append('WXuserid', userInfo.loginName);
     formData.append('baseType', 0);
+    // formData.append('wecomType', this.wecomType);
+    // const isRefresh = userInfo.isRefreshProvider === '是' ? 1 : 0;//0=否 1=是
     const isRefreshProvider = window.localStorage.getItem("isRefreshProvider");
     const isRefresh = isRefreshProvider === '是' ? 1 : 0;//0=否 1=是
     formData.append('isRefresh', isRefresh);
@@ -1215,35 +1293,48 @@ export default class extends Vue {
 
 .history-section {
   margin: 20px 0;
+}
 
-  .history-header {
-    display: flex;
-    align-items: center;
-    gap: 12px;
-    padding: 12px 16px;
-    background-color: #ffffff;
-    border-radius: 18px;
-    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
-    border: 1px solid #e9ecef;
-    /* margin-bottom: 10px; */
-  }
+.history-header {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+  padding: 12px 16px;
+  background-color: #ffffff;
+  border-radius: 18px;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+  border: 1px solid #e9ecef;
+  /* margin-bottom: 10px; */
+}
 
-  .icon-clock {
-    font-size: 12px;
-    margin-right: 8px;
-  }
+.icon-clock {
+  font-size: 12px;
+  margin-right: 8px;
+}
 
-  .history-header span {
-    font-weight: 500;
-    color: #EC8868;
-  }
+.history-header span {
+  font-weight: 500;
+  color: #EC8868;
+}
 
-  .history-header .badge-dot {
-    width: 5px;
-    height: 5px;
-    background-color: #ff4d4f;
-    border-radius: 50%;
-  }
+.history-header .badge-dot {
+  width: 5px;
+  height: 5px;
+  background-color: #ff4d4f;
+  border-radius: 50%;
+}
+
+.history-content {
+  padding: 20px;
+  border-radius: 12px;
+  background-color: white;
+  text-align: center;
+  border: 1px dashed #ddd;
+}
+
+.no-history {
+  color: #999;
+  font-size: 12px;
 }
 
 .image-selection {

+ 66 - 0
src/views/AIDesign/diagnose.vue

@@ -90,6 +90,7 @@ export default class extends Vue {
     private dialogContent = '';
     private wallType = '';
     created() {
+        this.getServiceCode();
     }
     activated() {
         // 初始化数据
@@ -111,6 +112,24 @@ export default class extends Vue {
         this.oldf_id = null;
         sessionStorage.removeItem("diagnoseSelectedImage")
     }
+    private getServiceCode() {
+        let that = this;
+        const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+        let serviceCodeArray = [];
+        // if (userInfo && userInfo.loginTypeList && userInfo.loginTypeList.length > 0) {
+        //   userInfo.loginTypeList.forEach(item => {
+        //     if (item.shopType == 'stoneLikePaint') {
+        //       item.shopList.forEach(childItem => {
+        //         serviceCodeArray.push(childItem.shop_code);
+        //       })
+        //     }
+        //   })
+        // }
+        if (userInfo && userInfo.ServiceCode) {
+            serviceCodeArray = userInfo.ServiceCode.split(',').map(item => item.trim()).filter(item => item !== '');
+        }
+        that.serviceCodeArray = serviceCodeArray;
+    }
     // 处理文件选择(对应 beforeRead + afterRead)
     handleFileChange(e) {
         const file = e.target.files[0]; // 获取选中的文件
@@ -161,8 +180,51 @@ export default class extends Vue {
             return;
         }
         const formData = new FormData();
+        // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+        // let serviceCodeArray = [];
+        // if (userInfo.loginTypeList.length > 0) {
+        //     userInfo.loginTypeList.forEach(item => {
+        //         if (item.shopType == 'stoneLikePaint') {
+        //             item.shopList.forEach(childItem => {
+        //                 serviceCodeArray.push(childItem.shop_code);
+        //             })
+        //         }
+        //     })
+        // }
+        // // 用户企微ID
+        // formData.append('WXuserid', userInfo.loginName);
         // 企微类型
         const agentFrom = window.localStorage.getItem('agentFromAI');
+        // const wecomType = getWecomType(agentFrom);
+        // formData.append('wecomType', 5);
+        // // 服务商代码
+        // if (serviceCodeArray.length > 0) {
+        //     formData.append('serivceCode', serviceCodeArray.join(','));
+        // }
+        // // 姓名
+        // formData.append('userName', userInfo.userName);
+        // const customerCode = userInfo.sysUserExt && userInfo.sysUserExt.customerCode ? userInfo.sysUserExt.customerCode : '';
+        // // 经销商代码
+        // formData.append('distributorCode', customerCode);
+        // //原服务商用户、新增经销商用户
+        // // 大区
+        // formData.append('regionName', userInfo.officeName || '');
+        // // 公司名称
+        // formData.append('companyName', userInfo.companyName || '');
+        // // 员工号
+        // let employeeID = userInfo.sysUserExt && userInfo.sysUserExt.sapEmployeeId ? userInfo.sysUserExt.sapEmployeeId : '';
+        // formData.append('employeeID', employeeID);
+        // // 立邦员工,返回新增字段(hbs立邦员工);
+        // if (agentFrom === 'hbs') {
+        //     //销售部及ID---立邦员工取值orgName和orgCode
+        //     formData.append('salesDepartment', userInfo.sysUserExt && userInfo.sysUserExt.orgName ? userInfo.sysUserExt.orgName : '');
+        //     formData.append('salesDepartmentCode', userInfo.sysUserExt && userInfo.sysUserExt.orgCode ? userInfo.sysUserExt.orgCode : '');
+        // } else {
+        //     //销售部---原服务商用户、新增经销商用户
+        //     formData.append('salesDepartment', userInfo.subOfficeName || '');
+        //     // 销售部ID
+        //     formData.append('salesDepartmentCode', userInfo.subOfficeCode || '');
+        // }
         // 样式图片
         if (this.Userfile1) {
             formData.append('Userfile1', this.Userfile1);
@@ -208,6 +270,8 @@ export default class extends Vue {
 
     GetReadStateFn() {
         const formData = new FormData();
+        // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+        // formData.append('WXuserid', userInfo.loginName);
         // 0外墙 1内墙
         const Entrytype = this.wallType === 'inside' ? 1 : 0;
         formData.append('Entrytype', Entrytype);
@@ -220,6 +284,8 @@ export default class extends Vue {
 
     UpdateReadStateFn() {
         const formData = new FormData();
+        // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+        // formData.append('WXuserid', userInfo.loginName);
         // 0外墙 1内墙
         const Entrytype = this.wallType === 'inside' ? 1 : 0;
         formData.append('Entrytype', Entrytype);

+ 66 - 0
src/views/AIDesign/insideDesign.vue

@@ -211,6 +211,7 @@ export default class extends Vue {
   private currentScrollElement: HTMLElement | null = null;
   @Ref('textureRef') private textureRef!: HTMLDivElement;
   created() {
+    this.getServiceCode();
     // 图片头
     if (window.location.href.indexOf('aidesign.') > -1) {
       this.imgBaseUrl = 'https://aidesign.nipponpaint.com.cn'
@@ -391,6 +392,25 @@ export default class extends Vue {
       });
     }
   }
+
+  private getServiceCode() {
+    let that = this;
+    const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    let serviceCodeArray = [];
+    // if (userInfo && userInfo.loginTypeList && userInfo.loginTypeList.length > 0) {
+    //   userInfo.loginTypeList.forEach(item => {
+    //     if (item.shopType == 'stoneLikePaint') {
+    //       item.shopList.forEach(childItem => {
+    //         serviceCodeArray.push(childItem.shop_code);
+    //       })
+    //     }
+    //   })
+    // }
+    if (userInfo && userInfo.ServiceCode) {
+      serviceCodeArray = userInfo.ServiceCode.split(',').map(item => item.trim()).filter(item => item !== '');
+    }
+    that.serviceCodeArray = serviceCodeArray;
+  }
   // 处理文件选择(对应 beforeRead + afterRead)
   handleFileChange(e) {
     const file = e.target.files[0]; // 获取选中的文件
@@ -444,6 +464,7 @@ export default class extends Vue {
 
   GetReadStateFn() {
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
     // formData.append('WXuserid', userInfo.loginName);
     insideGetReadState(formData).then(response => {
       if (response.StatusCode == 200) {
@@ -454,6 +475,7 @@ export default class extends Vue {
 
   insideUpdateReadStateFn() {
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
     // formData.append('WXuserid', userInfo.loginName);
     insideUpdateReadState(formData).then(response => { });
   }
@@ -595,6 +617,17 @@ export default class extends Vue {
       return;
     }
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    // let serviceCodeArray = [];
+    // if (userInfo.loginTypeList.length > 0) {
+    //   userInfo.loginTypeList.forEach(item => {
+    //     if (item.shopType == 'stoneLikePaint') {
+    //       item.shopList.forEach(childItem => {
+    //         serviceCodeArray.push(childItem.shop_code);
+    //       })
+    //     }
+    //   })
+    // }
     // formData.append('WXuserid', userInfo.loginName);
     let DesignStyle_selValue_sub = this.DesignStyle_selValue;
     //风格有值,清除纹理和色卡
@@ -617,6 +650,31 @@ export default class extends Vue {
     } else {
       formData.append('oldf_id', this.oldf_id);
     }
+    // 企微类型
+    // const agentFrom = window.localStorage.getItem('agentFromAI');
+    // const wecomType = getWecomType(agentFrom);
+    // formData.append('wecomType', 5);
+    // // 服务商代码
+    // if (serviceCodeArray.length > 0) {
+    //   formData.append('serivceCode', serviceCodeArray.join(','));
+    // }
+    // // 姓名
+    // formData.append('userName', userInfo.userName);
+    // const customerCode = userInfo.sysUserExt && userInfo.sysUserExt.customerCode ? userInfo.sysUserExt.customerCode : '';
+    // // 经销商代码
+    // formData.append('distributorCode', customerCode);
+    // //原服务商用户、新增经销商用户
+    // // 大区
+    // formData.append('regionName', userInfo.officeName || '');
+    // // 公司名称
+    // formData.append('companyName', userInfo.companyName || '');
+    // // 员工号
+    // let employeeID = userInfo.sysUserExt && userInfo.sysUserExt.sapEmployeeId ? userInfo.sysUserExt.sapEmployeeId : '';
+    // formData.append('employeeID', employeeID);
+    // //销售部---原服务商用户、新增经销商用户
+    // formData.append('salesDepartment', userInfo.subOfficeName || '');
+    // // 销售部ID
+    // formData.append('salesDepartmentCode', userInfo.subOfficeCode || '');
     // 遍历打印
     formData.forEach((value, key) => {
       console.log(`key: ${key}, value: ${value}`);
@@ -658,6 +716,14 @@ export default class extends Vue {
   private getPicList() {
     let that = this;
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    // let roleIdArray = [];
+    // if (userInfo.roles.length > 0) {
+    //   userInfo.roles.forEach(item => {
+    //     roleIdArray.push(item.roleId);
+    //   })
+    // }
+    // formData.append('roleIds', roleIdArray.join(','));
     // formData.append('WXuserid', userInfo.loginName);
     formData.append('baseType', 1);//必填 0外墙 1内墙
     const agentFrom = window.localStorage.getItem('agentFromAI');

+ 38 - 3
src/views/AIDesign/result.vue

@@ -52,7 +52,7 @@
       <div class="button-group-outside" v-if="wallType === 'outside'">
         <button class="action-button-big flex-center" @click="handleAIfun"
           v-if="agentFrom === 'stoneLikePaint' && allRes && allRes.F_DesignStyle != 'CHANGE_COLOR'">
-          <img src="@/assets/AIDesign/file-excel-2-line.png" class="icon" />
+          <img src="@/assets/AIDesign/file-excel-line.png" class="icon" />
           <div>
             <div class="title">确认AI设计</div>
             <div class="text">生成解决方案</div>
@@ -151,6 +151,7 @@ export default class extends Vue {
   private serviceCodeArray = [];
   private allRes = null;
   created() {
+    this.getServiceCode();
     checkAndSaveUserWecomType();
     getWxconfig();
   }
@@ -158,12 +159,18 @@ export default class extends Vue {
   activated() {
     this.initialize();
     this.wallType = this.$route.query.wallType || 'outside';
+    const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    const customerCode = userInfo && userInfo.sysUserExt ? userInfo.sysUserExt.customerCode : '';
+    const salesLevel = userInfo && userInfo.sysUserExt ? userInfo.sysUserExt.salesLevel : '';
     // 外墙-服务商随身邦
     if (this.agentFrom === 'stoneLikePaint' && this.wallType === 'outside') {
       this.showArtificial = true;
       this.getIsNeedProjectFlag();//获取是否关联了项目
     }
-
+    // 和部分经销商展示转人工
+    // else if(customerCode && (salesLevel === 'customer_level' || salesLevel === 'reseller_level')){
+    //   this.showArtificial = true;
+    // }
     // 从经销商随身邦进入的,显示转人工按钮,没有次数限制
     if ((this.agentFrom === 'ssb' || this.agentFrom === 'dg') && this.wallType === 'outside') {
       this.showArtificial = true;
@@ -207,6 +214,14 @@ export default class extends Vue {
   getIsNeedProjectFlag() {
     let that = this;
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    // let roleIdArray = [];
+    // if (userInfo.roles.length > 0) {
+    //   userInfo.roles.forEach(item => {
+    //     roleIdArray.push(item.roleId);
+    //   })
+    // }
+    // formData.append('roleIds', roleIdArray.join(','));
     // formData.append('WXuserid', userInfo.loginName);
     formData.append('baseType', 0);//0外墙--这里只用查询外墙
     const agentFrom = window.localStorage.getItem('agentFromAI');
@@ -231,7 +246,7 @@ export default class extends Vue {
   private updateCheckedProjectLastNum() {
     let that = this;
     const formData = new FormData();
-    // formData.append('ServiceCode', that.serviceCodeArray.join(','));
+    formData.append('ServiceCode', that.serviceCodeArray.join(','));
     formData.append('projectid', this.$route.query.projectid);
     GetProjectlist(formData).then(response => {
       if (response.StatusCode == 200 && response.Data && response.Data[0]) {
@@ -243,8 +258,27 @@ export default class extends Vue {
       }
     });
   }
+  private getServiceCode() {
+    let that = this;
+    const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
+    let serviceCodeArray = [];
+    // if (userInfo && userInfo.loginTypeList && userInfo.loginTypeList.length > 0) {
+    //   userInfo.loginTypeList.forEach(item => {
+    //     if (item.shopType == 'stoneLikePaint') {
+    //       item.shopList.forEach(childItem => {
+    //         serviceCodeArray.push(childItem.shop_code);
+    //       })
+    //     }
+    //   })
+    // }
+    if (userInfo && userInfo.ServiceCode) {
+      serviceCodeArray = userInfo.ServiceCode.split(',').map(item => item.trim()).filter(item => item !== '');
+    }
+    that.serviceCodeArray = serviceCodeArray;
+  }
   GetReadStateFn() {
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
     // formData.append('WXuserid', userInfo.loginName);
     if (this.wallType === 'outside') {
       const outsideType_val = this.F_OutsideType || 0;
@@ -258,6 +292,7 @@ export default class extends Vue {
   }
   UpdateReadStateFn() {
     const formData = new FormData();
+    // const userInfo: any = JSON.parse(window.localStorage.getItem("userInfoV1")!);
     // formData.append('WXuserid', userInfo.loginName);
     const outsideType_val = this.F_OutsideType || 0;
     formData.append('outsideType', outsideType_val);