lrf 2 år sedan
förälder
incheckning
d7acd5d773
4 ändrade filer med 84 tillägg och 21 borttagningar
  1. 14 0
      commpents/picker/index.js
  2. 11 12
      commpents/timePicker/index.js
  3. 56 6
      pages/f6test/index.js
  4. 3 3
      pages/f6test/index.wxml

+ 14 - 0
commpents/picker/index.js

@@ -7,6 +7,12 @@ Component({
         label: { type: String },
         model: { type: String },
         columns: { type: Array },
+        value: {
+            type: String,
+            observer: function (val) {
+                this.initData()
+            }
+        },
         valueKey: { type: String, value: 'value' },
         labelKey: { type: String, value: 'label' }
     },
@@ -23,6 +29,14 @@ Component({
      * 组件的方法列表
      */
     methods: {
+        initData() {
+            const val = this.properties.value
+            if (!val) return;
+            const res = this.properties.columns.find(f => f[this.properties.valueKey] === val)
+            if (!res) return;
+            const label = res[this.properties.labelKey]
+            this.setData({ text: label })
+        },
         onChange(event) {
             const obj = event?.detail?.value;
             const label = obj[this.properties.labelKey]

+ 11 - 12
commpents/timePicker/index.js

@@ -6,7 +6,12 @@ Component({
     properties: {
         label: { type: String },
         model: { type: String },
-        value: { type: String }
+        value: {
+            type: String,
+            observer: function (val) {
+                this.initData()
+            }
+        }
     },
 
     /**
@@ -18,21 +23,15 @@ Component({
         text: '',
         show: false,
     },
-    onload() {
-        console.log('in');
-        if (this.properties.value) {
-            const val = this.properties.value
-            this.setData({
-                currentDate: val,
-                text: val
-            })
-        }
-    },
-
     /**
      * 组件的方法列表
      */
     methods: {
+        initData() {
+            const val = this.properties.value
+            if (!val) return;
+            this.setData({ text: val })
+        },
         toConfirm(event) {
             const data = event.detail;
             const datetimestr = this.getDateString(data)

+ 56 - 6
pages/f6test/index.js

@@ -22,6 +22,8 @@ Page({
         groundList: [],
         refereeList: [],
 
+        arrangeData: {},
+
         // picker
         show: false,
         personList: [],
@@ -160,7 +162,20 @@ Page({
             d.refereeModelName = `referee_id-${i}`;
             d.timeModelName = `match_time-${i}`;
         }
-        this.setData({ raceList })
+        const oRaceList = this.data.raceList;
+        for (const race of raceList) {
+            const { node_id_one, node_id_two } = race;
+            const r = oRaceList.find(f => f.node_id_one === node_id_one && f.node_id_two === node_id_two)
+            if (r) {
+                const ri = oRaceList.findIndex(f => f.node_id_one === node_id_one && f.node_id_two === node_id_two)
+                const { groundModelName, refereeModelName, timeModelName } = race
+                r = { ...r, groundModelName, refereeModelName, timeModelName }
+                oRaceList.splice(ri, 1, r)
+            } else {
+                oRaceList.push(race)
+            }
+        }
+        this.setData({ raceList: oRaceList })
     },
 
 
@@ -171,8 +186,29 @@ Page({
         this.setData({ data })
         // 请求 小组赛的 胜者列表
         await this.searchWinnerList();
+        await this.search();
         await this.searchOthers()
     },
+    // 查询已安排的数据
+    async search() {
+        let res = await app.$get(`/newCourt/api/eliminatArrange/getOne`, this.query)
+        if (app.$checkRes(res)) {
+            const { arrange } = res.data;
+            this.setData({
+                arrangeData: res.data,
+                arrangeList: arrange
+            })
+        }
+        res = await app.$get(`/newCourt/api/eliminateRace`, this.query)
+        if (app.$checkRes(res)) {
+            this.setData({
+                raceList: res.data
+            })
+        }
+        // 数据本地化处理下
+        this.getRaceList();
+    },
+
     // 获取该项目的小组,形成晋级图
     async getTeams() {
         const res = await app.$get(`/newCourt/api/raceTeam`, this.query)
@@ -275,19 +311,33 @@ Page({
         let arrangeList = this.data.arrangeList;
 
         // arrangeList:需要将match_id,grouping_id,project_id 也放入,确定是这个项目的淘汰赛
-        const arrange = { arrange: arrangeList, ...this.query }
+        let arrange = this.data.arrangeData;
+        if (!arrange._id) {
+            arrange = { arrange: arrangeList, ...this.query }
+        }
         // raceList:淘汰赛的比赛赛程
         raceList = raceList.map(i => {
             const { groundModelName, refereeModelName, timeModelName, ...others } = i
             return { ...others, ...this.query }
         })
         // 创建安排
-        let res = await app.$post('/newCourt/api/eliminatArrange', arrange)
-        if(app.$checkRes(res)) {
-            console.log('淘汰赛安排创建成功')
+        let res
+        if (arrange._id) {
+            res = await app.$post(`/newCourt/api/eliminatArrange/${arrange._id}`, arrange)
+            if (app.$checkRes(res)) {
+                console.log('淘汰赛安排创建成功')
+            }
+        } else {
+            res = await app.$post(`/newCourt/api/eliminatArrange`, arrange)
+            if (app.$checkRes(res)) {
+                console.log('淘汰赛安排创建成功')
+            }
         }
+
         res = await app.$post('/newCourt/api/eliminateRace/saveAll', raceList)
-        console.log(res)
+        wx.showToast({
+            title: '保存成功',
+        })
     }
 
 });

+ 3 - 3
pages/f6test/index.wxml

@@ -2,7 +2,7 @@
     <view slot="info" class="container main">
         <view wx:if="{{view==='graph'}}">
             <view>
-                <button bind:tap="toAutoInitData">自动生成</button>
+                <button bind:tap="toAutoInitData" wx:if="{{!arrangeData._id}}">自动生成</button>
                 <button bind:tap="turnView" data-view="race">设置比赛</button>
                 <!-- <button>保存</button> -->
             </view>
@@ -23,9 +23,9 @@
                     {{r.player_name_one}} VS {{r.player_name_two}}
                     <f-picker value="{{r.ground_id}}" label="场地" model="{{r.groundModelName}}" bind:selected="toSelected" columns="{{groundList}}" valueKey="_id" labelKey="name">
                     </f-picker>
-                    <f-picker value="{{r.ground_id}}" label="裁判" model="{{r.refereeModelName}}" bind:selected="toSelected" columns="{{refereeList}}" valueKey="_id" labelKey="name">
+                    <f-picker value="{{r.referee_id}}" label="裁判" model="{{r.refereeModelName}}"  bind:selected="toSelected" columns="{{refereeList}}" valueKey="_id" labelKey="name">
                     </f-picker>
-                    <f-time-picker label="比赛时间" model="{{r.timeModelName}}" value="{{r.time}}" bind:selected="toSelected" />
+                    <f-time-picker label="比赛时间" model="{{r.timeModelName}}" value="{{r.match_time}}" bind:selected="toSelected" />
                 </view>
             </view>
         </view>