index.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <template>
  2. <div class="mainContentBox">
  3. <avue-crud
  4. ref="crudRef"
  5. v-model="form"
  6. v-model:page="page"
  7. v-model:search="search"
  8. :data="data"
  9. :option="option"
  10. @row-update="updateRow"
  11. @row-del="deleteRow"
  12. @search-change="searchChange"
  13. @search-reset="resetChange"
  14. @size-change="dataList"
  15. @current-change="dataList"
  16. @selection-change="selectionChange"
  17. >
  18. <template #menu-left="{ size }">
  19. <el-button
  20. :size="size"
  21. icon="el-icon-plus"
  22. type="primary"
  23. @click="addRow"
  24. >新增
  25. </el-button
  26. >
  27. <el-button
  28. :disabled="toDeleteIds.length < 1"
  29. :size="size"
  30. icon="el-icon-delete"
  31. type="danger"
  32. @click="multipleDelete"
  33. >删除
  34. </el-button
  35. >
  36. </template>
  37. <template #menu="{row,index,type}">
  38. <el-button icon="el-icon-edit"
  39. text
  40. type="primary"
  41. @click="editSkills(row)"
  42. >编辑
  43. </el-button>
  44. <el-button icon="el-icon-view"
  45. text
  46. type="primary"
  47. @click="viewSkills(row)"
  48. >查看
  49. </el-button>
  50. </template>
  51. </avue-crud>
  52. <el-dialog
  53. v-model="dialog.visible"
  54. :destroy-on-close="true"
  55. :title="dialog.title"
  56. width="800px"
  57. @close="addClose"
  58. >
  59. <user-skill :dialog="dialog"/>
  60. </el-dialog>
  61. <el-dialog
  62. v-model="editDialog.visible"
  63. :destroy-on-close="true"
  64. :title="editDialog.title"
  65. width="800px"
  66. @close="editClose"
  67. >
  68. <editSkill :editDialog="editDialog" :postId="editUser.postId" :skillId="editUser.id"/>
  69. </el-dialog>
  70. <el-dialog
  71. v-model="viewDialog.visible"
  72. :destroy-on-close="true"
  73. :title="viewDialog.title"
  74. width="800px"
  75. @close="viewDialog.visible=false"
  76. >
  77. <viewSkill :postId="viewUser.postId" :skillId="viewUser.id" :viewDialog="viewDialog"/>
  78. </el-dialog>
  79. </div>
  80. </template>
  81. <script setup>
  82. import {ref, getCurrentInstance} from "vue";
  83. import {useCrud} from "@/hooks/userCrud";
  84. import ButtonPermKeys from "@/common/configs/buttonPermission";
  85. import {useCommonStoreHook, useDictionaryStore} from "@/store";
  86. import dictDataUtil from "@/common/configs/dictDataUtil";
  87. import editSkill from "@/views/base/skill/components/edit-skill.vue"
  88. import viewSkill from "@/views/base/skill/components/view-skill.vue"
  89. const {isShowTable, tableType} = toRefs(useCommonStoreHook());
  90. // 数据字典相关
  91. const {dicts} = useDictionaryStore();
  92. const test = () => {
  93. isShowTable.value = true;
  94. tableType.value = tableType.value == 1 ? 2 : 1;
  95. };
  96. const dialog = reactive({
  97. title: "员工技能",
  98. visible: false,
  99. });
  100. const editDialog = reactive({
  101. title: "编辑",
  102. visible: false,
  103. });
  104. const viewDialog = reactive({
  105. title: "查看",
  106. visible: false,
  107. });
  108. const addClose = () => {
  109. dialog.visible = false;
  110. dataList();
  111. }
  112. const editClose = () => {
  113. editDialog.visible = false;
  114. dataList();
  115. }
  116. const addRow = () => {
  117. dialog.visible = true;
  118. }
  119. // 传入一个url,后面不带/
  120. const {form, data, option, search, page, toDeleteIds, Methords, Utils} =
  121. useCrud({
  122. src: "/api/v1/sys/employeeSkill",
  123. });
  124. const {dataList, createRow, updateRow, deleteRow, searchChange, resetChange} =
  125. Methords; //增删改查
  126. const {selectionChange, multipleDelete} = Methords; //选中和批量删除事件
  127. const {checkBtnPerm, downloadTemplate, exportData} = Utils; //按钮权限等工具
  128. // checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
  129. // const permission = reactive({
  130. // delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
  131. // addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
  132. // editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
  133. // menu: true,
  134. // });
  135. const ctableRef = ref(null); //crudRef.value 获取avue-crud对象
  136. const router = useRouter();
  137. onMounted(() => {
  138. // console.log("crudRef", crudRef)
  139. dataList();
  140. });
  141. /**
  142. * 上传excel相关
  143. */
  144. const uploadRef = ref(null);
  145. const uploadFinished = () => {
  146. // 上传完成后的刷新操作
  147. page.currentPage = 1;
  148. dataList();
  149. };
  150. const importExcelData = () => {
  151. if (uploadRef.value) {
  152. uploadRef.value.show("/api/v1/plan/order/import");
  153. }
  154. };
  155. const editUser = ref(null);
  156. const viewUser = ref(null);
  157. const editSkills = (row) => {
  158. editDialog.visible = true;
  159. editUser.value = row;
  160. }
  161. const viewSkills = (row) => {
  162. viewDialog.visible = true;
  163. viewUser.value = row;
  164. }
  165. // 设置表格列或者其他自定义的option
  166. option.value = Object.assign(option.value, {
  167. selection: true,
  168. addBtn: false,
  169. viewBtn: false,
  170. editBtn: false,
  171. column: [
  172. {
  173. label: "所属机构", prop: "institution", width: 130,
  174. search: true,
  175. filterable: true,
  176. type: "select",
  177. overHidden: true,
  178. dicUrl: dictDataUtil.dept_list_url,
  179. dicMethod: "post",
  180. props: {label: "deptName", value: "id"},
  181. disabled: true,
  182. },
  183. {
  184. label: "员工姓名", prop: "userName", width: 140, overHidden: true, search: true, rules: [{
  185. required: true,
  186. search: true,
  187. message: "请选择员工姓名",
  188. trigger: "blur"
  189. }],
  190. },
  191. {
  192. label: "员工编号",
  193. prop: "employeeCode",
  194. search: true,
  195. disabled: true,
  196. },
  197. {
  198. label: "岗位", prop: "postId",
  199. search: true,
  200. filterable: true,
  201. type: "select",
  202. overHidden: true,
  203. dicUrl: dictDataUtil.post_list_url,
  204. dicMethod: "post",
  205. props: {label: "postName", value: "id"},
  206. },
  207. {
  208. label: "部门", prop: "deptName", overHidden: true,
  209. disabled: true,
  210. },
  211. {
  212. label: "分数",
  213. prop: "scopes",
  214. filterable: true,
  215. },
  216. ],
  217. });
  218. const onSelectedFinish = () => {
  219. }
  220. </script>