| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- <template>
- <div>
- <div style="margin-top: 28px">
- <el-form
- class="ip-form"
- :inline="true"
- :model="shareData"
- :rules="rules"
- label-width="84px"
- label-position="left"
- >
- <el-form-item label="企业账号:" prop="tenantCode" style="margin-right: 100px">
- <el-input
- v-model="shareData.tenantCode"
- placeholder="请输入企业账号"
- class="company-input"
- />
- <el-button
- type="primary"
- size="small"
- plain
- style="margin-left: 10px"
- @click="verifyAccount"
- >验证</el-button
- >
- </el-form-item>
- <el-form-item label="权限设置:" prop="permission">
- <el-radio-group v-model="shareData.permission" class="ml-4">
- <el-radio v-for="item in authorityTypeSelect" :label="item.value" :key="item.value">{{
- item.label
- }}</el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item
- label="企业名称:"
- prop="tenantName"
- class="company-name"
- style="margin-right: 160px"
- >
- <el-input
- v-model="shareData.tenantName"
- disabled
- placeholder=""
- readonly
- style="width: 200px; height: 32px"
- />
- <div v-if="shareData.tenantName" class="verify-success">账号验证成功</div>
- </el-form-item>
- <el-form-item label="分享时间:" prop="time">
- <el-radio-group v-model="shareData.time" class="ml-4" @change="changeTime">
- <el-radio v-for="item in timeTypeSelect" :label="item.value" :key="item.value"
- >{{ item.label }}
- </el-radio>
- </el-radio-group>
- <div
- ><el-input
- v-model="shareData.days"
- placeholder="请输入"
- :readonly="shareData.time === 'Indefinite'"
- class="day-input"
- />
- <span>/天</span></div
- >
- </el-form-item>
- <el-form-item label="备注:" prop="notes">
- <el-input v-model="shareData.remark" placeholder="请输入备注" style="width: 765px" />
- </el-form-item>
- <el-button type="primary" @click="handleConfirm" class="confirm">确定</el-button>
- <el-form-item label="分享企业:" prop="shareList" class="company-table">
- <BasicTable
- :columns="getColumns(handleEditState)"
- :data-source="cameraShareList"
- :row-key="(row) => row.code"
- :action-column="actionColumn"
- :showHeader="false"
- :tableSetting="{
- size: false,
- redo: false,
- fullscreen: false,
- striped: false,
- setting: false,
- }"
- :striped="true"
- ref="tableRef"
- style="height: 200px"
- />
- </el-form-item>
- </el-form>
- </div>
- </div>
- </template>
- <script setup lang="ts">
- import { h, reactive, ref, onMounted } from 'vue';
- import { BasicColumn, BasicTable, TableActionIcons } from '@/components/Table';
- import { CameraShareItem, CameraShowItem } from '../type';
- import deleteIcon from '@/assets/images/table/table-delete.png';
- import { rules, authorityTypeSelect, timeTypeSelect, getColumns } from '../constant';
- import useCameraShare from '../stores/useCameraShare';
- import { getVerify } from '@/api/camera/camera-share';
- import dayjs from 'dayjs';
- import { ElMessage } from 'element-plus';
- const useShare = useCameraShare();
- const { cameraShareList, queryCameraId, conditionSearch, handleDel, handleAdd, handleEdit } =
- useShare;
- const props = defineProps<{ formData?: CameraShowItem | null }>();
- // onMounted(() => {});
- onMounted(() => {
- //获取数据
- queryCameraId.value = props.formData?.id;
- console.log('queryCameraId', props.formData?.code);
- conditionSearch();
- });
- const shareData = ref<CameraShareItem>({
- tenantCode: undefined,
- toTenantId: undefined,
- permission: '0',
- tenantName: '',
- time: 'Indefinite',
- days: undefined,
- remark: '',
- endTime: '',
- });
- // 将修改列表中的
- const handleEditState = (row) => {
- const editData = {
- id: row.id as number,
- connected: row.connected ? false : true,
- };
- handleEdit(editData);
- };
- const handleDelete = (row) => {
- handleDel(row.id);
- };
- //操作列
- const actionColumn: BasicColumn = reactive({
- width: 200,
- title: '操作',
- prop: 'action',
- key: 'action',
- fixed: 'right',
- render(record) {
- return h(TableActionIcons as any, {
- space: 20,
- color: '#629bf9',
- style: 'img',
- size: 16,
- actionIcons: [
- {
- label: '删除',
- icon: deleteIcon,
- onClick: handleDelete.bind(null, record.row),
- },
- ],
- });
- },
- });
- const verifyAccount = () => {
- // shareData.value.name = 'C' + shareData.value.account;
- getVerify(shareData.value.tenantCode!).then((res) => {
- if (res) {
- shareData.value.tenantName = res.tenantName;
- shareData.value.toTenantId = res.tenantId;
- } else {
- shareData.value.tenantName = '';
- shareData.value.toTenantId = undefined;
- ElMessage.error('企业账号验证失败');
- }
- });
- };
- const changeTime = () => {
- if (shareData.value.time === 'Indefinite') {
- shareData.value.days = undefined;
- }
- };
- const resetData = () => {
- shareData.value.tenantCode = undefined;
- shareData.value.toTenantId = undefined;
- shareData.value.tenantName = '';
- shareData.value.permission = '0';
- shareData.value.time = 'Indefinite';
- shareData.value.days = undefined;
- shareData.value.remark = '';
- shareData.value.endTime = '';
- };
- const handleConfirm = () => {
- if (shareData.value.time === 'Indefinite') {
- shareData.value.endTime = dayjs().add(-1, 'day').format('YYYY-MM-DD HH:mm:ss');
- } else {
- shareData.value.endTime = dayjs()
- .add(shareData.value.days!, 'day')
- .format('YYYY-MM-DD HH:mm:ss');
- }
- console.log('endd', shareData.value.endTime);
- //接口
- console.log('shareData', shareData.value);
- const currentDate = new Date();
- console.log('currentDate', currentDate);
- const addShareItem = {
- cameraId: props.formData?.id,
- toTenantId: shareData.value.toTenantId,
- permission: shareData.value.permission,
- endTime: shareData.value.endTime,
- isAdd: false,
- remark: shareData.value.remark,
- };
- queryCameraId.value = props.formData?.id;
- handleAdd(addShareItem); //数据未调整
- resetData();
- };
- </script>
- <style scoped>
- .ip-form {
- width: 900px;
- display: flex;
- flex-wrap: wrap;
- align-content: space-around;
- }
- :deep(.el-form-item__label) {
- font-size: 14px;
- color: #363636;
- padding: 0;
- }
- :deep(.el-form--inline .el-form-item) {
- display: flex;
- margin-right: 0;
- margin-bottom: 28px;
- }
- .company-input {
- width: 200px;
- height: 32px;
- }
- .day-input {
- width: 64px;
- height: 32px;
- margin-left: 10px;
- margin-right: 4px;
- }
- .verify-success {
- position: absolute;
- right: -100px;
- /* margin-right: 100px; */
- color: rgb(142, 215, 33);
- }
- .confirm {
- position: relative;
- left: 800px;
- }
- .company-table {
- margin-top: 70px;
- margin-left: -60px;
- }
- .company-name {
- margin-right: 160px;
- position: relative;
- }
- </style>
|