xiao547607 пре 4 година
родитељ
комит
dbbc37d58b
3 измењених фајлова са 705 додато и 426 уклоњено
  1. 43 3
      src/api/base/companyInfo.js
  2. 324 223
      src/views/base/companyInfo-detail.vue
  3. 338 200
      src/views/base/companyInfo-list.vue

+ 43 - 3
src/api/base/companyInfo.js

@@ -1,10 +1,24 @@
 import request from '@/utils/request'
 import constant from '@/constant'
 
+function list(obj) {
+  var formData = new FormData();
+
+  for(var key in obj){
+    formData.append(key,obj[key]);
+  }
+  
+  return request.post(constant.serverUrl + "/base/companyInfo/list",formData);
+}
+
 function pageList(formData) {
   return request.post(constant.serverUrl + "/base/companyInfo/pageList", formData);
 }
 
+function loadChildren(formData) {
+  return request.post(constant.serverUrl + "/base/companyInfo/children",formData);
+}
+
 function create() {
   return request.get(constant.serverUrl + "/base/companyInfo/create");
 }
@@ -41,10 +55,36 @@ function batchRemove(idList) {
   });
 }
 
-function list(formData) {
-  return request.post(constant.serverUrl + "/base/companyInfo/list", formData);
+function queryBindDeviceList(formData) {
+  var objData = {};
+  formData.forEach((value, key) => objData[key] = value);
+  return request.get(constant.serverUrl + "/base/companyInfo/queryBindDeviceList", {
+    params: objData,
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
 }
 
+function bindDevice(formData) {
+  return request.post(constant.serverUrl + "/base/companyInfo/bindDevice", formData);
+}
+
+function unbindDevice(formData) {
+  return request.post(constant.serverUrl + "/base/companyInfo/unbindDevice", formData);
+}
+
+function treeList() {
+  return request.post(constant.serverUrl + "/base/companyInfo/treeList");
+}
+
+function isOpenMobilePayment(formData) {
+  return request.post(constant.serverUrl + "/base/companyInfo/isOpenMobilePayment",formData);
+}
+
+
+
 export default {
-  pageList, create, edit, add, update, remove, batchRemove, list
+  list, create, edit, add, update, remove, batchRemove, pageList, queryBindDeviceList,
+  bindDevice, unbindDevice,loadChildren,treeList,isOpenMobilePayment
 }

+ 324 - 223
src/views/base/companyInfo-detail.vue

@@ -10,67 +10,131 @@
     :title="title"
     :modal-append-to-body="false"
     style="text-align: left"
+    width="80%"
     @close="closeDialog"
     :close-on-click-modal="false"
-    width="900px"
   >
     <div class="user-panel" v-loading="loading">
       <el-form
         ref="form"
         :model="formModel"
         :rules="ruleValidate"
-        :label-width="'100px'"
+        :label-width="'130px'"
       >
+        <el-row v-show="formModel.enableChangeParent">          
+          <el-col :span="12">
+            <el-form-item label="上级单位" prop="parentId">
+              <el-select-tree
+                :props="props"
+                :options="companyResult"
+                v-model="formModel.parentId"
+                size="mediumn"
+                width="400px"
+              ></el-select-tree>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="本级序号" prop="sortNo">
+              <el-input
+                v-model="formModel.sortNo"
+                placeholder="请输入序号"
+                style="width: 400px"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="企业名称" prop="companyName">
+            <el-form-item label="单位名称" prop="name">
               <el-input
-                v-model="formModel.companyName"
-                placeholder="请输入企业名称"
-                style="width: 300px"
+                v-model="formModel.name"
+                placeholder="请输入单位名称"
+                style="width: 400px"
               ></el-input>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="社会信用代码" prop="creditCode">
+            <el-form-item label="全称" prop="fullName">
               <el-input
-                v-model="formModel.creditCode"
-                placeholder="请输入社会信用代码"
-                style="width: 300px"
+                v-model="formModel.fullName"
+                placeholder="请输入单位全称"
+                style="width: 400px"
               ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="所在地区" prop="region">
+            <el-form-item label="地区" prop="regionId">
+              <!-- <el-select v-model="formModel.regionId" filterable placeholder="请选择" style="width:50%">
+                <el-option
+                  v-for="region in regionData"
+                  :key="region.id"
+                  :label="region.name"
+                  :value="region.id"
+                ></el-option>
+              </el-select> -->
+              <el-select-tree
+                :props="props"
+                :options="regionData"
+                v-model="formModel.regionId"
+                size="mediumn"
+                width="400px"
+              ></el-select-tree>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="单位性质" prop="unitType">
               <el-select
-                v-model="formModel.region"
+                v-model="formModel.unitType"
                 filterable
+                clearable
                 placeholder="请选择"
-                style="width: 200px"
+                style="width: 400px"
               >
                 <el-option
-                  v-for="region in regionResult"
-                  :key="region.value"
-                  :label="region.name"
-                  :value="region.value"
+                  v-for="result in typeData"
+                  :key="result.id"
+                  :label="result.name"
+                  :value="result.value"
                 ></el-option>
-              </el-select> </el-form-item
-          ></el-col>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
           <el-col :span="12">
-            <el-form-item label="企业类型" prop="type">
+            <el-form-item label="场景值" prop="sceneId">
+              <el-select
+                v-model="formModel.sceneId"
+                filterable
+                clearable
+                placeholder="请选择"
+                style="width: 400px"
+              >
+                <el-option
+                  v-for="result in sceneData"
+                  :key="result.id"
+                  :label="result.sceneName"
+                  :value="result.id"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="formModel.sceneId == '1'">
+            <el-form-item label="服务场景" prop="type">
               <el-select
                 v-model="formModel.type"
                 filterable
+                clearable 
                 placeholder="请选择"
-                style="width: 200px"
+                style="width: 400px"
               >
                 <el-option
-                  v-for="type in typeResult"
-                  :key="type.value"
-                  :label="type.name"
-                  :value="type.value"
+                  v-for="result in sceneData"
+                  :key="result.id"
+                  :label="result.sceneName"
+                  :value="result.id"
                 ></el-option>
               </el-select>
             </el-form-item>
@@ -78,72 +142,134 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="所属行业" prop="industry">
+            <el-form-item label="关联物业公司" prop="relationCompanyId">
               <el-select-tree
                 :props="props"
-                :options="industryList"
-                v-model="formModel.industry"
-                size=""
-                height="200"
+                :options="companyResult"
+                v-model="formModel.relationCompanyId"
+                size="mediumn"
+                width="400px"
               ></el-select-tree>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="企业规模" prop="scale">
-              <el-select
-                v-model="formModel.scale"
-                filterable
-                placeholder="请选择"
-                style="width: 200px"
-              >
-                <el-option
-                  v-for="scale in scaleResult"
-                  :key="scale.value"
-                  :label="scale.name"
-                  :value="scale.value"
-                ></el-option> </el-select></el-form-item
-          ></el-col>
+            <el-form-item label="允许手机注册用户" prop="enableRegister">
+              <el-radio v-model="formModel.enableRegister" :label="true">允许</el-radio>
+              <el-radio v-model="formModel.enableRegister" :label="false">否</el-radio>
+            </el-form-item>
+          </el-col>
         </el-row>
-        <el-row>
+        <el-row v-show="formModel.unitType=='1'">
           <el-col :span="12">
-            <el-form-item label="企联职务" prop="position">
-              <el-select
-                v-model="formModel.position"
-                filterable
-                placeholder="请选择"
-                style="width: 200px"
-              >
-                <el-option
-                  v-for="position in positionResult"
-                  :key="position.value"
-                  :label="position.name"
-                  :value="position.value"
-                ></el-option> </el-select></el-form-item
-          ></el-col>
+            <el-form-item label="健康打卡提醒" prop="healthyReportNoticeEnable">
+              <el-switch v-model="formModel.healthyReportNoticeEnable"
+                active-color="#13ce66"
+                active-text="开"
+                inactive-text="关">
+              </el-switch>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row v-show="formModel.unitType=='1'">
+          <el-col :span="12">
+            <el-form-item label="打卡提醒时间" prop="healthyReportNoticeTime">
+              <el-time-picker
+                v-model="formModel.healthyReportNoticeTime"
+                class="date-box"
+                format="HH:mm"
+                value-format="HH:mm"
+              ></el-time-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="通知打卡时间" prop="healthyReportSubmitTime">
+              <el-time-picker
+                v-model="formModel.healthyReportSubmitTime"
+                class="date-box"
+                format="HH:mm"
+                value-format="HH:mm"
+              ></el-time-picker>
+            </el-form-item>
+          </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="企业logo" prop="logoUrl">
-              <el-upload
-                class="avatar-uploader"
-                name="photoFile"
-                :action="uploadUrl"
-                :show-file-list="false"
-                :headers="headers"
-                :data="uploadData"
-                :on-success="handleAvatarSuccessLogo"
-                :before-upload="beforeAvatarUploadLogo"
-                accept="image/png,image/jpeg"
-              >
-                <img v-if="fileUrlLogo" :src="fileUrlLogo" class="avatar" />
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
-              </el-upload>
+            <el-form-item label="单位备注" prop="remark">
+              <el-input
+                type="textarea"
+                v-model="formModel.remark"
+                :rows="2"
+                style="width: 100%"
+                placeholder="请输入备注"
+              ></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
+          <el-col :span="24">
+            <el-form-item label="大屏网址" prop="wallUrl">
+              <el-input
+                v-model="formModel.wallUrl"
+                placeholder="请输入"
+                style="width: 100%"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <!-- <el-row>
           <el-col :span="12">
-            <el-form-item label="营业执照" prop="businessLicenseUrl">
+            <el-form-item label="一级位置" prop="position1Name">
+              <el-input
+                v-model="formModel.position1Name"
+                placeholder="请输入一级位置"
+                style="width: 80%"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="二级位置" prop="position2Name">
+              <el-input
+                v-model="formModel.position2Name"
+                placeholder="请输入二级位置"
+                style="width: 80%"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="三级位置" prop="position3Name">
+              <el-input
+                v-model="formModel.position3Name"
+                placeholder="请输入三级位置"
+                style="width: 80%"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="四级位置" prop="position4Name">
+              <el-input
+                v-model="formModel.position4Name"
+                placeholder="请输入四级位置"
+                style="width: 80%"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="五级位置" prop="position5Name">
+              <el-input
+                v-model="formModel.position5Name"
+                placeholder="请输入五级位置"
+                style="width: 80%"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row> -->
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="单位logo" prop="logo">
               <el-upload
                 class="avatar-uploader"
                 name="photoFile"
@@ -153,7 +279,6 @@
                 :data="uploadData"
                 :on-success="handleAvatarSuccess"
                 :before-upload="beforeAvatarUpload"
-                accept="image/png,image/jpeg"
               >
                 <img v-if="fileUrl" :src="fileUrl" class="avatar" />
                 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
@@ -161,36 +286,6 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="企业地址" prop="address">
-              <el-input
-                v-model="formModel.address"
-                placeholder="请输入企业地址"
-                style="width: 80%"
-              ></el-input> </el-form-item
-          ></el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="企业介绍" prop="companyIntroduction">
-              <el-input
-                v-model="formModel.companyIntroduction"
-                placeholder="请输入企业介绍"
-                style="width: 80%"
-              ></el-input> </el-form-item
-          ></el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="企业家介绍" prop="enterpriserIntroduction">
-              <el-input
-                v-model="formModel.enterpriserIntroduction"
-                placeholder="请输入企业家介绍"
-                style="width: 80%"
-              ></el-input> </el-form-item
-          ></el-col>
-        </el-row>
       </el-form>
     </div>
     <span slot="footer" class="dialog-footer">
@@ -213,48 +308,34 @@ export default {
   props: ["businessKey", "title"],
   data() {
     return {
-      formModel: {},
+      formModel: {
+        enableChangeParent: false
+      },
       ruleValidate: {
-        companyName: [
-          { required: true, message: "企业名称不能为空", trigger: "blur" },
+        name: [
+          { required: true, message: "单位名称不能为空", trigger: "blur" },
+        ],
+        regionId: [
+          { required: true, message: "地区不能为空", trigger: "blur" },
+        ],
+        sceneId: [
+          { required: true, message: "场景值不能为空", trigger: "blur" },
+        ],
+        parentId : [
+          { required: true, message: "上级单位不能为空", trigger: "blur" },
         ],
-        // type: [
-        //   {
-        //     required: true,
-        //     message: "企业类型不能为空",
-        //     trigger: "blur",
-        //   },
-        // ],
-        // scale: [
-        //   {
-        //     required: true,
-        //     message: "企业规模不能为空",
-        //     trigger: "blur",
-        //   },
-        // ],
-        // industry: [
-        //   {
-        //     required: true,
-        //     message: "所属行业不能为空",
-        //     trigger: "blur",
-        //   },
-        // ],
-        // region: [
-        //   {
-        //     required: true,
-        //     message: "所在地区不能为空",
-        //     trigger: "blur",
-        //   },
-        // ],
+        sortNo : [
+          { required: true, message: "序号不能为空", trigger: "blur" },
+        ],
+        unitType : [
+          { required: true, message: "单位性质不能为空", trigger: "blur" },
+        ]
+        // type: [{ required: true, message: "性质不能为空", trigger: "blur" }]
       },
       showDialog: true,
       loading: false,
       submitting: false,
-      industryResult: [],
-      regionResult: [],
-      scaleResult: [],
-      typeResult: [],
-      //上传图片start
+      //上传地址
       uploadUrl: Constant.serverUrl + "/uploadPicture",
       uploadData: {
         subFolder: "companyInfo",
@@ -263,59 +344,75 @@ export default {
       headers: {
         Authorization: getToken(),
       },
-      //上传图片end
-      industryList: [],
+      companyResult: [],
+      typeData: [],
+      treeData: [],
       props: {
         // 配置项(必选)
         value: "id",
-        label: "industryName",
+        label: "name",
+        children: "children",
       },
-      positionResult:[],
-      fileUrlLogo: "",
+      sceneData: [],
+      regionData: [],
     };
   },
   created() {
     var self = this;
+    companyInfoApi.treeList().then(function (response) {
+      var jsonData = response.data;
+      if (jsonData.result) {
+        self.companyResult = jsonData.data;
+      }
+    });
 
-    dataDictionaryApi
-      .findByCatalogName({
-        catalogName: "企业类型",
-      })
-      .then((response) => {
-        var jsonData = response.data;
-        this.typeResult = jsonData.data;
-      });
+    var formData = new FormData();
+    formData.append("catalogName", "单位性质");
+    dataDictionaryApi.findByCatalogName(formData).then((response) => {
+      var jsonData = response.data;
+      this.typeData = jsonData.data;
+    });
 
-    dataDictionaryApi
-      .findByCatalogName({
-        catalogName: "企业规模",
-      })
-      .then((response) => {
-        var jsonData = response.data;
-        this.scaleResult = jsonData.data;
-      });
+  },
+  watch: {
+    "formModel.sceneId": function (newVal, oldVal) {
+      if (newVal != null) {
+        if(newVal != '1'){
+          this.formModel.type = "";
+        }
+      } 
+    },
+  },
+  methods: {
+    // getSelectedValue(value) {
+    //   this.formModel.parentId = value;
+    // },
+    // loadTree() {
+    //   var formData = new FormData();
+    //   companyInfoApi.loadChildren(formData).then(resp => {
+    //     var jsonData = resp.data;
 
-    dataDictionaryApi
-      .findByCatalogName({
-        catalogName: "区域",
-      })
-      .then((response) => {
-        var jsonData = response.data;
-        this.regionResult = jsonData.data;
-      });
+    //     if (jsonData.result) {
+    //       this.treeData = jsonData.data;
+    //     } else {
+    //       this.$message.error(jsonData.message + "");
+    //     }
+    //   });
+    // },
+    // loadChildren(tree, treeNode, resolve) {
+    //   var formData = new FormData();
+    //   formData.append("parentId", tree.id);
 
-      dataDictionaryApi
-      .findByCatalogName({
-        catalogName: "企联职务",
-      })
-      .then((response) => {
-        var jsonData = response.data;
-        this.positionResult = jsonData.data;
-      });
+    //   companyInfoApi.loadChildren(formData).then(resp => {
+    //     var jsonData = resp.data;
 
-      
-  },
-  methods: {
+    //     if (jsonData.result) {
+    //       resolve(jsonData.data);
+    //     } else {
+    //       this.$message.error(jsonData.message + "");
+    //     }
+    //   });
+    // },
     closeDialog() {
       this.$emit("close", false);
     },
@@ -327,6 +424,14 @@ export default {
           (function () {
             var id = self.formModel.id;
 
+            if (self.formModel.parentId == null) {
+              self.formModel.parentId = "";
+            }
+
+            if (self.formModel.relationCompanyId == null) {
+              self.formModel.relationCompanyId = "";
+            }
+
             if (id == null || id.length == 0) {
               return companyInfoApi.add(self.formModel);
             } else {
@@ -355,48 +460,26 @@ export default {
       });
     },
     handleAvatarSuccess(res, file) {
-      this.loading = false;
       var self = this;
-      self.formModel.businessLicenseUrl = res.data;
-      self.fileUrl = res.data + "?x-oss-process=image/resize,m_lfit,w_200";
+      self.formModel.logo = res.data;
+      self.fileUrl =
+        res.data + "?x-oss-process=image/resize,m_lfit,h_400,w_400";
     },
     beforeAvatarUpload(file) {
-      this.loading = true;
-      // const isJPG = file.type === "image/jpeg";
+      const isJPG = file.type === "image/jpeg";
       const isLt2M = file.size / 1024 / 1024 < 2;
 
-      // if (!isJPG) {
-      //   this.$message.error("上传图片只能是 JPG 格式!");
-      // }
-      if (!isLt2M) {
-        this.$message.error("上传图片大小不能超过 2MB!");
+      if (!isJPG) {
+        this.$message.error("上传头像图片只能是 JPG 格式!");
       }
-      return isLt2M;
-    },
-    handleAvatarSuccessLogo(res, file) {
-      this.loading = false;
-      var self = this;
-      self.formModel.logoUrl = res.data;
-      self.fileUrlLogo =
-        res.data + "?x-oss-process=image/resize,m_lfit,w_200";
-    },
-    beforeAvatarUploadLogo(file) {
-      this.loading = true;
-      // const isJPG = file.type === "image/jpeg";
-      const isLt2M = file.size / 1024 / 1024 < 2;
-
-      // if (!isJPG) {
-      //   this.$message.error("上传图片只能是 JPG 格式!");
-      // }
       if (!isLt2M) {
-        this.$message.error("上传图片大小不能超过 2MB!");
+        this.$message.error("上传头像图片大小不能超过 2MB!");
       }
-      return isLt2M;
+      return isJPG && isLt2M;
     },
   },
   mounted: function () {
     var self = this;
-
     (function () {
       if (self.businessKey.length == 0) {
         return companyInfoApi.create();
@@ -410,17 +493,10 @@ export default {
 
         if (jsonData.result) {
           self.formModel = jsonData.data;
-
-          let businessLicenseUrl = self.formModel.businessLicenseUrl;
-          if (businessLicenseUrl != null) {
+          let logo = self.formModel.logo;
+          if (logo != null) {
             self.fileUrl =
-              businessLicenseUrl + "?x-oss-process=image/resize,m_lfit,h_200";
-          }
-
-          let logoUrl = self.formModel.logoUrl;
-          if (logoUrl != null) {
-            self.fileUrlLogo =
-              logoUrl + "?x-oss-process=image/resize,m_lfit,h_200";
+              logo + "?x-oss-process=image/resize,m_lfit,h_400,w_400";
           }
         } else {
           self.$message.error(jsonData.message + "");
@@ -434,4 +510,29 @@ export default {
     "el-select-tree": SelectTree,
   },
 };
-</script>
+</script>
+<style>
+.avatar-uploader .el-upload {
+  border: 1px dashed #d9d9d9;
+  border-radius: 6px;
+  cursor: pointer;
+  position: relative;
+  overflow: hidden;
+}
+.avatar-uploader .el-upload:hover {
+  border-color: #409eff;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: 178px;
+  height: 178px;
+  line-height: 178px;
+  text-align: center;
+}
+.avatar {
+  width: 178px;
+  height: 178px;
+  display: block;
+}
+</style>

+ 338 - 200
src/views/base/companyInfo-list.vue

@@ -1,88 +1,100 @@
 <template>
-  <div>
+  <div style="padding-left: 5px">
     <el-breadcrumb separator=">">
       <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
       <el-breadcrumb-item>
-        <a href="#">系统管理</a>
+        <a href="#">基础信息管理</a>
       </el-breadcrumb-item>
       <el-breadcrumb-item>
-        <a href="/companyInfo">企业管理</a>
+        <a href="/companyInfo">单位管理</a>
       </el-breadcrumb-item>
     </el-breadcrumb>
     <el-divider></el-divider>
-    <!--
-      要resetFields起作用,必须配置:model和prop
-    -->
     <el-form
       ref="queryForm"
       :model="queryModel"
       inline
       class="demo-form-inline"
     >
-      <el-form-item label="企业名称" prop="companyName">
-        <el-input
-          type="text"
-          size="mini"
-          v-model="queryModel.companyName"
-        ></el-input>
+      <el-form-item label="单位名称" prop="name">
+        <el-input type="text" size="mini" v-model="queryModel.name"></el-input>
       </el-form-item>
-      <el-form-item label="所在区域" prop="region">
-        <el-select
-          v-model="queryModel.region"
+      <el-form-item label="上级单位" prop="parentId">
+        <!-- <el-select
+          size="mini"
+          v-model="queryModel.parentId"
           filterable
           placeholder="请选择"
-          style="width: 120px"
-          size="mini"
+          style="width:280px"
         >
           <el-option
-            v-for="region in regionResult"
-            :key="region.value"
-            :label="region.name"
-            :value="region.value"
+            v-for="company in companyResult"
+            :key="company.id"
+            :label="company.name"
+            :value="company.id"
           ></el-option>
-        </el-select>
+        </el-select>-->
+        <el-select-tree
+          size="mini"
+          :props="props"
+          :options="companyResult"
+          v-model="queryModel.parentId"
+          height="200"
+        ></el-select-tree
+        >&nbsp;
+        <el-checkbox v-model="queryModel.subordinate"
+          >是否包含下级单位</el-checkbox
+        >
       </el-form-item>
-      <el-form-item label="企业类型" prop="type">
+      <el-form-item label="适用场景" prop="sceneId">
         <el-select
-          v-model="queryModel.type"
+          v-model="queryModel.sceneId"
           filterable
           placeholder="请选择"
-          style="width: 120px"
+          style="width: 110px"
           size="mini"
         >
           <el-option
-            v-for="type in typeResult"
-            :key="type.value"
-            :label="type.name"
-            :value="type.value"
+            v-for="result in sceneData"
+            :key="result.id"
+            :label="result.sceneName"
+            :value="result.id"
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="企业规模" prop="scale">
+      <el-form-item label="单位性质" prop="unitType">
+              <el-select
+                v-model="queryModel.unitType"
+                filterable
+                clearable
+                placeholder="请选择"
+                style="width: 110px"
+                size="mini"
+              >
+                <el-option
+                  v-for="result in typeData"
+                  :key="result.id"
+                  :label="result.name"
+                  :value="result.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+      <!-- <el-form-item label="服务场景" prop="type">
         <el-select
-          v-model="queryModel.scale"
+          v-model="queryModel.type"
           filterable
           placeholder="请选择"
-          style="width: 120px"
+          style="width: 110px"
           size="mini"
         >
           <el-option
-            v-for="scale in scaleResult"
-            :key="scale.value"
-            :label="scale.name"
-            :value="scale.value"
+            v-for="result in sceneData"
+            :key="result.id"
+            :label="result.sceneName"
+            :value="result.id"
           ></el-option>
         </el-select>
-      </el-form-item>
-      <el-form-item label="所属行业" prop="industry">
-        <el-select-tree
-            :props="props"
-            :options="industryList"
-            v-model="queryModel.industry"
-            size="mini"
-            height="200"
-          ></el-select-tree>
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item>
         <el-button
           type="primary"
@@ -115,7 +127,7 @@
         type="primary"
         size="small"
         plain
-        icon="el-icon-circle-plus"
+        icon="el-icon-remove"
         :disabled="multipleSelection.length == 0"
         @click="handleBatchDelete"
         >删除选中项</el-button
@@ -130,124 +142,117 @@
       >
     </el-row>
     <el-table
+      ref="formTable"
       :data="tableData"
-      style="min-height: 400px"
       v-loading="loading"
       stripe
+      :height="tableHeight"
       @sort-change="sortChange"
       @selection-change="handleSelectionChange"
     >
       <el-table-column type="selection" width="55"></el-table-column>
       <el-table-column
-        type="index"
-        label="序号"
-        :index="indexMethod"
-        width="50"
+        prop="parentName"
+        label="上级单位"
+        width="200"
       ></el-table-column>
+      <el-table-column prop="sortNo" label="本级" width="100"></el-table-column>
       <el-table-column
-        prop="regionN"
-        label="所在地区"
-        width="100"
+        prop="name"
+        label="单位名称"
+        width="200"
       ></el-table-column>
       <el-table-column
-        prop="typeN"
-        label="企业类型"
+        prop="fullName"
+        label="全称"
         width="120"
-        show-overflow-tooltip
       ></el-table-column>
       <el-table-column
-        prop="scaleN"
-        label="企业规模"
+        prop="unitTypeName"
+        label="单位性质"
         width="120"
       ></el-table-column>
       <el-table-column
-        prop="industryName"
-        label="所属行业"
-        width="150"
+        prop="sceneName"
+        label="场景值"
+        width="90"
       ></el-table-column>
       <el-table-column
-        prop="positionName"
-        label="企联职务"
-        width="150"
+        prop="typeName"
+        label="服务场景"
+        width="90"
       ></el-table-column>
       <el-table-column
-        prop="companyName"
-        label="企业名称"
-        width="180"
-        show-overflow-tooltip
+        prop="regionName"
+        label="地区"
+        width="90"
       ></el-table-column>
       <el-table-column
-        prop="creditCode"
-        label="社会信用代码"
-        width="180"
-        show-overflow-tooltip
+        prop="typeName"
+        label="单位类别"
+        width="90"
       ></el-table-column>
       <el-table-column
-        prop="address"
-        label="企业地址"
-        width="180"
-        show-overflow-tooltip
+        prop="remark"
+        sort-by="remark_"
+        width="350"
+        label="备注"
       ></el-table-column>
-      <el-table-column
-        prop="logoUrl"
-        label="企业logo"
-        width="180"
-        show-overflow-tooltip
-      >
-        <template slot-scope="{ row }">
-          <a :href="row.logoUrl" target="_blank">
-            <el-avatar
-              :size="48"
-              shape="circle"
-              :src="
-                row.logoUrl +
-                '?x-oss-process=image/resize,m_fill,w_64,h_64'
-              "
-              :key="row.id"
-            ></el-avatar>
-          </a>
+      <el-table-column prop="isMobilePayment"  label="手机支付" >
+        <template slot-scope="{row}">
+            <el-switch
+                v-if="row.isAdmin"
+                v-model="row.isMobilePayment"
+                active-color="#13ce66"
+                inactive-color="#ff4949"
+                @change="handlChange(row)">
+            </el-switch>
         </template>
       </el-table-column>
-      <el-table-column
-        prop="businessLicenseUrl"
-        label="营业执照"
-        width="180"
-        show-overflow-tooltip
-      >
+      <el-table-column label="操作" width="350" fixed="right">
         <template slot-scope="{ row }">
-          <a :href="row.businessLicenseUrl" target="_blank">
-            <el-avatar
-              :size="48"
-              shape="circle"
-              :src="
-                row.businessLicenseUrl +
-                '?x-oss-process=image/resize,m_fill,w_64,h_64'
-              "
-              :key="row.id"
-            ></el-avatar>
-          </a>
-        </template>
-      </el-table-column>
-      <el-table-column
-        prop="companyIntroduction"
-        label="企业介绍"
-        width="180"
-        show-overflow-tooltip
-      ></el-table-column>
-      <el-table-column
-        prop="enterpriserIntroduction"
-        label="企业家介绍"
-        width="180"
-        show-overflow-tooltip
-      ></el-table-column>
-      <el-table-column label="操作" width="180" fixed="right">
-        <template slot-scope="{ row }">
-          <el-button size="mini" type="warning" @click="handleEdit(row)"
-            >编辑</el-button
-          >
-          <el-button size="mini" type="danger" @click="handleDelete(row)"
-            >删除</el-button
-          >
+          <el-row>
+            <el-col>
+              <el-link
+                type="primary"
+                :underline="false"
+                @click="handleEdit(row)"
+                >编辑</el-link
+              >-
+              <el-link
+                type="danger"
+                :underline="false"
+                @click="handleDelete(row)"
+                >删除</el-link
+              >-
+              <el-link
+                type="primary"
+                :underline="false"
+                @click="bindDevice(row)"
+                >绑定设备</el-link
+              >-
+              <el-popover
+                placement="left"
+                width="300"
+                trigger="click"
+                @show="openQRCode(row)"
+                @hide="closeQRCode(row)"
+              >
+                <div
+                  :ref="'qrcode_' + row.id"
+                  style="width: 300px; height: 300px"
+                ></div>
+                <el-link type="primary" :underline="false" slot="reference"
+                  >健康公示二维码</el-link
+                > </el-popover
+              >-
+              <span v-if="row.type != null && row.type != ''">
+                <el-link type="primary" :underline="false" @click="openDP(row)"
+                  >大屏网址</el-link
+                >
+              </span>
+            </el-col>
+          </el-row>
         </template>
       </el-table-column>
     </el-table>
@@ -264,9 +269,12 @@
       :businessKey="businessKey"
       :title="modalTitle"
       @close="onDetailModalClose"
-      width="100%"
     ></companyInfo-detail>
-    <!--批量导入S-->
+    <companyDeviceRelation-list
+      v-if="showDeviceModal"
+      :companyId="companyId"
+      @close="onDetailModalClose"
+    ></companyDeviceRelation-list>
     <el-dialog
       title="导入"
       :visible.sync="batchImportVisible"
@@ -277,7 +285,7 @@
       <el-form label-width="150px">
         <el-form-item label="模板下载">
           <el-link
-            href="http://rccs.oss-cn-hangzhou.aliyuncs.com/enterprise-federation/%E5%AF%BC%E5%85%A5%E4%BC%81%E4%B8%9A%E6%A8%A1%E6%9D%BF.xlsx"
+            href="http://rccs.oss-cn-hangzhou.aliyuncs.com/smart/companyInfo/2020/4/13111357680.xls"
             type="primary"
             target="_blank"
             >点击下载模板</el-link
@@ -286,7 +294,7 @@
         <el-form-item label="上传文件">
           <el-upload
             class="upload-demo"
-            accept=".xlsx"
+            accept=".xls"
             :action="uploadUrlXls"
             :data="uploadXlsData"
             :headers="headers"
@@ -321,30 +329,33 @@
 </template>
 <script>
 import Constant from "@/constant";
-import CompanyInfoDetail from "./companyInfo-detail";
+import companyInfoDetail from "./companyInfo-detail";
 import companyInfoApi from "@/api/base/companyInfo";
 import dataDictionaryApi from "@/api/sys/dataDictionary";
 import SelectTree from "@/components/SelectTree";
-import NProgress from "nprogress"; // progress bar
-import "nprogress/nprogress.css"; // progress bar style
+import QRCode from "qrcodejs2";
 
 import { getToken } from "@/utils/auth"; // get token from cookie
+import NProgress from "nprogress"; // progress bar
+import "nprogress/nprogress.css"; // progress bar style
 
 export default {
   name: "BaseCompanyInfoList",
   data() {
     var self = this;
-
     return {
+      activeName: "list",
       queryModel: {
-        companyName: "",
+        name: "",
+        parentId: "",
+        subordinate: false,
+        sceneId: "",
         type: "",
-        scale: "",
-        industry: "",
-        region: "",
+        unitType:""
       },
       loading: false,
       tableData: [],
+      treeData: [],
       pageIndex: 1,
       pageSize: 10,
       totalPages: 0,
@@ -356,11 +367,17 @@ export default {
       showModal: false,
       modalTitle: "",
       businessKey: "",
-      industryResult: [],
-      regionResult: [],
-      scaleResult: [],
-      typeResult: [],
-      //导入S
+      tableHeight: 300,
+      showDeviceModal: false,
+      companyId: "",
+      qrCode: "",
+      companyResult: [],
+      props: {
+        // 配置项(必选)
+        value: "id",
+        label: "name",
+        children: "children",
+      },
       batchImportVisible: false,
       batchImportFileList: [],
       uploadUrlXls: Constant.serverUrl + "/base/companyInfo/importXls",
@@ -372,49 +389,60 @@ export default {
         Authorization: getToken(),
       },
       xlsLoading: false,
-      //导入E
-      industryList:[],
-      props: {
-        // 配置项(必选)
-        value: "id",
-        label: "industryName",
-      },
+      sceneData: [],
+      typeData:[]
     };
   },
   created() {
     var self = this;
 
+    companyInfoApi.treeList().then(function (response) {
+      var jsonData = response.data;
+      if (jsonData.result) {
+        self.companyResult = jsonData.data;
+      }
+    });
 
-    dataDictionaryApi
-      .findByCatalogName({
-        catalogName: "企业类型",
-      })
-      .then((response) => {
-        var jsonData = response.data;
-        this.typeResult = jsonData.data;
-      });
+    var formData = new FormData();
+    formData.append("catalogName", "单位性质");
+    dataDictionaryApi.findByCatalogName(formData).then((response) => {
+      var jsonData = response.data;
+      this.typeData = jsonData.data;
+    });
 
-    dataDictionaryApi
-      .findByCatalogName({
-        catalogName: "企业规模",
-      })
-      .then((response) => {
-        var jsonData = response.data;
-        this.scaleResult = jsonData.data;
+    this.changePage(1);
+    this.loadTree();
+  },
+  methods: {
+    getSelectedValue(value) {
+      this.queryModel.parentId = value;
+    },
+    loadTree() {
+      companyInfoApi.treeList().then((resp) => {
+        var jsonData = resp.data;
+
+        if (jsonData.result) {
+          this.treeData = jsonData.data;
+        } else {
+          this.$message.error(jsonData.message + "");
+        }
       });
+    },
+    loadChildren(tree, treeNode, resolve) {
+      console.log(tree);
+
+      var formData = new FormData();
+      formData.append("parentId", tree.id);
+
+      companyInfoApi.loadChildren(formData).then((resp) => {
+        var jsonData = resp.data;
 
-    dataDictionaryApi
-      .findByCatalogName({
-        catalogName: "区域",
-      })
-      .then((response) => {
-        var jsonData = response.data;
-        this.regionResult = jsonData.data;
+        if (jsonData.result) {
+          resolve(jsonData.data);
+        } else {
+          this.$message.error(jsonData.message + "");
+        }
       });
-  },
-  methods: {
-    indexMethod(index) {
-      return (this.pageIndex - 1) * this.pageSize + (index + 1);
     },
     changePage(pageIndex) {
       var self = this;
@@ -426,15 +454,27 @@ export default {
 
       formData.append("pageIndex", self.pageIndex);
       formData.append("pageSize", self.pageSize);
-      formData.append("companyName", self.queryModel.companyName);
-      formData.append("type", self.queryModel.type);
-      formData.append("scale", self.queryModel.scale);
-      formData.append("region", self.queryModel.region);
 
-      if (self.queryModel.industry != null) {
-        formData.append("industry", self.queryModel.industry);
+      if (self.queryModel.name != null) {
+        formData.append("name", self.queryModel.name);
+      }
+
+      if (self.queryModel.parentId != null) {
+        formData.append("parentId", self.queryModel.parentId);
+      }
+
+      formData.append("subordinate", self.queryModel.subordinate);
+
+      if (self.queryModel.sceneId != null) {
+        formData.append("sceneId", self.queryModel.sceneId);
       }
 
+      formData.append("unitType", self.queryModel.unitType);
+
+      // if (self.queryModel.type != null) {
+      //   formData.append("type", self.queryModel.type);
+      // }
+
       if (this.field != null) {
         formData.append("field", this.field);
       }
@@ -453,6 +493,10 @@ export default {
           self.tableData = jsonData.data;
           self.totalPages = jsonData.totalPages;
           self.totalElements = jsonData.recordsTotal;
+          //45为分页栏的高度
+          //页面高度-列表上面的高度-分页栏高度
+          self.tableHeight =
+            window.innerHeight - self.$refs.formTable.$el.offsetTop - 100;
         })
         .catch((error) => {
           self.loading = false;
@@ -461,14 +505,10 @@ export default {
     },
     pageSizeChange(pageSize) {
       this.pageSize = pageSize;
-
-      this.$nextTick(() => {
-        this.changePage(this.pageIndex);
-      });
     },
     sortChange(data) {
       this.field = data.column.field;
-      this.direction = data.order;
+      this.direction = data.order == "ascending" ? "asc" : "desc";
 
       this.changePage(this.pageIndex);
     },
@@ -543,11 +583,85 @@ export default {
     onDetailModalClose(refreshed) {
       //保存成功后回调
       this.showModal = false;
+      this.showDeviceModal = false;
 
       if (refreshed) {
         this.changePage(this.pageIndex);
       }
     },
+    bindDevice(record) {
+      //绑定设备
+      this.companyId = record.id;
+      this.showDeviceModal = true;
+    },
+    openQRCode(record) {
+      //el.innerHTML = "";
+      var self = this;
+      self.$refs["qrcode_" + record.id].innerHTML = "";
+      //默认企业版
+      var qrtext =
+        process.env.VUE_APP_COMPANY_HEALTH_WECHAT_QY_URL +
+        "?companyId=" +
+        record.id;
+      var type = record.type;
+      if ("1" == type) {
+        //企业版
+        qrtext =
+          process.env.VUE_APP_COMPANY_HEALTH_WECHAT_QY_URL +
+          "?companyId=" +
+          record.id;
+      } else if ("2" == type) {
+        //校园版
+        qrtext =
+          process.env.VUE_APP_COMPANY_HEALTH_WECHAT_XY_URL +
+          "?companyId=" +
+          record.id;
+      }
+
+      var el = self.$refs["qrcode_" + record.id];
+
+      var qr = new QRCode(el, {
+        text: qrtext,
+        width: 300,
+        height: 300,
+        colorDark: "#333333", //二维码颜色
+        colorLight: "#ffffff", //二维码背景色
+        correctLevel: QRCode.CorrectLevel.L, //容错率,L/M/H
+      });
+    },
+    closeQRCode(record) {
+      self.$refs["qrcode_" + record.id].innerHTML = "";
+    },
+    openDP(record) {
+      var companyId = record.id;
+      var type = record.type;
+      var dpUrl = record.wallUrl;
+      if (dpUrl == "" || dpUrl == null) {
+        if ("1" == type) {
+          //企业版
+          dpUrl =
+            process.env.VUE_APP_COMPANY_HEALTH_QY_URL +
+            "?companyId=" +
+            companyId;
+        } else if ("2" == type) {
+          //校园版
+          dpUrl =
+            process.env.VUE_APP_COMPANY_HEALTH_XY_URL +
+            "?companyId=" +
+            companyId;
+        } else {
+          //企业版
+          dpUrl =
+            process.env.VUE_APP_COMPANY_HEALTH_QY_URL +
+            "?companyId=" +
+            companyId;
+        }
+      } else {
+        //填写了固定地址wallUrl
+        dpUrl = dpUrl + "?companyId=" + companyId;
+      }
+      window.open(dpUrl);
+    },
     beforeUpload(file, fileList) {
       //导入前判断
     },
@@ -559,11 +673,15 @@ export default {
         self.$message.success(response.message);
         this.batchImportFileList = [];
         this.changePage(1);
+        this.uploadCompanyId = "";
+        this.uploadXlsData.companyId = "";
         this.batchImportVisible = false;
       } else {
         //this.$message.error(response.message);
         this.batchImportFileList = [];
         this.changePage(1);
+        this.uploadCompanyId = "";
+        this.uploadXlsData.companyId = "";
 
         if (response.data != null) {
           //下载有错误信息提示的报表
@@ -599,12 +717,32 @@ export default {
         } 个文件`
       );
     },
+
+    handlChange(record){
+
+      var self = this;
+      var formData = new FormData();
+      self.loading = true;
+
+      formData.append("id", record.id);
+      formData.append("isMobilePayment", record.isMobilePayment);
+
+      companyInfoApi.isOpenMobilePayment(formData).then(function (response) {
+          var jsonData = response.data;
+          self.loading = false;
+          if (jsonData.result) {
+              self.changePage(self.pageIndex);
+          }
+          else{
+              self.$message.error(jsonData.message + "");
+          }
+      });
+
+    }
   },
-  mounted: function () {
-    this.changePage(1);
-  },
+  mounted: function () {},
   components: {
-    "companyInfo-detail": CompanyInfoDetail,
+    "companyInfo-detail": companyInfoDetail,
     "el-select-tree": SelectTree,
   },
 };