喻文俊 3 年 前
コミット
f6dea4174a

+ 4 - 4
.env.development

@@ -2,12 +2,12 @@
 ENV = 'development'
 
 # 测试地址 API接口
-# VUE_APP_BASE_API = 'https://zplma-b.caimei365.com'
-VUE_APP_BASE_API = 'http://192.168.2.68:8012'
+VUE_APP_BASE_API = 'https://zplma-b.caimei365.com'
+# VUE_APP_BASE_API = 'http://192.168.2.68:8012'
 
 # 文件上传 API接口地址
-# VUE_APP_UPLOAD_API='https://zplma-b.caimei365.com'
-VUE_APP_UPLOAD_API='http://192.168.2.68:8012'
+VUE_APP_UPLOAD_API='https://zplma-b.caimei365.com'
+# VUE_APP_UPLOAD_API='http://192.168.2.68:8012'
 
 # 二维码生成链接location
 VUE_APP_BASE_SERVER = 'https://www-b.caimei365.com'

BIN
public/favicon.ico


+ 30 - 0
public/logo.svg

@@ -0,0 +1,30 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="218" height="218" viewBox="0 0 218 218">
+  <g id="组_35" data-name="组 35" transform="translate(-16 -13.284)">
+    <circle id="椭圆_1" data-name="椭圆 1" cx="109" cy="109" r="109" transform="translate(16 13.284)" fill="#fff"/>
+    <g id="组_33" data-name="组 33" transform="translate(53.144 36.55)">
+      <g id="组_21" data-name="组 21" transform="translate(29.566)">
+        <path id="路径_84" data-name="路径 84" d="M114.566,116.495l-.757-.757C80.487,102.863,76.7,86.2,76.7,74.842V30.917h3.029c22.72.757,32.565-9.845,32.565-9.845l2.272-2.272,2.272,2.272s9.088,9.845,30.293,9.845h5.3V74.842c0,11.36-3.787,28.021-37.109,40.9Z" transform="translate(-76.7 -18.8)" fill="#bc1724"/>
+        <path id="路径_85" data-name="路径 85" d="M108.119,20s1.515,17.418-7.573,26.506S73.282,63.167,80.1,88.159c0,0-3.029-21.205,12.117-32.565S111.906,37.418,108.119,20Z" transform="translate(-64.194 -10.912)" fill="#fff"/>
+        <path id="路径_86" data-name="路径 86" d="M104.917,20s5.3,21.962-4.544,29.536c-9.845,6.816-26.506,20.448-19.69,35.594,6.816,15.9,19.69,17.418,19.69,17.418S68.565,81.343,98.1,67.711c0,0,10.6-3.787,16.661-2.272,5.3,1.515,1.515-16.661,3.029-18.176s2.272-3.787.757-4.544-6.816-.757-6.816-8.331C111.733,26.059,104.917,20,104.917,20Z" transform="translate(-60.992 -10.912)" fill="#fff"/>
+      </g>
+      <g id="组_24" data-name="组 24" transform="translate(0 104.645)">
+        <path id="路径_88" data-name="路径 88" d="M307.91,146.549v-3.416h29.168v3.416H325.517v7.474h11.471V158.1H325.517v9.523H337.01v3.6H307.9v-3.6h2.566V154.055h4.17v13.569h6.182V146.549Zm56.509,10.936h7.36l1.694,1.694v12.636l-14.289-.008-1.695-1.733v-9.155h-9.252v7.5h6.229v3.389l-9.618,0V159.224l1.694-1.694h12.64l1.694,1.694v9.155h9.206v-7.506h-5.665v-3.389Zm27.711-1.709,7.932,0v-6.991h-5.781V145.96h2.15a16.043,16.043,0,0,1-1.07-3.885h3.762a11.069,11.069,0,0,0,1.208,3.885h3.492A13.136,13.136,0,0,0,404.9,142.2H408.8a17.089,17.089,0,0,1-1.073,3.762h2.552v2.821h-6.182v6.991h7.123v2.821h-6.985q.533,6.719,6.985,11.154v2.827q-6.719-3.226-9.136-8.339a19.093,19.093,0,0,1-9.009,8.339v-2.689q6.323-4.706,6.859-11.292c-2.648,0-5.121.046-7.8.018v13.964H388.77V158.609h-3.492v6.3h2.828v3.622l-6.31.014-.011-22.315h-1.48v-2.821H393.61v2.821h-1.48v9.547Zm-40.292-4.041h12.5c1.434.092,2.111-.671,2.019-2.283V145.96H351.839v5.775Zm-4.169,2.959V143.138h22.986v11.556Zm37.608-8.465v4.3h3.492v-4.3Zm0,6.991.02,2.58h3.493l-.02-2.58ZM417.1,171.5v-2.552h2.69v-8.6h25.268v8.6h2.822V171.5Zm19.178-12.065-3.935,0-.051-16.561h13.976v16.382l-5.092.014v-2.282l1.06,0V154.43h-5.975l.017,5Zm-17.566-1.24V143.138h11.16l0,15.058-11.158,0Zm22.446,4.972h-3.355v5.781h3.355v-5.781Zm-17.336,0v5.781h3.36v-5.781Zm6.99,0v5.781h3.361v-5.781Zm-8.47-7.392h2.42q1.618,0,1.48-1.749v-2.288h-3.9v4.037Zm0-10.082v3.762h3.9V145.69Zm13.982,5.78v.941h5.913v-2.552h-5.913v1.611Zm0-6.182v2.42h5.913v-2.42Z" transform="translate(-307.76 -142.075)" fill="#bc1724" fill-rule="evenodd"/>
+        <g id="组_23" data-name="组 23" transform="translate(0 37.805)">
+          <path id="路径_89" data-name="路径 89" d="M314.686,256.79a1.8,1.8,0,0,1-.35,1.113,1.846,1.846,0,0,1-1.03.653,2.526,2.526,0,0,1,.71.3,2.5,2.5,0,0,1,.554.467,2.035,2.035,0,0,1,.36.574,1.642,1.642,0,0,1,.126.624v.732a2.056,2.056,0,0,1-.232.984,2.327,2.327,0,0,1-.642.753,2.891,2.891,0,0,1-.981.481,4.528,4.528,0,0,1-1.254.165H307.5v-9.761h4.081a3.724,3.724,0,0,1,2.3.617,1.959,1.959,0,0,1,.806,1.637v.66Zm-1.652,3.66a1,1,0,0,0-.5-.89,2.291,2.291,0,0,0-1.254-.316h-1v-1.22h.9q1.458,0,1.457-1.091v-.661a.893.893,0,0,0-.389-.811,2.082,2.082,0,0,0-1.127-.251h-1.613V262.3H311.5a1.985,1.985,0,0,0,1.156-.273.9.9,0,0,0,.379-.775Z" transform="translate(-307.496 -253.795)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_90" data-name="路径 90" d="M347.619,257.278a1.7,1.7,0,0,1-.6,1.378c-1.242,1.036-3.541.906-5.13.9v4.077h-2.021v-9.761h4.314a4.665,4.665,0,0,1,2.545.581,2.025,2.025,0,0,1,.894,1.83v.99Zm-1.885,2.712a7.072,7.072,0,0,1-1.894.282l2.069,3.365h2.079l-2.254-3.647Zm-3.847-1.779h2.293a2.054,2.054,0,0,0,1.039-.223.774.774,0,0,0,.379-.725v-.991q0-1.062-1.438-1.062h-2.274Z" transform="translate(-328.896 -253.795)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_91" data-name="路径 91" d="M375.354,253.792l3.6,9.819h-2.06l-2.759-8.2-1.419,4.392h2.006l.44,1.235h-2.873l-.952,2.57h-2.079l3.692-9.819Z" transform="translate(-348.325 -253.739)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_92" data-name="路径 92" d="M448.465,253.855c2.035,0,1.959-.094,1.959,1.35v5.482a2.7,2.7,0,0,1-.311,1.342,2.538,2.538,0,0,1-.884.912,4.147,4.147,0,0,1-1.39.524,9.229,9.229,0,0,1-1.827.165h-3.536v-9.775Zm0,1.335h-4.023V262.3h1.555a3.473,3.473,0,0,0,1.807-.4,1.321,1.321,0,0,0,.66-1.206Z" transform="translate(-396.735 -253.78)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_93" data-name="路径 93" d="M535.057,253.876V262.3h2.994v1.335h-4.956v-9.761Z" transform="translate(-456.645 -253.795)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_94" data-name="路径 94" d="M560.378,253.876V262.3h2.994v1.335h-4.956v-9.761Z" transform="translate(-473.386 -253.795)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_95" data-name="路径 95" d="M501.294,253.792l3.595,9.819h-2.06l-2.759-8.2-1.418,4.392h2.005l.44,1.235h-2.873l-.953,2.57h-2.079l3.692-9.819Z" transform="translate(-431.587 -253.739)" fill="#bc1724" fill-rule="evenodd"/>
+          <rect id="矩形_6" data-name="矩形 6" width="2.498" height="9.761" transform="translate(93.365 0.081)" fill="#bc1724"/>
+          <path id="路径_96" data-name="路径 96" d="M603.141,253.792l3.6,9.819h-2.06l-2.76-8.2-1.418,4.392H602.5l.44,1.235h-2.873l-.953,2.57h-2.079l3.692-9.819Z" transform="translate(-498.921 -253.739)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_97" data-name="路径 97" d="M634.054,263.634h-1.807v-9.761h3.129l4.178,8.024v-8.024h1.807v9.761c-.6,0-.7,0-1.244,0-1.226,0-1.58.029-2.25-1.081l-3.813-7.074Z" transform="translate(-522.198 -253.793)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_98" data-name="路径 98" d="M406.812,263.634H405v-9.761h3.129l4.178,8.024v-8.024h1.807v9.761c-.6,0-.7,0-1.243,0-1.226,0-1.581.029-2.249-1.081l-3.814-7.074Z" transform="translate(-371.962 -253.793)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_99" data-name="路径 99" d="M668.868,260.733q0-2.735,0-5.472h4.484v.513h1.375v-2.126l-7.869-.011c0,2.765-.006,4.865-.006,7.626,0,1.481.411,2.3,2.347,2.3l5.524-.008v-2.115h-1.375c0,.44.011.5-.582.5h-2.854C668.8,261.939,668.868,261.681,668.868,260.733Z" transform="translate(-545.078 -253.637)" fill="#bc1724" fill-rule="evenodd"/>
+          <path id="路径_100" data-name="路径 100" d="M700.316,259.889V262.3h5.846v1.335h-7.808v-9.761h6.322v1.335h-4.36v2.828h4.816v1.85Z" transform="translate(-565.902 -253.795)" fill="#bc1724" fill-rule="evenodd"/>
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>

