storeDetails.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <template>
  2. <div style="background-color: #f0f2f5; padding-bottom: 20px; min-height: 100%; " >
  3. <div style="padding: 20px; background-color: #fff;">
  4. 店铺详情
  5. </div>
  6. <div class="content" v-if="item!=null">
  7. <div class="desct">
  8. 店铺信息
  9. </div>
  10. <el-descriptions title="" :column="3" border>
  11. <el-descriptions-item label="店铺名称" >
  12. <span v-if="item!=null">{{item.storeName}}</span>
  13. </el-descriptions-item>
  14. <el-descriptions-item label="店铺编号" >
  15. <span v-if="item!=null">{{item.storeNo}}</span>
  16. </el-descriptions-item>
  17. <el-descriptions-item label="店铺介绍" >
  18. <span v-if="item!=null">{{item.descs}}</span>
  19. </el-descriptions-item>
  20. <el-descriptions-item label="店铺LOGO" >
  21. <el-image
  22. style="width: 100px"
  23. :src="item.logoUrl"
  24. :preview-src-list="[item.logoUrl]">
  25. </el-image>
  26. </el-descriptions-item>
  27. <el-descriptions-item label="地址" >
  28. <span v-if="item!=null">{{item.address}}</span>
  29. </el-descriptions-item>
  30. <el-descriptions-item label="店铺电话" >
  31. <span v-if="item!=null">{{item.phone}}</span>
  32. </el-descriptions-item>
  33. <!-- <el-descriptions-item label="资质证书">
  34. <el-image
  35. style="width: 100px"
  36. :src="item.licenseImages"
  37. :preview-src-list="[item.licenseImages]">
  38. </el-image>
  39. </el-descriptions-item>-->
  40. <!-- <el-descriptions-item label="商品总数" >
  41. <span v-if="item!=null">{{item.productCount}}</span>
  42. </el-descriptions-item>-->
  43. <el-descriptions-item label="状态" >
  44. <dict-tag :options="statusOptions" :value="item.status"/>
  45. </el-descriptions-item>
  46. <!-- <el-descriptions-item label="销量" >
  47. <span v-if="item!=null">{{item.salesCount}}</span>
  48. </el-descriptions-item>
  49. <el-descriptions-item label="余额" >
  50. <span v-if="item!=null">{{item.balance}}</span>
  51. </el-descriptions-item>
  52. <el-descriptions-item label="累计金额" >
  53. <span v-if="item!=null">{{item.totalMoney}}</span>
  54. </el-descriptions-item>-->
  55. <el-descriptions-item label="审核状态" >
  56. <dict-tag :options="isAuditOptions" :value="item.isAudit"/>
  57. </el-descriptions-item>
  58. <!-- <el-descriptions-item label="登录帐号" >
  59. <span v-if="item!=null">{{item.account}}</span>
  60. </el-descriptions-item>-->
  61. <el-descriptions-item label="创建时间" >
  62. <span v-if="item!=null">{{item.createTime}}</span>
  63. </el-descriptions-item>
  64. <el-descriptions-item label="更新时间" >
  65. <span v-if="item!=null">{{item.updateTime}}</span>
  66. </el-descriptions-item>
  67. <!-- // 重置证书相关字段
  68. businessLicense: null, // 营业执照文件
  69. businessLicenseExpireStart: null, // 营业执照失效日期
  70. businessLicenseExpireEnd: null, // 营业执照失效日期
  71. drugLicense: null, // 药品经营许可证有效期
  72. drugLicenseExpiryStart: null, // 药品经营许可证文件
  73. drugLicenseExpiryEnd: null, // 药品经营许可证文件
  74. // 医疗器械相关证书
  75. medicalDevice1: null, // 一类医疗器械备案证书
  76. medicalDevice1ExpiryStart: null, // 二类医疗器械备案有效期
  77. medicalDevice1ExpiryEnd: null, // 二类医疗器械备案有效期
  78. medicalDevice2: null, // 二类器械生产备案文件
  79. medicalDevice2ExpiryStart: null, // 一类生产备案有效期
  80. medicalDevice2ExpiryEnd: null, // 一类生产备案有效期
  81. medicalDevice3: null, // 三类器械经营许可证文件
  82. medicalDevice3ExpiryStart: null, // 三类器械经营许可证有效期
  83. medicalDevice3ExpiryEnd: null, // 三类器械经营许可证有效期
  84. // 其他许可证相关字段
  85. foodLicense: null, // 食品经营许可证文件
  86. foodLicenseExpiryStart: null, // 食品经营许可证有效期
  87. foodLicenseExpiryEnd: null, // 食品经营许可证有效期
  88. medicalLicense: null, // 医疗机构执业许可证文件
  89. medicalLicenseExpiryStart: null // 医疗机构执业许可证有效期
  90. medicalLicenseExpiryEnd: null // 医疗机构执业许可证有效期
  91. -->
  92. <el-descriptions-item label="营业执照" >
  93. <el-image
  94. style="width: 100px"
  95. :src="item.businessLicense"
  96. :preview-src-list="[item.businessLicense]">
  97. </el-image>
  98. </el-descriptions-item>
  99. <el-descriptions-item label="营业执照有效期" >
  100. <span v-if="item!=null">{{item.businessLicenseExpireStart}} - {{item.businessLicenseExpireEnd}}</span>
  101. </el-descriptions-item>
  102. <!--
  103. <el-descriptions-item label="药品经营许可证" >
  104. <el-image
  105. style="width: 100px"
  106. :src="item.drugLicense"
  107. :preview-src-list="[item.drugLicense]">
  108. </el-image>
  109. </el-descriptions-item>
  110. <el-descriptions-item label="药品经营许可证有效期" >
  111. <span v-if="item!=null">{{item.drugLicenseExpiryStart}} - {{item.drugLicenseExpiryEnd}}</span>
  112. </el-descriptions-item>
  113. <el-descriptions-item label="1类器械生产" >
  114. <el-image
  115. style="width: 100px"
  116. :src="item.medicalDevice1"
  117. :preview-src-list="[item.medicalDevice1]">
  118. </el-image>
  119. </el-descriptions-item>
  120. <el-descriptions-item label="1类器械生产有效期" >
  121. <span v-if="item!=null">{{item.medicalDevice1ExpiryStart}} - {{item.medicalDevice1ExpiryEnd}}</span>
  122. </el-descriptions-item>
  123. <el-descriptions-item label="2类器械备案" >
  124. <el-image
  125. style="width: 100px"
  126. :src="item.medicalDevice2"
  127. :preview-src-list="[item.medicalDevice2]">
  128. </el-image>
  129. </el-descriptions-item>
  130. <el-descriptions-item label="2类器械备案有效期" >
  131. <span v-if="item!=null">{{item.medicalDevice2ExpiryStart}} - {{item.medicalDevice2ExpiryEnd}}</span>
  132. </el-descriptions-item>
  133. <el-descriptions-item label="3类器械营业许可证" >
  134. <el-image
  135. style="width: 100px"
  136. :src="item.medicalDevice3"
  137. :preview-src-list="[item.medicalDevice3]">
  138. </el-image>
  139. </el-descriptions-item>
  140. <el-descriptions-item label="3类器械营业许可证有效期" >
  141. <span v-if="item!=null">{{item.medicalDevice3ExpiryStart}} - {{item.medicalDevice3ExpiryEnd}}</span>
  142. </el-descriptions-item>
  143. <el-descriptions-item label="食品许可证" >
  144. <el-image
  145. style="width: 100px"
  146. :src="item.foodLicense"
  147. :preview-src-list="[item.foodLicense]">
  148. </el-image>
  149. </el-descriptions-item>
  150. <el-descriptions-item label="食品许可证有效期" >
  151. <span v-if="item!=null">{{item.foodLicenseExpiryStart}} - {{item.foodLicenseExpiryEnd}}</span>
  152. </el-descriptions-item>
  153. <el-descriptions-item label="药品许可证" >
  154. <el-image
  155. style="width: 100px"
  156. :src="item.medicalLicense"
  157. :preview-src-list="[item.medicalLicense]">
  158. </el-image>
  159. </el-descriptions-item>
  160. <el-descriptions-item label="药品许可证有效期" >
  161. <span v-if="item!=null">{{item.medicalLicenseExpiryStart}} - {{item.medicalLicenseExpiryEnd}}</span>
  162. </el-descriptions-item>
  163. -->
  164. </el-descriptions>
  165. <div v-if="item.isAudit===0 && this.showAudit" class="dialog">
  166. <el-divider content-position="left">审核</el-divider>
  167. <el-form ref="form1" :model="form1" :rules="rules1" label-width="80px">
  168. <el-form-item label="审核理由" prop="reason">
  169. <el-input v-model="form1.reason" type="textarea" placeholder="请输入审核理由" />
  170. </el-form-item>
  171. <el-form-item label="图片说明" prop="attachment">
  172. <ImageUpload v-model="form1.attachImage" type="image" :limit=5 :width="150"
  173. :height="150"/>
  174. </el-form-item>
  175. </el-form>
  176. <div slot="footer" class="dialog-footer">
  177. <el-button type="primary" @click="handleUpdate(1)">审核通过</el-button>
  178. <el-button type="primary" @click="handleUpdate(-1)">审核退回</el-button>
  179. </div>
  180. </div>
  181. <div v-if="item.isAudit!==0" class="dialog">
  182. <el-divider content-position="left">审核记录</el-divider>
  183. <el-table :data="item.auditLogs" border >
  184. <el-table-column label="描述" align="center" prop="des" :show-overflow-tooltip="true" />
  185. <el-table-column label="操作人员" align="center" prop="operName" width="100" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
  186. <el-table-column label="操作日期" align="center" prop="operTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
  187. <template slot-scope="scope">
  188. <span>{{ parseTime(scope.row.operTime) }}</span>
  189. </template>
  190. </el-table-column>
  191. <el-table-column label="审核理由" align="center" prop="reason" ></el-table-column>
  192. <el-table-column label="图片" align="center" prop="attachImage" width="100" >
  193. <template slot-scope="scope">
  194. <el-image
  195. style="width: 100px"
  196. :src="scope.row.attachImage"
  197. :preview-src-list="[scope.row.attachImage]"
  198. v-if="scope.row.attachImage">
  199. </el-image>
  200. <span v-else >无图片</span >
  201. </template>
  202. </el-table-column>
  203. </el-table>
  204. </div>
  205. </div>
  206. </div>
  207. </template>
  208. <script>
  209. import { audit, getStore, getStoreAuditLog } from '@/api/hisStore/store'
  210. export default {
  211. name: "user",
  212. props:["data"],
  213. data() {
  214. return {
  215. showAudit: true,
  216. statusOptions: [],
  217. // 审核状态字典
  218. isAuditOptions: [],
  219. item:null,
  220. logoUrl:[],
  221. form: {
  222. sreason: '',
  223. },
  224. form1: {},
  225. rules1: {
  226. auditReason: [
  227. { required: true, message: "审核理由不能为空", trigger: "blur" }
  228. ]
  229. },
  230. }
  231. },
  232. created() {
  233. this.getDicts("sys_company_status").then(response => {
  234. this.statusOptions = response.data;
  235. });
  236. this.getDicts("sys_company_isaudit").then(response => {
  237. this.isAuditOptions = response.data;
  238. });
  239. },
  240. destroyed() {
  241. this.item = null;
  242. this.form1 = {};
  243. },
  244. methods: {
  245. getDetails(orderId,showAudit) {
  246. if(showAudit === 0) {
  247. this.showAudit = false
  248. }
  249. this.item = null
  250. Promise.all([getStore(orderId), getStoreAuditLog(orderId)])
  251. .then(([storeResponse, auditResponse]) => {
  252. this.item = storeResponse.data;
  253. // 确保 item 不为 null 后再设置 auditLogs
  254. this.$set(this.item, 'auditLogs', auditResponse.auditLog);
  255. });
  256. },
  257. handleUpdate(oper) {
  258. let operStr = oper === 1 ? "审核通过" : "审核退回";
  259. this.$confirm("是否确认"+operStr+"店铺?", "警告", {
  260. confirmButtonText: "确定",
  261. cancelButtonText: "取消",
  262. type: "warning"
  263. }).then(()=> {
  264. let param = {}
  265. param.storeId = this.item.storeId;
  266. param.reason = this.form1.reason;
  267. param.attachImage = this.form1.attachImage;
  268. param.isAudit=oper;
  269. return audit(param);
  270. }).then(res => {
  271. if(res.code === 200){
  272. this.$message.success("审核成功");
  273. this.getDetails(this.item.storeId);
  274. this.$emit('fresh');
  275. }else{
  276. this.$message.error("审核失败",res.msg);
  277. }
  278. }).catch(function() {
  279. }).finally(()=>{
  280. this.form1.auditReason = null;
  281. this.form1.attachment = null;
  282. });
  283. },
  284. }
  285. }
  286. </script>
  287. <style>
  288. .content{
  289. height: 100%;
  290. background-color: #fff;
  291. padding: 0px 20px;
  292. padding-bottom: 20px;
  293. margin: 20px;
  294. }
  295. .el-descriptions-item__label.is-bordered-label{
  296. font-weight: normal;
  297. }
  298. .el-descriptions-item__content {
  299. max-width: 150px;
  300. min-width: 100px;
  301. }
  302. .desct{
  303. padding-top: 20px;
  304. padding-bottom: 20px;
  305. color: #524b4a;
  306. font-weight: bold;
  307. }
  308. </style>