From a2299a6d4a6f99e9c11132138f5d3e9ec68f03ea Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 06 六月 2025 19:19:34 +0800
Subject: [PATCH] 开发更新

---
 admin/src/views/client/components/OperaYwCustomerWindow.vue |  319 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 219 insertions(+), 100 deletions(-)

diff --git a/admin/src/views/client/components/OperaYwCustomerWindow.vue b/admin/src/views/client/components/OperaYwCustomerWindow.vue
index a116521..c966c3f 100644
--- a/admin/src/views/client/components/OperaYwCustomerWindow.vue
+++ b/admin/src/views/client/components/OperaYwCustomerWindow.vue
@@ -1,111 +1,122 @@
 <template>
-  <GlobalWindow
-    :title="title"
-    :visible.sync="visible"
-    :confirm-working="isWorking"
-    @confirm="confirm"
-  >
+  <GlobalWindow :title="title" width="800px" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
     <el-form :model="form" ref="form" :rules="rules">
-      <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator">
-        <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鍒涘缓鏃堕棿" prop="createDate">
-        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor">
-        <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏇存柊鏃堕棿" prop="editDate">
-        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted">
-        <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/>
-      </el-form-item>
-      <el-form-item label="澶囨敞" prop="remark">
-        <el-input v-model="form.remark" placeholder="璇疯緭鍏ュ娉�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鎵�灞炶涓氱紪鐮侊紙鍏宠仈category)" prop="industryId">
-        <el-input v-model="form.industryId" placeholder="璇疯緭鍏ユ墍灞炶涓氱紪鐮侊紙鍏宠仈category)" v-trim/>
-      </el-form-item>
-      <el-form-item label="绫诲瀷 0涓汉 1浼佷笟" prop="type">
-        <el-input v-model="form.type" placeholder="璇疯緭鍏ョ被鍨� 0涓汉 1浼佷笟" v-trim/>
-      </el-form-item>
-      <el-form-item label="瀹㈡埛" prop="name">
-        <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鎵嬫満鍙�" prop="phone">
-        <el-input v-model="form.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" v-trim/>
-      </el-form-item>
-      <el-form-item label="韬唤璇佸彿锛堝姞瀵嗭級" prop="idcardNo">
-        <el-input v-model="form.idcardNo" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙凤紙鍔犲瘑锛�" v-trim/>
-      </el-form-item>
-      <el-form-item label="璇佷欢鏄剧ず淇℃伅" prop="idcardDecode">
-        <el-input v-model="form.idcardDecode" placeholder="璇疯緭鍏ヨ瘉浠舵樉绀轰俊鎭�" v-trim/>
-      </el-form-item>
-      <el-form-item label="瀹㈡埛缂栫爜" prop="code">
-        <el-input v-model="form.code" placeholder="璇疯緭鍏ュ鎴风紪鐮�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鐘舵�� 0姝e父 1绂佺敤" prop="status">
-        <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0姝e父 1绂佺敤" v-trim/>
-      </el-form-item>
-      <el-form-item label="韬唤 0鑰佹澘 1瓒呯骇绠$悊鍛�" prop="highCheckor">
-        <el-input v-model="form.highCheckor" placeholder="璇疯緭鍏ヨ韩浠� 0鑰佹澘 1瓒呯骇绠$悊鍛�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鏈�杩戠櫥褰曟椂闂�" prop="lastLoginDate">
-        <el-date-picker v-model="form.lastLoginDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ渶杩戠櫥褰曟椂闂�"></el-date-picker>
-      </el-form-item>
-      <el-form-item label="鐧诲綍娆℃暟" prop="loginNum">
-        <el-input v-model="form.loginNum" placeholder="璇疯緭鍏ョ櫥褰曟鏁�" v-trim/>
-      </el-form-item>
-      <el-form-item label="绯荤粺鐧诲綍鐢ㄦ埛缂栫爜(鍏宠仈system_user)" prop="userId">
-        <el-input v-model="form.userId" placeholder="璇疯緭鍏ョ郴缁熺櫥褰曠敤鎴风紪鐮�(鍏宠仈system_user)" v-trim/>
-      </el-form-item>
-      <el-form-item label="璇佷欢绫诲瀷 0韬唤璇� 1娓境璇佷欢 2鎶ょ収" prop="idcardType">
-        <el-input v-model="form.idcardType" placeholder="璇疯緭鍏ヨ瘉浠剁被鍨� 0韬唤璇� 1娓境璇佷欢 2鎶ょ収" v-trim/>
-      </el-form-item>
-      <el-form-item label="寮�鎴烽摱琛�" prop="accountBank">
-        <el-input v-model="form.accountBank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" v-trim/>
-      </el-form-item>
-      <el-form-item label="璐﹀彿" prop="accountNo">
-        <el-input v-model="form.accountNo" placeholder="璇疯緭鍏ヨ处鍙�" v-trim/>
-      </el-form-item>
-      <el-form-item label="璐︽埛鐢佃瘽" prop="accountPhone">
-        <el-input v-model="form.accountPhone" placeholder="璇疯緭鍏ヨ处鎴风數璇�" v-trim/>
-      </el-form-item>
-      <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCard">
-        <el-input v-model="form.creditCard" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim/>
-      </el-form-item>
-      <el-form-item label="榛樿鍙戠エ绫诲瀷 0澧炲�肩◣鏅�氬彂绁� 1澧炲�肩◣涓撶敤鍙戠エ" prop="fpType">
-        <el-input v-model="form.fpType" placeholder="璇疯緭鍏ラ粯璁ゅ彂绁ㄧ被鍨� 0澧炲�肩◣鏅�氬彂绁� 1澧炲�肩◣涓撶敤鍙戠エ" v-trim/>
-      </el-form-item>
-      <el-form-item label="璐﹀彿娉ㄥ唽鍦板潃" prop="accountAddr">
-        <el-input v-model="form.accountAddr" placeholder="璇疯緭鍏ヨ处鍙锋敞鍐屽湴鍧�" v-trim/>
-      </el-form-item>
-      <el-form-item label="韬唤绫诲瀷0鑰佹澘瓒呯骇绠$悊鍛�;1=浜轰簨绠$悊鍛�;2=鍛樺伐" prop="identityType">
-        <el-input v-model="form.identityType" placeholder="璇疯緭鍏ヨ韩浠界被鍨�0鑰佹澘瓒呯骇绠$悊鍛�;1=浜轰簨绠$悊鍛�;2=鍛樺伐" v-trim/>
-      </el-form-item>
-      <el-form-item label="閭" prop="email">
-        <el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�" v-trim/>
-      </el-form-item>
-      <el-form-item label="鑱旂郴浜虹紪鐮侊紙鍏宠仈member锛�" prop="memberId">
-        <el-input v-model="form.memberId" placeholder="璇疯緭鍏ヨ仈绯讳汉缂栫爜锛堝叧鑱攎ember锛�" v-trim/>
-      </el-form-item>
+      <div class="list">
+        <div class="title">鍩虹淇℃伅</div>
+        <el-form-item label="瀹㈡埛鍚嶇О" prop="name">
+          <div class="df">
+            <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴�" v-trim />
+            <el-checkbox v-model="form.type" class="ml10" :true-label="0" :false-label="1">涓汉</el-checkbox>
+          </div>
+        </el-form-item>
+        <el-form-item label="琛屼笟鍒嗙被" prop="industryId">
+          <el-select v-model="form.industryId" clearable filterable>
+            <el-option v-for="item in cateList" :value="item.id" :label="item.name" />
+            <div key="21" class="df_center mt10"><el-button type="primary" plain class="w200"
+                @click="openTrade">娣诲姞</el-button>
+            </div>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="瀹㈡埛缂栧彿" prop="code">
+          <el-input v-model="form.code" placeholder="璇疯緭鍏�" v-trim />
+        </el-form-item>
+        <template v-if="!form.id">
+          <div class="title">榛樿鑱旂郴浜�</div>
+          <el-form-item label="濮撳悕" prop="member.name">
+            <el-input v-model="form.member.name" placeholder="璇疯緭鍏�" v-trim />
+          </el-form-item>
+          <el-form-item label="鎵嬫満鍙�" prop="member.phone">
+            <el-input v-model="form.member.phone" placeholder="璇疯緭鍏ユ墜鏈哄彿" v-trim />
+          </el-form-item>
+          <el-form-item label="韬唤">
+            <el-select v-model="form.member.highCheckor" filterable>
+              <el-option :value="0" label="鑰佹澘/瓒呯骇绠$悊鍛�" />
+              <el-option :value="1" label="浜轰簨/绠$悊鍛�" />
+              <el-option :value="2" label="鍛樺伐/鏅�氬憳宸�" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="璇佷欢绫诲瀷">
+            <el-select v-model="form.member.idcardType" filterable>
+              <el-option :value="0" label="韬唤璇�" />
+              <el-option :value="1" label="娓境璇佷欢" />
+              <el-option :value="2" label="鎶ょ収" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="璇佷欢鍙风爜" prop="member.idcardNo">
+            <el-input v-model="form.member.idcardNo" placeholder="璇疯緭鍏�" v-trim />
+          </el-form-item>
+          <el-form-item label="閭" prop="member.email" :rules="[
+            { required: false, type: 'email', message: '璇疯緭鍏ユ纭殑閭鏍煎紡'}
+          ]">
+            <el-input v-model="form.member.email" placeholder="璇疯緭鍏ラ偖绠�" v-trim />
+          </el-form-item>
+        </template>
+        <el-form-item v-else label="榛樿鑱旂郴浜�" prop="memberId">
+          <el-select v-model="form.memberId" clearable filterable>
+            <el-option v-for="item in clientList" :value="item.id" :label="item.name" />
+            <div key="11" class="df_center mt10"><el-button type="primary" plain class="w200"
+                @click="openClient">娣诲姞</el-button>
+            </div>
+          </el-select>
+        </el-form-item>
+        <template v-if="form.type == 1">
+          <div class="title">璐︽埛淇℃伅</div>
+          <el-form-item label="寮�鎴烽摱琛�" prop="accountBank">
+            <el-input v-model="form.accountBank" placeholder="璇疯緭鍏ュ紑鎴烽摱琛�" v-trim />
+          </el-form-item>
+          <el-form-item label="璐﹀彿" prop="accountNo">
+            <el-input v-model="form.accountNo" placeholder="璇疯緭鍏ヨ处鍙�" v-trim />
+          </el-form-item>
+          <el-form-item label="鐢佃瘽" prop="accountPhone">
+            <el-input v-model="form.accountPhone" placeholder="璇疯緭鍏ヨ处鎴风數璇�" v-trim />
+          </el-form-item>
+          <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCard">
+            <el-input v-model="form.creditCard" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim />
+          </el-form-item>
+          <el-form-item label="榛樿鍙戠エ绫诲瀷" prop="fpType">
+            <el-select v-model="form.fpType" clearable filterable>
+              <el-option :value="0" label="澧炲�肩◣鏅�氬彂绁�" />
+              <el-option :value="1" label="澧炲�肩◣涓撶敤鍙戠エ" />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="娉ㄥ唽鍦板潃" prop="accountAddr">
+            <el-input v-model="form.accountAddr" placeholder="璇疯緭鍏ヨ处鍙锋敞鍐屽湴鍧�" v-trim />
+          </el-form-item>
+          <el-form-item label="钀ヤ笟鏈熼檺">
+            <div class="df">
+              <el-date-picker type="date" v-model="form.validity" value-format="yyyy-MM-dd" placeholder="璇烽�夋嫨" />
+              <el-checkbox v-model="form.selLangTime" @change="changeValid" class="ml10">闀挎湡</el-checkbox>
+            </div>
+          </el-form-item>
+        </template>
+
+      </div>
     </el-form>
