wishInfoUserRecord-detail.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. <template>
  2. <el-dialog
  3. :visible.sync="showDialog"
  4. :title="title"
  5. :modal-append-to-body="false"
  6. style="text-align: left"
  7. @close="closeDialog"
  8. :close-on-click-modal="false"
  9. width="1000px"
  10. >
  11. <div class="user-panel" v-loading="loading">
  12. <el-card class="box-card">
  13. <div slot="header" class="clearfix">
  14. <span>作品信息</span>
  15. </div>
  16. <div class="text item">
  17. <el-row>
  18. <el-col :span="6" >
  19. <div class="grid-content bg-purple-light">
  20. <el-descriptions>
  21. <el-descriptions-item label="心愿图片">
  22. <el-link :href="formModel.wishInfo.image" target="blank_" :underline="false">
  23. <el-image
  24. style="width: 100px; height: 100px"
  25. :src="formModel.wishInfo.image">
  26. </el-image>
  27. </el-link>
  28. </el-descriptions-item>
  29. </el-descriptions>
  30. </div>
  31. </el-col>
  32. <el-col :span="18">
  33. <div class="grid-content bg-purple-light">
  34. <el-descriptions >
  35. <el-descriptions-item label="作品名称">{{formModel.wishInfo.title}}</el-descriptions-item>
  36. <el-descriptions-item label="学生姓名">{{formModel.wishInfo.studentName}}</el-descriptions-item>
  37. <el-descriptions-item label="学生心愿">{{formModel.wishInfo.aspirationsName}}</el-descriptions-item>
  38. </el-descriptions>
  39. </div>
  40. </el-col>
  41. </el-row>
  42. </div>
  43. </el-card>
  44. <el-card class="box-card2">
  45. <div slot="header" class="clearfix">
  46. <span>爱心人士信息</span>
  47. </div>
  48. <div class="text item">
  49. <el-descriptions>
  50. <el-descriptions-item label="爱心人士">{{formModel.wishInfoUserRecord.regUserName}}</el-descriptions-item>
  51. <el-descriptions-item label="手机号">18100000000</el-descriptions-item>
  52. <el-descriptions-item label="居住地">苏州市</el-descriptions-item>
  53. <el-descriptions-item label="是否现场互换心愿">
  54. <span v-if="formModel.wishInfoUserRecord.isSpot">是</span>
  55. <span v-else>否</span>
  56. </el-descriptions-item>
  57. </el-descriptions>
  58. </div>
  59. </el-card>
  60. <el-card class="box-card2">
  61. <div slot="header" class="clearfix">
  62. <span>校方信息</span>
  63. </div>
  64. <div class="text item">
  65. <el-descriptions>
  66. <el-descriptions-item label="收件人">{{formModel.wishInfoUserRecord.recipients}}</el-descriptions-item>
  67. <el-descriptions-item label="收件人电话">{{formModel.wishInfoUserRecord.recipientsPhone}}</el-descriptions-item>
  68. <el-descriptions-item label="收件人地址">{{formModel.wishInfoUserRecord.recipientsAddress}}</el-descriptions-item>
  69. <el-descriptions-item label="寄件人">{{formModel.wishInfoUserRecord.sender}}</el-descriptions-item>
  70. <el-descriptions-item label="寄件人电话">{{formModel.wishInfoUserRecord.senderPhone}}</el-descriptions-item>
  71. <el-descriptions-item label="寄件人地址">{{formModel.wishInfoUserRecord.senderAddress}}</el-descriptions-item>
  72. <el-descriptions-item label="流水号">{{formModel.wishInfoUserRecord.num}}</el-descriptions-item>
  73. <el-descriptions-item label="互换状态">{{formModel.wishInfoUserRecord.statusN}}</el-descriptions-item>
  74. </el-descriptions>
  75. </div>
  76. </el-card>
  77. </div>
  78. <span slot="footer" class="dialog-footer">
  79. <el-button @click="closeDialog">取 消</el-button>
  80. </span>
  81. </el-dialog>
  82. </template>
  83. <script>
  84. import Constant from "@/constant";
  85. import { getToken } from "@/utils/auth"; // get token from cookie
  86. import wishInfoUserRecordApi from "@/api/base/wishInfoUserRecord";
  87. import dataDictionaryApi from "@/api/sys/dataDictionary";
  88. export default {
  89. props: ["businessKey", "title"],
  90. data() {
  91. return {
  92. showPwd: true,
  93. ruleValidate: {
  94. category: [
  95. { required: true, message: "类型不能为空", trigger: "blur" },
  96. ],
  97. title: [
  98. { required: true, message: "标题不能为空", trigger: "blur" },
  99. ],
  100. amount: [
  101. { required: true, message: "数量不能为空", trigger: "blur" },
  102. ],
  103. studentName: [
  104. { required: true, message: "学生姓名不能为空", trigger: "blur" },
  105. ],
  106. studentType: [
  107. { required: true, message: "学生类型不能为空", trigger: "blur" },
  108. ],
  109. },
  110. roleList: [],
  111. formModel: {
  112. wishInfoUserRecord:[],
  113. wishInfo:[]
  114. },
  115. showDialog: true,
  116. loading: false,
  117. submitting: false,
  118. categoryList:[],
  119. //上传地址
  120. uploadUrl: Constant.serverUrl + "/uploadPicture",
  121. uploadData: {
  122. subFolder: "love-donation",
  123. },
  124. fileUrl: "",
  125. fileUrl1: "",
  126. headers: {
  127. Authorization: getToken(),
  128. },
  129. uploadUrl1: Constant.serverUrl + "/tinymce/upload?token=" + getToken(),
  130. };
  131. },
  132. created() {
  133. dataDictionaryApi.findByCatalogName({catalogName: "心愿类型",})
  134. .then((response) => {
  135. var jsonData = response.data;
  136. this.categoryList = jsonData.data;
  137. });
  138. },
  139. methods: {
  140. closeDialog() {
  141. this.$emit("close", false);
  142. },
  143. handleSubmit() {
  144. var self = this;
  145. this.$refs["form"].validate((valid) => {
  146. if (valid) {
  147. (function () {
  148. var id = self.formModel.id;
  149. if (id == null || id.length == 0) {
  150. return wishInfoUserRecordApi.add(self.formModel);
  151. } else {
  152. self.formModel.password = null;
  153. return wishInfoUserRecordApi.update(self.formModel);
  154. }
  155. })().then(function (response) {
  156. var jsonData = response.data;
  157. if (jsonData.result) {
  158. self.$message({
  159. message: "保存成功!",
  160. type: "success",
  161. });
  162. self.$emit("close", true);
  163. } else {
  164. self.$message({
  165. message: jsonData.message + "",
  166. type: "warning",
  167. });
  168. self.$emit("close", false);
  169. }
  170. });
  171. }
  172. });
  173. },
  174. handleAvatarSuccess(res, file) {
  175. var self = this;
  176. self.formModel.image = res.data;
  177. self.fileUrl =
  178. res.data + "?x-oss-process=image/resize,m_lfit,h_300,w_300";
  179. },
  180. },
  181. async mounted() {
  182. var self = this;
  183. self.loading = true;
  184. (function () {
  185. if (self.businessKey != null && self.businessKey.length > 0) {
  186. return wishInfoUserRecordApi.edit(self.businessKey);
  187. } else {
  188. return wishInfoUserRecordApi.create();
  189. }
  190. })()
  191. .then((response) => {
  192. var jsonData = response.data;
  193. if (jsonData.result) {
  194. self.formModel = jsonData.data;
  195. //alert(JSON.stringify(self.formModel))
  196. self.showModal = true;
  197. let image = self.formModel.image;
  198. if (image != null) {
  199. self.fileUrl = image
  200. }
  201. if (self.formModel.introduction != null) {
  202. self.$refs.editor.setContent(self.formModel.introduction);
  203. }
  204. } else {
  205. self.$message.error(jsonData.message + "");
  206. }
  207. self.loading = false;
  208. })
  209. .catch((error) => {
  210. self.$message.error(error + "");
  211. self.loading = false;
  212. });
  213. },
  214. components: {
  215. },
  216. };
  217. </script>
  218. <style scoped>
  219. .user-panel {
  220. margin: 10px auto;
  221. }
  222. .avatar-uploader .el-upload {
  223. border: 1px dashed #d9d9d9;
  224. border-radius: 6px;
  225. cursor: pointer;
  226. position: relative;
  227. overflow: hidden;
  228. }
  229. .avatar-uploader .el-upload:hover {
  230. border-color: #409EFF;
  231. }
  232. .avatar-uploader-icon {
  233. font-size: 28px;
  234. color: #8c939d;
  235. width: 178px;
  236. height: 178px;
  237. line-height: 178px;
  238. text-align: center;
  239. }
  240. .avatar {
  241. width: 178px;
  242. height: 178px;
  243. display: block;
  244. }
  245. .box-card2{
  246. margin-top:10px
  247. }
  248. </style>