luobisheng
2022-11-18 655698fc92c698766083d3f80fdf2a8e2875ea80
消息部分修改
15个文件已修改
13249 ■■■■■ 已修改文件
package-lock.json 13035 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/operate/storeManagement.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/users.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/layout/components/Header/index.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/layout/components/Header/updatePassword/index.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login/index.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/fivepack/threepack/components/content.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/fivepack/threepack/components/updateUser/index.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/images/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/message/myIndex/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/myWait/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/video/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/systemSetting/device/bayonet/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/systemSetting/device/point/index.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
Diff too large
src/api/operate/storeManagement.js
@@ -22,4 +22,8 @@
export function getStoreInfoById(id) {
    return http.get('/sccg/store/storeinfo/' + id);
}
export function getVideoPoint(params) {
    return http.get('/sccg/video_point/query', params);
}
src/api/users.js
@@ -1,4 +1,10 @@
import axios from "axios";
import http from "@/http";
export default {
  login: (data) => axios.post('/sccg/admin/login', data),
  getMessageAuditList: (params) => {
    return http.get('/sccg/message_column_set/getUserColumnSet', params);
  }
};      
src/views/layout/components/Header/index.vue
@@ -31,8 +31,8 @@
      <!-- 消息 -->
      <div class="menu-right__item btn" @mousemove="flag.message = true" @mouseleave="flag.message = false">
        <el-tooltip effect="dark" content="消息中心" placement="bottom-end" :hide-after="600">
          <el-badge :value="50" :max="99" class="item">
            <i class="el-icon-message-solid"></i>
          <el-badge :value="messageCounts" class="item">
            <i @click="getMessage" class="el-icon-message-solid"></i>
          </el-badge>
        </el-tooltip>
        <!-- 消息操作 -->
@@ -44,9 +44,9 @@
            </div>
            <div v-for="item in menuMessageList" :key="item.id" class="message-card__item">
              <router-link to='/home/operate/message/messageIndex'>
                <span @click="" class="label">{{ item.label }}</span>
                <span class="label">{{ item.columnName }}</span>
              </router-link>
              <span>({{ item.num }})</span>
              <span>({{ item.messageNumber }})</span>
            </div>
          </el-card>
        </div>
@@ -76,9 +76,6 @@
          <el-form-item  prop="mobile" label="联系方式" min-width="7">
            <el-input v-model="info.mobile"></el-input>
          </el-form-item>
          <!-- <el-form-item  prop="departName" label="所属部门" min-width="8">
            <el-input v-model="user.mobile"></el-input>
          </el-form-item> -->
          <el-form-item prop="jobTitle" label="所属职务" min-width="8">
            <el-input v-model="info.jobTitle"></el-input>
          </el-form-item>