+ 1 - 1
src/layout/components/Sidebar/Logo.vue

@@ -28,7 +28,7 @@ export default {
   },
   data() {
     return {
-      title: '正品联盟管理系统',
+      title: '认证通',
       // logo: 'https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png'
       // logo: 'https://zplm-b.caimei365.com/logo.png'
       logo: 'https://zplm-b.caimei365.com/logo.svg'

+ 1 - 1
src/router/modules/auth.js

@@ -10,7 +10,7 @@ const authRoutes = [
     name: 'Auth',
     meta: {
       title: '机构认证',
-      icon: 'el-icon-s-promotion',
+      icon: 'el-icon-s-custom',
       roles: ['admin', 'normal'],
       noCache: true,
       proxy: true,

+ 1 - 1
src/router/modules/doctorAuth.js

@@ -11,7 +11,7 @@ const doctorAuthRoutes = [
     name: 'Doctor',
     meta: {
       title: '医师认证',
-      icon: 'el-icon-s-promotion',
+      icon: 'el-icon-user-solid',
       roles: ['normal'],
       noCache: true,
       proxy: true,

+ 7 - 0
src/router/modules/supplier.js

@@ -38,6 +38,13 @@ const supplierRoutes = [
         name: 'AuthList',
         meta: { title: '查看认证机构', icon: 'el-icon-menu', roles: ['admin'], noCache: true, id: 43 }
       },
+      {
+        hidden: true,
+        path: 'auth-detail',
+        component: () => import('@/views/authentic/supplier/auth/detail'),
+        name: 'AuthList',
+        meta: { title: '认证机构详情', icon: 'el-icon-menu', roles: ['admin'], noCache: true, id: 45 }
+      },
       {
         hidden: true,
         path: 'auth-product-list',

+ 8 - 0
src/utils/validate.js

@@ -104,3 +104,11 @@ export function isSnCode(arg) {
   return reg.test(arg)
 }
 
+/**
+ * @param {String} arg
+ * @returns {Boolean}
+ */
+export function isPoint(arg) {
+  const reg = /^[0-9|\.]{1,},[0-9|\.]{1,}$/
+  return reg.test(arg)
+}

+ 15 - 1
src/views/authentic/auth/add.vue

@@ -75,6 +75,7 @@ import UploadImage from '@/components/UploadImage'
 import { mapGetters } from 'vuex'
 import { saveBrandAuth } from '@/api/auth'
 import { getAddress } from '@/api/common'
+import { isPoint } from '@/utils/validate'
 export default {
   components: {
     // Location
@@ -82,6 +83,19 @@ export default {
     UploadImage
   },
   data() {
+    var validatePoint = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('经纬度坐标不能为空'))
+      } else {
+        if (isPoint(value)) {
+          this.$refs.ruleForm.validateField('point')
+        } else {
+          callback('经纬度坐标格式不正确,(例如:114.095294,22.536004)')
+        }
+        callback()
+      }
+    }
+
     return {
       dialogMapVisible: false,
       point: {},
@@ -102,7 +116,7 @@ export default {
         name: [{ required: true, message: '机构名称不能为空', trigger: ['blur', 'change'] }],
         address: [{ required: true, message: '地址不能为空', trigger: 'change', type: 'array' }],
         fullAddress: [{ required: true, message: '详细不能为空', trigger: ['blur', 'change'] }],
-        point: [{ required: true, message: '地址坐标不能为空', trigger: ['blur', 'change'] }],
+        point: [{ validator: validatePoint, trigger: ['blur', 'change'] }],
         mobile: [{ required: true, message: '联系方式不能为空', trigger: ['blur', 'change'] }],
         logoImage: [{ required: true, message: '请上传机构logo', trigger: 'change' }],
         banner: [{ required: true, message: '请至少上传一张banner图片', trigger: 'change' }]

+ 16 - 1
src/views/authentic/auth/edit.vue

@@ -76,6 +76,8 @@ import UploadImage from '@/components/UploadImage'
 import { mapGetters } from 'vuex'
 import { saveBrandAuth, getAuthFormData } from '@/api/auth'
 import { getAddress } from '@/api/common'
+import { isPoint } from '@/utils/validate'
+
 export default {
   components: {
     // Location
@@ -83,6 +85,19 @@ export default {
     UploadImage
   },
   data() {
+    var validatePoint = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('经纬度坐标不能为空'))
+      } else {
+        if (isPoint(value)) {
+          this.$refs.ruleForm.validateField('point')
+        } else {
+          callback('经纬度坐标格式不正确,(例如:114.095294,22.536004)')
+        }
+        callback()
+      }
+    }
+
     return {
       dialogMapVisible: false,
       point: {},
@@ -106,7 +121,7 @@ export default {
         name: [{ required: true, message: '机构名称不能为空', trigger: ['blur', 'change'] }],
         address: [{ required: true, message: '地址不能为空', trigger: 'change', type: 'array' }],
         fullAddress: [{ required: true, message: '详细不能为空', trigger: ['blur', 'change'] }],
-        point: [{ required: true, message: '地址坐标不能为空', trigger: ['blur', 'change'] }],
+        point: [{ validator: validatePoint, trigger: ['blur', 'change'] }],
         mobile: [{ required: true, message: '联系方式不能为空', trigger: ['blur', 'change'] }],
         logoImage: [{ required: true, message: '请上传机构logo', trigger: 'change' }],
         banner: [{ required: true, message: '请至少上传一张banner图片', trigger: 'change' }]

+ 4 - 1
src/views/authentic/doctor/index.vue

@@ -148,7 +148,10 @@ export default {
     }
   },
   computed: {
-    ...mapGetters(['authUserId', 'proxyInfo'])
+    ...mapGetters(['authUserId', 'proxyInfo']),
+    isProxy() {
+      return this.proxyInfo || this.userIdentity !== 1
+    }
   },
   created() {
     this.getList()

+ 2 - 2
src/views/authentic/review/auth/authList.vue

@@ -51,7 +51,7 @@
       cell-class-name="table-cell"
     >
       <el-table-column label="序号" :index="indexMethod" type="index" width="80" align="center" />
-      <el-table-column prop="authParty" label="授权机构" align="center" />
+      <el-table-column prop="authParty" label="机构名称" align="center" />
       <el-table-column label="审核状态" width="220px" align="center">
         <template slot-scope="{ row }">
           <el-tag v-if="row.auditStatus === 2" size="small" type="warning">待审核</el-tag>
@@ -99,7 +99,7 @@
       <el-table-column label="操作" width="240px" align="center">
         <template slot-scope="{ row }">
           <el-button
-            v-if="row.auditStatus === 2"
+            v-if="row.auditStatus !== 1"
             type="warning"
             size="mini"
             style="margin-right:5px"

+ 2 - 1
src/views/authentic/review/auth/shopList.vue

@@ -85,7 +85,8 @@
       </el-table-column>
       <el-table-column label="操作" width="240px" align="center">
         <template slot-scope="{row}">
-          <el-button v-if="row.auditStatus === 2" type="primary" icon="el-icon-s-check" size="mini" @click="$_navigationTo(`auth-shop-detail?id=${row.productId}&authId=${listQuery.authId}`)">审核</el-button>          <span v-else class="status success el-icon-check">&nbsp;已审核</span>
+          <el-button v-if="row.auditStatus !== 1" type="primary" icon="el-icon-s-check" size="mini" @click="$_navigationTo(`auth-shop-detail?id=${row.productId}&authId=${listQuery.authId}`)">审核</el-button>
+          <span v-else class="status success el-icon-check">&nbsp;已审核</span>
         </template>
       </el-table-column>
     </el-table>

+ 1 - 1
src/views/authentic/review/doc/articleList.vue

@@ -85,7 +85,7 @@
       <el-table-column label="操作" width="150px" align="center">
         <template slot-scope="{row}">
           <el-button
-            v-if="row.auditStatus===2"
+            v-if="row.auditStatus !== 1"
             type="primary"
             size="mini"
             style="margin-right:5px"

+ 1 - 1
src/views/authentic/review/doc/imageList.vue

@@ -78,7 +78,7 @@
       <el-table-column label="操作" width="150px" align="center">
         <template slot-scope="{row}">
           <el-button
-            v-if="row.auditStatus===2"
+            v-if="row.auditStatus !== 1"
             type="primary"
             size="mini"
             style="margin-right:5px"

+ 1 - 1
src/views/authentic/review/doc/videoList.vue

@@ -78,7 +78,7 @@
       <el-table-column label="操作" width="150px" align="center">
         <template slot-scope="{row}">
           <el-button
-            v-if="row.auditStatus===2"
+            v-if="row.auditStatus !== 1"
             type="primary"
             size="mini"
             style="margin-right:5px"

+ 14 - 2
src/views/authentic/review/doctor/doctorDetail.vue

@@ -14,6 +14,7 @@
         <el-image
           style="width: 140px; height: 140px"
           :src="doctorInfo.doctorImage"
+          :preview-src-list="doctorImgList"
         />
       </el-form-item>
       <el-form-item label="轮播图:" prop="banner">
@@ -22,6 +23,7 @@
           :key="index"
           style="width: 140px; height: 140px"
           :src="image"
+          :preview-src-list="bannerImgList"
         />
       </el-form-item>
 
@@ -39,6 +41,7 @@
                 <el-image
                   style="width: 140px; height: 140px"
                   :src="equipment.image"
+                  :preview-src-list="equipmentImgList"
                 />
               </el-form-item>
             </el-form>
@@ -47,7 +50,7 @@
       </el-form-item>
 
       <!-- 审核表单 -->
-      <el-form-item label="审核状态:">
+      <el-form-item v-if="type === 'audit'" label="审核状态:">
         <el-radio-group v-model="formData.auditStatus">
           <el-radio :label="1">通过</el-radio>
           <el-radio :label="0">不通过</el-radio>
@@ -91,7 +94,11 @@ export default {
       },
       formRules: {
         invalidReason: { required: true, message: '不通过原因不能为空', tigger: 'blur' }
-      }
+      },
+      type: 'audit',
+      doctorImgList: [],
+      bannerImgList: [],
+      equipmentImgList: []
     }
   },
   computed: {
@@ -99,6 +106,7 @@ export default {
   },
   created() {
     this.doctorId = this.formData.doctorId = parseInt(this.$route.query.id)
+    this.type = this.$route.query.type
     this.initFormData()
   },
   methods: {
@@ -116,6 +124,10 @@ export default {
       this.doctorInfo.bannerList = data.bannerList
       this.doctorInfo.doctorImage = data.doctorImage
       this.doctorInfo.equipmentList = data.equipmentList
+
+      this.doctorImgList = [data.doctorImage]
+      this.bannerImgList = data.bannerList
+      this.equipmentImgList = data.equipmentList.map(item => item.image)
     },
 
     // 提交审核信息

+ 6 - 15
src/views/authentic/review/doctor/doctorList.vue

@@ -60,23 +60,13 @@
         </template>
       </el-table-column>
 
-      <el-table-column label="上线状态" width="140px" align="center">
+      <el-table-column label="审核时间" width="250px" align="center">
         <template slot-scope="{row}">
-          <!-- 只有审核通过了才能操作上下线 auditStatus :审核状态 -->
-          <template v-if="row.auditStatus === 1">
-            <template v-if="row.status === 0">
-              <span style="margin-right:10px;" class="status danger">已下线</span>
-            </template>
-            <template v-else>
-              <span style="margin-right:10px;" class="status success ">已上线</span>
-            </template>
-          </template>
-          <template v-else>
-            <!-- <el-tag type="warning">待上线</el-tag> -->
-            <span style="margin-right:10px;" class="status warning">待上线</span>
-          </template>
+          <span v-if="row.auditStatus!==2">{{ row.auditTime | formatTime }}</span>
+          <span v-else>—</span>
         </template>
       </el-table-column>
+
       <el-table-column label="审核人" align="center">
         <template slot-scope="{row}">
           <span v-if="row.auditStatus!==2">{{ row.auditBy }}</span>
@@ -87,9 +77,10 @@
       <!-- <el-table-column v-if="false" label="创建人" width="180px" align="center" prop="createBy" /> -->
       <el-table-column label="操作" align="center" width="240px" class-name="small-padding fixed-width">
         <template slot-scope="{ row }">
-          <el-button type="primary" size="mini" @click="$_navigationTo(`doctor-detail?id=${row.doctorId}`)">
+          <el-button v-if="row.auditStatus !== 1" type="primary" size="mini" @click="$_navigationTo(`doctor-detail?id=${row.doctorId}`)">
             审核
           </el-button>
+          <span v-else class="status success el-icon-check">&nbsp;已审核</span>
         </template>
       </el-table-column>
     </el-table>

+ 299 - 0
src/views/authentic/supplier/auth/detail.vue

@@ -0,0 +1,299 @@
+<template>
+  <div class="club-edit">
+    <el-form ref="submitForm" class="club-edit-form" label-width="120px" :model="formData" :rules="rules">
+      <el-form-item label="机构名称:" prop="name">
+        <el-input v-model="formData.name" placeholder="请输入机构名称" disabled />
+      </el-form-item>
+      <el-form-item label="所在地区:" prop="address">
+        <el-cascader
+          ref="cascader"
+          v-model="formData.address"
+          disabled
+          :class="{ display: cascaderDisplay }"
+          clearable
+          :props="cascaderProps"
+          style="width: 100%"
+          :placeholder="cascaderPlaceholder"
+          @change="handleChange"
+        />
+      </el-form-item>
+      <el-form-item label="详细地址:" prop="fullAddress">
+        <el-input v-model="formData.fullAddress" placeholder="请输入详细地址" disabled />
+      </el-form-item>
+      <el-form-item label="经纬度:" prop="point">
+        <el-input v-model="formData.point" placeholder="请输入经纬度 (格式:纬度,经度,可通过右侧地图小按钮获取)" disabled>
+          <el-button slot="append" icon="el-icon-map-location" />
+        </el-input>
+      </el-form-item>
+      <el-form-item label="联系方式:" prop="mobile">
+        <el-input v-model="formData.mobile" placeholder="请输入联系方式" disabled />
+      </el-form-item>
+      <el-form-item label="机构logo:" prop="logoImage">
+        <el-input v-show="false" v-model="formData.logoImage" disabled />
+        <upload-image
+          tip="建议尺寸:242px * 242px"
+          :image-list="logoList"
+          :before-upload="beforeLogoUpload"
+          @success="uploadLogoSuccess"
+          @remove="handleLogoRemove"
+        />
+      </el-form-item>
+      <el-form-item label="轮播图:" prop="banner">
+        <el-input v-show="false" v-model="formData.banner" disabled />
+        <upload-image
+          tip="至少上传一张,最多6张;建议尺寸:542px * 542px"
+          :image-list="bannerList"
+          :before-upload="beforeBannerUpload"
+          :limit="1"
+          @success="uploadBannerSuccess"
+          @remove="handleBannerRemove"
+        />
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+// import Location from '@/components/location'
+import AMapUI from '@/components/AMapUI'
+import UploadImage from '@/components/UploadImage'
+import { mapGetters } from 'vuex'
+import { saveBrandAuth, getAuthFormData } from '@/api/auth'
+import { getAddress } from '@/api/common'
+import { isPoint } from '@/utils/validate'
+
+export default {
+  components: {
+    // Location
+    [AMapUI.name]: AMapUI,
+    UploadImage
+  },
+  data() {
+    var validatePoint = (rule, value, callback) => {
+      if (value === '') {
+        callback(new Error('经纬度坐标不能为空'))
+      } else {
+        if (isPoint(value)) {
+          this.$refs.ruleForm.validateField('point')
+        } else {
+          callback('经纬度坐标格式不正确,(例如:114.095294,22.536004)')
+        }
+        callback()
+      }
+    }
+
+    return {
+      dialogMapVisible: false,
+      point: {},
+      value: [],
+      options: [],
+
+      authId: '',
+      disabled: false,
+
+      area: '',
+      formData: {
+        name: '',
+        address: [],
+        fullAddress: '',
+        point: '',
+        mobile: '',
+        logoImage: '',
+        banner: ''
+      },
+      rules: {
+        name: [{ required: true, message: '机构名称不能为空', trigger: ['blur', 'change'] }],
+        address: [{ required: true, message: '地址不能为空', trigger: 'change', type: 'array' }],
+        fullAddress: [{ required: true, message: '详细不能为空', trigger: ['blur', 'change'] }],
+        point: [{ validator: validatePoint, trigger: ['blur', 'change'] }],
+        mobile: [{ required: true, message: '联系方式不能为空', trigger: ['blur', 'change'] }],
+        logoImage: [{ required: true, message: '请上传机构logo', trigger: 'change' }],
+        banner: [{ required: true, message: '请至少上传一张banner图片', trigger: 'change' }]
+      },
+      // logo图片列表
+      logoList: [],
+      // banner图片列表
+      bannerList: [],
+      // 级联选择的地址
+      address: ''
+    }
+  },
+  computed: {
+    ...mapGetters(['authUserId', 'proxyInfo']),
+    // 级联选择器
+    cascaderProps() {
+      return {
+        lazy: true,
+        lazyLoad: async(node, resolve) => {
+          const { level, value = 0 } = node
+          const result = await getAddress({ parentId: value, type: level })
+          const nodes = result.data.map(item => ({ value: item.id, label: item.name, leaf: level >= 2 }))
+          resolve(nodes)
+        }
+      }
+    },
+    cascaderDisplay() {
+      return this.formData.address.length > 0
+    },
+    cascaderPlaceholder() {
+      return this.cascaderDisplay ? this.area : '请选择所在区域'
+    },
+    // 定位使用的地址
+    locationAddress() {
+      return this.address + this.formData.fullAddress
+    }
+  },
+  created() {
+    this.authId = this.$route.query.id
+    this.initFormData()
+  },
+  methods: {
+    // 获取地址
+    initAddress() {
+      return getAddress({
+        parentId: 19,
+        type: 1
+      })
+    },
+
+    // 地图标记变化
+    markerChange(point) {
+      this.formData.point = `${point.lng},${point.lat}`
+    },
+
+    // 数据回显
+    initFormData() {
+      getAuthFormData({ authId: this.authId }).then(res => {
+        console.log(res)
+        this.formData.name = res.data.authParty
+
+        this.formData.fullAddress = res.data.address
+        this.formData.point = res.data.lngAndLat
+        this.formData.mobile = res.data.mobile
+        this.formData.logoImage = res.data.logo
+        this.formData.banner = res.data.bannerList.length || ''
+
+        this.logoList = [{ name: '', url: res.data.logo }]
+        this.bannerList = res.data.bannerList.map(item => ({ name: '', url: item }))
+
+        this.formData.address = [res.data.provinceId, res.data.cityId, res.data.townId]
+        // this.formData.address = '广东省/深圳市/福田区'
+        this.area = res.data.area
+      })
+    },
+
+    // 表单提交保存
+    submit() {
+      this.$refs.submitForm.validate(valide => {
+        if (!valide) return
+
+        console.log(this.formData)
+        const {
+          name: authParty,
+          address: [provinceId, cityId, townId],
+          mobile,
+          logoImage: logo,
+          point: lngAndLat
+        } = this.formData
+
+        const authUserId = this.proxyInfo?.authUserId || this.authUserId
+
+        const data = {
+          authId: parseInt(this.authId),
+          authParty,
+          authUserId,
+          createBy: authUserId,
+          provinceId,
+          cityId,
+          townId,
+          address: this.formData.fullAddress,
+          mobile,
+          logo,
+          lngAndLat
+        }
+
+        data.bannerList = this.bannerList.map(item => item.response ? item.response.data : item.url)
+
+        console.log(data)
+        saveBrandAuth(data)
+          .then(res => {
+            const h = this.$createElement
+            this.$notify.success({
+              title: `修改授权机构`,
+              message: h('i', { style: 'color: #333' }, `已修改授权机构:"${this.formData.name}"`),
+              duration: 3000
+            })
+            this.$refs.submitForm.resetFields()
+            this.$store.dispatch('tagsView/delView', this.$route)
+            this.$router.push('/auth/list')
+          })
+          .catch(err => {
+            this.$message.danger(err.msg)
+          })
+      })
+    },
+    handleChange(e) {
+      const node = this.$refs.cascader.getCheckedNodes()
+      if (node.length <= 0) return
+      this.address = node[0].pathLabels.join()
+    },
+    // logo上传
+    uploadLogoSuccess({ response, file, fileList }) {
+      this.logoList = fileList
+      this.formData.logoImage = fileList[0].response.data
+    },
+    handleLogoRemove({ file, fileList }) {
+      this.logoList = fileList
+      this.formData.logoImage = ''
+    },
+    beforeLogoUpload(file) {
+      const flag = file.size / 1024 < 500
+      if (!flag) {
+        this.$message.error('上传logo图片大小不能超过 500kb!')
+      }
+      return flag
+    },
+
+    // banner上传
+    uploadBannerSuccess({ response, file, fileList }) {
+      this.bannerList = fileList
+      console.log(this.bannerList)
+      this.formData.banner = fileList.length > 0 ? fileList.length : ''
+    },
+    handleBannerRemove({ file, fileList }) {
+      this.bannerList = fileList
+      this.formData.banner = fileList.length > 0 ? fileList.length : ''
+    },
+    beforeBannerUpload(file) {
+      const flag = file.size / 1024 / 1024 < 1
+      if (!flag) {
+        this.$message.error('上传banner图片大小不能超过 1MB!')
+      }
+      return flag
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+#allmap {
+  width: 100%;
+  height: 600px;
+}
+
+.club-edit {
+  margin-bottom: 80px;
+}
+
+.club-edit-form {
+  width: 600px;
+  margin: 0 auto;
+  margin-top: 80px;
+}
+.submit-btn {
+  text-align: center;
+  .el-button {
+    width: 140px;
+  }
+}
+</style>

+ 1 - 1
src/views/authentic/supplier/auth/index.vue

@@ -102,7 +102,7 @@
       <!-- <el-table-column label="创建人" class-name="status-col" width="160px" prop="createBy" /> -->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="{row}">
-          <el-button type="primary" size="mini" @click="$_navigationTo(`/product?id=${row.authId}&authParty=${row.authParty}`)">
+          <el-button type="primary" size="mini" @click="$_navigationTo(`/supplier/auth-detail?id=${row.authId}&authParty=${row.authParty}`)">
             查看
           </el-button>
           <el-button type="primary" size="mini" @click="$_navigationTo(`/supplier/auth-product-list?id=${row.authId}&authParty=${row.authParty}`)">

+ 10 - 1
src/views/login/index.vue

@@ -9,7 +9,7 @@
       label-position="left"
     >
       <div class="title-container">
-        <h3 class="title">正品联盟管理系统</h3>
+        <h3 class="title"><img src="/logo.svg" alt=""><span>认证通</span></h3>
       </div>
 
       <el-form-item prop="username">
@@ -270,6 +270,15 @@ $light_gray: #eee;
       margin: 0px auto 40px auto;
       text-align: center;
       font-weight: bold;
+      span{
+        vertical-align: middle;
+        margin-left: 16px;
+      }
+      img{
+        width: 50px;
+        height: 50px;
+        vertical-align: middle;
+      }
     }
   }