Forráskód Böngészése

企业信息管理-查看职位未完成

jz.kai 3 éve
szülő
commit
738102e7b8

+ 159 - 105
src/views/base/company-detail.vue

@@ -20,84 +20,112 @@
         :rules="ruleValidate"
         :label-width="'100px'"
       >
-        <el-form-item label="企业名称" prop="name">
-          <el-input
-            v-model="formModel.name"
-            placeholder="请输入企业名称"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="企业类型" prop="type">
-          <el-input
-            v-model="formModel.type"
-            placeholder="请输入企业类型"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="企业规模" prop="scale">
-          <el-input
-            v-model="formModel.scale"
-            placeholder="请输入企业规模"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="所属行业" prop="industry">
-          <el-input
-            v-model="formModel.industry"
-            placeholder="请输入所属行业"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="企业地址" prop="address">
-          <el-input
-            v-model="formModel.address"
-            placeholder="请输入企业地址"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="企业介绍" prop="introduction">
-          <el-input
-            v-model="formModel.introduction"
-            placeholder="请输入企业介绍"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="联系人" prop="contactPerson">
-          <el-input
-            v-model="formModel.contactPerson"
-            placeholder="请输入联系人"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="联系电话" prop="tel">
-          <el-input
-            v-model="formModel.tel"
-            placeholder="请输入联系电话"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
-        
-        <el-form-item label="企业邮箱" prop="email">
-          <el-input
-            v-model="formModel.email"
-            placeholder="请输入企业邮箱"
-            style="width: 300px"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="是否认证" prop="isCertification">
-              <el-radio-group v-model="formModel.isCertification">
-                <el-radio :label="true">是</el-radio>
-                <el-radio :label="false">否</el-radio>
-              </el-radio-group>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="企业名称" prop="name">
+            <el-input
+              v-model="formModel.name"
+              placeholder="请输入企业名称"
+              style="width: 300px"
+            ></el-input>
+          </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: 300px"
+            >
+              <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-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="联系电话" prop="tel">
+            <el-input
+              v-model="formModel.tel"
+              placeholder="请输入联系电话"
+              style="width: 300px"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="所属行业" prop="industry">
+            <el-select
+              v-model="formModel.industry"
+              filterable
+              placeholder="请选择所属行业"
+              style="width: 300px"
+            >
+              <el-option
+                v-for="industry in industryResult"
+                :key="industry.value"
+                :label="industry.name"
+                :value="industry.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="企业地址" prop="address">
+            <el-input
+              type="textarea"
+              :rows="4"
+              v-model="formModel.address"
+              placeholder="请输入企业地址"
+              style="width: 300px"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="LOGO" prop="logo">
+              <el-upload
+                class="avatar-uploader"
+                name="photoFile"
+                :action="uploadUrl"
+                :show-file-list="false"
+                :headers="headers"
+                :data="uploadData"
+                :on-success="handleAvatarSuccess"
+                :before-upload="beforeAvatarUpload"
+              >
+                <img v-if="formModel.logo" :src="fileUrl" class="avatar"/>
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+              </el-upload>
             </el-form-item>
-        <el-form-item label="排序号" prop="sortNo">
-          <el-input-number
-            v-model="formModel.sortNo"
-            placeholder="请输入排序"
-            style="width: 300px"
-            :min="1"
-          ></el-input-number>
-        </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="排序号" prop="sortNo">
+            <el-input-number
+              v-model="formModel.sortNo"
+              placeholder="请输入排序"
+              style="width: 300px"
+              :min="1"
+            ></el-input-number>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="是否认证" prop="isCertification">
+            <el-radio-group v-model="formModel.isCertification">
+              <el-radio :label="true">是</el-radio>
+              <el-radio :label="false">否</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+      </el-row>
       </el-form>
     </div>
     <span slot="footer" class="dialog-footer">
@@ -111,6 +139,8 @@
 <script>
 import Constant from "@/constant";
 import companyApi from "@/api/base/company";
