lrf 2 years ago
parent
commit
6deaa19d48

+ 71 - 0
commpents/timePicker/index.js

@@ -0,0 +1,71 @@
+// commpents/timePicker/index.js
+Component({
+    /**
+     * 组件的属性列表
+     */
+    properties: {
+        label: { type: String },
+        model: { type: String },
+        value: { type: String }
+    },
+
+    /**
+     * 组件的初始数据
+     */
+    data: {
+        minDate: new Date().getTime(),
+        currentDate: new Date().getTime(),
+        text: '',
+        show: false,
+    },
+    onload() {
+        console.log('in');
+        if (this.properties.value) {
+            const val = this.properties.value
+            this.setData({
+                currentDate: val,
+                text: val
+            })
+        }
+    },
+
+    /**
+     * 组件的方法列表
+     */
+    methods: {
+        toConfirm(event) {
+            const data = event.detail;
+            const datetimestr = this.getDateString(data)
+            this.setData({
+                currentDate: event.detail,
+                text: datetimestr
+            });
+            this.triggerEvent('selected', { value: datetimestr, model: this.properties.model })
+            this.toClose();
+        },
+        getDateString(datetime) {
+            datetime = new Date(datetime);
+            const year = datetime.getFullYear();
+            let month = datetime.getMonth() + 1;
+            if (month < 10) month = `0${month}`
+            let date = datetime.getDate();
+            if (date < 10) date = `0${date}`
+            let hours = datetime.getHours();
+            if (hours < 10) hours = `0${hours}`
+            let min = datetime.getMinutes();
+            if (min < 10) min = `0${min}`
+            return `${year}-${month}-${date} ${hours}:${min}`
+        },
+        toOpen() {
+            this.setData({
+                show: true
+            })
+        },
+        toClose() {
+            this.setData({
+                show: false,
+            })
+        },
+
+    }
+})

+ 8 - 0
commpents/timePicker/index.json

@@ -0,0 +1,8 @@
+{
+    "component": true,
+    "usingComponents": {
+        "van-cell": "@vant/weapp/cell/index",
+        "van-popup": "@vant/weapp/popup/index",
+        "van-datetime-picker": "@vant/weapp/datetime-picker/index"
+    }
+}

+ 4 - 0
commpents/timePicker/index.wxml

@@ -0,0 +1,4 @@
+<van-cell title="{{label}}" value="{{text}}" bind:click="toOpen" />
+<van-popup show="{{ show }}" bind:close="toClose" position="bottom" custom-style="height: 40%;">
+    <van-datetime-picker type="datetime" value="{{ currentDate }}" min-date="{{ minDate }}"  bind:confirm="toConfirm"/>
+</van-popup>

+ 1 - 0
commpents/timePicker/index.wxss

@@ -0,0 +1 @@
+/* commpents/timePicker/index.wxss */

+ 0 - 62
pages/f6test/data.js

@@ -1,62 +0,0 @@
-export default {
-    id: '1',
-    num: "1",
-    children: [
-        {
-            id: '2',
-            num: '2',
-            children: [
-                {
-                    id: '2-1',
-                    num: '2-1',
-                },
-                {
-                    id: '2-2',
-                    num: '2-2',
-                },
-            ]
-        },
-        {
-            id: '3',
-            num: '3',
-            children: [
-                {
-                    id: '3-1',
-                    num: '3-1',
-                },
-                {
-                    id: '3-2',
-                    num: '3-2',
-                },
-            ]
-        },
-        {
-            id: '4',
-            num: '4',
-            children: [
-                {
-                    id: '4-1',
-                    num: '4-1',
-                },
-                {
-                    id: '4-2',
-                    num: '4-2',
-                },
-            ]
-        },
-        {
-            id: '5',
-            num: '5',
-            children: [
-                {
-                    id: '5-1',
-                    num: '5-1',
-                },
-                {
-                    id: '5-2',
-                    num: '5-2',
-                },
-            ]
-        },
-    ],
-};

+ 26 - 11
pages/f6test/index.js

