index.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <!-- vue 页面模板 -->
  2. <template>
  3. <div class="user">
  4. <Space wrap style="margin-bottom: 1em">
  5. <Button type="primary" icon="ios-search" @click="() => show_edit()">
  6. 新增
  7. </Button>
  8. <Input
  9. v-model="searchText"
  10. placeholder="请输入搜索内容"
  11. icon="ios-search"
  12. @on-click="() => change(1)"
  13. @on-enter="() => change(1)"
  14. >
  15. </Input>
  16. <Select v-model="organ_val" style="width: 200px">
  17. <Option
  18. v-for="item in organ"
  19. :value="item.organId"
  20. :key="item.organId"
  21. >{{ item.name }}</Option
  22. >
  23. </Select>
  24. </Space>
  25. <Table highlight-row ref="currentRowTable" :columns="columns" :data="list">
  26. <template #tool="{ row }">
  27. <Space wrap>
  28. <Poptip
  29. transfer
  30. confirm
  31. width="90"
  32. title="删除该用户?"
  33. @on-ok="() => del_user(row)"
  34. >
  35. <Button size="small" type="error"> 删 除 </Button>
  36. </Poptip>
  37. <Button size="small" type="primary" @click="() => show_edit(row)">
  38. 修 改
  39. </Button>
  40. </Space>
  41. </template>
  42. <template #photo="{ row }">
  43. <img :src="row.photo" alt="暂无图片" style="width: 60px" />
  44. </template>
  45. </Table>
  46. <br />
  47. <Page
  48. :total="total"
  49. show-sizer
  50. v-model="page"
  51. @on-change="change"
  52. @on-page-size-change="sizeChange"
  53. />
  54. <Drawer
  55. :mask-closable="false"
  56. title="直播流详情"
  57. placement="right"
  58. v-model="show_user_edit"
  59. >
  60. <Form
  61. ref="formInline"
  62. :model="user"
  63. :rules="ruleInline"
  64. :label-width="80"
  65. >
  66. <FormItem label="姓名">
  67. <Input v-model="user.name" placeholder="请输入姓名"></Input>
  68. </FormItem>
  69. <FormItem label="简述">
  70. <Input v-model="user.info" placeholder="请输入简述"></Input>
  71. </FormItem>
  72. <FormItem label="头像">
  73. </FormItem>
  74. <FormItem label="职位">
  75. <Input
  76. v-model="user.position"
  77. :row="4"
  78. placeholder="请输入职位"
  79. ></Input>
  80. </FormItem>
  81. <FormItem label="级别">
  82. <Input
  83. v-model="user.position"
  84. :row="4"
  85. placeholder="请输入职位"
  86. ></Input>
  87. </FormItem>
  88. <FormItem label="职位">
  89. <Input
  90. v-model="user.position"
  91. :row="4"
  92. placeholder="请输入职位"
  93. ></Input>
  94. </FormItem>
  95. <FormItem>
  96. <Button type="primary" @click="save_user">保 存</Button>
  97. </FormItem>
  98. </Form>
  99. </Drawer>
  100. </div>
  101. </template>
  102. <script setup>
  103. import { ref, onMounted } from 'vue';
  104. import { Message } from 'view-ui-plus';
  105. import api from '../../api/index.js';
  106. const searchText = ref('');
  107. const total = ref(0);
  108. const page = ref(1);
  109. const pageSize = ref(10);
  110. const formInline = ref(null);
  111. const list = ref([]);
  112. const user = ref({
  113. headSculpture: [],
  114. regionId: '',
  115. });
  116. const organ = ref([]);
  117. const organ_val = ref('');
  118. const show_user_edit = ref(false);
  119. const columns = [
  120. {
  121. title: '姓名',
  122. key: 'name',
  123. align: 'center',
  124. },
  125. {
  126. title: '职位',
  127. key: 'position',
  128. align: 'center',
  129. },
  130. {
  131. title: '头像',
  132. slot: 'photo',
  133. align: 'center',
  134. },
  135. {
  136. title: '操作',
  137. slot: 'tool',
  138. align: 'center',
  139. },
  140. ];
  141. const ruleInline = {
  142. name: [
  143. {
  144. required: true,
  145. message: '请输入姓名',
  146. trigger: 'blur',
  147. },
  148. ],
  149. };
  150. onMounted(() => {});
  151. get_list();
  152. get_organ_api();
  153. function change(p) {
  154. page.value = p;
  155. get_list();
  156. }
  157. function sizeChange(pageSize) {
  158. pageSize.value = pageSize;
  159. get_list();
  160. }
  161. function get_list() {
  162. api
  163. .leader_api({
  164. page: page.value,
  165. pageSize: pageSize.value,
  166. name: searchText.value,
  167. })
  168. .then(r => {
  169. console.log(r);
  170. list.value = r.records || [];
  171. total.value = r.total || 0;
  172. });
  173. }
  174. function show_edit(data) {
  175. const row = JSON.parse(JSON.stringify(data || {}));
  176. show_user_edit.value = true;
  177. user.value = row || {
  178. headSculpture: [],
  179. organId: '',
  180. };
  181. }
  182. function save_user() {
  183. formInline.value.validate(valid => {
  184. if (!valid) return;
  185. const U = user.value;
  186. const p = {
  187. info: U.info,
  188. photo: U.photo,
  189. position: U.position,
  190. resume: U.resume,
  191. level: U.level,
  192. regionId: U.regionId,
  193. sort: U.sort,
  194. organId: U.organId,
  195. name: U.name,
  196. leaderId: U.leaderId,
  197. };
  198. console.log(p);
  199. // if (!U.leaderId)
  200. // api.leader_add(p).then(() => {
  201. // Message.info('新增成功');
  202. // show_user_edit.value = false;
  203. // get_list();
  204. // });
  205. // else
  206. // api.leader_update(p).then(() => {
  207. // Message.info('修改成功');
  208. // show_user_edit.value = false;
  209. // get_list();
  210. // });
  211. });
  212. }
  213. function get_organ_api() {
  214. api
  215. .organ_api({
  216. page: 1,
  217. pageSize: 100000,
  218. })
  219. .then(r => {
  220. organ.value = r.records || [];
  221. });
  222. }
  223. function del_user(row) {
  224. api.live_del(row.liveId).then(() => {
  225. Message.info('删除成功');
  226. get_list();
  227. });
  228. }
  229. </script>
  230. <style lang="scss"></style>