|
@@ -0,0 +1,218 @@
|
|
|
+import { BasicColumn } from '/@/components/Table';
|
|
|
+import { FormSchema } from '/@/components/Table';
|
|
|
+import { rules } from '/@/utils/helper/validator';
|
|
|
+import { render } from '/@/utils/common/renderUtils';
|
|
|
+import { convertJsonToArray, getWeekMonthQuarterYear } from '/@/utils';
|
|
|
+import ZtCustomTable from '/@/components/ZtCustomTable/index.vue';
|
|
|
+import { h, VNode } from 'vue';
|
|
|
+import { Image, Switch } from 'ant-design-vue';
|
|
|
+//列表数据
|
|
|
+export const columns: BasicColumn[] = [
|
|
|
+ {
|
|
|
+ title: '保险公司',
|
|
|
+ align: 'center',
|
|
|
+ dataIndex: 'insuranceName_dictText',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '保险类型',
|
|
|
+ align: 'center',
|
|
|
+ dataIndex: 'insuranceType_dictText',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '方案名称',
|
|
|
+ align: 'center',
|
|
|
+ dataIndex: 'name',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '封面',
|
|
|
+ align: 'center',
|
|
|
+ dataIndex: 'coverImg',
|
|
|
+ customRender: ({ record }) => {
|
|
|
+ return h(Image, { src: record.coverImg, width: 80, height: 80 });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '价格',
|
|
|
+ align: 'center',
|
|
|
+ dataIndex: 'price',
|
|
|
+ customRender: ({ record }) => {
|
|
|
+ return `${record.price}元/天·人`;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '保障期限',
|
|
|
+ align: 'center',
|
|
|
+ dataIndex: 'guaranteeTerm',
|
|
|
+ customRender: ({ record }) => {
|
|
|
+ const viewlist: VNode[] = [];
|
|
|
+ record.guaranteeTerm.split(',').forEach((item) => {
|
|
|
+ const formattedString = `${item}天;`;
|
|
|
+ viewlist.push(h('span', formattedString));
|
|
|
+ });
|
|
|
+ return h('div', viewlist);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '保险责任与保额',
|
|
|
+ align: 'center',
|
|
|
+ key: 'insuranceObvious 3',
|
|
|
+ ellipsis: true,
|
|
|
+ width: 300,
|
|
|
+ dataIndex: 'insuranceObvious',
|
|
|
+ customRender: ({ record }) => {
|
|
|
+ const viewlist: VNode[] = [];
|
|
|
+ convertJsonToArray(JSON.parse(record.insuranceObvious)).forEach((item) => {
|
|
|
+ const formattedString = `${item.key} ${item.value}万;`;
|
|
|
+ viewlist.push(h('div', formattedString));
|
|
|
+ });
|
|
|
+ return h('div', viewlist);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '显隐状态',
|
|
|
+ align: 'center',
|
|
|
+ dataIndex: 'status',
|
|
|
+ customRender: ({ record }) => {
|
|
|
+ return h(Switch, { checked: record.status, unCheckedValue: 1, checkedValue: 0 });
|
|
|
+ },
|
|
|
+ },
|
|
|
+];
|
|
|
+//查询数据
|
|
|
+export const searchFormSchema: FormSchema[] = [
|
|
|
+ {
|
|
|
+ label: '方案名称',
|
|
|
+ field: 'name',
|
|
|
+ component: 'Input',
|
|
|
+ colProps: {
|
|
|
+ span: 8,
|
|
|
+ },
|
|
|
+ },
|
|
|
+];
|
|
|
+//表单数据
|
|
|
+export const formSchema: FormSchema[] = [
|
|
|
+ {
|
|
|
+ label: '保险公司',
|
|
|
+ field: 'insuranceName',
|
|
|
+ component: 'JDictSelectTag',
|
|
|
+ componentProps: {
|
|
|
+ // options: render.renderDict(text, 'quartz_status'),
|
|
|
+ dictCode: 'insurance_name',
|
|
|
+ },
|
|
|
+ required: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '保险类型',
|
|
|
+ field: 'insuranceType',
|
|
|
+ required: true,
|
|
|
+ component: 'JDictSelectTag',
|
|
|
+ componentProps: {
|
|
|
+ // options: render.renderDict(text, 'quartz_status'),
|
|
|
+ dictCode: 'insurance_type',
|
|
|
+ disabled: true,
|
|
|
+ stringToNumber: true,
|
|
|
+ },
|
|
|
+ defaultValue: '0',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '方案名称',
|
|
|
+ field: 'name',
|
|
|
+ component: 'Input',
|
|
|
+ required: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '封面',
|
|
|
+ field: 'coverImg',
|
|
|
+ required: true,
|
|
|
+ component: 'JImageUpload',
|
|
|
+ componentProps: {
|
|
|
+ tipText: '单张图片,比例 1:1,支持格式:.jpg .png .svg .gif ,单个文件不能超过5MB',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '价格',
|
|
|
+ field: 'price',
|
|
|
+ required: true,
|
|
|
+ component: 'InputNumber',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '保障期限',
|
|
|
+ field: 'guaranteeTerm',
|
|
|
+ required: true,
|
|
|
+ component: 'InputNumber',
|
|
|
+ slot: 'guaranteeTerm',
|
|
|
+ defaultValue: [],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '保险责任与保额',
|
|
|
+ field: 'insuranceObvious',
|
|
|
+ required: true,
|
|
|
+ component: 'InputNumber',
|
|
|
+ defaultValue: [],
|
|
|
+ render({ model, field }) {
|
|
|
+ return h(ZtCustomTable, {
|
|
|
+ tableColumn: [
|
|
|
+ {
|
|
|
+ dataIndex: 'key',
|
|
|
+ title: '保险责任',
|
|
|
+ editComponent: 'Input',
|
|
|
+ editRule: true,
|
|
|
+ editComponentProps: {
|
|
|
+ size: 'middle',
|
|
|
+ },
|
|
|
+ editRow: true,
|
|
|
+ editable: true,
|
|
|
+ width: 400,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ dataIndex: 'value',
|
|
|
+ title: '保额(万)',
|
|
|
+ editComponent: 'InputNumber',
|
|
|
+ editRule: true,
|
|
|
+ editComponentProps: {
|
|
|
+ size: 'middle',
|
|
|
+ min: 1,
|
|
|
+ precision: 2,
|
|
|
+ },
|
|
|
+ editRow: true,
|
|
|
+ editable: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ dataIndex: 'operation',
|
|
|
+ title: 'operation',
|
|
|
+ fixed: 'right',
|
|
|
+ width: 80,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ value: model[field],
|
|
|
+ showAction: true,
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '显隐状态',
|
|
|
+ required: true,
|
|
|
+ field: 'status',
|
|
|
+ component: 'Switch',
|
|
|
+ componentProps: {
|
|
|
+ unCheckedValue: 1,
|
|
|
+ checkedValue: 0,
|
|
|
+ },
|
|
|
+ defaultValue: 0,
|
|
|
+ },
|
|
|
+ // TODO 主键隐藏字段,目前写死为ID
|
|
|
+ {
|
|
|
+ label: '',
|
|
|
+ field: 'id',
|
|
|
+ component: 'Input',
|
|
|
+ show: false,
|
|
|
+ },
|
|
|
+];
|
|
|
+
|
|
|
+/**
|
|
|
+ * 流程表单调用这个方法获取formSchema
|
|
|
+ * @param param
|
|
|
+ */
|
|
|
+export function getBpmFormSchema(_formData): FormSchema[] {
|
|
|
+ // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema
|
|
|
+ return formSchema;
|
|
|
+}
|