@@ -94,6 +91,8 @@
<script>
import updatePassword from "./updatePassword";
import users from "@/api/users";
export default {
  components: {
    updatePassword
@@ -127,35 +126,15 @@
        message: false
      },
      user: '',
      menuMessageList: [
        {
          label: '全部消息',
          num: 10,
          id: '1m'
        },
        {
          label: '产品消息',
          num: 10,
          id: '2m'
        },
        {
          label: '安全消息',
          num: 10,
          id: '3m'
        },
        {
          label: '服务消息',
          num: 10,
          id: '4m'
        },
      ],
      menuMessageList: [],
      messageCounts: 0,
      keyword: '',
      info:null,
      show:false
      info: null,
      show: false
    };
  },
  created() {
    this.setLoginInfo()
    this.setLoginInfo();
  },
  methods: {
    baseInfo() {
@@ -174,7 +153,6 @@
      this.$confirm("确认关闭?")
        .then((_) => {
          this.dialogUpload = false;
          // this.dialogUpdate = false;
          done();
        })
        .catch((_) => { });
@@ -198,16 +176,13 @@
    // 改变选中状态
    changeActive(idx) {
      this.menuLeftList.forEach((item, index) => {
        if (index === idx) {
          item.checked = true;
        } else {
          item.checked = false;
        }
        item.checked = index === idx;
      })
    },
    // 设置用户基本信息
    async setLoginInfo() {
      const info = JSON.parse(sessionStorage.getItem('user'));
      this.getMessage();
      if (info) {
        this.user = info;
      } else {
@@ -223,7 +198,18 @@
          url: 'sccg/admin/info?name=' + name,
        })
        sessionStorage.setItem('user', JSON.stringify(res.data));
        return res.data
        return res.data;
    },
    getMessage() {
      const userInfo = JSON.parse(sessionStorage.getItem('user'));
      users.getMessageAuditList({ userId: userInfo.user.id })
          .then(res => {
            this.menuMessageList = res;
            this.menuMessageList.forEach(item => {
              this.messageCounts += item.messageNumber;
            })
          })
          .catch(err => this.$message.error(`${err}`))
    }
  }
};
src/views/layout/components/Header/updatePassword/index.vue
@@ -6,15 +6,15 @@
                    label-position="right">
                    <!-- 车牌号 -->
                    <el-form-item class="optionItem" label="当前密码:" prop="carNumber">
                        <el-input v-model="car.carNumber" placeholder="请填写当前密码" disabled></el-input>
                        <el-input v-model="car.carNumber" placeholder="请填写当前密码"></el-input>
                    </el-form-item>
                    <!-- 所属部门 -->
                    <el-form-item class="optionItems" label="新密码:" prop="depart">
                        <el-input v-model="car.depart" placeholder="请填写新密码" disabled></el-input>
                        <el-input v-model="car.depart" placeholder="请填写新密码"></el-input>
                    </el-form-item>
                    <!-- 所属大队 -->
                    <el-form-item class="optionItems" label="确定新密码:" prop="belong">
                        <el-input v-model="car.belong" placeholder="请二次填写新密码" disabled></el-input>
                        <el-input v-model="car.belong" placeholder="请二次填写新密码"></el-input>
                    </el-form-item>
                </el-form>
            </div>
@@ -30,10 +30,10 @@
                if(validateCarNum(value)){
                    callback()
                }else{
                    callback(new Error('请输入正确的车牌号'));
                    callback(new Error('请输入正确的密码'));
                }
            } else {
                callback(new Error('车牌号不能为空'));
                callback(new Error('密码不能为空'));
            }
        }
        const checkName = (rule, value, callback) => {
@@ -41,10 +41,10 @@
                if(validateName(value)){
                    callback()
                }else{
                    callback(new Error('请正确输入车主姓名'));
                    callback(new Error('请输入正确的密码'));
                }
            } else {
                callback(new Error('车主姓名不能为空'));
                callback(new Error('新密码不能为空'));
            }
        }
        const checkUser = (rule, value, callback) => {
@@ -52,10 +52,10 @@
                if(validateName(value)){
                    callback()
                }else{
                    callback(new Error('请正确输入车辆使用人员'));
                    callback(new Error('请输入正确的密码'));
                }
            } else {
                callback(new Error('车辆使用人员不能为空'));
                callback(new Error('新密码不能为空'));
            }
        }
        const checkPhone = (rule, value, callback) => {
src/views/login/index.vue
@@ -55,6 +55,8 @@
<script>
import { isvalidUsername } from "@/utils/validate";
import { createNamespacedHelpers } from "vuex";
import users from "@/api/users";
const { mapActions } = createNamespacedHelpers("users");
export default {
  name: "login",
@@ -77,8 +79,6 @@
      loginForm: {
        username:"",
        password:"",
        // username: "admin",
        // password: "macro123",
      },
      imgUrl:'',
      loginRules: {
@@ -108,11 +108,7 @@
   },
  methods: {
    showPwd() {
      if (!this.pwdType) {
        this.pwdType = true;
      } else {
        this.pwdType = false;
      }
      this.pwdType = !this.pwdType;
    },
    ...mapActions(["login"]),
    handleLogin() {
@@ -147,7 +143,7 @@
        })
        .catch(function (error) {
        });
    },
    }
  },
};
</script>
src/views/operate/fivepack/threepack/components/content.vue
@@ -18,7 +18,7 @@
              <el-button icon="el-icon-delete-solid" @click="handleReset">重置</el-button>
            </div>
          </div>
          <el-button v-if="isStorePage()" type="primary" icon="el-icon-plus" @click="handleView(null, 'add')">添加</el-button>
          <el-button v-if="isStorePage()" type="primary" icon="el-icon-plus" @click="handleView(null, 'create')">添加</el-button>
        </div>
      </header>
      <main>
