gemercheung пре 3 година
родитељ
комит
1aa4c99144
4 измењених фајлова са 95 додато и 27 уклоњено
  1. 13 1
      src/api/scene/live.ts
  2. 3 0
      src/api/scene/model.ts
  3. 59 13
      src/views/scenes/bindModal.vue
  4. 20 13
      src/views/scenes/list.vue

+ 13 - 1
src/api/scene/live.ts

@@ -6,6 +6,8 @@ enum Api {
   bindAnchorList = '/zfb-api/zfb/shop/sys/user/bindList',
   // brandTypeList = '/zfb-api/zfb/shop/brand/brandTypeList',
   brandTypeList = '/basic-api//brand/brandTypeList',
+  bindUser = '/zfb-api/zfb/shop/sys/brand/bindUser',
+  // bindUser = '/basic-api/sys/brand/bindUser',
 }
 export type SceneLiveItemResult = SceneLiveItem;
 /**
@@ -25,7 +27,17 @@ export const bindAnchorListApi = (params: bindAnchorListParam) =>
   defHttp.post<RentListGetResultModel>({
     url: Api.bindAnchorList,
     params: params,
-    data: params,
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+export const bindUserApi = (params: bindAnchorListParam[]) =>
+  defHttp.post<RentListGetResultModel>({
+    url: Api.bindUser,
+    params: params,
+    // data: params,
     headers: {
       // @ts-ignore
       ignoreCancelToken: true,

+ 3 - 0
src/api/scene/model.ts

@@ -5,6 +5,9 @@ import { BasicPageParams, BasicFetchResult } from '/@/api/model/baseModel';
 export type PageParams = BasicPageParams;
 export interface bindAnchorListParam extends BasicPageParams {
   brandId?: number;
+  canShow?: number;
+  type?: number;
+  userId?: string;
 }
 
 export interface SceneEditParam {

+ 59 - 13
src/views/scenes/bindModal.vue

@@ -3,15 +3,14 @@
     v-bind="$attrs"
     @register="register"
     title="绑定主播"
-    width="700px"
-    @visible-change="handleVisibleChange"
+    width="800px"
     @ok="handleSubmit"
   >
     <div class="pt-2px pr-3px">
       <BasicTable
         @register="registerTable"
         :searchInfo="searchInfo"
-        :rowSelection="{ type: 'checkbox' }"
+        :rowSelection="{ type: 'checkbox', onChange: handleSelect }"
       />
       <!-- <BasicForm @register="registerForm" :model="model" /> -->
     </div>
@@ -21,14 +20,15 @@
   </BasicModal>
 </template>
 <script lang="ts">
-  import { defineComponent, reactive, nextTick } from 'vue';
+  import { defineComponent, reactive, h } from 'vue';
   import { BasicModal, useModalInner } from '/@/components/Modal';
   // import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
   import { BasicTable, useTable, BasicColumn } from '/@/components/Table';
   // import { useMessage } from '/@/hooks/web/useMessage';
   // import { checkUserAddAble } from '/@/api/corporation/modal';
   // import { useI18n } from '/@/hooks/web/useI18n';
-  import { bindAnchorListApi } from '/@/api/scene/live';
+  import { bindAnchorListApi, bindUserApi } from '/@/api/scene/live';
+  import { Time } from '/@/components/Time';
 
   // const { t } = useI18n();
   const schemas: FormSchema[] = [
@@ -60,7 +60,7 @@
     },
     {
       title: '员工名称',
-      dataIndex: 'name',
+      dataIndex: 'userName',
       width: 100,
     },
     {
@@ -75,9 +75,40 @@
       width: 100,
     },
     {
+      title: '是否同时开通一起逛',
+      dataIndex: 'canShow',
+      width: 100,
+      editComponent: 'Checkbox',
+      // edit: true,
+      editRow: true,
+      editValueMap: (value) => {
+        console.log('value', value);
+        return value === 0 ? '是' : '否';
+      },
+      // editable: true,
+      // customRender: ({ record }) => {
+      //   return (
+      //     record.createTime &&
+      //     h(Time, {
+      //       value: record.createTime,
+      //       mode: 'datetime',
+      //     })
+      //   );
+      // },
+    },
+    {
       title: '绑定时间',
       dataIndex: 'createTime',
       width: 100,
+      customRender: ({ record }) => {
+        return (
+          record.createTime &&
+          h(Time, {
+            value: record.createTime,
+            mode: 'datetime',
+          })
+        );
+      },
     },
   ];
   export default defineComponent({
@@ -85,13 +116,13 @@
     props: {
       userData: { type: Object },
     },
-    setup(props) {
+    setup() {
       const [register, { closeModal }] = useModalInner((data) => {
         data && onDataReceive(data);
       });
 
       const searchInfo = reactive<Recordable>({});
-      const [registerTable, { reload }] = useTable({
+      const [registerTable, { reload, getSelectRowKeys }] = useTable({
         title: '主播列表',
         api: bindAnchorListApi,
         columns: columns,
@@ -112,19 +143,34 @@
         // searchInfo.key = data.id;
         reload();
       }
-      const handleSubmit = async () => {};
-      function handleVisibleChange(v) {
-        v && props.userData && nextTick(() => onDataReceive(props.userData));
-      }
+      const handleSubmit = async () => {
+        const keys = getSelectRowKeys();
+        console.log('keys', keys);
+        const params = [
+          {
+            brandId: '1046662',
+            canShow: 0,
+            type: 1,
+            userId: '1',
+          },
+        ];
+        const result = await bindUserApi(params);
+        console.log('result', result);
+      };
+      const handleSelect = async (key) => {
+        // const keys = getSelectRowKeys();
+        console.log('key', key);
+      };
 
       return {
         register,
         schemas,
         registerTable,
-        handleVisibleChange,
+
         handleSubmit,
         searchInfo,
         closeModal,
+        handleSelect,
       };
     },
   });

+ 20 - 13
src/views/scenes/list.vue

@@ -13,9 +13,10 @@
               label: t('routes.scenes.downloadScene'),
               popConfirm: {
                 title: t('routes.scenes.downloadSceneConfirm'),
-                confirm: () => {
-                  createMessage.info(t('common.notConnect'));
-                },
+                confirm: handleDownloadScene.bind(null, record),
+                // confirm: () => {
+                //   createMessage.info(t('common.notConnect'));
+                // },
               },
             },
             {
@@ -41,7 +42,7 @@
     TableImg,
   } from '/@/components/Table';
   import { useMessage } from '/@/hooks/web/useMessage';
-  import { uploadApi } from '/@/api/sys/upload';
+  // import { uploadApi } from '/@/api/sys/upload';
   // import { Switch } from 'ant-design-vue';
   // import { h } from 'vue';
   import { ListApi, generateSceneEditTokenApi } from '/@/api/scene/list';
@@ -178,22 +179,28 @@
         },
       });
       async function openSceneEditor(record: Recordable) {
-        const url = record.webSite.replace('smobile', 'epc') + '&menu=business&token=';
-        const userStore = useUserStore();
-        console.log('userStore', userStore.getUserInfo);
-        const data = await generateSceneEditTokenApi({
-          sceneNum: record.num,
-          userName: userStore.getUserInfo?.phone,
-        });
-        window.open(url + data.message);
+        try {
+          const url = record.webSite.replace('smobile', 'epc') + '&menu=business&token=';
+          const userStore = useUserStore();
+          const data = await generateSceneEditTokenApi({
+            sceneNum: record.num,
+            userName: userStore.getUserInfo?.phone,
+          });
+          window.open(url + data.message);
+        } catch (error) {
+          console.log('error', error);
+        }
       }
 
+      async function handleDownloadScene(record: Recordable) {
+        console.log('record', record);
+      }
       return {
         registerTable,
         createMessage,
         t,
         openSceneEditor,
-        uploadApi: uploadApi as any,
+        handleDownloadScene,
       };
     },
   });