+    <!--  -->
+    <OperaCategoryWindow ref="OperaCategoryWindowRef" @success="initData" />
+    <StaffEdit ref="StaffEditRef" @success="getClient" />
   </GlobalWindow>
 </template>
 
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
+import { fetchCateList } from '@/api/business/category'
+import { rules } from './config'
+import { detailById } from '@/api/client/ywCustomer'
+import { fetchList } from '@/api/client/staff'
+import OperaCategoryWindow from './OperaCategoryWindow.vue'
+import StaffEdit from './staffEdit.vue'
 export default {
   name: 'OperaYwCustomerWindow',
   extends: BaseOpera,
-  components: { GlobalWindow },
-  data () {
+  components: { GlobalWindow, OperaCategoryWindow, StaffEdit },
+  data() {
     return {
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
+        validity: '',
         creator: '',
         createDate: '',
         editor: '',
@@ -113,38 +124,146 @@
         isdeleted: '',
         remark: '',
         industryId: '',
-        type: '',
+        type: 1,
         name: '',
         phone: '',
         idcardNo: '',
         idcardDecode: '',
         code: '',
         status: '',
-        highCheckor: '',
+        memberName: '',
+
         lastLoginDate: '',
         loginNum: '',
         userId: '',
-        idcardType: '',
+        memberId: '',
+
         accountBank: '',
         accountNo: '',
         accountPhone: '',
         creditCard: '',
         fpType: '',
         accountAddr: '',
-        identityType: '',
+        // identityType: '0',
         email: '',
-        memberId: ''
+        member: {
+          name: "",
+          phone: "",
+          highCheckor: 0,
+          idcardType: 0,
+          idcardNo: '',
+          email: '',
+        }
       },
+      title: '鏂板瀹㈡埛',
+      isShowTrade: false,
+
+      clientList: [],
+      cateList: [],
       // 楠岃瘉瑙勫垯
-      rules: {
-      }
+      rules
     }
   },
-  created () {
+  created() {
     this.config({
       api: '/client/ywCustomer',
       'field.id': 'id'
     })
+  },
+  methods: {
+    openTrade() {
+      this.$refs.OperaCategoryWindowRef.open('鏂板琛屼笟')
+    },
+    openClient() {
+      this.$refs.StaffEditRef.open('鏂板缓浜哄憳')
+      setTimeout(() => {
+        this.$refs.StaffEditRef.form.customerId = this.form.id
+        console.log('--', this.$refs.StaffEditRef.form);
+        
+        // this.$update
+      }, 1200)
+      this.$refs.StaffEditRef.customerId = this.form.id
+    },
+    initData() {
+      fetchCateList({ type: 6 }).then(res => {
+        this.cateList = res
+      })
+    },
+    open(title, target) {
+      this.title = title
+      this.visible = true
+      this.initData()
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form.validity = ''
+          this.form.id = ''
+          this.form.member = {
+            name: "",
+            phone: "",
+            highCheckor: 0,
+            idcardType: 0,
+            idcardNo: '',
+            email: '',
+          }
+        })
+        this.form.type = 1
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        if (title == '缂栬緫瀹㈡埛') {
+          this.getClient(target.id)
+          detailById(target.id).then(res => {
+            this.form = res
+          })
+        }
+      })
+    },
+    getClient(customerId) {
+      fetchList({
+        capacity: 9999,
+        page: 1,
+        model: {customerId}
+      }).then(res => {
+        this.clientList = res.records
+      })
+    },
+    changeValid(e) {
+      this.$set(this.form, 'validity', e ? '2099-12-31' : '')
+    },
   }
 }
 </script>
+<style lang='scss' scoped>
+@import '@/assets/style/variables.scss';
+
+div {
+  box-sizing: border-box;
+}
+
+.title {
+  width: 100%;
+  font-weight: 500;
+  font-size: 15px;
+  margin-top: 16px;
+}
+
+.list {
+  /* padding-top: 14px; */
+  display: flex;
+  flex-wrap: wrap;
+
+  .el-form-item {
+    width: 33.33%;
+    margin-bottom: 12px;
+    padding: 0 12px;
+
+    .la {
+      color: #7f7f7f;
+      margin-top: 2px;
+    }
+  }
+}
+</style>

--
Gitblit v1.9.3