From 05aec1e9986fbe3e907259bb1a1396f129bd0fa1 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期五, 06 二月 2026 14:14:48 +0800
Subject: [PATCH] 优化

---
 admin/src/components/business/OperaMemberWindow.vue |  274 ++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 173 insertions(+), 101 deletions(-)

diff --git a/admin/src/components/business/OperaMemberWindow.vue b/admin/src/components/business/OperaMemberWindow.vue
index a31bbe4..94700a0 100644
--- a/admin/src/components/business/OperaMemberWindow.vue
+++ b/admin/src/components/business/OperaMemberWindow.vue
@@ -1,97 +1,103 @@
 <template>
   <GlobalWindow
     :title="title"
+    width="50%"
     :visible.sync="visible"
     :confirm-working="isWorking"
     @confirm="confirm"
   >
     <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鏄惁宸插垹闄� 0鏈垹闄� 1宸插垹闄�" prop="deleted">
-        <el-input v-model="form.deleted" placeholder="璇疯緭鍏ユ槸鍚﹀凡鍒犻櫎 0鏈垹闄� 1宸插垹闄�" v-trim/>
+      <el-form-item label="鑰佸笀濮撳悕" prop="name">
+        <el-input   v-model="form.name" placeholder="璇疯緭鍏ュ鍚�" v-trim/>
       </el-form-item>
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="createUser">
-        <el-input v-model="form.createUser" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
+      <el-form-item label="鑰佸笀宸ュ彿" prop="code">
+        <el-input   v-model="form.code" placeholder="璇疯緭鍏ュ伐鍙�" v-trim/>
       </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createTime">
-        <el-date-picker v-model="form.createTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
+      <el-form-item  label="鑱屼笟鐓�" prop="imgurl">
+<!--        <UploadAvatarImage
+            :file="{ imgurlfull: form.fullImgurl, imgurl: form.imgurl }"
+            :uploadData="uploadData"
+            @uploadSuccess="uploadAvatarSuccess"
+        />
+        <p class="tip-warn">
+          寤鸿灏哄锛�750px X 750px锛屼笂闄�6寮�
+          鏀寔png銆乯pg銆乯peg鏍煎紡锛屽ぇ灏忎笉瓒呰繃2M锛屼笂浼犲浘鐗囦笉鍏佽娑夊強鏀挎不鏁忔劅涓庤壊鎯�,
+        </p>-->
+        <div class="upload_wrap">
+          <UploadFaceImg :file="{ imgurlfull: form.fullImgurl, imgurl: form.imgurl }" :uploadData="uploadData"
+                         @uploadSuccess="uploadAvatarSuccess" @uploadEnd="isUploading = false" @uploadBegin="isUploading = true" />
+          <div class="content">
+            <div>1銆佸缓璁昂瀵革細750px X 750px 銆�</div>
+            <div>2銆佹敮鎸乸ng銆乯pg銆乯peg鏍煎紡锛屽ぇ灏忎笉瓒呰繃5M锛屼笂浼犲浘鐗囦笉鍏佽娑夊強鏀挎不鏁忔劅涓庤壊鎯呫��</div>
+          </div>
+        </div>
       </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="updateUser">
-        <el-input v-model="form.updateUser" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
+      <el-form-item label="鎬у埆" prop="sex">
+        <el-radio-group v-model="form.sex"   style="margin-bottom: 20px;">
+          <el-radio-button :label="0">鐢�</el-radio-button>
+          <el-radio-button :label="1">濂�</el-radio-button>
+        </el-radio-group>
       </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="updateTime">
-        <el-date-picker v-model="form.updateTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
+      <el-form-item label="宀椾綅" prop="positon">
+        <el-input   v-model="form.positon" placeholder="璇疯緭鍏ュ矖浣�" v-trim/>
       </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
+      <el-form-item label="浠庝笟骞翠唤" prop="jobYear">
+        <el-input type="number" v-model="form.jobYear" placeholder="璇疯緭鍏ヤ粠涓氬勾浠�" v-trim><template slot="append">骞�</template></el-input>
       </el-form-item>