+import dataDictionaryApi from "@/api/sys/dataDictionary";
+import { getToken } from "@/utils/auth";
 
 export default {
   props: ["businessKey", "title"],
@@ -118,43 +148,66 @@ export default {
     return {
       formModel: {},
       ruleValidate: {
-        id: [{ required: true, message: "不能为空", trigger: "blur" }],
-        name: [
-          { required: true, message: "企业名称不能为空", trigger: "blur" },
-        ],
-        type: [
-          { required: true, message: "企业类型不能为空", trigger: "blur" },
-        ],
-        scale: [
-          { required: true, message: "企业规模不能为空", trigger: "blur" },
-        ],
-        industry: [
-          { required: true, message: "所属行业不能为空", trigger: "blur" },
-        ],
-        address: [
-          { required: true, message: "企业地址不能为空", trigger: "blur" },
-        ],
-        introduction: [
-          { required: true, message: "企业介绍不能为空", trigger: "blur" },
-        ],
-        contactPerson: [
-          { required: true, message: "联系人不能为空", trigger: "blur" },
-        ],
+        name: [{ required: true, message: "企业名称不能为空", trigger: "blur" },],
+        scale: [{ required: true, message: "企业规模不能为空", trigger: "blur" },],
+        industry: [{ required: true, message: "所属行业不能为空", trigger: "blur" },],
+        address: [{ required: true, message: "企业地址不能为空", trigger: "blur" },],
         tel: [{ required: true, message: "联系电话不能为空", trigger: "blur" }],
-        email: [
-          { required: true, message: "企业邮箱不能为空", trigger: "blur" },
-        ],
         sortNo: [{ required: true, message: "排序不能为空", trigger: "blur" }],
-        isCertification: [
-          { required: true, message: "是否企业认证不能为空", trigger: "blur" },
-        ],
+        isCertification: [{ required: true, message: "是否企业认证不能为空", trigger: "blur" },],
       },
       showDialog: true,
       loading: false,
       submitting: false,
+      uploadUrl: Constant.serverUrl + "/uploadPicture",
+      uploadData: {
+        subFolder: "personInfo"
+      },
+      fileUrl: "",
+      headers: {
+        Authorization: getToken()
+      },
+      industryResult: [],
+      scaleResult: [],
     };
   },
+  created() {
+    dataDictionaryApi
+    .findByCatalogName({
+      catalogName: "所属行业",
+    })
+    .then((response) => {
+      var jsonData = response.data;
+      this.industryResult = jsonData.data;
+    });
+
+    dataDictionaryApi
+    .findByCatalogName({
+      catalogName: "企业规模",
+    })
+    .then((response) => {
+      var jsonData = response.data;
+      this.scaleResult = jsonData.data;
+    });
+  },
   methods: {
+    handleAvatarSuccess(res, file) {
+      var self = this;
+      self.formModel.logo = res.data;
+      self.fileUrl = res.data + "?x-oss-process=image/resize,m_lfit,h_100,w_100";
+    },
+    beforeAvatarUpload(file) {
+      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!");
+      }
+      return isJPG && isLt2M;
+    },
     closeDialog() {
       this.$emit("close", false);
     },
@@ -210,6 +263,7 @@ export default {
 
         if (jsonData.result) {
           self.formModel = jsonData.data;
+          self.fileUrl = self.formModel.logo + "?x-oss-process=image/resize,m_lfit,h_100,w_100"
         } else {
           self.$message.error(jsonData.message + "");
         }

+ 98 - 32
src/views/base/company-list.vue

@@ -6,7 +6,7 @@
         <a href="#">系统管理</a>
       </el-breadcrumb-item>
       <el-breadcrumb-item>
-        <a href="/company">company管理</a>
+        <a href="/company">企业信息管理</a>
       </el-breadcrumb-item>
     </el-breadcrumb>
     <el-divider></el-divider>
@@ -20,24 +20,43 @@
       class="demo-form-inline"
     >
       <el-form-item label="企业名称" prop="name">
-        <el-input type="text" size="mini" v-model="queryModel.name"></el-input>
+        <el-input type="text" size="mini" v-model="queryModel.name" placeholder="请输入企业名称"></el-input>
       </el-form-item>
-      <el-form-item label="企业类型" prop="type">
-        <el-input type="text" size="mini" v-model="queryModel.type"></el-input>
+      <el-form-item label="企业规模" prop="scale">
+        <el-select
+          v-model="queryModel.scale"
+          filterable
+          placeholder="请选择企业规模"
+          size="mini"
+        >
+          <el-option
+            v-for="scale in scaleResult"
+            :key="scale.value"
+            :label="scale.name"
+            :value="scale.value"
+          ></el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="所属行业" prop="industry">
-        <el-input
-          type="text"
-          size="mini"
+        <el-select
           v-model="queryModel.industry"
-        ></el-input>
+          filterable
+          placeholder="请选择所属行业"
+          size="mini"
+        >
+          <el-option
+            v-for="industry in industryResult"
+            :key="industry.value"
+            :label="industry.name"
+            :value="industry.value"
+          ></el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="是否企业认证" prop="isCertification">
-        <el-input
-          type="text"
-          size="mini"
-          v-model="queryModel.isCertification"
-        ></el-input>
+        <el-select size="mini" v-model="queryModel.isCertification" placeholder="请选择是否企业认证">
+          <el-option label="是" value="1"></el-option>
+          <el-option label="否" value="0"></el-option>
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button
@@ -102,43 +121,38 @@
             <el-avatar
               :size="48"
               shape="circle"
-              :src="
-                row.logo +
-                '?x-oss-process=image/resize,m_fill,w_64,h_64'
-              "
+              :src="row.logo + '?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="scale"
+        prop="scaleName"
         label="企业规模"
-        width="180"
+        width="100"
       ></el-table-column>
       <el-table-column
-        prop="industry"
+        prop="industryName"
         label="所属行业"
         width="180"
       ></el-table-column>
       <el-table-column
         prop="address"
         label="公司地址"
-        width="180"
-      ></el-table-column>
-      <el-table-column
-        prop="isCertification"
-        label="是否企业认证"
-        width="180"
+        width="260"
       ></el-table-column>
+      <el-table-column prop="isCertification" label="是否企业认证" width="150">
+        <template slot-scope="{row}">
+          <span v-html="row.isCertification ? '是': '否'"></span>
+        </template>
+      </el-table-column>
       <el-table-column label="操作">
         <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-button size="mini" type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button size="mini" type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button v-if="row.isCertification" size="mini" type="text" @click="handleProve(row)">查看认证</el-button>
+          <el-button size="mini" type="text" @click="handlePost(row)">查看职位</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -156,12 +170,27 @@
       :title="modalTitle"
       @close="onDetailModalClose"
     ></company-detail>
+    <company-prove
+      v-if="showProve"
+      :businessKey="businessKey"
+      :title="modalTitle"
+      @close="onDetailModalClose"
+    ></company-prove>
+    <company-post
+      v-if="showPost"
+      :businessKey="businessKey"
+      :title="modalTitle"
+      @close="onDetailModalClose"
+    ></company-post>
   </div>
 </template>
 <script>
 import Constant from "@/constant";
 import CompanyDetail from "./company-detail";
+import CompanyProve from "./company-prove";
+import CompanyPost from './company-post.vue';
 import companyApi from "@/api/base/company";
+import dataDictionaryApi from "@/api/sys/dataDictionary";
 import NProgress from "nprogress"; // progress bar
 import "nprogress/nprogress.css"; // progress bar style
 
@@ -188,10 +217,33 @@ export default {
       pageSizeList: [10, 20, 30],
       multipleSelection: [],
       showModal: false,
+      showProve: false,
+      showPost: false,
       modalTitle: "",
       businessKey: "",
+      industryResult: [],
+      scaleResult: [],
     };
   },
+  created() {
+    dataDictionaryApi
+    .findByCatalogName({
+      catalogName: "所属行业",
+    })
+    .then((response) => {
+      var jsonData = response.data;
+      this.industryResult = jsonData.data;
+    });
+
+    dataDictionaryApi
+    .findByCatalogName({
+      catalogName: "企业规模",
+    })
+    .then((response) => {
+      var jsonData = response.data;
+      this.scaleResult = jsonData.data;
+    });
+  },
   methods: {
     changePage(pageIndex) {
       var self = this;
@@ -263,6 +315,16 @@ export default {
       this.businessKey = record.id;
       this.showModal = true;
     },
+    handleProve(record) {
+      this.modalTitle = "认证";
+      this.businessKey = record.id;
+      this.showProve = true;
+    },
+    handlePost(record) {
+      this.modalTitle = "职位";
+      this.businessKey = record.id;
+      this.showPost = true;
+    },
     handleDelete(record) {
       var self = this;
 
@@ -318,6 +380,8 @@ export default {
     onDetailModalClose(refreshed) {
       //保存成功后回调
       this.showModal = false;
+      this.showProve = false;
+      this.showPost = false;
 
       if (refreshed) {
         this.changePage(this.pageIndex);
@@ -329,6 +393,8 @@ export default {
   },
   components: {
     "company-detail": CompanyDetail,
+    "company-prove": CompanyProve,
+    "company-post": CompanyPost,
   },
 };
 </script>

+ 87 - 0
src/views/base/company-post.vue

@@ -0,0 +1,87 @@
+
+<style scoped>
+.user-panel {
+  margin: 10px auto;
+}
+</style>
+<template>
+  <el-dialog
+    :visible.sync="showDialog"
+    :title="title"
+    :modal-append-to-body="false"
+    style="text-align: left"
+    @close="closeDialog"
+    :close-on-click-modal="false"
+  >
+    <div class="user-panel">
+      <el-form
+        ref="form"
+        :model="formModel"
+        :label-width="'100px'"
+      >
+      <el-row>
+        <el-col :span="8">
+          <el-form-item label="企业名称:" prop="name">
+            {{formModel.name}}
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="信用代码:" prop="creditCode">
+            {{formModel.creditCode}}
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="法人代表:" prop="legalPerson">
+            {{formModel.legalPerson}}
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <div style="width:100%; text-align:center;">
+          <img :src="formModel.businessLicenseUrl" class="avatar" style="width:96%;"/>
+      </div>
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="closeDialog">关 闭</el-button>
+    </span>
+  </el-dialog>
+</template>
+<script>
+import Constant from "@/constant";
+import companyApi from "@/api/base/company";
+
+export default {
+  props: ["businessKey", "title"],
+  data() {
+    return {
+      formModel: {},
+      showDialog: true,
+    };
+  },
+  methods: {
+    closeDialog() {
+      this.$emit("close", false);
+    }
+  },
+  mounted: function () {
+    var self = this;
+
+    (function () {
+        return companyApi.edit(self.businessKey);
+    })()
+      .then((response) => {
+        var jsonData = response.data;
+
+        if (jsonData.result) {
+          self.formModel = jsonData.data;
+          // self.fileUrl = self.formModel.logo + "?x-oss-process=image/resize,m_lfit,h_100,w_100"
+        } else {
+          self.$message.error(jsonData.message + "");
+        }
+      })
+      .catch((error) => {
+        self.$message.error(error + "");
+      });
+  },
+};
+</script>

+ 87 - 0
src/views/base/company-prove.vue

@@ -0,0 +1,87 @@
+
+<style scoped>
+.user-panel {
+  margin: 10px auto;
+}
+</style>
+<template>
+  <el-dialog
+    :visible.sync="showDialog"
+    :title="title"
+    :modal-append-to-body="false"
+    style="text-align: left"
+    @close="closeDialog"
+    :close-on-click-modal="false"
+  >
+    <div class="user-panel">
+      <el-form
+        ref="form"
+        :model="formModel"
+        :label-width="'100px'"
+      >
+      <el-row>
+        <el-col :span="8">
+          <el-form-item label="企业名称:" prop="name">
+            {{formModel.name}}
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="信用代码:" prop="creditCode">
+            {{formModel.creditCode}}
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="法人代表:" prop="legalPerson">
+            {{formModel.legalPerson}}
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <div style="width:100%; text-align:center;">
+          <img :src="formModel.businessLicenseUrl" class="avatar" style="width:96%;"/>
+      </div>
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="closeDialog">关 闭</el-button>
+    </span>
+  </el-dialog>
+</template>
+<script>
+import Constant from "@/constant";
+import companyApi from "@/api/base/company";
+
+export default {
+  props: ["businessKey", "title"],
+  data() {
+    return {
+      formModel: {},
+      showDialog: true,
+    };
+  },
+  methods: {
+    closeDialog() {
+      this.$emit("close", false);
+    }
+  },
+  mounted: function () {
+    var self = this;
+
+    (function () {
+        return companyApi.edit(self.businessKey);
+    })()
+      .then((response) => {
+        var jsonData = response.data;
+
+        if (jsonData.result) {
+          self.formModel = jsonData.data;
+          // self.fileUrl = self.formModel.logo + "?x-oss-process=image/resize,m_lfit,h_100,w_100"
+        } else {
+          self.$message.error(jsonData.message + "");
+        }
+      })
+      .catch((error) => {
+        self.$message.error(error + "");
+      });
+  },
+};
+</script>