@@ -38,7 +38,10 @@
          </el-table-column>
          <el-table-column prop="storeAddress" label="店铺详细地址" min-width="10">
          </el-table-column>
          <el-table-column prop="relationVideo" label="关联摄像机" min-width="10">
          <el-table-column prop="videoPoint" label="关联摄像机" min-width="10">
            <template v-if="scope.row.videoId" slot-scope="scope">
              <span>{{ scope.row.videoPoint.name }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="operation" label="操作" min-width="20">
            <template slot-scope="scope">
@@ -58,8 +61,9 @@
        </el-table>
        <!-- 查看修改页面 -->
        <el-dialog :visible.sync="dialogUpdate" width="45%"
                   :title="dialogType ? '修改店铺信息' : '查看店铺信息'" :before-close="handleClose">
          <updateUser :dialogType="dialogType" :storeInfo="storeInfo" :isStorePage="isStorePage()" @closeDialog="closeDialog" />
                   :destroy-on-close="true"
                   :title="dialogType === 'view' ? '查看店铺信息' : '修改店铺信息'" :before-close="handleClose">
          <updateUser v-if="dialogUpdate" :dialogType="dialogType" :storeInfo="storeInfo" :isStorePage="isStorePage()" @closeDialog="closeDialog" />
        </el-dialog>
        <!-- 分页 -->
        <div class="pagination">
@@ -125,7 +129,7 @@
    handleDelete(id) {
      deleteStoreInfo(id)
          .then(() => {
            this.$message({ type: 'success', message });
            this.$message({ type: 'success', message: '操作成功' });
            this.search();
          })
          .catch(err => this.$message({ type: 'error', message: err }));
src/views/operate/fivepack/threepack/components/updateUser/index.vue
@@ -13,8 +13,8 @@
                        <el-input v-model="store.storeNumber" placeholder="请填写店铺编号" :disabled="isView()"></el-input>
                    </el-form-item>
                    <!-- 店铺名称 -->
                    <el-form-item class="optionItem" label="店铺名称:" prop="storename">
                        <el-input v-model="store.storename" placeholder="请填写店名称" :disabled="isView()"></el-input>
                    <el-form-item class="optionItem" label="店铺名称:" prop="storeName">
                        <el-input v-model="store.storeName" placeholder="请填写店名称" :disabled="isView()"></el-input>
                    </el-form-item>
                    <!-- 店铺联系人 -->
                    <el-form-item class="optionItem" label="店铺联系人:" prop="owner">
@@ -25,13 +25,18 @@
                        <el-input v-model="store.contact" placeholder="请填写店铺联系电话" :disabled="isView()"></el-input>
                    </el-form-item>
                    <!-- 店铺详细地址 -->
                    <el-form-item class="optionItem" label="店铺详细地址:" prop="storeaddr">
                        <el-input v-model="store.storeaddr" placeholder="请填写店铺详细地址" :disabled="isView()"></el-input>
                    <el-form-item class="optionItem" label="店铺详细地址:" prop="storeAddress">
                        <el-input v-model="store.storeAddress" placeholder="请填写店铺详细地址" :disabled="isView()"></el-input>
                    </el-form-item>
                    <!-- 关联摄像机 -->
                    <el-form-item v-if="!isStorePage" class="optionItem" label="关联摄像机:" prop="relationVideo">
                        <el-input v-model="store.relationVideo" placeholder="请填写关联摄像机" :disabled="isView()"></el-input>
                    <el-form-item v-if="isStorePage" class="optionItem" label="关联摄像机:" prop="relationVideo">
                      <el-select v-model="store.relationVideo" placeholder="请填写关联摄像机" :disabled="isView()">
                        <el-option v-for="item in relationVideoList" :key="item.id" :value="item.id" :label="item.name"></el-option>
                      </el-select>
                    </el-form-item>
                  <el-form-item v-if="!isStorePage" class="optionItem" label="店铺得分:">
                    <el-input v-model="store.storeScore" :disabled="isView()"></el-input>
                  </el-form-item>
                    <el-form-item v-if="!isView()">
                        <div class="optionBtn">
                            <el-button type="primary" class="btn submit" @click.native.prevent="onSubmit">提交</el-button>
@@ -43,8 +48,8 @@
    </div>
</template>
<script>
import {deepClone, getCodeList} from "@/utils/helper";
import {addStoreInfo, updateStoreInfo} from "@/api/operate/storeManagement";
import { deepClone, getCodeList } from "@/utils/helper";
import { addStoreInfo, getVideoPoint, updateStoreInfo } from "@/api/operate/storeManagement";
export default {
    data() {
@@ -60,32 +65,48 @@
            }
          }
        };
        const validateStoreType = (rule, value, callback) => {
          debugger;
          if (value) {
            callback();
          } else {
            callback(new Error('请选择店铺类型'));
          }
        };
        return {
            store: {
                storeNumber: '',
                storename: '',
                storeName: '',
                owner: '',
                contact: '',
                storeaddr: '',
                storeAddress: '',
                relationVideo: '',
                type: null
                type: null,
                storeScore: null
            },
            rules: {
                type: [{ required: true, trigger: ['blue', 'change'], message: '请选择店铺类型' }],
                type: [{ required: true, validator: validateStoreType }],
                storeNumber: [{ required: true, trigger:'blur', message: '请输入店铺编号' }],
                storename: [{ required: true, trigger:'blur', message: '请输入店铺名称' }],
                storeName: [{ required: true, trigger:'blur', message: '请输入店铺名称' }],
                owner: [{ required: true, trigger:'blur', message: '请输入店铺联系人' }],
                contact: [{ required: true, trigger:'blur', validator: validatePhone }],
                storeaddr: [{ required: true, trigger:'blur', message: '请输入店铺详细地址' }],
                relationVideo: [{ required: false, trigger:'blur', message: '请输入关联摄像机' }]
                storeAddress: [{ required: true, trigger:'blur', message: '请输入店铺详细地址' }],
                relationVideo: [{ required: true, trigger:'blur', message: '请输入关联摄像机' }]
            },
            shopTypeList: []
            shopTypeList: [],
            relationVideoList: []
        }
    },
    created() {
        this.store = deepClone(this.storeInfo);
        if (this.isCreated()) {
          this.getShopTypeList();
    async created() {
      this.$set(this, 'store', this.storeInfo);
      const result = await getVideoPoint({ current: 1, size: 1 });
      this.relationVideoList = result.records;
      if (this.storeInfo && this.isStorePage) {
        this.store.relationVideo = this.store.videoPoint.name;
      }
      if (!this.isView()) {
          await this.getShopTypeList();
        }
    },
@@ -120,13 +141,17 @@
      },
      isCreated() {
        return this.dialogType === 'add';
        return this.dialogType === 'create';
      },
      // 获取字典
      async getShopTypeList() {
        let arr = await getCodeList('16');
        this.shopTypeList = this.createShopTypeTree(arr);
        if (this.dialogType === 'update') {
          const selectedStoreType = arr.find(item => item.name === this.store.typeName);
          this.$set(this.store, 'type', [selectedStoreType.parentId, selectedStoreType.id]);
        }
      },
      // 创建商铺类型树
@@ -151,7 +176,11 @@
        }
      }
    },
    props: ['storeInfo', 'dialogType', 'isStorePage']
  beforeDestroy() {
      this.store = null;
  },
  props: ['storeInfo', 'dialogType', 'isStorePage']
}
</script>
<style lang="scss" scoped>
src/views/operate/images/index.vue
@@ -77,7 +77,7 @@
                  width="40%"
                  :title="getDialogTitle"
                >
                  <updateUser @closeDialog="closeDialog" :dialogType="dialogType" :originalData="originalData" />
                  <updateUser v-if="isShowUploadDialog" @closeDialog="closeDialog" :dialogType="dialogType" :originalData="originalData" />
                </el-dialog>
                <div class="tools">
                    <div class="funs">