-      <el-form-item label="澶村儚" prop="coverImage">
-        <el-input v-model="form.coverImage" placeholder="璇疯緭鍏ュご鍍�" v-trim/>
+      <el-form-item label="鏈嶅姟鎴樺尯" prop="zhanquIdList">
+        <el-select    v-model="form.zhanquIdList"  placeholder="璇烽�夋嫨鏈嶅姟鎴樺尯" filterable multiple  clearable  >
+          <el-option
+              v-for="item in cateList.filter(item=>{return item.type==0})"
+              :key="item.id"
+              :value="item.id"
+              :label="item.name"
+          ></el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="openid" prop="openid">
-        <el-input v-model="form.openid" placeholder="璇疯緭鍏penid" v-trim/>
+      <el-form-item label="鍟嗕笟鍖栫被鍨�" prop="bustypeIdList">
+        <el-select    v-model="form.bustypeIdList"  placeholder="璇烽�夋嫨鍟嗕笟鍖栫被鍨�" filterable multiple clearable  >
+          <el-option
+              v-for="item in cateList.filter(item=>{return item.type==1})"
+              :key="item.id"
+              :value="item.id"
+              :label="item.name"
+          ></el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="鏄电О" prop="nickName">
-        <el-input v-model="form.nickName" placeholder="璇疯緭鍏ユ樀绉�" v-trim/>
+      <el-form-item label="鑰佸笀绛夌骇" prop="levelId">
+        <el-select    v-model="form.levelId"  placeholder="璇烽�夋嫨鑰佸笀绛夌骇" filterable  clearable  >
+          <el-option
+              v-for="item in cateList.filter(item=>{return item.type==3})"
+              :key="item.id"
+              :value="item.id"
+              :label="item.name"
+          ></el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="鑱旂郴鐢佃瘽" prop="telephone">
-        <el-input v-model="form.telephone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-trim/>
+      <el-form-item label="鎿呴暱棰嗗煙" prop="fieldIdList">
+        <el-select    v-model="form.fieldIdList"  placeholder="璇烽�夋嫨鎿呴暱棰嗗煙" filterable multiple clearable  >
+          <el-option
+              v-for="item in cateList.filter(item=>{return item.type==2})"
+              :key="item.id"
+              :value="item.id"
+              :label="item.name"
+          ></el-option>
+        </el-select>
       </el-form-item>
-      <el-form-item label="濮撳悕" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鍚�" v-trim/>
+      <el-form-item label="璐圭敤鏍囧噯" prop="fee">
+        <el-input type="number" v-model="form.fee" placeholder="璇疯緭鍏ヨ垂鐢ㄦ爣鍑�" v-trim><template slot="append">鍏�/鍛�</template></el-input>
       </el-form-item>
-      <el-form-item label="鐢ㄥ伐韬唤:0=鏈敵璇凤紱1=鐢宠涓紱2=宸查�氳繃锛�3=鏈�氳繃锛�" prop="workerIdentity">
-        <el-input v-model="form.workerIdentity" placeholder="璇疯緭鍏ョ敤宸ヨ韩浠�:0=鏈敵璇凤紱1=鐢宠涓紱2=宸查�氳繃锛�3=鏈�氳繃锛�" v-trim/>
+      <el-form-item label="鏈嶅姟鍟嗗満" prop="serveNum">
+        <el-input type="number" v-model="form.serveNum" placeholder="璇疯緭鍏ユ湇鍔″晢鍦�" v-trim><template slot="append">涓�</template></el-input>
       </el-form-item>
