Procházet zdrojové kódy

入户安全检查菜单、气瓶流转、钢瓶状态

qianduan před 10 měsíci
rodič
revize
9e2b2eb7a0

+ 8 - 0
src/api/condition.js

@@ -26,3 +26,11 @@ export function delCylinderStatus(parameter) {
     data: parameter
   })
 }
+// 编辑钢瓶状态
+export function putCylinderStatus(parameter) {
+  return request({
+    url: '/api/gas-cylinder-status',
+    method: 'put',
+    data: parameter
+  })
+}

+ 34 - 0
src/api/securityCheck.js

@@ -0,0 +1,34 @@
+import request from '@/utils/request'
+
+// 获取入户安全检查项
+export function getInspectExpand(parameter) {
+  return request({
+    url: '/api/inspect-expand',
+    method: 'get',
+    params: parameter
+  })
+}
+// 添加入户安全检查项
+export function addInspectExpand(parameter) {
+  return request({
+    url: '/api/inspect-expand',
+    method: 'post',
+    data: parameter
+  })
+}
+// 编辑入户安全检查项
+export function putInspectExpand(parameter) {
+  return request({
+    url: '/api/inspect-expand',
+    method: 'put',
+    data: parameter
+  })
+}
+// 删除入户安全检查项
+export function delInspectExpand(parameter) {
+  return request({
+    url: '/api/inspect-expand',
+    method: 'delete',
+    data: parameter
+  })
+}

+ 28 - 0
src/assets/js/blockSort.js

@@ -118,6 +118,34 @@ export const orderStatus = () => {
     }
   ]
 }
+export const orderStatusilo = () => {
+  return [{
+      bgcolor: '#409EFF',
+      label: '已下单',
+      value: 1,
+    },
+    {
+      bgcolor: '#E6A23C',
+      label: '已派单',
+      value: 2,
+    },
+    {
+      bgcolor: '#67C23A',
+      label: '已完成',
+      value: 3,
+    },
+    {
+      bgcolor: '#F56C6C',
+      label: '已作废',
+      value: 4,
+    },
+    {
+      bgcolor: '#67C23A',
+      label: '配送中',
+      value: 5,
+    }
+  ]
+}
 export const neurogen = () => {
   return [{
       label: '液化石油气',

+ 1 - 1
src/assets/js/districtCode.js

@@ -253,7 +253,7 @@ export const urbanArea = () => {
       label: '威宁彝族回族苗族自治县',
     }]
   }, {
-    value: '522400',
+    value: '522600',
     label: '黔东南州',
     children: [{
       value: '522601',

+ 17 - 0
src/components/growthStatistics.vue

@@ -73,7 +73,24 @@
             valueArr.push(item.count)
           })
         }
+        let showFlag = true
+        if (valueArr.length > 0) {
+          showFlag = false
+        } else if (valueArr.length == 0) {
+          showFlag = true
+        }
         option = {
+          title: {
+            show: showFlag,
+            textStyle: {
+              color: '#ffffff',
+              fontSize: 18,
+              fontWeight: 'normal',
+            },
+            text: '暂无数据',
+            left: 'center',
+            top: 'center',
+          },
           grid: {
             top: '10%',
             left: '15%',

+ 17 - 0
src/components/proportion.vue

@@ -61,9 +61,26 @@
             valueList.push(item.count)
           })
         }
