visit.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. <template>
  2. <div>
  3. <div class="search-term">
  4. <el-form :inline="true" :model="searchInfo" class="demo-form-inline" label-width="100">
  5. <el-row>
  6. <el-form-item label="姓名" prop="username">
  7. <el-input placeholder="请输入姓名" v-model="searchInfo.username" type="text" style="width: 120px;"
  8. clearable></el-input>
  9. </el-form-item>
  10. <el-form-item label="职务" prop="post">
  11. <el-input placeholder="请输入职务" v-model="searchInfo.post" type="text" style="width: 200px;"
  12. clearable></el-input>
  13. </el-form-item>
  14. <el-form-item label="开始时间" prop="post">
  15. <el-date-picker value-format="yyyy-MM-dd" type="date" style="width: 160px;"
  16. v-model="searchInfo.fromDate" />
  17. </el-form-item>
  18. <el-form-item label="结束时间" prop="post">
  19. <el-date-picker value-format="yyyy-MM-dd" type="date" style="width: 160px;"
  20. v-model="searchInfo.toDate" />
  21. </el-form-item>
  22. <el-form-item class="fr">
  23. <el-button type="primary" @click="newVisit">添加莅临</el-button>
  24. </el-form-item>
  25. </el-row>
  26. </el-form>
  27. </div>
  28. <el-card v-for="(row, index) in tableData" :key="index" class="no-card" style="margin-top: 8px;">
  29. <div slot="header" style="font-size: 16px;padding:0px;margin: 0px 0px 8px 0px">
  30. <el-col :span="5">
  31. <span>
  32. 领导姓名:
  33. <span class="text-blue">{{ row.username }}</span>
  34. </span>
  35. </el-col>
  36. <el-col :span="7">
  37. <span>
  38. 职务:
  39. <span class="text-blue"> {{row.post}}</span>
  40. </span>
  41. </el-col>
  42. <el-col :span="7">
  43. <span>
  44. 莅临时间:
  45. <span class="text-blue"> {{row.fromDate}} 到 {{row.toDate}}</span>
  46. </span>
  47. </el-col>
  48. </div>
  49. <div style="font-size: 20px;">
  50. <span v-html="row.tripSummary"></span>
  51. </div>
  52. <div style="font-size: 18px;padding: 26px 0 16px 0px">
  53. <el-col :span="5">
  54. <span>
  55. 陪同情况:
  56. <span class="text-blue"> {{row.accompany}}</span>
  57. </span>
  58. </el-col>
  59. <el-col :span="7">
  60. <span>
  61. 来文日期单位:
  62. <span class="text-blue"> {{row.recvDate}}-{{row.organUnit}}</span>
  63. </span>
  64. </el-col>
  65. <el-col :span="7">
  66. <span>
  67. 拟办意见:
  68. <span class="text-blue"> {{row.proposed||'--'}}</span>
  69. </span>
  70. </el-col>
  71. <el-col :span="5" class="tr">
  72. <el-button type="primary" size="small" @click="initEdit(row)">编辑</el-button>
  73. <el-popover placement="top" width="160" v-model="row._pass" >
  74. <p>删除之后服务器不保存信息?本操作不可逆,您是否继续操作</p>
  75. <div style="text-align: center; margin: 0 auto">
  76. <el-button size="mini" type="text" @click="row._pass = false">取消</el-button>
  77. <el-button type="primary" size="mini" @click="delVisitInfo(row)">确定</el-button>
  78. </div>
  79. <el-button type="danger" style="margin-left: 10px;" size="small" slot="reference">删除
  80. </el-button>
  81. </el-popover>
  82. </el-col>
  83. </div>
  84. </el-card>
  85. <!-- <el-table :data="tableData" border stripe>
  86. <el-table-column prop="username" label="姓名" width="100" align="center">
  87. <template slot-scope="{row}">
  88. <el-input v-if="row.edit" class="edit-input" size="small" v-model="row.username" />
  89. <span v-else>{{row.username}}</span>
  90. </template>
  91. </el-table-column>
  92. <el-table-column prop="post" label="职务" width="130">
  93. <template slot-scope="{row}">
  94. <el-input v-if="row.edit" class="edit-input" type="textarea" v-model="row.post" />
  95. <span v-else>{{row.post}}</span>
  96. </template>
  97. </el-table-column>
  98. <el-table-column prop="tripSummary" label="行程概要" width="160">
  99. <template slot-scope="{row}">
  100. <el-input v-if="row.edit" class="edit-input" type="textarea" v-model="row.tripSummary" />
  101. <span v-else>{{row.tripSummary}}</span>
  102. </template>
  103. </el-table-column>
  104. <el-table-column prop="accompany" label="陪同情况" width="160">
  105. <template slot-scope="{row}">
  106. <el-input v-if="row.edit" class="edit-input" size="small" v-model="row.accompany" />
  107. <span v-else>{{row.accompany}}</span>
  108. </template>
  109. </el-table-column>
  110. <el-table-column prop="organUnit" label="机关单位" width="100">
  111. <template slot-scope="{row}">
  112. <el-input v-if="row.edit" class="edit-input" size="small" v-model="row.organUnit" />
  113. <span v-else>{{row.organUnit}}</span>
  114. </template>
  115. </el-table-column>
  116. <el-table-column prop="recvDate" label="来文日期" width="130">
  117. <template slot-scope="{row}">
  118. <el-date-picker v-if="row.edit" value-format="yyyy-MM-dd" type="date"
  119. v-model="row.recvDate" />
  120. <span v-else>{{row.recvDate}}</span>
  121. </template>
  122. </el-table-column>
  123. <el-table-column prop="fromDate" label="莅临时间" width="130" align="center">
  124. <template slot-scope="{row}">
  125. <el-date-picker v-if="row.edit" value-format="yyyy-MM-dd" type="date"
  126. v-model="row.fromDate" />
  127. <span v-else>{{row.fromDate}}</span>
  128. </template>
  129. </el-table-column>
  130. <el-table-column prop="education" label="返程时间" width="130">
  131. <template slot-scope="{row}">
  132. <el-date-picker v-if="row.edit" value-format="yyyy-MM-dd" type="date"
  133. v-model="row.toDate" />
  134. <span v-else>{{row.toDate}}</span>
  135. </template>
  136. </el-table-column>
  137. <el-table-column prop="marks" label="拟办意见" min-width="80">
  138. <template slot-scope="{row}">
  139. <el-input v-if="row.edit" class="edit-input" size="small" v-model="row.proposed" />
  140. <span v-else style="color: red;">{{row.proposed}}</span>
  141. </template>
  142. </el-table-column>
  143. <el-table-column align="center" width="160" label="操作" class-name="small-padding fixed-width">
  144. <template slot-scope="{row, $index}">
  145. <el-button v-if="row.edit" type="success" size="small" @click="confirmEdit(row, $index)">提交
  146. </el-button>
  147. <el-button v-if="row.edit" class="cancel-btn" size="small" type="warning"
  148. @click="cancelEdit(row, $index)">取消</el-button>
  149. <el-button v-if="!row.edit" type="primary" size="small" @click="initEdit(row, $index)">编辑
  150. </el-button>
  151. <el-popover placement="top" width="160" v-model="row._pass" v-if="!row.edit">
  152. <p>删除之后服务器不保存信息?本操作不可逆,您是否继续操作</p>
  153. <div style="text-align: center; margin: 0 auto">
  154. <el-button size="mini" type="text" @click="row._pass = false">取消</el-button>
  155. <el-button type="primary" size="mini" @click="delVisitInfo(row)">确定</el-button>
  156. </div>
  157. <el-button type="danger" style="margin-left: 10px;" size="small" slot="reference">删除
  158. </el-button>
  159. </el-popover>
  160. </template>
  161. </el-table-column>
  162. </el-table>
  163. -->
  164. <el-pagination :current-page="page" :page-size="size" :page-sizes="[10, 30, 50, 100, 1000]"
  165. :style="{ float: 'right', padding: '20px' }" :total="total" @current-change="(page)=>{this.page= page}"
  166. @size-change="(size)=>{this.size= size}" layout="total, sizes, prev, pager, next, jumper"></el-pagination>
  167. <el-dialog :visible.sync="addvisitDialog" top="20px" title="编辑莅临" center width="500px">
  168. <el-form :rules="rules" ref="addvisit" :model="form" label-width="80px" >
  169. <el-form-item label="姓名" prop="username">
  170. <el-input v-model="form.username" ></el-input>
  171. </el-form-item>
  172. <el-form-item label="职务" prop="post">
  173. <el-input v-model="form.post" ></el-input>
  174. </el-form-item>
  175. <el-form-item label="行程概要" prop="tripSummary">
  176. <el-input v-model="form.tripSummary" type="textarea"></el-input>
  177. </el-form-item>
  178. <el-form-item label="陪同情况" prop="accompany">
  179. <el-input v-model="form.accompany"></el-input>
  180. </el-form-item>
  181. <el-form-item label="机关单位" prop="organUnit">
  182. <el-input v-model="form.organUnit"></el-input>
  183. </el-form-item>
  184. <el-form-item label="来文日期" prop="recvDate">
  185. <el-date-picker value-format="yyyy-MM-dd" type="date" v-model="form.recvDate" />
  186. </el-form-item>
  187. <el-form-item label="莅临时间" prop="fromDate">
  188. <el-date-picker value-format="yyyy-MM-dd" type="date" v-model="form.fromDate" />
  189. </el-form-item>
  190. <el-form-item label="返程时间" prop="toDate">
  191. <el-date-picker value-format="yyyy-MM-dd" type="date" v-model="form.toDate" />
  192. </el-form-item>
  193. <el-form-item label="拟办意见" prop="proposed">
  194. <el-input v-model="form.proposed"></el-input>
  195. </el-form-item>
  196. </el-form>
  197. <div class="dialog-footer tc" slot="footer">
  198. <el-button @click="addvisitDialog=false">取 消</el-button>
  199. <el-button @click="confirmEdit(form)" type="primary">确 定</el-button>
  200. </div>
  201. </el-dialog>
  202. </div>
  203. </template>
  204. <script>
  205. import infoList from "@/mixins/infoList";
  206. import {
  207. getVisitList,
  208. editVisitInfo,
  209. delVisitInfo
  210. } from "@/api/data.js";
  211. export default {
  212. name: "Api",
  213. data() {
  214. return {
  215. listApi: getVisitList,
  216. page: 1,
  217. size: 10,
  218. total: 0,
  219. addvisitDialog: false,
  220. form:{
  221. accompany: "",
  222. id: 0,
  223. fromDate: "",
  224. organUnit: "",
  225. post: "",
  226. proposed: "",
  227. recvDate: "",
  228. toDate: "",
  229. tripSummary: "",
  230. username: ""
  231. },
  232. searchInfo: {
  233. username: '',
  234. post: '',
  235. fromDate: '',
  236. toDate: ''
  237. },
  238. rules: {
  239. username: [
  240. { required: true, message: "请输入姓名", trigger: "blur" }
  241. ],
  242. post: [
  243. { required: true, message: "请输入职务", trigger: "blur" }
  244. ],
  245. accompany: [
  246. { required: true, message: "请输入陪同情况", trigger: "blur" }
  247. ],
  248. recvDate: [
  249. { required: true, message: "请输入来文日期", trigger: "blur" }
  250. ],
  251. toDate: [
  252. { required: true, message: "请输入返程时间", trigger: "blur" }
  253. ],
  254. fromDate: [
  255. { required: true, message: "请输入莅临时间", trigger: "blur" }
  256. ],
  257. tripSummary: [
  258. { required: true, message: "请输入行程概要", trigger: "blur" }
  259. ],
  260. organUnit: [
  261. { required: true, message: "请输入来文单位", trigger: "blur" }
  262. ],
  263. proposed: [
  264. { required: true, message: "请输入拟办意见", trigger: "blur" }
  265. ]
  266. }
  267. };
  268. },
  269. mixins: [infoList],
  270. watch: {
  271. searchInfo: {
  272. handler(new_value, old_value) {
  273. let {
  274. fromDate,
  275. toDate
  276. } = this.searchInfo;
  277. if (fromDate && toDate && fromDate > toDate) {
  278. return;
  279. }
  280. this.page = 1;
  281. this.getTableData();
  282. },
  283. deep: true,
  284. }
  285. },
  286. methods: {
  287. initEdit(row, index) {
  288. this.form = Object.assign( this.form, row );
  289. this.form.temp = row;
  290. this.addvisitDialog = true;
  291. },
  292. newVisit(){
  293. this.form = {};
  294. this.addvisitDialog = true;
  295. },
  296. confirmEdit(row) {
  297. let param = Object.assign({}, this.form);
  298. this.$refs["addvisit"].validate((valid) => {
  299. if (!valid) return;
  300. editVisitInfo(param).then(res => {
  301. if (res.code == 200) {
  302. this.getTableData();
  303. this.addvisitDialog = false;
  304. this.$message.successMsg("编辑成功", 1);
  305. }
  306. });
  307. })
  308. },
  309. delVisitInfo(row) {
  310. let param = {id: row.id};
  311. let that = this;
  312. delVisitInfo(param).then((res) => {
  313. if (res.code == 200) {
  314. this.getTableData();
  315. that.$message.successMsg("删除成功", 2)
  316. }
  317. })
  318. }
  319. },
  320. created() {
  321. this.logId = +this.$route.query.logId || 0;
  322. this.getTableData(this.logId);
  323. },
  324. };
  325. </script>
  326. <style scoped lang="scss">
  327. .el-tag--mini {
  328. margin-left: 5px;
  329. }
  330. .warning {
  331. color: #dc143c;
  332. }
  333. .spanStyle{
  334. white-space: nowrap; /*强制span不换行*/
  335. display: inline-block; /*将span当做块级元素对待*/
  336. overflow: hidden; /*超出宽度部分隐藏*/
  337. text-overflow: ellipsis; /*超出部分以点号代替*/
  338. line-height: 0.9; /*数字与之前的文字对齐*/
  339. }
  340. </style>