-      <el-form-item label="璐ц繍韬唤:0=鏈敵璇凤紱1=鐢宠涓紱2=宸查�氳繃锛�3=鏈�氳繃锛�" prop="driverIdentity">
-        <el-input v-model="form.driverIdentity" placeholder="璇疯緭鍏ヨ揣杩愯韩浠�:0=鏈敵璇凤紱1=鐢宠涓紱2=宸查�氳繃锛�3=鏈�氳繃锛�" v-trim/>
-      </el-form-item>
-      <el-form-item label="渚涢寰堢矇:0=鏈敵璇凤紱1=鐢宠涓紱2=宸查�氳繃锛�3=鏈�氳繃锛�" prop="chefIdentity">
-        <el-input v-model="form.chefIdentity" placeholder="璇疯緭鍏ヤ緵椁愬緢绮�:0=鏈敵璇凤紱1=鐢宠涓紱2=宸查�氳繃锛�3=鏈�氳繃锛�" v-trim/>
-      </el-form-item>
-      <el-form-item label="褰撳墠浣欓(鍗曚綅:鍒�)" prop="amount">
-        <el-input v-model="form.amount" placeholder="璇疯緭鍏ュ綋鍓嶄綑棰�(鍗曚綅:鍒�)" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍘嗗彶鎬婚噾棰�(鍗曚綅:鍒�)" prop="totalAmount">
-        <el-input v-model="form.totalAmount" placeholder="璇疯緭鍏ュ巻鍙叉�婚噾棰�(鍗曚綅:鍒�)" v-trim/>
+      <el-form-item label="鑰佸笀绠�浠�" prop="content">
+        <el-input type="textarea" v-model="form.content" placeholder="璇疯緭鍏ヨ�佸笀绠�浠�" v-trim/>
       </el-form-item>
       <el-form-item label="鐘舵��" prop="status">
-        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏈�鍚庣櫥褰曟椂闂�" prop="loginTime">
-        <el-date-picker v-model="form.loginTime" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶鍚庣櫥褰曟椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鎬荤櫥褰曟鏁�" prop="loginTimes">
-        <el-input v-model="form.loginTimes" placeholder="璇疯緭鍏ユ�荤櫥褰曟鏁�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鎬绘帴鍗曢噺" prop="reciveNum">
-        <el-input v-model="form.reciveNum" placeholder="璇疯緭鍏ユ�绘帴鍗曢噺" v-trim/>
-      </el-form-item>
-      <el-form-item label="鎬诲彂鍗曢噺" prop="publishNum">
-        <el-input v-model="form.publishNum" placeholder="璇疯緭鍏ユ�诲彂鍗曢噺" v-trim/>
-      </el-form-item>
-      <el-form-item label="璇勫垎" prop="score">
-        <el-input v-model="form.score" placeholder="璇疯緭鍏ヨ瘎鍒�" v-trim/>
-      </el-form-item>
-      <el-form-item label="瀹氫綅鍦板潃" prop="localtion">
-        <el-input v-model="form.localtion" placeholder="璇疯緭鍏ュ畾浣嶅湴鍧�" v-trim/>
-      </el-form-item>
-      <el-form-item label="绾害" prop="lat">
-        <el-input v-model="form.lat" placeholder="璇疯緭鍏ョ含搴�" v-trim/>
-      </el-form-item>
-      <el-form-item label="缁忓害" prop="lgt">
-        <el-input v-model="form.lgt" placeholder="璇疯緭鍏ョ粡搴�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鐪佷唤" prop="province">
-        <el-input v-model="form.province" placeholder="璇疯緭鍏ョ渷浠�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍩庡競" prop="city">
-        <el-input v-model="form.city" placeholder="璇疯緭鍏ュ煄甯�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍖哄幙" prop="area">
-        <el-input v-model="form.area" placeholder="璇疯緭鍏ュ尯鍘�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏄惁鎺ュ彈鑷姩娲惧崟:0=鍚︼紱1=鏄紱" prop="autoReciveStatus">
-        <el-input v-model="form.autoReciveStatus" placeholder="璇疯緭鍏ユ槸鍚︽帴鍙楄嚜鍔ㄦ淳鍗�:0=鍚︼紱1=鏄紱" v-trim/>
+        <el-radio-group  v-model="form.status" style="margin-bottom: 20px;">
+          <el-radio-button :label="0">鍚敤</el-radio-button>
+          <el-radio-button :label="1">绂佺敤</el-radio-button>
+        </el-radio-group>
       </el-form-item>
     </el-form>
   </GlobalWindow>