@@ -28,6 +28,7 @@ Page({
         selectNode: undefined
 
     },
+    // 计算晋级图
     computedTreeData() {
         const getWinnerNumList = this.data.riseList; // 将每个小组取多少人收到1个纯数字的数组中
         const getWinnerNum = getWinnerNumList.reduce((p, n) => p + n, 0); // 小组赛选取人数: 应该是该比赛项目的 各组选取人数加和
@@ -68,8 +69,6 @@ Page({
         let obj = { id: `${levelList.length}`, num: `${levelList.length}`, children: data }
         return obj;
     },
-
-
     resetData(dataList, index = 0) {
         const thisLevelList = dataList[index]
         // 取出2条数据
@@ -85,14 +84,14 @@ Page({
         p2.children = p2c;
         return [p1, p2]
     },
-
+    // 点击节点事件
     nodeTap(e) {
         const node = e.detail;
         if (!node) return;
         this.setData({ selectNode: node })
         this.toOpen();
     },
-
+    // 获取最基础的那一层节点数据
     getFirstLevelNodes(node) {
         if (!node.children) return node;
         const res = [];
@@ -150,15 +149,16 @@ Page({
             if (d1pos[0] !== d2pos[0]) continue
             // 前后两项层级一样,但是不是连续的数字,例如:1-1与1-3,不能进行比赛,必须是 前+1=后
             if (d1pos[1] + 1 !== d2pos[1]) continue
-            const { player_id: player_one, player_name: player_one_name, node_id: node_one_id } = d1
-            const { player_id: player_two, player_name: player_two_name, node_id: node_two_id } = d2
-            raceList.push({ player_one, player_one_name, node_one_id, player_two, player_two_name, node_two_id })
+            const { player_id: player_one, player_name: player_name_one, node_id: node_id_one } = d1
+            const { player_id: player_two, player_name: player_name_two, node_id: node_id_two } = d2
+            raceList.push({ player_one, player_name_one, node_id_one, player_two, player_name_two, node_id_two })
         }
         // 因为是数组,所以需要将model特殊处理下,按照一定规则处理可以正常赋值
         for (let i = 0; i < raceList.length; i++) {
             const d = raceList[i];
             d.groundModelName = `ground_id-${i}`;
-            d.refereeModelName = `referee_id-${i}`
+            d.refereeModelName = `referee_id-${i}`;
+            d.timeModelName = `match_time-${i}`;
         }
         this.setData({ raceList })
     },
@@ -268,11 +268,26 @@ Page({
 
     },
 
-    toSubmit() { 
+    async toSubmit() {
         // 生成的比赛信息
-        const raceList = this.data.raceList;
+        let raceList = this.data.raceList;
         // 安排信息 
-        const arrangeList = this.data.arrangeList;
+        let arrangeList = this.data.arrangeList;
+
+        // arrangeList:需要将match_id,grouping_id,project_id 也放入,确定是这个项目的淘汰赛
+        const 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('淘汰赛安排创建成功')
+        }
+        res = await app.$post('/newCourt/api/eliminateRace/saveAll', raceList)
+        console.log(res)
     }
 
 });

+ 2 - 1
pages/f6test/index.json

@@ -4,6 +4,7 @@
         "f6-tree": "/commpents/f6tree/index",
         "van-popup": "@vant/weapp/popup/index",
         "van-picker": "@vant/weapp/picker/index",
-        "f-picker": "/commpents/picker/index"
+        "f-picker": "/commpents/picker/index",
+        "f-time-picker":"/commpents/timePicker/index"
     }
 }

+ 3 - 3
pages/f6test/index.wxml

@@ -16,16 +16,16 @@
         <view wx:if="{{view==='race'}}">
             <view>
                 <button bind:tap="turnView" data-view="graph">返回</button>
-                <button>保存</button>
+                <button bind:tap="toSubmit">保存</button>
             </view>
             <view>
                 <view wx:for="{{raceList}}" wx:for-item="r" wx:key="node_one_id">
-                    {{r.player_one_name}} VS {{r.player_two_name}}
+                    {{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>
-                    时间
+                    <f-time-picker label="比赛时间" model="{{r.timeModelName}}" value="{{r.time}}" bind:selected="toSelected" />
                 </view>
             </view>
         </view>