123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- <template>
- <BasicModal
- v-bind="$attrs"
- @register="register"
- :title="t('routes.scenes.bindAnchor')"
- width="800px"
- @ok="handleSubmit"
- @cancel="clearSelectedRowKeys"
- >
- <div class="pt-2px pr-3px">
- <BasicTable
- @register="registerTable"
- :searchInfo="searchInfo"
- :rowSelection="{ type: 'checkbox', onChange: handleSelect }"
- >
- <template #headerTop>
- <div class="pt-4 pb-4">
- {{ t('routes.scenes.sceneName') }}: {{ headerInfo?.sceneName }}
- {{ t('routes.scenes.anchorRoom') }}:{{ headerInfo?.name }}</div
- >
- </template>
- <template #canShowSwitch="{ record }">
- <div>
- <Switch
- :disabled="!SelectRowsList.includes(record.id)"
- v-model:checked="record.canShow"
- :checkedChildren="t('layout.setting.on')"
- :unCheckedChildren="t('layout.setting.off')"
- />
- </div>
- </template>
- </BasicTable>
- <!-- <BasicForm @register="registerForm" :model="model" /> -->
- </div>
- <template #centerFooter>
- <!-- <a-button>xxxx</a-button> -->
- </template>
- </BasicModal>
- </template>
- <script lang="ts">
- import { defineComponent, reactive, h, ref, computed } from 'vue';
- import { Switch } from 'ant-design-vue';
- import { BasicModal, useModalInner } from '/@/components/Modal';
- // import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
- import { BasicTable, useTable, BasicColumn, FormSchema } from '/@/components/Table';
- import { useMessage } from '/@/hooks/web/useMessage';
- // import { checkUserAddAble } from '/@/api/corporation/modal';
- import { useI18n } from '/@/hooks/web/useI18n';
- // bindAnchorListApi
- import { bindOldAnchorListApi, bindUserApi } from '/@/api/scene/live';
- import { bindAnchorListParam } from '/@/api/scene/model';
- import { Time } from '/@/components/Time';
- // import { useUserStore } from '/@/store/modules/user';
- const { t } = useI18n();
- const { createMessage } = useMessage();
- const schemas: FormSchema[] = [
- {
- field: 'own',
- label: t('routes.scenes.own'),
- component: 'Input',
- },
- ];
- const columns: BasicColumn[] = [
- {
- title: 'ID',
- dataIndex: 'id',
- fixed: 'left',
- width: 40,
- },
- {
- title: t('routes.scenes.userName'),
- dataIndex: 'userName',
- width: 100,
- },
- {
- title: t('common.roleName'),
- dataIndex: 'roleName',
- width: 100,
- },
- {
- title: t('common.mobile'),
- dataIndex: 'phone',
- width: 100,
- },
- {
- title: t('routes.scenes.canShow'),
- dataIndex: 'canShow',
- slots: { customRender: 'canShowSwitch' },
- width: 140,
- },
- {
- title: t('routes.scenes.bindTime'),
- dataIndex: 'createTime',
- width: 100,
- customRender: ({ record }) => {
- return (
- record.createTime &&
- h(Time, {
- value: record.createTime,
- mode: 'datetime',
- })
- );
- },
- },
- ];
- export default defineComponent({
- components: { BasicModal, BasicTable, Switch },
- props: {
- userData: { type: Object },
- },
- emits: ['register', 'success'],
- setup(_, { emit }) {
- const [register, { closeModal }] = useModalInner((data) => {
- data && onDataReceive(data);
- });
- const SelectRowsList = computed(() => {
- const data = getSelectRowKeys();
- return data;
- });
- const mapCheckedValue = computed(() => (key) => {
- return key === 1 ? true : false;
- });
- const checked = ref<boolean>(false);
- const headerInfo = reactive<Recordable>({});
- const searchInfo = reactive<Recordable>({});
- const [
- registerTable,
- {
- reload,
- getSelectRows,
- getSelectRowKeys,
- clearSelectedRowKeys,
- setSelectedRowKeys,
- getRawDataSource,
- },
- ] = useTable({
- title: t('routes.scenes.anchorList'),
- api: bindOldAnchorListApi,
- columns: columns,
- useSearchForm: false,
- // formConfig: searchForm,
- showTableSetting: false,
- tableSetting: { fullScreen: true },
- showIndexColumn: false,
- immediate: false,
- rowKey: 'id',
- pagination: false,
- clickToRowSelect: false,
- bordered: true,
- afterFetch: (data) => {
- console.log('data', data);
- const res = data.map((i) => {
- i.canShow = i.canShow === 1 ? true : false;
- return i;
- });
- console.log('res', res);
- const bindIds = data
- .filter((i) => i.isBind === 1)
- .reduce((pre, current) => {
- return pre.concat(current['id']);
- }, []);
- console.log('bindIds', bindIds);
- data.map((i) => {
- i.canShow === 1 ? true : false;
- return i;
- });
- setSelectedRowKeys(bindIds);
- },
- });
- function onDataReceive(data) {
- console.log('Data Received', data.id);
- searchInfo.brandId = data.id;
- headerInfo.name = data.name;
- headerInfo.sceneName = data.sceneName;
- searchInfo.limit = 1000;
- searchInfo.page = 1;
- reload();
- // const rawData = getRawDataSource();
- // if (rawData.list.re) {
- // console.log('存在已邦,选择');
- // setSelectedRowKeys([Number(data.bindShowerId)]);
- // }
- }
- const handleSubmit = async () => {
- try {
- const rows = getSelectRows();
- const rawData = getRawDataSource();
- let paramsRow: bindAnchorListParam[];
- console.log('rows', rows);
- if (rows?.length > 0) {
- paramsRow = rows.map((row) => {
- return {
- brandId: String(searchInfo.brandId),
- canShow: row.canShow ? 1 : 0,
- type: 1,
- userId: String(row.id),
- } as bindAnchorListParam;
- });
- await bindUserApi(paramsRow);
- createMessage.success(t('common.optSuccess'));
- } else {
- const unBindUser = rawData.list
- .filter((i) => i.isBind === 1)
- .map((item) => {
- let param: bindAnchorListParam = {};
- param.canShow = item.canShow ? 1 : 0;
- param.type = -1;
- param.brandId = searchInfo.brandId;
- param.userId = String(item.id);
- return param;
- });
- console.log('unBindUser', unBindUser);
- await bindUserApi(unBindUser);
- createMessage.success(t('common.optSuccess'));
- }
- closeModal();
- emit('success');
- clearSelectedRowKeys();
- } catch (error) {
- console.log('error', error);
- }
- };
- const handleSelect = async () => {
- // const keys = getSelectRowKeys();
- // console.log('key', key);
- };
- const handleChange = (val, row) => {
- console.log('val,row', val, row);
- // updateTableDataRecord('canShow', values);
- // updateTableDataRecord
- };
- return {
- register,
- schemas,
- registerTable,
- handleSubmit,
- searchInfo,
- closeModal,
- handleSelect,
- headerInfo,
- clearSelectedRowKeys,
- handleChange,
- t,
- checked,
- SelectRowsList,
- mapCheckedValue,
- };
- },
- });
- </script>
|