src/views/operate/message/myIndex/index.vue
@@ -72,7 +72,7 @@
                </el-table>
                <!-- 新建消息 -->
                <el-dialog :destroy-on-close="true" :key="dialogType" :title="getDialogTitle" :visible.sync="isShowDialog" width="80%">
                    <my-edit @closeMyDialog="closeDialog" :type="dialogType" :myDataRow="tableRowData"></my-edit>
                    <my-edit v-if="isShowDialog" @closeMyDialog="closeDialog" :type="dialogType" :myDataRow="tableRowData"></my-edit>
                </el-dialog>
                <!-- tools -->
                <div class="tools">
src/views/operate/myWait/index.vue
@@ -47,7 +47,7 @@
                <!-- 查看修改页面 -->
                <el-dialog :visible.sync="dialogUpdate" width="45%" :title="updateFlag ? '权限设置' :'查看角色信息'"
                    :destroy-on-close="true" :key="updateFlag" :before-close="handleClose">
                    <updateUser :updateFlag="updateFlag" :userInfo=userInfo
                    <updateUser v-if="dialogUpdate" :updateFlag="updateFlag" :userInfo=userInfo
                        :getTableData=" context ? getTableData : getTableData" @changeDialog="changeDialog" />
                </el-dialog>
                <!-- tools -->
