|
@@ -12,35 +12,44 @@
|
|
|
<cButton @toAdd="toAdd"> </cButton>
|
|
|
</el-col>
|
|
|
<el-col :span="24" class="thr">
|
|
|
- <cTable :fields="fields" :opera="opera" :list="list" @query="search" :total="total" @rate="toRate" @edit="toEdit" @del="toDel" @changeUse="toChangeUse"> </cTable>
|
|
|
+ <cTable :fields="fields" :opera="opera" :list="list" @query="search" :total="total" @edit="toEdit" @del="toDel" @changeUse="toChangeUse"> </cTable>
|
|
|
</el-col>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<cDialog :dialog="dialog" @toClose="toClose">
|
|
|
<el-col :span="24" class="dialog_one" v-if="dialog.type == '1'">
|
|
|
<cForm :span="24" :fields="formFields" :form="form" :rules="{}" @save="toSave" label-width="auto">
|
|
|
- <template #params>
|
|
|
- <el-button class="button" type="primary" size="mini" @click="paramsAdd()">添加</el-button>
|
|
|
- <el-table :data="form.params" border size="mini">
|
|
|
- <el-table-column label="参数名" prop="label" align="center">
|
|
|
+ <template #work>
|
|
|
+ <el-button class="button" type="primary" size="mini" @click="workAdd('work')">添加</el-button>
|
|
|
+ <el-table :data="form.work" border size="mini">
|
|
|
+ <el-table-column label="时间" prop="time" align="center">
|
|
|
<template #default="scope">
|
|
|
- <el-input v-model="scope.row.label" placeholder="请输入参数名"></el-input>
|
|
|
+ <el-input v-model="scope.row.time" placeholder="请输入任职时间"></el-input>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="参数值" prop="value" align="center">
|
|
|
+ <el-table-column label="地点" prop="address" align="center">
|
|
|
<template #default="scope">
|
|
|
- <el-input v-model="scope.row.value" placeholder="请输入参数值"></el-input>
|
|
|
+ <el-input v-model="scope.row.address" placeholder="请输入地点"></el-input>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作" align="center">
|
|
|
+ <el-table-column label="操作" align="center" width="90px">
|
|
|
<template #default="scope">
|
|
|
- <el-button type="danger" size="mini" @click="paramsDel(scope.$index)">删除</el-button>
|
|
|
+ <el-button type="danger" size="mini" @click="workDel(scope.$index, 'work')">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</template>
|
|
|
- <template #img>
|
|
|
- <cUpload model="img" :list="form.img" :limit="1" url="/files/notarization/apply/upload" listType="picture-card" @change="onUpload"></cUpload>
|
|
|
+ <template #birth>
|
|
|
+ <el-date-picker v-model="form.birth" type="month" placeholder="请选择" format="YYYY年MM月" value-format="YYYY年MM月" />
|
|
|
+ </template>
|
|
|
+ <template #gender>
|
|
|
+ <el-option v-for="i in genderList" :key="i._id" :label="i.label" :value="i.value"></el-option>
|
|
|
+ </template>
|
|
|
+ <template #education>
|
|
|
+ <el-option v-for="i in educationList" :key="i._id" :label="i.label" :value="i.value"></el-option>
|
|
|
+ </template>
|
|
|
+ <template #logo>
|
|
|
+ <cUpload model="logo" :list="form.logo" :limit="1" url="/files/notarization/personnel/upload" listType="picture-card" @change="onUpload"></cUpload>
|
|
|
</template>
|
|
|
</cForm>
|
|
|
</el-col>
|
|
@@ -49,7 +58,6 @@
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { ref, Ref, onMounted, inject } from 'vue';
|
|
|
-import { useRouter } from 'vue-router';
|
|
|
// NeedChange
|
|
|
import { PersonnelStore } from '@/stores/core/personnel';
|
|
|
import { DictDataStore } from '@/stores/system/dictData';
|
|
@@ -64,7 +72,6 @@ onMounted(async () => {
|
|
|
loading.value = false;
|
|
|
});
|
|
|
// 路由
|
|
|
-const router = useRouter();
|
|
|
const loading: Ref<any> = ref(false);
|
|
|
// NeedChange
|
|
|
const store = PersonnelStore();
|
|
@@ -74,12 +81,20 @@ const $checkRes = inject('$checkRes') as Function;
|
|
|
// #region 字典
|
|
|
// NeedChange
|
|
|
const statusList: Ref<any> = ref([]);
|
|
|
+const genderList: Ref<any> = ref([]);
|
|
|
+const educationList: Ref<any> = ref([]);
|
|
|
|
|
|
const searchOther = async () => {
|
|
|
let res: IQueryResult;
|
|
|
// 是否使用
|
|
|
res = await dictDataStore.query({ code: 'isUse', is_use: '0' });
|
|
|
if ($checkRes(res)) statusList.value = res.data;
|
|
|
+ // 性别
|
|
|
+ res = await dictDataStore.query({ code: 'gender', is_use: '0' });
|
|
|
+ if ($checkRes(res)) genderList.value = res.data;
|
|
|
+ // 学历
|
|
|
+ res = await dictDataStore.query({ code: 'education', is_use: '0' });
|
|
|
+ if ($checkRes(res)) educationList.value = res.data;
|
|
|
};
|
|
|
// #endregion
|
|
|
|
|
@@ -125,14 +140,19 @@ const toChangeUse = async (data) => {
|
|
|
// #region 表格及操作
|
|
|
// NeedChange
|
|
|
let fields: Ref<any[]> = ref([
|
|
|
- { label: '菜品名称', model: 'name', isSearch: true },
|
|
|
- { label: '卡路里(大卡)', model: 'reserve' },
|
|
|
- { label: '状态', model: 'is_use', format: (i) => getDict(i, 'is_use'), isSearch: true, type: 'select' }
|
|
|
+ { label: '姓名', model: 'name', isSearch: true },
|
|
|
+ { label: '性别', model: 'gender', format: (i) => getDict(i, 'gender') },
|
|
|
+ { label: '出生年月', model: 'birth' },
|
|
|
+ { label: '学历', model: 'education', format: (i) => getDict(i, 'education') },
|
|
|
+ { label: '专业', model: 'speciality' },
|
|
|
+ { label: '职务', model: 'zw' },
|
|
|
+ { label: '职称', model: 'zc' },
|
|
|
+ { label: '执业证号', model: 'number' },
|
|
|
+ { label: '是否使用', model: 'is_use', format: (i) => getDict(i, 'is_use'), isSearch: true, type: 'select' }
|
|
|
]);
|
|
|
// 操作
|
|
|
let opera: Ref<any[]> = ref([
|
|
|
{ label: '修改', method: 'edit' },
|
|
|
- { label: '评价', method: 'rate' },
|
|
|
{ label: '禁用', method: 'changeUse', type: 'warning', confirm: true, display: (i) => i.is_use === '0' },
|
|
|
{ label: '使用', method: 'changeUse', type: 'success', confirm: true, display: (i) => i.is_use === '1' },
|
|
|
{ label: '删除', method: 'del', confirm: true, type: 'danger' }
|
|
@@ -144,6 +164,12 @@ const getDict = (data, model) => {
|
|
|
case 'is_use':
|
|
|
list = statusList.value;
|
|
|
break;
|
|
|
+ case 'gender':
|
|
|
+ list = genderList.value;
|
|
|
+ break;
|
|
|
+ case 'education':
|
|
|
+ list = educationList.value;
|
|
|
+ break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
@@ -152,20 +178,14 @@ const getDict = (data, model) => {
|
|
|
return get(res, 'label');
|
|
|
};
|
|
|
const toAdd = () => {
|
|
|
- formFields.value = formFieldsForCreate;
|
|
|
// 所属人是自己,需要把自己的id放进去
|
|
|
form.value = { ...cloneDeep(defaultForm) };
|
|
|
dialog.value.show = true;
|
|
|
};
|
|
|
const toEdit = async (data) => {
|
|
|
- formFields.value = formFieldsForUpdate;
|
|
|
form.value = { ...data };
|
|
|
dialog.value.show = true;
|
|
|
};
|
|
|
-// 菜品评价
|
|
|
-const toRate = async (data) => {
|
|
|
- router.push({ path: '/rate', query: { id: data._id } });
|
|
|
-};
|
|
|
// #endregion
|
|
|
|
|
|
// #region 常规接口
|
|
@@ -190,37 +210,33 @@ const toDel = async (data) => {
|
|
|
|
|
|
// #region 表单及操作
|
|
|
// NeedChange
|
|
|
-const defaultForm = { is_use: '0', img: [] };
|
|
|
-const formFields: Ref<any> = ref();
|
|
|
+const defaultForm = { is_use: '0', logo: [], work: [] };
|
|
|
+const formFields: Ref<any> = ref([
|
|
|
+ { label: '证件照', model: 'logo', custom: true },
|
|
|
+ { label: '姓名', model: 'name' },
|
|
|
+ { label: '性别', model: 'gender', type: 'select' },
|
|
|
+ { label: '出生年月', model: 'birth', custom: true },
|
|
|
+ { label: '学历', model: 'education', type: 'select' },
|
|
|
+ { label: '专业', model: 'speciality' },
|
|
|
+ { label: '职务', model: 'zw' },
|
|
|
+ { label: '职称', model: 'zc' },
|
|
|
+ { label: '执业证号', model: 'number' },
|
|
|
+ { label: '工作经历', model: 'work', custom: true },
|
|
|
+ { label: '简介', model: 'brief', type: 'textarea' }
|
|
|
+]);
|
|
|
const dialog: Ref<any> = ref({ title: '数据信息', show: false, type: '1' });
|
|
|
-const form: Ref<any> = ref({ img: [], params: [] });
|
|
|
-const formFieldsForCreate = [
|
|
|
- { label: '菜品名称', model: 'name' },
|
|
|
- { label: '卡路里(大卡)', model: 'reserve', type: 'number' },
|
|
|
- { label: '参数列表', model: 'params', custom: true },
|
|
|
- { label: '图片', model: 'img', custom: true },
|
|
|
- { label: '菜品介绍', model: 'content', type: 'textarea' },
|
|
|
- { label: '备注', model: 'remark', type: 'textarea' }
|
|
|
-];
|
|
|
-const formFieldsForUpdate = [
|
|
|
- { label: '菜品名称', model: 'name' },
|
|
|
- { label: '卡路里(大卡)', model: 'reserve', type: 'number' },
|
|
|
- { label: '参数列表', model: 'params', custom: true },
|
|
|
- { label: '图片', model: 'img', custom: true },
|
|
|
- { label: '菜品介绍', model: 'content', type: 'textarea' },
|
|
|
- { label: '备注', model: 'remark', type: 'textarea' }
|
|
|
-];
|
|
|
+const form: Ref<any> = ref({ logo: [], work: [] });
|
|
|
// 添加参数
|
|
|
-const paramsAdd = () => {
|
|
|
- let list = form.value.params || [];
|
|
|
+const workAdd = (text) => {
|
|
|
+ let list = form.value[text] || [];
|
|
|
list.push({});
|
|
|
- form.value.params = list;
|
|
|
+ form.value.work = list;
|
|
|
};
|
|
|
// 删除参数
|
|
|
-const paramsDel = (index: number) => {
|
|
|
- let list = form.value.params;
|
|
|
+const workDel = (index: number, text: string) => {
|
|
|
+ let list = form.value[text];
|
|
|
list.splice(index, 1);
|
|
|
- form.value.params = list;
|
|
|
+ form.value[text] = list;
|
|
|
};
|
|
|
// 关闭弹框
|
|
|
const toClose = () => {
|