dialog.des.vue 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. <template>
  2. <div class="rule-type">
  3. <DialogCom
  4. :title="id ? '高管工作部署会议记录详情' : '新增高管工作部署会议记录'"
  5. :visible.sync="isShow"
  6. @close="onHide"
  7. width="700px"
  8. >
  9. <div class="page-body">
  10. <el-form
  11. :model="formData"
  12. size="small"
  13. ref="form"
  14. label-position="right"
  15. label-width="130px"
  16. label-prefix=":"
  17. >
  18. <el-descriptions
  19. class="margin-top"
  20. :column="1"
  21. size="medium"
  22. border
  23. :label-style="labelStyle"
  24. :contentStyle="content_style"
  25. >
  26. <el-descriptions-item
  27. labelClassName="gx_info_label"
  28. label="行社名称"
  29. >
  30. {{ formData.orgName }}
  31. </el-descriptions-item>
  32. <!-- <el-form-item prop="orgId" label="行社名称:">
  33. <el-input
  34. :readonly="true"
  35. v-model="formData.orgName"
  36. :disabled="true"
  37. ></el-input>
  38. </el-form-item> -->
  39. <el-descriptions-item
  40. labelClassName="gx_info_label"
  41. label="会议主题"
  42. >
  43. {{ formData.title }}
  44. </el-descriptions-item>
  45. <!-- <el-form-item prop="title" label="会议主题:">
  46. <el-input
  47. :disabled="true"
  48. style="width: 100%; margin-bottom: 20px"
  49. v-model="formData.title"
  50. placeholder="请输入会议主题"
  51. ></el-input>
  52. </el-form-item> -->
  53. <el-descriptions-item
  54. labelClassName="gx_info_label"
  55. label="会议日期"
  56. >
  57. {{
  58. formData.date
  59. ? dayjs(formData.date).format("YYYY年MM月DD日")
  60. : ""
  61. }}
  62. </el-descriptions-item>
  63. <!-- <el-form-item prop="date" label="会议日期:">
  64. <el-date-picker
  65. :disabled="true"
  66. v-model="formData.date"
  67. style="width: 240px"
  68. value-format="yyyy-MM-dd"
  69. placeholder="请选择会议日期"
  70. type="date"
  71. :clearable="false"
  72. ></el-date-picker>
  73. </el-form-item> -->
  74. <el-descriptions-item labelClassName="gx_info_label" label="主持人">
  75. {{ getLabel(dict.type.hsggbsdj_role, formData.roleId) }}
  76. </el-descriptions-item>
  77. <!-- <el-form-item prop="userIds" label="主持人:">
  78. <div>
  79. <el-input
  80. :disabled="true"
  81. :readonly="true"
  82. v-model="joinedStringArray"
  83. placeholder="点击选择"
  84. ></el-input>
  85. <el-button @click="selectUser" v-if="false">选择</el-button>
  86. </div>
  87. </el-form-item> -->
  88. <el-descriptions-item
  89. labelClassName="gx_info_label"
  90. label="参会人员"
  91. >
  92. {{ formData.joinNames }}
  93. </el-descriptions-item>
  94. <!-- <el-form-item prop="title" label="参会人员:">
  95. <el-input
  96. :disabled="true"
  97. style="width: 100%; margin-bottom: 20px"
  98. v-model="formData.joinNames"
  99. placeholder="请输入参会人员"
  100. ></el-input>
  101. </el-form-item> -->
  102. <el-descriptions-item
  103. labelClassName="gx_info_label"
  104. label="附件(包含不限于会议照片,会议通知等)"
  105. >
  106. <!-- <imgs-upload
  107. :limit="5"
  108. v-model="formData.images"
  109. :fileSize="2"
  110. ></imgs-upload> -->
  111. <W-file-upload
  112. :isRem="false"
  113. :isShowTip="false"
  114. ref="upload"
  115. :defaultValue="formFileListDefualtValue"
  116. v-model="formData.images"
  117. />
  118. </el-descriptions-item>
  119. <!-- <el-form-item
  120. label="附件(包含不限于会议照片,会议通知等)"
  121. prop="images"
  122. >
  123. <imgs-upload
  124. :limit="5"
  125. v-model="formData.images"
  126. :fileSize="2"
  127. ></imgs-upload>
  128. </el-form-item> -->
  129. <el-descriptions-item
  130. labelClassName="gx_info_label"
  131. label="会议重点"
  132. >
  133. {{ formData.content }}
  134. </el-descriptions-item>
  135. <!-- <el-form-item label="会议重点" prop="content">
  136. <el-input :disable="true" :readonly="true" type="textarea" v-model="formData.content" rows="6" :autosize="{ minRows: 6, maxRows: 10 }"></el-input>
  137. </el-form-item> -->
  138. </el-descriptions>
  139. </el-form>
  140. </div>
  141. <div style="margin-top: 100px" slot="footer" class="dialog-footer">
  142. <el-button @click="isShow = false">确定</el-button>
  143. <!-- <el-button type="primary" @click="onSubmit">确定</el-button> -->
  144. </div>
  145. </DialogCom>
  146. <UserSelector ref="UserSelector" @select="onUserSelect"></UserSelector>
  147. </div>
  148. </template>
  149. <script>
  150. import { mapState, mapMutations } from "vuex";
  151. import { getLabel } from "@/views/commonOption.js";
  152. import { Add, edit, gethsggbsdj } from "@/api/safetyBook/hsggbsdj";
  153. import { deptTreeSelect } from "@/api/system/public";
  154. import UserSelector from "@/components/userSelector/index.vue";
  155. import ImgsUpload from "@/components/ImgsUpload";
  156. import Editor from "@/components/Editor";
  157. import dayjs from "dayjs";
  158. import WFileUpload from "@/components/W-FileUpload/index.vue";
  159. export default {
  160. components: { UserSelector, ImgsUpload, Editor,WFileUpload },
  161. dicts: ["hsggbsdj_role"],
  162. data() {
  163. return {
  164. labelStyle: {
  165. color: "#000",
  166. "text-align": "center",
  167. height: "40px",
  168. "min-width": "150px",
  169. "word-break": "keep-all",
  170. },
  171. content_style: {
  172. "text-align": "left",
  173. "min-width": "300px",
  174. "word-break": "break-all",
  175. },
  176. formFileListDefualtValue:[],
  177. id: null,
  178. isShow: false,
  179. formData: this.reset(),
  180. //修改新增中的机构树
  181. deptOptions: [],
  182. formDataRules: {
  183. userIds: [{ required: true, message: "请选择主持人" }],
  184. date: [{ required: true, message: "请选择开会日期" }],
  185. images: [{ required: true, message: "请选择照片" }],
  186. content: [{ required: true, message: "请输入内容" }],
  187. title: [{ required: true, message: "请输入主题" }],
  188. orgId: [{ required: true, message: "请选择行社" }],
  189. joinNames: [{ required: true, message: "请输入参会人员" }],
  190. },
  191. };
  192. },
  193. watch: {},
  194. computed: {
  195. ...mapState([]),
  196. // joinedStringArray: {
  197. // get() {
  198. // if (this.formData.names == null || this.formData.names == undefined) {
  199. // this.formData.names = this.formData.userNames.split(", ");
  200. // }
  201. // return this.formData.names.join(", ");
  202. // },
  203. // set(value) {
  204. // this.formData.names = value.split(", ");
  205. // },
  206. // },
  207. },
  208. methods: {
  209. ...mapMutations([]),
  210. getLabel,
  211. isPic(url) {
  212. if (url.endsWith("jpg") || url.endsWith("png")) {
  213. return true;
  214. }
  215. return false;
  216. },
  217. dayjs,
  218. /** 查询机构树数据 */
  219. getDeptTree() {
  220. deptTreeSelect().then((response) => {
  221. this.deptOptions = response.data;
  222. });
  223. },
  224. /** treeSelect组件自定义数据*/
  225. tenantIdnormalizer(node, instanceId) {
  226. if (node.children && !node.children.length) {
  227. delete node.children;
  228. }
  229. return {
  230. id: node.id,
  231. label: node.shortName,
  232. children: node.children,
  233. };
  234. },
  235. reset() {
  236. return {
  237. id: null,
  238. names: [],
  239. userIds: [],
  240. date: null,
  241. images: [],
  242. content: null,
  243. title: null,
  244. joinNames: null,
  245. orgId: null,
  246. };
  247. },
  248. async refresh(id) {
  249. if (id != null && id != undefined) {
  250. await gethsggbsdj(id).then((res) => {
  251. // this.formData.names = res.data.userNames.split(",");
  252. this.formData = res.data;
  253. this.formFileListDefualtValue=res.data.images;
  254. });
  255. }
  256. },
  257. async show(id) {
  258. // console.log(id, "id");
  259. this.getDeptTree();
  260. this.formData = this.reset();
  261. this.id = id;
  262. await this.refresh(id);
  263. this.isShow = true;
  264. },
  265. // 事件
  266. onHide() {
  267. this.formData = this.reset();
  268. this.$refs.form.resetFields();
  269. },
  270. onSubmit() {
  271. console.log(this.formData, "this.formData");
  272. this.$refs.form.validate(async (isValidate) => {
  273. if (!isValidate) return;
  274. if (this.id == null || this.id == undefined) {
  275. await Add(this.formData).then((res) => {
  276. this.$emit("success");
  277. this.isShow = false;
  278. });
  279. } else {
  280. await edit(this.formData).then((res) => {
  281. this.$emit("success");
  282. this.isShow = false;
  283. });
  284. }
  285. });
  286. },
  287. //选择用户回调
  288. onUserSelect(data) {
  289. var ids = data.map((obj) => obj.id);
  290. var names = data.map((obj) => obj.name);
  291. this.formData.userIds = ids;
  292. this.formData.names = names;
  293. this.formData.userNames = names.join(",");
  294. // console.log(this.formData.userIds, "this.formData.userIds");
  295. },
  296. //用户选择
  297. selectUser(event) {
  298. // event.preventDefault();
  299. this.$refs.UserSelector.show();
  300. },
  301. // 事件
  302. //apimark//
  303. },
  304. mounted() {},
  305. };
  306. </script>
  307. <style lang="scss" scoped>
  308. .brand_info {
  309. .el-form {
  310. width: 600px;
  311. padding-top: 40px;
  312. }
  313. }
  314. </style>