@@ -100,47 +106,51 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
+import { findAll as cateList } from '@/api/business/category'
+import UploadFaceImg from '@/components/common/UploadFaceImg'
 export default {
   name: 'OperaMemberWindow',
   extends: BaseOpera,
-  components: { GlobalWindow },
+  components: { GlobalWindow ,UploadFaceImg},
   data () {
     return {
       // 琛ㄥ崟鏁版嵁
+      isUploading: false,
+      cateList: [],
+      uploadData: {
+        folder: 'dianjiang/member'
+      },
       form: {
         id: null,
-        deleted: '',
-        createUser: '',
-        createTime: '',
-        updateUser: '',
-        updateTime: '',
-        remark: '',
-        coverImage: '',
-        openid: '',
-        nickName: '',
-        telephone: '',
+        imgurl: '',
+        fullImgurl: '',
         name: '',
-        workerIdentity: '',
-        driverIdentity: '',
-        chefIdentity: '',
-        amount: '',
-        totalAmount: '',
-        status: '',
-        loginTime: '',
-        loginTimes: '',
-        reciveNum: '',
-        publishNum: '',
-        score: '',
-        localtion: '',
-        lat: '',
-        lgt: '',
-        province: '',
-        city: '',
-        area: '',
-        autoReciveStatus: ''
+        code: '',
+        sex: 0,
+        jobYear: '',
+        positon: '',
+        zhanquIdList: [],
+        bustypeIdList: [],
+        fieldIdList: [],
+        levelId: '',
+        fee: '',
+        status: 0,
+        content: 0,
+        serveNum: '',
+        type: 0
       },
       // 楠岃瘉瑙勫垯
       rules: {
+        name: [{ required: true, message: '璇疯緭鍏ュ鍚�' }],
+        code: [{ required: true, message: '璇疯緭鍏ュ伐鍙�' }],
+        imgurl: [{ required: true, message: '璇蜂笂浼犺亴涓氱収' }],
+        jobYear: [{ required: true, message: '璇烽�夋嫨浠庝笟骞翠唤' }],
+        zhanquIdList: [{ required: true, message: '璇烽�夋嫨鏈嶅姟鎴樺尯' }],
+        bustypeIdList: [{ required: true, message: '璇烽�夋嫨鍟嗕笟鍖栫被鍨�' }],
+        levelId: [{ required: true, message: '璇烽�夋嫨鑰佸笀绛夌骇' }],
+        fieldIdList: [{ required: true, message: '璇烽�夋嫨鎿呴暱棰嗗煙' }],
+        content: [{ required: true, message: '璇疯緭鍏ヨ�佸笀绠�浠�' }],
+        fee: [{ required: true, message: '璇疯緭鍏ヨ垂鐢ㄦ爣鍑�' }]
       }
     }
   },
@@ -149,6 +159,68 @@
       api: '/business/member',
       'field.id': 'id'
     })
+  },
+  methods: {
+    loadCateList () {
+      cateList({
+        status: 0
+      }).then(res => {
+        this.cateList = res
+      })
+    },
+    uploadAvatarSuccess (file) {
+      this.$set(this.form, 'imgurl', file.imgurl)
+      this.$set(this.form, 'fullImgurl', file.imgurlfull)
+    },
+    open (title, target, type) {
+      this.title = title
+      this.visible = true
+      this.loadCateList()
+      this.form.fullImgurl = null
+      this.form.imgurl = null
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        console.log(target.jobYear)
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+      })
+    }
   }
 }
 </script>
+<style lang="scss" scoped>
+.upload_wrap {
+  display: flex;
+  align-items: center;
+
+  .avatar-uploader {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+
+  ::v-deep .avatar {
+    max-width: 90px;
+    max-height: 90px;
+  }
+
+  .content {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    font-size: 12px;
+    color: #999999;
+    margin-left: 12px;
+    line-height: 24px;
+  }
+}
+</style>

--
Gitblit v1.9.3