src/views/operate/video/index.vue
@@ -100,7 +100,7 @@
          :key="dialogTitle"
          width="40%"
          :title="dialogTitle">
          <updateInterface :isUpdate="isUpdate" :dialogData="dialogData" @closeDialog="closeDialog" />
          <updateInterface v-if="isShowDialog" :isUpdate="isUpdate" :dialogData="dialogData" @closeDialog="closeDialog" />
        </el-dialog>
        <div class="tools">
src/views/systemSetting/device/bayonet/index.vue
@@ -30,8 +30,8 @@
        </main>
        <footer>
            <!-- 添加卡口 -->
            <el-dialog :destroy-on-close="true" :key="dialogType" :title="getDialogTitle" :visible.sync="isShowDialog" width="60%" :before-close="handleClose">
                <MyCreate @closeDialog="closeDialog" :originalBayonet="originalBayonet" :isEdit="isEdit"></MyCreate>
            <el-dialog :destroy-on-close="true" :title="getDialogTitle" :visible.sync="isShowDialog" width="60%" :before-close="handleClose">
                <MyCreate v-if="isShowDialog" @closeDialog="closeDialog" :originalBayonet="originalBayonet" :isEdit="isEdit"></MyCreate>
            </el-dialog>
        </footer>
    </div>
src/views/systemSetting/device/point/index.vue
@@ -17,15 +17,6 @@
          <!-- <el-button type="primary" >删除</el-button> -->
        </div>
        <div style="height:60px;display: flex;justify-content: flex-start;">
          <!-- <el-button class="button-one">
            视频预览
          </el-button>
          <el-button class="button-two">
            视频巡查
          </el-button>
          <el-button class="button-third">
            图片巡查
          </el-button> -->
        </div>
      </el-header>
vue.config.js
@@ -39,7 +39,7 @@
    proxy: {
      // 跨域配置
      "/sccg": {
        target: `http://10.0.0.23:8082/`,
        target: `http://42.193.1.25:8082/`,
        changeOrigin: true
      }
    },