+        let showFlag = true
+        if (this.proportionList.length > 0) {
+          showFlag = false
+        } else if (this.proportionList.length == 0) {
+          showFlag = true
+        }
         const sum = valueList.reduce((per, cur) => per + cur, 0); // 总数
         const showNum = 5;
         const option = {
+          title: {
+            show: showFlag,
+            textStyle: {
+              color: '#ffffff',
+              fontSize: 18,
+              fontWeight: 'normal',
+            },
+            text: '暂无数据',
+            left: 'center',
+            top: 'center',
+          },
           // backgroundColor: "#1e1e1e",
           dataZoom: [{
               id: 'dataZoom',

+ 1 - 1
src/components/treeTable.vue

@@ -1,7 +1,7 @@
 <template>
   <!-- 树形表格 -->
   <div class="tree_card">
-    <el-table class="tree_table" :data="tableData" row-key="id" style="width: 100%;"
+    <el-table default-expand-all class="tree_table" :data="tableData" row-key="id" style="width: 100%;"
       :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
       <template v-for="(item,index) in treeData">
         <el-table-column :prop="item.field" :label="item.label" :width="item.colWidth" :align="item.align"

+ 1 - 0
src/router/generator-routers.js

@@ -28,6 +28,7 @@ const constantRouterComponents = {
   orderProcessing: () => import('@/views/customer/orderProcessing'),
   customerFiling: () => import('@/views/customer/customerFiling'),
   entrySecurity: () => import('@/views/customer/entrySecurity'),
+  entrySecurityCheck: () => import('@/views/customer/entrySecurityCheck'),
   complaints: () => import('@/views/customer/complaints'),
   // 销售管理
   orderManagement: () => import('@/views/marketing/orderManagement'),

+ 2 - 1
src/store/modules/user.js

@@ -52,7 +52,6 @@ const user = {
         // api/user
         // 连接后端接口,根据前端请求的用户信息,后端返回唯一对应的随机token
         login(userInfo).then(response => {
-          console.log(response,9)
           const data = response
           if (data.code == 200) {
             // commit会触发mutations,存储token
@@ -61,8 +60,10 @@ const user = {
             localStorage.setItem('T_tokey', data.token);
             getProfile().then(userRes => {
               var company = userRes.data.user.dept.name
+              var deptNum = userRes.data.user.deptId
               commit('SET_NAME', company)
               localStorage.setItem('companyName', company);
+              localStorage.setItem('deptId', deptNum);
             })
             resolve()
           } else {

+ 5 - 3
src/views/customer/agentOrdering.vue

@@ -76,7 +76,7 @@
     urbanArea
   } from '@/assets/js/districtCode'
   import {
-    orderStatus
+    orderStatusilo
   } from '@/assets/js/blockSort'
   import {
     formRules,
@@ -113,7 +113,7 @@
           label: '订单状态',
           field: 'state',
           placeholder: '订单状态',
-          options: orderStatus(),
+          options: orderStatusilo(),
         }, {
           type: 'input',
           label: '客户电话',
@@ -433,7 +433,9 @@
       },
       // 获取商品
       getAcquireGoods() {
-        getGoods().then(res => {
+        getGoods({
+          isShow: '1',
+        }).then(res => {
           if (res.code == 200) {
             const arrList = []
             const arr = res.data.list

+ 46 - 0
src/views/customer/checkEntry.js

@@ -0,0 +1,46 @@
+export const employee = () => {
+  return [{
+    field: 'index',
+    label: '编号',
+    align: 'center',
+  },{
+    field: 'inspectExplain',
+    label: '安全检查项',
+    align: 'left',
+  }, {
+    field: 'inspectItem',
+    label: '检查项标识',
+    align: 'center',
+  }, {
+    field: 'action',
+    label: '操作',
+    colWidth: '200px',
+    align: 'center',
+    labelButton: [{
+      type: 'edit',
+      label: '编辑',
+      icon: 'el-icon-edit',
+      style: 'primary',
+    }, {
+      type: 'del',
+      label: '删除',
+      icon: 'el-icon-tickets',
+      style: 'danger',
+    }]
+  }]
+}
+
+export const formRules = () => {
+  return [{
+    field: 'inspectExplain',
+    label: '检查项',
+    placeholder: '检查项',
+    type: 'input',
+    colWidth: 24,
+    rules: [{
+      required: true,
+      message: '请输入检查项',
+      trigger: 'blur'
+    }]
+  }]
+}

+ 5 - 1
src/views/customer/customerFiling.vue

@@ -300,7 +300,11 @@
         }
         if (type == 'edit' || type == 'logs') {
           this.staffDialogVisible = true
-          this.staffTitle = '编辑'
+          if (type == 'logs') {
+            this.staffTitle = '详情'
+          } else {
+            this.staffTitle = '编辑'
+          }
           this.ruleForm = JSON.parse(JSON.stringify(row))
           if (row.addressImg) {
             var arr = row.addressImg.split(',')

+ 211 - 0
src/views/customer/entrySecurityCheck.vue

@@ -0,0 +1,211 @@
+<template>
+  <!-- 入户安全检查项 -->
+  <div>
+    <actionBar menuTitle="入户安全检查项" :operateList="operateList" :formList="formList" :ruleForm="searchRuleForm"
+      @openModel="openModel" @searchProtocol="searchProtocol">
+    </actionBar>
+    <tables :suspension="false" :tableList="tableList" :tableData="tableData" @buttonData="buttonData"></tables>
+    <!-- 分页 -->
+    <div class="paging_bottom" v-if="Total">
+      <pagination :total="Total" :currentPage="Pagination.PageIndex" @changeSize="changeSize"
+        @changeCurrent="changeCurrent">
+      </pagination>
+    </div>
+    <el-dialog :title="staffTitle" :visible.sync="staffDialogVisible" width="800px" :close-on-click-modal="false"
+      @close="closeDialog">
+      <forms ref="childRules" :formNewList="formRuleList" :ruleForm="ruleForm" labelWidth="100px"></forms>
+      <span slot="footer" class="dialog-footer">
+        <el-button plain @click="staffDialogVisible = false">取 消</el-button>
+        <el-button type="primary" :loading="confirmLoading" @click="handleAdd">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import {
+    getInspectExpand,
+    addInspectExpand,
+    putInspectExpand,
+    delInspectExpand
+  } from '@/api/securityCheck'
+  import actionBar from '@/components/actionBar'
+  import tables from '@/components/tables'
+  import pagination from '@/components/pagination'
+  import forms from '@/components/forms'
+  import {
+    formRules,
+    employee
+  } from "./checkEntry.js";
+  export default {
+    components: {
+      actionBar,
+      tables,
+      pagination,
+      forms
+    },
+    data() {
+      return {
+        staffTitle: '添加',
+        staffDialogVisible: false,
+        Pagination: {
+          PageIndex: 1,
+          PageSize: 10,
+        },
+        operateList: [{
+          type: 'add',
+          title: '添加',
+          icon: 'el-icon-plus',
+        }],
+        formList: [{
+          type: 'input',
+          label: '检查项',
+          field: 'inspectExplain',
+          placeholder: '检查项',
+        }],
+        searchRuleForm: {
+          inspectExplain: '',
+        },
+        tableList: employee(),
+        tableData: [],
+        Total: 0,
+        formRuleList: [],
+        ruleForm: {
+          inspectExplain: '',
+        },
+        enterpriseId: null,
+        operationType: '',
+        confirmLoading: false,
+      }
+    },
+    mounted() {
+      const dataList = formRules();
+      this.formRuleList = dataList;
+      this.getList()
+    },
+    methods: {
+      // 搜索
+      searchProtocol(value) {
+        this.searchValue = value
+        this.getList()
+      },
+      openModel(type) {
+        this.operationType = type
+        if (type == 'add') {
+          this.staffTitle = '添加'
+        }
+        this.staffDialogVisible = true
+      },
+      // 获取入户安全检查列表
+      getList() {
+        var params = {
+          page: this.Pagination.PageIndex,
+          pageSize: this.Pagination.PageSize,
+          ...this.searchValue
+        }
+        getInspectExpand(params).then(res => {
+          if (res.code == 200) {
+            this.tableData = res.data.list
+            this.Total = res.data.count
+          }
+        })
+      },
+      handleAdd() {
+        let flag = this.$refs['childRules'].validateForm();
+        if (flag) {
+          this.confirmLoading = true
+          if (this.operationType == 'add') {
+            var params = {
+              ...this.ruleForm
+            }
+            addInspectExpand(params).then(res => {
+              if (res.code == 200) {
+                this.$message({
+                  message: '操作成功',
+                  type: 'success'
+                });
+                this.getList()
+              }
+              this.staffDialogVisible = false
+              this.confirmLoading = false
+            }).catch(() => {
+              this.confirmLoading = false
+            })
+          } else if (this.operationType == 'edit') {
+            this.editItem()
+          }
+        } else {
+          this.$message.error('表单信息不完整,请继续填写完整');
+        }
+      },
+      editItem() {
+        var params = {
+          id: this.enterpriseId,
+          ...this.ruleForm
+        }
+        params.price = Number(params.price)
+        putInspectExpand(params).then(res => {
+          if (res.code == 200) {
+            this.$message({
+              message: '操作成功',
+              type: 'success'
+            });
+            this.getList()
+          }
+          this.staffDialogVisible = false
+          this.confirmLoading = false
+        }).catch(() => {
+          this.confirmLoading = false
+        })
+      },
+      // 删除
+      deleteItem(id) {
+        this.$confirm('此操作将永久删除该检查项, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          delInspectExpand({
+            id: id,
+          }).then(res => {
+            if (res.code == 200) {
+              this.$message({
+                message: '操作成功',
+                type: 'success'
+              });
+              this.getList()
+            }
+          })
+        }).catch(() => {});
+      },
+      buttonData(row, type) {
+        this.enterpriseId = row.id
+        this.operationType = type
+        if (type == 'edit') {
+          this.staffDialogVisible = true
+          this.staffTitle = '编辑'
+          this.$nextTick(() => {
+            this.ruleForm.inspectExplain = row.inspectExplain
+          })
+        } else if (type == 'del') {
+          this.deleteItem(row.id)
+        }
+      },
+      changeSize(val) {
+        this.Pagination.PageSize = val
+        this.getList()
+      },
+      changeCurrent(val) {
+        this.Pagination.PageIndex = val
+        this.getList()
+      },
+      // 清空表单
+      closeDialog() {
+        this.$refs.childRules.resetCheck();
+      }
+    },
+  }
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 6 - 1
src/views/customer/orderProcessing.vue

@@ -98,6 +98,7 @@
         searchValue: {},
         orderId: '',
         operationType: '',
+        flagSelect: false,
       }
     },
     mounted() {
@@ -181,6 +182,7 @@
         this.$set(this.ruleForm, 'quantity', row.quantity)
         this.$set(this.ruleForm, 'remark', row.customer.remark)
         if (row.storeId != 0) {
+          this.flagSelect = false
           this.$set(this.ruleForm, 'storeId', String(row.storeId))
           this.getCourier(row.storeId)
           this.$set(this.ruleForm, 'userId', String(row.userId))
@@ -243,6 +245,7 @@
       // 门店选择
       changeSelect(row, field) {
         if (field == 'storeId') {
+          this.flagSelect = true
           this.getCourier(row)
         }
       },
@@ -253,7 +256,9 @@
         }).then(res => {
           // console.log(res, '配送员')
           if (res.code == 200) {
-            this.ruleForm.userId = null
+            if (this.flagSelect) {
+              this.ruleForm.userId = null
+            }
             const arrList = []
             const arr = res.data.list
             arr.forEach((item, index) => {

+ 0 - 2
src/views/customer/orderTable.js

@@ -44,12 +44,10 @@ export const employee = () => {
     field: 'address',
     label: '客户地址',
     align: 'center',
-    colWidth: '230px',
   }, {
     field: 'store.name',
     label: '配送门店',
     align: 'center',
-    colWidth: '200px',
   }, {
     field: 'user.nickName',
     label: '配送人员',

+ 0 - 1
src/views/customer/pigeonhole.js

@@ -124,7 +124,6 @@ export const employee = () => {
     field: 'address',
     label: '地址',
     align: 'center',
-    colWidth: '200px',
   }, {
     field: 'lng',
     label: '经度',

+ 0 - 2
src/views/customer/sendOrders.js

@@ -41,12 +41,10 @@ export const employee = () => {
     field: 'address',
     label: '客户地址',
     align: 'center',
-    colWidth: '200px',
   }, {
     field: 'store.name',
     label: '配送门店',
     align: 'center',
-    colWidth: '200px',
   }, {
     field: 'user.nickName',
     label: '配送人员',

+ 2 - 2
src/views/manufacture/aerationInspection.vue

@@ -45,9 +45,9 @@
       return {
         formList: [{
           type: 'input',
-          label: '单位内编',
+          label: '单位内编',
           field: 'innerCode',
-          placeholder: '单位内编',
+          placeholder: '单位内编',
         }, ],
         searchRuleForm: {
           innerCode: '',

+ 1 - 11
src/views/manufacture/carTable.js

@@ -2,58 +2,48 @@ export const tableRules = () => {
   return [{
     field: 'provCarInfo.carNo',
     label: '车牌号',
-    colWidth: '150',
     align: 'center',
   }, {
     field: 'provCarInfo.transportTime',
     label: '道路运输证有效期',
-    colWidth: '150',
     align: 'center',
   }, {
     field: 'provCarInfo.carNumber',
     label: '道路运输证编号',
-    colWidth: '150',
     align: 'center',
   }, {
     field: 'provCarInfo.carLoadage',
     label: '车辆核定载货量',
-    colWidth: '150',
     align: 'center',
   }, {
     field: 'provCarInfo.carNvq',
     label: '车辆资格证',
-    colWidth: '150',
     align: 'center',
   }, {
     field: 'provCarInfo.typeTransport',
     label: '车辆运输类型',
-    colWidth: '150',
     align: 'center',
   }, {
     field: 'provCarInfo.businessName',
     label: '业户名称',
-    colWidth: '150',
     align: 'center',
   }, {
     field: 'provCarInfo.contactNumber',
     label: '联系电话',
-    colWidth: '150',
     align: 'center',
   }, {
     field: 'provCarInfo.issueAuthority',
     label: '发证机关',
-    colWidth: '200',
     align: 'center',
   }, {
     field: 'truckUserCarInfo.user.nickName',
     label: '绑定司机',
-    colWidth: '200',
     align: 'center',
   }, {
     field: 'action',
     label: '操作',
-    colWidth: '240px',
     align: 'center',
+    colWidth: '250',
     labelButton: [{
       type: 'binding',
       label: '绑定司机',

+ 106 - 18
src/views/manufacture/cylinderCondition.vue

@@ -43,7 +43,11 @@
               <span class="item_index">{{index + 1}}</span>
               <div class="card_item_code">{{item.inner_code}}</div>
             </div>
-            <div class="card_red" @click="delSteelCylinder(item,2)">删除</div>
+            <div style="display: flex;align-items: center;">
+              <div class="card_yellow" @click="overdueScrapping(item,'extended')">超期</div>
+              <div class="card_pale_red" @click="overdueScrapping(item,'scrap')">报废</div>
+              <div class="card_red" @click="delSteelCylinder(item,2)">删除</div>
+            </div>
           </div>
         </div>
         <div v-else><el-empty :image="require('../../assets/image/empty.png')" description="暂无燃气瓶"></el-empty></div>
@@ -59,6 +63,12 @@
     <div class="card_bottle">
       <div class="card_district">
         <div class="herderArea center_in title_red">不合格瓶区</div>
+        <div class="card_tabs_abnormal">
+          <div class="title_tabs_abnormal" :class="tabsStatus == 'extended' ? 'title_blue':''"
+            @click="getTabsStatus('extended')">超期</div>
+          <div class="title_tabs_abnormal" :class="tabsStatus == 'scrap' ?'title_blue':''"
+            @click="getTabsStatus('scrap')">报废</div>
+        </div>
         <div class="same_row_in card_add_cylinder">
           <el-input style="margin-right: 10px;" v-model="input2" placeholder="输入单位内编号搜索"
             @input="cylinderSearch2"></el-input>
@@ -88,8 +98,8 @@
       <el-form :model="ruleForm" ref="ruleForm" label-width="100px" class="demo-ruleForm">
         <el-row :gutter="20">
           <el-col :span="16">
-            <el-form-item label="单位内编" prop="code" :rules="formRuleList[0].rules">
-              <el-input v-model="ruleForm.code" placeholder="请输入单位内编"></el-input>
+            <el-form-item label="单位内编" prop="code" :rules="formRuleList[0].rules">
+              <el-input v-model="ruleForm.code" placeholder="请输入单位内编"></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -128,7 +138,8 @@
   import {
     getCylinderStatus,
     addCylinderStatus,
-    delCylinderStatus
+    delCylinderStatus,
+    putCylinderStatus
   } from '@/api/condition'
   import pagination from '@/components/pagination'
   import forms from '@/components/forms'
@@ -170,13 +181,13 @@
         staffDialogVisible: false,
         formRuleList: [{
           field: 'code',
-          label: '单位内编',
-          placeholder: '单位内编',
+          label: '单位内编',
+          placeholder: '单位内编',
           type: 'input',
           colWidth: 24,
           rules: [{
             required: true,
-            message: '请输入单位内编',
+            message: '请输入单位内编',
             trigger: 'blur'
           }]
         }],
@@ -189,19 +200,21 @@
         numData: [],
         addTitle: '添加',
         codeType: 1,
+        // 报废(scrap)超期(extended)
+        tabsStatus: 'extended',
       }
     },
     mounted() {
       this.getList(1)
       this.getList1(2)
-      this.getList2(3)
+      this.getList2(this.tabsStatus)
     },
     methods: {
       getList(state) {
         getCylinderStatus({
           page: this.Pagination.PageIndex,
           pageSize: this.Pagination.PageSize,
-          status: state,
+          status: String(state),
           inner_code: this.input,
         }).then(res => {
           if (res.code == 200) {
@@ -214,7 +227,7 @@
         getCylinderStatus({
           page: this.Pagination1.PageIndex,
           pageSize: this.Pagination1.PageSize,
-          status: state,
+          status: String(state),
           inner_code: this.input1,
         }).then(res => {
           if (res.code == 200) {
@@ -227,7 +240,7 @@
         getCylinderStatus({
           page: this.Pagination2.PageIndex,
           pageSize: this.Pagination2.PageSize,
-          status: state,
+          status: String(state),
           inner_code: this.input2,
         }).then(res => {
           if (res.code == 200) {
@@ -236,6 +249,11 @@
           }
         })
       },
+      // 切换显示不合格瓶/超期。报废
+      getTabsStatus(value) {
+        this.tabsStatus = value
+        this.getList2(this.tabsStatus)
+      },
       cylinderSearch(value) {
         this.getList(1)
       },
@@ -243,7 +261,7 @@
         this.getList1(2)
       },
       cylinderSearch2(value) {
-        this.getList2(3)
+        this.getList2(this.tabsStatus)
       },
       // 添加钢瓶
       AddCylinder(type) {
@@ -275,8 +293,14 @@
       },
       // 添加钢瓶
       getAddCode() {
+        let arr = ''
+        if (this.codeType == '3') {
+          arr = this.tabsStatus
+        } else {
+          arr = String(this.codeType)
+        }
         addCylinderStatus({
-          status: this.codeType,
+          status: arr,
           innerCodeList: this.numData,
         }).then(res => {
           if (res.code == 200) {
@@ -290,7 +314,7 @@
             } else if (this.codeType == 2) {
               this.getList1(2)
             } else if (this.codeType == 3) {
-              this.getList2(3)
+              this.getList2(this.tabsStatus)
             }
           }
         })
@@ -360,6 +384,22 @@
           this.numData.splice(index, 1);
         }
       },
+      // 超期\报废
+      overdueScrapping(value, type) {
+        let arr = []
+        arr.push(value.inner_code)
+        putCylinderStatus({
+          status: type,
+          innerCodeList: arr,
+        }).then(res => {
+          if (res.code == 200) {
+            this.getList1(2)
+            if (type == this.tabsStatus) {
+              this.getList2(this.tabsStatus)
+            }
+          }
+        })
+      },
       // 删除钢瓶
       delSteelCylinder(value, type) {
         this.$confirm('此操作将永久删除该钢瓶, 是否继续?', '提示', {
@@ -392,7 +432,7 @@
                 this.Pagination2.PageIndex > precisePage ? precisePage : this
                   .Pagination2.PageIndex
                 this.Pagination2.PageIndex = this.Pagination2.PageIndex < 1 ? 1 : this.Pagination2.PageIndex
-                this.getList2(3)
+                this.getList2(this.tabsStatus)
               }
             }
           })
@@ -424,11 +464,11 @@
       // 不合格瓶区
       changeSize2(val) {
         this.Pagination2.PageSize = val
-        this.getList2(3)
+        this.getList2(this.tabsStatus)
       },
       changeCurrent2(val) {
         this.Pagination2.PageIndex = val
-        this.getList2(3)
+        this.getList2(this.tabsStatus)
       },
       // 弹窗关闭
       closeDialog() {
@@ -439,7 +479,15 @@
     }
   }
 </script>
+<style>
+  .el-tabs__item.is-active {
+    color: #409EFF !important;
+  }
 
+  .el-tabs__item {
+    color: #fff !important;
+  }
+</style>
 <style lang="scss" scoped>
   .card_cylinder_condition {
     display: flex;
@@ -521,7 +569,22 @@
   .card_red {
     cursor: pointer;
     color: #F56C6C;
-    font-size: 18px;
+    font-size: 17px;
+    margin-left: 10px;
+  }
+
+  .card_yellow {
+    cursor: pointer;
+    color: #E6A23C;
+    font-size: 17px;
+    margin-left: 10px;
+  }
+
+  .card_pale_red {
+    cursor: pointer;
+    color: #b73333;
+    font-size: 17px;
+    margin-left: 10px;
   }
 
   .title_num_code {
@@ -612,4 +675,29 @@
   ::v-deep .el-pager li:hover {
     color: #409EFF !important;
   }
+
+  .card_tabs_abnormal {
+    width: 100%;
+    display: flex;
+    align-items: center;
+    height: 40px;
+    margin-top: 15px;
+    background-color: rgba(13, 162, 203, 0.2);
+  }
+
+  .title_tabs_abnormal {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    font-size: 18px;
+    color: #fff;
+    flex: 1;
+    height: 100%;
+    cursor: pointer;
+  }
+
+  .title_blue {
+    // color: #409eff;
+    background-color: #409EFF;
+  }
 </style>

+ 5 - 4
src/views/manufacture/cylinderFile.vue

@@ -125,8 +125,9 @@
         this.cylinderDialog = true
       },
       buttonData(row, type) {
+        let arrRow = JSON.parse(JSON.stringify(row))
         if (type == 'logs') {
-          this.cylinderForm = row
+          this.cylinderForm = arrRow
           this.staffTitle = '钢瓶详情'
           const arr = [...this.cylinderRule]
           arr.forEach((item, index) => {
@@ -136,12 +137,12 @@
           this.cylinderDialog = true
           // this.getDetails(row.inner_code)
         } else if (type == 'edit') {
-          this.cylinderForm = row
+          this.cylinderForm = arrRow
           this.staffTitle = '编辑钢瓶'
-          this.clientId = row.id
+          this.clientId = arrRow.id
           this.cylinderDialog = true
         } else if (type == 'del') {
-          this.getCancelOrder(row.id)
+          this.getCancelOrder(arrRow.id)
         }
         this.operationType = type
       },

+ 0 - 1
src/views/manufacture/examine.js

@@ -120,7 +120,6 @@ export const employee = () => {
       field: 'fillLabel',
       label: '充装标签完好',
       align: 'center',
-      colWidth: '100px',
       options: intact(),
     }, {
       field: 'seal',

+ 1 - 1
src/views/manufacture/filling.js

@@ -34,7 +34,7 @@ export const employee = () => {
     align: 'center',
   }, {
     field: 'tbFillData.innerCode',
-    label: '气瓶单位内编码',
+    label: '单位内编号',
     align: 'center',
   }, {
     field: 'tbFillData.chipId',

+ 6 - 3
src/views/manufacture/roam.js

@@ -8,6 +8,11 @@ export const employee = () => {
       boxhead: true,
       align: 'center',
     }, {
+      field: 'batchNumber',
+      label: '批号',
+      colWidth: '160',
+      align: 'center',
+    }, {
       field: 'innerCode',
       label: '单位内编号',
       colWidth: '160',
@@ -61,12 +66,11 @@ export const employee = () => {
     }, {
       field: 'currentEnterpriseObj.name',
       label: '当前企业',
-      colWidth: '150',
       align: 'center',
+      colWidth: '150',
     }, {
       field: 'currentStationObj.name',
       label: '当前气站',
-      colWidth: '150',
       align: 'center',
     },
     // {
@@ -93,7 +97,6 @@ export const employee = () => {
     }, {
       field: 'currentAddressObj.name',
       label: '当前客户',
-      colWidth: '150',
       align: 'center',
     },
   ]

+ 2 - 2
src/views/manufacture/tankFilling.vue

@@ -61,9 +61,9 @@
           options: [],
         }, {
           type: 'input',
-          label: '单位内编',
+          label: '单位内编',
           field: 'innerCode',
-          placeholder: '单位内编',
+          placeholder: '单位内编',
         }, {
           type: 'input',
           label: '高频编码',

+ 20 - 3
src/views/manufacture/wanderAbout.vue

@@ -42,19 +42,31 @@
         },
         formList: [{
           type: 'input',
-          label: '单位内编',
+          label: '单位内编',
           field: 'innerCode',
-          placeholder: '单位内编',
+          placeholder: '单位内编',
         }, {
           type: 'select',
           label: '步骤',
           field: 'optType',
           placeholder: '选择步骤',
           options: process(),
-        }, ],
+        }, {
+          type: 'picker',
+          label: '操作时间',
+          field: 'transportTime',
+          placeholder: '操作时间',
+        }, {
+          type: 'input',
+          label: '批号',
+          field: 'batchNumber',
+          placeholder: '请输入批号',
+        }],
         searchRuleForm: {
           innerCode: '',
           optType: '',
+          transportTime: [],
+          batchNumber: '',
         },
         tableList: employee(),
         tableData: [],
@@ -71,6 +83,11 @@
       // 搜索
       searchProtocol(value) {
         this.searchValue = value
+        if (value.transportTime) {
+          this.searchValue.optStartTime = value.transportTime[0]
+          this.searchValue.optEndTime = value.transportTime[1]
+          delete this.searchValue.transportTime
+        }
         this.getList()
       },
       // 获取气瓶流转步骤列表

+ 0 - 2
src/views/marketing/order.js

@@ -42,12 +42,10 @@ export const employee = () => {
     field: 'address',
     label: '客户地址',
     align: 'center',
-    colWidth: '240px',
   }, {
     field: 'store.name',
     label: '配送门店',
     align: 'center',
-    colWidth: '200px',
   }, {
     field: 'user.nickName',
     label: '配送人员',

+ 2 - 2
src/views/marketing/orderManagement.vue

@@ -43,7 +43,7 @@
     urbanArea
   } from '@/assets/js/districtCode'
   import {
-    orderStatus
+    orderStatusilo
   } from '@/assets/js/blockSort'
   export default {
     components: {
@@ -66,7 +66,7 @@
           label: '订单状态',
           field: 'state',
           placeholder: '订单状态',
-          options: orderStatus(),
+          options: orderStatusilo(),
         }, {
           type: 'input',
           label: '客户电话',

+ 7 - 2
src/views/page/Home.vue

@@ -13,7 +13,7 @@
       </div>
     </div>
     <div class="card_center_home">
-      <mapStore @lookVideoGo="lookVideoGo"></mapStore>
+      <mapStore :storeStatList="storeStatList" @lookVideoGo="lookVideoGo" v-if="storeFlag"></mapStore>
     </div>
     <div class="card_right_home">
       <div class="scale-up-hor-right card_block center_in">
@@ -84,7 +84,9 @@
           num: 0,
           title: '报废瓶数',
           icon: 'liquefiedgas.png',
-        }]
+        }],
+        storeStatList: [],
+        storeFlag: false,
       }
     },
     mounted() {
@@ -100,6 +102,7 @@
     },
     methods: {
       getList() {
+        this.storeFlag = false
         getUserHome().then(res => {
           if (res.code == 200) {
             var arr = res.data
@@ -108,6 +111,7 @@
             // 近12统计
             this.growthList = arr.gasCylinderMonthStat
             this.proportionList = arr.gasCylinderDeptStat
+            this.storeStatList = arr.storeStat
             // 企业数据总汇
             this.list[0].num = arr.storeCount
             this.list[1].num = arr.deliveryCount
@@ -118,6 +122,7 @@
               this.list1[1].num = arr.gasCylinderStat[0].count
             }
           }
+          this.storeFlag = true
         })
       },
       lookVideoGo(value) {

+ 59 - 17
src/views/page/mapStore.vue

@@ -6,6 +6,12 @@
 <script>
   export default {
     name: 'mapStore',
+    props: {
+      storeStatList: {
+        type: Array,
+        default: () => [],
+      },
+    },
     data() {
       return {}
     },
@@ -21,6 +27,39 @@
         const guizhouJson = require("@/assets/guizhou.json");
         this.$echarts.registerMap("guizhou", guizhouJson);
         var img2 = require("@/assets/frame.png");
+        let gy = null;
+        let lps = null;
+        let zy = null;
+        let ass = null;
+        let tr = null;
+        let qxn = null;
+        let bj = null;
+        let qdn = null;
+        let qn = null;
+        let ga = null;
+        this.storeStatList.forEach(item => {
+          if (item.city == '520100') {
+            gy = item.count
+          } else if (item.city == '520200') {
+            lps = item.count
+          } else if (item.city == '520300') {
+            zy = item.count
+          } else if (item.city == '520400') {
+            ass = item.count
+          } else if (item.city == '522200') {
+            tr = item.count
+          } else if (item.city == '522300') {
+            qxn = item.count
+          } else if (item.city == '522400') {
+            bj = item.count
+          } else if (item.city == '522600') {
+            qdn = item.count
+          } else if (item.city == '522700') {
+            qn = item.count
+          } else if (item.city == '522800') {
+            ga = item.count
+          }
+        })
         var geoCoordMap = {
           '贵阳市': [106.628201, 26.646694],
           '安顺市': [105.936125, 26.241928],
@@ -28,74 +67,77 @@
           '毕节市': [105.284023, 27.301289],
           '遵义市': [106.944166, 27.690791],
           '黔东南': [107.976125, 26.583076],
-          '铜仁市': [109.193506,27.717859],
-          '黔西南': [104.914189,25.091848],
-          '黔南': [107.516374,26.257243],
+          '铜仁市': [109.193506, 27.717859],
+          '黔西南': [104.914189, 25.091848],
+          '黔南': [107.516374, 26.257243],
         }
-        var customerBatteryCityData = [{
+        var arr = [{
             name: "贵阳市",
             value: 1,
-            fdl: 99,
+            fdl: gy,
             tds: 1,
             fds: 98
           },
           {
             name: "安顺市",
             value: 1,
-            fdl: 99,
+            fdl: ass,
             tds: 1,
             fds: 98
           },
           {
             name: "六盘水市",
             value: 1,
-            fdl: 99,
+            fdl: lps,
             tds: 1,
             fds: 98
           },
           {
             name: "毕节市",
             value: 1,
-            fdl: 99,
+            fdl: bj,
             tds: 1,
             fds: 98
           },
           {
             name: "遵义市",
             value: 1,
-            fdl: 99,
+            fdl: zy,
             tds: 1,
             fds: 98
           },
           {
             name: "黔东南",
             value: 1,
-            fdl: 99,
+            fdl: qdn,
             tds: 1,
             fds: 98
           },
           {
             name: "黔南",
             value: 1,
-            fdl: 10,
+            fdl: qn,
             tds: 1,
             fds: 98
           },
           {
             name: "铜仁市",
             value: 1,
-            fdl: 20,
+            fdl: tr,
             tds: 1,
             fds: 98
           },
           {
             name: "黔西南",
             value: 1,
-            fdl: 54,
+            fdl: qxn,
             tds: 1,
             fds: 98
           },
         ]
+        let customerBatteryCityData = arr.filter(function(el) {
+          return el.fdl !== null;
+        });
         // options
         const distributionOptions = {
           tooltip: {
@@ -113,11 +155,11 @@
               if (item.data) {
                 var tipHtml = '';
                 tipHtml =
-                  '<div style="padding: 10px;font-size: 16px;height: 150px;line-height: 30px;background:#3077ca;opacity: 0.75;border-radius: 3px;color:#fff">' +
+                  '<div style="padding: 10px;font-size: 16px;height: 90px;line-height: 30px;background:#3077ca;opacity: 0.75;border-radius: 3px;color:#fff">' +
                   item.data[2].name + '&nbsp;&nbsp;&nbsp;<br />' +
                   '门店数量&nbsp;&nbsp;' + item.data[2].fdl + '个' + '&nbsp;&nbsp;<br/>' +
-                  '不合格数&nbsp;&nbsp;' + item.data[2].tds + '&nbsp;&nbsp;<br/>' +
-                  '合格数&nbsp;&nbsp;' + item.data[2].fds + '&nbsp;&nbsp;<br/>' +
+                  // '不合格数&nbsp;&nbsp;' + item.data[2].tds + '&nbsp;&nbsp;<br/>' +
+                  // '合格数&nbsp;&nbsp;' + item.data[2].fds + '&nbsp;&nbsp;<br/>' +
                   '</span><button onclick="lookVideoGo(' + item.data[2].fds + ')">查看门店</button></div>';
                 return tipHtml;
               }
@@ -134,7 +176,7 @@
               show: true,
               roam: false,
               label: {
-                show: false,
+                show: true,
                 color: '#ffffff',
                 emphasis: {
                   show: false,

+ 8 - 1
src/views/system/salesStore.vue

@@ -1,7 +1,7 @@
 <template>
   <!-- 销售门店管理 -->
   <div>
-    <actionBar menuTitle="销售门店管理" :operateList="operateList" :formList="formList" :ruleForm="searchRuleForm"
+    <actionBar menuTitle="销售门店管理" :operateList="operateList1" :formList="formList" :ruleForm="searchRuleForm"
       @openModel="openModel" @searchProtocol="searchProtocol"></actionBar>
     <treeTable :suspension="true" :treeData="treeData" :treeDataList="treeDataList" @buttonData="buttonData">
     </treeTable>
@@ -69,6 +69,7 @@
         searchRuleForm: {
           name: '',
         },
+        operateList1: [],
         operateList: [
           //   {
           //   type: 'ascend',
@@ -96,6 +97,12 @@
       }
     },
     mounted() {
+      const num = localStorage.getItem('deptId')
+      if (num == 0) {
+        this.operateList1 = this.operateList
+      } else {
+        this.operateList1 = []
+      }
       this.getList()
       const dataList = formRules();
       this.formRuleList = dataList;

+ 0 - 1
src/views/system/shopTable.js

@@ -79,7 +79,6 @@ export const employee = () => {
     field: 'provUser.isorders',
     label: '用户类型',
     align: 'center',
-    colWidth: '150px',
     options: [{
         label: '送气员',
         value: 0,

+ 8 - 1
src/views/system/transport.vue

@@ -1,7 +1,7 @@
 <template>
   <!-- 运输企业管理 -->
   <div>
-    <actionBar menuTitle="运输企业管理" :operateList="operateList" :formList="formList" :ruleForm="searchRuleForm"
+    <actionBar menuTitle="运输企业管理" :operateList="operateList1" :formList="formList" :ruleForm="searchRuleForm"
       @openModel="openModel" @searchProtocol="searchProtocol"></actionBar>
     <treeTable :suspension="true" :treeData="treeData" :treeDataList="treeDataList" @buttonData="buttonData">
     </treeTable>
@@ -50,6 +50,7 @@
         searchRuleForm: {
           name: '',
         },
+        operateList1: [],
         operateList: [{
           type: 'add',
           title: '添加一级运输企业',
@@ -69,6 +70,12 @@
       }
     },
     mounted() {
+      const num = localStorage.getItem('deptId')
+      if (num == 0) {
+        this.operateList1 = this.operateList
+      } else {
+        this.operateList1 = []
+      }
       const dataList = formRules();
       this.formRuleList = dataList;
       this.getList()

+ 2 - 2
src/views/user/Login.vue

@@ -79,8 +79,8 @@
         ruleForm: {
           phone: '',
           verifyCode: '',
-          username: 'admin',
-          password: '123456'
+          username: '',
+          password: ''
         },
         rules: {
           phone: [{